agentwire-dev 1.77.2__tar.gz → 1.77.3__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.
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/.github/workflows/pytest.yml +2 -2
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/.github/workflows/security.yml +3 -5
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/.github/workflows/tts-smoke.yml +2 -2
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/PKG-INFO +2 -2
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/RELEASING.md +9 -12
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/__init__.py +1 -1
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/core.py +91 -2
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/inbox.py +31 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/msg_cli.py +7 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/notify_cli.py +7 -1
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/pane_cli.py +3 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/roles/reviewer-worktree.md +2 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/roles/reviewer.md +2 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/roles/worker-worktree.md +2 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/roles/worker.md +2 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/safety/provenance.py +15 -20
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/session_cli.py +35 -1
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/system_cli.py +6 -7
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/internals/damage-control.md +28 -39
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/voice/tts-self-hosted.md +1 -1
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/pyproject.toml +6 -12
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_agentwire_rules_layer.py +2 -2
- agentwire_dev-1.77.3/tests/unit/test_damage_control_pin.py +50 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_hook_fail_closed_matrix.py +3 -2
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_hook_python_floor.py +8 -6
- agentwire_dev-1.77.3/tests/unit/test_live_target_1261.py +148 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_msg_cli.py +9 -1
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_notify_cli.py +1 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_rebuild_guard.py +18 -29
- agentwire_dev-1.77.3/tests/unit/test_report_back_path_1259.py +104 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_rules_json_in_sync.py +5 -5
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_safety_deployment.py +7 -6
- agentwire_dev-1.77.2/packages/damage-control-dev/README.md +0 -19
- agentwire_dev-1.77.2/packages/damage-control-dev/docs/coverage.md +0 -21
- agentwire_dev-1.77.2/packages/damage-control-dev/docs/extending.md +0 -75
- agentwire_dev-1.77.2/packages/damage-control-dev/docs/rule-authoring.md +0 -428
- agentwire_dev-1.77.2/packages/damage-control-dev/docs/threat-model.md +0 -372
- agentwire_dev-1.77.2/packages/damage-control-dev/pyproject.toml +0 -40
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/__init__.py +0 -9
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/__main__.py +0 -7
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/adapter.py +0 -179
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/audit.py +0 -432
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/breakglass.py +0 -155
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/claude_code.py +0 -148
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/cli.py +0 -173
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/engine.py +0 -10749
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/groups.py +0 -114
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/harness_config.py +0 -205
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/hook.py +0 -54
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/install.py +0 -618
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/packs.py +0 -219
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/policy.py +0 -323
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/profile.py +0 -177
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/aws.json +0 -85
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/aws.yaml +0 -76
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/cloud-hosting.json +0 -162
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/cloud-hosting.yaml +0 -163
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/containers.json +0 -67
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/containers.yaml +0 -69
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/control-plane.json +0 -7
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/control-plane.yaml +0 -21
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/core.json +0 -347
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/core.yaml +0 -461
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/databases.json +0 -117
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/databases.yaml +0 -123
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/firebase.json +0 -34
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/firebase.yaml +0 -30
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/gcp.json +0 -60
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/gcp.yaml +0 -57
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/git.json +0 -119
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/git.yaml +0 -120
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/infrastructure.json +0 -69
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/infrastructure.yaml +0 -66
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/mcp-tools.json +0 -11
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/mcp-tools.yaml +0 -47
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/outbound.json +0 -40
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/outbound.yaml +0 -58
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/payloads.json +0 -120
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/payloads.yaml +0 -155
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/publish.json +0 -46
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/publish.yaml +0 -46
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/registry.json +0 -10
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/registry.yaml +0 -11
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/remote.json +0 -31
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/remote.yaml +0 -53
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/tmux.json +0 -17
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/rules/tmux.yaml +0 -16
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/ruleset.py +0 -94
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/tooldefs/aws.json +0 -140
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/tooldefs/aws.yaml +0 -119
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/tooldefs/docker.json +0 -146
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/tooldefs/docker.yaml +0 -123
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/tooldefs/gcp.json +0 -186
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/tooldefs/gcp.yaml +0 -158
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/tooldefs/gh.json +0 -172
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/tooldefs/gh.yaml +0 -145
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/tooldefs/git.json +0 -166
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/tooldefs/git.yaml +0 -143
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/tooldefs/kubectl.json +0 -101
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/tooldefs/kubectl.yaml +0 -85
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/tooldefs/npm.json +0 -77
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/tooldefs/npm.yaml +0 -65
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/tooldefs/terraform.json +0 -68
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/tooldefs/terraform.yaml +0 -57
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/tooldefs/uv.json +0 -112
- agentwire_dev-1.77.2/packages/damage-control-dev/src/damage_control/tooldefs/uv.yaml +0 -97
- agentwire_dev-1.77.2/packages/damage-control-dev/tools/build_rules_json.py +0 -72
- agentwire_dev-1.77.2/packages/damage-control-dev/tools/coverage_matrix.py +0 -74
- agentwire_dev-1.77.2/tests/unit/test_coverage_matrix.py +0 -25
- agentwire_dev-1.77.2/tests/unit/test_damage_control_pin.py +0 -33
- agentwire_dev-1.77.2/tests/unit/test_engine_standalone.py +0 -140
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/.agentwire.yml.example +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/.claude/commands/handoff.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/.claude/skills/wiki/SKILL.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/.github/FUNDING.yml +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/.github/ISSUE_TEMPLATE/question.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/.github/workflows/ruff.yml +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/.gitignore +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/AGENTS.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/CODE_OF_CONDUCT.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/CONTRIBUTING.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/Dockerfile.local +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/LICENSE +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/README.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/SECURITY.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/SPONSORS.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/__main__.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/agents/__init__.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/agents/base.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/agents/tmux.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/auth_expired.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/background_tasks.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/beta.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/cached_status.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/channels/__init__.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/channels/base.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/channels/email.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/channels/push.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/channels/quo.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/channels_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/chrome_tabs.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/claude_settings.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/cohort.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/completion.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/config.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/config_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/council/__init__.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/council/cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/council/inbox.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/council/minutes.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/council/state.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/council/view.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/devices.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/diff_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/doctor_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/doctor_voice.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/ensure_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/env_loader.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/fetch.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/handoff/__init__.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/handoff/git_state.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/handoff/instructions.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/handoff/parser.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/handoff/renderer.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/handoff/schema.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/handoff_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/history.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/history_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/history_migrate.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/hooks/__init__.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/hooks/agentwire-permission.sh +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/hooks/idle-handler.sh +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/hooks/outcome_logger.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/hooks/queue-processor.sh +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/hooks_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/limits_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/listen.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/locking.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/machine_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/mcp_channels.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/mcp_chrome.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/mcp_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/mcp_core.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/mcp_council.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/mcp_desktop.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/mcp_handoff.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/mcp_history.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/mcp_listen.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/mcp_lock.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/mcp_machine.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/mcp_msg.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/mcp_notify.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/mcp_pane.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/mcp_projects.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/mcp_scheduler.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/mcp_scratchpad.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/mcp_server.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/mcp_services.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/mcp_session.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/mcp_status.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/mcp_task.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/mcp_tunnels.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/mcp_voice.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/mcp_wiki.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/mcp_worktree.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/network.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/onboarding.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/palette_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/pane_manager.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/playback_lane.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/portal_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/project_config.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/projects.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/prompt_router.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/prompts_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/push_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/push_store.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/repo_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/research.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/restart_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/role_prompts.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/roles/__init__.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/roles/agentwire.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/roles/anchor.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/roles/chatbot.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/roles/contributor.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/roles/correspondent.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/roles/council-brain.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/roles/council-conscience.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/roles/council-critic.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/roles/council-devils-advocate.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/roles/council-gut.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/roles/council-historian.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/roles/council-member.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/roles/council-orchestrator.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/roles/init.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/roles/notifications.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/roles/orchestrator.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/roles/shared-checkout.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/roles/soul.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/roles/task-runner.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/roles/voice.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/roles_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/routes/__init__.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/routes/artifacts.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/routes/config.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/routes/council.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/routes/desktop.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/routes/history.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/routes/machines.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/routes/notify.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/routes/palette.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/routes/permission.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/routes/projects.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/routes/push.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/routes/safety.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/routes/scheduler.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/routes/scratchpad.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/routes/sessions.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/routes/sessions_admin.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/routes/voice.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/safety/__init__.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/safety/audit.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/safety/lint.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/safety/residuals.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/safety/rule_baselines.json +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/safety/rules/agentwire-control-plane.json +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/safety/rules/agentwire-control-plane.yaml +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/safety/rules/agentwire-core.json +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/safety/rules/agentwire-core.yaml +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/safety/rules/agentwire-mcp-tools.json +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/safety/rules/agentwire-mcp-tools.yaml +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/safety/rules/agentwire-outbound.json +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/safety/rules/agentwire-outbound.yaml +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/safety/rules/agentwire.json +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/safety/rules/agentwire.yaml +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/safety/suggest.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/safety_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/safety_commands.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/safety_ext.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/safety_migrate.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/safety_notify.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/safety_packs_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/scheduler/__init__.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/scheduler/dispatch.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/scheduler/gates.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/scheduler/loop.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/scheduler/models.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/scheduler/report.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/scheduler/schedule.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/scheduler/state.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/scheduler/zombie.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/scheduler_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/scratchpad.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/security.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/send_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/sent_ledger.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/server.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/services.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/session_context.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/session_ready.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/session_state.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/ssh.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/agentwire-splash-logo-layers--agentwire-text.png +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/agentwire-splash-logo-layers--echo-claw-fg.png +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/agentwire-splash-logo-layers--echo.png +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/agentwire-splash-logo-layers--telephone.png +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/agentwire-splash-logo-layers--tree.png +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/announcements.json +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/apple-touch-icon.png +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/css/desktop.css +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/css/mobile.css +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/favicon-32.png +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/favicon-64.png +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/icons/sessions/bear.webp +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/icons/sessions/cat.webp +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/icons/sessions/crown.webp +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/icons/sessions/custom/agentwire-portal.webp +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/icons/sessions/custom/agentwire-tts.webp +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/icons/sessions/custom/agentwire.webp +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/icons/sessions/deer.webp +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/icons/sessions/drone.webp +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/icons/sessions/eagle.webp +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/icons/sessions/fox.webp +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/icons/sessions/hawk.webp +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/icons/sessions/horse.webp +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/icons/sessions/lion.webp +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/icons/sessions/rabbit.webp +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/icons/sessions/robot.webp +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/icons/sessions/tiger.webp +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/icons/sessions/wolf.webp +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/img/icon-192.png +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/img/icon-512.png +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/.gitkeep +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/announcement-modal.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/api.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/artifact-window.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/card-terminal.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/collage.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/command-palette.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/council-window.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/dead-key-residue.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/desktop-manager.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/desktop.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/help-modal.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/hotkeys.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/icon-manager.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/lineage.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/mobile.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/notification-prefs.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/notifications-panel.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/ptt.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/push-client.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/review-window.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/safety-shared.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/safety-window.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/scratchpad.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/service-classification.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/session-hud-controller.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/session-hud-notices.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/session-hud-spawn.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/session-hud.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/session-id.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/session-window.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/shortcuts.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/sidebar/artifacts-section.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/sidebar/config-section.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/sidebar/council-section.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/sidebar/machines-section.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/sidebar/projects-section.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/sidebar/safety-section.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/sidebar/scheduler-section.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/sidebar/services-section.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/sidebar/sessions-section.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/sidebar.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/spawn-ghost.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/taskbar-persist.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/terminal-font-prefs.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/terminal-pane.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/tile-manager.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/toast.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/token-modal.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/topology-render.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/utils/ansi.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/utils/rich-text.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/utils/swipe.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/voice/audio-unlock.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/voice/autosend-prefs.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/voice/browser-stt.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/voice/browser-tts.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/voice/jargon.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/voice/prompt.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/winbox.bundle.min.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/js/workspace-window.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/manifest.webmanifest +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/service-worker.js +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/static/topology-harness.html +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/stt/__init__.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/stt/base.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/stt/cloud.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/stt/engine.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/stt/local.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/stt/server_backend.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/stt/stt_server.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/tabs_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/tasks.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/tasks_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/templates/__init__.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/templates/base.html +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/templates/council/minutes.html.j2 +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/templates/desktop.html +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/templates/email_notification.html +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/templates/handoff/show-the-story.html.j2 +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/templates/handoff/theme.css.j2 +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/templates/mobile.html +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/templates/pair.html +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/templates/statusline.sh +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/templates/tmux.conf +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/templating.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/tts/__init__.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/tts/audio.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/tts/base.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/tts/engines/__init__.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/tts/engines/chatterbox.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/tts/engines/kokoro.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/tts/engines/zonos.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/tts/kokoro_server.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/tts/local.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/tts/registry.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/tts_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/tts_server.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/tunnels.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/tunnels_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/usage_limit.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/utils/__init__.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/utils/chunker.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/utils/event_log.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/utils/file_io.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/utils/paths.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/utils/speech.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/utils/subprocess.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/validation.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/voice_status.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/wait_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/wiki.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/wiki_audit.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/wiki_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/worktree.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/worktree_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/agentwire/worktree_registry.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/corpus/cases/bypass.yaml +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/corpus/cases/control_plane.yaml +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/corpus/cases/path_spelling.yaml +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/corpus/cases/relative_paths.yaml +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/corpus/golden/effective_rules.json +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/corpus/golden/harvested.json +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/corpus/golden/rule_ids.json +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/corpus/golden/snapshot.json +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/corpus/schema.json +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/decisions/obsidian-second-brain.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/design/session-card-fields.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/design/session-card-recommendation.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/logo.png +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/INDEX.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/architecture.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/auth-expired.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/briefing-mode.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/communication/channels.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/communication/hammerspoon.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/communication/handoff.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/concepts.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/council.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/deployment/remote-access.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/deployment/remote-machines.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/glossary.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/integrations/gws-google-workspace-cli.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/internals/parallel-refactor.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/internals/portal.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/internals/session-topology.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/internals/shell-escaping.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/internals/troubleshooting.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/internals/window-collage.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/quickstart.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/research/briefing-mode-feasibility.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/research/orchestration-transport-alternatives.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/scheduling/scheduled-workloads.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/security/damage-control-hardening.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/security/pip-audit.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/security/remote-access-hardening.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/security/secrets.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/services.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/sessions/claude-code-auto-mode.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/sessions/conversation-identity.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/sessions/fan-out-cohorts.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/sessions/heal-line-count-cliff.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/sessions/helper-sessions.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/sessions/messaging.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/sessions/prompt-routing.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/sessions/window-sizing.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/sessions/worktree-sessions.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/usage-limit-recovery.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/voice/shim-contract.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/voice/stt-cloud.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/docs/wiki/voice/stt-self-hosted.md +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/conftest.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/corpus_runner.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/e2e/test_portal_ui.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/fixtures/audio_unlock_harness.mjs +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/fixtures/background_tasks/pane_30_shell.txt +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/fixtures/background_tasks/pane_80_agent.txt +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/fixtures/background_tasks/pane_80_done.txt +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/fixtures/background_tasks/pane_80_interrupted.txt +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/fixtures/background_tasks/pane_80_monitor.txt +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/fixtures/background_tasks/pane_80_quoted_footer.txt +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/fixtures/background_tasks/pane_80_second_notice.txt +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/fixtures/background_tasks/pane_80_shell.txt +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/fixtures/background_tasks/pane_80_shell_and_monitor.txt +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/fixtures/background_tasks/transcript_bash_done.jsonl +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/fixtures/background_tasks/transcript_bash_pending.jsonl +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/fixtures/background_tasks/transcript_monitor_done.jsonl +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/fixtures/background_tasks/transcript_monitor_events.jsonl +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/fixtures/dc_msg_body_quoting_carriers.txt +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/fixtures/hotkeys_harness.mjs +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/fixtures/sample_agentwire.yml +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/fixtures/sample_config.yaml +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/fixtures/sample_scheduler.yaml +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/fixtures/session_hud_detent_harness.mjs +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/fixtures/taskbar_persist_harness.mjs +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/fixtures/topology_expand_harness.mjs +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/home_guard.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/integration/test_council_portal.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/integration/test_scheduler_board.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/integration/test_send_verified_tmux.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/integration/test_server_websockets.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/integration/test_tmux_name_rewrite.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/integration/test_worktree_cmd.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_announcements.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_audio_unlock_js.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_audit_attribution.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_audit_outcomes.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_auth_expired.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_auth_expired_dispatch.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_background_tasks.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_background_tasks_review.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_beta_flag.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_block_rows_carry_an_id.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_brace_expansion_zero_access.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_breakglass.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_buddy_removal_keeps.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_build_agent_command.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_channels.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_chrome_tabs.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_claude_settings.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_cli_commands.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_cli_output.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_cli_smoke.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_cli_stderr_clean.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_cohort.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_config.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_config_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_control_plane_protection.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_corpus.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_council_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_council_inbox.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_council_minutes.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_council_state.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_council_view.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_damage_control_bypass.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_damage_control_delete_recursive.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_damage_control_hooks.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_dangling_worktrees.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_dc_install.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_dc_policy_packs.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_dc_profile_isolation.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_devices.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_diff_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_doctor_orphaned_history.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_doctor_scheduler_staleness.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_doctor_secrets_perms.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_doctor_task_migration.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_doctor_voice.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_ensure_shared_dir.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_ensure_verified_prompt.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_env_loader.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_event_log.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_extension_points.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_golden_snapshot.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_guarded_launch_command.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_handoff_git_state.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_handoff_instructions.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_handoff_parser.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_handoff_renderer.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_helper_session.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_heredoc_marker_liveness.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_history.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_history_migrate.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_history_migrate_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_history_resume_name.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_hook_fail_closed.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_hook_link_guard.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_hook_subprocess.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_hooks_install.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_hotkeys_js.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_idle_handler.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_idle_nag.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_inbox.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_init_command.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_install_parity.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_launch_line_reentry.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_launch_via_env.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_limits_tick_isolation.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_locking.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_mcp_nonblocking.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_mcp_server.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_mcp_tool_policy.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_mcp_tools_args.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_onboarding_reinit.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_owner_only_writes.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_palette_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_path_case_folding.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_path_spelling.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_payload_position.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_pending_message_visibility.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_playback_lane.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_policy_ladder.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_portal_api.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_portal_pair_url.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_posture_default.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_powershell_matcher.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_project_config.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_projects_registry.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_prompt_router.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_prompt_router_dedup.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_prompt_router_resume.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_prose_operands.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_push.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_rebuild_uv_lock.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_relative_path_operands.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_remote_session_record.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_repo_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_restart_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_rich_text_js.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_rm_recoverable.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_role_prompt_retention.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_role_prompt_sweep_wiring.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_roles.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_routes_snapshot.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_rule_files_load.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_rule_ids_pinned.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_safe_cwd.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_safety_ext.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_safety_groups.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_safety_install.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_safety_migrate.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_safety_notify.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_safety_packs.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_say_lane.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_scan_budget.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_scheduler.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_scheduler_liveness.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_scheduler_zombie.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_scratchpad.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_security.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_sed_script_is_data.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_sent_ledger.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_server_async.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_services.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_services_command.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_session_context.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_session_created_by_env.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_session_hud_detent_js.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_session_metadata_ssot.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_session_metadata_write.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_session_ready.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_session_state.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_shared_dir_guard.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_shim_selfheal.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_skill_install.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_speech_tags.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_ssh.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_stt_backend.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_stt_cloud.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_stt_engine.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_task_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_task_max_duration.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_taskbar_persist_js.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_tasks.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_tasks_cli.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_templating.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_terminal_resize.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_tmux_session_cwd.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_topology_expand_js.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_tts_engine_resolution.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_tts_local.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_tunnels_probe.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_unattended_allow.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_unattended_env_isolation.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_unattended_scoped_allow.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_usage_limit.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_voice_assistant_removed.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_voice_off_and_shim_bind.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_voice_status.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_watchdog_stages.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_wiki.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_wiki_audit.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_worktree.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_worktree_branch_cleanup.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_worktree_dot_project.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_worktree_git_truth.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_worktree_layout.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_worktree_registry.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tests/unit/test_zero_access_member_access.py +0 -0
- {agentwire_dev-1.77.2 → agentwire_dev-1.77.3}/tools/nonce_stt_probe.py +0 -0
|
@@ -93,8 +93,9 @@ jobs:
|
|
|
93
93
|
with:
|
|
94
94
|
python-version: "3.9"
|
|
95
95
|
|
|
96
|
+
# The published engine, at the range agentwire declares (never a checkout copy, #1209 M8).
|
|
96
97
|
- name: Install the damage_control package and test dependencies
|
|
97
|
-
run: python -m pip install pytest
|
|
98
|
+
run: python -m pip install pytest "$(grep -o 'damage-control-dev>=[^"]*' pyproject.toml)"
|
|
98
99
|
|
|
99
100
|
# --noconftest: tests/conftest.py imports agentwire's full dependency set.
|
|
100
101
|
- name: Run hook tests on the declared floor
|
|
@@ -106,4 +107,3 @@ jobs:
|
|
|
106
107
|
tests/unit/test_hook_python_floor.py
|
|
107
108
|
tests/unit/test_hook_fail_closed.py
|
|
108
109
|
tests/unit/test_hook_fail_closed_matrix.py
|
|
109
|
-
tests/unit/test_engine_standalone.py
|
|
@@ -32,10 +32,8 @@ jobs:
|
|
|
32
32
|
python-version: "3.12"
|
|
33
33
|
- name: Sync dependencies
|
|
34
34
|
run: uv sync --extra dev
|
|
35
|
-
- name:
|
|
36
|
-
run:
|
|
37
|
-
uv run --no-sync python packages/damage-control-dev/tools/build_rules_json.py --check
|
|
38
|
-
packages/damage-control-dev/src/damage_control/rules packages/damage-control-dev/src/damage_control/tooldefs agentwire/safety/rules
|
|
35
|
+
- name: AgentWire rules-layer JSON is in sync with its YAML
|
|
36
|
+
run: uv run --no-sync python scripts/build_rules_json.py --check
|
|
39
37
|
- name: Run bypass + hook fail-closed + control-plane corpus
|
|
40
38
|
run: >
|
|
41
39
|
uv run --no-sync pytest -q
|
|
@@ -57,7 +55,7 @@ jobs:
|
|
|
57
55
|
# asserts), and we fail only on high-severity high-confidence findings.
|
|
58
56
|
# Green on the clean tree today; red only on NEW genuinely-dangerous code.
|
|
59
57
|
- name: Run bandit
|
|
60
|
-
run: uvx bandit==1.9.4 -c pyproject.toml -r agentwire
|
|
58
|
+
run: uvx bandit==1.9.4 -c pyproject.toml -r agentwire --severity-level high --confidence-level high
|
|
61
59
|
|
|
62
60
|
pip-audit:
|
|
63
61
|
name: pip-audit (advisory)
|
|
@@ -40,7 +40,7 @@ jobs:
|
|
|
40
40
|
with:
|
|
41
41
|
python-version: "3.12"
|
|
42
42
|
- name: Install base package
|
|
43
|
-
run: pip install
|
|
43
|
+
run: pip install .
|
|
44
44
|
- name: Import kokoro engine without torch
|
|
45
45
|
# Windows is scoped to this import only — the portal/CLI use
|
|
46
46
|
# fcntl/pty and don't support Windows; the kokoro path must still
|
|
@@ -91,7 +91,7 @@ jobs:
|
|
|
91
91
|
path: ~/.cache/kokoro_onnx
|
|
92
92
|
key: kokoro-model-files-v1.0-fp16
|
|
93
93
|
- name: Install base package
|
|
94
|
-
run: pip install
|
|
94
|
+
run: pip install .
|
|
95
95
|
- name: Synthesize a sentence
|
|
96
96
|
run: |
|
|
97
97
|
python - <<'EOF'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: agentwire-dev
|
|
3
|
-
Version: 1.77.
|
|
3
|
+
Version: 1.77.3
|
|
4
4
|
Summary: Multi-session voice web interface for AI coding agents
|
|
5
5
|
Project-URL: Homepage, https://agentwire.dev
|
|
6
6
|
Project-URL: Repository, https://github.com/dotdevdotdev/agentwire-dev
|
|
@@ -228,7 +228,7 @@ Requires-Dist: aiohttp-jinja2>=1.6
|
|
|
228
228
|
Requires-Dist: aiohttp>=3.13.4
|
|
229
229
|
Requires-Dist: av>=12.0.0
|
|
230
230
|
Requires-Dist: certifi>=2026.10.23
|
|
231
|
-
Requires-Dist: damage-control-dev<0.2,>=0.1.
|
|
231
|
+
Requires-Dist: damage-control-dev<0.2,>=0.1.4
|
|
232
232
|
Requires-Dist: fastapi>=0.104.0
|
|
233
233
|
Requires-Dist: jinja2>=3.1.0
|
|
234
234
|
Requires-Dist: kokoro-onnx>=0.4.9; python_version < '3.14'
|
|
@@ -4,15 +4,19 @@ This project publishes the CLI and web app to PyPI as `agentwire-dev`. Packaging
|
|
|
4
4
|
|
|
5
5
|
Every release does **both** a PyPI publish and a GitHub release. The **GitHub release is the changelog** — there is no `CHANGELOG.md`; release notes are built from the commits since the last tag (step 5).
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## The engine is a separate project (single source)
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
The damage-control engine has exactly one source: the `damage-control-dev` repo (<https://github.com/dotdevdotdev/damage-control-dev>), published on PyPI. `agentwire-dev` only *consumes* it through the range in `pyproject.toml` (currently `damage-control-dev>=0.1.4,<0.2`); a checkout and a PyPI install both resolve it from PyPI. There is no copy of the engine in this repo and nothing to release from here. `tests/unit/test_damage_control_pin.py` checks that the declared floor/ceiling parse and that the installed engine satisfies them.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
To ship an engine change:
|
|
12
|
+
|
|
13
|
+
1. **Land it in the damage-control-dev repo**, tag and release it there (its own release flow). Do not tag or release from this repo.
|
|
14
|
+
2. **Raise the floor here** in a normal agentwire PR: bump the `>=` in `pyproject.toml` (and the `<` ceiling too if the engine crossed it, e.g. `>=0.2.0,<0.3`), run `uv lock`, and re-run `scripts/golden_snapshot.py check` and `scripts/effective_rules.py --check` — re-record the golden only if the behavior change is intended, in that same PR.
|
|
15
|
+
3. **Verify against the published wheel** before releasing agentwire: in a scratch venv, install the agentwire wheel (it pulls the engine from PyPI), then run the fast suite, `agentwire doctor` and a hook subprocess smoke under a temp `HOME`.
|
|
14
16
|
4. **Then** bump and publish `agentwire-dev` (steps below), then the GitHub release.
|
|
15
17
|
|
|
18
|
+
An `agentwire-dev` whose floor names an engine version PyPI doesn't have yet is uninstallable, so step 1 always completes (published) before step 2 merges.
|
|
19
|
+
|
|
16
20
|
## Steps
|
|
17
21
|
|
|
18
22
|
### 1. Bump version
|
|
@@ -35,13 +39,6 @@ uv build
|
|
|
35
39
|
|
|
36
40
|
Produces `dist/agentwire_dev-{VERSION}-py3-none-any.whl` and `dist/agentwire_dev-{VERSION}.tar.gz`.
|
|
37
41
|
|
|
38
|
-
When the engine's version is new (see [Release order](#release-order-two-packages)), build and publish `damage-control-dev` **before** agentwire. Its version lives in `packages/damage-control-dev/src/damage_control/__init__.py`:
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
uv build --package damage-control-dev # -> dist/damage_control_dev-{DC_VERSION}*
|
|
42
|
-
uv publish --token "$(grep '^PYPI_TOKEN=' ~/.agentwire/.env | cut -d= -f2-)" dist/damage_control_dev-{DC_VERSION}*
|
|
43
|
-
```
|
|
44
|
-
|
|
45
42
|
Optional sanity check — confirm `agentwire/templates/` and `agentwire/static/` are bundled:
|
|
46
43
|
|
|
47
44
|
```bash
|
|
@@ -943,12 +943,18 @@ def _same_project(path_a: Path, path_b: Path) -> bool:
|
|
|
943
943
|
return common_a == common_b
|
|
944
944
|
|
|
945
945
|
|
|
946
|
-
def resolve_default_created_by(
|
|
946
|
+
def resolve_default_created_by(
|
|
947
|
+
caller: str | None, target_path: Path, delegated: bool = False
|
|
948
|
+
) -> str | None:
|
|
947
949
|
"""The default ``created_by`` when none was explicitly given.
|
|
948
950
|
|
|
949
951
|
Inherit the caller only when the new session's project is the one the
|
|
950
952
|
caller is already running in — a cross-project spawn gets its own root
|
|
951
|
-
instead of flattening into the caller's subtree (#715).
|
|
953
|
+
instead of flattening into the caller's subtree (#715). EXCEPT delegated
|
|
954
|
+
work (``delegated=True``: the spawn carries a task prompt): that is a
|
|
955
|
+
child whose completion the caller is waiting on, so it parents to the
|
|
956
|
+
caller in any project — nobody should have to pass their own session
|
|
957
|
+
name to be told when their worker finishes (#1261). An explicit
|
|
952
958
|
--created-by always wins and never reaches this function.
|
|
953
959
|
|
|
954
960
|
Uses ``_live_session_cwd`` rather than ``_get_session_project_path`` —
|
|
@@ -975,9 +981,92 @@ def resolve_default_created_by(caller: str | None, target_path: Path) -> str | N
|
|
|
975
981
|
caller_path = _live_session_cwd(caller)
|
|
976
982
|
if caller_path is None:
|
|
977
983
|
return None
|
|
984
|
+
if delegated:
|
|
985
|
+
return caller
|
|
978
986
|
return caller if _same_project(caller_path, target_path) else None
|
|
979
987
|
|
|
980
988
|
|
|
989
|
+
def closest_sessions(name: str, candidates, limit: int = 3) -> list[str]:
|
|
990
|
+
"""Candidate session names nearest to ``name`` (typo or repo-vs-session mixup)."""
|
|
991
|
+
import difflib
|
|
992
|
+
|
|
993
|
+
pool = sorted(set(candidates))
|
|
994
|
+
close = difflib.get_close_matches(name, pool, n=limit, cutoff=0.5)
|
|
995
|
+
# A repo/project name vs its session name is a prefix/substring relation
|
|
996
|
+
# (`agentwire-dev` vs `agentwire`) that edit distance under-ranks.
|
|
997
|
+
related = [c for c in pool if c not in close and (c in name or name in c)]
|
|
998
|
+
return (close + related)[:limit]
|
|
999
|
+
|
|
1000
|
+
|
|
1001
|
+
def unknown_session_error(
|
|
1002
|
+
name: str, live: "set[str] | None", *, require_live: bool, what: str
|
|
1003
|
+
) -> str | None:
|
|
1004
|
+
"""Why ``name`` can't be a ``what`` target, or None when it's acceptable.
|
|
1005
|
+
|
|
1006
|
+
Fails at the moment a wrong name is NAMED instead of hours later as a
|
|
1007
|
+
dead-letter (#1261). ``''`` (explicitly standalone), ``name@machine``
|
|
1008
|
+
(remote — unverifiable from here) and an unreachable tmux (``live is
|
|
1009
|
+
None``: an outage is not a gone session) always pass.
|
|
1010
|
+
|
|
1011
|
+
``require_live`` (spawn parents): the session must be running now.
|
|
1012
|
+
Otherwise (message targets) a session is KNOWN if it is live OR has a
|
|
1013
|
+
record in ``~/.agentwire/sessions/`` — so a busy or restarting session is
|
|
1014
|
+
still deferred to, never refused.
|
|
1015
|
+
"""
|
|
1016
|
+
if not name or "@" in name or live is None:
|
|
1017
|
+
return None
|
|
1018
|
+
if name in live:
|
|
1019
|
+
return None
|
|
1020
|
+
if not require_live and session_metadata_path(name).exists():
|
|
1021
|
+
return None
|
|
1022
|
+
near = closest_sessions(name, live)
|
|
1023
|
+
hint = f" — did you mean: {', '.join(near)}?" if near else ""
|
|
1024
|
+
listing = f" Live sessions: {', '.join(sorted(live))}." if live and not near else ""
|
|
1025
|
+
return (
|
|
1026
|
+
f"{what} '{name}' is not a live session{hint}{listing} Your session "
|
|
1027
|
+
"name is NOT your repo name: `agentwire list` / `tmux display -p '#S'` "
|
|
1028
|
+
"tells you."
|
|
1029
|
+
)
|
|
1030
|
+
|
|
1031
|
+
|
|
1032
|
+
NO_REPORT_PATH_HINT = (
|
|
1033
|
+
"state explicitly, as the LAST line of your final message, that you have no "
|
|
1034
|
+
"parent session to report to, then stop. Do not guess a session name."
|
|
1035
|
+
)
|
|
1036
|
+
|
|
1037
|
+
|
|
1038
|
+
def unparented_delegation_warning(
|
|
1039
|
+
session_name: str,
|
|
1040
|
+
caller: str | None,
|
|
1041
|
+
created_by: str | None,
|
|
1042
|
+
first_message: str | None,
|
|
1043
|
+
) -> str | None:
|
|
1044
|
+
"""Warn when a delegated task was spawned with no parent to report to (#1259).
|
|
1045
|
+
|
|
1046
|
+
A cross-project spawn deliberately records no parent (#715), but a spawn
|
|
1047
|
+
that carries a task prompt is clearly delegated work: the child's
|
|
1048
|
+
``notify-parent`` has no target and its completion is invisible. The
|
|
1049
|
+
spawner is the only party that can fix that, and only at spawn time.
|
|
1050
|
+
``created_by == ''`` is an explicit rootless request (orchestrators,
|
|
1051
|
+
``--created-by ''``) and never warns; services are not spawners.
|
|
1052
|
+
"""
|
|
1053
|
+
if not first_message or created_by is not None or not caller:
|
|
1054
|
+
return None
|
|
1055
|
+
if caller == session_name:
|
|
1056
|
+
return None
|
|
1057
|
+
from .services import is_service_session
|
|
1058
|
+
|
|
1059
|
+
if is_service_session(caller):
|
|
1060
|
+
return None
|
|
1061
|
+
return (
|
|
1062
|
+
f"session '{session_name}' was given a task but has NO parent "
|
|
1063
|
+
f"('{caller}' is not a live agentwire session that delegation could "
|
|
1064
|
+
f"auto-parent to): it cannot notify-parent and its completion will "
|
|
1065
|
+
f"not reach you. Re-spawn from a live session, or pass "
|
|
1066
|
+
f"--created-by <live session>."
|
|
1067
|
+
)
|
|
1068
|
+
|
|
1069
|
+
|
|
981
1070
|
def tmux_session_has_agent(name: str) -> bool:
|
|
982
1071
|
"""Check if a tmux session has an agent running (not just a bare shell).
|
|
983
1072
|
|
|
@@ -65,6 +65,13 @@ PASSIVE_KINDS = ("ingest",)
|
|
|
65
65
|
# Broadcast token: deliver to every live agent session except the sender.
|
|
66
66
|
BROADCAST_TOKEN = "@all"
|
|
67
67
|
|
|
68
|
+
# Words a role prompt or a worker's own phrasing uses for "the session that
|
|
69
|
+
# spawned me". They are never session names; sent to one that isn't actually
|
|
70
|
+
# running, the message just dead-letters ~5 min later (#1259). Deliberately NOT
|
|
71
|
+
# the kind words (orchestrator/worker/reviewer): `agentwire orchestrator`
|
|
72
|
+
# names a session "orchestrator" by default, so those are real addresses.
|
|
73
|
+
ROLE_WORDS = frozenset({"parent", "creator"})
|
|
74
|
+
|
|
68
75
|
# After this many failed/deferred delivery attempts a message is dead-lettered
|
|
69
76
|
# rather than retried forever (40 * 60s watchdog tick ≈ 40 min of a session
|
|
70
77
|
# being permanently busy/typed-in).
|
|
@@ -709,9 +716,33 @@ def resolve_targets(to: str, sender: "str | None") -> list[str]:
|
|
|
709
716
|
s for s in _live_agent_sessions()
|
|
710
717
|
if s != sender and not is_service_session(s)
|
|
711
718
|
]
|
|
719
|
+
if to in ROLE_WORDS and to not in (live_sessions() or set()):
|
|
720
|
+
raise ValueError(
|
|
721
|
+
f"{to!r} is a role word, not a session name — no such session is "
|
|
722
|
+
"running, so the message would dead-letter. Address a real session; "
|
|
723
|
+
"if you have no parent to report to, state that explicitly as the "
|
|
724
|
+
"LAST line of your final message and stop. Do not guess a session name."
|
|
725
|
+
)
|
|
712
726
|
return [_validate_session(to)]
|
|
713
727
|
|
|
714
728
|
|
|
729
|
+
def unknown_target_error(to: str) -> "str | None":
|
|
730
|
+
"""Why ``to`` can't receive a message, or None when it's a KNOWN session.
|
|
731
|
+
|
|
732
|
+
Known = live in tmux OR recorded in ``~/.agentwire/sessions/`` — so a busy
|
|
733
|
+
or restarting session still defers instead of failing (#1261). A name that
|
|
734
|
+
is neither is a typo or a repo-vs-session mixup, and enqueueing it only
|
|
735
|
+
moves the failure to a dead-letter hours later. ``@all`` and role words
|
|
736
|
+
are judged by ``resolve_targets`` and pass here.
|
|
737
|
+
"""
|
|
738
|
+
if to == BROADCAST_TOKEN or to in ROLE_WORDS:
|
|
739
|
+
return None
|
|
740
|
+
from .core import unknown_session_error
|
|
741
|
+
|
|
742
|
+
return unknown_session_error(
|
|
743
|
+
to, live_sessions(), require_live=False, what="message target")
|
|
744
|
+
|
|
745
|
+
|
|
715
746
|
def enqueue(
|
|
716
747
|
to: str, text: str, kind: str = "note", sender: "str | None" = None, ref: str = ""
|
|
717
748
|
) -> list[Message]:
|
|
@@ -75,6 +75,13 @@ def cmd_msg_send(args) -> int:
|
|
|
75
75
|
print(f"Error: {msg}")
|
|
76
76
|
return 1
|
|
77
77
|
sender = claimed or detected or "unknown"
|
|
78
|
+
unknown = inbox.unknown_target_error(args.to)
|
|
79
|
+
if unknown:
|
|
80
|
+
if getattr(args, "json", False):
|
|
81
|
+
print(json.dumps({"success": False, "error": unknown}))
|
|
82
|
+
else:
|
|
83
|
+
print(f"Error: {unknown}")
|
|
84
|
+
return 1
|
|
78
85
|
try:
|
|
79
86
|
written = inbox.enqueue(args.to, text, kind=args.kind, sender=sender,
|
|
80
87
|
ref=getattr(args, "ref", ""))
|
|
@@ -14,6 +14,7 @@ import urllib.request
|
|
|
14
14
|
|
|
15
15
|
from . import pane_manager
|
|
16
16
|
from .core import (
|
|
17
|
+
NO_REPORT_PATH_HINT,
|
|
17
18
|
_get_portal_url,
|
|
18
19
|
_output_json,
|
|
19
20
|
_output_result,
|
|
@@ -108,7 +109,9 @@ def cmd_notify_parent(args) -> int:
|
|
|
108
109
|
else:
|
|
109
110
|
return _output_result(
|
|
110
111
|
False, json_mode,
|
|
111
|
-
"No target session
|
|
112
|
+
"No target session: this session has no recorded parent (set "
|
|
113
|
+
"'parent' in .agentwire.yml or use --to <real session name>). "
|
|
114
|
+
f"If you were delegated this task, {NO_REPORT_PATH_HINT}")
|
|
112
115
|
|
|
113
116
|
# --queued (#667): route through the polite msg inbox (kind=done) instead
|
|
114
117
|
# of a direct paste. The drain owns everything the direct path lacks — the
|
|
@@ -124,6 +127,9 @@ def cmd_notify_parent(args) -> int:
|
|
|
124
127
|
# typed discriminator the cohort ledger keys on — sentinel text is
|
|
125
128
|
# defeated by any child that happens to write the same words.
|
|
126
129
|
kind = "idle" if getattr(args, 'on_idle', False) else "done"
|
|
130
|
+
unknown = inbox.unknown_target_error(target_session)
|
|
131
|
+
if unknown:
|
|
132
|
+
return _output_result(False, json_mode, unknown)
|
|
127
133
|
try:
|
|
128
134
|
msgs = inbox.enqueue(
|
|
129
135
|
to=target_session, text=text, kind=kind,
|
|
@@ -557,6 +557,9 @@ def cmd_info(args) -> int:
|
|
|
557
557
|
"pane_count": pane_count,
|
|
558
558
|
"panes": panes,
|
|
559
559
|
"is_remote": False,
|
|
560
|
+
# Who this session reports to (its recorded creator), so a worker
|
|
561
|
+
# never has to guess a parent name; None for a standalone root.
|
|
562
|
+
"parent": load_session_metadata(session).get("created_by") or None,
|
|
560
563
|
}
|
|
561
564
|
|
|
562
565
|
if json_mode:
|
|
@@ -36,3 +36,5 @@ When your review reaches a conclusion, `notify_parent` with a structured verdict
|
|
|
36
36
|
- **blocked** — you can't finish the review (missing context, can't reproduce, PR is in a broken state) — say what's blocking you
|
|
37
37
|
|
|
38
38
|
Silence is not a verdict. If you're still working, say so before you go idle.
|
|
39
|
+
|
|
40
|
+
**No report path?** If `notify-parent` (or `notify_parent`) reports no target, you were spawned without a parent. State that explicitly as the LAST line of your final message and stop — do not guess a session name, and never `msg send --to parent` (there is no session by that name; it dead-letters and emails the owner).
|
|
@@ -27,3 +27,5 @@ When your review reaches a conclusion, `notify_parent` with a structured verdict
|
|
|
27
27
|
- **blocked** — you can't finish the review (missing context, can't reproduce, PR is in a broken state) — say what's blocking you
|
|
28
28
|
|
|
29
29
|
Silence is not a verdict. If you're still working, say so before you go idle.
|
|
30
|
+
|
|
31
|
+
**No report path?** If `notify-parent` (or `notify_parent`) reports no target, you were spawned without a parent. State that explicitly as the LAST line of your final message and stop — do not guess a session name, and never `msg send --to parent` (there is no session by that name; it dead-letters and emails the owner).
|
|
@@ -37,3 +37,5 @@ When the task is done:
|
|
|
37
37
|
`agentwire msg` queues the message and delivers it only when their input box is empty; `notify-parent` / `session_send` paste + Enter **immediately** and overwrite any uncommitted draft — reserve those for something that genuinely can't wait.
|
|
38
38
|
|
|
39
39
|
Don't merge the PR yourself — your creator or a reviewer handles merge and worktree cleanup.
|
|
40
|
+
|
|
41
|
+
**No report path?** If `notify-parent` (or `notify_parent`) reports no target, you were spawned without a parent. State that explicitly as the LAST line of your final message and stop — do not guess a session name, and never `msg send --to parent` (there is no session by that name; it dead-letters and emails the owner).
|
|
@@ -37,3 +37,5 @@ complete | incomplete | error
|
|
|
37
37
|
After writing the summary, stop. The system detects idle and auto-exits your pane.
|
|
38
38
|
|
|
39
39
|
**If you're a standalone session** (your own tmux session, no separate worktree — no pane to auto-reap): there is no automatic idle-kill. Send the same summary content as your final message to the parent/creator instead (`agentwire msg send --to <parent> --kind done "..."`), then stop and wait — whoever created you is responsible for noticing you're idle and cleaning up.
|
|
40
|
+
|
|
41
|
+
**No report path?** If `notify-parent` (or `notify_parent`) reports no target, you were spawned without a parent. State that explicitly as the LAST line of your final message and stop — do not guess a session name, and never `msg send --to parent` (there is no session by that name; it dead-letters and emails the owner).
|
|
@@ -182,28 +182,23 @@ def rebuild_refusal_lines(repo_root: Path) -> List[str]:
|
|
|
182
182
|
|
|
183
183
|
|
|
184
184
|
def rebuild_package_refusal_lines(repo_root: Path) -> List[str]:
|
|
185
|
-
"""Refusal when
|
|
185
|
+
"""Refusal when the ``agentwire`` package ``rebuild`` would install is not wholly inside a primary checkout.
|
|
186
186
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
worktree
|
|
187
|
+
The worktree check above covers the checkout; this covers the package itself — a missing
|
|
188
|
+
one would install nothing runnable, and one that resolves (e.g. through a symlink) into a
|
|
189
|
+
linked worktree would make that worktree canonical. The damage-control engine is no longer
|
|
190
|
+
built from the checkout (#1209 M8): it comes from PyPI, and its own provenance (a copy
|
|
191
|
+
running out of a worktree venv) is still judged by ``install_provenance`` over ``PACKAGES``.
|
|
192
192
|
"""
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
"
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
worktree = _enclosing_worktree(path.resolve())
|
|
203
|
-
if worktree is not None:
|
|
204
|
-
return [f"REFUSED: rebuild would install the {package} package from the linked worktree {worktree}.",
|
|
205
|
-
" The worktree would BECOME canonical for that package (#936, doubled by #1209).",
|
|
206
|
-
" Fix: rebuild from the primary checkout, or pass --allow-foreign-source."]
|
|
193
|
+
path = repo_root / "agentwire"
|
|
194
|
+
if not path.is_dir():
|
|
195
|
+
return ["REFUSED: rebuild would install without the agentwire package.",
|
|
196
|
+
f" expected : {path}"]
|
|
197
|
+
worktree = _enclosing_worktree(path.resolve())
|
|
198
|
+
if worktree is not None:
|
|
199
|
+
return [f"REFUSED: rebuild would install the agentwire package from the linked worktree {worktree}.",
|
|
200
|
+
" The worktree would BECOME canonical for that package (#936).",
|
|
201
|
+
" Fix: rebuild from the primary checkout, or pass --allow-foreign-source."]
|
|
207
202
|
return []
|
|
208
203
|
|
|
209
204
|
|
|
@@ -41,6 +41,7 @@ from .core import (
|
|
|
41
41
|
record_session_launch,
|
|
42
42
|
resolve_default_created_by,
|
|
43
43
|
tmux_session_exists,
|
|
44
|
+
unparented_delegation_warning,
|
|
44
45
|
)
|
|
45
46
|
from .project_config import (
|
|
46
47
|
DEFAULT_POSTURE,
|
|
@@ -133,6 +134,21 @@ def _shared_dir_conflicts(panes_output: str, session_name: str, target: str) ->
|
|
|
133
134
|
return conflicting
|
|
134
135
|
|
|
135
136
|
|
|
137
|
+
def created_by_error(created_by: "str | None") -> "str | None":
|
|
138
|
+
"""Why an explicit ``--created-by`` can't be this spawn's parent, or None.
|
|
139
|
+
|
|
140
|
+
Called BEFORE any worktree/session exists so a wrong name leaves nothing
|
|
141
|
+
behind (#1261). ``None`` (derive it) and ``''`` (standalone) always pass.
|
|
142
|
+
"""
|
|
143
|
+
if not created_by:
|
|
144
|
+
return None
|
|
145
|
+
from . import inbox
|
|
146
|
+
from .core import unknown_session_error
|
|
147
|
+
|
|
148
|
+
return unknown_session_error(
|
|
149
|
+
created_by, inbox.live_sessions(), require_live=True, what="--created-by")
|
|
150
|
+
|
|
151
|
+
|
|
136
152
|
def cmd_new(args) -> int:
|
|
137
153
|
"""Create a new agent session.
|
|
138
154
|
|
|
@@ -157,6 +173,13 @@ def cmd_new(args) -> int:
|
|
|
157
173
|
# KIND can be derived from whether a worktree is being created.
|
|
158
174
|
project, branch, machine_id = parse_session_name(name)
|
|
159
175
|
|
|
176
|
+
# A wrong --created-by fails here, before any worktree/session exists
|
|
177
|
+
# (#1261). Remote spawns are exempt: the parent can't be verified from here.
|
|
178
|
+
if not machine_id:
|
|
179
|
+
parent_err = created_by_error(getattr(args, 'created_by', None))
|
|
180
|
+
if parent_err:
|
|
181
|
+
return _output_result(False, json_mode, parent_err)
|
|
182
|
+
|
|
160
183
|
# --- Role resolution (two distinct phases) -----------------------------
|
|
161
184
|
# Phase 1 — resolve. The session's ROLE is derived from the spawn verb:
|
|
162
185
|
# cmd_worktree passes an explicit kind (default "worker"); for `new` we
|
|
@@ -529,7 +552,12 @@ def cmd_new(args) -> int:
|
|
|
529
552
|
if created_by is None and getattr(args, 'kind', None) == 'orchestrator':
|
|
530
553
|
created_by = ''
|
|
531
554
|
elif created_by is None:
|
|
532
|
-
created_by = resolve_default_created_by(
|
|
555
|
+
created_by = resolve_default_created_by(
|
|
556
|
+
caller, session_path, delegated=bool(first_message))
|
|
557
|
+
orphan_warning = unparented_delegation_warning(
|
|
558
|
+
session_name, caller, created_by, first_message)
|
|
559
|
+
if orphan_warning and not json_mode:
|
|
560
|
+
print(f"WARNING: {orphan_warning}", file=sys.stderr)
|
|
533
561
|
|
|
534
562
|
# Build agent command
|
|
535
563
|
model_override = getattr(args, 'model', None)
|
|
@@ -717,6 +745,8 @@ def cmd_new(args) -> int:
|
|
|
717
745
|
"branch": branch,
|
|
718
746
|
"machine": None,
|
|
719
747
|
}
|
|
748
|
+
if orphan_warning:
|
|
749
|
+
result["warning"] = orphan_warning
|
|
720
750
|
if first_message:
|
|
721
751
|
result["first_message_delivered"] = bool(first_message_delivered)
|
|
722
752
|
# Present whenever the straight verified paste didn't carry the
|
|
@@ -1068,6 +1098,10 @@ def cmd_worktree(args) -> int:
|
|
|
1068
1098
|
if not name:
|
|
1069
1099
|
return _output_result(False, json_mode, "Usage: agentwire worktree <name> (or --list / --remove <name> / --prune)")
|
|
1070
1100
|
|
|
1101
|
+
parent_err = created_by_error(getattr(args, 'created_by', None))
|
|
1102
|
+
if parent_err:
|
|
1103
|
+
return _output_result(False, json_mode, parent_err)
|
|
1104
|
+
|
|
1071
1105
|
if not _check_tmux_installed():
|
|
1072
1106
|
return _output_result(False, json_mode, "tmux is required but not installed")
|
|
1073
1107
|
|
|
@@ -42,15 +42,15 @@ UV_CACHE_CLEAN_TIMEOUT = 20.0
|
|
|
42
42
|
|
|
43
43
|
|
|
44
44
|
def _clean_uv_cache_for_agentwire() -> None:
|
|
45
|
-
"""Drop only agentwire-dev's
|
|
45
|
+
"""Drop only agentwire-dev's entry from the uv cache.
|
|
46
46
|
|
|
47
47
|
The uv cache (~/.cache/uv) is shared by every uv tool and project on the
|
|
48
48
|
machine — never rmtree it wholesale. `uv cache clean <package>` evicts just
|
|
49
49
|
that package's wheels/sdists so the next install rebuilds from source.
|
|
50
|
-
damage-control-dev is
|
|
51
|
-
|
|
50
|
+
damage-control-dev is a published, versioned wheel resolved from PyPI (#1209 M8),
|
|
51
|
+
so there is no stale local build of it to evict.
|
|
52
52
|
"""
|
|
53
|
-
for package in ("agentwire-dev",
|
|
53
|
+
for package in ("agentwire-dev",):
|
|
54
54
|
try:
|
|
55
55
|
result = subprocess.run(
|
|
56
56
|
["uv", "cache", "clean", package],
|
|
@@ -570,9 +570,8 @@ def cmd_rebuild(args) -> int:
|
|
|
570
570
|
print(f" {line}" if line else "", file=sys.stderr)
|
|
571
571
|
return 1
|
|
572
572
|
|
|
573
|
-
# ...and the same question for
|
|
574
|
-
#
|
|
575
|
-
# #936 hazard on the package that actually runs on every tool call.
|
|
573
|
+
# ...and the same question for the package it installs: one that resolves into a linked
|
|
574
|
+
# worktree (a symlinked package dir) is the #936 hazard from a primary-looking checkout.
|
|
576
575
|
package_refusal = prov.rebuild_package_refusal_lines(project_root)
|
|
577
576
|
if package_refusal and not getattr(args, "allow_foreign_source", False):
|
|
578
577
|
for line in package_refusal:
|