agentwire-dev 1.34.0__tar.gz → 1.35.1__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.1/.github/workflows/tts-smoke.yml +104 -0
  2. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/CHANGELOG.md +1 -0
  3. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/PKG-INFO +11 -7
  4. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/README.md +7 -5
  5. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/__init__.py +1 -1
  6. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/__main__.py +365 -80
  7. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/completion.py +18 -2
  8. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/config.py +30 -2
  9. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/idle-handler.sh +7 -0
  10. agentwire_dev-1.35.1/agentwire/limits_cli.py +191 -0
  11. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/mcp_server.py +2 -1
  12. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/onboarding.py +8 -4
  13. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/overnight.py +5 -0
  14. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/init.md +4 -4
  15. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/scheduler.py +54 -4
  16. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/server.py +189 -80
  17. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/css/desktop.css +43 -0
  18. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/sidebar/sessions-section.js +55 -2
  19. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/templates/desktop.html +2 -1
  20. agentwire_dev-1.35.1/agentwire/tts/audio.py +22 -0
  21. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tts/base.py +2 -1
  22. agentwire_dev-1.35.1/agentwire/tts/engines/__init__.py +27 -0
  23. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tts/engines/kokoro.py +85 -32
  24. agentwire_dev-1.35.1/agentwire/tts/local.py +149 -0
  25. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tts/registry.py +14 -11
  26. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tts_server.py +42 -26
  27. agentwire_dev-1.35.1/agentwire/usage_limit.py +652 -0
  28. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/INDEX.md +4 -2
  29. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/architecture.md +2 -2
  30. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/glossary.md +1 -1
  31. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/internals/troubleshooting.md +11 -1
  32. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/quickstart.md +8 -4
  33. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/sessions/pi.md +5 -9
  34. agentwire_dev-1.35.1/docs/wiki/usage-limit-recovery.md +164 -0
  35. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/voice/shim-contract.md +2 -2
  36. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/voice/tts-self-hosted.md +7 -7
  37. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/pyproject.toml +9 -2
  38. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_build_agent_command.py +3 -3
  39. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_idle_handler.py +21 -0
  40. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_portal_api.py +53 -0
  41. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_server_async.py +44 -0
  42. agentwire_dev-1.35.1/tests/unit/test_tts_local.py +297 -0
  43. agentwire_dev-1.35.1/tests/unit/test_usage_limit.py +666 -0
  44. agentwire_dev-1.34.0/agentwire/search.py +0 -164
  45. agentwire_dev-1.34.0/agentwire/tts/engines/__init__.py +0 -18
  46. agentwire_dev-1.34.0/tests/unit/test_search.py +0 -196
  47. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/.github/FUNDING.yml +0 -0
  48. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  49. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  50. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/.github/ISSUE_TEMPLATE/question.md +0 -0
  51. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  52. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/.gitignore +0 -0
  53. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/CLA.md +0 -0
  54. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/CODE_OF_CONDUCT.md +0 -0
  55. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/CONTRIBUTING.md +0 -0
  56. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/Dockerfile.local +0 -0
  57. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/Dockerfile.runpod +0 -0
  58. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/LICENSE +0 -0
  59. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/RELEASING.md +0 -0
  60. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/SECURITY.md +0 -0
  61. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/SPONSORS.md +0 -0
  62. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/agents/__init__.py +0 -0
  63. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/agents/base.py +0 -0
  64. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/agents/tmux.py +0 -0
  65. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/cached_status.py +0 -0
  66. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/channels/__init__.py +0 -0
  67. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/channels/base.py +0 -0
  68. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/channels/email.py +0 -0
  69. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/channels/quo.py +0 -0
  70. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/cli_safety.py +0 -0
  71. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/council/__init__.py +0 -0
  72. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/council/cli.py +0 -0
  73. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/council/inbox.py +0 -0
  74. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/council/state.py +0 -0
  75. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/fetch.py +0 -0
  76. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/handoff/__init__.py +0 -0
  77. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/handoff/git_state.py +0 -0
  78. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/handoff/instructions.py +0 -0
  79. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/handoff/parser.py +0 -0
  80. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/handoff/renderer.py +0 -0
  81. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/handoff/schema.py +0 -0
  82. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/history.py +0 -0
  83. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/__init__.py +0 -0
  84. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/agentwire-permission.sh +0 -0
  85. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/__init__.py +0 -0
  86. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/audit_logger.py +0 -0
  87. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/bash-tool-damage-control.py +0 -0
  88. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/edit-tool-damage-control.py +0 -0
  89. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/rules/agentwire.yaml +0 -0
  90. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/rules/aws.yaml +0 -0
  91. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/rules/cloud-hosting.yaml +0 -0
  92. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/rules/containers.yaml +0 -0
  93. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/rules/core.yaml +0 -0
  94. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/rules/databases.yaml +0 -0
  95. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/rules/firebase.yaml +0 -0
  96. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/rules/gcp.yaml +0 -0
  97. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/rules/git.yaml +0 -0
  98. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/rules/gws.yaml +0 -0
  99. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/rules/infrastructure.yaml +0 -0
  100. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/rules/remote.yaml +0 -0
  101. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/write-tool-damage-control.py +0 -0
  102. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/queue-processor.sh +0 -0
  103. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/listen.py +0 -0
  104. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/locking.py +0 -0
  105. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/missions/__init__.py +0 -0
  106. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/missions/cli.py +0 -0
  107. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/missions/config.py +0 -0
  108. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/missions/dispatcher.py +0 -0
  109. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/missions/eligibility.py +0 -0
  110. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/missions/feedback_router.py +0 -0
  111. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/missions/gc.py +0 -0
  112. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/missions/github.py +0 -0
  113. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/missions/naming.py +0 -0
  114. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/missions/state.py +0 -0
  115. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/network.py +0 -0
  116. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/pane_manager.py +0 -0
  117. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/project_config.py +0 -0
  118. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/projects.py +0 -0
  119. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/prompts/__init__.py +0 -0
  120. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/prompts/init.md +0 -0
  121. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/__init__.py +0 -0
  122. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/agentwire.md +0 -0
  123. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/chatbot.md +0 -0
  124. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/council-brain.md +0 -0
  125. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/council-conscience.md +0 -0
  126. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/council-critic.md +0 -0
  127. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/council-devils-advocate.md +0 -0
  128. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/council-gut.md +0 -0
  129. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/council-historian.md +0 -0
  130. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/council-member.md +0 -0
  131. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/council-orchestrator.md +0 -0
  132. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/notifications.md +0 -0
  133. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/orchestrator.md +0 -0
  134. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/soul.md +0 -0
  135. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/task-runner.md +0 -0
  136. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/voice.md +0 -0
  137. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/worker.md +0 -0
  138. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/safety/__init__.py +0 -0
  139. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/safety/_core.py +0 -0
  140. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/scratchpad.py +0 -0
  141. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/security.py +0 -0
  142. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/services.py +0 -0
  143. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/session_ready.py +0 -0
  144. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/agentwire-Echo--black.png +0 -0
  145. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/agentwire-Echo--transparent.png +0 -0
  146. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/agentwire-Echo.png +0 -0
  147. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/agentwire-email-banner.png +0 -0
  148. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/agentwire-splash-logo-layers--agentwire-text.png +0 -0
  149. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/agentwire-splash-logo-layers--echo-claw-fg.png +0 -0
  150. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/agentwire-splash-logo-layers--echo.png +0 -0
  151. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/agentwire-splash-logo-layers--full--transparent-top.png +0 -0
  152. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/agentwire-splash-logo-layers--full-black.png +0 -0
  153. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/agentwire-splash-logo-layers--telephone-fg.png +0 -0
  154. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/agentwire-splash-logo-layers--telephone.png +0 -0
  155. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/agentwire-splash-logo-layers--transparent-top.png +0 -0
  156. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/agentwire-splash-logo-layers--transparent.png +0 -0
  157. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/agentwire-splash-logo-layers--tree.png +0 -0
  158. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/agentwire-splash-logo-layers.png +0 -0
  159. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/announcements.json +0 -0
  160. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/favicon.png +0 -0
  161. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/machines/android.jpeg +0 -0
  162. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/machines/automaton.jpeg +0 -0
  163. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/machines/bot.jpeg +0 -0
  164. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/machines/cyborg.jpeg +0 -0
  165. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/machines/droid.jpeg +0 -0
  166. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/machines/drone.jpeg +0 -0
  167. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/machines/guardian.jpeg +0 -0
  168. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/machines/mech.jpeg +0 -0
  169. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/machines/probe.jpeg +0 -0
  170. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/machines/robot.jpeg +0 -0
  171. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/machines/sentinel.jpeg +0 -0
  172. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/machines/unit.jpeg +0 -0
  173. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/projects/blob.jpeg +0 -0
  174. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/projects/cloud.jpeg +0 -0
  175. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/projects/crystal.jpeg +0 -0
  176. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/projects/cyclops.jpeg +0 -0
  177. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/projects/flame.jpeg +0 -0
  178. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/projects/fuzzy.jpeg +0 -0
  179. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/projects/horned.jpeg +0 -0
  180. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/projects/moon.jpeg +0 -0
  181. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/projects/slime.jpeg +0 -0
  182. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/projects/star.jpeg +0 -0
  183. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/projects/tentacle.jpeg +0 -0
  184. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/projects/winged.jpeg +0 -0
  185. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/bear.jpeg +0 -0
  186. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/cat.jpeg +0 -0
  187. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/crown.jpeg +0 -0
  188. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/custom/agentwire-portal.png +0 -0
  189. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/custom/agentwire-tts.png +0 -0
  190. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/custom/agentwire.png +0 -0
  191. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/deer.jpeg +0 -0
  192. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/drone.jpeg +0 -0
  193. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/eagle.jpeg +0 -0
  194. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/fox.jpeg +0 -0
  195. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/hawk.jpeg +0 -0
  196. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/horse.jpeg +0 -0
  197. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/lion.jpeg +0 -0
  198. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/rabbit.jpeg +0 -0
  199. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/robot.jpeg +0 -0
  200. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/tiger.jpeg +0 -0
  201. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/wolf.jpeg +0 -0
  202. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/.gitkeep +0 -0
  203. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/announcement-modal.js +0 -0
  204. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/api.js +0 -0
  205. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/artifact-window.js +0 -0
  206. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/collage.js +0 -0
  207. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/command-palette.js +0 -0
  208. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/components/icon-picker.js +0 -0
  209. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/components/list-card.js +0 -0
  210. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/components/type-tag.js +0 -0
  211. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/dead-key-suppressor.js +0 -0
  212. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/desktop-manager.js +0 -0
  213. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/desktop.js +0 -0
  214. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/icon-manager.js +0 -0
  215. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/notification-prefs.js +0 -0
  216. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/notifications-panel.js +0 -0
  217. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/safety-shared.js +0 -0
  218. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/safety-window.js +0 -0
  219. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/scratchpad.js +0 -0
  220. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/session-id.js +0 -0
  221. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/session-window.js +0 -0
  222. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/sidebar/artifacts-section.js +0 -0
  223. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/sidebar/config-section.js +0 -0
  224. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/sidebar/machines-section.js +0 -0
  225. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/sidebar/missions-section.js +0 -0
  226. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/sidebar/projects-section.js +0 -0
  227. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/sidebar/safety-section.js +0 -0
  228. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/sidebar/scheduler-section.js +0 -0
  229. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/sidebar/services-section.js +0 -0
  230. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/sidebar.js +0 -0
  231. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/terminal-font-prefs.js +0 -0
  232. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/tile-manager.js +0 -0
  233. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/token-modal.js +0 -0
  234. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/utils/ansi.js +0 -0
  235. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/utils/auto-refresh.js +0 -0
  236. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/voice/browser-stt.js +0 -0
  237. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/voice/browser-tts.js +0 -0
  238. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/voice/jargon.js +0 -0
  239. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/voice/prompt.js +0 -0
  240. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/winbox.bundle.min.js +0 -0
  241. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/stt/__init__.py +0 -0
  242. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/stt/base.py +0 -0
  243. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/stt/server_backend.py +0 -0
  244. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/stt/stt_server.py +0 -0
  245. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tasks.py +0 -0
  246. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/templates/__init__.py +0 -0
  247. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/templates/base.html +0 -0
  248. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/templates/email_notification.html +0 -0
  249. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/templates/handoff/show-the-story.html.j2 +0 -0
  250. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/templates/handoff/theme.css.j2 +0 -0
  251. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/templates/tmux.conf +0 -0
  252. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/templating.py +0 -0
  253. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tooldefs/aws.yaml +0 -0
  254. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tooldefs/docker.yaml +0 -0
  255. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tooldefs/gcp.yaml +0 -0
  256. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tooldefs/gh.yaml +0 -0
  257. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tooldefs/git.yaml +0 -0
  258. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tooldefs/gws.yaml +0 -0
  259. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tooldefs/kubectl.yaml +0 -0
  260. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tooldefs/npm.yaml +0 -0
  261. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tooldefs/terraform.yaml +0 -0
  262. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tooldefs/uv.yaml +0 -0
  263. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tts/__init__.py +0 -0
  264. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tts/engines/chatterbox.py +0 -0
  265. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tts/engines/qwen_base.py +0 -0
  266. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tts/engines/qwen_custom.py +0 -0
  267. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tts/engines/qwen_design.py +0 -0
  268. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tts/engines/zonos.py +0 -0
  269. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tunnels.py +0 -0
  270. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/utils/__init__.py +0 -0
  271. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/utils/chunker.py +0 -0
  272. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/utils/file_io.py +0 -0
  273. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/utils/paths.py +0 -0
  274. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/utils/speech.py +0 -0
  275. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/utils/subprocess.py +0 -0
  276. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/validation.py +0 -0
  277. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/voiceclone.py +0 -0
  278. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/voices/darren.wav +0 -0
  279. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/voices/default.wav +0 -0
  280. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/voices/jessica.wav +0 -0
  281. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/voices/lisa.wav +0 -0
  282. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/voices/may.wav +0 -0
  283. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/worktree.py +0 -0
  284. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/decisions/obsidian-second-brain.md +0 -0
  285. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/logo.png +0 -0
  286. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/communication/channels.md +0 -0
  287. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/communication/hammerspoon.md +0 -0
  288. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/communication/handoff.md +0 -0
  289. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/concepts.md +0 -0
  290. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/council.md +0 -0
  291. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/deployment/remote-access.md +0 -0
  292. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/deployment/remote-machines.md +0 -0
  293. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/integrations/gws-google-workspace-cli.md +0 -0
  294. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/internals/damage-control.md +0 -0
  295. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/internals/portal.md +0 -0
  296. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/internals/shell-escaping.md +0 -0
  297. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/internals/window-collage.md +0 -0
  298. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/missions.md +0 -0
  299. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/scheduling/scheduled-workloads.md +0 -0
  300. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/services.md +0 -0
  301. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/sessions/claude-code-auto-mode.md +0 -0
  302. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/sessions/window-sizing.md +0 -0
  303. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/voice/stt-self-hosted.md +0 -0
  304. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/requirements-tts.txt +0 -0
  305. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/templates/launchd/dev.agentwire.mission-dispatcher.plist +0 -0
  306. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/templates/launchd/dev.agentwire.mission-feedback-router.plist +0 -0
  307. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/templates/launchd/dev.agentwire.mission-janitor.plist +0 -0
  308. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/conftest.py +0 -0
  309. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/e2e/test_portal_ui.py +0 -0
  310. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/fixtures/sample_agentwire.yml +0 -0
  311. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/fixtures/sample_config.yaml +0 -0
  312. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/fixtures/sample_scheduler.yaml +0 -0
  313. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/integration/test_missions_concurrency.py +0 -0
  314. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/integration/test_missions_lifecycle.py +0 -0
  315. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/integration/test_scheduler_board.py +0 -0
  316. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/integration/test_server_websockets.py +0 -0
  317. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_announcements.py +0 -0
  318. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_channels.py +0 -0
  319. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_cli_commands.py +0 -0
  320. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_cli_output.py +0 -0
  321. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_cli_safety.py +0 -0
  322. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_config.py +0 -0
  323. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_council_cli.py +0 -0
  324. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_council_inbox.py +0 -0
  325. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_council_state.py +0 -0
  326. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_damage_control_hooks.py +0 -0
  327. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_damage_control_sync.py +0 -0
  328. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_file_io.py +0 -0
  329. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_handoff_git_state.py +0 -0
  330. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_handoff_instructions.py +0 -0
  331. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_handoff_parser.py +0 -0
  332. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_handoff_renderer.py +0 -0
  333. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_history.py +0 -0
  334. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_hooks_install.py +0 -0
  335. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_locking.py +0 -0
  336. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_mcp_server.py +0 -0
  337. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_mcp_tools_args.py +0 -0
  338. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_missions_cli.py +0 -0
  339. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_missions_config.py +0 -0
  340. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_missions_dispatcher.py +0 -0
  341. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_missions_eligibility.py +0 -0
  342. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_missions_feedback_router.py +0 -0
  343. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_missions_gc.py +0 -0
  344. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_missions_github.py +0 -0
  345. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_missions_naming.py +0 -0
  346. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_missions_state.py +0 -0
  347. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_overnight_resume_flags.py +0 -0
  348. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_project_config.py +0 -0
  349. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_roles.py +0 -0
  350. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_safety_disabled_rules.py +0 -0
  351. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_safety_escape_hatch.py +0 -0
  352. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_safety_kill_switch.py +0 -0
  353. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_safety_mission_worker.py +0 -0
  354. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_scheduler.py +0 -0
  355. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_scheduler_parsing.py +0 -0
  356. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_scratchpad.py +0 -0
  357. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_security.py +0 -0
  358. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_server_pure.py +0 -0
  359. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_services.py +0 -0
  360. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_session_ready.py +0 -0
  361. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_speech_tags.py +0 -0
  362. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_stt_backend.py +0 -0
  363. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_tasks.py +0 -0
  364. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_templating.py +0 -0
  365. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_terminal_resize.py +0 -0
  366. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_tmux_template.py +0 -0
  367. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_tts_engine_resolution.py +0 -0
  368. {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/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.1
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'
@@ -727,6 +729,8 @@ Description-Content-Type: text/markdown
727
729
 
728
730
  <p align="center">
729
731
  <a href="https://pypi.org/project/agentwire-dev/"><img src="https://img.shields.io/pypi/v/agentwire-dev?color=green" alt="PyPI"></a>
732
+ <a href="https://pypistats.org/packages/agentwire-dev"><img src="https://img.shields.io/pypi/dm/agentwire-dev?color=00ff88&label=installs" alt="PyPI Downloads"></a>
733
+ <a href="https://github.com/dotdevdotdev/agentwire-dev/stargazers"><img src="https://img.shields.io/github/stars/dotdevdotdev/agentwire-dev?style=flat&logo=github&color=00d4ff" alt="GitHub Stars"></a>
730
734
  <a href="https://pypi.org/project/agentwire-dev/"><img src="https://img.shields.io/pypi/pyversions/agentwire-dev" alt="Python"></a>
731
735
  <a href="https://github.com/dotdevdotdev/agentwire-dev/blob/main/LICENSE"><img src="https://img.shields.io/github/license/dotdevdotdev/agentwire-dev" alt="License"></a>
732
736
  <a href="https://discord.gg/bspFZNTdUr"><img src="https://img.shields.io/badge/discord-join-5865F2?logo=discord&logoColor=white" alt="Discord"></a>
@@ -778,7 +782,7 @@ agentwire portal start
778
782
 
779
783
  **Requirements:** Python 3.10+, tmux, ffmpeg, Claude Code
780
784
 
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).
785
+ **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
786
 
783
787
  > **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
788
 
@@ -836,7 +840,7 @@ Visit `http://127.0.0.1:8765` in Chrome (or your phone/tablet with LAN access co
836
840
  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
841
 
838
842
  **4. Listen:**
839
- Agent responses are spoken back — browser voice out of the box, or a real TTS model behind a custom shim.
843
+ Agent responses are spoken back — Kokoro neural voice out of the box, or any TTS model behind a custom shim.
840
844
 
841
845
  ---
842
846
 
@@ -887,9 +891,9 @@ All decisions logged for audit trails.
887
891
 
888
892
  Two tiers, both sides:
889
893
 
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.
894
+ **`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
895
 
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:
896
+ **`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
897
 
894
898
  ```yaml
895
899
  # ~/.agentwire/config.yaml
@@ -910,7 +914,7 @@ Shims can declare capabilities (emotion tags, style instructions) via `GET /capa
910
914
 
911
915
  Instant mode already needs nothing — just don't press the mic. Agent speech
912
916
  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
917
+ connected, speech plays on local speakers, which you can silence at the
914
918
  system level).
915
919
 
916
920
  </details>
@@ -8,6 +8,8 @@
8
8
 
9
9
  <p align="center">
10
10
  <a href="https://pypi.org/project/agentwire-dev/"><img src="https://img.shields.io/pypi/v/agentwire-dev?color=green" alt="PyPI"></a>
11
+ <a href="https://pypistats.org/packages/agentwire-dev"><img src="https://img.shields.io/pypi/dm/agentwire-dev?color=00ff88&label=installs" alt="PyPI Downloads"></a>
12
+ <a href="https://github.com/dotdevdotdev/agentwire-dev/stargazers"><img src="https://img.shields.io/github/stars/dotdevdotdev/agentwire-dev?style=flat&logo=github&color=00d4ff" alt="GitHub Stars"></a>
11
13
  <a href="https://pypi.org/project/agentwire-dev/"><img src="https://img.shields.io/pypi/pyversions/agentwire-dev" alt="Python"></a>
12
14
  <a href="https://github.com/dotdevdotdev/agentwire-dev/blob/main/LICENSE"><img src="https://img.shields.io/github/license/dotdevdotdev/agentwire-dev" alt="License"></a>
13
15
  <a href="https://discord.gg/bspFZNTdUr"><img src="https://img.shields.io/badge/discord-join-5865F2?logo=discord&logoColor=white" alt="Discord"></a>
@@ -59,7 +61,7 @@ agentwire portal start
59
61
 
60
62
  **Requirements:** Python 3.10+, tmux, ffmpeg, Claude Code
61
63
 
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).
64
+ **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
65
 
64
66
  > **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
67
 
@@ -117,7 +119,7 @@ Visit `http://127.0.0.1:8765` in Chrome (or your phone/tablet with LAN access co
117
119
  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
120
 
119
121
  **4. Listen:**
120
- Agent responses are spoken back — browser voice out of the box, or a real TTS model behind a custom shim.
122
+ Agent responses are spoken back — Kokoro neural voice out of the box, or any TTS model behind a custom shim.
121
123
 
122
124
  ---
123
125
 
@@ -168,9 +170,9 @@ All decisions logged for audit trails.
168
170
 
169
171
  Two tiers, both sides:
170
172
 
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.
173
+ **`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
174
 
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:
175
+ **`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
176
 
175
177
  ```yaml
176
178
  # ~/.agentwire/config.yaml
@@ -191,7 +193,7 @@ Shims can declare capabilities (emotion tags, style instructions) via `GET /capa
191
193
 
192
194
  Instant mode already needs nothing — just don't press the mic. Agent speech
193
195
  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
196
+ connected, speech plays on local speakers, which you can silence at the
195
197
  system level).
196
198
 
197
199
  </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.1"