agentwire-dev 1.81.1__tar.gz → 1.82.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/PKG-INFO +2 -2
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/RELEASING.md +1 -1
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/__init__.py +1 -1
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/corpus/cases/relative_paths.yaml +6 -6
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/corpus/golden/effective_rules.json +8 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/corpus/golden/rule_ids.json +8 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/corpus/golden/snapshot.json +52 -16
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/pyproject.toml +1 -1
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_policy_ladder.py +1 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_powershell_matcher.py +4 -2
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_relative_path_operands.py +2 -2
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_safety_packs.py +10 -2
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/.agentwire.yml.example +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/.claude/commands/handoff.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/.claude/skills/wiki/SKILL.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/.github/FUNDING.yml +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/.github/ISSUE_TEMPLATE/question.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/.github/workflows/pytest.yml +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/.github/workflows/ruff.yml +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/.github/workflows/security.yml +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/.github/workflows/tts-smoke.yml +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/.gitignore +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/AGENTS.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/CODE_OF_CONDUCT.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/CONTRIBUTING.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/Dockerfile.local +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/LICENSE +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/README.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/SECURITY.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/SPONSORS.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/__main__.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/agents/__init__.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/agents/base.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/agents/tmux.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/auth_expired.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/background_tasks.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/beta.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/cached_status.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/channels/__init__.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/channels/base.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/channels/email.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/channels/push.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/channels/quo.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/channels_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/chrome_tabs.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/claude_settings.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/cohort.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/completion.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/config.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/config_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/core.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/council/__init__.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/council/cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/council/inbox.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/council/minutes.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/council/state.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/council/view.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/devices.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/diff_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/doctor_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/doctor_voice.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/ensure_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/env_loader.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/fetch.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/fleet.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/fleet_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/handoff/__init__.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/handoff/git_state.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/handoff/instructions.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/handoff/parser.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/handoff/renderer.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/handoff/schema.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/handoff_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/history.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/history_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/history_migrate.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/hooks/__init__.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/hooks/agentwire-permission.sh +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/hooks/idle-handler.sh +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/hooks/outcome_logger.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/hooks/queue-processor.sh +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/hooks/session-start-handler.sh +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/hooks_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/inbox.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/limits_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/listen.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/locking.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/machine_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/mcp_channels.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/mcp_chrome.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/mcp_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/mcp_core.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/mcp_council.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/mcp_desktop.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/mcp_handoff.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/mcp_history.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/mcp_listen.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/mcp_lock.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/mcp_machine.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/mcp_msg.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/mcp_notify.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/mcp_pane.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/mcp_projects.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/mcp_scheduler.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/mcp_scratchpad.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/mcp_server.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/mcp_services.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/mcp_session.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/mcp_status.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/mcp_task.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/mcp_tunnels.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/mcp_voice.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/mcp_wiki.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/mcp_worktree.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/msg_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/network.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/notify_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/onboarding.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/palette_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/pane_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/pane_manager.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/playback_lane.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/portal_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/project_config.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/projects.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/prompt_router.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/prompts_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/push_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/push_store.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/repo_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/research.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/restart_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/role_prompts.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/roles/__init__.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/roles/agentwire.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/roles/anchor.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/roles/chatbot.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/roles/contributor.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/roles/correspondent.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/roles/council-brain.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/roles/council-conscience.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/roles/council-critic.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/roles/council-devils-advocate.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/roles/council-gut.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/roles/council-historian.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/roles/council-member.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/roles/council-orchestrator.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/roles/init.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/roles/notifications.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/roles/orchestrator.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/roles/reviewer-worktree.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/roles/reviewer.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/roles/shared-checkout.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/roles/soul.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/roles/task-runner.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/roles/voice.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/roles/worker-worktree.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/roles/worker.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/roles_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/routes/__init__.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/routes/artifacts.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/routes/config.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/routes/council.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/routes/desktop.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/routes/history.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/routes/machines.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/routes/notify.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/routes/palette.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/routes/permission.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/routes/projects.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/routes/push.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/routes/safety.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/routes/scheduler.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/routes/scratchpad.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/routes/sessions.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/routes/sessions_admin.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/routes/voice.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/safety/__init__.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/safety/audit.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/safety/lint.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/safety/provenance.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/safety/residuals.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/safety/rule_baselines.json +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/safety/rules/agentwire-control-plane.json +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/safety/rules/agentwire-control-plane.yaml +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/safety/rules/agentwire-core.json +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/safety/rules/agentwire-core.yaml +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/safety/rules/agentwire-mcp-tools.json +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/safety/rules/agentwire-mcp-tools.yaml +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/safety/rules/agentwire-outbound.json +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/safety/rules/agentwire-outbound.yaml +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/safety/rules/agentwire.json +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/safety/rules/agentwire.yaml +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/safety/suggest.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/safety_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/safety_commands.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/safety_ext.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/safety_migrate.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/safety_notify.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/safety_packs_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/sandbox.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/scheduler/__init__.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/scheduler/dispatch.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/scheduler/gates.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/scheduler/loop.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/scheduler/models.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/scheduler/report.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/scheduler/schedule.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/scheduler/state.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/scheduler/zombie.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/scheduler_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/scratchpad.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/security.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/send_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/sent_ledger.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/server.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/services.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/session_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/session_context.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/session_ready.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/session_state.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/ssh.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/agentwire-splash-logo-layers--agentwire-text.png +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/agentwire-splash-logo-layers--echo-claw-fg.png +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/agentwire-splash-logo-layers--echo.png +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/agentwire-splash-logo-layers--telephone.png +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/agentwire-splash-logo-layers--tree.png +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/announcements.json +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/apple-touch-icon.png +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/css/desktop.css +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/css/mobile.css +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/favicon-32.png +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/favicon-64.png +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/icons/sessions/bear.webp +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/icons/sessions/cat.webp +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/icons/sessions/crown.webp +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/icons/sessions/custom/agentwire-portal.webp +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/icons/sessions/custom/agentwire-tts.webp +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/icons/sessions/custom/agentwire.webp +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/icons/sessions/deer.webp +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/icons/sessions/drone.webp +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/icons/sessions/eagle.webp +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/icons/sessions/fox.webp +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/icons/sessions/hawk.webp +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/icons/sessions/horse.webp +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/icons/sessions/lion.webp +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/icons/sessions/rabbit.webp +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/icons/sessions/robot.webp +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/icons/sessions/tiger.webp +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/icons/sessions/wolf.webp +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/img/icon-192.png +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/img/icon-512.png +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/.gitkeep +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/announcement-modal.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/api.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/artifact-window.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/card-terminal.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/collage.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/command-palette.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/council-window.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/dead-key-residue.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/desktop-manager.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/desktop.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/help-modal.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/hotkeys.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/icon-manager.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/lineage.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/mobile.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/notification-prefs.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/notifications-panel.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/ptt.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/push-client.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/review-window.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/safety-shared.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/safety-window.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/scratchpad.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/service-classification.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/session-hud-controller.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/session-hud-notices.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/session-hud-spawn.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/session-hud.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/session-id.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/session-window.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/shortcuts.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/sidebar/artifacts-section.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/sidebar/config-section.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/sidebar/council-section.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/sidebar/fleet-section.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/sidebar/machines-section.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/sidebar/projects-section.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/sidebar/safety-section.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/sidebar/scheduler-section.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/sidebar/services-section.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/sidebar/sessions-section.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/sidebar.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/spawn-ghost.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/taskbar-persist.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/terminal-font-prefs.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/terminal-pane.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/tile-manager.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/toast.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/token-modal.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/topology-render.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/utils/ansi.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/utils/rich-text.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/utils/swipe.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/voice/audio-unlock.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/voice/autosend-prefs.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/voice/browser-stt.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/voice/browser-tts.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/voice/jargon.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/voice/prompt.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/winbox.bundle.min.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/js/workspace-window.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/manifest.webmanifest +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/service-worker.js +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/static/topology-harness.html +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/stt/__init__.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/stt/base.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/stt/cloud.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/stt/engine.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/stt/local.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/stt/server_backend.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/stt/stt_server.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/system_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/tabs_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/tasks.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/tasks_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/templates/__init__.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/templates/base.html +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/templates/council/minutes.html.j2 +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/templates/desktop.html +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/templates/email_notification.html +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/templates/handoff/show-the-story.html.j2 +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/templates/handoff/theme.css.j2 +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/templates/mobile.html +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/templates/pair.html +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/templates/statusline.sh +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/templates/tmux.conf +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/templating.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/tts/__init__.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/tts/audio.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/tts/base.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/tts/engines/__init__.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/tts/engines/chatterbox.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/tts/engines/kokoro.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/tts/engines/zonos.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/tts/kokoro_server.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/tts/local.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/tts/registry.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/tts_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/tts_server.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/tunnels.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/tunnels_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/usage_limit.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/utils/__init__.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/utils/chunker.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/utils/event_log.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/utils/file_io.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/utils/paths.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/utils/speech.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/utils/subprocess.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/validation.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/voice_status.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/wait_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/wiki.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/wiki_audit.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/wiki_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/worktree.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/worktree_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/agentwire/worktree_registry.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/corpus/cases/bypass.yaml +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/corpus/cases/control_plane.yaml +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/corpus/cases/path_spelling.yaml +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/corpus/golden/harvested.json +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/corpus/schema.json +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/decisions/obsidian-second-brain.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/design/session-card-fields.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/design/session-card-recommendation.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/logo.png +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/INDEX.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/architecture.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/auth-expired.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/briefing-mode.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/communication/channels.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/communication/hammerspoon.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/communication/handoff.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/concepts.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/council.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/deployment/remote-access.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/deployment/remote-machines.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/glossary.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/integrations/gws-google-workspace-cli.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/internals/damage-control.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/internals/parallel-refactor.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/internals/portal.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/internals/session-topology.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/internals/shell-escaping.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/internals/troubleshooting.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/internals/upgrade-test.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/internals/window-collage.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/quickstart.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/research/briefing-mode-feasibility.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/research/orchestration-transport-alternatives.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/research/orchestrator-comparison.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/scheduling/scheduled-workloads.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/security/damage-control-hardening.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/security/pip-audit.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/security/remote-access-hardening.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/security/sandbox-spike.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/security/secrets.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/services.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/sessions/claude-code-auto-mode.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/sessions/conversation-identity.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/sessions/fan-out-cohorts.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/sessions/fleet.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/sessions/heal-line-count-cliff.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/sessions/helper-sessions.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/sessions/messaging.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/sessions/prompt-routing.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/sessions/window-sizing.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/sessions/worktree-sessions.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/usage-limit-recovery.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/voice/shim-contract.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/voice/stt-cloud.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/voice/stt-self-hosted.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/docs/wiki/voice/tts-self-hosted.md +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/conftest.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/corpus_runner.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/e2e/test_portal_ui.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/fixtures/audio_unlock_harness.mjs +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/fixtures/background_tasks/pane_30_shell.txt +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/fixtures/background_tasks/pane_80_agent.txt +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/fixtures/background_tasks/pane_80_done.txt +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/fixtures/background_tasks/pane_80_interrupted.txt +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/fixtures/background_tasks/pane_80_monitor.txt +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/fixtures/background_tasks/pane_80_quoted_footer.txt +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/fixtures/background_tasks/pane_80_second_notice.txt +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/fixtures/background_tasks/pane_80_shell.txt +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/fixtures/background_tasks/pane_80_shell_and_monitor.txt +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/fixtures/background_tasks/transcript_bash_done.jsonl +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/fixtures/background_tasks/transcript_bash_pending.jsonl +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/fixtures/background_tasks/transcript_monitor_done.jsonl +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/fixtures/background_tasks/transcript_monitor_events.jsonl +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/fixtures/dc_msg_body_quoting_carriers.txt +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/fixtures/hotkeys_harness.mjs +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/fixtures/sample_agentwire.yml +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/fixtures/sample_config.yaml +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/fixtures/sample_scheduler.yaml +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/fixtures/session_hud_detent_harness.mjs +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/fixtures/taskbar_persist_harness.mjs +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/fixtures/topology_expand_harness.mjs +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/fixtures/upgrade/gws.yaml +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/home_guard.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/integration/test_council_portal.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/integration/test_scheduler_board.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/integration/test_send_verified_tmux.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/integration/test_server_websockets.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/integration/test_tmux_name_rewrite.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/integration/test_upgrade_from_release.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/integration/test_worktree_cmd.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_agentwire_rules_layer.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_announcements.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_audio_unlock_js.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_audit_attribution.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_audit_outcomes.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_auth_expired.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_auth_expired_dispatch.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_background_tasks.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_background_tasks_review.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_beta_flag.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_block_rows_carry_an_id.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_brace_expansion_zero_access.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_breakglass.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_buddy_removal_keeps.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_build_agent_command.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_channels.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_chrome_tabs.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_claude_settings.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_cli_commands.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_cli_output.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_cli_smoke.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_cli_stderr_clean.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_cohort.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_config.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_config_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_control_plane_protection.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_conversation_change.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_corpus.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_council_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_council_inbox.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_council_minutes.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_council_state.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_council_view.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_damage_control_bypass.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_damage_control_delete_recursive.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_damage_control_hooks.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_damage_control_pin.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_dangling_worktrees.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_dc_install.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_dc_policy_packs.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_dc_profile_isolation.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_devices.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_diff_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_doctor_orphaned_history.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_doctor_scheduler_staleness.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_doctor_secrets_perms.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_doctor_task_migration.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_doctor_voice.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_ensure_shared_dir.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_ensure_verified_prompt.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_env_loader.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_escape_ask_routing.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_event_log.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_extension_points.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_fleet.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_golden_snapshot.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_guarded_launch_command.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_handoff_git_state.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_handoff_instructions.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_handoff_parser.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_handoff_renderer.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_helper_session.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_heredoc_marker_liveness.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_history.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_history_migrate.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_history_migrate_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_history_resume_name.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_hook_fail_closed.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_hook_fail_closed_matrix.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_hook_link_guard.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_hook_python_floor.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_hook_subprocess.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_hooks_install.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_hotkeys_js.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_idle_handler.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_idle_nag.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_inbox.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_init_command.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_install_parity.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_launch_line_reentry.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_launch_via_env.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_limits_tick_isolation.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_live_target_1261.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_locking.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_mcp_nonblocking.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_mcp_server.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_mcp_tool_policy.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_mcp_tools_args.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_msg_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_notify_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_onboarding_reinit.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_owner_only_writes.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_palette_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_path_case_folding.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_path_spelling.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_payload_position.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_pending_message_visibility.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_playback_lane.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_portal_api.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_portal_pair_url.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_posture_default.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_project_config.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_projects_registry.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_prompt_router.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_prompt_router_dedup.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_prompt_router_resume.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_prose_operands.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_push.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_rebuild_guard.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_rebuild_uv_lock.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_remote_session_record.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_repo_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_report_back_path_1259.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_restart_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_rich_text_js.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_rm_recoverable.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_role_prompt_retention.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_role_prompt_sweep_wiring.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_roles.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_routes_snapshot.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_rule_files_load.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_rule_ids_pinned.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_rules_json_in_sync.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_safe_cwd.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_safety_deployment.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_safety_ext.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_safety_groups.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_safety_install.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_safety_migrate.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_safety_notify.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_sandbox.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_say_lane.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_scan_budget.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_scheduler.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_scheduler_liveness.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_scheduler_zombie.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_scratchpad.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_security.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_sed_script_is_data.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_sent_ledger.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_server_async.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_services.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_services_command.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_session_context.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_session_created_by_env.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_session_hud_detent_js.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_session_metadata_ssot.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_session_metadata_write.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_session_ready.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_session_state.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_shared_dir_guard.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_shim_selfheal.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_skill_install.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_speech_tags.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_ssh.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_stt_backend.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_stt_cloud.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_stt_engine.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_task_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_task_max_duration.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_taskbar_persist_js.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_tasks.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_tasks_cli.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_templating.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_terminal_resize.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_tmux_session_cwd.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_topology_expand_js.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_tts_engine_resolution.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_tts_local.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_tunnels_probe.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_unattended_allow.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_unattended_env_isolation.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_unattended_scoped_allow.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_usage_limit.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_voice_assistant_removed.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_voice_off_and_shim_bind.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_voice_status.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_watchdog_stages.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_wiki.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_wiki_audit.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_worktree.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_worktree_branch_cleanup.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_worktree_dot_project.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_worktree_git_truth.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_worktree_layout.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_worktree_registry.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tests/unit/test_zero_access_member_access.py +0 -0
- {agentwire_dev-1.81.1 → agentwire_dev-1.82.0}/tools/nonce_stt_probe.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: agentwire-dev
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.82.0
|
|
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.
|
|
231
|
+
Requires-Dist: damage-control-dev<0.6,>=0.5.1
|
|
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'
|
|
@@ -6,7 +6,7 @@ Every release does **both** a PyPI publish and a GitHub release. The **GitHub re
|
|
|
6
6
|
|
|
7
7
|
## The engine is a separate project (single source)
|
|
8
8
|
|
|
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.
|
|
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.5.1,<0.6`); 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
11
|
To ship an engine change:
|
|
12
12
|
|
|
@@ -191,11 +191,11 @@
|
|
|
191
191
|
context:
|
|
192
192
|
cwd: /golden/elsewhere
|
|
193
193
|
expect:
|
|
194
|
-
decision:
|
|
194
|
+
decision: ask
|
|
195
195
|
protected: false
|
|
196
196
|
class: relative-path-operand
|
|
197
197
|
tags:
|
|
198
|
-
-
|
|
198
|
+
- settings-write-ask
|
|
199
199
|
source: tests/unit/test_relative_path_operands.py::CASES
|
|
200
200
|
- id: relative-path-operand-018
|
|
201
201
|
tool: Bash
|
|
@@ -227,11 +227,11 @@
|
|
|
227
227
|
context:
|
|
228
228
|
cwd: /golden/elsewhere
|
|
229
229
|
expect:
|
|
230
|
-
decision:
|
|
230
|
+
decision: ask
|
|
231
231
|
protected: false
|
|
232
232
|
class: relative-path-operand
|
|
233
233
|
tags:
|
|
234
|
-
-
|
|
234
|
+
- settings-write-ask
|
|
235
235
|
source: tests/unit/test_relative_path_operands.py::CASES
|
|
236
236
|
- id: relative-path-operand-021
|
|
237
237
|
tool: Bash
|
|
@@ -239,11 +239,11 @@
|
|
|
239
239
|
context:
|
|
240
240
|
cwd: /golden/home
|
|
241
241
|
expect:
|
|
242
|
-
decision:
|
|
242
|
+
decision: ask
|
|
243
243
|
protected: false
|
|
244
244
|
class: relative-path-operand
|
|
245
245
|
tags:
|
|
246
|
-
-
|
|
246
|
+
- settings-write-ask
|
|
247
247
|
source: tests/unit/test_relative_path_operands.py::CASES
|
|
248
248
|
- id: relative-path-operand-022
|
|
249
249
|
tool: Bash
|
|
@@ -43,6 +43,10 @@
|
|
|
43
43
|
"{\"anchored\": true, \"ask\": true, \"id\": \"agentwire.tmux-kill-session-a-kills-all-except-current\", \"pattern\": \"\\\\btmux\\\\s+kill-session\\\\s+.*-a\\\\b\"}",
|
|
44
44
|
"{\"anchored\": true, \"ask\": true, \"id\": \"container.docker-push\", \"pattern\": \"\\\\bdocker\\\\s+(compose\\\\s+)?push\\\\b\"}",
|
|
45
45
|
"{\"anchored\": true, \"ask\": true, \"id\": \"container.kubectl-delete\", \"pattern\": \"\\\\bkubectl\\\\s+delete\\\\b\"}",
|
|
46
|
+
"{\"anchored\": true, \"ask\": true, \"id\": \"control-plane.claude-nested-config-dir\", \"pattern\": \"\\\\bclaude\\\\s+--dc:config-dir\\\\b\"}",
|
|
47
|
+
"{\"anchored\": true, \"ask\": true, \"id\": \"control-plane.claude-nested-partial-sources\", \"pattern\": \"\\\\bclaude\\\\s+--dc:partial-sources\\\\b\"}",
|
|
48
|
+
"{\"anchored\": true, \"ask\": true, \"id\": \"control-plane.claude-nested-plugin-dir\", \"pattern\": \"\\\\bclaude\\\\s+--dc:plugin-dir\\\\b\"}",
|
|
49
|
+
"{\"anchored\": true, \"ask\": true, \"id\": \"control-plane.claude-nested-settings-file\", \"pattern\": \"\\\\bclaude\\\\s+--dc:settings-file\\\\b\"}",
|
|
46
50
|
"{\"anchored\": true, \"ask\": true, \"id\": \"core.crontab-install\", \"pattern\": \"(?<![\\\\w.-])(?<!\\\\./)crontab(?=[\\\\s;&|)`]|$)(?![^;&|]*\\\\s(?:-[A-Za-z]*l[A-Za-z]*|--list|-V|--version)(?=[\\\\s;&|)`]|$))\"}",
|
|
47
51
|
"{\"anchored\": true, \"ask\": true, \"id\": \"core.kill-sigkill\", \"pattern\": \"\\\\bkill\\\\s+(?:(?!--(?:\\\\s|$))[^\\\\s;&|]+\\\\s+)*?(?:-(?:9|KILL|SIGKILL)|-s\\\\s*(?:9|KILL|SIGKILL)|-n\\\\s+9|--signal[=\\\\s]\\\\s*(?:9|KILL|SIGKILL))(?=[\\\\s;&|)`]|$)\", \"pattern_src\": \"\\\\bkill\\\\s+{ARGS}(?:-(?:9|KILL|SIGKILL)|-s\\\\s*(?:9|KILL|SIGKILL)|-n\\\\s+9|--signal[=\\\\s]\\\\s*(?:9|KILL|SIGKILL))(?=[\\\\s;&|)`]|$)\"}",
|
|
48
52
|
"{\"anchored\": true, \"ask\": true, \"id\": \"core.rsync-delete\", \"pattern\": \"\\\\brsync\\\\s+(?:(?!--(?:\\\\s|$))[^\\\\s;&|]+\\\\s+)*?--(?:del|delete[a-z-]*|remove-(?:source|sent)-files)(?=[\\\\s=;&|)`]|$)\", \"pattern_src\": \"\\\\brsync\\\\s+{ARGS}--(?:del|delete[a-z-]*|remove-(?:source|sent)-files)(?=[\\\\s=;&|)`]|$)\"}",
|
|
@@ -232,6 +236,10 @@
|
|
|
232
236
|
"{\"anchored\": true, \"id\": \"containers.kubectl-delete-across-all-namespaces\", \"pattern\": \"\\\\bkubectl\\\\s+delete\\\\s+.*--all\\\\s+--all-namespaces\"}",
|
|
233
237
|
"{\"anchored\": true, \"id\": \"containers.kubectl-delete-all-all\", \"pattern\": \"\\\\bkubectl\\\\s+delete\\\\s+(?=(?:[^;&|]*\\\\s)?--all(?=[\\\\s;&|)`]|$))(?=(?:[^;&|]*\\\\s)?all(?=[\\\\s;&|)`]|$))\", \"pattern_src\": \"\\\\bkubectl\\\\s+delete\\\\s+(?=(?:[^;&|]*\\\\s)?--all(?=[\\\\s;&|)`]|$))(?=(?:[^;&|]*\\\\s)?all(?=[\\\\s;&|)`]|$))\"}",
|
|
234
238
|
"{\"anchored\": true, \"id\": \"containers.kubectl-delete-namespace\", \"pattern\": \"\\\\bkubectl\\\\s+delete\\\\s+namespace\\\\b\"}",
|
|
239
|
+
"{\"anchored\": true, \"id\": \"control-plane.claude-nested-bare\", \"pattern\": \"\\\\bclaude\\\\s+--dc:bare\\\\b\"}",
|
|
240
|
+
"{\"anchored\": true, \"id\": \"control-plane.claude-nested-disable-all-hooks\", \"pattern\": \"\\\\bclaude\\\\s+--dc:disable-all-hooks\\\\b\"}",
|
|
241
|
+
"{\"anchored\": true, \"id\": \"control-plane.claude-nested-no-user-scope\", \"pattern\": \"\\\\bclaude\\\\s+--dc:no-user-scope\\\\b\"}",
|
|
242
|
+
"{\"anchored\": true, \"id\": \"control-plane.claude-nested-safe-mode\", \"pattern\": \"\\\\bclaude\\\\s+--dc:safe-mode\\\\b\"}",
|
|
235
243
|
"{\"anchored\": true, \"id\": \"core.chmod-777-world-writable\", \"pattern\": \"\\\\bchmod\\\\s+(?:-[^\\\\s;&|]*\\\\s+)*(?:--\\\\s+)?0?777\\\\b\"}",
|
|
236
244
|
"{\"anchored\": true, \"id\": \"core.clearing-shell-history\", \"pattern\": \"\\\\bhistory\\\\s+-c\\\\b\"}",
|
|
237
245
|
"{\"anchored\": true, \"id\": \"core.dd-writing-to-device\", \"pattern\": \"\\\\bdd\\\\s+.*of=/dev/\"}",
|
|
@@ -43,6 +43,14 @@
|
|
|
43
43
|
"containers.kubectl-delete-across-all-namespaces",
|
|
44
44
|
"containers.kubectl-delete-all-all",
|
|
45
45
|
"containers.kubectl-delete-namespace",
|
|
46
|
+
"control-plane.claude-nested-bare",
|
|
47
|
+
"control-plane.claude-nested-config-dir",
|
|
48
|
+
"control-plane.claude-nested-disable-all-hooks",
|
|
49
|
+
"control-plane.claude-nested-no-user-scope",
|
|
50
|
+
"control-plane.claude-nested-partial-sources",
|
|
51
|
+
"control-plane.claude-nested-plugin-dir",
|
|
52
|
+
"control-plane.claude-nested-safe-mode",
|
|
53
|
+
"control-plane.claude-nested-settings-file",
|
|
46
54
|
"core.chmod-777-world-writable",
|
|
47
55
|
"core.clearing-shell-history",
|
|
48
56
|
"core.crontab-install",
|
|
@@ -135,7 +135,7 @@
|
|
|
135
135
|
"audit": 8,
|
|
136
136
|
"engine": 1830,
|
|
137
137
|
"engine_by_platform": 8,
|
|
138
|
-
"hooks":
|
|
138
|
+
"hooks": 1025,
|
|
139
139
|
"hooks_by_platform": 6
|
|
140
140
|
},
|
|
141
141
|
"engine": {
|
|
@@ -3356,10 +3356,10 @@
|
|
|
3356
3356
|
"unverifiable": false
|
|
3357
3357
|
},
|
|
3358
3358
|
"[\"Bash\", \"cd /golden/elsewhere && echo x > .claude/settings.json\", \"/golden/home\", \"default\", \"/golden/home\"]": {
|
|
3359
|
-
"decision": "
|
|
3359
|
+
"decision": "ask",
|
|
3360
3360
|
"protected": false,
|
|
3361
|
-
"rule_id":
|
|
3362
|
-
"unverifiable":
|
|
3361
|
+
"rule_id": "core.settings-write",
|
|
3362
|
+
"unverifiable": true
|
|
3363
3363
|
},
|
|
3364
3364
|
"[\"Bash\", \"cd /golden/elsewhere && echo x > .claude/settings.json\", \"/golden/home\", \"kill-switch-off\", \"/golden/home\"]": {
|
|
3365
3365
|
"decision": "allow",
|
|
@@ -6368,10 +6368,10 @@
|
|
|
6368
6368
|
"unverifiable": false
|
|
6369
6369
|
},
|
|
6370
6370
|
"[\"Bash\", \"echo x > .claude/settings.json # ask: because\", \"/golden/home\", \"default\", \"/golden/elsewhere\"]": {
|
|
6371
|
-
"decision": "
|
|
6371
|
+
"decision": "ask",
|
|
6372
6372
|
"protected": false,
|
|
6373
|
-
"rule_id":
|
|
6374
|
-
"unverifiable":
|
|
6373
|
+
"rule_id": "core.settings-write",
|
|
6374
|
+
"unverifiable": true
|
|
6375
6375
|
},
|
|
6376
6376
|
"[\"Bash\", \"echo x > .claude/settings.json # ask: because\", \"/golden/home\", \"default\", \"/golden/home\"]": {
|
|
6377
6377
|
"decision": "block",
|
|
@@ -6392,10 +6392,10 @@
|
|
|
6392
6392
|
"unverifiable": false
|
|
6393
6393
|
},
|
|
6394
6394
|
"[\"Bash\", \"echo x > .claude/settings.json\", \"/golden/home\", \"default\", \"/golden/elsewhere\"]": {
|
|
6395
|
-
"decision": "
|
|
6395
|
+
"decision": "ask",
|
|
6396
6396
|
"protected": false,
|
|
6397
|
-
"rule_id":
|
|
6398
|
-
"unverifiable":
|
|
6397
|
+
"rule_id": "core.settings-write",
|
|
6398
|
+
"unverifiable": true
|
|
6399
6399
|
},
|
|
6400
6400
|
"[\"Bash\", \"echo x > .claude/settings.json\", \"/golden/home\", \"default\", \"/golden/home\"]": {
|
|
6401
6401
|
"decision": "block",
|
|
@@ -12723,12 +12723,24 @@
|
|
|
12723
12723
|
"exit": 2,
|
|
12724
12724
|
"rule_id": "core.zero-access-path"
|
|
12725
12725
|
},
|
|
12726
|
+
"[\"Bash\", \"cd /golden/elsewhere && echo x > .claude/settings.json\", \"/golden/home\", \"bypass\", \"/golden/home\"]": {
|
|
12727
|
+
"audit": "asked",
|
|
12728
|
+
"decision": "ask",
|
|
12729
|
+
"exit": 0,
|
|
12730
|
+
"rule_id": null
|
|
12731
|
+
},
|
|
12726
12732
|
"[\"Bash\", \"cd /golden/elsewhere && echo x > .claude/settings.json\", \"/golden/home\", \"interactive\", \"/golden/home\"]": {
|
|
12727
|
-
"audit": "
|
|
12728
|
-
"decision": "
|
|
12733
|
+
"audit": "asked",
|
|
12734
|
+
"decision": "ask",
|
|
12729
12735
|
"exit": 0,
|
|
12730
12736
|
"rule_id": null
|
|
12731
12737
|
},
|
|
12738
|
+
"[\"Bash\", \"cd /golden/elsewhere && echo x > .claude/settings.json\", \"/golden/home\", \"unattended\", \"/golden/home\"]": {
|
|
12739
|
+
"audit": "blocked",
|
|
12740
|
+
"decision": "block",
|
|
12741
|
+
"exit": 2,
|
|
12742
|
+
"rule_id": "core.settings-write"
|
|
12743
|
+
},
|
|
12732
12744
|
"[\"Bash\", \"cd /tmp && echo hi\", \"/golden/home\", \"interactive\"]": {
|
|
12733
12745
|
"audit": "allowed",
|
|
12734
12746
|
"decision": "allow",
|
|
@@ -14265,9 +14277,15 @@
|
|
|
14265
14277
|
"exit": 2,
|
|
14266
14278
|
"rule_id": "core.protected-control-plane"
|
|
14267
14279
|
},
|
|
14280
|
+
"[\"Bash\", \"echo x > .claude/settings.json # ask: because\", \"/golden/home\", \"bypass\", \"/golden/elsewhere\"]": {
|
|
14281
|
+
"audit": "asked",
|
|
14282
|
+
"decision": "ask",
|
|
14283
|
+
"exit": 0,
|
|
14284
|
+
"rule_id": null
|
|
14285
|
+
},
|
|
14268
14286
|
"[\"Bash\", \"echo x > .claude/settings.json # ask: because\", \"/golden/home\", \"interactive\", \"/golden/elsewhere\"]": {
|
|
14269
|
-
"audit": "
|
|
14270
|
-
"decision": "
|
|
14287
|
+
"audit": "asked",
|
|
14288
|
+
"decision": "ask",
|
|
14271
14289
|
"exit": 0,
|
|
14272
14290
|
"rule_id": null
|
|
14273
14291
|
},
|
|
@@ -14277,9 +14295,21 @@
|
|
|
14277
14295
|
"exit": 2,
|
|
14278
14296
|
"rule_id": "core.protected-control-plane"
|
|
14279
14297
|
},
|
|
14298
|
+
"[\"Bash\", \"echo x > .claude/settings.json # ask: because\", \"/golden/home\", \"unattended\", \"/golden/elsewhere\"]": {
|
|
14299
|
+
"audit": "blocked",
|
|
14300
|
+
"decision": "block",
|
|
14301
|
+
"exit": 2,
|
|
14302
|
+
"rule_id": "core.settings-write"
|
|
14303
|
+
},
|
|
14304
|
+
"[\"Bash\", \"echo x > .claude/settings.json\", \"/golden/home\", \"bypass\", \"/golden/elsewhere\"]": {
|
|
14305
|
+
"audit": "asked",
|
|
14306
|
+
"decision": "ask",
|
|
14307
|
+
"exit": 0,
|
|
14308
|
+
"rule_id": null
|
|
14309
|
+
},
|
|
14280
14310
|
"[\"Bash\", \"echo x > .claude/settings.json\", \"/golden/home\", \"interactive\", \"/golden/elsewhere\"]": {
|
|
14281
|
-
"audit": "
|
|
14282
|
-
"decision": "
|
|
14311
|
+
"audit": "asked",
|
|
14312
|
+
"decision": "ask",
|
|
14283
14313
|
"exit": 0,
|
|
14284
14314
|
"rule_id": null
|
|
14285
14315
|
},
|
|
@@ -14289,6 +14319,12 @@
|
|
|
14289
14319
|
"exit": 2,
|
|
14290
14320
|
"rule_id": "core.protected-control-plane"
|
|
14291
14321
|
},
|
|
14322
|
+
"[\"Bash\", \"echo x > .claude/settings.json\", \"/golden/home\", \"unattended\", \"/golden/elsewhere\"]": {
|
|
14323
|
+
"audit": "blocked",
|
|
14324
|
+
"decision": "block",
|
|
14325
|
+
"exit": 2,
|
|
14326
|
+
"rule_id": "core.settings-write"
|
|
14327
|
+
},
|
|
14292
14328
|
"[\"Bash\", \"echo x > .config/gh/hosts.yml\", \"/golden/home\", \"interactive\", \"/golden/home\"]": {
|
|
14293
14329
|
"audit": "blocked",
|
|
14294
14330
|
"decision": "block",
|
|
@@ -29,7 +29,7 @@ dependencies = [
|
|
|
29
29
|
# PyPI. Engine changes land there, release there, then raise this floor.
|
|
30
30
|
# tests/unit/test_damage_control_pin.py checks the range and the installed engine.
|
|
31
31
|
# Hooks run `python -I -m damage_control.hook`.
|
|
32
|
-
"damage-control-dev>=0.
|
|
32
|
+
"damage-control-dev>=0.5.1,<0.6",
|
|
33
33
|
"aiohttp>=3.13.4", # >=3.13.4 clears CVE-2026-34515 + CVE-2026-34513 (portal-facing)
|
|
34
34
|
"aiohttp-jinja2>=1.6",
|
|
35
35
|
"jinja2>=3.1.0",
|
|
@@ -41,6 +41,7 @@ def make_engine(finding=None, grants=(), profile=GENERIC, **overrides):
|
|
|
41
41
|
check_read_path=lambda path, config: (False, ""),
|
|
42
42
|
check_path=lambda path, config: (False, ""),
|
|
43
43
|
check_protected_path=lambda path, allowed: (False, ""),
|
|
44
|
+
_path_forms=lambda path: [path],
|
|
44
45
|
check_mcp_tool=lambda name, config: {"decision": "allow", "reason": "", "id": None, "mutates": None},
|
|
45
46
|
ScanBudgetExceeded=type("ScanBudgetExceeded", (BaseException,), {}),
|
|
46
47
|
)
|
|
@@ -10,7 +10,7 @@ def test_the_bash_hook_judges_a_powershell_call_exactly_like_a_bash_call(run_hoo
|
|
|
10
10
|
|
|
11
11
|
got = {
|
|
12
12
|
(tool, cmd): verdict(tool, cmd)
|
|
13
|
-
for tool in ("Bash", "PowerShell")
|
|
13
|
+
for tool in ("Bash", "PowerShell", "Monitor")
|
|
14
14
|
for cmd in ("rm -rf /agentwire-selftest", "echo hi")
|
|
15
15
|
}
|
|
16
16
|
assert got == {
|
|
@@ -18,9 +18,11 @@ def test_the_bash_hook_judges_a_powershell_call_exactly_like_a_bash_call(run_hoo
|
|
|
18
18
|
("PowerShell", "rm -rf /agentwire-selftest"): 2,
|
|
19
19
|
("Bash", "echo hi"): 0,
|
|
20
20
|
("PowerShell", "echo hi"): 0,
|
|
21
|
+
("Monitor", "rm -rf /agentwire-selftest"): 2,
|
|
22
|
+
("Monitor", "echo hi"): 0,
|
|
21
23
|
}
|
|
22
24
|
# a tool the hook does not gate is still ignored
|
|
23
|
-
assert verdict("
|
|
25
|
+
assert verdict("NotATool", "rm -rf /agentwire-selftest") == 0
|
|
24
26
|
|
|
25
27
|
|
|
26
28
|
def test_the_outcome_logger_matches_the_powershell_tool_too():
|
|
@@ -49,10 +49,10 @@ CASES = [
|
|
|
49
49
|
(FAKE_HOME, "echo x >> .bash_history", "block"),
|
|
50
50
|
(ELSEWHERE, "cd ~ && cat .ssh/id_rsa", "block"),
|
|
51
51
|
# what a relative name means depends on where it runs
|
|
52
|
-
(ELSEWHERE, "echo x > .claude/settings.json", "
|
|
52
|
+
(ELSEWHERE, "echo x > .claude/settings.json", "ask"),
|
|
53
53
|
(ELSEWHERE, "cat .ssh/id_rsa", "allow"),
|
|
54
54
|
(ELSEWHERE, "rm .claude/notes.txt", "allow"),
|
|
55
|
-
(FAKE_HOME, "cd " + ELSEWHERE + " && echo x > .claude/settings.json", "
|
|
55
|
+
(FAKE_HOME, "cd " + ELSEWHERE + " && echo x > .claude/settings.json", "ask"),
|
|
56
56
|
]
|
|
57
57
|
|
|
58
58
|
|
|
@@ -4,6 +4,7 @@ The hooks read ``packs:`` / ``disabled_groups:`` from the policy file on every c
|
|
|
4
4
|
enabling or disabling takes effect on the next tool call and touches no file on disk.
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
|
+
import hashlib
|
|
7
8
|
import shutil
|
|
8
9
|
from types import SimpleNamespace
|
|
9
10
|
|
|
@@ -46,15 +47,22 @@ def decisions():
|
|
|
46
47
|
|
|
47
48
|
|
|
48
49
|
def install_old_layout():
|
|
49
|
-
"""What every pre-package machine looks like:
|
|
50
|
+
"""What every pre-package machine looks like: every bundled file copied into the overlay, no `packs:` key.
|
|
51
|
+
|
|
52
|
+
Only content a pre-package release could have shipped (a hash in the frozen baselines): the engine
|
|
53
|
+
keeps adding rule content (0.5.0's nested-claude rules), and no old machine holds a copy of that.
|
|
54
|
+
"""
|
|
55
|
+
shipped = safety_migrate.load_baselines()
|
|
50
56
|
sources = {
|
|
51
57
|
safety_commands.RULES_DIR: [p for d in engine.bundled_rule_sources() for p in d.glob("*.yaml")],
|
|
52
58
|
safety_commands.TOOLDEFS_DIR: list(engine.bundled_tooldefs_dir().glob("*.yaml")),
|
|
53
59
|
}
|
|
54
60
|
for target, files in sources.items():
|
|
55
61
|
target.mkdir(parents=True, exist_ok=True)
|
|
62
|
+
section = "rules" if target == safety_commands.RULES_DIR else "tooldefs"
|
|
56
63
|
for path in files:
|
|
57
|
-
|
|
64
|
+
if hashlib.sha256(path.read_bytes()).hexdigest() in shipped[section].get(path.name, []):
|
|
65
|
+
shutil.copy(path, target / path.name)
|
|
58
66
|
safety_commands.DAMAGECONTROL_FILE.write_text("enabled: true\n")
|
|
59
67
|
|
|
60
68
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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
|