agentwire-dev 1.62.0__tar.gz → 1.63.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.
Files changed (500) hide show
  1. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/PKG-INFO +1 -1
  2. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/__init__.py +1 -1
  3. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/css/desktop.css +106 -9
  4. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/command-palette.js +5 -0
  5. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/desktop.js +1 -1
  6. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/session-hud-controller.js +57 -0
  7. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/session-hud.js +21 -9
  8. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/shortcuts.js +2 -1
  9. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/sidebar/sessions-section.js +6 -0
  10. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/topology-render.js +183 -5
  11. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/internals/session-topology.md +3 -3
  12. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/.agentwire.yml.example +0 -0
  13. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/.claude/commands/handoff.md +0 -0
  14. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/.claude/skills/wiki/SKILL.md +0 -0
  15. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/.github/FUNDING.yml +0 -0
  16. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  17. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  18. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/.github/ISSUE_TEMPLATE/question.md +0 -0
  19. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  20. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/.github/workflows/pytest.yml +0 -0
  21. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/.github/workflows/ruff.yml +0 -0
  22. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/.github/workflows/security.yml +0 -0
  23. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/.github/workflows/tts-smoke.yml +0 -0
  24. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/.gitignore +0 -0
  25. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/AGENTS.md +0 -0
  26. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/CODE_OF_CONDUCT.md +0 -0
  27. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/CONTRIBUTING.md +0 -0
  28. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/Dockerfile.local +0 -0
  29. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/LICENSE +0 -0
  30. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/README.md +0 -0
  31. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/RELEASING.md +0 -0
  32. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/SECURITY.md +0 -0
  33. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/SPONSORS.md +0 -0
  34. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/__main__.py +0 -0
  35. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/agents/__init__.py +0 -0
  36. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/agents/base.py +0 -0
  37. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/agents/tmux.py +0 -0
  38. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/cached_status.py +0 -0
  39. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/channels/__init__.py +0 -0
  40. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/channels/base.py +0 -0
  41. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/channels/email.py +0 -0
  42. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/channels/push.py +0 -0
  43. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/channels/quo.py +0 -0
  44. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/channels_cli.py +0 -0
  45. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/chrome_tabs.py +0 -0
  46. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/completion.py +0 -0
  47. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/config.py +0 -0
  48. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/config_cli.py +0 -0
  49. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/core.py +0 -0
  50. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/council/__init__.py +0 -0
  51. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/council/cli.py +0 -0
  52. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/council/inbox.py +0 -0
  53. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/council/minutes.py +0 -0
  54. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/council/state.py +0 -0
  55. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/council/view.py +0 -0
  56. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/devices.py +0 -0
  57. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/diff_cli.py +0 -0
  58. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/doctor_cli.py +0 -0
  59. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/doctor_voice.py +0 -0
  60. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/ensure_cli.py +0 -0
  61. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/fetch.py +0 -0
  62. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/handoff/__init__.py +0 -0
  63. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/handoff/git_state.py +0 -0
  64. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/handoff/instructions.py +0 -0
  65. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/handoff/parser.py +0 -0
  66. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/handoff/renderer.py +0 -0
  67. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/handoff/schema.py +0 -0
  68. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/handoff_cli.py +0 -0
  69. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/history.py +0 -0
  70. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/history_cli.py +0 -0
  71. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/__init__.py +0 -0
  72. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/agentwire-permission.sh +0 -0
  73. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/__init__.py +0 -0
  74. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/audit_logger.py +0 -0
  75. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/bash-tool-damage-control.py +0 -0
  76. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/edit-tool-damage-control.py +0 -0
  77. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/mcp-tool-damage-control.py +0 -0
  78. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/read-tool-damage-control.py +0 -0
  79. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/rules/agentwire.yaml +0 -0
  80. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/rules/aws.yaml +0 -0
  81. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/rules/cloud-hosting.yaml +0 -0
  82. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/rules/containers.yaml +0 -0
  83. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/rules/control-plane.yaml +0 -0
  84. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/rules/core.yaml +0 -0
  85. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/rules/databases.yaml +0 -0
  86. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/rules/firebase.yaml +0 -0
  87. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/rules/gcp.yaml +0 -0
  88. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/rules/git.yaml +0 -0
  89. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/rules/gws.yaml +0 -0
  90. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/rules/infrastructure.yaml +0 -0
  91. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/rules/outbound.yaml +0 -0
  92. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/rules/publish.yaml +0 -0
  93. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/rules/remote.yaml +0 -0
  94. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/damage-control/write-tool-damage-control.py +0 -0
  95. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/idle-handler.sh +0 -0
  96. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks/queue-processor.sh +0 -0
  97. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/hooks_cli.py +0 -0
  98. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/inbox.py +0 -0
  99. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/limits_cli.py +0 -0
  100. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/listen.py +0 -0
  101. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/locking.py +0 -0
  102. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/machine_cli.py +0 -0
  103. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_channels.py +0 -0
  104. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_chrome.py +0 -0
  105. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_cli.py +0 -0
  106. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_core.py +0 -0
  107. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_council.py +0 -0
  108. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_desktop.py +0 -0
  109. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_handoff.py +0 -0
  110. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_history.py +0 -0
  111. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_listen.py +0 -0
  112. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_lock.py +0 -0
  113. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_machine.py +0 -0
  114. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_msg.py +0 -0
  115. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_notify.py +0 -0
  116. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_pane.py +0 -0
  117. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_projects.py +0 -0
  118. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_scheduler.py +0 -0
  119. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_scratchpad.py +0 -0
  120. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_server.py +0 -0
  121. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_services.py +0 -0
  122. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_session.py +0 -0
  123. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_status.py +0 -0
  124. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_task.py +0 -0
  125. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_tunnels.py +0 -0
  126. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_voice.py +0 -0
  127. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_wiki.py +0 -0
  128. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/mcp_worktree.py +0 -0
  129. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/msg_cli.py +0 -0
  130. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/network.py +0 -0
  131. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/notify_cli.py +0 -0
  132. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/onboarding.py +0 -0
  133. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/palette_cli.py +0 -0
  134. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/pane_cli.py +0 -0
  135. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/pane_manager.py +0 -0
  136. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/portal_cli.py +0 -0
  137. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/project_config.py +0 -0
  138. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/projects.py +0 -0
  139. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/prompt_router.py +0 -0
  140. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/prompts_cli.py +0 -0
  141. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/push_cli.py +0 -0
  142. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/push_store.py +0 -0
  143. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/repo_cli.py +0 -0
  144. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/research.py +0 -0
  145. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/__init__.py +0 -0
  146. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/agentwire.md +0 -0
  147. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/anchor.md +0 -0
  148. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/chatbot.md +0 -0
  149. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/contributor.md +0 -0
  150. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/correspondent.md +0 -0
  151. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/council-brain.md +0 -0
  152. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/council-conscience.md +0 -0
  153. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/council-critic.md +0 -0
  154. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/council-devils-advocate.md +0 -0
  155. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/council-gut.md +0 -0
  156. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/council-historian.md +0 -0
  157. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/council-member.md +0 -0
  158. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/council-orchestrator.md +0 -0
  159. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/init.md +0 -0
  160. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/notifications.md +0 -0
  161. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/orchestrator.md +0 -0
  162. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/soul.md +0 -0
  163. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/task-runner.md +0 -0
  164. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/voice.md +0 -0
  165. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/worker-worktree.md +0 -0
  166. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles/worker.md +0 -0
  167. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/roles_cli.py +0 -0
  168. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/__init__.py +0 -0
  169. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/artifacts.py +0 -0
  170. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/config.py +0 -0
  171. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/council.py +0 -0
  172. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/desktop.py +0 -0
  173. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/history.py +0 -0
  174. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/machines.py +0 -0
  175. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/notify.py +0 -0
  176. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/palette.py +0 -0
  177. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/permission.py +0 -0
  178. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/projects.py +0 -0
  179. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/push.py +0 -0
  180. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/safety.py +0 -0
  181. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/scheduler.py +0 -0
  182. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/scratchpad.py +0 -0
  183. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/sessions.py +0 -0
  184. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/sessions_admin.py +0 -0
  185. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/routes/voice.py +0 -0
  186. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/safety/__init__.py +0 -0
  187. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/safety/_core.py +0 -0
  188. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/safety_cli.py +0 -0
  189. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/safety_commands.py +0 -0
  190. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/scheduler/__init__.py +0 -0
  191. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/scheduler/dispatch.py +0 -0
  192. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/scheduler/gates.py +0 -0
  193. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/scheduler/loop.py +0 -0
  194. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/scheduler/models.py +0 -0
  195. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/scheduler/report.py +0 -0
  196. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/scheduler/schedule.py +0 -0
  197. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/scheduler/state.py +0 -0
  198. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/scheduler/zombie.py +0 -0
  199. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/scheduler_cli.py +0 -0
  200. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/scratchpad.py +0 -0
  201. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/security.py +0 -0
  202. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/send_cli.py +0 -0
  203. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/server.py +0 -0
  204. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/services.py +0 -0
  205. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/session_cli.py +0 -0
  206. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/session_context.py +0 -0
  207. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/session_ready.py +0 -0
  208. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/ssh.py +0 -0
  209. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/agentwire-splash-logo-layers--agentwire-text.png +0 -0
  210. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/agentwire-splash-logo-layers--echo-claw-fg.png +0 -0
  211. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/agentwire-splash-logo-layers--echo.png +0 -0
  212. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/agentwire-splash-logo-layers--telephone.png +0 -0
  213. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/agentwire-splash-logo-layers--tree.png +0 -0
  214. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/announcements.json +0 -0
  215. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/apple-touch-icon.png +0 -0
  216. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/css/mobile.css +0 -0
  217. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/favicon-32.png +0 -0
  218. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/favicon-64.png +0 -0
  219. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/bear.webp +0 -0
  220. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/cat.webp +0 -0
  221. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/crown.webp +0 -0
  222. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/custom/agentwire-portal.webp +0 -0
  223. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/custom/agentwire-tts.webp +0 -0
  224. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/custom/agentwire.webp +0 -0
  225. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/deer.webp +0 -0
  226. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/drone.webp +0 -0
  227. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/eagle.webp +0 -0
  228. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/fox.webp +0 -0
  229. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/hawk.webp +0 -0
  230. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/horse.webp +0 -0
  231. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/lion.webp +0 -0
  232. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/rabbit.webp +0 -0
  233. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/robot.webp +0 -0
  234. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/tiger.webp +0 -0
  235. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/icons/sessions/wolf.webp +0 -0
  236. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/img/icon-192.png +0 -0
  237. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/img/icon-512.png +0 -0
  238. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/.gitkeep +0 -0
  239. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/announcement-modal.js +0 -0
  240. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/api.js +0 -0
  241. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/artifact-window.js +0 -0
  242. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/card-terminal.js +0 -0
  243. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/collage.js +0 -0
  244. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/council-window.js +0 -0
  245. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/dead-key-suppressor.js +0 -0
  246. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/desktop-manager.js +0 -0
  247. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/help-modal.js +0 -0
  248. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/icon-manager.js +0 -0
  249. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/lineage.js +0 -0
  250. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/mobile.js +0 -0
  251. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/notification-prefs.js +0 -0
  252. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/notifications-panel.js +0 -0
  253. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/ptt.js +0 -0
  254. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/push-client.js +0 -0
  255. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/review-window.js +0 -0
  256. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/safety-shared.js +0 -0
  257. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/safety-window.js +0 -0
  258. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/scratchpad.js +0 -0
  259. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/service-classification.js +0 -0
  260. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/session-hud-spawn.js +0 -0
  261. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/session-id.js +0 -0
  262. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/session-window.js +0 -0
  263. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/sidebar/artifacts-section.js +0 -0
  264. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/sidebar/config-section.js +0 -0
  265. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/sidebar/council-section.js +0 -0
  266. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/sidebar/machines-section.js +0 -0
  267. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/sidebar/projects-section.js +0 -0
  268. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/sidebar/safety-section.js +0 -0
  269. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/sidebar/scheduler-section.js +0 -0
  270. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/sidebar/services-section.js +0 -0
  271. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/sidebar.js +0 -0
  272. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/spawn-ghost.js +0 -0
  273. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/terminal-font-prefs.js +0 -0
  274. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/terminal-pane.js +0 -0
  275. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/tile-manager.js +0 -0
  276. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/toast.js +0 -0
  277. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/token-modal.js +0 -0
  278. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/utils/ansi.js +0 -0
  279. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/utils/swipe.js +0 -0
  280. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/voice/autosend-prefs.js +0 -0
  281. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/voice/browser-stt.js +0 -0
  282. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/voice/browser-tts.js +0 -0
  283. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/voice/jargon.js +0 -0
  284. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/voice/prompt.js +0 -0
  285. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/winbox.bundle.min.js +0 -0
  286. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/js/workspace-window.js +0 -0
  287. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/manifest.webmanifest +0 -0
  288. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/service-worker.js +0 -0
  289. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/static/topology-harness.html +0 -0
  290. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/stt/__init__.py +0 -0
  291. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/stt/base.py +0 -0
  292. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/stt/cloud.py +0 -0
  293. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/stt/engine.py +0 -0
  294. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/stt/local.py +0 -0
  295. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/stt/server_backend.py +0 -0
  296. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/stt/stt_server.py +0 -0
  297. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/system_cli.py +0 -0
  298. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tabs_cli.py +0 -0
  299. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tasks.py +0 -0
  300. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tasks_cli.py +0 -0
  301. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/templates/__init__.py +0 -0
  302. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/templates/base.html +0 -0
  303. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/templates/council/minutes.html.j2 +0 -0
  304. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/templates/desktop.html +0 -0
  305. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/templates/email_notification.html +0 -0
  306. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/templates/handoff/show-the-story.html.j2 +0 -0
  307. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/templates/handoff/theme.css.j2 +0 -0
  308. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/templates/mobile.html +0 -0
  309. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/templates/pair.html +0 -0
  310. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/templates/tmux.conf +0 -0
  311. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/templating.py +0 -0
  312. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tooldefs/aws.yaml +0 -0
  313. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tooldefs/docker.yaml +0 -0
  314. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tooldefs/gcp.yaml +0 -0
  315. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tooldefs/gh.yaml +0 -0
  316. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tooldefs/git.yaml +0 -0
  317. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tooldefs/gws.yaml +0 -0
  318. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tooldefs/kubectl.yaml +0 -0
  319. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tooldefs/npm.yaml +0 -0
  320. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tooldefs/terraform.yaml +0 -0
  321. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tooldefs/uv.yaml +0 -0
  322. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tts/__init__.py +0 -0
  323. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tts/audio.py +0 -0
  324. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tts/base.py +0 -0
  325. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tts/engines/__init__.py +0 -0
  326. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tts/engines/chatterbox.py +0 -0
  327. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tts/engines/kokoro.py +0 -0
  328. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tts/engines/zonos.py +0 -0
  329. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tts/kokoro_server.py +0 -0
  330. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tts/local.py +0 -0
  331. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tts/registry.py +0 -0
  332. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tts_cli.py +0 -0
  333. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tts_server.py +0 -0
  334. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tunnels.py +0 -0
  335. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/tunnels_cli.py +0 -0
  336. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/usage_limit.py +0 -0
  337. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/utils/__init__.py +0 -0
  338. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/utils/chunker.py +0 -0
  339. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/utils/event_log.py +0 -0
  340. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/utils/file_io.py +0 -0
  341. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/utils/paths.py +0 -0
  342. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/utils/speech.py +0 -0
  343. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/utils/subprocess.py +0 -0
  344. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/validation.py +0 -0
  345. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/voice_status.py +0 -0
  346. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/wiki.py +0 -0
  347. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/wiki_audit.py +0 -0
  348. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/wiki_cli.py +0 -0
  349. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/worktree.py +0 -0
  350. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/agentwire/worktree_registry.py +0 -0
  351. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/decisions/obsidian-second-brain.md +0 -0
  352. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/logo.png +0 -0
  353. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/INDEX.md +0 -0
  354. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/architecture.md +0 -0
  355. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/briefing-mode.md +0 -0
  356. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/communication/channels.md +0 -0
  357. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/communication/hammerspoon.md +0 -0
  358. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/communication/handoff.md +0 -0
  359. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/concepts.md +0 -0
  360. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/council.md +0 -0
  361. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/deployment/remote-access.md +0 -0
  362. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/deployment/remote-machines.md +0 -0
  363. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/glossary.md +0 -0
  364. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/integrations/gws-google-workspace-cli.md +0 -0
  365. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/internals/damage-control.md +0 -0
  366. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/internals/parallel-refactor.md +0 -0
  367. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/internals/portal.md +0 -0
  368. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/internals/shell-escaping.md +0 -0
  369. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/internals/troubleshooting.md +0 -0
  370. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/internals/window-collage.md +0 -0
  371. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/quickstart.md +0 -0
  372. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/research/briefing-mode-feasibility.md +0 -0
  373. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/research/orchestration-transport-alternatives.md +0 -0
  374. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/scheduling/scheduled-workloads.md +0 -0
  375. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/security/damage-control-hardening.md +0 -0
  376. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/security/pip-audit.md +0 -0
  377. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/security/remote-access-hardening.md +0 -0
  378. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/security/secrets.md +0 -0
  379. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/services.md +0 -0
  380. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/sessions/claude-code-auto-mode.md +0 -0
  381. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/sessions/messaging.md +0 -0
  382. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/sessions/prompt-routing.md +0 -0
  383. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/sessions/window-sizing.md +0 -0
  384. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/sessions/worktree-sessions.md +0 -0
  385. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/usage-limit-recovery.md +0 -0
  386. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/voice/shim-contract.md +0 -0
  387. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/voice/stt-cloud.md +0 -0
  388. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/voice/stt-self-hosted.md +0 -0
  389. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/docs/wiki/voice/tts-self-hosted.md +0 -0
  390. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/pyproject.toml +0 -0
  391. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/conftest.py +0 -0
  392. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/e2e/test_portal_ui.py +0 -0
  393. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/fixtures/sample_agentwire.yml +0 -0
  394. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/fixtures/sample_config.yaml +0 -0
  395. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/fixtures/sample_scheduler.yaml +0 -0
  396. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/integration/test_council_portal.py +0 -0
  397. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/integration/test_scheduler_board.py +0 -0
  398. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/integration/test_send_verified_tmux.py +0 -0
  399. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/integration/test_server_websockets.py +0 -0
  400. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/integration/test_worktree_cmd.py +0 -0
  401. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_announcements.py +0 -0
  402. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_build_agent_command.py +0 -0
  403. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_channels.py +0 -0
  404. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_chrome_tabs.py +0 -0
  405. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_cli_commands.py +0 -0
  406. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_cli_output.py +0 -0
  407. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_cli_smoke.py +0 -0
  408. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_config.py +0 -0
  409. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_config_cli.py +0 -0
  410. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_control_plane_protection.py +0 -0
  411. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_core_created_by_rooting.py +0 -0
  412. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_council_cli.py +0 -0
  413. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_council_inbox.py +0 -0
  414. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_council_minutes.py +0 -0
  415. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_council_state.py +0 -0
  416. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_council_view.py +0 -0
  417. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_damage_control_bypass.py +0 -0
  418. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_damage_control_hooks.py +0 -0
  419. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_damage_control_sync.py +0 -0
  420. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_dangling_worktrees.py +0 -0
  421. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_devices.py +0 -0
  422. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_diff_cli.py +0 -0
  423. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_doctor_task_migration.py +0 -0
  424. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_doctor_voice.py +0 -0
  425. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_event_log.py +0 -0
  426. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_file_io.py +0 -0
  427. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_guarded_launch_command.py +0 -0
  428. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_handoff_git_state.py +0 -0
  429. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_handoff_instructions.py +0 -0
  430. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_handoff_parser.py +0 -0
  431. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_handoff_renderer.py +0 -0
  432. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_history.py +0 -0
  433. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_hooks_install.py +0 -0
  434. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_idle_handler.py +0 -0
  435. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_idle_nag.py +0 -0
  436. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_inbox.py +0 -0
  437. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_init_command.py +0 -0
  438. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_install_parity.py +0 -0
  439. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_limits_tick_isolation.py +0 -0
  440. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_locking.py +0 -0
  441. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_mcp_server.py +0 -0
  442. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_mcp_tools_args.py +0 -0
  443. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_msg_cli.py +0 -0
  444. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_notify_cli.py +0 -0
  445. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_onboarding_reinit.py +0 -0
  446. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_palette_cli.py +0 -0
  447. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_pip_environment.py +0 -0
  448. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_portal_api.py +0 -0
  449. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_posture_default.py +0 -0
  450. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_project_config.py +0 -0
  451. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_prompt_router.py +0 -0
  452. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_push.py +0 -0
  453. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_rebuild_guard.py +0 -0
  454. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_repo_cli.py +0 -0
  455. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_roles.py +0 -0
  456. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_routes_snapshot.py +0 -0
  457. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_safety_commands.py +0 -0
  458. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_safety_disabled_rules.py +0 -0
  459. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_safety_escape_hatch.py +0 -0
  460. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_safety_heal.py +0 -0
  461. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_safety_kill_switch.py +0 -0
  462. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_scheduler.py +0 -0
  463. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_scheduler_parsing.py +0 -0
  464. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_scheduler_zombie.py +0 -0
  465. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_scratchpad.py +0 -0
  466. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_security.py +0 -0
  467. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_server_async.py +0 -0
  468. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_server_pure.py +0 -0
  469. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_services.py +0 -0
  470. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_session_context.py +0 -0
  471. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_session_created_by_env.py +0 -0
  472. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_session_ready.py +0 -0
  473. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_shared_dir_guard.py +0 -0
  474. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_shim_selfheal.py +0 -0
  475. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_skill_install.py +0 -0
  476. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_speech_tags.py +0 -0
  477. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_ssh.py +0 -0
  478. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_stt_backend.py +0 -0
  479. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_stt_cloud.py +0 -0
  480. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_stt_engine.py +0 -0
  481. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_task_cli.py +0 -0
  482. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_tasks.py +0 -0
  483. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_tasks_cli.py +0 -0
  484. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_templating.py +0 -0
  485. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_terminal_resize.py +0 -0
  486. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_tmux_template.py +0 -0
  487. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_tts_engine_resolution.py +0 -0
  488. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_tts_local.py +0 -0
  489. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_tunnels_probe.py +0 -0
  490. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_unattended_env_isolation.py +0 -0
  491. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_usage_limit.py +0 -0
  492. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_validation.py +0 -0
  493. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_voice_status.py +0 -0
  494. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_wiki.py +0 -0
  495. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_wiki_audit.py +0 -0
  496. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_window_cycling_binding.py +0 -0
  497. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_worktree.py +0 -0
  498. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_worktree_branch_cleanup.py +0 -0
  499. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_worktree_layout.py +0 -0
  500. {agentwire_dev-1.62.0 → agentwire_dev-1.63.0}/tests/unit/test_worktree_registry.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentwire-dev
3
- Version: 1.62.0
3
+ Version: 1.63.0
4
4
  Summary: Multi-session voice web interface for AI coding agents
5
5
  Project-URL: Homepage, https://agentwire.dev
6
6
  Project-URL: Repository, https://github.com/dotdevdotdev/agentwire-dev
@@ -1,3 +1,3 @@
1
1
  """AgentWire - Multi-session voice web interface for AI coding agents."""
2
2
 
3
- __version__ = "1.62.0"
3
+ __version__ = "1.63.0"
@@ -6679,6 +6679,102 @@ body.sidebar-pinned { --hud-left: var(--sidebar-width); }
6679
6679
  text-overflow: ellipsis;
6680
6680
  }
6681
6681
 
6682
+ /* --- per-card ⋯ actions menu (#792) --- the button rides the header row next
6683
+ to the name (flex 0 0 auto so it never steals name width), stays out of the
6684
+ way at rest (opacity 0), and fades in on card hover or while its menu is
6685
+ open. Wired only for live, non-self cards in the HUD (topology-render.js). */
6686
+ .topology-card-menu-btn {
6687
+ flex: 0 0 auto;
6688
+ width: 18px;
6689
+ height: 18px;
6690
+ display: inline-flex;
6691
+ align-items: center;
6692
+ justify-content: center;
6693
+ margin-left: 2px;
6694
+ padding: 0;
6695
+ border: none;
6696
+ border-radius: 4px;
6697
+ background: transparent;
6698
+ color: var(--text-muted);
6699
+ font-size: 15px;
6700
+ line-height: 1;
6701
+ cursor: pointer;
6702
+ opacity: 0;
6703
+ transition: opacity 0.12s ease, color 0.12s ease, background 0.12s ease;
6704
+ }
6705
+
6706
+ .topology-card:hover .topology-card-menu-btn,
6707
+ .topology-card-menu-btn.is-open {
6708
+ opacity: 0.75;
6709
+ }
6710
+
6711
+ .topology-card-menu-btn:hover,
6712
+ .topology-card-menu-btn.is-open {
6713
+ opacity: 1;
6714
+ color: var(--text);
6715
+ background: var(--hover);
6716
+ }
6717
+
6718
+ /* Popover positioned `fixed` (top/left set inline in JS from the ⋯ button's
6719
+ rect) and portaled to <body> (topology-render.js) so it escapes both the
6720
+ HUD canvas's `overflow:auto` clip AND the drawer's backdrop-filter/transform
6721
+ containing block — a collapsed bottom-row card's menu must never render
6722
+ "inside the fold". z above the drawer (9001) + sidebar tab. */
6723
+ .topology-card-menu {
6724
+ position: fixed;
6725
+ z-index: 9050;
6726
+ min-width: 136px;
6727
+ display: flex;
6728
+ flex-direction: column;
6729
+ gap: 1px;
6730
+ padding: 4px;
6731
+ border-radius: 8px;
6732
+ border: 1px solid var(--chrome-border);
6733
+ background: var(--chrome);
6734
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
6735
+ }
6736
+
6737
+ .topology-card-menu-item {
6738
+ display: flex;
6739
+ align-items: center;
6740
+ gap: 8px;
6741
+ padding: 6px 8px;
6742
+ border: none;
6743
+ border-radius: 5px;
6744
+ background: transparent;
6745
+ color: var(--text);
6746
+ font-size: 12px;
6747
+ font-family: inherit;
6748
+ text-align: left;
6749
+ white-space: nowrap;
6750
+ cursor: pointer;
6751
+ transition: background 0.12s ease;
6752
+ }
6753
+
6754
+ .topology-card-menu-item:hover {
6755
+ background: var(--hover);
6756
+ }
6757
+
6758
+ .topology-card-menu-icon {
6759
+ flex: 0 0 14px;
6760
+ text-align: center;
6761
+ opacity: 0.8;
6762
+ }
6763
+
6764
+ .topology-card-menu-item--danger {
6765
+ color: var(--error);
6766
+ }
6767
+
6768
+ .topology-card-menu-item--danger:hover,
6769
+ .topology-card-menu-item--danger.is-armed {
6770
+ background: color-mix(in srgb, var(--error) 14%, transparent);
6771
+ }
6772
+
6773
+ .topology-card-menu-item--danger.is-armed {
6774
+ justify-content: center;
6775
+ font-weight: 600;
6776
+ }
6777
+
6682
6778
  /* flow (processing/generating/playing) — family-tinted "alive" treatment */
6683
6779
  .topology-card--flow .topology-status-dot {
6684
6780
  background: var(--card-tint, var(--lineage-tint-1));
@@ -6832,16 +6928,17 @@ body.sidebar-pinned { --hud-left: var(--sidebar-width); }
6832
6928
  }
6833
6929
 
6834
6930
  .topology-view--shade .topology-card {
6835
- flex: 0 0 128px;
6836
- max-width: 128px;
6931
+ flex: 0 0 176px;
6932
+ max-width: 176px;
6837
6933
  padding: 6px 8px;
6838
6934
  gap: 4px;
6839
6935
  }
6840
6936
 
6841
- /* Narrow shade cards (fixed 128px) can't fit both the session name and the
6937
+ /* Even widened (176px, #792), a shade card can't fit the session name AND the
6842
6938
  role word — "ORCHESTRATOR" (a non-shrinking chip) starves the name to an
6843
- "age…" ellipsis. The name is the identifier that matters, so it takes the
6844
- whole row; role still shows on the expanded card + the standalone
6939
+ "age…" ellipsis, and the extra room now goes to the un-truncated child
6940
+ branch name + the ⋯ menu. The name is the identifier that matters, so it
6941
+ takes the row; role still shows on the expanded card + the standalone
6845
6942
  workspace window (non-shade), where there's room. */
6846
6943
  .topology-view--shade .topology-role-chip {
6847
6944
  display: none;
@@ -6852,15 +6949,15 @@ body.sidebar-pinned { --hud-left: var(--sidebar-width); }
6852
6949
  root, so give its name + mic a little more room than a plain 128px card.
6853
6950
  Same two-class specificity trick as the expanded-card override below. */
6854
6951
  .topology-view--shade .topology-card--self {
6855
- flex: 0 0 168px;
6856
- max-width: 168px;
6952
+ flex: 0 0 208px;
6953
+ max-width: 208px;
6857
6954
  }
6858
6955
 
6859
- /* An expanded (mini-terminal open) card must win over the fixed 128px shade
6956
+ /* An expanded (mini-terminal open) card must win over the fixed 176px shade
6860
6957
  card width above — `.topology-view--shade .topology-card` has two class
6861
6958
  selectors to `.topology-card--expanded`'s one, so without this override
6862
6959
  the higher-specificity shade rule would keep clamping an open mini-terminal
6863
- to 128px regardless. Narrow-first: this is still sized for the owner's
6960
+ to 176px regardless. Narrow-first: this is still sized for the owner's
6864
6961
  ~1/3-width portal, not a full desktop canvas. */
6865
6962
  .topology-view--shade .topology-card--expanded {
6866
6963
  flex: 0 0 340px;
@@ -45,6 +45,11 @@ const COMMANDS = [
45
45
  { id: 'new-session', icon: '▶', label: 'New session', keywords: 'create new session start spawn run project', run: () => setView('new-session') },
46
46
  { id: 'worktree', icon: '⎇', label: 'New worktree', keywords: 'worktree branch quicktask task feat fix base', run: () => setView('worktree') },
47
47
  { id: 'open-session', icon: '👁', label: 'Open session', keywords: 'open attach connect existing session', run: () => setView('open-session') },
48
+ { id: 'show-all-sessions', icon: '⧉', label: 'Show all sessions', keywords: 'hud session topology tree map lineage parent child master overview show all every global peek', run: async () => {
49
+ closeCommandPalette();
50
+ const { hudController } = await import('./session-hud-controller.js');
51
+ hudController.showAll();
52
+ } },
48
53
  { id: 'collage', icon: '▦', label: 'Window collage', keywords: 'collage cascade grid windows overview show all tile mission', run: async () => {
49
54
  closeCommandPalette();
50
55
  const { collage } = await import('./collage.js');
@@ -267,7 +267,7 @@ async function init() {
267
267
  // Scratch pad drawer (Alt+N, right-edge handle, selection capture)
268
268
  scratchpad.init();
269
269
 
270
- // Session HUD drawer (Alt+T, top-center handle) — #776 chrome, #777 shade
270
+ // Session HUD drawer (Alt+P, top-center handle) — #776 chrome, #777 shade
271
271
  // layout. #778's controller decides what renders (global tree vs
272
272
  // re-rooted onto the focused session) and mounts TopologyView itself.
273
273
  sessionHud.init();
@@ -50,6 +50,7 @@ import { subtreeOf } from './lineage.js';
50
50
  import { mountCardTerminal, mountSelfMic } from './card-terminal.js';
51
51
  import { sessionHud } from './session-hud.js';
52
52
  import { apiFetch } from './api.js';
53
+ import { normalizeMachine } from './session-id.js';
53
54
  import { toastSuccess, toastError } from './toast.js';
54
55
 
55
56
  const GHOST_POLL_MS = 20000;
@@ -60,6 +61,9 @@ class HudController {
60
61
  this._resolveWindowSession = null;
61
62
  /** @type {string|null} focused session name, or null = global tree */
62
63
  this._contextSession = null;
64
+ /** @type {boolean} "master" mode (showAll) — pin the global tree and
65
+ * ignore focus re-rooting until the drawer is closed. */
66
+ this._global = false;
63
67
  /** @type {string|null} window id backing _contextSession, for window_unregistered matching */
64
68
  this._contextWindowId = null;
65
69
  /** @type {Array<object>} pseudo-session records for orphaned worktrees, refreshed via polling */
@@ -82,6 +86,8 @@ class HudController {
82
86
  onSelfMount: (name, session, cardEl) => mountSelfMic(name, session, cardEl),
83
87
  onGhostCleanup: (name, session) => this._cleanupGhost(name, session),
84
88
  onGhostAdopt: (name, session) => this._adoptGhost(name, session),
89
+ onCardOpen: (name, session) => this._openSession(name, session),
90
+ onCardKill: (name, session) => this._killSession(name, session),
85
91
  });
86
92
 
87
93
  // Seed from whatever's already focused when the HUD first mounts,
@@ -95,6 +101,10 @@ class HudController {
95
101
  this._fetchGhosts();
96
102
  this._ghostTimer = setInterval(() => this._fetchGhosts(), GHOST_POLL_MS);
97
103
 
104
+ // Closing the drawer exits "master" mode, so the next Alt+P open is the
105
+ // normal context-following view again.
106
+ sessionHud.onClose(() => { this._global = false; });
107
+
98
108
  desktop.on('active_window_changed', ({ id }) => this._applyFocus(id));
99
109
  // Closing the focused session's own window (with nothing else taking
100
110
  // focus) falls back to the global tree, rather than leaving the HUD
@@ -109,6 +119,7 @@ class HudController {
109
119
  }
110
120
 
111
121
  _applyFocus(id) {
122
+ if (this._global) return; // master mode pins the global tree
112
123
  const session = this._resolveWindowSession(id);
113
124
  if (!session || session === this._contextSession) return;
114
125
  this._contextSession = session;
@@ -116,6 +127,22 @@ class HudController {
116
127
  this._render();
117
128
  }
118
129
 
130
+ /**
131
+ * "Master" view — open the HUD showing the full session tree (every family,
132
+ * not the focused session's subtree) and pin it there: focus changes no
133
+ * longer re-root until the drawer closes. Entry points are the Sessions
134
+ * sidebar-header icon and the "Show all sessions" command-palette action
135
+ * (no hotkey — the plain Alt+P peek is the context-following view). Idempotent.
136
+ */
137
+ showAll() {
138
+ this._global = true;
139
+ this._contextSession = null;
140
+ this._contextWindowId = null;
141
+ if (sessionHud.segment !== 'sessions') sessionHud.setSegment('sessions');
142
+ if (!sessionHud.open) sessionHud.toggle(true);
143
+ this._render();
144
+ }
145
+
119
146
  _render() {
120
147
  if (!this._view) return;
121
148
  const sessions = getAllSessions();
@@ -144,6 +171,36 @@ class HudController {
144
171
  };
145
172
  }
146
173
 
174
+ // ⋯ menu "Open window" — pop the session into its own full terminal window.
175
+ // Dynamic-imports desktop.js for the same reason card-terminal.js does: it's
176
+ // the module that boots this controller, so a static import would be circular.
177
+ async _openSession(name, session) {
178
+ try {
179
+ const { openSessionTerminal } = await import('./desktop.js');
180
+ openSessionTerminal(name, 'terminal', normalizeMachine(session?.machine));
181
+ } catch (e) {
182
+ toastError(`Couldn't open ${name}: ${e.message}`);
183
+ }
184
+ }
185
+
186
+ // ⋯ menu "Kill session" — the two-step confirm already happened in-menu
187
+ // (topology-render.js), so this fires straight through. DELETE /api/sessions
188
+ // is the same thin `agentwire kill` wrapper the sidebar close button uses; the
189
+ // resulting lifecycle push re-renders the tree without this card.
190
+ async _killSession(name, session) {
191
+ try {
192
+ const res = await apiFetch(`/api/sessions/${encodeURIComponent(name)}`, { method: 'DELETE' });
193
+ if (!res.ok) {
194
+ const reason = await res.text().catch(() => '') || `HTTP ${res.status}`;
195
+ toastError(`Kill failed for ${name}: ${reason}`);
196
+ return;
197
+ }
198
+ toastSuccess(`Killed ${name}`);
199
+ } catch (e) {
200
+ toastError(`Kill failed for ${name}: ${e.message}`);
201
+ }
202
+ }
203
+
147
204
  // Ghosts (#781) aren't sessions — no WS push tells us when a worktree dir
148
205
  // disappears or a dead one reappears — so this is a plain poll, refreshed
149
206
  // eagerly right after an action instead of waiting out the interval.
@@ -10,7 +10,7 @@
10
10
  * fills with TopologyView. Mirrors scratchpad.js's create-once drawer
11
11
  * lifecycle (`.open` class, keyboard toggle, teardown).
12
12
  *
13
- * Toggle: Alt+T or the handle. Mutually exclusive with the left sidebar and
13
+ * Toggle: Alt+P ("peek") or the handle. Mutually exclusive with the left sidebar and
14
14
  * the right scratchpad drawer — mirrors their existing coordination
15
15
  * (sidebar.js:72): opening the HUD closes both, and opening either of them
16
16
  * closes the HUD.
@@ -60,19 +60,30 @@ class SessionHud {
60
60
  /** @type {'sessions'|'services'} currently active header segment */
61
61
  this.segment = 'sessions';
62
62
  this._servicesMounted = false;
63
+ /** @type {Array<() => void>} fired when the drawer closes — lets the
64
+ * controller drop its pinned "master/global" view (see showAll). */
65
+ this._closeListeners = [];
66
+ }
67
+
68
+ /** Subscribe to drawer-close. */
69
+ onClose(fn) {
70
+ this._closeListeners.push(fn);
63
71
  }
64
72
 
65
73
  init() {
66
74
  this._buildDrawer();
67
75
 
68
- // Alt+T toggles the drawer. Capture phase + stopPropagation so xterm
69
- // never sees the keystroke — mirrors scratchpad.js's Alt+N binding.
70
- // e.code (not e.key): physical-key detection, consistent with every
71
- // other Alt combo in the portal. Option+T isn't a macOS dead key (it
72
- // types a literal † rather than composing), so no suppressor arm is
73
- // needed here — same reasoning as the Alt+bracket window-cycle combo.
76
+ // Alt+P ("peek") toggles the drawer. Moved off Alt+T once Claude Code
77
+ // claimed Option+T for toggle-thinking — our capture-phase handler would
78
+ // otherwise swallow it before it reached a session running Claude Code.
79
+ // Capture phase + stopPropagation so xterm never sees the keystroke —
80
+ // mirrors scratchpad.js's Alt+N binding. e.code (not e.key):
81
+ // physical-key detection, consistent with every other Alt combo in the
82
+ // portal. Option+P isn't a macOS dead key (it types a literal π rather
83
+ // than composing), so no suppressor arm is needed — same reasoning as
84
+ // the Alt+bracket window-cycle combo.
74
85
  window.addEventListener('keydown', (e) => {
75
- if (e.altKey && !e.metaKey && !e.ctrlKey && e.code === 'KeyT') {
86
+ if (e.altKey && !e.metaKey && !e.ctrlKey && e.code === 'KeyP') {
76
87
  e.preventDefault();
77
88
  e.stopPropagation();
78
89
  if (e.repeat) return;
@@ -109,7 +120,7 @@ class SessionHud {
109
120
 
110
121
  const handle = document.createElement('button');
111
122
  handle.className = 'session-hud-handle';
112
- handle.title = 'Session HUD (Alt+T)';
123
+ handle.title = 'Session HUD (Alt+P)';
113
124
  handle.innerHTML = '<span class="session-hud-grip" aria-hidden="true"></span>';
114
125
  document.body.appendChild(handle);
115
126
  this.handle = handle;
@@ -292,6 +303,7 @@ class SessionHud {
292
303
  this.open = false;
293
304
  this.drawer.classList.remove('open');
294
305
  this.handle.classList.remove('drawer-open');
306
+ this._closeListeners.forEach((fn) => fn());
295
307
  }
296
308
  }
297
309
  }
@@ -60,7 +60,7 @@ export const SHORTCUT_GROUPS = [
60
60
  title: 'Panels',
61
61
  items: [
62
62
  { combo: ['Alt', 'N'], desc: 'Toggle the scratchpad drawer', where: 'scratchpad.js' },
63
- { combo: ['Alt', 'T'], desc: 'Toggle the Session HUD', where: 'session-hud.js' },
63
+ { combo: ['Alt', 'P'], desc: 'Toggle the Session HUD (peek)', where: 'session-hud.js' },
64
64
  ],
65
65
  },
66
66
  {
@@ -82,6 +82,7 @@ export const FEATURE_TOUR = [
82
82
  { icon: '🏛', name: 'Council', desc: 'Ask one question, get six lenses (brain, conscience, …) deliberating in parallel. Command palette → Ask council.' },
83
83
  { icon: '🎙', name: 'Push-to-talk', desc: 'Hold Ctrl/⌘+Space to talk to a session. Or open /mobile to push-to-talk from your phone.' },
84
84
  { icon: '▦', name: 'Window collage', desc: 'F3 fans every window into a grid — click one to dive in. Great for juggling many sessions.' },
85
+ { icon: '⧉', name: 'Session HUD', desc: 'Alt+P peeks a live map of the session you’re in and its children. "Show all sessions" (command palette, or the Sessions panel ⧉) opens the full tree — every session at once.' },
85
86
  { icon: '💡', name: 'New idea', desc: 'Capture a thought and AgentWire spins up a project with an agent already working on it.' },
86
87
  { icon: '⎇', name: 'Worktrees', desc: 'Branch a session into an isolated git worktree for parallel work, from the palette or the Sessions panel.' },
87
88
  { icon: '📋', name: 'Scratchpad', desc: 'Alt+N opens a quick notes drawer that travels with you across sessions.' },
@@ -321,6 +321,7 @@ async function fetchSessions() {
321
321
  export const sessionsSection = {
322
322
  title: 'Sessions',
323
323
  actions: [
324
+ { id: 'showall', label: '⧉', title: 'Show all sessions in the HUD' },
324
325
  { id: 'new', label: '+', title: 'New session' },
325
326
  { id: 'worktree', label: '⎇', title: 'New worktree session' },
326
327
  ],
@@ -339,6 +340,11 @@ export const sessionsSection = {
339
340
  },
340
341
 
341
342
  onAction(actionId, body) {
343
+ // Not a form toggle — pop the master Session HUD (all sessions).
344
+ if (actionId === 'showall') {
345
+ import('../session-hud-controller.js').then(({ hudController }) => hudController.showAll());
346
+ return;
347
+ }
342
348
  if (this._formType === actionId) {
343
349
  this._formType = null;
344
350
  } else {