agent-cli 0.73.0__tar.gz → 0.75.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {agent_cli-0.73.0 → agent_cli-0.75.0}/PKG-INFO +12 -8
- {agent_cli-0.73.0 → agent_cli-0.75.0}/README.md +7 -5
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/_extras.json +23 -14
- agent_cli-0.75.0/agent_cli/_requirements/whisper-transformers.txt +256 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/example-config.toml +4 -1
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/install/extras.py +6 -2
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/sync_extras.py +10 -1
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/cli.py +45 -25
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/whisper/backends/__init__.py +8 -1
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/whisper/backends/mlx.py +10 -0
- agent_cli-0.75.0/agent_cli/server/whisper/backends/transformers.py +315 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docker/transcribe-proxy.Dockerfile +1 -1
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/install-extras.md +5 -5
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/server/index.md +2 -2
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/server/whisper.md +17 -5
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/getting-started.md +3 -2
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/installation/linux.md +5 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/installation/macos.md +4 -2
- {agent_cli-0.73.0 → agent_cli-0.75.0}/pyproject.toml +10 -6
- agent_cli-0.75.0/tests/test_transformers_backend.py +57 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/uv.lock +9 -5
- {agent_cli-0.73.0 → agent_cli-0.75.0}/.claude/skills/agent-cli-dev/SKILL.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/.claude/skills/agent-cli-dev/examples.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/.claude-plugin/README.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/.claude-plugin/marketplace.json +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/.claude-plugin/plugin.json +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/.claude-plugin/skills/agent-cli-dev/SKILL.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/.claude-plugin/skills/agent-cli-dev/examples.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/.cursorrules +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/.dockerignore +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/.env.example +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/.github/logo.svg +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/.github/release-drafter.yml +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/.github/renovate.json +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/.github/scripts/check_extras_sync.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/.github/scripts/sync_requirements.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/.github/workflows/automerge.yml +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/.github/workflows/docker.yml +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/.github/workflows/docs.yml +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/.github/workflows/markdown-code-runner.yml +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/.github/workflows/pytest.yml +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/.github/workflows/release-drafter.yml +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/.github/workflows/release.yml +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/.github/workflows/toc.yaml +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/.gitignore +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/.jscpd.json +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/.pre-commit-config.yaml +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/.prompts/docs-review.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/.prompts/pr-review.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/CLAUDE.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/LICENSE +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/__init__.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/__main__.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/_requirements/.gitkeep +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/_requirements/audio.txt +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/_requirements/faster-whisper.txt +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/_requirements/kokoro.txt +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/_requirements/llm.txt +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/_requirements/memory.txt +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/_requirements/mlx-whisper.txt +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/_requirements/piper.txt +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/_requirements/rag.txt +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/_requirements/server.txt +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/_requirements/speed.txt +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/_requirements/vad.txt +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/_requirements/wyoming.txt +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/_tools.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/agents/__init__.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/agents/_voice_agent_common.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/agents/assistant.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/agents/autocorrect.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/agents/chat.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/agents/memory/__init__.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/agents/memory/add.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/agents/memory/proxy.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/agents/rag_proxy.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/agents/speak.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/agents/transcribe.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/agents/transcribe_daemon.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/agents/voice_edit.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/api.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/cli.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/config.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/config_cmd.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/constants.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/core/__init__.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/core/audio.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/core/audio_format.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/core/chroma.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/core/deps.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/core/openai_proxy.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/core/process.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/core/reranker.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/core/sse.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/core/transcription_logger.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/core/utils.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/core/vad.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/core/watch.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/__init__.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/cli.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/__init__.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/aider.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/base.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/claude.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/codex.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/continue_dev.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/copilot.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/cursor_agent.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/gemini.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/opencode.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/registry.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/editors/__init__.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/editors/base.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/editors/cursor.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/editors/emacs.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/editors/jetbrains.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/editors/nano.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/editors/neovim.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/editors/registry.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/editors/sublime.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/editors/vim.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/editors/vscode.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/editors/zed.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/project.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/registry.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/skill/SKILL.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/skill/examples.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/terminals/__init__.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/terminals/apple_terminal.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/terminals/base.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/terminals/gnome.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/terminals/iterm2.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/terminals/kitty.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/terminals/registry.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/terminals/tmux.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/terminals/warp.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/terminals/zellij.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/dev/worktree.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/docs_gen.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/install/__init__.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/install/common.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/install/hotkeys.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/install/services.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/__init__.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/_files.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/_filters.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/_git.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/_indexer.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/_ingest.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/_persistence.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/_prompt.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/_retrieval.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/_store.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/_streaming.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/_tasks.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/api.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/client.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/engine.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/entities.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/memory/models.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/opts.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/py.typed +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/rag/__init__.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/rag/_indexer.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/rag/_indexing.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/rag/_prompt.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/rag/_retriever.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/rag/_store.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/rag/_utils.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/rag/api.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/rag/client.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/rag/engine.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/rag/models.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/.runtime/.gitkeep +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/__init__.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/check_plugin_skill_sync.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/linux-hotkeys/README.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/linux-hotkeys/toggle-voice-edit.sh +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/macos-hotkeys/README.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/macos-hotkeys/skhd-config-example +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/macos-hotkeys/toggle-autocorrect.sh +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/macos-hotkeys/toggle-transcription.sh +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/macos-hotkeys/toggle-voice-edit.sh +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/nvidia-asr-server/README.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/nvidia-asr-server/pyproject.toml +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/nvidia-asr-server/server.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/nvidia-asr-server/shell.nix +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/nvidia-asr-server/uv.lock +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/run-openwakeword.sh +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/run-piper-windows.ps1 +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/run-piper.sh +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/run-whisper-linux.sh +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/run-whisper-macos.sh +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/run-whisper-windows.ps1 +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/run-whisper.sh +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/run_faster_whisper_server.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/setup-linux-hotkeys.sh +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/setup-linux.sh +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/setup-macos-hotkeys.sh +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/setup-macos.sh +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/setup-windows.ps1 +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/start-all-services-windows.ps1 +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/scripts/start-all-services.sh +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/__init__.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/common.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/model_manager.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/model_registry.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/proxy/__init__.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/proxy/api.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/streaming.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/tts/__init__.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/tts/api.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/tts/backends/__init__.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/tts/backends/base.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/tts/backends/kokoro.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/tts/backends/piper.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/tts/model_manager.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/tts/model_registry.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/tts/wyoming_handler.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/whisper/__init__.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/whisper/api.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/whisper/backends/base.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/whisper/backends/faster_whisper.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/whisper/languages.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/whisper/model_manager.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/whisper/model_registry.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/server/whisper/wyoming_handler.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/services/__init__.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/services/_wyoming_utils.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/services/asr.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/services/llm.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/services/tts.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/agent_cli/services/wake_word.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docker/docker-compose.yml +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docker/memory-proxy.Dockerfile +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docker/rag-proxy.Dockerfile +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docker/tts.Dockerfile +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docker/whisper.Dockerfile +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/CNAME +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/architecture/index.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/architecture/memory.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/architecture/rag.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/assistant.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/autocorrect.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/chat.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/config.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/dev.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/index.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/install-hotkeys.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/install-services.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/memory.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/rag-proxy.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/server/transcribe-proxy.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/server/tts.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/speak.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/start-services.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/transcribe-daemon.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/transcribe.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/commands/voice-edit.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/configuration.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/iOS_Shortcut_Guide.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/index.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/installation/docker.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/installation/index.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/installation/nixos.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/installation/windows.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/logo-clean.svg +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/run_markdown_code_runner.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/docs/system-integration.md +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/example.agent-cli-config.toml +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/justfile +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/shell.nix +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/__init__.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/__init__.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_fix_my_text.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_interactive.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_interactive_extra.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_memory_add.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_speak.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_speak_e2e.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_transcribe.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_transcribe_agent.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_transcribe_daemon.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_transcribe_e2e.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_transcribe_recovery.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_tts_common.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_tts_common_extra.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_voice_agent_common.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_voice_edit.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_voice_edit_e2e.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/agents/test_wake_word_assistant.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/conftest.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/core/__init__.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/core/test_audio_format.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/core/test_chroma.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/core/test_sse.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/core/test_vad.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/core/test_watch.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/dev/__init__.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/dev/test_cli.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/dev/test_coding_agents.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/dev/test_editors.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/dev/test_project.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/dev/test_terminals.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/dev/test_verification.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/dev/test_worktree.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/install/__init__.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/install/test_extras.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/memory/__init__.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/memory/test_api_health.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/memory/test_api_integration_liveish.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/memory/test_client.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/memory/test_engine.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/memory/test_files.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/memory/test_filters.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/memory/test_git_integration.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/memory/test_indexer.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/memory/test_memory_integration.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/memory/test_proxy_passthrough.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/memory/test_store.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/memory/test_utils.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/mocks/__init__.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/mocks/audio.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/mocks/llm.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/mocks/wyoming.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/rag/__init__.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/rag/test_api.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/rag/test_engine.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/rag/test_history.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/rag/test_indexer.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/rag/test_indexing.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/rag/test_rag_client.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/rag/test_rag_integration_liveish.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/rag/test_rag_proxy_passthrough.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/rag/test_retriever.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/rag/test_store.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/rag/test_utils.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_api.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_api_integration.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_asr.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_asr_recovery.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_audio_e2e.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_cli.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_config.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_config_cmd.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_docs_gen.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_env_vars.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_json_output.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_llm.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_llm_gemini.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_memory_tools.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_mlx_backend.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_process_manager.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_requires_extras.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_server_streaming.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_server_tts.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_server_whisper.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_services.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_tools.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_tts.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_utils.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_wake_word.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/tests/test_wyoming_utils.py +0 -0
- {agent_cli-0.73.0 → agent_cli-0.75.0}/zensical.toml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.75.0
|
|
4
4
|
Summary: A suite of AI-powered command-line tools for text correction, audio transcription, and voice assistance.
|
|
5
5
|
Project-URL: Homepage, https://github.com/basnijholt/agent-cli
|
|
6
6
|
Author-email: Bas Nijholt <bas@nijho.lt>
|
|
@@ -46,8 +46,6 @@ Requires-Dist: soundfile>=0.12.0; extra == 'kokoro'
|
|
|
46
46
|
Requires-Dist: transformers>=4.40.0; extra == 'kokoro'
|
|
47
47
|
Provides-Extra: llm
|
|
48
48
|
Requires-Dist: pydantic-ai-slim[duckduckgo,google,openai,vertexai]>=0.1.1; extra == 'llm'
|
|
49
|
-
Provides-Extra: llm-core
|
|
50
|
-
Requires-Dist: pydantic-ai-slim[google,openai]>=0.1.1; extra == 'llm-core'
|
|
51
49
|
Provides-Extra: memory
|
|
52
50
|
Requires-Dist: chromadb>=0.4.22; extra == 'memory'
|
|
53
51
|
Requires-Dist: fastapi[standard]; extra == 'memory'
|
|
@@ -86,6 +84,10 @@ Requires-Dist: pytest-timeout; extra == 'test'
|
|
|
86
84
|
Requires-Dist: pytest>=7.0.0; extra == 'test'
|
|
87
85
|
Provides-Extra: vad
|
|
88
86
|
Requires-Dist: silero-vad-lite>=0.2.1; extra == 'vad'
|
|
87
|
+
Provides-Extra: whisper-transformers
|
|
88
|
+
Requires-Dist: fastapi[standard]; extra == 'whisper-transformers'
|
|
89
|
+
Requires-Dist: torch>=2.0.0; extra == 'whisper-transformers'
|
|
90
|
+
Requires-Dist: transformers>=4.30.0; extra == 'whisper-transformers'
|
|
89
91
|
Provides-Extra: wyoming
|
|
90
92
|
Requires-Dist: wyoming>=1.5.2; extra == 'wyoming'
|
|
91
93
|
Description-Content-Type: text/markdown
|
|
@@ -426,7 +428,7 @@ Our installation scripts automatically handle all dependencies:
|
|
|
426
428
|
|---------|---------|-----------------|
|
|
427
429
|
| **[Ollama](https://ollama.ai/)** | Local LLM for text processing | ✅ Yes, with default model |
|
|
428
430
|
| **[Wyoming Faster Whisper](https://github.com/rhasspy/wyoming-faster-whisper)** | Speech-to-text | ✅ Yes, via `uvx` |
|
|
429
|
-
| **[`agent-cli server whisper`](docs/commands/server/whisper.md)** | Speech-to-text (alternative) | ✅ Built-in, `pip install "agent-cli[whisper]"` |
|
|
431
|
+
| **[`agent-cli server whisper`](docs/commands/server/whisper.md)** | Speech-to-text (alternative) | ✅ Built-in, `pip install "agent-cli[faster-whisper]"` |
|
|
430
432
|
| **[Wyoming Piper](https://github.com/rhasspy/wyoming-piper)** | Text-to-speech | ✅ Yes, via `uvx` |
|
|
431
433
|
| **[Kokoro-FastAPI](https://github.com/remsky/Kokoro-FastAPI)** | Premium TTS (optional) | ⚙️ Can be added later |
|
|
432
434
|
| **[Wyoming openWakeWord](https://github.com/rhasspy/wyoming-openwakeword)** | Wake word detection | ✅ Yes, for `assistant` |
|
|
@@ -520,6 +522,7 @@ agent-cli install-extras rag memory vad
|
|
|
520
522
|
• kokoro - Kokoro neural TTS engine
|
|
521
523
|
• faster-whisper - Whisper ASR for CUDA/CPU
|
|
522
524
|
• mlx-whisper - Whisper ASR for Apple Silicon
|
|
525
|
+
• whisper-transformers - Whisper ASR via HuggingFace transformers (safetensors)
|
|
523
526
|
• wyoming - Wyoming protocol for ASR/TTS servers
|
|
524
527
|
• server - FastAPI server components
|
|
525
528
|
• speed - Audio speed adjustment
|
|
@@ -536,7 +539,8 @@ agent-cli install-extras rag memory vad
|
|
|
536
539
|
|
|
537
540
|
╭─ Arguments ────────────────────────────────────────────────────────────────────────────╮
|
|
538
541
|
│ extras [EXTRAS]... Extras to install: rag, memory, vad, audio, piper, kokoro, │
|
|
539
|
-
│ faster-whisper, mlx-whisper,
|
|
542
|
+
│ faster-whisper, mlx-whisper, whisper-transformers, wyoming, │
|
|
543
|
+
│ server, speed, llm │
|
|
540
544
|
╰────────────────────────────────────────────────────────────────────────────────────────╯
|
|
541
545
|
╭─ Options ──────────────────────────────────────────────────────────────────────────────╮
|
|
542
546
|
│ --list -l Show available extras with descriptions (what each one enables) │
|
|
@@ -632,8 +636,8 @@ the `[defaults]` section of your configuration file.
|
|
|
632
636
|
```toml
|
|
633
637
|
[defaults]
|
|
634
638
|
# llm_provider = "ollama" # 'ollama', 'openai', or 'gemini'
|
|
635
|
-
# asr_provider = "wyoming" # 'wyoming' or '
|
|
636
|
-
# tts_provider = "wyoming" # 'wyoming', 'openai', or '
|
|
639
|
+
# asr_provider = "wyoming" # 'wyoming', 'openai', or 'gemini'
|
|
640
|
+
# tts_provider = "wyoming" # 'wyoming', 'openai', 'kokoro', or 'gemini'
|
|
637
641
|
# openai_api_key = "sk-..."
|
|
638
642
|
# gemini_api_key = "..."
|
|
639
643
|
```
|
|
@@ -645,7 +649,7 @@ the `[defaults]` section of your configuration file.
|
|
|
645
649
|
**Workflow:** This is a simple, one-shot command.
|
|
646
650
|
|
|
647
651
|
1. It reads text from your system clipboard (or from a direct argument).
|
|
648
|
-
2. It sends the text to
|
|
652
|
+
2. It sends the text to your configured LLM provider (default: Ollama) with a prompt to perform only technical corrections.
|
|
649
653
|
3. The corrected text is copied back to your clipboard, replacing the original.
|
|
650
654
|
|
|
651
655
|
**How to Use It:** This tool is ideal for integrating with a system-wide hotkey.
|
|
@@ -334,7 +334,7 @@ Our installation scripts automatically handle all dependencies:
|
|
|
334
334
|
|---------|---------|-----------------|
|
|
335
335
|
| **[Ollama](https://ollama.ai/)** | Local LLM for text processing | ✅ Yes, with default model |
|
|
336
336
|
| **[Wyoming Faster Whisper](https://github.com/rhasspy/wyoming-faster-whisper)** | Speech-to-text | ✅ Yes, via `uvx` |
|
|
337
|
-
| **[`agent-cli server whisper`](docs/commands/server/whisper.md)** | Speech-to-text (alternative) | ✅ Built-in, `pip install "agent-cli[whisper]"` |
|
|
337
|
+
| **[`agent-cli server whisper`](docs/commands/server/whisper.md)** | Speech-to-text (alternative) | ✅ Built-in, `pip install "agent-cli[faster-whisper]"` |
|
|
338
338
|
| **[Wyoming Piper](https://github.com/rhasspy/wyoming-piper)** | Text-to-speech | ✅ Yes, via `uvx` |
|
|
339
339
|
| **[Kokoro-FastAPI](https://github.com/remsky/Kokoro-FastAPI)** | Premium TTS (optional) | ⚙️ Can be added later |
|
|
340
340
|
| **[Wyoming openWakeWord](https://github.com/rhasspy/wyoming-openwakeword)** | Wake word detection | ✅ Yes, for `assistant` |
|
|
@@ -428,6 +428,7 @@ agent-cli install-extras rag memory vad
|
|
|
428
428
|
• kokoro - Kokoro neural TTS engine
|
|
429
429
|
• faster-whisper - Whisper ASR for CUDA/CPU
|
|
430
430
|
• mlx-whisper - Whisper ASR for Apple Silicon
|
|
431
|
+
• whisper-transformers - Whisper ASR via HuggingFace transformers (safetensors)
|
|
431
432
|
• wyoming - Wyoming protocol for ASR/TTS servers
|
|
432
433
|
• server - FastAPI server components
|
|
433
434
|
• speed - Audio speed adjustment
|
|
@@ -444,7 +445,8 @@ agent-cli install-extras rag memory vad
|
|
|
444
445
|
|
|
445
446
|
╭─ Arguments ────────────────────────────────────────────────────────────────────────────╮
|
|
446
447
|
│ extras [EXTRAS]... Extras to install: rag, memory, vad, audio, piper, kokoro, │
|
|
447
|
-
│ faster-whisper, mlx-whisper,
|
|
448
|
+
│ faster-whisper, mlx-whisper, whisper-transformers, wyoming, │
|
|
449
|
+
│ server, speed, llm │
|
|
448
450
|
╰────────────────────────────────────────────────────────────────────────────────────────╯
|
|
449
451
|
╭─ Options ──────────────────────────────────────────────────────────────────────────────╮
|
|
450
452
|
│ --list -l Show available extras with descriptions (what each one enables) │
|
|
@@ -540,8 +542,8 @@ the `[defaults]` section of your configuration file.
|
|
|
540
542
|
```toml
|
|
541
543
|
[defaults]
|
|
542
544
|
# llm_provider = "ollama" # 'ollama', 'openai', or 'gemini'
|
|
543
|
-
# asr_provider = "wyoming" # 'wyoming' or '
|
|
544
|
-
# tts_provider = "wyoming" # 'wyoming', 'openai', or '
|
|
545
|
+
# asr_provider = "wyoming" # 'wyoming', 'openai', or 'gemini'
|
|
546
|
+
# tts_provider = "wyoming" # 'wyoming', 'openai', 'kokoro', or 'gemini'
|
|
545
547
|
# openai_api_key = "sk-..."
|
|
546
548
|
# gemini_api_key = "..."
|
|
547
549
|
```
|
|
@@ -553,7 +555,7 @@ the `[defaults]` section of your configuration file.
|
|
|
553
555
|
**Workflow:** This is a simple, one-shot command.
|
|
554
556
|
|
|
555
557
|
1. It reads text from your system clipboard (or from a direct argument).
|
|
556
|
-
2. It sends the text to
|
|
558
|
+
2. It sends the text to your configured LLM provider (default: Ollama) with a prompt to perform only technical corrections.
|
|
557
559
|
3. The corrected text is copied back to your clipboard, replacing the original.
|
|
558
560
|
|
|
559
561
|
**How to Use It:** This tool is ideal for integrating with a system-wide hotkey.
|
|
@@ -6,21 +6,19 @@
|
|
|
6
6
|
]
|
|
7
7
|
],
|
|
8
8
|
"faster-whisper": [
|
|
9
|
-
"
|
|
10
|
-
[
|
|
9
|
+
"Whisper ASR via CTranslate2",
|
|
10
|
+
[
|
|
11
|
+
"faster_whisper"
|
|
12
|
+
]
|
|
11
13
|
],
|
|
12
14
|
"kokoro": [
|
|
13
|
-
"
|
|
14
|
-
[]
|
|
15
|
-
],
|
|
16
|
-
"llm": [
|
|
17
|
-
"LLM framework (pydantic-ai)",
|
|
15
|
+
"Kokoro neural TTS (GPU)",
|
|
18
16
|
[
|
|
19
|
-
"
|
|
17
|
+
"kokoro"
|
|
20
18
|
]
|
|
21
19
|
],
|
|
22
|
-
"llm
|
|
23
|
-
"
|
|
20
|
+
"llm": [
|
|
21
|
+
"LLM framework (pydantic-ai)",
|
|
24
22
|
[
|
|
25
23
|
"pydantic_ai"
|
|
26
24
|
]
|
|
@@ -34,12 +32,16 @@
|
|
|
34
32
|
]
|
|
35
33
|
],
|
|
36
34
|
"mlx-whisper": [
|
|
37
|
-
"
|
|
38
|
-
[
|
|
35
|
+
"Whisper ASR for Apple Silicon",
|
|
36
|
+
[
|
|
37
|
+
"mlx_whisper"
|
|
38
|
+
]
|
|
39
39
|
],
|
|
40
40
|
"piper": [
|
|
41
|
-
"
|
|
42
|
-
[
|
|
41
|
+
"Piper TTS (CPU)",
|
|
42
|
+
[
|
|
43
|
+
"piper"
|
|
44
|
+
]
|
|
43
45
|
],
|
|
44
46
|
"rag": [
|
|
45
47
|
"RAG proxy (ChromaDB, embeddings)",
|
|
@@ -66,6 +68,13 @@
|
|
|
66
68
|
"silero_vad"
|
|
67
69
|
]
|
|
68
70
|
],
|
|
71
|
+
"whisper-transformers": [
|
|
72
|
+
"Whisper ASR via HuggingFace transformers",
|
|
73
|
+
[
|
|
74
|
+
"transformers",
|
|
75
|
+
"torch"
|
|
76
|
+
]
|
|
77
|
+
],
|
|
69
78
|
"wyoming": [
|
|
70
79
|
"Wyoming protocol support",
|
|
71
80
|
[
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
# This file was autogenerated by uv via the following command:
|
|
2
|
+
# uv export --extra whisper-transformers --no-dev --no-emit-project --no-hashes
|
|
3
|
+
annotated-doc==0.0.4
|
|
4
|
+
# via fastapi
|
|
5
|
+
annotated-types==0.7.0
|
|
6
|
+
# via pydantic
|
|
7
|
+
anyio==4.12.1
|
|
8
|
+
# via
|
|
9
|
+
# httpx
|
|
10
|
+
# starlette
|
|
11
|
+
# watchfiles
|
|
12
|
+
certifi==2026.1.4
|
|
13
|
+
# via
|
|
14
|
+
# httpcore
|
|
15
|
+
# httpx
|
|
16
|
+
# requests
|
|
17
|
+
# sentry-sdk
|
|
18
|
+
charset-normalizer==3.4.4
|
|
19
|
+
# via requests
|
|
20
|
+
click==8.3.1
|
|
21
|
+
# via
|
|
22
|
+
# rich-toolkit
|
|
23
|
+
# typer
|
|
24
|
+
# typer-slim
|
|
25
|
+
# uvicorn
|
|
26
|
+
colorama==0.4.6 ; sys_platform == 'win32'
|
|
27
|
+
# via
|
|
28
|
+
# click
|
|
29
|
+
# tqdm
|
|
30
|
+
# uvicorn
|
|
31
|
+
dnspython==2.8.0
|
|
32
|
+
# via email-validator
|
|
33
|
+
dotenv==0.9.9
|
|
34
|
+
# via agent-cli
|
|
35
|
+
email-validator==2.3.0
|
|
36
|
+
# via
|
|
37
|
+
# fastapi
|
|
38
|
+
# pydantic
|
|
39
|
+
fastapi==0.128.0
|
|
40
|
+
# via agent-cli
|
|
41
|
+
fastapi-cli==0.0.20
|
|
42
|
+
# via fastapi
|
|
43
|
+
fastapi-cloud-cli==0.10.1
|
|
44
|
+
# via fastapi-cli
|
|
45
|
+
fastar==0.8.0
|
|
46
|
+
# via fastapi-cloud-cli
|
|
47
|
+
filelock==3.20.3
|
|
48
|
+
# via
|
|
49
|
+
# huggingface-hub
|
|
50
|
+
# torch
|
|
51
|
+
# transformers
|
|
52
|
+
fsspec==2026.1.0
|
|
53
|
+
# via
|
|
54
|
+
# huggingface-hub
|
|
55
|
+
# torch
|
|
56
|
+
h11==0.16.0
|
|
57
|
+
# via
|
|
58
|
+
# httpcore
|
|
59
|
+
# uvicorn
|
|
60
|
+
hf-xet==1.2.0 ; platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64'
|
|
61
|
+
# via huggingface-hub
|
|
62
|
+
httpcore==1.0.9
|
|
63
|
+
# via httpx
|
|
64
|
+
httptools==0.7.1
|
|
65
|
+
# via uvicorn
|
|
66
|
+
httpx==0.28.1
|
|
67
|
+
# via
|
|
68
|
+
# agent-cli
|
|
69
|
+
# fastapi
|
|
70
|
+
# fastapi-cloud-cli
|
|
71
|
+
huggingface-hub==0.36.0
|
|
72
|
+
# via
|
|
73
|
+
# tokenizers
|
|
74
|
+
# transformers
|
|
75
|
+
idna==3.11
|
|
76
|
+
# via
|
|
77
|
+
# anyio
|
|
78
|
+
# email-validator
|
|
79
|
+
# httpx
|
|
80
|
+
# requests
|
|
81
|
+
jinja2==3.1.6
|
|
82
|
+
# via
|
|
83
|
+
# fastapi
|
|
84
|
+
# torch
|
|
85
|
+
markdown-it-py==4.0.0
|
|
86
|
+
# via rich
|
|
87
|
+
markupsafe==3.0.3
|
|
88
|
+
# via jinja2
|
|
89
|
+
mdurl==0.1.2
|
|
90
|
+
# via markdown-it-py
|
|
91
|
+
mpmath==1.3.0
|
|
92
|
+
# via sympy
|
|
93
|
+
networkx==3.6.1
|
|
94
|
+
# via torch
|
|
95
|
+
numpy==2.3.5
|
|
96
|
+
# via transformers
|
|
97
|
+
nvidia-cublas-cu12==12.8.4.1 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
98
|
+
# via
|
|
99
|
+
# nvidia-cudnn-cu12
|
|
100
|
+
# nvidia-cusolver-cu12
|
|
101
|
+
# torch
|
|
102
|
+
nvidia-cuda-cupti-cu12==12.8.90 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
103
|
+
# via torch
|
|
104
|
+
nvidia-cuda-nvrtc-cu12==12.8.93 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
105
|
+
# via torch
|
|
106
|
+
nvidia-cuda-runtime-cu12==12.8.90 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
107
|
+
# via torch
|
|
108
|
+
nvidia-cudnn-cu12==9.10.2.21 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
109
|
+
# via torch
|
|
110
|
+
nvidia-cufft-cu12==11.3.3.83 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
111
|
+
# via torch
|
|
112
|
+
nvidia-cufile-cu12==1.13.1.3 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
113
|
+
# via torch
|
|
114
|
+
nvidia-curand-cu12==10.3.9.90 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
115
|
+
# via torch
|
|
116
|
+
nvidia-cusolver-cu12==11.7.3.90 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
117
|
+
# via torch
|
|
118
|
+
nvidia-cusparse-cu12==12.5.8.93 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
119
|
+
# via
|
|
120
|
+
# nvidia-cusolver-cu12
|
|
121
|
+
# torch
|
|
122
|
+
nvidia-cusparselt-cu12==0.7.1 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
123
|
+
# via torch
|
|
124
|
+
nvidia-nccl-cu12==2.27.5 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
125
|
+
# via torch
|
|
126
|
+
nvidia-nvjitlink-cu12==12.8.93 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
127
|
+
# via
|
|
128
|
+
# nvidia-cufft-cu12
|
|
129
|
+
# nvidia-cusolver-cu12
|
|
130
|
+
# nvidia-cusparse-cu12
|
|
131
|
+
# torch
|
|
132
|
+
nvidia-nvshmem-cu12==3.3.20 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
133
|
+
# via torch
|
|
134
|
+
nvidia-nvtx-cu12==12.8.90 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
135
|
+
# via torch
|
|
136
|
+
packaging==25.0
|
|
137
|
+
# via
|
|
138
|
+
# huggingface-hub
|
|
139
|
+
# transformers
|
|
140
|
+
psutil==7.2.1 ; sys_platform == 'win32'
|
|
141
|
+
# via agent-cli
|
|
142
|
+
pydantic==2.12.5
|
|
143
|
+
# via
|
|
144
|
+
# agent-cli
|
|
145
|
+
# fastapi
|
|
146
|
+
# fastapi-cloud-cli
|
|
147
|
+
# pydantic-extra-types
|
|
148
|
+
# pydantic-settings
|
|
149
|
+
pydantic-core==2.41.5
|
|
150
|
+
# via pydantic
|
|
151
|
+
pydantic-extra-types==2.11.0
|
|
152
|
+
# via fastapi
|
|
153
|
+
pydantic-settings==2.12.0
|
|
154
|
+
# via fastapi
|
|
155
|
+
pygments==2.19.2
|
|
156
|
+
# via rich
|
|
157
|
+
pyperclip==1.11.0
|
|
158
|
+
# via agent-cli
|
|
159
|
+
python-dotenv==1.2.1
|
|
160
|
+
# via
|
|
161
|
+
# dotenv
|
|
162
|
+
# pydantic-settings
|
|
163
|
+
# uvicorn
|
|
164
|
+
python-multipart==0.0.21
|
|
165
|
+
# via fastapi
|
|
166
|
+
pyyaml==6.0.3
|
|
167
|
+
# via
|
|
168
|
+
# huggingface-hub
|
|
169
|
+
# transformers
|
|
170
|
+
# uvicorn
|
|
171
|
+
regex==2026.1.15
|
|
172
|
+
# via transformers
|
|
173
|
+
requests==2.32.5
|
|
174
|
+
# via
|
|
175
|
+
# huggingface-hub
|
|
176
|
+
# transformers
|
|
177
|
+
rich==14.2.0
|
|
178
|
+
# via
|
|
179
|
+
# agent-cli
|
|
180
|
+
# rich-toolkit
|
|
181
|
+
# typer
|
|
182
|
+
# typer-slim
|
|
183
|
+
rich-toolkit==0.17.1
|
|
184
|
+
# via
|
|
185
|
+
# fastapi-cli
|
|
186
|
+
# fastapi-cloud-cli
|
|
187
|
+
rignore==0.7.6
|
|
188
|
+
# via fastapi-cloud-cli
|
|
189
|
+
safetensors==0.7.0
|
|
190
|
+
# via transformers
|
|
191
|
+
sentry-sdk==2.49.0
|
|
192
|
+
# via fastapi-cloud-cli
|
|
193
|
+
setproctitle==1.3.7
|
|
194
|
+
# via agent-cli
|
|
195
|
+
setuptools==80.9.0 ; python_full_version >= '3.12'
|
|
196
|
+
# via torch
|
|
197
|
+
shellingham==1.5.4
|
|
198
|
+
# via
|
|
199
|
+
# typer
|
|
200
|
+
# typer-slim
|
|
201
|
+
starlette==0.50.0
|
|
202
|
+
# via fastapi
|
|
203
|
+
sympy==1.14.0
|
|
204
|
+
# via torch
|
|
205
|
+
tokenizers==0.22.2
|
|
206
|
+
# via transformers
|
|
207
|
+
torch==2.9.1
|
|
208
|
+
# via agent-cli
|
|
209
|
+
tqdm==4.67.1
|
|
210
|
+
# via
|
|
211
|
+
# huggingface-hub
|
|
212
|
+
# transformers
|
|
213
|
+
transformers==4.57.5
|
|
214
|
+
# via agent-cli
|
|
215
|
+
triton==3.5.1 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
216
|
+
# via torch
|
|
217
|
+
typer==0.21.1
|
|
218
|
+
# via
|
|
219
|
+
# agent-cli
|
|
220
|
+
# fastapi-cli
|
|
221
|
+
# fastapi-cloud-cli
|
|
222
|
+
typer-slim==0.21.1
|
|
223
|
+
# via agent-cli
|
|
224
|
+
typing-extensions==4.15.0
|
|
225
|
+
# via
|
|
226
|
+
# anyio
|
|
227
|
+
# fastapi
|
|
228
|
+
# huggingface-hub
|
|
229
|
+
# pydantic
|
|
230
|
+
# pydantic-core
|
|
231
|
+
# pydantic-extra-types
|
|
232
|
+
# rich-toolkit
|
|
233
|
+
# starlette
|
|
234
|
+
# torch
|
|
235
|
+
# typer
|
|
236
|
+
# typer-slim
|
|
237
|
+
# typing-inspection
|
|
238
|
+
typing-inspection==0.4.2
|
|
239
|
+
# via
|
|
240
|
+
# pydantic
|
|
241
|
+
# pydantic-settings
|
|
242
|
+
urllib3==2.3.0
|
|
243
|
+
# via
|
|
244
|
+
# requests
|
|
245
|
+
# sentry-sdk
|
|
246
|
+
uvicorn==0.40.0
|
|
247
|
+
# via
|
|
248
|
+
# fastapi
|
|
249
|
+
# fastapi-cli
|
|
250
|
+
# fastapi-cloud-cli
|
|
251
|
+
uvloop==0.22.1 ; platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32'
|
|
252
|
+
# via uvicorn
|
|
253
|
+
watchfiles==1.1.1
|
|
254
|
+
# via uvicorn
|
|
255
|
+
websockets==15.0.1
|
|
256
|
+
# via uvicorn
|
|
@@ -13,7 +13,10 @@
|
|
|
13
13
|
[defaults]
|
|
14
14
|
|
|
15
15
|
# --- Provider Selection ---
|
|
16
|
-
# Select the default provider for each service
|
|
16
|
+
# Select the default provider for each service.
|
|
17
|
+
# LLM: "ollama", "openai", or "gemini"
|
|
18
|
+
# ASR: "wyoming", "openai", or "gemini"
|
|
19
|
+
# TTS: "wyoming", "openai", "kokoro", or "gemini"
|
|
17
20
|
llm-provider = "ollama" # "local" still works as a deprecated alias
|
|
18
21
|
tts-provider = "wyoming"
|
|
19
22
|
|
|
@@ -63,7 +63,9 @@ def _install_via_uv_tool(extras: list[str], *, quiet: bool = False) -> bool:
|
|
|
63
63
|
"""Reinstall agent-cli via uv tool with the specified extras."""
|
|
64
64
|
extras_str = ",".join(extras)
|
|
65
65
|
package_spec = f"agent-cli[{extras_str}]"
|
|
66
|
-
|
|
66
|
+
# Cap at Python 3.13 for compatibility - some deps (e.g., silero-vad-lite) don't support 3.14 yet
|
|
67
|
+
major, minor = sys.version_info[:2]
|
|
68
|
+
python_version = f"{major}.{min(minor, 13)}"
|
|
67
69
|
cmd = ["uv", "tool", "install", package_spec, "--force", "--python", python_version]
|
|
68
70
|
if quiet:
|
|
69
71
|
cmd.append("-q")
|
|
@@ -130,7 +132,8 @@ def install_extras(
|
|
|
130
132
|
list[str] | None,
|
|
131
133
|
typer.Argument(
|
|
132
134
|
help="Extras to install: `rag`, `memory`, `vad`, `audio`, `piper`, `kokoro`, "
|
|
133
|
-
"`faster-whisper`, `mlx-whisper`, `
|
|
135
|
+
"`faster-whisper`, `mlx-whisper`, `whisper-transformers`, `wyoming`, `server`, "
|
|
136
|
+
"`speed`, `llm`",
|
|
134
137
|
),
|
|
135
138
|
] = None,
|
|
136
139
|
list_extras: Annotated[
|
|
@@ -161,6 +164,7 @@ def install_extras(
|
|
|
161
164
|
- `kokoro` - Kokoro neural TTS engine
|
|
162
165
|
- `faster-whisper` - Whisper ASR for CUDA/CPU
|
|
163
166
|
- `mlx-whisper` - Whisper ASR for Apple Silicon
|
|
167
|
+
- `whisper-transformers` - Whisper ASR via HuggingFace transformers (safetensors)
|
|
164
168
|
- `wyoming` - Wyoming protocol for ASR/TTS servers
|
|
165
169
|
- `server` - FastAPI server components
|
|
166
170
|
- `speed` - Audio speed adjustment
|
|
@@ -33,7 +33,6 @@ EXTRA_METADATA: dict[str, tuple[str, list[str]]] = {
|
|
|
33
33
|
"openai": ("OpenAI API provider", ["openai"]),
|
|
34
34
|
"gemini": ("Google Gemini provider", ["google.genai"]),
|
|
35
35
|
"llm": ("LLM framework (pydantic-ai)", ["pydantic_ai"]),
|
|
36
|
-
"llm-core": ("Minimal LLM support for Docker images", ["pydantic_ai"]),
|
|
37
36
|
# Feature extras
|
|
38
37
|
"rag": ("RAG proxy (ChromaDB, embeddings)", ["chromadb", "pydantic_ai"]),
|
|
39
38
|
"memory": ("Long-term memory proxy", ["chromadb", "yaml", "pydantic_ai"]),
|
|
@@ -44,6 +43,16 @@ EXTRA_METADATA: dict[str, tuple[str, list[str]]] = {
|
|
|
44
43
|
"tts-kokoro": ("Kokoro neural TTS", ["kokoro"]),
|
|
45
44
|
"server": ("FastAPI server components", ["fastapi"]),
|
|
46
45
|
"speed": ("Audio speed adjustment (audiostretchy)", ["audiostretchy"]),
|
|
46
|
+
# Whisper backends
|
|
47
|
+
"faster-whisper": ("Whisper ASR via CTranslate2", ["faster_whisper"]),
|
|
48
|
+
"mlx-whisper": ("Whisper ASR for Apple Silicon", ["mlx_whisper"]),
|
|
49
|
+
"whisper-transformers": (
|
|
50
|
+
"Whisper ASR via HuggingFace transformers",
|
|
51
|
+
["transformers", "torch"],
|
|
52
|
+
),
|
|
53
|
+
# TTS backends
|
|
54
|
+
"piper": ("Piper TTS (CPU)", ["piper"]),
|
|
55
|
+
"kokoro": ("Kokoro neural TTS (GPU)", ["kokoro"]),
|
|
47
56
|
}
|
|
48
57
|
|
|
49
58
|
|
|
@@ -157,36 +157,43 @@ def _download_tts_models(
|
|
|
157
157
|
def _check_whisper_deps(backend: str, *, download_only: bool = False) -> None:
|
|
158
158
|
"""Check that Whisper dependencies are available."""
|
|
159
159
|
_check_server_deps()
|
|
160
|
-
if
|
|
161
|
-
if not _has("
|
|
160
|
+
if backend == "mlx":
|
|
161
|
+
if not _has("mlx_whisper"):
|
|
162
162
|
err_console.print(
|
|
163
|
-
"[bold red]Error:[/bold red]
|
|
164
|
-
"Run: [cyan]pip install
|
|
165
|
-
"or [cyan]uv sync --extra whisper[/cyan]",
|
|
163
|
+
"[bold red]Error:[/bold red] MLX Whisper backend requires mlx-whisper. "
|
|
164
|
+
"Run: [cyan]pip install mlx-whisper[/cyan]",
|
|
166
165
|
)
|
|
167
166
|
raise typer.Exit(1)
|
|
168
167
|
return
|
|
169
168
|
|
|
170
|
-
if backend == "
|
|
171
|
-
if not _has("
|
|
169
|
+
if backend == "transformers":
|
|
170
|
+
if not _has("transformers") or not _has("torch"):
|
|
172
171
|
err_console.print(
|
|
173
|
-
"[bold red]Error:[/bold red]
|
|
174
|
-
"Run: [cyan]pip install
|
|
172
|
+
"[bold red]Error:[/bold red] Transformers backend requires transformers and torch. "
|
|
173
|
+
"Run: [cyan]pip install agent-cli\\[whisper-transformers][/cyan] "
|
|
174
|
+
"or [cyan]uv sync --extra whisper-transformers[/cyan]",
|
|
175
175
|
)
|
|
176
176
|
raise typer.Exit(1)
|
|
177
177
|
return
|
|
178
178
|
|
|
179
179
|
if not _has("faster_whisper"):
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
180
|
+
if download_only:
|
|
181
|
+
err_console.print(
|
|
182
|
+
"[bold red]Error:[/bold red] faster-whisper is required for --download-only. "
|
|
183
|
+
"Run: [cyan]pip install agent-cli\\[faster-whisper][/cyan] "
|
|
184
|
+
"or [cyan]uv sync --extra faster-whisper[/cyan]",
|
|
185
|
+
)
|
|
186
|
+
else:
|
|
187
|
+
err_console.print(
|
|
188
|
+
"[bold red]Error:[/bold red] Whisper dependencies not installed. "
|
|
189
|
+
"Run: [cyan]pip install agent-cli\\[faster-whisper][/cyan] "
|
|
190
|
+
"or [cyan]uv sync --extra faster-whisper[/cyan]",
|
|
191
|
+
)
|
|
185
192
|
raise typer.Exit(1)
|
|
186
193
|
|
|
187
194
|
|
|
188
195
|
@app.command("whisper")
|
|
189
|
-
@requires_extras("server", "faster-whisper|mlx-whisper", "wyoming")
|
|
196
|
+
@requires_extras("server", "faster-whisper|mlx-whisper|whisper-transformers", "wyoming")
|
|
190
197
|
def whisper_cmd( # noqa: PLR0912, PLR0915
|
|
191
198
|
model: Annotated[
|
|
192
199
|
list[str] | None,
|
|
@@ -299,7 +306,7 @@ def whisper_cmd( # noqa: PLR0912, PLR0915
|
|
|
299
306
|
"-b",
|
|
300
307
|
help=(
|
|
301
308
|
"Inference backend: `auto` (faster-whisper on CUDA/CPU, MLX on Apple Silicon), "
|
|
302
|
-
"`faster-whisper`, `mlx`"
|
|
309
|
+
"`faster-whisper`, `mlx`, `transformers` (HuggingFace, supports safetensors)"
|
|
303
310
|
),
|
|
304
311
|
),
|
|
305
312
|
] = "auto",
|
|
@@ -331,7 +338,7 @@ def whisper_cmd( # noqa: PLR0912, PLR0915
|
|
|
331
338
|
# Setup Rich logging for consistent output
|
|
332
339
|
setup_rich_logging(log_level)
|
|
333
340
|
|
|
334
|
-
valid_backends = ("auto", "faster-whisper", "mlx")
|
|
341
|
+
valid_backends = ("auto", "faster-whisper", "mlx", "transformers")
|
|
335
342
|
if backend not in valid_backends:
|
|
336
343
|
err_console.print(
|
|
337
344
|
f"[bold red]Error:[/bold red] --backend must be one of: {', '.join(valid_backends)}",
|
|
@@ -339,7 +346,7 @@ def whisper_cmd( # noqa: PLR0912, PLR0915
|
|
|
339
346
|
raise typer.Exit(1)
|
|
340
347
|
|
|
341
348
|
resolved_backend = backend
|
|
342
|
-
if backend == "auto"
|
|
349
|
+
if backend == "auto":
|
|
343
350
|
from agent_cli.server.whisper.backends import detect_backend # noqa: PLC0415
|
|
344
351
|
|
|
345
352
|
resolved_backend = detect_backend()
|
|
@@ -370,13 +377,26 @@ def whisper_cmd( # noqa: PLR0912, PLR0915
|
|
|
370
377
|
for model_name in model:
|
|
371
378
|
console.print(f" Downloading [cyan]{model_name}[/cyan]...")
|
|
372
379
|
try:
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
+
if resolved_backend == "transformers":
|
|
381
|
+
from agent_cli.server.whisper.backends.transformers import ( # noqa: PLC0415
|
|
382
|
+
download_model as download_transformers_model,
|
|
383
|
+
)
|
|
384
|
+
|
|
385
|
+
download_transformers_model(model_name, cache_dir=cache_dir)
|
|
386
|
+
elif resolved_backend == "mlx":
|
|
387
|
+
from agent_cli.server.whisper.backends.mlx import ( # noqa: PLC0415
|
|
388
|
+
download_model as download_mlx_model,
|
|
389
|
+
)
|
|
390
|
+
|
|
391
|
+
download_mlx_model(model_name)
|
|
392
|
+
else:
|
|
393
|
+
from faster_whisper import WhisperModel # noqa: PLC0415
|
|
394
|
+
|
|
395
|
+
_ = WhisperModel(
|
|
396
|
+
model_name,
|
|
397
|
+
device="cpu", # Don't need GPU for download
|
|
398
|
+
download_root=str(cache_dir) if cache_dir else None,
|
|
399
|
+
)
|
|
380
400
|
console.print(f" [green]✓[/green] Downloaded {model_name}")
|
|
381
401
|
except Exception as e:
|
|
382
402
|
err_console.print(f" [red]✗[/red] Failed to download {model_name}: {e}")
|
|
@@ -17,7 +17,7 @@ from agent_cli.server.whisper.backends.base import (
|
|
|
17
17
|
|
|
18
18
|
logger = logging.getLogger(__name__)
|
|
19
19
|
|
|
20
|
-
BackendType = Literal["faster-whisper", "mlx", "auto"]
|
|
20
|
+
BackendType = Literal["faster-whisper", "mlx", "transformers", "auto"]
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
def detect_backend() -> Literal["faster-whisper", "mlx"]:
|
|
@@ -76,6 +76,13 @@ def create_backend(
|
|
|
76
76
|
|
|
77
77
|
return FasterWhisperBackend(config)
|
|
78
78
|
|
|
79
|
+
if backend_type == "transformers":
|
|
80
|
+
from agent_cli.server.whisper.backends.transformers import ( # noqa: PLC0415
|
|
81
|
+
TransformersWhisperBackend,
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
return TransformersWhisperBackend(config)
|
|
85
|
+
|
|
79
86
|
msg = f"Unknown backend type: {backend_type}"
|
|
80
87
|
raise ValueError(msg)
|
|
81
88
|
|
|
@@ -55,6 +55,16 @@ def _resolve_mlx_model_name(model_name: str) -> str:
|
|
|
55
55
|
return model_name
|
|
56
56
|
|
|
57
57
|
|
|
58
|
+
def download_model(model_name: str) -> str:
|
|
59
|
+
"""Download an MLX Whisper model and return the resolved repo name."""
|
|
60
|
+
import mlx.core as mx # noqa: PLC0415
|
|
61
|
+
from mlx_whisper.transcribe import ModelHolder # noqa: PLC0415
|
|
62
|
+
|
|
63
|
+
resolved_model = _resolve_mlx_model_name(model_name)
|
|
64
|
+
ModelHolder.get_model(resolved_model, mx.float16)
|
|
65
|
+
return resolved_model
|
|
66
|
+
|
|
67
|
+
|
|
58
68
|
def _pcm_to_float(audio_bytes: bytes) -> NDArray[np.float32]:
|
|
59
69
|
"""Convert 16-bit PCM audio bytes to float32 array normalized to [-1, 1]."""
|
|
60
70
|
import numpy as np # noqa: PLC0415
|