agentwire-dev 1.77.0__tar.gz → 1.77.2__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.
Files changed (713) hide show
  1. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/PKG-INFO +3 -3
  2. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/README.md +1 -1
  3. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/RELEASING.md +1 -1
  4. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/__init__.py +1 -1
  5. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/core.py +10 -5
  6. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/portal_cli.py +110 -3
  7. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/safety/rule_baselines.json +2 -1
  8. agentwire_dev-1.77.2/corpus/cases/path_spelling.yaml +5791 -0
  9. agentwire_dev-1.77.2/corpus/cases/relative_paths.yaml +296 -0
  10. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/corpus/golden/effective_rules.json +16 -1
  11. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/corpus/golden/snapshot.json +10204 -2824
  12. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/corpus/schema.json +1 -0
  13. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/deployment/remote-access.md +18 -0
  14. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/internals/damage-control.md +87 -0
  15. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/__init__.py +1 -1
  16. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/engine.py +121 -28
  17. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/core.json +15 -0
  18. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/core.yaml +20 -0
  19. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/pyproject.toml +1 -1
  20. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/corpus_runner.py +1 -1
  21. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_golden_snapshot.py +1 -1
  22. agentwire_dev-1.77.2/tests/unit/test_path_spelling.py +54 -0
  23. agentwire_dev-1.77.2/tests/unit/test_portal_pair_url.py +64 -0
  24. agentwire_dev-1.77.2/tests/unit/test_relative_path_operands.py +127 -0
  25. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/.agentwire.yml.example +0 -0
  26. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/.claude/commands/handoff.md +0 -0
  27. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/.claude/skills/wiki/SKILL.md +0 -0
  28. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/.github/FUNDING.yml +0 -0
  29. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  30. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  31. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/.github/ISSUE_TEMPLATE/question.md +0 -0
  32. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  33. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/.github/workflows/pytest.yml +0 -0
  34. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/.github/workflows/ruff.yml +0 -0
  35. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/.github/workflows/security.yml +0 -0
  36. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/.github/workflows/tts-smoke.yml +0 -0
  37. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/.gitignore +0 -0
  38. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/AGENTS.md +0 -0
  39. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/CODE_OF_CONDUCT.md +0 -0
  40. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/CONTRIBUTING.md +0 -0
  41. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/Dockerfile.local +0 -0
  42. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/LICENSE +0 -0
  43. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/SECURITY.md +0 -0
  44. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/SPONSORS.md +0 -0
  45. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/__main__.py +0 -0
  46. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/agents/__init__.py +0 -0
  47. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/agents/base.py +0 -0
  48. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/agents/tmux.py +0 -0
  49. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/auth_expired.py +0 -0
  50. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/background_tasks.py +0 -0
  51. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/beta.py +0 -0
  52. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/cached_status.py +0 -0
  53. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/channels/__init__.py +0 -0
  54. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/channels/base.py +0 -0
  55. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/channels/email.py +0 -0
  56. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/channels/push.py +0 -0
  57. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/channels/quo.py +0 -0
  58. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/channels_cli.py +0 -0
  59. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/chrome_tabs.py +0 -0
  60. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/claude_settings.py +0 -0
  61. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/cohort.py +0 -0
  62. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/completion.py +0 -0
  63. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/config.py +0 -0
  64. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/config_cli.py +0 -0
  65. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/council/__init__.py +0 -0
  66. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/council/cli.py +0 -0
  67. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/council/inbox.py +0 -0
  68. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/council/minutes.py +0 -0
  69. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/council/state.py +0 -0
  70. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/council/view.py +0 -0
  71. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/devices.py +0 -0
  72. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/diff_cli.py +0 -0
  73. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/doctor_cli.py +0 -0
  74. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/doctor_voice.py +0 -0
  75. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/ensure_cli.py +0 -0
  76. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/env_loader.py +0 -0
  77. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/fetch.py +0 -0
  78. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/handoff/__init__.py +0 -0
  79. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/handoff/git_state.py +0 -0
  80. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/handoff/instructions.py +0 -0
  81. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/handoff/parser.py +0 -0
  82. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/handoff/renderer.py +0 -0
  83. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/handoff/schema.py +0 -0
  84. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/handoff_cli.py +0 -0
  85. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/history.py +0 -0
  86. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/history_cli.py +0 -0
  87. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/history_migrate.py +0 -0
  88. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/hooks/__init__.py +0 -0
  89. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/hooks/agentwire-permission.sh +0 -0
  90. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/hooks/idle-handler.sh +0 -0
  91. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/hooks/outcome_logger.py +0 -0
  92. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/hooks/queue-processor.sh +0 -0
  93. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/hooks_cli.py +0 -0
  94. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/inbox.py +0 -0
  95. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/limits_cli.py +0 -0
  96. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/listen.py +0 -0
  97. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/locking.py +0 -0
  98. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/machine_cli.py +0 -0
  99. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/mcp_channels.py +0 -0
  100. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/mcp_chrome.py +0 -0
  101. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/mcp_cli.py +0 -0
  102. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/mcp_core.py +0 -0
  103. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/mcp_council.py +0 -0
  104. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/mcp_desktop.py +0 -0
  105. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/mcp_handoff.py +0 -0
  106. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/mcp_history.py +0 -0
  107. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/mcp_listen.py +0 -0
  108. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/mcp_lock.py +0 -0
  109. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/mcp_machine.py +0 -0
  110. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/mcp_msg.py +0 -0
  111. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/mcp_notify.py +0 -0
  112. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/mcp_pane.py +0 -0
  113. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/mcp_projects.py +0 -0
  114. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/mcp_scheduler.py +0 -0
  115. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/mcp_scratchpad.py +0 -0
  116. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/mcp_server.py +0 -0
  117. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/mcp_services.py +0 -0
  118. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/mcp_session.py +0 -0
  119. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/mcp_status.py +0 -0
  120. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/mcp_task.py +0 -0
  121. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/mcp_tunnels.py +0 -0
  122. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/mcp_voice.py +0 -0
  123. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/mcp_wiki.py +0 -0
  124. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/mcp_worktree.py +0 -0
  125. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/msg_cli.py +0 -0
  126. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/network.py +0 -0
  127. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/notify_cli.py +0 -0
  128. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/onboarding.py +0 -0
  129. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/palette_cli.py +0 -0
  130. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/pane_cli.py +0 -0
  131. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/pane_manager.py +0 -0
  132. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/playback_lane.py +0 -0
  133. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/project_config.py +0 -0
  134. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/projects.py +0 -0
  135. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/prompt_router.py +0 -0
  136. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/prompts_cli.py +0 -0
  137. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/push_cli.py +0 -0
  138. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/push_store.py +0 -0
  139. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/repo_cli.py +0 -0
  140. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/research.py +0 -0
  141. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/restart_cli.py +0 -0
  142. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/role_prompts.py +0 -0
  143. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/roles/__init__.py +0 -0
  144. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/roles/agentwire.md +0 -0
  145. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/roles/anchor.md +0 -0
  146. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/roles/chatbot.md +0 -0
  147. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/roles/contributor.md +0 -0
  148. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/roles/correspondent.md +0 -0
  149. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/roles/council-brain.md +0 -0
  150. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/roles/council-conscience.md +0 -0
  151. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/roles/council-critic.md +0 -0
  152. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/roles/council-devils-advocate.md +0 -0
  153. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/roles/council-gut.md +0 -0
  154. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/roles/council-historian.md +0 -0
  155. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/roles/council-member.md +0 -0
  156. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/roles/council-orchestrator.md +0 -0
  157. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/roles/init.md +0 -0
  158. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/roles/notifications.md +0 -0
  159. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/roles/orchestrator.md +0 -0
  160. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/roles/reviewer-worktree.md +0 -0
  161. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/roles/reviewer.md +0 -0
  162. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/roles/shared-checkout.md +0 -0
  163. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/roles/soul.md +0 -0
  164. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/roles/task-runner.md +0 -0
  165. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/roles/voice.md +0 -0
  166. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/roles/worker-worktree.md +0 -0
  167. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/roles/worker.md +0 -0
  168. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/roles_cli.py +0 -0
  169. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/routes/__init__.py +0 -0
  170. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/routes/artifacts.py +0 -0
  171. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/routes/config.py +0 -0
  172. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/routes/council.py +0 -0
  173. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/routes/desktop.py +0 -0
  174. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/routes/history.py +0 -0
  175. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/routes/machines.py +0 -0
  176. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/routes/notify.py +0 -0
  177. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/routes/palette.py +0 -0
  178. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/routes/permission.py +0 -0
  179. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/routes/projects.py +0 -0
  180. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/routes/push.py +0 -0
  181. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/routes/safety.py +0 -0
  182. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/routes/scheduler.py +0 -0
  183. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/routes/scratchpad.py +0 -0
  184. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/routes/sessions.py +0 -0
  185. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/routes/sessions_admin.py +0 -0
  186. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/routes/voice.py +0 -0
  187. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/safety/__init__.py +0 -0
  188. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/safety/audit.py +0 -0
  189. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/safety/lint.py +0 -0
  190. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/safety/provenance.py +0 -0
  191. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/safety/residuals.py +0 -0
  192. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/safety/rules/agentwire-control-plane.json +0 -0
  193. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/safety/rules/agentwire-control-plane.yaml +0 -0
  194. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/safety/rules/agentwire-core.json +0 -0
  195. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/safety/rules/agentwire-core.yaml +0 -0
  196. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/safety/rules/agentwire-mcp-tools.json +0 -0
  197. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/safety/rules/agentwire-mcp-tools.yaml +0 -0
  198. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/safety/rules/agentwire-outbound.json +0 -0
  199. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/safety/rules/agentwire-outbound.yaml +0 -0
  200. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/safety/rules/agentwire.json +0 -0
  201. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/safety/rules/agentwire.yaml +0 -0
  202. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/safety/suggest.py +0 -0
  203. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/safety_cli.py +0 -0
  204. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/safety_commands.py +0 -0
  205. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/safety_ext.py +0 -0
  206. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/safety_migrate.py +0 -0
  207. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/safety_notify.py +0 -0
  208. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/safety_packs_cli.py +0 -0
  209. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/scheduler/__init__.py +0 -0
  210. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/scheduler/dispatch.py +0 -0
  211. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/scheduler/gates.py +0 -0
  212. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/scheduler/loop.py +0 -0
  213. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/scheduler/models.py +0 -0
  214. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/scheduler/report.py +0 -0
  215. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/scheduler/schedule.py +0 -0
  216. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/scheduler/state.py +0 -0
  217. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/scheduler/zombie.py +0 -0
  218. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/scheduler_cli.py +0 -0
  219. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/scratchpad.py +0 -0
  220. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/security.py +0 -0
  221. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/send_cli.py +0 -0
  222. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/sent_ledger.py +0 -0
  223. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/server.py +0 -0
  224. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/services.py +0 -0
  225. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/session_cli.py +0 -0
  226. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/session_context.py +0 -0
  227. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/session_ready.py +0 -0
  228. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/session_state.py +0 -0
  229. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/ssh.py +0 -0
  230. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/agentwire-splash-logo-layers--agentwire-text.png +0 -0
  231. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/agentwire-splash-logo-layers--echo-claw-fg.png +0 -0
  232. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/agentwire-splash-logo-layers--echo.png +0 -0
  233. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/agentwire-splash-logo-layers--telephone.png +0 -0
  234. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/agentwire-splash-logo-layers--tree.png +0 -0
  235. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/announcements.json +0 -0
  236. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/apple-touch-icon.png +0 -0
  237. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/css/desktop.css +0 -0
  238. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/css/mobile.css +0 -0
  239. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/favicon-32.png +0 -0
  240. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/favicon-64.png +0 -0
  241. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/icons/sessions/bear.webp +0 -0
  242. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/icons/sessions/cat.webp +0 -0
  243. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/icons/sessions/crown.webp +0 -0
  244. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/icons/sessions/custom/agentwire-portal.webp +0 -0
  245. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/icons/sessions/custom/agentwire-tts.webp +0 -0
  246. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/icons/sessions/custom/agentwire.webp +0 -0
  247. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/icons/sessions/deer.webp +0 -0
  248. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/icons/sessions/drone.webp +0 -0
  249. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/icons/sessions/eagle.webp +0 -0
  250. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/icons/sessions/fox.webp +0 -0
  251. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/icons/sessions/hawk.webp +0 -0
  252. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/icons/sessions/horse.webp +0 -0
  253. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/icons/sessions/lion.webp +0 -0
  254. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/icons/sessions/rabbit.webp +0 -0
  255. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/icons/sessions/robot.webp +0 -0
  256. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/icons/sessions/tiger.webp +0 -0
  257. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/icons/sessions/wolf.webp +0 -0
  258. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/img/icon-192.png +0 -0
  259. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/img/icon-512.png +0 -0
  260. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/.gitkeep +0 -0
  261. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/announcement-modal.js +0 -0
  262. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/api.js +0 -0
  263. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/artifact-window.js +0 -0
  264. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/card-terminal.js +0 -0
  265. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/collage.js +0 -0
  266. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/command-palette.js +0 -0
  267. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/council-window.js +0 -0
  268. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/dead-key-residue.js +0 -0
  269. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/desktop-manager.js +0 -0
  270. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/desktop.js +0 -0
  271. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/help-modal.js +0 -0
  272. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/hotkeys.js +0 -0
  273. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/icon-manager.js +0 -0
  274. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/lineage.js +0 -0
  275. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/mobile.js +0 -0
  276. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/notification-prefs.js +0 -0
  277. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/notifications-panel.js +0 -0
  278. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/ptt.js +0 -0
  279. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/push-client.js +0 -0
  280. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/review-window.js +0 -0
  281. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/safety-shared.js +0 -0
  282. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/safety-window.js +0 -0
  283. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/scratchpad.js +0 -0
  284. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/service-classification.js +0 -0
  285. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/session-hud-controller.js +0 -0
  286. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/session-hud-notices.js +0 -0
  287. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/session-hud-spawn.js +0 -0
  288. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/session-hud.js +0 -0
  289. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/session-id.js +0 -0
  290. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/session-window.js +0 -0
  291. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/shortcuts.js +0 -0
  292. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/sidebar/artifacts-section.js +0 -0
  293. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/sidebar/config-section.js +0 -0
  294. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/sidebar/council-section.js +0 -0
  295. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/sidebar/machines-section.js +0 -0
  296. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/sidebar/projects-section.js +0 -0
  297. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/sidebar/safety-section.js +0 -0
  298. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/sidebar/scheduler-section.js +0 -0
  299. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/sidebar/services-section.js +0 -0
  300. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/sidebar/sessions-section.js +0 -0
  301. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/sidebar.js +0 -0
  302. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/spawn-ghost.js +0 -0
  303. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/taskbar-persist.js +0 -0
  304. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/terminal-font-prefs.js +0 -0
  305. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/terminal-pane.js +0 -0
  306. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/tile-manager.js +0 -0
  307. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/toast.js +0 -0
  308. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/token-modal.js +0 -0
  309. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/topology-render.js +0 -0
  310. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/utils/ansi.js +0 -0
  311. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/utils/rich-text.js +0 -0
  312. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/utils/swipe.js +0 -0
  313. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/voice/audio-unlock.js +0 -0
  314. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/voice/autosend-prefs.js +0 -0
  315. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/voice/browser-stt.js +0 -0
  316. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/voice/browser-tts.js +0 -0
  317. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/voice/jargon.js +0 -0
  318. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/voice/prompt.js +0 -0
  319. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/winbox.bundle.min.js +0 -0
  320. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/js/workspace-window.js +0 -0
  321. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/manifest.webmanifest +0 -0
  322. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/service-worker.js +0 -0
  323. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/static/topology-harness.html +0 -0
  324. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/stt/__init__.py +0 -0
  325. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/stt/base.py +0 -0
  326. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/stt/cloud.py +0 -0
  327. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/stt/engine.py +0 -0
  328. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/stt/local.py +0 -0
  329. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/stt/server_backend.py +0 -0
  330. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/stt/stt_server.py +0 -0
  331. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/system_cli.py +0 -0
  332. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/tabs_cli.py +0 -0
  333. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/tasks.py +0 -0
  334. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/tasks_cli.py +0 -0
  335. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/templates/__init__.py +0 -0
  336. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/templates/base.html +0 -0
  337. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/templates/council/minutes.html.j2 +0 -0
  338. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/templates/desktop.html +0 -0
  339. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/templates/email_notification.html +0 -0
  340. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/templates/handoff/show-the-story.html.j2 +0 -0
  341. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/templates/handoff/theme.css.j2 +0 -0
  342. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/templates/mobile.html +0 -0
  343. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/templates/pair.html +0 -0
  344. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/templates/statusline.sh +0 -0
  345. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/templates/tmux.conf +0 -0
  346. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/templating.py +0 -0
  347. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/tts/__init__.py +0 -0
  348. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/tts/audio.py +0 -0
  349. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/tts/base.py +0 -0
  350. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/tts/engines/__init__.py +0 -0
  351. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/tts/engines/chatterbox.py +0 -0
  352. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/tts/engines/kokoro.py +0 -0
  353. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/tts/engines/zonos.py +0 -0
  354. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/tts/kokoro_server.py +0 -0
  355. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/tts/local.py +0 -0
  356. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/tts/registry.py +0 -0
  357. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/tts_cli.py +0 -0
  358. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/tts_server.py +0 -0
  359. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/tunnels.py +0 -0
  360. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/tunnels_cli.py +0 -0
  361. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/usage_limit.py +0 -0
  362. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/utils/__init__.py +0 -0
  363. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/utils/chunker.py +0 -0
  364. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/utils/event_log.py +0 -0
  365. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/utils/file_io.py +0 -0
  366. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/utils/paths.py +0 -0
  367. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/utils/speech.py +0 -0
  368. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/utils/subprocess.py +0 -0
  369. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/validation.py +0 -0
  370. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/voice_status.py +0 -0
  371. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/wait_cli.py +0 -0
  372. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/wiki.py +0 -0
  373. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/wiki_audit.py +0 -0
  374. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/wiki_cli.py +0 -0
  375. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/worktree.py +0 -0
  376. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/worktree_cli.py +0 -0
  377. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/agentwire/worktree_registry.py +0 -0
  378. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/corpus/cases/bypass.yaml +0 -0
  379. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/corpus/cases/control_plane.yaml +0 -0
  380. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/corpus/golden/harvested.json +0 -0
  381. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/corpus/golden/rule_ids.json +0 -0
  382. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/decisions/obsidian-second-brain.md +0 -0
  383. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/design/session-card-fields.md +0 -0
  384. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/design/session-card-recommendation.md +0 -0
  385. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/logo.png +0 -0
  386. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/INDEX.md +0 -0
  387. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/architecture.md +0 -0
  388. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/auth-expired.md +0 -0
  389. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/briefing-mode.md +0 -0
  390. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/communication/channels.md +0 -0
  391. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/communication/hammerspoon.md +0 -0
  392. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/communication/handoff.md +0 -0
  393. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/concepts.md +0 -0
  394. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/council.md +0 -0
  395. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/deployment/remote-machines.md +0 -0
  396. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/glossary.md +0 -0
  397. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/integrations/gws-google-workspace-cli.md +0 -0
  398. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/internals/parallel-refactor.md +0 -0
  399. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/internals/portal.md +0 -0
  400. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/internals/session-topology.md +0 -0
  401. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/internals/shell-escaping.md +0 -0
  402. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/internals/troubleshooting.md +0 -0
  403. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/internals/window-collage.md +0 -0
  404. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/quickstart.md +0 -0
  405. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/research/briefing-mode-feasibility.md +0 -0
  406. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/research/orchestration-transport-alternatives.md +0 -0
  407. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/scheduling/scheduled-workloads.md +0 -0
  408. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/security/damage-control-hardening.md +0 -0
  409. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/security/pip-audit.md +0 -0
  410. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/security/remote-access-hardening.md +0 -0
  411. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/security/secrets.md +0 -0
  412. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/services.md +0 -0
  413. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/sessions/claude-code-auto-mode.md +0 -0
  414. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/sessions/conversation-identity.md +0 -0
  415. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/sessions/fan-out-cohorts.md +0 -0
  416. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/sessions/heal-line-count-cliff.md +0 -0
  417. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/sessions/helper-sessions.md +0 -0
  418. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/sessions/messaging.md +0 -0
  419. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/sessions/prompt-routing.md +0 -0
  420. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/sessions/window-sizing.md +0 -0
  421. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/sessions/worktree-sessions.md +0 -0
  422. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/usage-limit-recovery.md +0 -0
  423. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/voice/shim-contract.md +0 -0
  424. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/voice/stt-cloud.md +0 -0
  425. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/voice/stt-self-hosted.md +0 -0
  426. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/docs/wiki/voice/tts-self-hosted.md +0 -0
  427. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/README.md +0 -0
  428. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/docs/coverage.md +0 -0
  429. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/docs/extending.md +0 -0
  430. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/docs/rule-authoring.md +0 -0
  431. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/docs/threat-model.md +0 -0
  432. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/pyproject.toml +0 -0
  433. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/__main__.py +0 -0
  434. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/adapter.py +0 -0
  435. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/audit.py +0 -0
  436. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/breakglass.py +0 -0
  437. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/claude_code.py +0 -0
  438. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/cli.py +0 -0
  439. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/groups.py +0 -0
  440. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/harness_config.py +0 -0
  441. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/hook.py +0 -0
  442. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/install.py +0 -0
  443. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/packs.py +0 -0
  444. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/policy.py +0 -0
  445. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/profile.py +0 -0
  446. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/aws.json +0 -0
  447. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/aws.yaml +0 -0
  448. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/cloud-hosting.json +0 -0
  449. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/cloud-hosting.yaml +0 -0
  450. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/containers.json +0 -0
  451. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/containers.yaml +0 -0
  452. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/control-plane.json +0 -0
  453. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/control-plane.yaml +0 -0
  454. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/databases.json +0 -0
  455. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/databases.yaml +0 -0
  456. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/firebase.json +0 -0
  457. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/firebase.yaml +0 -0
  458. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/gcp.json +0 -0
  459. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/gcp.yaml +0 -0
  460. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/git.json +0 -0
  461. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/git.yaml +0 -0
  462. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/infrastructure.json +0 -0
  463. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/infrastructure.yaml +0 -0
  464. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/mcp-tools.json +0 -0
  465. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/mcp-tools.yaml +0 -0
  466. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/outbound.json +0 -0
  467. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/outbound.yaml +0 -0
  468. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/payloads.json +0 -0
  469. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/payloads.yaml +0 -0
  470. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/publish.json +0 -0
  471. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/publish.yaml +0 -0
  472. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/registry.json +0 -0
  473. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/registry.yaml +0 -0
  474. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/remote.json +0 -0
  475. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/remote.yaml +0 -0
  476. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/tmux.json +0 -0
  477. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/rules/tmux.yaml +0 -0
  478. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/ruleset.py +0 -0
  479. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/tooldefs/aws.json +0 -0
  480. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/tooldefs/aws.yaml +0 -0
  481. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/tooldefs/docker.json +0 -0
  482. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/tooldefs/docker.yaml +0 -0
  483. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/tooldefs/gcp.json +0 -0
  484. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/tooldefs/gcp.yaml +0 -0
  485. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/tooldefs/gh.json +0 -0
  486. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/tooldefs/gh.yaml +0 -0
  487. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/tooldefs/git.json +0 -0
  488. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/tooldefs/git.yaml +0 -0
  489. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/tooldefs/kubectl.json +0 -0
  490. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/tooldefs/kubectl.yaml +0 -0
  491. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/tooldefs/npm.json +0 -0
  492. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/tooldefs/npm.yaml +0 -0
  493. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/tooldefs/terraform.json +0 -0
  494. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/tooldefs/terraform.yaml +0 -0
  495. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/tooldefs/uv.json +0 -0
  496. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/src/damage_control/tooldefs/uv.yaml +0 -0
  497. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/tools/build_rules_json.py +0 -0
  498. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/packages/damage-control-dev/tools/coverage_matrix.py +0 -0
  499. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/conftest.py +0 -0
  500. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/e2e/test_portal_ui.py +0 -0
  501. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/fixtures/audio_unlock_harness.mjs +0 -0
  502. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/fixtures/background_tasks/pane_30_shell.txt +0 -0
  503. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/fixtures/background_tasks/pane_80_agent.txt +0 -0
  504. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/fixtures/background_tasks/pane_80_done.txt +0 -0
  505. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/fixtures/background_tasks/pane_80_interrupted.txt +0 -0
  506. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/fixtures/background_tasks/pane_80_monitor.txt +0 -0
  507. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/fixtures/background_tasks/pane_80_quoted_footer.txt +0 -0
  508. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/fixtures/background_tasks/pane_80_second_notice.txt +0 -0
  509. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/fixtures/background_tasks/pane_80_shell.txt +0 -0
  510. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/fixtures/background_tasks/pane_80_shell_and_monitor.txt +0 -0
  511. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/fixtures/background_tasks/transcript_bash_done.jsonl +0 -0
  512. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/fixtures/background_tasks/transcript_bash_pending.jsonl +0 -0
  513. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/fixtures/background_tasks/transcript_monitor_done.jsonl +0 -0
  514. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/fixtures/background_tasks/transcript_monitor_events.jsonl +0 -0
  515. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/fixtures/dc_msg_body_quoting_carriers.txt +0 -0
  516. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/fixtures/hotkeys_harness.mjs +0 -0
  517. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/fixtures/sample_agentwire.yml +0 -0
  518. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/fixtures/sample_config.yaml +0 -0
  519. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/fixtures/sample_scheduler.yaml +0 -0
  520. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/fixtures/session_hud_detent_harness.mjs +0 -0
  521. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/fixtures/taskbar_persist_harness.mjs +0 -0
  522. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/fixtures/topology_expand_harness.mjs +0 -0
  523. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/home_guard.py +0 -0
  524. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/integration/test_council_portal.py +0 -0
  525. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/integration/test_scheduler_board.py +0 -0
  526. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/integration/test_send_verified_tmux.py +0 -0
  527. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/integration/test_server_websockets.py +0 -0
  528. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/integration/test_tmux_name_rewrite.py +0 -0
  529. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/integration/test_worktree_cmd.py +0 -0
  530. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_agentwire_rules_layer.py +0 -0
  531. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_announcements.py +0 -0
  532. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_audio_unlock_js.py +0 -0
  533. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_audit_attribution.py +0 -0
  534. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_audit_outcomes.py +0 -0
  535. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_auth_expired.py +0 -0
  536. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_auth_expired_dispatch.py +0 -0
  537. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_background_tasks.py +0 -0
  538. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_background_tasks_review.py +0 -0
  539. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_beta_flag.py +0 -0
  540. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_block_rows_carry_an_id.py +0 -0
  541. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_brace_expansion_zero_access.py +0 -0
  542. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_breakglass.py +0 -0
  543. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_buddy_removal_keeps.py +0 -0
  544. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_build_agent_command.py +0 -0
  545. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_channels.py +0 -0
  546. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_chrome_tabs.py +0 -0
  547. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_claude_settings.py +0 -0
  548. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_cli_commands.py +0 -0
  549. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_cli_output.py +0 -0
  550. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_cli_smoke.py +0 -0
  551. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_cli_stderr_clean.py +0 -0
  552. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_cohort.py +0 -0
  553. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_config.py +0 -0
  554. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_config_cli.py +0 -0
  555. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_control_plane_protection.py +0 -0
  556. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_corpus.py +0 -0
  557. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_council_cli.py +0 -0
  558. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_council_inbox.py +0 -0
  559. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_council_minutes.py +0 -0
  560. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_council_state.py +0 -0
  561. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_council_view.py +0 -0
  562. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_coverage_matrix.py +0 -0
  563. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_damage_control_bypass.py +0 -0
  564. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_damage_control_delete_recursive.py +0 -0
  565. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_damage_control_hooks.py +0 -0
  566. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_damage_control_pin.py +0 -0
  567. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_dangling_worktrees.py +0 -0
  568. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_dc_install.py +0 -0
  569. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_dc_policy_packs.py +0 -0
  570. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_dc_profile_isolation.py +0 -0
  571. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_devices.py +0 -0
  572. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_diff_cli.py +0 -0
  573. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_doctor_orphaned_history.py +0 -0
  574. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_doctor_scheduler_staleness.py +0 -0
  575. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_doctor_secrets_perms.py +0 -0
  576. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_doctor_task_migration.py +0 -0
  577. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_doctor_voice.py +0 -0
  578. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_engine_standalone.py +0 -0
  579. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_ensure_shared_dir.py +0 -0
  580. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_ensure_verified_prompt.py +0 -0
  581. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_env_loader.py +0 -0
  582. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_event_log.py +0 -0
  583. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_extension_points.py +0 -0
  584. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_guarded_launch_command.py +0 -0
  585. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_handoff_git_state.py +0 -0
  586. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_handoff_instructions.py +0 -0
  587. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_handoff_parser.py +0 -0
  588. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_handoff_renderer.py +0 -0
  589. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_helper_session.py +0 -0
  590. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_heredoc_marker_liveness.py +0 -0
  591. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_history.py +0 -0
  592. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_history_migrate.py +0 -0
  593. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_history_migrate_cli.py +0 -0
  594. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_history_resume_name.py +0 -0
  595. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_hook_fail_closed.py +0 -0
  596. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_hook_fail_closed_matrix.py +0 -0
  597. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_hook_link_guard.py +0 -0
  598. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_hook_python_floor.py +0 -0
  599. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_hook_subprocess.py +0 -0
  600. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_hooks_install.py +0 -0
  601. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_hotkeys_js.py +0 -0
  602. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_idle_handler.py +0 -0
  603. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_idle_nag.py +0 -0
  604. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_inbox.py +0 -0
  605. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_init_command.py +0 -0
  606. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_install_parity.py +0 -0
  607. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_launch_line_reentry.py +0 -0
  608. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_launch_via_env.py +0 -0
  609. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_limits_tick_isolation.py +0 -0
  610. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_locking.py +0 -0
  611. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_mcp_nonblocking.py +0 -0
  612. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_mcp_server.py +0 -0
  613. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_mcp_tool_policy.py +0 -0
  614. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_mcp_tools_args.py +0 -0
  615. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_msg_cli.py +0 -0
  616. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_notify_cli.py +0 -0
  617. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_onboarding_reinit.py +0 -0
  618. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_owner_only_writes.py +0 -0
  619. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_palette_cli.py +0 -0
  620. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_path_case_folding.py +0 -0
  621. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_payload_position.py +0 -0
  622. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_pending_message_visibility.py +0 -0
  623. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_playback_lane.py +0 -0
  624. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_policy_ladder.py +0 -0
  625. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_portal_api.py +0 -0
  626. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_posture_default.py +0 -0
  627. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_powershell_matcher.py +0 -0
  628. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_project_config.py +0 -0
  629. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_projects_registry.py +0 -0
  630. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_prompt_router.py +0 -0
  631. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_prompt_router_dedup.py +0 -0
  632. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_prompt_router_resume.py +0 -0
  633. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_prose_operands.py +0 -0
  634. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_push.py +0 -0
  635. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_rebuild_guard.py +0 -0
  636. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_rebuild_uv_lock.py +0 -0
  637. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_remote_session_record.py +0 -0
  638. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_repo_cli.py +0 -0
  639. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_restart_cli.py +0 -0
  640. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_rich_text_js.py +0 -0
  641. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_rm_recoverable.py +0 -0
  642. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_role_prompt_retention.py +0 -0
  643. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_role_prompt_sweep_wiring.py +0 -0
  644. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_roles.py +0 -0
  645. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_routes_snapshot.py +0 -0
  646. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_rule_files_load.py +0 -0
  647. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_rule_ids_pinned.py +0 -0
  648. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_rules_json_in_sync.py +0 -0
  649. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_safe_cwd.py +0 -0
  650. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_safety_deployment.py +0 -0
  651. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_safety_ext.py +0 -0
  652. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_safety_groups.py +0 -0
  653. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_safety_install.py +0 -0
  654. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_safety_migrate.py +0 -0
  655. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_safety_notify.py +0 -0
  656. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_safety_packs.py +0 -0
  657. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_say_lane.py +0 -0
  658. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_scan_budget.py +0 -0
  659. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_scheduler.py +0 -0
  660. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_scheduler_liveness.py +0 -0
  661. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_scheduler_zombie.py +0 -0
  662. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_scratchpad.py +0 -0
  663. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_security.py +0 -0
  664. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_sed_script_is_data.py +0 -0
  665. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_sent_ledger.py +0 -0
  666. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_server_async.py +0 -0
  667. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_services.py +0 -0
  668. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_services_command.py +0 -0
  669. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_session_context.py +0 -0
  670. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_session_created_by_env.py +0 -0
  671. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_session_hud_detent_js.py +0 -0
  672. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_session_metadata_ssot.py +0 -0
  673. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_session_metadata_write.py +0 -0
  674. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_session_ready.py +0 -0
  675. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_session_state.py +0 -0
  676. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_shared_dir_guard.py +0 -0
  677. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_shim_selfheal.py +0 -0
  678. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_skill_install.py +0 -0
  679. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_speech_tags.py +0 -0
  680. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_ssh.py +0 -0
  681. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_stt_backend.py +0 -0
  682. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_stt_cloud.py +0 -0
  683. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_stt_engine.py +0 -0
  684. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_task_cli.py +0 -0
  685. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_task_max_duration.py +0 -0
  686. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_taskbar_persist_js.py +0 -0
  687. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_tasks.py +0 -0
  688. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_tasks_cli.py +0 -0
  689. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_templating.py +0 -0
  690. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_terminal_resize.py +0 -0
  691. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_tmux_session_cwd.py +0 -0
  692. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_topology_expand_js.py +0 -0
  693. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_tts_engine_resolution.py +0 -0
  694. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_tts_local.py +0 -0
  695. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_tunnels_probe.py +0 -0
  696. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_unattended_allow.py +0 -0
  697. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_unattended_env_isolation.py +0 -0
  698. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_unattended_scoped_allow.py +0 -0
  699. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_usage_limit.py +0 -0
  700. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_voice_assistant_removed.py +0 -0
  701. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_voice_off_and_shim_bind.py +0 -0
  702. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_voice_status.py +0 -0
  703. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_watchdog_stages.py +0 -0
  704. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_wiki.py +0 -0
  705. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_wiki_audit.py +0 -0
  706. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_worktree.py +0 -0
  707. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_worktree_branch_cleanup.py +0 -0
  708. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_worktree_dot_project.py +0 -0
  709. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_worktree_git_truth.py +0 -0
  710. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_worktree_layout.py +0 -0
  711. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_worktree_registry.py +0 -0
  712. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/tests/unit/test_zero_access_member_access.py +0 -0
  713. {agentwire_dev-1.77.0 → agentwire_dev-1.77.2}/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.77.0
3
+ Version: 1.77.2
4
4
  Summary: Multi-session voice web interface for AI coding agents
5
5
  Project-URL: Homepage, https://agentwire.dev
6
6
  Project-URL: Repository, https://github.com/dotdevdotdev/agentwire-dev
@@ -228,7 +228,7 @@ Requires-Dist: aiohttp-jinja2>=1.6
228
228
  Requires-Dist: aiohttp>=3.13.4
229
229
  Requires-Dist: av>=12.0.0
230
230
  Requires-Dist: certifi>=2026.10.23
231
- Requires-Dist: damage-control-dev<0.2,>=0.1.0
231
+ Requires-Dist: damage-control-dev<0.2,>=0.1.3
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'
@@ -377,7 +377,7 @@ The portal binds to loopback (`127.0.0.1`) by default. To access the portal from
377
377
  ```bash
378
378
  agentwire portal token
379
379
  ```
380
- 4. **Connect**: Open `https://<your-machine-ip>:8765` on your phone and enter the token when prompted.
380
+ 4. **Connect**: run `agentwire portal pair` on the host and scan the QR (or open the printed URL) on your phone. The URL follows the bind: with `server.host: 0.0.0.0` it uses your machine's `.local` name or LAN IP, not `localhost`; pick another address with `--url`. Or open `https://<your-machine-ip>:8765` yourself and enter the token.
381
381
 
382
382
  Origin checks reject cross-site browser requests on every bind. Keep the portal on a trusted LAN — never port-forward it or run it on a public-facing VPS. For internet access, use Cloudflare Tunnel + Zero Trust. See [SECURITY.md](SECURITY.md) for details.
383
383
 
@@ -106,7 +106,7 @@ The portal binds to loopback (`127.0.0.1`) by default. To access the portal from
106
106
  ```bash
107
107
  agentwire portal token
108
108
  ```
109
- 4. **Connect**: Open `https://<your-machine-ip>:8765` on your phone and enter the token when prompted.
109
+ 4. **Connect**: run `agentwire portal pair` on the host and scan the QR (or open the printed URL) on your phone. The URL follows the bind: with `server.host: 0.0.0.0` it uses your machine's `.local` name or LAN IP, not `localhost`; pick another address with `--url`. Or open `https://<your-machine-ip>:8765` yourself and enter the token.
110
110
 
111
111
  Origin checks reject cross-site browser requests on every bind. Keep the portal on a trusted LAN — never port-forward it or run it on a public-facing VPS. For internet access, use Cloudflare Tunnel + Zero Trust. See [SECURITY.md](SECURITY.md) for details.
112
112
 
@@ -6,7 +6,7 @@ Every release does **both** a PyPI publish and a GitHub release. The **GitHub re
6
6
 
7
7
  ## Release order (two packages)
8
8
 
9
- `agentwire-dev` depends on `damage-control-dev` (its own PyPI project, engine source in `packages/damage-control-dev/`). `pyproject.toml` pins it to a range — currently `damage-control-dev>=0.1.0,<0.2` — and `tests/unit/test_damage_control_pin.py` fails if the workspace version leaves that range. A checkout resolves the engine from the workspace; a PyPI install resolves it from PyPI. Order matters, because an `agentwire-dev` that names a version PyPI doesn't have yet is uninstallable:
9
+ `agentwire-dev` depends on `damage-control-dev` (its own PyPI project, engine source in `packages/damage-control-dev/`). `pyproject.toml` pins it to a range — currently `damage-control-dev>=0.1.3,<0.2` — and `tests/unit/test_damage_control_pin.py` fails if the workspace version leaves that range. A checkout resolves the engine from the workspace; a PyPI install resolves it from PyPI. Order matters, because an `agentwire-dev` that names a version PyPI doesn't have yet is uninstallable:
10
10
 
11
11
  1. **Engine changed?** Bump `__version__` in `packages/damage-control-dev/src/damage_control/__init__.py`, merge, then build and publish it **first** (commands in step 3). Skip entirely when the engine didn't change — the existing pin keeps resolving.
12
12
  2. **Pin still admits the engine?** A patch/minor bump inside the range needs no `agentwire-dev` change. A bump outside it (e.g. `0.2.0`) requires widening the range in `pyproject.toml` (`>=0.2.0,<0.3`) in the agentwire PR — the pin test enforces this.
@@ -1,3 +1,3 @@
1
1
  """AgentWire - Multi-session voice web interface for AI coding agents."""
2
2
 
3
- __version__ = "1.77.0"
3
+ __version__ = "1.77.2"
@@ -1545,17 +1545,22 @@ def format_relative_time(timestamp_ms: int) -> str:
1545
1545
 
1546
1546
  # === Cross-group shared helpers (Phase 0.5 sweep, #495) ===
1547
1547
 
1548
- def _default_portal_url() -> str:
1549
- """Default portal URL — scheme mirrors the typed config's logic: https
1550
- only when server.ssl cert/key are configured AND exist on disk."""
1551
- ssl_cfg = load_config().get("server", {}).get("ssl", {})
1548
+ def _portal_scheme(config: dict) -> str:
1549
+ """Portal scheme — mirrors the typed config's logic: https only when
1550
+ server.ssl cert/key are configured AND exist on disk."""
1551
+ ssl_cfg = config.get("server", {}).get("ssl", {})
1552
1552
  cert, key = ssl_cfg.get("cert"), ssl_cfg.get("key")
1553
1553
  enabled = bool(
1554
1554
  cert and key
1555
1555
  and Path(os.path.expanduser(cert)).exists()
1556
1556
  and Path(os.path.expanduser(key)).exists()
1557
1557
  )
1558
- return f"{'https' if enabled else 'http'}://localhost:8765"
1558
+ return "https" if enabled else "http"
1559
+
1560
+
1561
+ def _default_portal_url() -> str:
1562
+ """Default portal URL (loopback) for this machine's own CLI calls."""
1563
+ return f"{_portal_scheme(load_config())}://localhost:8765"
1559
1564
 
1560
1565
 
1561
1566
  def _run_remote(machine_id: str, command: str) -> subprocess.CompletedProcess:
@@ -10,6 +10,7 @@ and curl helpers travel with this module.
10
10
  from __future__ import annotations
11
11
 
12
12
  import shlex
13
+ import socket
13
14
  import subprocess
14
15
  import sys
15
16
  from pathlib import Path
@@ -17,13 +18,14 @@ from pathlib import Path
17
18
  from .core import (
18
19
  _check_portal_health,
19
20
  _check_tmux_installed,
20
- _default_portal_url,
21
21
  _output_json,
22
+ _portal_scheme,
22
23
  _start_portal_local,
23
24
  get_portal_session_name,
24
25
  load_config,
25
26
  tmux_session_exists,
26
27
  )
28
+ from .security import is_loopback_host
27
29
 
28
30
 
29
31
  def _start_portal_remote(ssh_target: str, machine_id: str, args) -> int:
@@ -333,20 +335,121 @@ def cmd_portal_token(args) -> int:
333
335
  return 0
334
336
 
335
337
 
338
+ def _lan_ipv4_addrs() -> list[str]:
339
+ """Non-loopback IPv4 addresses of this host, primary outbound first.
340
+
341
+ The UDP-connect trick asks the kernel which interface routes outward;
342
+ ``connect`` on a datagram socket sends no packets.
343
+ """
344
+ addrs: list[str] = []
345
+ try:
346
+ with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s:
347
+ s.connect(("192.0.2.1", 9)) # TEST-NET-1: never routed, never sent
348
+ addrs.append(s.getsockname()[0])
349
+ except OSError:
350
+ pass
351
+ try:
352
+ for ip in socket.gethostbyname_ex(socket.gethostname())[2]:
353
+ addrs.append(ip)
354
+ except OSError:
355
+ pass
356
+ seen: list[str] = []
357
+ for ip in addrs:
358
+ if ip not in seen and not ip.startswith("127.") and ip != "0.0.0.0":
359
+ seen.append(ip)
360
+ return seen
361
+
362
+
363
+ def _mdns_hostname(lan_addrs: list[str]) -> str | None:
364
+ """``<host>.local`` when it resolves back to one of this host's addresses."""
365
+ name = socket.gethostname().split(".")[0] + ".local"
366
+ try:
367
+ resolved = {ai[4][0] for ai in socket.getaddrinfo(name, None, socket.AF_INET)}
368
+ except OSError:
369
+ return None
370
+ return name if resolved & set(lan_addrs) else None
371
+
372
+
373
+ def derive_pair_url(
374
+ config: dict,
375
+ *,
376
+ lan_addrs: list[str],
377
+ mdns_host: str | None,
378
+ override: str | None = None,
379
+ ) -> tuple[str, str, list[str]]:
380
+ """Pick the portal base URL a device should open to pair.
381
+
382
+ Returns ``(url, source, alternatives)``. Precedence: ``--url`` override >
383
+ explicit ``portal.url`` > a specific ``server.host`` > (wildcard bind)
384
+ ``.local`` mDNS name > primary LAN IPv4. Loopback binds keep localhost.
385
+ The address lookups are injected so this stays a pure function.
386
+ """
387
+ if override:
388
+ return override.rstrip("/"), "--url", []
389
+ explicit = config.get("portal", {}).get("url")
390
+ if explicit:
391
+ return explicit.rstrip("/"), "portal.url", []
392
+
393
+ server = config.get("server", {})
394
+ host = server.get("host", "127.0.0.1")
395
+ port = server.get("port", 8765)
396
+ scheme = _portal_scheme(config)
397
+
398
+ if is_loopback_host(host):
399
+ return f"{scheme}://localhost:{port}", "loopback bind", []
400
+ if host not in ("0.0.0.0", "::", ""):
401
+ return f"{scheme}://{host}:{port}", "server.host", []
402
+ if mdns_host:
403
+ return f"{scheme}://{mdns_host}:{port}", "mDNS hostname", [
404
+ f"{scheme}://{ip}:{port}" for ip in lan_addrs
405
+ ]
406
+ if not lan_addrs:
407
+ return f"{scheme}://localhost:{port}", "no LAN address found", []
408
+ return f"{scheme}://{lan_addrs[0]}:{port}", "primary LAN address", [
409
+ f"{scheme}://{ip}:{port}" for ip in lan_addrs[1:]
410
+ ]
411
+
412
+
336
413
  def cmd_portal_pair(args) -> int:
337
414
  """Create a short-lived pairing code (+ QR) for a new device."""
338
415
  from .devices import PAIRING_TTL_SECONDS, create_pairing
339
416
 
340
- pairing = create_pairing(name=getattr(args, "name", None) or "device")
417
+ config = load_config()
418
+ lan_addrs = _lan_ipv4_addrs()
419
+ portal_url, source, alternatives = derive_pair_url(
420
+ config,
421
+ lan_addrs=lan_addrs,
422
+ mdns_host=_mdns_hostname(lan_addrs),
423
+ override=getattr(args, "url", None),
424
+ )
341
425
 
342
- portal_url = _default_portal_url()
426
+ pairing = create_pairing(name=getattr(args, "name", None) or "device")
343
427
  pair_url = f"{portal_url}/pair?code={pairing.code}"
344
428
  ttl_min = PAIRING_TTL_SECONDS // 60
345
429
 
430
+ if getattr(args, "json", False):
431
+ _output_json({
432
+ "success": True,
433
+ "code": pairing.code,
434
+ "name": pairing.name,
435
+ "expires_in_seconds": PAIRING_TTL_SECONDS,
436
+ "portal_url": portal_url,
437
+ "url_source": source,
438
+ "pair_url": pair_url,
439
+ "alternatives": alternatives,
440
+ })
441
+ return 0
442
+
346
443
  print(f"Pairing code: {pairing.code}")
347
444
  print(f" Name: {pairing.name}")
348
445
  print(f" Expires in {ttl_min} minutes.")
349
446
  print()
447
+ print(f"Using {portal_url} ({source}).")
448
+ if alternatives:
449
+ print("Other addresses (pick one with --url):")
450
+ for alt in alternatives:
451
+ print(f" {alt}")
452
+ print()
350
453
  print("On the device, open:")
351
454
  print(f" {pair_url}")
352
455
  print("or visit", f"{portal_url}/pair", "and enter the code.")
@@ -497,6 +600,10 @@ def register_portal_parser(subparsers) -> None:
497
600
  "pair", help="Pair a new device (prints a short-lived code + QR)"
498
601
  )
499
602
  portal_pair.add_argument("--name", help="Friendly device name (e.g. 'phone')")
603
+ portal_pair.add_argument(
604
+ "--url", help="Portal base URL the device should open (overrides auto-detection)"
605
+ )
606
+ portal_pair.add_argument("--json", action="store_true", help="Output as JSON")
500
607
  portal_pair.set_defaults(func=cmd_portal_pair)
501
608
 
502
609
  # portal devices — list paired devices
@@ -53,7 +53,8 @@
53
53
  "c0ded80e7d544f10c9db2b831d10fd0469057d08b1737eaf3b7ce7485ba0ad17",
54
54
  "c10d81a50fe5bf2b4d83a37bc9e58f22d2a8ea5265cd0757d6bceb38702481dd",
55
55
  "d49e33dfeb72a8257e1853bdb4e11719610b41fb739979f439c4e08b53648705",
56
- "d7323ac7f5a4f23d1b6a7455c8666a26abca2cfe248e0b9161f93346abdce82a"
56
+ "d7323ac7f5a4f23d1b6a7455c8666a26abca2cfe248e0b9161f93346abdce82a",
57
+ "f399f899aac4bf0008d81c9c9b7f3a6f12927aec5a31f4d1d0b135bec4d71f67"
57
58
  ],
58
59
  "databases.yaml": [
59
60
  "0547cffb489a750505941ba773a4be03dccc8217bb358aee12cf2cff663190d3",