agentwire-dev 1.56.1__tar.gz → 1.58.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 (488) hide show
  1. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/.agentwire.yml.example +1 -1
  2. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/PKG-INFO +6 -6
  3. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/README.md +5 -5
  4. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/__init__.py +1 -1
  5. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/__main__.py +8 -7
  6. agentwire_dev-1.58.0/agentwire/chrome_tabs.py +124 -0
  7. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/config.py +10 -8
  8. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/config_cli.py +0 -1
  9. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/core.py +160 -190
  10. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/council/cli.py +9 -9
  11. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/council/state.py +3 -3
  12. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/diff_cli.py +1 -1
  13. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/doctor_cli.py +25 -26
  14. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/ensure_cli.py +11 -1
  15. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/handoff/parser.py +1 -1
  16. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/handoff/schema.py +1 -1
  17. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/handoff_cli.py +1 -1
  18. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/history_cli.py +19 -29
  19. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/hooks/damage-control/bash-tool-damage-control.py +105 -13
  20. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/hooks/damage-control/edit-tool-damage-control.py +105 -13
  21. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/hooks/damage-control/mcp-tool-damage-control.py +105 -13
  22. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/hooks/damage-control/read-tool-damage-control.py +105 -13
  23. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/hooks/damage-control/rules/agentwire.yaml +6 -0
  24. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/hooks/damage-control/write-tool-damage-control.py +105 -13
  25. agentwire_dev-1.58.0/agentwire/mcp_chrome.py +90 -0
  26. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/mcp_core.py +2 -2
  27. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/mcp_pane.py +4 -4
  28. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/mcp_server.py +1 -1
  29. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/mcp_session.py +57 -7
  30. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/mcp_voice.py +1 -1
  31. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/mcp_worktree.py +126 -25
  32. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/onboarding.py +3 -3
  33. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/pane_cli.py +31 -33
  34. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/project_config.py +55 -147
  35. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/projects.py +4 -4
  36. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/roles/__init__.py +56 -26
  37. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/roles/agentwire.md +10 -4
  38. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/roles/contributor.md +1 -1
  39. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/roles/correspondent.md +3 -3
  40. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/roles/orchestrator.md +1 -1
  41. agentwire_dev-1.56.1/agentwire/roles/worktree-session.md → agentwire_dev-1.58.0/agentwire/roles/worker-worktree.md +11 -8
  42. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/roles/worker.md +4 -2
  43. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/roles_cli.py +4 -4
  44. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/routes/permission.py +12 -57
  45. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/routes/projects.py +5 -8
  46. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/routes/sessions_admin.py +12 -19
  47. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/safety/_core.py +105 -13
  48. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/scheduler/dispatch.py +17 -17
  49. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/scheduler/models.py +1 -1
  50. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/scheduler/state.py +1 -1
  51. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/security.py +2 -2
  52. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/server.py +4 -40
  53. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/services.py +3 -3
  54. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/session_cli.py +551 -250
  55. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/css/desktop.css +1 -1
  56. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/command-palette.js +5 -16
  57. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/dead-key-suppressor.js +0 -5
  58. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/desktop.js +5 -17
  59. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/shortcuts.js +2 -2
  60. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/sidebar/sessions-section.js +2 -2
  61. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/sidebar.js +17 -6
  62. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/system_cli.py +4 -7
  63. agentwire_dev-1.58.0/agentwire/tabs_cli.py +89 -0
  64. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/tasks.py +16 -6
  65. agentwire_dev-1.58.0/agentwire/tasks_cli.py +299 -0
  66. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/tts_cli.py +17 -72
  67. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/worktree.py +41 -10
  68. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/worktree_registry.py +9 -0
  69. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/INDEX.md +5 -7
  70. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/architecture.md +12 -8
  71. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/briefing-mode.md +2 -2
  72. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/concepts.md +2 -2
  73. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/council.md +1 -1
  74. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/glossary.md +3 -7
  75. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/internals/damage-control.md +80 -6
  76. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/internals/parallel-refactor.md +1 -1
  77. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/internals/portal.md +3 -3
  78. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/internals/troubleshooting.md +1 -1
  79. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/internals/window-collage.md +1 -1
  80. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/quickstart.md +10 -6
  81. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/research/briefing-mode-feasibility.md +2 -0
  82. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/scheduling/scheduled-workloads.md +24 -14
  83. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/security/damage-control-hardening.md +12 -4
  84. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/security/secrets.md +0 -1
  85. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/services.md +1 -1
  86. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/sessions/claude-code-auto-mode.md +13 -13
  87. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/sessions/prompt-routing.md +10 -3
  88. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/sessions/worktree-sessions.md +36 -2
  89. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/voice/shim-contract.md +1 -1
  90. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/conftest.py +1 -1
  91. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/fixtures/sample_agentwire.yml +1 -1
  92. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/integration/test_scheduler_board.py +4 -4
  93. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/integration/test_worktree_cmd.py +332 -4
  94. agentwire_dev-1.58.0/tests/unit/test_build_agent_command.py +163 -0
  95. agentwire_dev-1.58.0/tests/unit/test_chrome_tabs.py +110 -0
  96. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_cli_commands.py +121 -23
  97. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_config_cli.py +1 -1
  98. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_control_plane_protection.py +149 -21
  99. agentwire_dev-1.58.0/tests/unit/test_core_created_by_rooting.py +117 -0
  100. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_council_cli.py +2 -2
  101. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_council_state.py +1 -1
  102. agentwire_dev-1.58.0/tests/unit/test_dangling_worktrees.py +142 -0
  103. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_mcp_server.py +3 -3
  104. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_mcp_tools_args.py +132 -5
  105. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_portal_api.py +7 -7
  106. agentwire_dev-1.58.0/tests/unit/test_posture_default.py +57 -0
  107. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_project_config.py +108 -125
  108. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_roles.py +69 -31
  109. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_scheduler.py +4 -4
  110. agentwire_dev-1.58.0/tests/unit/test_server_pure.py +50 -0
  111. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_services.py +1 -1
  112. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_task_cli.py +2 -2
  113. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_tasks.py +14 -6
  114. agentwire_dev-1.58.0/tests/unit/test_tasks_cli.py +171 -0
  115. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_usage_limit.py +1 -1
  116. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_worktree.py +61 -0
  117. agentwire_dev-1.58.0/tests/unit/test_worktree_branch_cleanup.py +165 -0
  118. agentwire_dev-1.56.1/agentwire/mcp_voiceclone.py +0 -81
  119. agentwire_dev-1.56.1/agentwire/voiceclone.py +0 -354
  120. agentwire_dev-1.56.1/docs/wiki/sessions/pi.md +0 -288
  121. agentwire_dev-1.56.1/tests/unit/test_build_agent_command.py +0 -392
  122. agentwire_dev-1.56.1/tests/unit/test_server_pure.py +0 -115
  123. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/.claude/commands/handoff.md +0 -0
  124. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/.claude/skills/wiki/SKILL.md +0 -0
  125. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/.github/FUNDING.yml +0 -0
  126. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  127. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  128. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/.github/ISSUE_TEMPLATE/question.md +0 -0
  129. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  130. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/.github/workflows/pytest.yml +0 -0
  131. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/.github/workflows/ruff.yml +0 -0
  132. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/.github/workflows/security.yml +0 -0
  133. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/.github/workflows/tts-smoke.yml +0 -0
  134. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/.gitignore +0 -0
  135. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/AGENTS.md +0 -0
  136. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/CODE_OF_CONDUCT.md +0 -0
  137. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/CONTRIBUTING.md +0 -0
  138. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/Dockerfile.local +0 -0
  139. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/LICENSE +0 -0
  140. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/RELEASING.md +0 -0
  141. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/SECURITY.md +0 -0
  142. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/SPONSORS.md +0 -0
  143. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/agents/__init__.py +0 -0
  144. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/agents/base.py +0 -0
  145. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/agents/tmux.py +0 -0
  146. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/cached_status.py +0 -0
  147. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/channels/__init__.py +0 -0
  148. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/channels/base.py +0 -0
  149. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/channels/email.py +0 -0
  150. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/channels/push.py +0 -0
  151. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/channels/quo.py +0 -0
  152. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/channels_cli.py +0 -0
  153. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/completion.py +0 -0
  154. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/council/__init__.py +0 -0
  155. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/council/inbox.py +0 -0
  156. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/council/minutes.py +0 -0
  157. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/council/view.py +0 -0
  158. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/devices.py +0 -0
  159. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/doctor_voice.py +0 -0
  160. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/fetch.py +0 -0
  161. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/handoff/__init__.py +0 -0
  162. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/handoff/git_state.py +0 -0
  163. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/handoff/instructions.py +0 -0
  164. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/handoff/renderer.py +0 -0
  165. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/history.py +0 -0
  166. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/hooks/__init__.py +0 -0
  167. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/hooks/agentwire-permission.sh +0 -0
  168. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/hooks/damage-control/__init__.py +0 -0
  169. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/hooks/damage-control/audit_logger.py +0 -0
  170. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/hooks/damage-control/rules/aws.yaml +0 -0
  171. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/hooks/damage-control/rules/cloud-hosting.yaml +0 -0
  172. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/hooks/damage-control/rules/containers.yaml +0 -0
  173. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/hooks/damage-control/rules/control-plane.yaml +0 -0
  174. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/hooks/damage-control/rules/core.yaml +0 -0
  175. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/hooks/damage-control/rules/databases.yaml +0 -0
  176. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/hooks/damage-control/rules/firebase.yaml +0 -0
  177. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/hooks/damage-control/rules/gcp.yaml +0 -0
  178. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/hooks/damage-control/rules/git.yaml +0 -0
  179. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/hooks/damage-control/rules/gws.yaml +0 -0
  180. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/hooks/damage-control/rules/infrastructure.yaml +0 -0
  181. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/hooks/damage-control/rules/outbound.yaml +0 -0
  182. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/hooks/damage-control/rules/publish.yaml +0 -0
  183. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/hooks/damage-control/rules/remote.yaml +0 -0
  184. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/hooks/idle-handler.sh +0 -0
  185. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/hooks/queue-processor.sh +0 -0
  186. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/hooks_cli.py +0 -0
  187. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/inbox.py +0 -0
  188. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/limits_cli.py +0 -0
  189. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/listen.py +0 -0
  190. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/locking.py +0 -0
  191. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/machine_cli.py +0 -0
  192. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/mcp_channels.py +0 -0
  193. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/mcp_cli.py +0 -0
  194. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/mcp_council.py +0 -0
  195. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/mcp_desktop.py +0 -0
  196. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/mcp_handoff.py +0 -0
  197. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/mcp_history.py +0 -0
  198. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/mcp_listen.py +0 -0
  199. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/mcp_lock.py +0 -0
  200. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/mcp_machine.py +0 -0
  201. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/mcp_msg.py +0 -0
  202. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/mcp_notify.py +0 -0
  203. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/mcp_projects.py +0 -0
  204. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/mcp_scheduler.py +0 -0
  205. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/mcp_scratchpad.py +0 -0
  206. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/mcp_services.py +0 -0
  207. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/mcp_status.py +0 -0
  208. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/mcp_task.py +0 -0
  209. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/mcp_tunnels.py +0 -0
  210. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/mcp_wiki.py +0 -0
  211. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/msg_cli.py +0 -0
  212. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/network.py +0 -0
  213. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/notify_cli.py +0 -0
  214. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/palette_cli.py +0 -0
  215. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/pane_manager.py +0 -0
  216. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/portal_cli.py +0 -0
  217. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/prompt_router.py +0 -0
  218. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/prompts_cli.py +0 -0
  219. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/push_cli.py +0 -0
  220. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/push_store.py +0 -0
  221. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/repo_cli.py +0 -0
  222. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/research.py +0 -0
  223. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/roles/anchor.md +0 -0
  224. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/roles/chatbot.md +0 -0
  225. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/roles/council-brain.md +0 -0
  226. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/roles/council-conscience.md +0 -0
  227. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/roles/council-critic.md +0 -0
  228. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/roles/council-devils-advocate.md +0 -0
  229. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/roles/council-gut.md +0 -0
  230. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/roles/council-historian.md +0 -0
  231. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/roles/council-member.md +0 -0
  232. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/roles/council-orchestrator.md +0 -0
  233. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/roles/init.md +0 -0
  234. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/roles/notifications.md +0 -0
  235. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/roles/soul.md +0 -0
  236. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/roles/task-runner.md +0 -0
  237. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/roles/voice.md +0 -0
  238. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/routes/__init__.py +0 -0
  239. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/routes/artifacts.py +0 -0
  240. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/routes/config.py +0 -0
  241. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/routes/council.py +0 -0
  242. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/routes/desktop.py +0 -0
  243. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/routes/history.py +0 -0
  244. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/routes/machines.py +0 -0
  245. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/routes/notify.py +0 -0
  246. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/routes/palette.py +0 -0
  247. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/routes/push.py +0 -0
  248. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/routes/safety.py +0 -0
  249. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/routes/scheduler.py +0 -0
  250. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/routes/scratchpad.py +0 -0
  251. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/routes/sessions.py +0 -0
  252. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/routes/voice.py +0 -0
  253. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/safety/__init__.py +0 -0
  254. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/safety_cli.py +0 -0
  255. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/safety_commands.py +0 -0
  256. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/scheduler/__init__.py +0 -0
  257. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/scheduler/gates.py +0 -0
  258. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/scheduler/loop.py +0 -0
  259. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/scheduler/report.py +0 -0
  260. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/scheduler/schedule.py +0 -0
  261. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/scheduler_cli.py +0 -0
  262. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/scratchpad.py +0 -0
  263. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/send_cli.py +0 -0
  264. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/session_context.py +0 -0
  265. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/session_ready.py +0 -0
  266. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/ssh.py +0 -0
  267. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/agentwire-splash-logo-layers--agentwire-text.png +0 -0
  268. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/agentwire-splash-logo-layers--echo-claw-fg.png +0 -0
  269. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/agentwire-splash-logo-layers--echo.png +0 -0
  270. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/agentwire-splash-logo-layers--telephone.png +0 -0
  271. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/agentwire-splash-logo-layers--tree.png +0 -0
  272. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/announcements.json +0 -0
  273. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/apple-touch-icon.png +0 -0
  274. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/css/mobile.css +0 -0
  275. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/favicon-32.png +0 -0
  276. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/favicon-64.png +0 -0
  277. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/icons/sessions/bear.webp +0 -0
  278. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/icons/sessions/cat.webp +0 -0
  279. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/icons/sessions/crown.webp +0 -0
  280. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/icons/sessions/custom/agentwire-portal.webp +0 -0
  281. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/icons/sessions/custom/agentwire-tts.webp +0 -0
  282. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/icons/sessions/custom/agentwire.webp +0 -0
  283. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/icons/sessions/deer.webp +0 -0
  284. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/icons/sessions/drone.webp +0 -0
  285. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/icons/sessions/eagle.webp +0 -0
  286. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/icons/sessions/fox.webp +0 -0
  287. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/icons/sessions/hawk.webp +0 -0
  288. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/icons/sessions/horse.webp +0 -0
  289. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/icons/sessions/lion.webp +0 -0
  290. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/icons/sessions/rabbit.webp +0 -0
  291. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/icons/sessions/robot.webp +0 -0
  292. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/icons/sessions/tiger.webp +0 -0
  293. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/icons/sessions/wolf.webp +0 -0
  294. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/img/icon-192.png +0 -0
  295. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/img/icon-512.png +0 -0
  296. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/.gitkeep +0 -0
  297. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/announcement-modal.js +0 -0
  298. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/api.js +0 -0
  299. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/artifact-window.js +0 -0
  300. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/collage.js +0 -0
  301. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/council-window.js +0 -0
  302. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/desktop-manager.js +0 -0
  303. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/help-modal.js +0 -0
  304. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/icon-manager.js +0 -0
  305. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/mobile.js +0 -0
  306. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/notification-prefs.js +0 -0
  307. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/notifications-panel.js +0 -0
  308. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/ptt.js +0 -0
  309. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/push-client.js +0 -0
  310. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/review-window.js +0 -0
  311. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/safety-shared.js +0 -0
  312. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/safety-window.js +0 -0
  313. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/scratchpad.js +0 -0
  314. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/service-classification.js +0 -0
  315. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/session-id.js +0 -0
  316. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/session-window.js +0 -0
  317. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/sidebar/artifacts-section.js +0 -0
  318. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/sidebar/config-section.js +0 -0
  319. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/sidebar/council-section.js +0 -0
  320. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/sidebar/machines-section.js +0 -0
  321. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/sidebar/projects-section.js +0 -0
  322. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/sidebar/safety-section.js +0 -0
  323. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/sidebar/scheduler-section.js +0 -0
  324. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/sidebar/services-section.js +0 -0
  325. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/terminal-font-prefs.js +0 -0
  326. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/tile-manager.js +0 -0
  327. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/toast.js +0 -0
  328. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/token-modal.js +0 -0
  329. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/utils/ansi.js +0 -0
  330. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/utils/swipe.js +0 -0
  331. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/voice/autosend-prefs.js +0 -0
  332. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/voice/browser-stt.js +0 -0
  333. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/voice/browser-tts.js +0 -0
  334. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/voice/jargon.js +0 -0
  335. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/voice/prompt.js +0 -0
  336. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/js/winbox.bundle.min.js +0 -0
  337. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/manifest.webmanifest +0 -0
  338. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/static/service-worker.js +0 -0
  339. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/stt/__init__.py +0 -0
  340. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/stt/base.py +0 -0
  341. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/stt/cloud.py +0 -0
  342. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/stt/engine.py +0 -0
  343. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/stt/local.py +0 -0
  344. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/stt/server_backend.py +0 -0
  345. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/stt/stt_server.py +0 -0
  346. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/templates/__init__.py +0 -0
  347. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/templates/base.html +0 -0
  348. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/templates/council/minutes.html.j2 +0 -0
  349. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/templates/desktop.html +0 -0
  350. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/templates/email_notification.html +0 -0
  351. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/templates/handoff/show-the-story.html.j2 +0 -0
  352. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/templates/handoff/theme.css.j2 +0 -0
  353. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/templates/mobile.html +0 -0
  354. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/templates/pair.html +0 -0
  355. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/templates/tmux.conf +0 -0
  356. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/templating.py +0 -0
  357. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/tooldefs/aws.yaml +0 -0
  358. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/tooldefs/docker.yaml +0 -0
  359. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/tooldefs/gcp.yaml +0 -0
  360. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/tooldefs/gh.yaml +0 -0
  361. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/tooldefs/git.yaml +0 -0
  362. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/tooldefs/gws.yaml +0 -0
  363. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/tooldefs/kubectl.yaml +0 -0
  364. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/tooldefs/npm.yaml +0 -0
  365. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/tooldefs/terraform.yaml +0 -0
  366. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/tooldefs/uv.yaml +0 -0
  367. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/tts/__init__.py +0 -0
  368. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/tts/audio.py +0 -0
  369. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/tts/base.py +0 -0
  370. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/tts/engines/__init__.py +0 -0
  371. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/tts/engines/chatterbox.py +0 -0
  372. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/tts/engines/kokoro.py +0 -0
  373. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/tts/engines/zonos.py +0 -0
  374. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/tts/kokoro_server.py +0 -0
  375. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/tts/local.py +0 -0
  376. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/tts/registry.py +0 -0
  377. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/tts_server.py +0 -0
  378. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/tunnels.py +0 -0
  379. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/tunnels_cli.py +0 -0
  380. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/usage_limit.py +0 -0
  381. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/utils/__init__.py +0 -0
  382. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/utils/chunker.py +0 -0
  383. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/utils/event_log.py +0 -0
  384. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/utils/file_io.py +0 -0
  385. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/utils/paths.py +0 -0
  386. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/utils/speech.py +0 -0
  387. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/utils/subprocess.py +0 -0
  388. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/validation.py +0 -0
  389. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/voice_status.py +0 -0
  390. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/wiki.py +0 -0
  391. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/wiki_audit.py +0 -0
  392. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/agentwire/wiki_cli.py +0 -0
  393. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/decisions/obsidian-second-brain.md +0 -0
  394. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/logo.png +0 -0
  395. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/communication/channels.md +0 -0
  396. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/communication/hammerspoon.md +0 -0
  397. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/communication/handoff.md +0 -0
  398. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/deployment/remote-access.md +0 -0
  399. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/deployment/remote-machines.md +0 -0
  400. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/integrations/gws-google-workspace-cli.md +0 -0
  401. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/internals/shell-escaping.md +0 -0
  402. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/research/orchestration-transport-alternatives.md +0 -0
  403. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/security/pip-audit.md +0 -0
  404. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/security/remote-access-hardening.md +0 -0
  405. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/sessions/messaging.md +0 -0
  406. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/sessions/window-sizing.md +0 -0
  407. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/usage-limit-recovery.md +0 -0
  408. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/voice/stt-cloud.md +0 -0
  409. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/voice/stt-self-hosted.md +0 -0
  410. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/docs/wiki/voice/tts-self-hosted.md +0 -0
  411. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/pyproject.toml +0 -0
  412. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/e2e/test_portal_ui.py +0 -0
  413. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/fixtures/sample_config.yaml +0 -0
  414. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/fixtures/sample_scheduler.yaml +0 -0
  415. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/integration/test_council_portal.py +0 -0
  416. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/integration/test_send_verified_tmux.py +0 -0
  417. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/integration/test_server_websockets.py +0 -0
  418. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_announcements.py +0 -0
  419. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_channels.py +0 -0
  420. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_cli_output.py +0 -0
  421. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_cli_smoke.py +0 -0
  422. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_config.py +0 -0
  423. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_council_inbox.py +0 -0
  424. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_council_minutes.py +0 -0
  425. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_council_view.py +0 -0
  426. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_damage_control_bypass.py +0 -0
  427. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_damage_control_hooks.py +0 -0
  428. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_damage_control_sync.py +0 -0
  429. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_devices.py +0 -0
  430. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_diff_cli.py +0 -0
  431. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_doctor_voice.py +0 -0
  432. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_event_log.py +0 -0
  433. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_file_io.py +0 -0
  434. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_handoff_git_state.py +0 -0
  435. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_handoff_instructions.py +0 -0
  436. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_handoff_parser.py +0 -0
  437. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_handoff_renderer.py +0 -0
  438. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_history.py +0 -0
  439. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_hooks_install.py +0 -0
  440. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_idle_handler.py +0 -0
  441. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_idle_nag.py +0 -0
  442. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_inbox.py +0 -0
  443. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_init_command.py +0 -0
  444. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_install_parity.py +0 -0
  445. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_limits_tick_isolation.py +0 -0
  446. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_locking.py +0 -0
  447. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_msg_cli.py +0 -0
  448. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_notify_cli.py +0 -0
  449. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_onboarding_reinit.py +0 -0
  450. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_palette_cli.py +0 -0
  451. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_pip_environment.py +0 -0
  452. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_prompt_router.py +0 -0
  453. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_push.py +0 -0
  454. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_rebuild_guard.py +0 -0
  455. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_repo_cli.py +0 -0
  456. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_routes_snapshot.py +0 -0
  457. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_safety_commands.py +0 -0
  458. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_safety_disabled_rules.py +0 -0
  459. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_safety_escape_hatch.py +0 -0
  460. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_safety_heal.py +0 -0
  461. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_safety_kill_switch.py +0 -0
  462. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_scheduler_parsing.py +0 -0
  463. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_scratchpad.py +0 -0
  464. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_security.py +0 -0
  465. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_server_async.py +0 -0
  466. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_session_context.py +0 -0
  467. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_session_ready.py +0 -0
  468. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_shared_dir_guard.py +0 -0
  469. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_skill_install.py +0 -0
  470. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_speech_tags.py +0 -0
  471. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_ssh.py +0 -0
  472. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_stt_backend.py +0 -0
  473. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_stt_cloud.py +0 -0
  474. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_stt_engine.py +0 -0
  475. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_templating.py +0 -0
  476. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_terminal_resize.py +0 -0
  477. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_tmux_template.py +0 -0
  478. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_tts_engine_resolution.py +0 -0
  479. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_tts_local.py +0 -0
  480. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_tunnels_probe.py +0 -0
  481. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_unattended_env_isolation.py +0 -0
  482. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_validation.py +0 -0
  483. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_voice_status.py +0 -0
  484. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_wiki.py +0 -0
  485. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_wiki_audit.py +0 -0
  486. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_window_cycling_binding.py +0 -0
  487. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_worktree_layout.py +0 -0
  488. {agentwire_dev-1.56.1 → agentwire_dev-1.58.0}/tests/unit/test_worktree_registry.py +0 -0
@@ -9,6 +9,6 @@
9
9
  # template (a live `.agentwire.yml` is resolved before the `.example` fallback).
10
10
  # The repo owner uses this to layer an untracked owner-override role:
11
11
  # roles: [contributor, owner-override]
12
- type: claude-bypass
12
+ posture: bypass
13
13
  roles:
14
14
  - contributor
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentwire-dev
3
- Version: 1.56.1
3
+ Version: 1.58.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
@@ -356,7 +356,7 @@ agentwire new -s hello -p ~/projects/hello
356
356
 
357
357
  > **Optional:** clone this repo (`git clone https://github.com/dotdevdotdev/agentwire-dev ~/projects/agentwire-dev`) and `agentwire dev` opens a guided helper session inside it — setup walkthrough, project wiring, issue filing, forking. It requires the source checkout; everything above works without one.
358
358
 
359
- **Requirements:** Python 3.10+, tmux, Claude Code. Optional: ffmpeg (only for host-mic push-to-talk capture and voice cloning — browser voice input works without it).
359
+ **Requirements:** Python 3.10+, tmux, Claude Code. Optional: ffmpeg (only for host-mic push-to-talk capture — browser voice input works without it).
360
360
 
361
361
  **Honest setup time:** under a minute to a working voice portal with a genuinely good voice — Kokoro-82M runs on CPU out of the box (one-time ~200 MB model download in the background; the browser voice covers the wait). ~15 minutes for the full experience: cloned voices via a self-hosted TTS shim, Whisper-grade transcription, phone-from-anywhere (certs + token).
362
362
 
@@ -382,7 +382,7 @@ Origin checks reject cross-site browser requests on every bind. Keep the portal
382
382
 
383
383
  **macOS:**
384
384
  ```bash
385
- brew install tmux uv # ffmpeg optional: only for host-mic PTT + voice cloning
385
+ brew install tmux uv # ffmpeg optional: only for host-mic PTT
386
386
  uv tool install agentwire-dev
387
387
  ```
388
388
 
@@ -390,7 +390,7 @@ uv tool install agentwire-dev
390
390
 
391
391
  **Ubuntu/Debian:**
392
392
  ```bash
393
- sudo apt install tmux # ffmpeg optional: only for host-mic PTT + voice cloning
393
+ sudo apt install tmux # ffmpeg optional: only for host-mic PTT
394
394
  curl -LsSf https://astral.sh/uv/install.sh | sh
395
395
  uv tool install agentwire-dev
396
396
  ```
@@ -451,7 +451,7 @@ AgentWire supports orchestrator/worker patterns for complex tasks:
451
451
  ```yaml
452
452
  # .agentwire.yml in your project (keep it gitignored — it's personal config,
453
453
  # and tracked copies break worktree dispatch; agentwire adds it to .gitignore for you)
454
- type: claude-bypass
454
+ posture: bypass
455
455
  roles:
456
456
  - agentwire
457
457
  - voice
@@ -556,7 +556,7 @@ agentwire kill --pane 1 # Kill worker
556
556
  agentwire say "Hello" # TTS (auto-routes to browser)
557
557
  agentwire send -s NAME "Done" # Inject text into a session
558
558
  agentwire listen start/stop # Voice recording
559
- agentwire voiceclone list # Custom voices
559
+ agentwire tts voices # List available voices
560
560
  ```
561
561
 
562
562
  </details>
@@ -89,7 +89,7 @@ agentwire new -s hello -p ~/projects/hello
89
89
 
90
90
  > **Optional:** clone this repo (`git clone https://github.com/dotdevdotdev/agentwire-dev ~/projects/agentwire-dev`) and `agentwire dev` opens a guided helper session inside it — setup walkthrough, project wiring, issue filing, forking. It requires the source checkout; everything above works without one.
91
91
 
92
- **Requirements:** Python 3.10+, tmux, Claude Code. Optional: ffmpeg (only for host-mic push-to-talk capture and voice cloning — browser voice input works without it).
92
+ **Requirements:** Python 3.10+, tmux, Claude Code. Optional: ffmpeg (only for host-mic push-to-talk capture — browser voice input works without it).
93
93
 
94
94
  **Honest setup time:** under a minute to a working voice portal with a genuinely good voice — Kokoro-82M runs on CPU out of the box (one-time ~200 MB model download in the background; the browser voice covers the wait). ~15 minutes for the full experience: cloned voices via a self-hosted TTS shim, Whisper-grade transcription, phone-from-anywhere (certs + token).
95
95
 
@@ -115,7 +115,7 @@ Origin checks reject cross-site browser requests on every bind. Keep the portal
115
115
 
116
116
  **macOS:**
117
117
  ```bash
118
- brew install tmux uv # ffmpeg optional: only for host-mic PTT + voice cloning
118
+ brew install tmux uv # ffmpeg optional: only for host-mic PTT
119
119
  uv tool install agentwire-dev
120
120
  ```
121
121
 
@@ -123,7 +123,7 @@ uv tool install agentwire-dev
123
123
 
124
124
  **Ubuntu/Debian:**
125
125
  ```bash
126
- sudo apt install tmux # ffmpeg optional: only for host-mic PTT + voice cloning
126
+ sudo apt install tmux # ffmpeg optional: only for host-mic PTT
127
127
  curl -LsSf https://astral.sh/uv/install.sh | sh
128
128
  uv tool install agentwire-dev
129
129
  ```
@@ -184,7 +184,7 @@ AgentWire supports orchestrator/worker patterns for complex tasks:
184
184
  ```yaml
185
185
  # .agentwire.yml in your project (keep it gitignored — it's personal config,
186
186
  # and tracked copies break worktree dispatch; agentwire adds it to .gitignore for you)
187
- type: claude-bypass
187
+ posture: bypass
188
188
  roles:
189
189
  - agentwire
190
190
  - voice
@@ -289,7 +289,7 @@ agentwire kill --pane 1 # Kill worker
289
289
  agentwire say "Hello" # TTS (auto-routes to browser)
290
290
  agentwire send -s NAME "Done" # Inject text into a session
291
291
  agentwire listen start/stop # Voice recording
292
- agentwire voiceclone list # Custom voices
292
+ agentwire tts voices # List available voices
293
293
  ```
294
294
 
295
295
  </details>
@@ -1,3 +1,3 @@
1
1
  """AgentWire - Multi-session voice web interface for AI coding agents."""
2
2
 
3
- __version__ = "1.56.1"
3
+ __version__ = "1.58.0"
@@ -16,9 +16,8 @@ from . import ( # noqa: E402 # must follow load_dotenv() above
16
16
  from .core import ( # noqa: E402,F401 # E402: must follow load_dotenv(); F401: re-exported moved helpers
17
17
  _UNATTENDED_ENV_KEYS,
18
18
  CONFIG_DIR,
19
- KIND_DEFAULT_POSTURE,
20
19
  AgentCommand,
21
- _add_posture_harness_flags,
20
+ _add_posture_flag,
22
21
  _build_tmux_env_flags,
23
22
  _build_tmux_env_flags_shell,
24
23
  _check_portal_health,
@@ -39,7 +38,7 @@ from .core import ( # noqa: E402,F401 # E402: must follow load_dotenv(); F401:
39
38
  _portal_auth_headers,
40
39
  _post_desktop_notification,
41
40
  _record_session_creator,
42
- _resolve_session_type_from_args,
41
+ _resolve_posture_from_args,
43
42
  _run_remote,
44
43
  _set_session_name_env,
45
44
  _start_portal_local,
@@ -119,7 +118,6 @@ Command Categories:
119
118
 
120
119
  Voice:
121
120
  listen Voice input recording
122
- voiceclone Record and upload voice clones
123
121
  tts Manage TTS server
124
122
  stt Manage STT server
125
123
 
@@ -188,10 +186,11 @@ Command Categories:
188
186
  from . import diff_cli, limits_cli, msg_cli, pane_cli, prompts_cli, send_cli # noqa: I001 # session_cli kept on its own line below to minimize Phase 1 #495 merge conflicts
189
187
  from . import session_cli
190
188
  from . import channels_cli, config_cli, portal_cli, tts_cli
191
- from . import scheduler_cli, ensure_cli
189
+ from . import scheduler_cli, ensure_cli, tasks_cli
192
190
  from . import doctor_cli, history_cli, machine_cli, safety_cli
193
191
  from . import handoff_cli, hooks_cli, mcp_cli, roles_cli, tunnels_cli
194
192
  from . import notify_cli, palette_cli, push_cli, repo_cli, system_cli, wiki_cli
193
+ from . import tabs_cli
195
194
  from .council import cli as council_cli
196
195
 
197
196
  _REGISTRARS = [ # noqa: N806 # registry constant; Phase 1 of #495 appends here
@@ -207,6 +206,7 @@ Command Categories:
207
206
  channels_cli.register_channels_parser,
208
207
  scheduler_cli.register_scheduler_parser,
209
208
  ensure_cli.register_ensure_parser,
209
+ tasks_cli.register_tasks_parser,
210
210
  doctor_cli.register_doctor_parser,
211
211
  safety_cli.register_safety_parser,
212
212
  machine_cli.register_machine_parser,
@@ -224,6 +224,7 @@ Command Categories:
224
224
  repo_cli.register_repo_parser,
225
225
  config_cli.register_config_parser,
226
226
  palette_cli.register_palette_parser,
227
+ tabs_cli.register_tabs_parser,
227
228
  ]
228
229
  for _reg in _REGISTRARS:
229
230
  _reg(subparsers)
@@ -255,7 +256,7 @@ Command Categories:
255
256
  c_start.add_argument(
256
257
  "--roster", help="Comma-separated lens names (default: full bundled roster)"
257
258
  )
258
- c_start.add_argument("--type", help="Session type (default: claude-bypass)")
259
+ c_start.add_argument("--posture", help="Permission mode for council sessions (default: bypass)")
259
260
  c_start.add_argument("--model", help="Model override for all council sessions")
260
261
  c_start.add_argument(
261
262
  "--force", action="store_true", help="Tear down a live sitting first"
@@ -389,7 +390,7 @@ def _find_subparser(parser: argparse.ArgumentParser, *names: str):
389
390
  _GROUP_COMMANDS = [
390
391
  "portal", "tts", "stt", "tunnels", "machine", "history", "handoff",
391
392
  "wiki", "hooks", "projects", "safety", "network", "listen",
392
- "voiceclone", "roles", "task", "lock", "scheduler", "council", "limits",
393
+ "roles", "task", "lock", "scheduler", "council", "limits",
393
394
  "config",
394
395
  ]
395
396
 
@@ -0,0 +1,124 @@
1
+ """Tracks claude-in-chrome tab ids opened by a session (#717).
2
+
3
+ Worktree sessions open claude-in-chrome tabs to e2e-verify their work before
4
+ opening a PR. Those tabs are never closed if the session finishes without
5
+ tidying up after itself, or dies mid-work — this module is pure bookkeeping
6
+ so a crashed session's orphaned tabs can still be identified during teardown.
7
+
8
+ agentwire has no way to call `tabs_close_mcp` itself: that MCP server runs
9
+ inside the CALLING agent's own client, not agentwire's process. So this only
10
+ tracks tab ids; the actual close always happens at the LLM/agent layer —
11
+ either the session closing its own tabs before finishing (the normal path),
12
+ or `worktree_remove` surfacing untracked-but-still-open tab ids to whichever
13
+ agent runs the teardown (the crash backstop).
14
+
15
+ Layout: one JSON file (``~/.agentwire/chrome-tabs.json``), keyed by session
16
+ name -> list of ``{tab_id, url, tracked_at}``. Plain JSON, hand-editable.
17
+ """
18
+
19
+ import contextlib
20
+ import datetime
21
+ import fcntl
22
+ import json
23
+ import os
24
+ import tempfile
25
+ from pathlib import Path
26
+
27
+ REGISTRY_FILE = Path.home() / ".agentwire" / "chrome-tabs.json"
28
+
29
+
30
+ @contextlib.contextmanager
31
+ def _locked():
32
+ """Serialize read-modify-write across processes via an flock sidecar."""
33
+ REGISTRY_FILE.parent.mkdir(parents=True, exist_ok=True)
34
+ lock_path = REGISTRY_FILE.with_suffix(REGISTRY_FILE.suffix + ".lock")
35
+ fd = os.open(str(lock_path), os.O_CREAT | os.O_RDWR, 0o644)
36
+ try:
37
+ fcntl.flock(fd, fcntl.LOCK_EX)
38
+ yield
39
+ finally:
40
+ fcntl.flock(fd, fcntl.LOCK_UN)
41
+ os.close(fd)
42
+
43
+
44
+ def _load() -> dict:
45
+ if not REGISTRY_FILE.exists():
46
+ return {}
47
+ try:
48
+ data = json.loads(REGISTRY_FILE.read_text())
49
+ return data if isinstance(data, dict) else {}
50
+ except (json.JSONDecodeError, OSError):
51
+ return {}
52
+
53
+
54
+ def _save(data: dict) -> None:
55
+ """Atomically write the registry (temp file in same dir + os.replace)."""
56
+ REGISTRY_FILE.parent.mkdir(parents=True, exist_ok=True)
57
+ payload = json.dumps(data, indent=2) + "\n"
58
+ fd, tmp = tempfile.mkstemp(dir=str(REGISTRY_FILE.parent), prefix=REGISTRY_FILE.name + ".", suffix=".tmp")
59
+ try:
60
+ with os.fdopen(fd, "w") as f:
61
+ f.write(payload)
62
+ f.flush()
63
+ os.fsync(f.fileno())
64
+ os.replace(tmp, REGISTRY_FILE) # atomic on POSIX
65
+ except BaseException:
66
+ with contextlib.suppress(OSError):
67
+ os.unlink(tmp)
68
+ raise
69
+
70
+
71
+ def track(session: str, tab_id: str, url: str | None = None) -> dict:
72
+ """Record that ``session`` opened claude-in-chrome tab ``tab_id``.
73
+
74
+ Idempotent per (session, tab_id) — re-tracking the same tab just refreshes
75
+ its entry rather than duplicating it.
76
+ """
77
+ entry = {
78
+ "tab_id": tab_id,
79
+ "url": url,
80
+ "tracked_at": datetime.datetime.now().astimezone().isoformat(timespec="seconds"),
81
+ }
82
+ with _locked():
83
+ data = _load()
84
+ tabs = [t for t in data.get(session, []) if t.get("tab_id") != tab_id]
85
+ tabs.append(entry)
86
+ data[session] = tabs
87
+ _save(data)
88
+ return entry
89
+
90
+
91
+ def untrack(session: str, tab_id: str) -> bool:
92
+ """Drop a tracked tab (the session closed it itself). Returns whether it was tracked."""
93
+ with _locked():
94
+ data = _load()
95
+ tabs = data.get(session, [])
96
+ remaining = [t for t in tabs if t.get("tab_id") != tab_id]
97
+ removed = len(remaining) != len(tabs)
98
+ if remaining:
99
+ data[session] = remaining
100
+ else:
101
+ data.pop(session, None)
102
+ if removed:
103
+ _save(data)
104
+ return removed
105
+
106
+
107
+ def tabs_for(session: str) -> list[dict]:
108
+ """All tracked tabs for a session (read-only)."""
109
+ return _load().get(session, [])
110
+
111
+
112
+ def clear(session: str) -> list[dict]:
113
+ """Drop + return every tracked tab for a session — the teardown backstop."""
114
+ with _locked():
115
+ data = _load()
116
+ tabs = data.pop(session, [])
117
+ if tabs:
118
+ _save(data)
119
+ return tabs
120
+
121
+
122
+ def all_tabs() -> dict[str, list[dict]]:
123
+ """Every session -> tracked-tabs mapping (read-only, for listing/debugging)."""
124
+ return _load()
@@ -101,9 +101,11 @@ class WorktreesConfig:
101
101
  # Gitignored files that `git worktree add` won't carry over (it only
102
102
  # checks out tracked files). These are copied from the main repo into
103
103
  # each fresh worktree so agents have the secrets/config they need.
104
- # .agentwire.yml is included because worktree-dispatched tasks can't
105
- # load their task definition without it when the project gitignores it.
106
- copy_files: list = field(default_factory=lambda: [".env", ".agentwire.yml"])
104
+ # .agentwire.yml/.agentwire.tasks.yml are included because worktree-dispatched
105
+ # tasks can't load their session/task config without them when the project
106
+ # gitignores them (the latter is the protected, host-authored task-exec file —
107
+ # #720).
108
+ copy_files: list = field(default_factory=lambda: [".env", ".agentwire.yml", ".agentwire.tasks.yml"])
107
109
 
108
110
 
109
111
  @dataclass
@@ -120,7 +122,7 @@ class ProjectsConfig:
120
122
 
121
123
  @dataclass
122
124
  class WorktreeConfig:
123
- """Standalone worktree-session orchestration (`worktree:` config key).
125
+ """Standalone worktree session orchestration (`worktree:` config key).
124
126
 
125
127
  Governs `agentwire worktree <name>` — the first-class primitive for
126
128
  spawning an isolated branch+worktree+session for one unit of work.
@@ -355,7 +357,7 @@ class CustomServiceConfig:
355
357
  Custom services show up in the portal's Services column, are booted by
356
358
  `agentwire up` AND on portal launch, and are watched by the portal's
357
359
  service watchdog. A service is just an agentwire session created in a
358
- project directory; `roles`/`type` override the project's .agentwire.yml
360
+ project directory; `roles`/`posture` override the project's .agentwire.yml
359
361
  when set.
360
362
 
361
363
  restart: never | on-failure | always — what the watchdog does when the
@@ -367,7 +369,7 @@ class CustomServiceConfig:
367
369
  project: Optional[str] = None
368
370
  autostart: bool = True
369
371
  roles: Optional[str] = None # comma-separated; overrides project .agentwire.yml
370
- type: Optional[str] = None # session type override (e.g. claude-bypass)
372
+ posture: Optional[str] = None # posture override (e.g. bypass, auto)
371
373
  restart: str = "on-failure" # never | on-failure | always
372
374
  healthcheck: HealthcheckConfig = field(default_factory=HealthcheckConfig)
373
375
  # Context auto-management policy (issue #442): clear | compact | none.
@@ -621,7 +623,7 @@ def _dict_to_config(data: dict) -> Config:
621
623
  enabled=worktrees_data.get("enabled", True),
622
624
  suffix=worktrees_data.get("suffix", "-worktrees"),
623
625
  auto_create_branch=worktrees_data.get("auto_create_branch", True),
624
- copy_files=worktrees_data.get("copy_files", [".env", ".agentwire.yml"]),
626
+ copy_files=worktrees_data.get("copy_files", [".env", ".agentwire.yml", ".agentwire.tasks.yml"]),
625
627
  )
626
628
  projects = ProjectsConfig(
627
629
  dir=projects_data.get("dir", "~/projects"),
@@ -737,7 +739,7 @@ def _dict_to_config(data: dict) -> Config:
737
739
  project=entry.get("project"),
738
740
  autostart=entry.get("autostart", True),
739
741
  roles=entry.get("roles"),
740
- type=entry.get("type"),
742
+ posture=entry.get("posture"),
741
743
  restart=entry.get("restart", "on-failure"),
742
744
  healthcheck=healthcheck,
743
745
  context_policy=context_policy,
@@ -25,7 +25,6 @@ EXECUTION_PLANE_PREFIXES = (
25
25
  "services.",
26
26
  "executables.",
27
27
  "agent.",
28
- "pi.",
29
28
  "hooks.",
30
29
  "dev.",
31
30
  "palette.", # user palette `run` templates feed the shell (#676)