agentwire-dev 1.67.0__tar.gz → 1.69.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.67.0 → agentwire_dev-1.69.0}/.github/workflows/security.yml +73 -1
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/PKG-INFO +1 -1
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/__init__.py +1 -1
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/__main__.py +6 -2
- agentwire_dev-1.69.0/agentwire/alerts_cli.py +153 -0
- agentwire_dev-1.69.0/agentwire/auth_expired.py +493 -0
- agentwire_dev-1.69.0/agentwire/beta.py +182 -0
- agentwire_dev-1.69.0/agentwire/buddy_cli.py +370 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/cohort.py +10 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/completion.py +50 -2
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/config.py +129 -5
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/core.py +371 -72
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/doctor_cli.py +733 -59
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/ensure_cli.py +41 -0
- agentwire_dev-1.69.0/agentwire/fleet_alerts.py +327 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/history.py +220 -12
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/history_cli.py +125 -0
- agentwire_dev-1.69.0/agentwire/history_migrate.py +463 -0
- agentwire_dev-1.69.0/agentwire/hooks/damage-control/bash-tool-damage-control.py +3009 -0
- agentwire_dev-1.69.0/agentwire/hooks/damage-control/edit-tool-damage-control.py +2910 -0
- agentwire_dev-1.69.0/agentwire/hooks/damage-control/mcp-tool-damage-control.py +3045 -0
- agentwire_dev-1.69.0/agentwire/hooks/damage-control/read-tool-damage-control.py +2925 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/rules/agentwire.yaml +7 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/rules/aws.yaml +13 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/rules/cloud-hosting.yaml +27 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/rules/containers.yaml +10 -3
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/rules/core.yaml +19 -7
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/rules/databases.yaml +27 -55
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/rules/firebase.yaml +5 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/rules/gcp.yaml +9 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/rules/gws.yaml +7 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/rules/infrastructure.yaml +10 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/rules/outbound.yaml +7 -0
- agentwire_dev-1.69.0/agentwire/hooks/damage-control/rules/payloads.yaml +118 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/rules/publish.yaml +6 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/rules/remote.yaml +30 -0
- agentwire_dev-1.69.0/agentwire/hooks/damage-control/write-tool-damage-control.py +2909 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/queue-processor.sh +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks_cli.py +60 -7
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/inbox.py +130 -9
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/limits_cli.py +18 -1
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/machine_cli.py +8 -8
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_msg.py +8 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_services.py +4 -2
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/msg_cli.py +10 -2
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/onboarding.py +8 -1
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/pane_cli.py +24 -9
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/prompt_router.py +452 -61
- agentwire_dev-1.69.0/agentwire/restart_cli.py +276 -0
- agentwire_dev-1.69.0/agentwire/role_prompts.py +301 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/__init__.py +11 -0
- agentwire_dev-1.69.0/agentwire/roles/agentwire.md +87 -0
- agentwire_dev-1.69.0/agentwire/roles/orchestrator.md +105 -0
- agentwire_dev-1.69.0/agentwire/roles/worker-worktree.md +51 -0
- agentwire_dev-1.69.0/agentwire/roles/worker.md +51 -0
- agentwire_dev-1.69.0/agentwire/safety/_core.py +2821 -0
- agentwire_dev-1.69.0/agentwire/safety/lint.py +252 -0
- agentwire_dev-1.69.0/agentwire/safety/provenance.py +205 -0
- agentwire_dev-1.69.0/agentwire/safety/rule_baselines.json +116 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/safety_cli.py +18 -2
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/safety_commands.py +395 -54
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/scheduler/dispatch.py +59 -2
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/scheduler/models.py +3 -1
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/scheduler_cli.py +2 -1
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/security.py +8 -22
- agentwire_dev-1.69.0/agentwire/services.py +628 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/session_cli.py +39 -7
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/system_cli.py +30 -3
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tasks.py +22 -5
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tasks_cli.py +48 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/templates/tmux.conf +12 -3
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/usage_limit.py +49 -1
- agentwire_dev-1.69.0/agentwire/voice_layer/__init__.py +29 -0
- agentwire_dev-1.69.0/agentwire/voice_layer/client.py +1880 -0
- agentwire_dev-1.69.0/agentwire/voice_layer/confirm.py +2166 -0
- agentwire_dev-1.69.0/agentwire/voice_layer/delivery.py +262 -0
- agentwire_dev-1.69.0/agentwire/voice_layer/identity.py +204 -0
- agentwire_dev-1.69.0/agentwire/voice_layer/instructions.py +324 -0
- agentwire_dev-1.69.0/agentwire/voice_layer/outbox.py +188 -0
- agentwire_dev-1.69.0/agentwire/voice_layer/realtime.py +152 -0
- agentwire_dev-1.69.0/agentwire/voice_layer/server.py +450 -0
- agentwire_dev-1.69.0/agentwire/voice_layer/surface.py +355 -0
- agentwire_dev-1.69.0/agentwire/voice_layer/tools.py +849 -0
- agentwire_dev-1.69.0/agentwire/voice_layer/transcript.py +441 -0
- agentwire_dev-1.69.0/agentwire/voice_layer/write_tools.py +381 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/INDEX.md +4 -1
- agentwire_dev-1.69.0/docs/wiki/auth-expired.md +210 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/internals/damage-control.md +424 -10
- agentwire_dev-1.69.0/docs/wiki/security/pip-audit.md +158 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/security/secrets.md +36 -0
- agentwire_dev-1.69.0/docs/wiki/services.md +140 -0
- agentwire_dev-1.69.0/docs/wiki/sessions/conversation-identity.md +532 -0
- agentwire_dev-1.69.0/docs/wiki/sessions/heal-line-count-cliff.md +166 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/sessions/messaging.md +180 -6
- agentwire_dev-1.69.0/docs/wiki/sessions/prompt-routing.md +290 -0
- agentwire_dev-1.69.0/docs/wiki/voice-layer.md +2461 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/pyproject.toml +4 -0
- agentwire_dev-1.69.0/tests/conftest.py +371 -0
- agentwire_dev-1.69.0/tests/fixtures/main_mcp_tools.json +110 -0
- agentwire_dev-1.69.0/tests/home_guard.py +133 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/integration/test_tmux_name_rewrite.py +11 -3
- agentwire_dev-1.69.0/tests/page_slice.py +40 -0
- agentwire_dev-1.69.0/tests/unit/test_auth_expired.py +417 -0
- agentwire_dev-1.69.0/tests/unit/test_auth_expired_dispatch.py +310 -0
- agentwire_dev-1.69.0/tests/unit/test_beta_flag.py +795 -0
- agentwire_dev-1.69.0/tests/unit/test_buddy_restart.py +370 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_build_agent_command.py +38 -16
- agentwire_dev-1.69.0/tests/unit/test_client_wires.py +302 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_control_plane_protection.py +8 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_damage_control_bypass.py +10 -0
- agentwire_dev-1.69.0/tests/unit/test_damage_control_hooks.py +1867 -0
- agentwire_dev-1.69.0/tests/unit/test_damage_control_payload_anchoring.py +1354 -0
- agentwire_dev-1.69.0/tests/unit/test_doctor_orphaned_history.py +168 -0
- agentwire_dev-1.69.0/tests/unit/test_doctor_secrets_perms.py +128 -0
- agentwire_dev-1.69.0/tests/unit/test_fleet_alerts.py +804 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_guarded_launch_command.py +12 -2
- agentwire_dev-1.69.0/tests/unit/test_history.py +179 -0
- agentwire_dev-1.69.0/tests/unit/test_history_migrate.py +476 -0
- agentwire_dev-1.69.0/tests/unit/test_history_migrate_cli.py +134 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_history_resume_name.py +9 -9
- agentwire_dev-1.69.0/tests/unit/test_home_isolation.py +364 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_hooks_install.py +10 -0
- agentwire_dev-1.69.0/tests/unit/test_launch_line_reentry.py +355 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_locking.py +4 -4
- agentwire_dev-1.69.0/tests/unit/test_owner_only_writes.py +102 -0
- agentwire_dev-1.69.0/tests/unit/test_pip_audit_report.py +580 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_prompt_router.py +6 -2
- agentwire_dev-1.69.0/tests/unit/test_prompt_router_resume.py +701 -0
- agentwire_dev-1.69.0/tests/unit/test_remote_session_record.py +97 -0
- agentwire_dev-1.69.0/tests/unit/test_restart_cli.py +373 -0
- agentwire_dev-1.69.0/tests/unit/test_role_prompt_retention.py +286 -0
- agentwire_dev-1.69.0/tests/unit/test_role_prompt_sweep_wiring.py +198 -0
- agentwire_dev-1.69.0/tests/unit/test_safety_deployment.py +842 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_safety_heal.py +9 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_services.py +1 -1
- agentwire_dev-1.69.0/tests/unit/test_services_command.py +919 -0
- agentwire_dev-1.69.0/tests/unit/test_session_metadata_ssot.py +190 -0
- agentwire_dev-1.69.0/tests/unit/test_session_metadata_write.py +157 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_skill_install.py +12 -2
- agentwire_dev-1.69.0/tests/unit/test_tmux_session_cwd.py +126 -0
- agentwire_dev-1.69.0/tests/unit/test_unattended_scoped_allow.py +732 -0
- agentwire_dev-1.69.0/tests/unit/test_voice_announcer.py +3291 -0
- agentwire_dev-1.69.0/tests/unit/test_voice_body_delivery.py +364 -0
- agentwire_dev-1.69.0/tests/unit/test_voice_bridge_host.py +343 -0
- agentwire_dev-1.69.0/tests/unit/test_voice_confirm.py +3761 -0
- agentwire_dev-1.69.0/tests/unit/test_voice_epoch.py +432 -0
- agentwire_dev-1.69.0/tests/unit/test_voice_fleet_alerts.py +152 -0
- agentwire_dev-1.69.0/tests/unit/test_voice_kind.py +468 -0
- agentwire_dev-1.69.0/tests/unit/test_voice_layer.py +689 -0
- agentwire_dev-1.69.0/tests/unit/test_voice_outbox.py +460 -0
- agentwire_dev-1.69.0/tests/unit/test_voice_persona.py +334 -0
- agentwire_dev-1.69.0/tests/unit/test_voice_surface.py +1201 -0
- agentwire_dev-1.69.0/tests/unit/test_voice_wiki_accuracy.py +818 -0
- agentwire_dev-1.69.0/tools/voice_dc_probe.py +254 -0
- agentwire_dev-1.69.0/tools/voice_heal_probe.py +281 -0
- agentwire_dev-1.67.0/agentwire/hooks/damage-control/bash-tool-damage-control.py +0 -1605
- agentwire_dev-1.67.0/agentwire/hooks/damage-control/edit-tool-damage-control.py +0 -1515
- agentwire_dev-1.67.0/agentwire/hooks/damage-control/mcp-tool-damage-control.py +0 -1642
- agentwire_dev-1.67.0/agentwire/hooks/damage-control/read-tool-damage-control.py +0 -1530
- agentwire_dev-1.67.0/agentwire/hooks/damage-control/write-tool-damage-control.py +0 -1514
- agentwire_dev-1.67.0/agentwire/safety/_core.py +0 -1429
- agentwire_dev-1.67.0/agentwire/services.py +0 -325
- agentwire_dev-1.67.0/docs/wiki/security/pip-audit.md +0 -60
- agentwire_dev-1.67.0/docs/wiki/services.md +0 -74
- agentwire_dev-1.67.0/docs/wiki/sessions/conversation-identity.md +0 -151
- agentwire_dev-1.67.0/docs/wiki/sessions/prompt-routing.md +0 -156
- agentwire_dev-1.67.0/tests/conftest.py +0 -149
- agentwire_dev-1.67.0/tests/unit/test_damage_control_hooks.py +0 -806
- agentwire_dev-1.67.0/tests/unit/test_history.py +0 -34
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/.agentwire.yml.example +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/.claude/commands/handoff.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/.claude/skills/wiki/SKILL.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/.github/FUNDING.yml +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/.github/ISSUE_TEMPLATE/question.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/.github/workflows/pytest.yml +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/.github/workflows/ruff.yml +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/.github/workflows/tts-smoke.yml +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/.gitignore +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/AGENTS.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/CODE_OF_CONDUCT.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/CONTRIBUTING.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/Dockerfile.local +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/LICENSE +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/README.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/RELEASING.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/SECURITY.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/SPONSORS.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/agents/__init__.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/agents/base.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/agents/tmux.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/cached_status.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/channels/__init__.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/channels/base.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/channels/email.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/channels/push.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/channels/quo.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/channels_cli.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/chrome_tabs.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/config_cli.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/council/__init__.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/council/cli.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/council/inbox.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/council/minutes.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/council/state.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/council/view.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/devices.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/diff_cli.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/doctor_voice.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/fetch.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/handoff/__init__.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/handoff/git_state.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/handoff/instructions.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/handoff/parser.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/handoff/renderer.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/handoff/schema.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/handoff_cli.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/__init__.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/agentwire-permission.sh +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/__init__.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/audit_logger.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/rules/control-plane.yaml +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/damage-control/rules/git.yaml +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/hooks/idle-handler.sh +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/listen.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/locking.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_channels.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_chrome.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_cli.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_core.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_council.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_desktop.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_handoff.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_history.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_listen.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_lock.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_machine.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_notify.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_pane.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_projects.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_scheduler.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_scratchpad.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_server.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_session.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_status.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_task.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_tunnels.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_voice.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_wiki.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/mcp_worktree.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/network.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/notify_cli.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/palette_cli.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/pane_manager.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/portal_cli.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/project_config.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/projects.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/prompts_cli.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/push_cli.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/push_store.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/repo_cli.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/research.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/anchor.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/chatbot.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/contributor.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/correspondent.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/council-brain.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/council-conscience.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/council-critic.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/council-devils-advocate.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/council-gut.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/council-historian.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/council-member.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/council-orchestrator.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/init.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/notifications.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/reviewer-worktree.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/reviewer.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/shared-checkout.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/soul.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/task-runner.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles/voice.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/roles_cli.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/__init__.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/artifacts.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/config.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/council.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/desktop.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/history.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/machines.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/notify.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/palette.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/permission.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/projects.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/push.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/safety.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/scheduler.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/scratchpad.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/sessions.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/sessions_admin.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/routes/voice.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/safety/__init__.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/scheduler/__init__.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/scheduler/gates.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/scheduler/loop.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/scheduler/report.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/scheduler/schedule.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/scheduler/state.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/scheduler/zombie.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/scratchpad.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/send_cli.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/server.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/session_context.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/session_ready.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/ssh.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/agentwire-splash-logo-layers--agentwire-text.png +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/agentwire-splash-logo-layers--echo-claw-fg.png +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/agentwire-splash-logo-layers--echo.png +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/agentwire-splash-logo-layers--telephone.png +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/agentwire-splash-logo-layers--tree.png +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/announcements.json +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/apple-touch-icon.png +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/css/desktop.css +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/css/mobile.css +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/favicon-32.png +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/favicon-64.png +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/bear.webp +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/cat.webp +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/crown.webp +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/custom/agentwire-portal.webp +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/custom/agentwire-tts.webp +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/custom/agentwire.webp +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/deer.webp +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/drone.webp +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/eagle.webp +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/fox.webp +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/hawk.webp +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/horse.webp +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/lion.webp +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/rabbit.webp +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/robot.webp +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/tiger.webp +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/icons/sessions/wolf.webp +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/img/icon-192.png +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/img/icon-512.png +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/.gitkeep +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/announcement-modal.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/api.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/artifact-window.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/card-terminal.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/collage.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/command-palette.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/council-window.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/dead-key-suppressor.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/desktop-manager.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/desktop.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/help-modal.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/icon-manager.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/lineage.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/mobile.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/notification-prefs.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/notifications-panel.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/ptt.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/push-client.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/review-window.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/safety-shared.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/safety-window.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/scratchpad.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/service-classification.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/session-hud-controller.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/session-hud-notices.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/session-hud-spawn.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/session-hud.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/session-id.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/session-window.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/shortcuts.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/sidebar/artifacts-section.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/sidebar/config-section.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/sidebar/council-section.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/sidebar/machines-section.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/sidebar/projects-section.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/sidebar/safety-section.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/sidebar/scheduler-section.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/sidebar/services-section.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/sidebar/sessions-section.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/sidebar.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/spawn-ghost.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/terminal-font-prefs.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/terminal-pane.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/tile-manager.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/toast.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/token-modal.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/topology-render.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/utils/ansi.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/utils/rich-text.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/utils/swipe.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/voice/autosend-prefs.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/voice/browser-stt.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/voice/browser-tts.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/voice/jargon.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/voice/prompt.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/winbox.bundle.min.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/js/workspace-window.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/manifest.webmanifest +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/service-worker.js +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/static/topology-harness.html +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/stt/__init__.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/stt/base.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/stt/cloud.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/stt/engine.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/stt/local.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/stt/server_backend.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/stt/stt_server.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tabs_cli.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/templates/__init__.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/templates/base.html +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/templates/council/minutes.html.j2 +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/templates/desktop.html +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/templates/email_notification.html +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/templates/handoff/show-the-story.html.j2 +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/templates/handoff/theme.css.j2 +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/templates/mobile.html +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/templates/pair.html +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/templates/statusline.sh +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/templating.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tooldefs/aws.yaml +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tooldefs/docker.yaml +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tooldefs/gcp.yaml +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tooldefs/gh.yaml +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tooldefs/git.yaml +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tooldefs/gws.yaml +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tooldefs/kubectl.yaml +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tooldefs/npm.yaml +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tooldefs/terraform.yaml +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tooldefs/uv.yaml +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tts/__init__.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tts/audio.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tts/base.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tts/engines/__init__.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tts/engines/chatterbox.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tts/engines/kokoro.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tts/engines/zonos.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tts/kokoro_server.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tts/local.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tts/registry.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tts_cli.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tts_server.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tunnels.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/tunnels_cli.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/utils/__init__.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/utils/chunker.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/utils/event_log.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/utils/file_io.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/utils/paths.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/utils/speech.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/utils/subprocess.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/validation.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/voice_status.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/wait_cli.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/wiki.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/wiki_audit.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/wiki_cli.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/worktree.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/worktree_cli.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/agentwire/worktree_registry.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/decisions/obsidian-second-brain.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/design/session-card-fields.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/design/session-card-recommendation.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/logo.png +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/architecture.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/briefing-mode.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/communication/channels.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/communication/hammerspoon.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/communication/handoff.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/concepts.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/council.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/deployment/remote-access.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/deployment/remote-machines.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/glossary.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/integrations/gws-google-workspace-cli.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/internals/parallel-refactor.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/internals/portal.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/internals/session-topology.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/internals/shell-escaping.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/internals/troubleshooting.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/internals/window-collage.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/quickstart.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/research/briefing-mode-feasibility.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/research/orchestration-transport-alternatives.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/scheduling/scheduled-workloads.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/security/damage-control-hardening.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/security/remote-access-hardening.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/sessions/claude-code-auto-mode.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/sessions/fan-out-cohorts.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/sessions/helper-sessions.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/sessions/window-sizing.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/sessions/worktree-sessions.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/usage-limit-recovery.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/voice/shim-contract.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/voice/stt-cloud.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/voice/stt-self-hosted.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/docs/wiki/voice/tts-self-hosted.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/e2e/test_portal_ui.py +0 -0
- {agentwire_dev-1.67.0/agentwire/roles → agentwire_dev-1.69.0/tests/fixtures/main_roles}/agentwire.md +0 -0
- {agentwire_dev-1.67.0/agentwire/roles → agentwire_dev-1.69.0/tests/fixtures/main_roles}/orchestrator.md +0 -0
- {agentwire_dev-1.67.0/agentwire/roles → agentwire_dev-1.69.0/tests/fixtures/main_roles}/worker-worktree.md +0 -0
- {agentwire_dev-1.67.0/agentwire/roles → agentwire_dev-1.69.0/tests/fixtures/main_roles}/worker.md +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/fixtures/sample_agentwire.yml +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/fixtures/sample_config.yaml +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/fixtures/sample_scheduler.yaml +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/integration/test_council_portal.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/integration/test_scheduler_board.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/integration/test_send_verified_tmux.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/integration/test_server_websockets.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/integration/test_worktree_cmd.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_announcements.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_channels.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_chrome_tabs.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_cli_commands.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_cli_output.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_cli_smoke.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_cohort.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_config.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_config_cli.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_core_created_by_rooting.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_council_cli.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_council_inbox.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_council_minutes.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_council_state.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_council_view.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_damage_control_sync.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_dangling_worktrees.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_devices.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_diff_cli.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_doctor_scheduler_staleness.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_doctor_task_migration.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_doctor_voice.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_ensure_shared_dir.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_ensure_verified_prompt.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_event_log.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_file_io.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_handoff_git_state.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_handoff_instructions.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_handoff_parser.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_handoff_renderer.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_helper_session.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_idle_handler.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_idle_nag.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_inbox.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_init_command.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_install_parity.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_launch_via_env.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_limits_tick_isolation.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_mcp_server.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_mcp_tools_args.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_msg_cli.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_notify_cli.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_onboarding_reinit.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_palette_cli.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_pending_message_visibility.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_pip_environment.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_portal_api.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_posture_default.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_project_config.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_projects_registry.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_push.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_rebuild_guard.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_repo_cli.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_rich_text_js.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_roles.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_routes_snapshot.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_safety_commands.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_safety_disabled_rules.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_safety_escape_hatch.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_safety_kill_switch.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_scheduler.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_scheduler_liveness.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_scheduler_parsing.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_scheduler_zombie.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_scratchpad.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_security.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_server_async.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_server_pure.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_session_context.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_session_created_by_env.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_session_ready.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_shared_dir_guard.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_shim_selfheal.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_speech_tags.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_ssh.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_stt_backend.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_stt_cloud.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_stt_engine.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_task_cli.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_task_max_duration.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_tasks.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_tasks_cli.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_templating.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_terminal_resize.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_tmux_template.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_tts_engine_resolution.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_tts_local.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_tunnels_probe.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_unattended_env_isolation.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_usage_limit.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_validation.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_voice_status.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_wiki.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_wiki_audit.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_window_cycling_binding.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_worktree.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_worktree_branch_cleanup.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_worktree_dot_project.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_worktree_git_truth.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_worktree_layout.py +0 -0
- {agentwire_dev-1.67.0 → agentwire_dev-1.69.0}/tests/unit/test_worktree_registry.py +0 -0
|
@@ -66,6 +66,16 @@ jobs:
|
|
|
66
66
|
# deps are bumped explicitly in pyproject; transitive fixes land via lock
|
|
67
67
|
# bumps. See docs/wiki/security/pip-audit.md for the residual-CVE rationale.
|
|
68
68
|
continue-on-error: true
|
|
69
|
+
# The weekly cron opens/updates the tracking issue, which the DEFAULT token
|
|
70
|
+
# does not necessarily allow — a repo set to read-only default permissions
|
|
71
|
+
# would fail the `gh issue` call. Declared explicitly so the durable half of
|
|
72
|
+
# the visibility fix can't silently no-op. (No `pull-requests: write`: this
|
|
73
|
+
# deliberately does not comment on PRs — a fork PR gets a read-only token,
|
|
74
|
+
# so that flow would silently fail for exactly the external contributors it
|
|
75
|
+
# would exist to serve.)
|
|
76
|
+
permissions:
|
|
77
|
+
contents: read
|
|
78
|
+
issues: write
|
|
69
79
|
steps:
|
|
70
80
|
- uses: actions/checkout@v4
|
|
71
81
|
- name: Install uv
|
|
@@ -85,14 +95,42 @@ jobs:
|
|
|
85
95
|
# HTTP request-handling CVEs are not on a reachable path. Documented +
|
|
86
96
|
# ignored here so the advisory signal stays meaningful; revisit when mcp /
|
|
87
97
|
# chatterbox-tts relax the ceiling. See docs/wiki/security/pip-audit.md.
|
|
98
|
+
# PYSEC-2026-3483 is the deprecated WebSocket SERVER transport
|
|
99
|
+
# (mcp.server.websocket) missing Host/Origin validation. agentwire runs
|
|
100
|
+
# its MCP server on stdio (mcp_server.py: mcp.run(transport="stdio")) and
|
|
101
|
+
# never imports that module, so it is not on a reachable path. Its fix
|
|
102
|
+
# needs mcp>=1.28.1, which pulls pydantic 2.13 and cascades the tts
|
|
103
|
+
# extra's whole chain (torch 2.6 -> 2.13 plus the CUDA stack, 32 packages)
|
|
104
|
+
# — a bad trade against an unreachable advisory. 1.27.2 clears the other
|
|
105
|
+
# two mcp advisories at a one-package diff. Revisit when the torch bump is
|
|
106
|
+
# wanted on its own merits. See docs/wiki/security/pip-audit.md.
|
|
88
107
|
- name: Audit runtime dependencies
|
|
108
|
+
id: audit
|
|
109
|
+
continue-on-error: true
|
|
89
110
|
run: >
|
|
90
111
|
uvx pip-audit==2.10.1 -r requirements.txt
|
|
112
|
+
--format json --output audit-runtime.json
|
|
91
113
|
--ignore-vuln PYSEC-2026-161
|
|
92
114
|
--ignore-vuln CVE-2026-48818
|
|
93
115
|
--ignore-vuln CVE-2026-48817
|
|
94
116
|
--ignore-vuln CVE-2026-54283
|
|
95
117
|
--ignore-vuln CVE-2026-54282
|
|
118
|
+
--ignore-vuln PYSEC-2026-3483
|
|
119
|
+
# The job stays advisory (continue-on-error above), but its RESULT is no
|
|
120
|
+
# longer invisible: this prints ::warning:: annotations, which GitHub
|
|
121
|
+
# renders on the run and PR checks views without anyone opening the job
|
|
122
|
+
# log, and writes a table to the step summary. `if: always()` so a
|
|
123
|
+
# crashed audit reports "UNKNOWN, which is not clean" rather than nothing
|
|
124
|
+
# — the exact shape of #900, where a red audit rendered as green.
|
|
125
|
+
# --min-packages is a coverage floor, not a version assertion: zero
|
|
126
|
+
# advisories over zero packages is not a clean bill of health. The
|
|
127
|
+
# runtime export is ~124 packages, so anything under 50 means the export
|
|
128
|
+
# produced nothing to audit and the run is reported UNKNOWN, not clean.
|
|
129
|
+
- name: Report advisories (never blocks)
|
|
130
|
+
if: always()
|
|
131
|
+
run: >
|
|
132
|
+
uv run --no-project python scripts/pip_audit_report.py
|
|
133
|
+
audit-runtime.json --scope runtime --min-packages 50
|
|
96
134
|
# Full audit including optional extras (tts/stt: torch, onnxruntime,
|
|
97
135
|
# gradio, ...). Weekly only and never ignore-filtered — surfaces the full
|
|
98
136
|
# backlog for review without blocking or spamming every PR.
|
|
@@ -101,4 +139,38 @@ jobs:
|
|
|
101
139
|
run: uv export --no-emit-project --all-extras --format requirements-txt -o requirements-all.txt
|
|
102
140
|
- name: Full audit (weekly cron, optional extras)
|
|
103
141
|
if: github.event_name == 'schedule'
|
|
104
|
-
|
|
142
|
+
continue-on-error: true
|
|
143
|
+
run: >
|
|
144
|
+
uvx pip-audit==2.10.1 -r requirements-all.txt
|
|
145
|
+
--format json --output audit-all.json
|
|
146
|
+
- name: Report full audit + open/update the tracking issue
|
|
147
|
+
if: always() && github.event_name == 'schedule'
|
|
148
|
+
env:
|
|
149
|
+
GH_TOKEN: ${{ github.token }}
|
|
150
|
+
AUDIT_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
|
|
151
|
+
run: |
|
|
152
|
+
uv run --no-project python scripts/pip_audit_report.py audit-all.json \
|
|
153
|
+
--scope "all extras" --min-packages 100 --issue-body issue-body.md
|
|
154
|
+
# ONE issue, reused. Annotations and summaries belong to a run nobody
|
|
155
|
+
# revisits; an issue is what actually stops advisories accumulating
|
|
156
|
+
# unseen — which is how #900 reached eight.
|
|
157
|
+
title='pip-audit: unresolved advisories in the dependency lock'
|
|
158
|
+
# --state all, NOT --state open: an open-only search cannot see the
|
|
159
|
+
# issue this workflow closed last week, so a recurrence would file a
|
|
160
|
+
# SECOND issue and the "one issue, reused" promise would quietly
|
|
161
|
+
# become "one per close/recur cycle".
|
|
162
|
+
existing=$(gh issue list --state all --search "$title in:title" \
|
|
163
|
+
--json number,state --jq '.[0] | "\(.number) \(.state)"' || true)
|
|
164
|
+
number=${existing%% *}
|
|
165
|
+
state=${existing##* }
|
|
166
|
+
if grep -q ': clean' issue-body.md; then
|
|
167
|
+
if [ -n "$number" ] && [ "$state" = "OPEN" ]; then
|
|
168
|
+
gh issue comment "$number" --body-file issue-body.md
|
|
169
|
+
gh issue close "$number" --comment "pip-audit is clean; closing. This issue is reopened automatically if findings return."
|
|
170
|
+
fi
|
|
171
|
+
elif [ -z "$number" ]; then
|
|
172
|
+
gh issue create --title "$title" --label "area:security" --body-file issue-body.md
|
|
173
|
+
else
|
|
174
|
+
[ "$state" = "CLOSED" ] && gh issue reopen "$number"
|
|
175
|
+
gh issue comment "$number" --body-file issue-body.md
|
|
176
|
+
fi
|
|
@@ -183,24 +183,27 @@ Command Categories:
|
|
|
183
183
|
# - diff: structured git diff for the mobile Review window
|
|
184
184
|
# - prompts: prompt routing (rides the limits watchdog)
|
|
185
185
|
# - msg: polite agent-to-agent inbox (rides the watchdog)
|
|
186
|
-
from . import diff_cli, limits_cli, msg_cli, pane_cli, prompts_cli, send_cli # noqa: I001 # session_cli kept on its own line below to minimize Phase 1 #495 merge conflicts
|
|
186
|
+
from . import alerts_cli, diff_cli, limits_cli, msg_cli, pane_cli, prompts_cli, send_cli # noqa: I001 # session_cli kept on its own line below to minimize Phase 1 #495 merge conflicts
|
|
187
187
|
from . import session_cli
|
|
188
188
|
from . import channels_cli, config_cli, portal_cli, tts_cli
|
|
189
189
|
from . import scheduler_cli, ensure_cli, tasks_cli
|
|
190
190
|
from . import doctor_cli, history_cli, machine_cli, safety_cli
|
|
191
191
|
from . import handoff_cli, hooks_cli, mcp_cli, roles_cli, tunnels_cli
|
|
192
192
|
from . import notify_cli, palette_cli, push_cli, repo_cli, system_cli, wiki_cli
|
|
193
|
-
from . import tabs_cli, wait_cli, worktree_cli
|
|
193
|
+
from . import restart_cli, tabs_cli, wait_cli, worktree_cli
|
|
194
|
+
from . import buddy_cli # BETA: gated on beta.voice_layer (default off)
|
|
194
195
|
from .council import cli as council_cli
|
|
195
196
|
|
|
196
197
|
_REGISTRARS = [ # noqa: N806 # registry constant; Phase 1 of #495 appends here
|
|
197
198
|
diff_cli.register_diff_parser,
|
|
198
199
|
prompts_cli.register_prompts_parser,
|
|
199
200
|
msg_cli.register_msg_parser,
|
|
201
|
+
alerts_cli.register_alerts_parser,
|
|
200
202
|
limits_cli.register_limits_parser,
|
|
201
203
|
pane_cli.register_pane_parser,
|
|
202
204
|
send_cli.register_send_parser,
|
|
203
205
|
session_cli.register_session_parser,
|
|
206
|
+
restart_cli.register_restart_parser,
|
|
204
207
|
portal_cli.register_portal_parser,
|
|
205
208
|
tts_cli.register_tts_parser,
|
|
206
209
|
channels_cli.register_channels_parser,
|
|
@@ -227,6 +230,7 @@ Command Categories:
|
|
|
227
230
|
tabs_cli.register_tabs_parser,
|
|
228
231
|
wait_cli.register_wait_parser,
|
|
229
232
|
worktree_cli.register_helper_parser,
|
|
233
|
+
buddy_cli.register_buddy_parser,
|
|
230
234
|
]
|
|
231
235
|
for _reg in _REGISTRARS:
|
|
232
236
|
_reg(subparsers)
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"""``agentwire alerts`` — who hears the machine's own detectors (#982).
|
|
2
|
+
|
|
3
|
+
Fleet detectors (expired login, usage-limit park, dead-lettered report-backs, a
|
|
4
|
+
root pane blocked with nowhere to route) have always been able to email the
|
|
5
|
+
OWNER. ``fleet_alerts`` lets them address a SESSION as typed mail instead, and
|
|
6
|
+
this is the surface that turns that on: without a CLI verb the subscription API
|
|
7
|
+
would be reachable only from inside the tree that calls it, which is precisely
|
|
8
|
+
the shape "CLI is the single source of truth" exists to prevent.
|
|
9
|
+
|
|
10
|
+
Subscription is a renewable **lease**, so ``list`` reports the expiry rather
|
|
11
|
+
than a boolean: a subscriber that stopped renewing has silently stopped
|
|
12
|
+
hearing anything, and that is a state an operator has to be able to see.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
|
|
17
|
+
import json
|
|
18
|
+
|
|
19
|
+
from . import fleet_alerts
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def _emit(payload: dict, json_mode: bool, lines: "list[str] | None" = None) -> int:
|
|
23
|
+
if json_mode:
|
|
24
|
+
print(json.dumps(payload, indent=2))
|
|
25
|
+
else:
|
|
26
|
+
for line in lines or []:
|
|
27
|
+
print(line)
|
|
28
|
+
return 0 if payload.get("success", True) else 1
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def cmd_alerts_subscribe(args) -> int:
|
|
32
|
+
json_mode = getattr(args, "json", False)
|
|
33
|
+
try:
|
|
34
|
+
lease = fleet_alerts.subscribe(args.session)
|
|
35
|
+
except Exception as exc:
|
|
36
|
+
return _emit(
|
|
37
|
+
{"success": False, "error": str(exc)}, json_mode, [f"error: {exc}"]
|
|
38
|
+
)
|
|
39
|
+
return _emit(
|
|
40
|
+
{"success": True, "session": args.session, "lease": lease},
|
|
41
|
+
json_mode,
|
|
42
|
+
[
|
|
43
|
+
f"'{args.session}' now receives fleet alerts.",
|
|
44
|
+
f" lease expires: {lease['expires_at']}",
|
|
45
|
+
" Renew before then — an expired lease goes quiet, it does not warn.",
|
|
46
|
+
],
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def cmd_alerts_unsubscribe(args) -> int:
|
|
51
|
+
json_mode = getattr(args, "json", False)
|
|
52
|
+
dropped = fleet_alerts.unsubscribe(args.session)
|
|
53
|
+
if not dropped:
|
|
54
|
+
return _emit(
|
|
55
|
+
{"success": False, "error": f"'{args.session}' was not subscribed"},
|
|
56
|
+
json_mode,
|
|
57
|
+
[f"'{args.session}' was not subscribed."],
|
|
58
|
+
)
|
|
59
|
+
return _emit(
|
|
60
|
+
{"success": True, "session": args.session},
|
|
61
|
+
json_mode,
|
|
62
|
+
[f"'{args.session}' no longer receives fleet alerts."],
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def cmd_alerts_list(args) -> int:
|
|
67
|
+
"""Who is subscribed — and whether this answer can be trusted.
|
|
68
|
+
|
|
69
|
+
``list`` reads the same candidate index the emit path does, so a lost index
|
|
70
|
+
makes both of them say "nobody". That would be the worst property this
|
|
71
|
+
command could have: the one surface built to make a silent stop VISIBLE
|
|
72
|
+
would agree with the silent stop. So the index's presence is reported
|
|
73
|
+
alongside the answer, and its absence is not rendered as a confident zero.
|
|
74
|
+
"""
|
|
75
|
+
json_mode = getattr(args, "json", False)
|
|
76
|
+
names = fleet_alerts.subscribers()
|
|
77
|
+
index_present = fleet_alerts.subscribers_index_path().exists()
|
|
78
|
+
rows = [{"session": n, "lease": fleet_alerts.subscription(n)} for n in names]
|
|
79
|
+
if names:
|
|
80
|
+
lines = [
|
|
81
|
+
"Sessions receiving fleet alerts:",
|
|
82
|
+
*(f" {r['session']} (lease expires {(r['lease'] or {}).get('expires_at')})"
|
|
83
|
+
for r in rows),
|
|
84
|
+
]
|
|
85
|
+
elif index_present:
|
|
86
|
+
lines = ["No session is subscribed to fleet alerts."]
|
|
87
|
+
else:
|
|
88
|
+
lines = [
|
|
89
|
+
"No subscriber index — so this is NOT a confident 'nobody subscribed'.",
|
|
90
|
+
"Either nobody ever subscribed, or the index was lost; from here those "
|
|
91
|
+
"look identical, and while it is missing every alert reaches nobody.",
|
|
92
|
+
"Settle it (cheap, and it rebuilds the index either way):",
|
|
93
|
+
" agentwire alerts reindex",
|
|
94
|
+
]
|
|
95
|
+
return _emit(
|
|
96
|
+
{
|
|
97
|
+
"success": True,
|
|
98
|
+
"subscribers": names,
|
|
99
|
+
"leases": rows,
|
|
100
|
+
"index_present": index_present,
|
|
101
|
+
},
|
|
102
|
+
json_mode,
|
|
103
|
+
lines,
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def cmd_alerts_reindex(args) -> int:
|
|
108
|
+
"""Rebuild the candidate index from the session records.
|
|
109
|
+
|
|
110
|
+
The alert path never walks the record store — that cost sits on the
|
|
111
|
+
synchronous permission-hook path — so a lost index means fewer alerts until
|
|
112
|
+
somebody rebuilds it. This is that somebody.
|
|
113
|
+
"""
|
|
114
|
+
json_mode = getattr(args, "json", False)
|
|
115
|
+
names = fleet_alerts.reindex()
|
|
116
|
+
return _emit(
|
|
117
|
+
{"success": True, "subscribers": names},
|
|
118
|
+
json_mode,
|
|
119
|
+
[f"Reindexed: {len(names)} live subscriber(s)." , *(f" {n}" for n in names)],
|
|
120
|
+
)
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
def register_alerts_parser(subparsers) -> None:
|
|
124
|
+
parser = subparsers.add_parser(
|
|
125
|
+
"alerts",
|
|
126
|
+
help="Who hears the machine's own detectors (fleet alerts)",
|
|
127
|
+
description=(
|
|
128
|
+
"Fleet detectors — expired login, usage-limit park, dead-lettered "
|
|
129
|
+
"report-backs, a root pane blocked with nowhere to route — email the "
|
|
130
|
+
"owner. They can also address a SESSION as typed mail: an escalation "
|
|
131
|
+
"for the two conditions only a human can clear, a note or a request "
|
|
132
|
+
"for the rest. A session subscribes here, on a renewable lease."
|
|
133
|
+
),
|
|
134
|
+
)
|
|
135
|
+
sub = parser.add_subparsers(dest="alerts_command", required=True)
|
|
136
|
+
|
|
137
|
+
p = sub.add_parser("subscribe", help="Lease fleet alerts for a session")
|
|
138
|
+
p.add_argument("session", help="Session name (must have a session record)")
|
|
139
|
+
p.add_argument("--json", action="store_true", help="JSON output")
|
|
140
|
+
p.set_defaults(func=cmd_alerts_subscribe)
|
|
141
|
+
|
|
142
|
+
p = sub.add_parser("unsubscribe", help="Drop a session's fleet-alert lease")
|
|
143
|
+
p.add_argument("session")
|
|
144
|
+
p.add_argument("--json", action="store_true", help="JSON output")
|
|
145
|
+
p.set_defaults(func=cmd_alerts_unsubscribe)
|
|
146
|
+
|
|
147
|
+
p = sub.add_parser("list", help="Sessions with a live lease, and its expiry")
|
|
148
|
+
p.add_argument("--json", action="store_true", help="JSON output")
|
|
149
|
+
p.set_defaults(func=cmd_alerts_list)
|
|
150
|
+
|
|
151
|
+
p = sub.add_parser("reindex", help="Rebuild the subscriber index from records")
|
|
152
|
+
p.add_argument("--json", action="store_true", help="JSON output")
|
|
153
|
+
p.set_defaults(func=cmd_alerts_reindex)
|