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.
- agentwire_dev-1.35.1/.github/workflows/tts-smoke.yml +104 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/CHANGELOG.md +1 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/PKG-INFO +11 -7
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/README.md +7 -5
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/__init__.py +1 -1
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/__main__.py +365 -80
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/completion.py +18 -2
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/config.py +30 -2
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/idle-handler.sh +7 -0
- agentwire_dev-1.35.1/agentwire/limits_cli.py +191 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/mcp_server.py +2 -1
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/onboarding.py +8 -4
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/overnight.py +5 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/init.md +4 -4
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/scheduler.py +54 -4
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/server.py +189 -80
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/css/desktop.css +43 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/sidebar/sessions-section.js +55 -2
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/templates/desktop.html +2 -1
- agentwire_dev-1.35.1/agentwire/tts/audio.py +22 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tts/base.py +2 -1
- agentwire_dev-1.35.1/agentwire/tts/engines/__init__.py +27 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tts/engines/kokoro.py +85 -32
- agentwire_dev-1.35.1/agentwire/tts/local.py +149 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tts/registry.py +14 -11
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tts_server.py +42 -26
- agentwire_dev-1.35.1/agentwire/usage_limit.py +652 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/INDEX.md +4 -2
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/architecture.md +2 -2
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/glossary.md +1 -1
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/internals/troubleshooting.md +11 -1
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/quickstart.md +8 -4
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/sessions/pi.md +5 -9
- agentwire_dev-1.35.1/docs/wiki/usage-limit-recovery.md +164 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/voice/shim-contract.md +2 -2
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/voice/tts-self-hosted.md +7 -7
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/pyproject.toml +9 -2
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_build_agent_command.py +3 -3
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_idle_handler.py +21 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_portal_api.py +53 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_server_async.py +44 -0
- agentwire_dev-1.35.1/tests/unit/test_tts_local.py +297 -0
- agentwire_dev-1.35.1/tests/unit/test_usage_limit.py +666 -0
- agentwire_dev-1.34.0/agentwire/search.py +0 -164
- agentwire_dev-1.34.0/agentwire/tts/engines/__init__.py +0 -18
- agentwire_dev-1.34.0/tests/unit/test_search.py +0 -196
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/.github/FUNDING.yml +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/.github/ISSUE_TEMPLATE/question.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/.gitignore +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/CLA.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/CODE_OF_CONDUCT.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/CONTRIBUTING.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/Dockerfile.local +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/Dockerfile.runpod +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/LICENSE +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/RELEASING.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/SECURITY.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/SPONSORS.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/agents/__init__.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/agents/base.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/agents/tmux.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/cached_status.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/channels/__init__.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/channels/base.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/channels/email.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/channels/quo.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/cli_safety.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/council/__init__.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/council/cli.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/council/inbox.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/council/state.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/fetch.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/handoff/__init__.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/handoff/git_state.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/handoff/instructions.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/handoff/parser.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/handoff/renderer.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/handoff/schema.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/history.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/__init__.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/agentwire-permission.sh +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/__init__.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/audit_logger.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/bash-tool-damage-control.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/edit-tool-damage-control.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/rules/agentwire.yaml +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/rules/aws.yaml +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/rules/cloud-hosting.yaml +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/rules/containers.yaml +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/rules/core.yaml +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/rules/databases.yaml +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/rules/firebase.yaml +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/rules/gcp.yaml +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/rules/git.yaml +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/rules/gws.yaml +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/rules/infrastructure.yaml +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/rules/remote.yaml +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/damage-control/write-tool-damage-control.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/hooks/queue-processor.sh +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/listen.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/locking.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/missions/__init__.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/missions/cli.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/missions/config.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/missions/dispatcher.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/missions/eligibility.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/missions/feedback_router.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/missions/gc.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/missions/github.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/missions/naming.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/missions/state.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/network.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/pane_manager.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/project_config.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/projects.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/prompts/__init__.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/prompts/init.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/__init__.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/agentwire.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/chatbot.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/council-brain.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/council-conscience.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/council-critic.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/council-devils-advocate.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/council-gut.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/council-historian.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/council-member.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/council-orchestrator.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/notifications.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/orchestrator.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/soul.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/task-runner.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/voice.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/roles/worker.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/safety/__init__.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/safety/_core.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/scratchpad.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/security.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/services.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/session_ready.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/agentwire-Echo--black.png +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/agentwire-Echo--transparent.png +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/agentwire-Echo.png +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/agentwire-email-banner.png +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/agentwire-splash-logo-layers--agentwire-text.png +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/agentwire-splash-logo-layers--echo-claw-fg.png +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/agentwire-splash-logo-layers--echo.png +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/agentwire-splash-logo-layers--full--transparent-top.png +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/agentwire-splash-logo-layers--full-black.png +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/agentwire-splash-logo-layers--telephone-fg.png +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/agentwire-splash-logo-layers--telephone.png +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/agentwire-splash-logo-layers--transparent-top.png +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/agentwire-splash-logo-layers--transparent.png +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/agentwire-splash-logo-layers--tree.png +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/agentwire-splash-logo-layers.png +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/announcements.json +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/favicon.png +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/machines/android.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/machines/automaton.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/machines/bot.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/machines/cyborg.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/machines/droid.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/machines/drone.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/machines/guardian.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/machines/mech.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/machines/probe.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/machines/robot.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/machines/sentinel.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/machines/unit.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/projects/blob.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/projects/cloud.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/projects/crystal.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/projects/cyclops.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/projects/flame.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/projects/fuzzy.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/projects/horned.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/projects/moon.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/projects/slime.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/projects/star.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/projects/tentacle.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/projects/winged.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/bear.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/cat.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/crown.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/custom/agentwire-portal.png +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/custom/agentwire-tts.png +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/custom/agentwire.png +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/deer.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/drone.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/eagle.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/fox.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/hawk.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/horse.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/lion.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/rabbit.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/robot.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/tiger.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/icons/sessions/wolf.jpeg +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/.gitkeep +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/announcement-modal.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/api.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/artifact-window.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/collage.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/command-palette.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/components/icon-picker.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/components/list-card.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/components/type-tag.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/dead-key-suppressor.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/desktop-manager.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/desktop.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/icon-manager.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/notification-prefs.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/notifications-panel.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/safety-shared.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/safety-window.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/scratchpad.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/session-id.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/session-window.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/sidebar/artifacts-section.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/sidebar/config-section.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/sidebar/machines-section.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/sidebar/missions-section.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/sidebar/projects-section.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/sidebar/safety-section.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/sidebar/scheduler-section.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/sidebar/services-section.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/sidebar.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/terminal-font-prefs.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/tile-manager.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/token-modal.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/utils/ansi.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/utils/auto-refresh.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/voice/browser-stt.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/voice/browser-tts.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/voice/jargon.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/voice/prompt.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/static/js/winbox.bundle.min.js +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/stt/__init__.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/stt/base.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/stt/server_backend.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/stt/stt_server.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tasks.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/templates/__init__.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/templates/base.html +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/templates/email_notification.html +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/templates/handoff/show-the-story.html.j2 +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/templates/handoff/theme.css.j2 +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/templates/tmux.conf +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/templating.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tooldefs/aws.yaml +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tooldefs/docker.yaml +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tooldefs/gcp.yaml +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tooldefs/gh.yaml +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tooldefs/git.yaml +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tooldefs/gws.yaml +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tooldefs/kubectl.yaml +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tooldefs/npm.yaml +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tooldefs/terraform.yaml +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tooldefs/uv.yaml +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tts/__init__.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tts/engines/chatterbox.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tts/engines/qwen_base.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tts/engines/qwen_custom.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tts/engines/qwen_design.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tts/engines/zonos.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/tunnels.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/utils/__init__.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/utils/chunker.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/utils/file_io.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/utils/paths.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/utils/speech.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/utils/subprocess.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/validation.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/voiceclone.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/voices/darren.wav +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/voices/default.wav +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/voices/jessica.wav +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/voices/lisa.wav +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/voices/may.wav +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/agentwire/worktree.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/decisions/obsidian-second-brain.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/logo.png +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/communication/channels.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/communication/hammerspoon.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/communication/handoff.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/concepts.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/council.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/deployment/remote-access.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/deployment/remote-machines.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/integrations/gws-google-workspace-cli.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/internals/damage-control.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/internals/portal.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/internals/shell-escaping.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/internals/window-collage.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/missions.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/scheduling/scheduled-workloads.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/services.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/sessions/claude-code-auto-mode.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/sessions/window-sizing.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/docs/wiki/voice/stt-self-hosted.md +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/requirements-tts.txt +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/templates/launchd/dev.agentwire.mission-dispatcher.plist +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/templates/launchd/dev.agentwire.mission-feedback-router.plist +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/templates/launchd/dev.agentwire.mission-janitor.plist +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/conftest.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/e2e/test_portal_ui.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/fixtures/sample_agentwire.yml +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/fixtures/sample_config.yaml +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/fixtures/sample_scheduler.yaml +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/integration/test_missions_concurrency.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/integration/test_missions_lifecycle.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/integration/test_scheduler_board.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/integration/test_server_websockets.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_announcements.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_channels.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_cli_commands.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_cli_output.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_cli_safety.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_config.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_council_cli.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_council_inbox.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_council_state.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_damage_control_hooks.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_damage_control_sync.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_file_io.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_handoff_git_state.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_handoff_instructions.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_handoff_parser.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_handoff_renderer.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_history.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_hooks_install.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_locking.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_mcp_server.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_mcp_tools_args.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_missions_cli.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_missions_config.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_missions_dispatcher.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_missions_eligibility.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_missions_feedback_router.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_missions_gc.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_missions_github.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_missions_naming.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_missions_state.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_overnight_resume_flags.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_project_config.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_roles.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_safety_disabled_rules.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_safety_escape_hatch.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_safety_kill_switch.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_safety_mission_worker.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_scheduler.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_scheduler_parsing.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_scratchpad.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_security.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_server_pure.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_services.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_session_ready.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_speech_tags.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_stt_backend.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_tasks.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_templating.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_terminal_resize.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_tmux_template.py +0 -0
- {agentwire_dev-1.34.0 → agentwire_dev-1.35.1}/tests/unit/test_tts_engine_resolution.py +0 -0
- {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.
|
|
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 (
|
|
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 —
|
|
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,
|
|
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
|
|
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 (
|
|
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 —
|
|
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,
|
|
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
|
|
196
|
+
connected, speech plays on local speakers, which you can silence at the
|
|
195
197
|
system level).
|
|
196
198
|
|
|
197
199
|
</details>
|