agentwire-dev 1.34.0__tar.gz → 1.35.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 (368) hide show
  1. agentwire_dev-1.35.0/.github/workflows/tts-smoke.yml +104 -0
  2. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/CHANGELOG.md +1 -0
  3. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/PKG-INFO +9 -7
  4. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/README.md +5 -5
  5. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/__init__.py +1 -1
  6. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/__main__.py +365 -80
  7. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/completion.py +18 -2
  8. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/config.py +30 -2
  9. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/hooks/idle-handler.sh +7 -0
  10. agentwire_dev-1.35.0/agentwire/limits_cli.py +191 -0
  11. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/mcp_server.py +2 -1
  12. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/onboarding.py +8 -4
  13. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/overnight.py +5 -0
  14. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/roles/init.md +4 -4
  15. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/scheduler.py +54 -4
  16. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/server.py +179 -79
  17. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/css/desktop.css +24 -0
  18. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/sidebar/sessions-section.js +55 -2
  19. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/templates/desktop.html +2 -1
  20. agentwire_dev-1.35.0/agentwire/tts/audio.py +22 -0
  21. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/tts/base.py +2 -1
  22. agentwire_dev-1.35.0/agentwire/tts/engines/__init__.py +27 -0
  23. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/tts/engines/kokoro.py +85 -32
  24. agentwire_dev-1.35.0/agentwire/tts/local.py +149 -0
  25. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/tts/registry.py +14 -11
  26. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/tts_server.py +42 -26
  27. agentwire_dev-1.35.0/agentwire/usage_limit.py +652 -0
  28. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/docs/wiki/INDEX.md +4 -2
  29. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/docs/wiki/architecture.md +2 -2
  30. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/docs/wiki/glossary.md +1 -1
  31. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/docs/wiki/internals/troubleshooting.md +11 -1
  32. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/docs/wiki/quickstart.md +8 -4
  33. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/docs/wiki/sessions/pi.md +5 -9
  34. agentwire_dev-1.35.0/docs/wiki/usage-limit-recovery.md +164 -0
  35. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/docs/wiki/voice/shim-contract.md +2 -2
  36. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/docs/wiki/voice/tts-self-hosted.md +7 -7
  37. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/pyproject.toml +9 -2
  38. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_build_agent_command.py +3 -3
  39. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_idle_handler.py +21 -0
  40. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_server_async.py +44 -0
  41. agentwire_dev-1.35.0/tests/unit/test_tts_local.py +297 -0
  42. agentwire_dev-1.35.0/tests/unit/test_usage_limit.py +666 -0
  43. agentwire_dev-1.34.0/agentwire/search.py +0 -164
  44. agentwire_dev-1.34.0/agentwire/tts/engines/__init__.py +0 -18
  45. agentwire_dev-1.34.0/tests/unit/test_search.py +0 -196
  46. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/.github/FUNDING.yml +0 -0
  47. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  48. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  49. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/.github/ISSUE_TEMPLATE/question.md +0 -0
  50. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  51. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/.gitignore +0 -0
  52. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/CLA.md +0 -0
  53. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/CODE_OF_CONDUCT.md +0 -0
  54. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/CONTRIBUTING.md +0 -0
  55. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/Dockerfile.local +0 -0
  56. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/Dockerfile.runpod +0 -0
  57. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/LICENSE +0 -0
  58. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/RELEASING.md +0 -0
  59. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/SECURITY.md +0 -0
  60. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/SPONSORS.md +0 -0
  61. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/agents/__init__.py +0 -0
  62. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/agents/base.py +0 -0
  63. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/agents/tmux.py +0 -0
  64. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/cached_status.py +0 -0
  65. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/channels/__init__.py +0 -0
  66. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/channels/base.py +0 -0
  67. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/channels/email.py +0 -0
  68. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/channels/quo.py +0 -0
  69. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/cli_safety.py +0 -0
  70. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/council/__init__.py +0 -0
  71. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/council/cli.py +0 -0
  72. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/council/inbox.py +0 -0
  73. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/council/state.py +0 -0
  74. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/fetch.py +0 -0
  75. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/handoff/__init__.py +0 -0
  76. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/handoff/git_state.py +0 -0
  77. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/handoff/instructions.py +0 -0
  78. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/handoff/parser.py +0 -0
  79. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/handoff/renderer.py +0 -0
  80. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/handoff/schema.py +0 -0
  81. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/history.py +0 -0
  82. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/hooks/__init__.py +0 -0
  83. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/hooks/agentwire-permission.sh +0 -0
  84. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/hooks/damage-control/__init__.py +0 -0
  85. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/hooks/damage-control/audit_logger.py +0 -0
  86. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/hooks/damage-control/bash-tool-damage-control.py +0 -0
  87. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/hooks/damage-control/edit-tool-damage-control.py +0 -0
  88. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/hooks/damage-control/rules/agentwire.yaml +0 -0
  89. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/hooks/damage-control/rules/aws.yaml +0 -0
  90. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/hooks/damage-control/rules/cloud-hosting.yaml +0 -0
  91. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/hooks/damage-control/rules/containers.yaml +0 -0
  92. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/hooks/damage-control/rules/core.yaml +0 -0
  93. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/hooks/damage-control/rules/databases.yaml +0 -0
  94. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/hooks/damage-control/rules/firebase.yaml +0 -0
  95. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/hooks/damage-control/rules/gcp.yaml +0 -0
  96. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/hooks/damage-control/rules/git.yaml +0 -0
  97. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/hooks/damage-control/rules/gws.yaml +0 -0
  98. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/hooks/damage-control/rules/infrastructure.yaml +0 -0
  99. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/hooks/damage-control/rules/remote.yaml +0 -0
  100. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/hooks/damage-control/write-tool-damage-control.py +0 -0
  101. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/hooks/queue-processor.sh +0 -0
  102. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/listen.py +0 -0
  103. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/locking.py +0 -0
  104. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/missions/__init__.py +0 -0
  105. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/missions/cli.py +0 -0
  106. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/missions/config.py +0 -0
  107. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/missions/dispatcher.py +0 -0
  108. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/missions/eligibility.py +0 -0
  109. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/missions/feedback_router.py +0 -0
  110. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/missions/gc.py +0 -0
  111. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/missions/github.py +0 -0
  112. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/missions/naming.py +0 -0
  113. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/missions/state.py +0 -0
  114. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/network.py +0 -0
  115. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/pane_manager.py +0 -0
  116. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/project_config.py +0 -0
  117. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/projects.py +0 -0
  118. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/prompts/__init__.py +0 -0
  119. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/prompts/init.md +0 -0
  120. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/roles/__init__.py +0 -0
  121. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/roles/agentwire.md +0 -0
  122. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/roles/chatbot.md +0 -0
  123. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/roles/council-brain.md +0 -0
  124. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/roles/council-conscience.md +0 -0
  125. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/roles/council-critic.md +0 -0
  126. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/roles/council-devils-advocate.md +0 -0
  127. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/roles/council-gut.md +0 -0
  128. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/roles/council-historian.md +0 -0
  129. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/roles/council-member.md +0 -0
  130. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/roles/council-orchestrator.md +0 -0
  131. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/roles/notifications.md +0 -0
  132. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/roles/orchestrator.md +0 -0
  133. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/roles/soul.md +0 -0
  134. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/roles/task-runner.md +0 -0
  135. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/roles/voice.md +0 -0
  136. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/roles/worker.md +0 -0
  137. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/safety/__init__.py +0 -0
  138. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/safety/_core.py +0 -0
  139. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/scratchpad.py +0 -0
  140. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/security.py +0 -0
  141. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/services.py +0 -0
  142. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/session_ready.py +0 -0
  143. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/agentwire-Echo--black.png +0 -0
  144. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/agentwire-Echo--transparent.png +0 -0
  145. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/agentwire-Echo.png +0 -0
  146. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/agentwire-email-banner.png +0 -0
  147. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/agentwire-splash-logo-layers--agentwire-text.png +0 -0
  148. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/agentwire-splash-logo-layers--echo-claw-fg.png +0 -0
  149. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/agentwire-splash-logo-layers--echo.png +0 -0
  150. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/agentwire-splash-logo-layers--full--transparent-top.png +0 -0
  151. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/agentwire-splash-logo-layers--full-black.png +0 -0
  152. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/agentwire-splash-logo-layers--telephone-fg.png +0 -0
  153. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/agentwire-splash-logo-layers--telephone.png +0 -0
  154. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/agentwire-splash-logo-layers--transparent-top.png +0 -0
  155. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/agentwire-splash-logo-layers--transparent.png +0 -0
  156. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/agentwire-splash-logo-layers--tree.png +0 -0
  157. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/agentwire-splash-logo-layers.png +0 -0
  158. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/announcements.json +0 -0
  159. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/favicon.png +0 -0
  160. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/machines/android.jpeg +0 -0
  161. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/machines/automaton.jpeg +0 -0
  162. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/machines/bot.jpeg +0 -0
  163. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/machines/cyborg.jpeg +0 -0
  164. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/machines/droid.jpeg +0 -0
  165. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/machines/drone.jpeg +0 -0
  166. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/machines/guardian.jpeg +0 -0
  167. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/machines/mech.jpeg +0 -0
  168. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/machines/probe.jpeg +0 -0
  169. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/machines/robot.jpeg +0 -0
  170. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/machines/sentinel.jpeg +0 -0
  171. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/machines/unit.jpeg +0 -0
  172. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/projects/blob.jpeg +0 -0
  173. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/projects/cloud.jpeg +0 -0
  174. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/projects/crystal.jpeg +0 -0
  175. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/projects/cyclops.jpeg +0 -0
  176. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/projects/flame.jpeg +0 -0
  177. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/projects/fuzzy.jpeg +0 -0
  178. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/projects/horned.jpeg +0 -0
  179. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/projects/moon.jpeg +0 -0
  180. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/projects/slime.jpeg +0 -0
  181. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/projects/star.jpeg +0 -0
  182. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/projects/tentacle.jpeg +0 -0
  183. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/projects/winged.jpeg +0 -0
  184. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/sessions/bear.jpeg +0 -0
  185. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/sessions/cat.jpeg +0 -0
  186. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/sessions/crown.jpeg +0 -0
  187. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/sessions/custom/agentwire-portal.png +0 -0
  188. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/sessions/custom/agentwire-tts.png +0 -0
  189. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/sessions/custom/agentwire.png +0 -0
  190. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/sessions/deer.jpeg +0 -0
  191. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/sessions/drone.jpeg +0 -0
  192. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/sessions/eagle.jpeg +0 -0
  193. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/sessions/fox.jpeg +0 -0
  194. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/sessions/hawk.jpeg +0 -0
  195. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/sessions/horse.jpeg +0 -0
  196. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/sessions/lion.jpeg +0 -0
  197. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/sessions/rabbit.jpeg +0 -0
  198. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/sessions/robot.jpeg +0 -0
  199. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/sessions/tiger.jpeg +0 -0
  200. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/icons/sessions/wolf.jpeg +0 -0
  201. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/.gitkeep +0 -0
  202. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/announcement-modal.js +0 -0
  203. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/api.js +0 -0
  204. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/artifact-window.js +0 -0
  205. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/collage.js +0 -0
  206. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/command-palette.js +0 -0
  207. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/components/icon-picker.js +0 -0
  208. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/components/list-card.js +0 -0
  209. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/components/type-tag.js +0 -0
  210. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/dead-key-suppressor.js +0 -0
  211. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/desktop-manager.js +0 -0
  212. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/desktop.js +0 -0
  213. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/icon-manager.js +0 -0
  214. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/notification-prefs.js +0 -0
  215. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/notifications-panel.js +0 -0
  216. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/safety-shared.js +0 -0
  217. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/safety-window.js +0 -0
  218. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/scratchpad.js +0 -0
  219. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/session-id.js +0 -0
  220. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/session-window.js +0 -0
  221. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/sidebar/artifacts-section.js +0 -0
  222. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/sidebar/config-section.js +0 -0
  223. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/sidebar/machines-section.js +0 -0
  224. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/sidebar/missions-section.js +0 -0
  225. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/sidebar/projects-section.js +0 -0
  226. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/sidebar/safety-section.js +0 -0
  227. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/sidebar/scheduler-section.js +0 -0
  228. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/sidebar/services-section.js +0 -0
  229. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/sidebar.js +0 -0
  230. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/terminal-font-prefs.js +0 -0
  231. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/tile-manager.js +0 -0
  232. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/token-modal.js +0 -0
  233. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/utils/ansi.js +0 -0
  234. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/utils/auto-refresh.js +0 -0
  235. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/voice/browser-stt.js +0 -0
  236. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/voice/browser-tts.js +0 -0
  237. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/voice/jargon.js +0 -0
  238. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/voice/prompt.js +0 -0
  239. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/static/js/winbox.bundle.min.js +0 -0
  240. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/stt/__init__.py +0 -0
  241. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/stt/base.py +0 -0
  242. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/stt/server_backend.py +0 -0
  243. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/stt/stt_server.py +0 -0
  244. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/tasks.py +0 -0
  245. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/templates/__init__.py +0 -0
  246. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/templates/base.html +0 -0
  247. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/templates/email_notification.html +0 -0
  248. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/templates/handoff/show-the-story.html.j2 +0 -0
  249. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/templates/handoff/theme.css.j2 +0 -0
  250. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/templates/tmux.conf +0 -0
  251. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/templating.py +0 -0
  252. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/tooldefs/aws.yaml +0 -0
  253. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/tooldefs/docker.yaml +0 -0
  254. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/tooldefs/gcp.yaml +0 -0
  255. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/tooldefs/gh.yaml +0 -0
  256. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/tooldefs/git.yaml +0 -0
  257. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/tooldefs/gws.yaml +0 -0
  258. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/tooldefs/kubectl.yaml +0 -0
  259. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/tooldefs/npm.yaml +0 -0
  260. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/tooldefs/terraform.yaml +0 -0
  261. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/tooldefs/uv.yaml +0 -0
  262. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/tts/__init__.py +0 -0
  263. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/tts/engines/chatterbox.py +0 -0
  264. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/tts/engines/qwen_base.py +0 -0
  265. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/tts/engines/qwen_custom.py +0 -0
  266. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/tts/engines/qwen_design.py +0 -0
  267. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/tts/engines/zonos.py +0 -0
  268. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/tunnels.py +0 -0
  269. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/utils/__init__.py +0 -0
  270. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/utils/chunker.py +0 -0
  271. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/utils/file_io.py +0 -0
  272. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/utils/paths.py +0 -0
  273. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/utils/speech.py +0 -0
  274. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/utils/subprocess.py +0 -0
  275. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/validation.py +0 -0
  276. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/voiceclone.py +0 -0
  277. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/voices/darren.wav +0 -0
  278. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/voices/default.wav +0 -0
  279. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/voices/jessica.wav +0 -0
  280. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/voices/lisa.wav +0 -0
  281. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/voices/may.wav +0 -0
  282. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/agentwire/worktree.py +0 -0
  283. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/docs/decisions/obsidian-second-brain.md +0 -0
  284. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/docs/logo.png +0 -0
  285. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/docs/wiki/communication/channels.md +0 -0
  286. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/docs/wiki/communication/hammerspoon.md +0 -0
  287. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/docs/wiki/communication/handoff.md +0 -0
  288. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/docs/wiki/concepts.md +0 -0
  289. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/docs/wiki/council.md +0 -0
  290. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/docs/wiki/deployment/remote-access.md +0 -0
  291. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/docs/wiki/deployment/remote-machines.md +0 -0
  292. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/docs/wiki/integrations/gws-google-workspace-cli.md +0 -0
  293. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/docs/wiki/internals/damage-control.md +0 -0
  294. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/docs/wiki/internals/portal.md +0 -0
  295. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/docs/wiki/internals/shell-escaping.md +0 -0
  296. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/docs/wiki/internals/window-collage.md +0 -0
  297. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/docs/wiki/missions.md +0 -0
  298. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/docs/wiki/scheduling/scheduled-workloads.md +0 -0
  299. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/docs/wiki/services.md +0 -0
  300. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/docs/wiki/sessions/claude-code-auto-mode.md +0 -0
  301. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/docs/wiki/sessions/window-sizing.md +0 -0
  302. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/docs/wiki/voice/stt-self-hosted.md +0 -0
  303. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/requirements-tts.txt +0 -0
  304. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/templates/launchd/dev.agentwire.mission-dispatcher.plist +0 -0
  305. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/templates/launchd/dev.agentwire.mission-feedback-router.plist +0 -0
  306. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/templates/launchd/dev.agentwire.mission-janitor.plist +0 -0
  307. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/conftest.py +0 -0
  308. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/e2e/test_portal_ui.py +0 -0
  309. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/fixtures/sample_agentwire.yml +0 -0
  310. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/fixtures/sample_config.yaml +0 -0
  311. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/fixtures/sample_scheduler.yaml +0 -0
  312. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/integration/test_missions_concurrency.py +0 -0
  313. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/integration/test_missions_lifecycle.py +0 -0
  314. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/integration/test_scheduler_board.py +0 -0
  315. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/integration/test_server_websockets.py +0 -0
  316. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_announcements.py +0 -0
  317. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_channels.py +0 -0
  318. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_cli_commands.py +0 -0
  319. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_cli_output.py +0 -0
  320. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_cli_safety.py +0 -0
  321. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_config.py +0 -0
  322. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_council_cli.py +0 -0
  323. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_council_inbox.py +0 -0
  324. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_council_state.py +0 -0
  325. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_damage_control_hooks.py +0 -0
  326. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_damage_control_sync.py +0 -0
  327. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_file_io.py +0 -0
  328. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_handoff_git_state.py +0 -0
  329. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_handoff_instructions.py +0 -0
  330. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_handoff_parser.py +0 -0
  331. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_handoff_renderer.py +0 -0
  332. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_history.py +0 -0
  333. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_hooks_install.py +0 -0
  334. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_locking.py +0 -0
  335. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_mcp_server.py +0 -0
  336. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_mcp_tools_args.py +0 -0
  337. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_missions_cli.py +0 -0
  338. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_missions_config.py +0 -0
  339. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_missions_dispatcher.py +0 -0
  340. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_missions_eligibility.py +0 -0
  341. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_missions_feedback_router.py +0 -0
  342. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_missions_gc.py +0 -0
  343. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_missions_github.py +0 -0
  344. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_missions_naming.py +0 -0
  345. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_missions_state.py +0 -0
  346. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_overnight_resume_flags.py +0 -0
  347. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_portal_api.py +0 -0
  348. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_project_config.py +0 -0
  349. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_roles.py +0 -0
  350. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_safety_disabled_rules.py +0 -0
  351. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_safety_escape_hatch.py +0 -0
  352. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_safety_kill_switch.py +0 -0
  353. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_safety_mission_worker.py +0 -0
  354. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_scheduler.py +0 -0
  355. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_scheduler_parsing.py +0 -0
  356. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_scratchpad.py +0 -0
  357. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_security.py +0 -0
  358. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_server_pure.py +0 -0
  359. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_services.py +0 -0
  360. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_session_ready.py +0 -0
  361. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_speech_tags.py +0 -0
  362. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_stt_backend.py +0 -0
  363. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_tasks.py +0 -0
  364. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_templating.py +0 -0
  365. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_terminal_resize.py +0 -0
  366. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_tmux_template.py +0 -0
  367. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_tts_engine_resolution.py +0 -0
  368. {agentwire_dev-1.34.0 → agentwire_dev-1.35.0}/tests/unit/test_worktree.py +0 -0
@@ -0,0 +1,104 @@
1
+ # Kokoro default-tier TTS smoke tests (#269).
2
+ #
3
+ # Guards the three packaging promises behind "one-click good voice":
4
+ # 1. the kokoro import path stays torch-free on every OS
5
+ # 2. the dependency set resolves to wheels for Intel macs (onnxruntime
6
+ # publishes arm64-only current wheels; pip must fall back cleanly)
7
+ # 3. a fresh install can actually synthesize audio
8
+ name: tts-smoke
9
+
10
+ on:
11
+ push:
12
+ branches: [main]
13
+ paths:
14
+ - "pyproject.toml"
15
+ - "agentwire/tts/**"
16
+ - ".github/workflows/tts-smoke.yml"
17
+ pull_request:
18
+ paths:
19
+ - "pyproject.toml"
20
+ - "agentwire/tts/**"
21
+ - ".github/workflows/tts-smoke.yml"
22
+
23
+ jobs:
24
+ torchless-import:
25
+ name: torch-less import (${{ matrix.os }})
26
+ runs-on: ${{ matrix.os }}
27
+ strategy:
28
+ fail-fast: false
29
+ matrix:
30
+ os: [ubuntu-latest, macos-latest, windows-latest]
31
+ steps:
32
+ - uses: actions/checkout@v4
33
+ - uses: actions/setup-python@v5
34
+ with:
35
+ python-version: "3.12"
36
+ - name: Install base package
37
+ run: pip install .
38
+ - name: Import kokoro engine without torch
39
+ # Windows is scoped to this import only — the portal/CLI use
40
+ # fcntl/pty and don't support Windows; the kokoro path must still
41
+ # install and import there.
42
+ run: >
43
+ python -c "import sys;
44
+ import agentwire.tts.engines.kokoro;
45
+ import agentwire.tts.local;
46
+ assert 'torch' not in sys.modules, 'torch leaked into the kokoro import path';
47
+ assert 'agentwire.tts.engines.chatterbox' not in sys.modules, 'chatterbox eagerly imported';
48
+ print('torch-free kokoro import OK')"
49
+
50
+ intel-mac-wheels:
51
+ name: Intel-mac wheel resolution
52
+ runs-on: ubuntu-latest
53
+ steps:
54
+ - uses: actions/setup-python@v5
55
+ with:
56
+ python-version: "3.12"
57
+ - name: Resolve kokoro-onnx wheels for macosx x86_64
58
+ # Verifies pip can resolve the full kokoro-onnx dependency tree to
59
+ # binary wheels for Intel macs (macOS 13+). Current onnxruntime
60
+ # releases are arm64-only; resolution must fall back to an older
61
+ # x86_64 wheel (kokoro-onnx allows >=1.20.1).
62
+ run: |
63
+ pip download kokoro-onnx \
64
+ --platform macosx_13_0_x86_64 \
65
+ --only-binary=:all: \
66
+ --python-version 3.12 \
67
+ -d /tmp/intel-mac-wheels
68
+ ls /tmp/intel-mac-wheels
69
+
70
+ synthesis:
71
+ name: synthesis smoke (${{ matrix.os }})
72
+ runs-on: ${{ matrix.os }}
73
+ strategy:
74
+ fail-fast: false
75
+ matrix:
76
+ os: [ubuntu-latest, macos-latest]
77
+ steps:
78
+ - uses: actions/checkout@v4
79
+ - uses: actions/setup-python@v5
80
+ with:
81
+ python-version: "3.12"
82
+ - name: Cache Kokoro model files
83
+ uses: actions/cache@v4
84
+ with:
85
+ path: ~/.cache/kokoro_onnx
86
+ key: kokoro-model-files-v1.0-fp16
87
+ - name: Install base package
88
+ run: pip install .
89
+ - name: Synthesize a sentence
90
+ run: |
91
+ python - <<'EOF'
92
+ from agentwire.tts.engines.kokoro import KokoroEngine
93
+ from agentwire.tts.base import TTSRequest
94
+ from agentwire.tts.audio import pcm_float_to_wav_bytes
95
+
96
+ KokoroEngine.download_models()
97
+ engine = KokoroEngine()
98
+ result = engine.generate(
99
+ TTSRequest(text="AgentWire speaks with Kokoro out of the box.", voice="af_heart")
100
+ )
101
+ wav = pcm_float_to_wav_bytes(result.audio, result.sample_rate)
102
+ assert wav[:4] == b"RIFF" and len(wav) > 50_000, f"suspicious WAV ({len(wav)} bytes)"
103
+ print(f"synthesized {len(wav)} bytes of WAV at {result.sample_rate}Hz")
104
+ EOF
@@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
16
16
 
17
17
  ### Added
18
18
 
19
+ - **Kokoro-82M is the default voice** — `tts.backend: default` now speaks via an in-process Kokoro engine (CPU ONNX, torch-free, 32 presets / 8 languages), bundled with the base install (`kokoro-onnx`, py<3.14). The portal downloads the model (~200 MB, one-time, atomic) in the background on first start with a progress toast; browser `speechSynthesis` covers speech until ready and remains the last-resort fallback (model unavailable / py3.14+). No-browser playback upgraded from `say`/`espeak` to Kokoro on local speakers. New `agentwire tts warm` pre-downloads for headless setups; `agentwire tts status` reports default-tier model state; `/api/voice-status` exposes `tts.kokoro {state, percent}`; `/api/voices` + `voiceclone list` surface the presets. The `custom` shim tier is unchanged (chatterbox venvs now need Python 3.13+ — numpy 2 gate). `audio_done` timing now parses real WAV duration instead of a 2x-off stereo estimate. Issue [#269](https://github.com/dotdevdotdev/agentwire-dev/issues/269)
19
20
  - **Shareable conversation handoffs** — `agentwire handoff` produces two artifacts from one conversation: `ai-handoff.md` (XML-tagged markdown a teammate can paste into another LLM) and `show-the-story.html` (single-file presentation with tabs and scroll-slides) — issue [#157](https://github.com/dotdevdotdev/agentwire-dev/issues/157)
20
21
  - In-conversation agent does the distillation (free — uses existing context, no fresh LLM call); CLI/MCP just renders deterministically via Jinja2
21
22
  - `/handoff` slash command walks the agent through filling the template, picking a vibe-matched theme (palette, fonts, motion), and rendering
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentwire-dev
3
- Version: 1.34.0
3
+ Version: 1.35.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
@@ -688,8 +688,10 @@ Requires-Dist: aiohttp-jinja2>=1.6
688
688
  Requires-Dist: aiohttp>=3.9.0
689
689
  Requires-Dist: av>=12.0.0
690
690
  Requires-Dist: jinja2>=3.1.0
691
+ Requires-Dist: kokoro-onnx>=0.4.9; python_version < '3.14'
691
692
  Requires-Dist: markdown>=3.5
692
693
  Requires-Dist: mcp>=1.2.0
694
+ Requires-Dist: pydantic>=2.0.0
693
695
  Requires-Dist: python-dotenv>=1.0.0
694
696
  Requires-Dist: pyyaml>=6.0
695
697
  Requires-Dist: requests>=2.28.0
@@ -706,7 +708,7 @@ Requires-Dist: soundfile>=0.12.0; extra == 'stt'
706
708
  Requires-Dist: useful-moonshine-onnx>=20250101; extra == 'stt'
707
709
  Requires-Dist: uvicorn>=0.24.0; extra == 'stt'
708
710
  Provides-Extra: tts
709
- Requires-Dist: chatterbox-tts>=0.1.6; extra == 'tts'
711
+ Requires-Dist: chatterbox-tts>=0.1.6; (python_version >= '3.13') and extra == 'tts'
710
712
  Requires-Dist: fastapi>=0.104.0; extra == 'tts'
711
713
  Requires-Dist: faster-whisper>=1.0.0; extra == 'tts'
712
714
  Requires-Dist: pydantic>=2.0.0; extra == 'tts'
@@ -778,7 +780,7 @@ agentwire portal start
778
780
 
779
781
  **Requirements:** Python 3.10+, tmux, ffmpeg, Claude Code
780
782
 
781
- **Honest setup time:** under a minute to a working voice portal (instant mode: Chrome speech in, browser voice out robotic but real). ~15 minutes for the full experience: cloned voices via a self-hosted TTS shim, Whisper-grade transcription, phone-from-anywhere (certs + token).
783
+ **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).
782
784
 
783
785
  > **Network & trust model.** The portal binds `127.0.0.1` by default — local only. To use it from your phone, set `server.host: 0.0.0.0` in `~/.agentwire/config.yaml`. Non-loopback binds require an auth token (auto-generated on first start; print it with `agentwire portal token`) — your phone prompts for it once, then remembers it. Origin checks reject cross-site browser requests on every bind. Still: keep it on a trusted LAN. Never port-forward it or run it on a public-facing VPS — for internet access use Cloudflare Tunnel + Zero Trust. Details in [SECURITY.md](SECURITY.md).
784
786
 
@@ -836,7 +838,7 @@ Visit `http://127.0.0.1:8765` in Chrome (or your phone/tablet with LAN access co
836
838
  Hold the mic button, speak your request, release. In instant mode the transcript appears for a quick glance — Enter sends it to Claude Code.
837
839
 
838
840
  **4. Listen:**
839
- Agent responses are spoken back — browser voice out of the box, or a real TTS model behind a custom shim.
841
+ Agent responses are spoken back — Kokoro neural voice out of the box, or any TTS model behind a custom shim.
840
842
 
841
843
  ---
842
844
 
@@ -887,9 +889,9 @@ All decisions logged for audit trails.
887
889
 
888
890
  Two tiers, both sides:
889
891
 
890
- **`default` (zero setup, what a fresh install gets):** Chrome speech recognition in, browser speechSynthesis out, OS voice when no browser is connected. No GPU, no models, no certs.
892
+ **`default` (zero setup, what a fresh install gets):** Chrome speech recognition in, **Kokoro-82M out** — a genuinely good neural voice (top of the TTS Arena at 82M params), 32 preset voices across 8 languages, pure CPU, identical on every OS. The model (~200 MB) downloads in the background on first portal start; browser speechSynthesis covers speech until it's ready (and remains the last-resort fallback). No GPU, no certs, no commands.
891
893
 
892
- **`custom` (bring your own model):** any HTTP shim implementing the [voice shim contract](docs/wiki/voice/shim-contract.md) — ~30 lines wraps anything (Deepgram, whisper.cpp, an expressive emotion-tag model). The bundled servers are reference shims:
894
+ **`custom` (bring your own model):** any HTTP shim implementing the [voice shim contract](docs/wiki/voice/shim-contract.md) — ~30 lines wraps anything (Deepgram, whisper.cpp, an expressive emotion-tag model). Voice cloning, GPU engines, emotion control live here. The bundled servers are reference shims:
893
895
 
894
896
  ```yaml
895
897
  # ~/.agentwire/config.yaml
@@ -910,7 +912,7 @@ Shims can declare capabilities (emotion tags, style instructions) via `GET /capa
910
912
 
911
913
  Instant mode already needs nothing — just don't press the mic. Agent speech
912
914
  plays through the browser; mute the tab (or close it — with no browser
913
- connected the OS voice handles notifications, which you can silence at the
915
+ connected, speech plays on local speakers, which you can silence at the
914
916
  system level).
915
917
 
916
918
  </details>
@@ -59,7 +59,7 @@ agentwire portal start
59
59
 
60
60
  **Requirements:** Python 3.10+, tmux, ffmpeg, Claude Code
61
61
 
62
- **Honest setup time:** under a minute to a working voice portal (instant mode: Chrome speech in, browser voice out robotic but real). ~15 minutes for the full experience: cloned voices via a self-hosted TTS shim, Whisper-grade transcription, phone-from-anywhere (certs + token).
62
+ **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).
63
63
 
64
64
  > **Network & trust model.** The portal binds `127.0.0.1` by default — local only. To use it from your phone, set `server.host: 0.0.0.0` in `~/.agentwire/config.yaml`. Non-loopback binds require an auth token (auto-generated on first start; print it with `agentwire portal token`) — your phone prompts for it once, then remembers it. Origin checks reject cross-site browser requests on every bind. Still: keep it on a trusted LAN. Never port-forward it or run it on a public-facing VPS — for internet access use Cloudflare Tunnel + Zero Trust. Details in [SECURITY.md](SECURITY.md).
65
65
 
@@ -117,7 +117,7 @@ Visit `http://127.0.0.1:8765` in Chrome (or your phone/tablet with LAN access co
117
117
  Hold the mic button, speak your request, release. In instant mode the transcript appears for a quick glance — Enter sends it to Claude Code.
118
118
 
119
119
  **4. Listen:**
120
- Agent responses are spoken back — browser voice out of the box, or a real TTS model behind a custom shim.
120
+ Agent responses are spoken back — Kokoro neural voice out of the box, or any TTS model behind a custom shim.
121
121
 
122
122
  ---
123
123
 
@@ -168,9 +168,9 @@ All decisions logged for audit trails.
168
168
 
169
169
  Two tiers, both sides:
170
170
 
171
- **`default` (zero setup, what a fresh install gets):** Chrome speech recognition in, browser speechSynthesis out, OS voice when no browser is connected. No GPU, no models, no certs.
171
+ **`default` (zero setup, what a fresh install gets):** Chrome speech recognition in, **Kokoro-82M out** — a genuinely good neural voice (top of the TTS Arena at 82M params), 32 preset voices across 8 languages, pure CPU, identical on every OS. The model (~200 MB) downloads in the background on first portal start; browser speechSynthesis covers speech until it's ready (and remains the last-resort fallback). No GPU, no certs, no commands.
172
172
 
173
- **`custom` (bring your own model):** any HTTP shim implementing the [voice shim contract](docs/wiki/voice/shim-contract.md) — ~30 lines wraps anything (Deepgram, whisper.cpp, an expressive emotion-tag model). The bundled servers are reference shims:
173
+ **`custom` (bring your own model):** any HTTP shim implementing the [voice shim contract](docs/wiki/voice/shim-contract.md) — ~30 lines wraps anything (Deepgram, whisper.cpp, an expressive emotion-tag model). Voice cloning, GPU engines, emotion control live here. The bundled servers are reference shims:
174
174
 
175
175
  ```yaml
176
176
  # ~/.agentwire/config.yaml
@@ -191,7 +191,7 @@ Shims can declare capabilities (emotion tags, style instructions) via `GET /capa
191
191
 
192
192
  Instant mode already needs nothing — just don't press the mic. Agent speech
193
193
  plays through the browser; mute the tab (or close it — with no browser
194
- connected the OS voice handles notifications, which you can silence at the
194
+ connected, speech plays on local speakers, which you can silence at the
195
195
  system level).
196
196
 
197
197
  </details>
@@ -1,3 +1,3 @@
1
1
  """AgentWire - Multi-session voice web interface for AI coding agents."""
2
2
 
3
- __version__ = "1.34.0"
3
+ __version__ = "1.35.0"