agent-cli 0.74.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.74.0 → agent_cli-0.75.0}/PKG-INFO +12 -6
- {agent_cli-0.74.0 → agent_cli-0.75.0}/README.md +7 -5
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/_extras.json +23 -8
- agent_cli-0.75.0/agent_cli/_requirements/whisper-transformers.txt +256 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/example-config.toml +4 -1
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/install/extras.py +3 -1
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/sync_extras.py +10 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/server/cli.py +45 -25
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/server/whisper/backends/__init__.py +8 -1
- {agent_cli-0.74.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.74.0 → agent_cli-0.75.0}/docs/commands/install-extras.md +5 -4
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/commands/server/index.md +2 -2
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/commands/server/whisper.md +17 -5
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/getting-started.md +3 -2
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/installation/linux.md +5 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/installation/macos.md +4 -2
- {agent_cli-0.74.0 → agent_cli-0.75.0}/pyproject.toml +5 -0
- agent_cli-0.75.0/tests/test_transformers_backend.py +57 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/uv.lock +9 -1
- {agent_cli-0.74.0 → agent_cli-0.75.0}/.claude/skills/agent-cli-dev/SKILL.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/.claude/skills/agent-cli-dev/examples.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/.claude-plugin/README.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/.claude-plugin/marketplace.json +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/.claude-plugin/plugin.json +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/.claude-plugin/skills/agent-cli-dev/SKILL.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/.claude-plugin/skills/agent-cli-dev/examples.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/.cursorrules +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/.dockerignore +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/.env.example +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/.github/logo.svg +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/.github/release-drafter.yml +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/.github/renovate.json +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/.github/scripts/check_extras_sync.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/.github/scripts/sync_requirements.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/.github/workflows/automerge.yml +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/.github/workflows/docker.yml +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/.github/workflows/docs.yml +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/.github/workflows/markdown-code-runner.yml +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/.github/workflows/pytest.yml +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/.github/workflows/release-drafter.yml +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/.github/workflows/release.yml +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/.github/workflows/toc.yaml +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/.gitignore +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/.jscpd.json +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/.pre-commit-config.yaml +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/.prompts/docs-review.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/.prompts/pr-review.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/CLAUDE.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/LICENSE +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/__init__.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/__main__.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/_requirements/.gitkeep +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/_requirements/audio.txt +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/_requirements/faster-whisper.txt +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/_requirements/kokoro.txt +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/_requirements/llm.txt +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/_requirements/memory.txt +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/_requirements/mlx-whisper.txt +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/_requirements/piper.txt +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/_requirements/rag.txt +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/_requirements/server.txt +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/_requirements/speed.txt +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/_requirements/vad.txt +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/_requirements/wyoming.txt +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/_tools.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/agents/__init__.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/agents/_voice_agent_common.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/agents/assistant.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/agents/autocorrect.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/agents/chat.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/agents/memory/__init__.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/agents/memory/add.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/agents/memory/proxy.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/agents/rag_proxy.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/agents/speak.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/agents/transcribe.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/agents/transcribe_daemon.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/agents/voice_edit.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/api.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/cli.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/config.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/config_cmd.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/constants.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/core/__init__.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/core/audio.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/core/audio_format.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/core/chroma.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/core/deps.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/core/openai_proxy.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/core/process.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/core/reranker.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/core/sse.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/core/transcription_logger.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/core/utils.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/core/vad.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/core/watch.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/__init__.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/cli.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/__init__.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/aider.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/base.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/claude.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/codex.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/continue_dev.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/copilot.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/cursor_agent.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/gemini.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/opencode.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/coding_agents/registry.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/editors/__init__.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/editors/base.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/editors/cursor.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/editors/emacs.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/editors/jetbrains.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/editors/nano.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/editors/neovim.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/editors/registry.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/editors/sublime.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/editors/vim.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/editors/vscode.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/editors/zed.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/project.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/registry.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/skill/SKILL.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/skill/examples.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/terminals/__init__.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/terminals/apple_terminal.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/terminals/base.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/terminals/gnome.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/terminals/iterm2.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/terminals/kitty.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/terminals/registry.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/terminals/tmux.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/terminals/warp.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/terminals/zellij.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/dev/worktree.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/docs_gen.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/install/__init__.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/install/common.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/install/hotkeys.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/install/services.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/memory/__init__.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/memory/_files.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/memory/_filters.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/memory/_git.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/memory/_indexer.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/memory/_ingest.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/memory/_persistence.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/memory/_prompt.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/memory/_retrieval.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/memory/_store.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/memory/_streaming.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/memory/_tasks.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/memory/api.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/memory/client.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/memory/engine.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/memory/entities.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/memory/models.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/opts.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/py.typed +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/rag/__init__.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/rag/_indexer.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/rag/_indexing.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/rag/_prompt.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/rag/_retriever.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/rag/_store.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/rag/_utils.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/rag/api.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/rag/client.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/rag/engine.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/rag/models.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/.runtime/.gitkeep +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/__init__.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/check_plugin_skill_sync.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/linux-hotkeys/README.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/linux-hotkeys/toggle-voice-edit.sh +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/macos-hotkeys/README.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/macos-hotkeys/skhd-config-example +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/macos-hotkeys/toggle-autocorrect.sh +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/macos-hotkeys/toggle-transcription.sh +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/macos-hotkeys/toggle-voice-edit.sh +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/nvidia-asr-server/README.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/nvidia-asr-server/pyproject.toml +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/nvidia-asr-server/server.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/nvidia-asr-server/shell.nix +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/nvidia-asr-server/uv.lock +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/run-openwakeword.sh +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/run-piper-windows.ps1 +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/run-piper.sh +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/run-whisper-linux.sh +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/run-whisper-macos.sh +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/run-whisper-windows.ps1 +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/run-whisper.sh +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/run_faster_whisper_server.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/setup-linux-hotkeys.sh +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/setup-linux.sh +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/setup-macos-hotkeys.sh +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/setup-macos.sh +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/setup-windows.ps1 +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/start-all-services-windows.ps1 +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/scripts/start-all-services.sh +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/server/__init__.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/server/common.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/server/model_manager.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/server/model_registry.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/server/proxy/__init__.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/server/proxy/api.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/server/streaming.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/server/tts/__init__.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/server/tts/api.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/server/tts/backends/__init__.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/server/tts/backends/base.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/server/tts/backends/kokoro.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/server/tts/backends/piper.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/server/tts/model_manager.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/server/tts/model_registry.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/server/tts/wyoming_handler.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/server/whisper/__init__.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/server/whisper/api.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/server/whisper/backends/base.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/server/whisper/backends/faster_whisper.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/server/whisper/languages.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/server/whisper/model_manager.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/server/whisper/model_registry.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/server/whisper/wyoming_handler.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/services/__init__.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/services/_wyoming_utils.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/services/asr.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/services/llm.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/services/tts.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/agent_cli/services/wake_word.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docker/docker-compose.yml +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docker/memory-proxy.Dockerfile +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docker/rag-proxy.Dockerfile +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docker/transcribe-proxy.Dockerfile +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docker/tts.Dockerfile +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docker/whisper.Dockerfile +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/CNAME +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/architecture/index.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/architecture/memory.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/architecture/rag.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/commands/assistant.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/commands/autocorrect.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/commands/chat.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/commands/config.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/commands/dev.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/commands/index.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/commands/install-hotkeys.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/commands/install-services.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/commands/memory.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/commands/rag-proxy.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/commands/server/transcribe-proxy.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/commands/server/tts.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/commands/speak.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/commands/start-services.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/commands/transcribe-daemon.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/commands/transcribe.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/commands/voice-edit.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/configuration.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/iOS_Shortcut_Guide.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/index.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/installation/docker.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/installation/index.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/installation/nixos.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/installation/windows.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/logo-clean.svg +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/run_markdown_code_runner.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/docs/system-integration.md +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/example.agent-cli-config.toml +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/justfile +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/shell.nix +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/__init__.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/agents/__init__.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/agents/test_fix_my_text.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/agents/test_interactive.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/agents/test_interactive_extra.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/agents/test_memory_add.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/agents/test_speak.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/agents/test_speak_e2e.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/agents/test_transcribe.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/agents/test_transcribe_agent.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/agents/test_transcribe_daemon.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/agents/test_transcribe_e2e.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/agents/test_transcribe_recovery.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/agents/test_tts_common.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/agents/test_tts_common_extra.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/agents/test_voice_agent_common.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/agents/test_voice_edit.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/agents/test_voice_edit_e2e.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/agents/test_wake_word_assistant.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/conftest.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/core/__init__.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/core/test_audio_format.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/core/test_chroma.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/core/test_sse.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/core/test_vad.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/core/test_watch.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/dev/__init__.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/dev/test_cli.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/dev/test_coding_agents.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/dev/test_editors.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/dev/test_project.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/dev/test_terminals.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/dev/test_verification.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/dev/test_worktree.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/install/__init__.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/install/test_extras.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/memory/__init__.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/memory/test_api_health.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/memory/test_api_integration_liveish.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/memory/test_client.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/memory/test_engine.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/memory/test_files.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/memory/test_filters.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/memory/test_git_integration.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/memory/test_indexer.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/memory/test_memory_integration.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/memory/test_proxy_passthrough.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/memory/test_store.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/memory/test_utils.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/mocks/__init__.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/mocks/audio.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/mocks/llm.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/mocks/wyoming.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/rag/__init__.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/rag/test_api.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/rag/test_engine.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/rag/test_history.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/rag/test_indexer.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/rag/test_indexing.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/rag/test_rag_client.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/rag/test_rag_integration_liveish.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/rag/test_rag_proxy_passthrough.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/rag/test_retriever.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/rag/test_store.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/rag/test_utils.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/test_api.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/test_api_integration.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/test_asr.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/test_asr_recovery.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/test_audio_e2e.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/test_cli.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/test_config.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/test_config_cmd.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/test_docs_gen.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/test_env_vars.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/test_json_output.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/test_llm.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/test_llm_gemini.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/test_memory_tools.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/test_mlx_backend.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/test_process_manager.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/test_requires_extras.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/test_server_streaming.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/test_server_tts.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/test_server_whisper.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/test_services.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/test_tools.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/test_tts.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/test_utils.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/test_wake_word.py +0 -0
- {agent_cli-0.74.0 → agent_cli-0.75.0}/tests/test_wyoming_utils.py +0 -0
- {agent_cli-0.74.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>
|
|
@@ -84,6 +84,10 @@ Requires-Dist: pytest-timeout; extra == 'test'
|
|
|
84
84
|
Requires-Dist: pytest>=7.0.0; extra == 'test'
|
|
85
85
|
Provides-Extra: vad
|
|
86
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'
|
|
87
91
|
Provides-Extra: wyoming
|
|
88
92
|
Requires-Dist: wyoming>=1.5.2; extra == 'wyoming'
|
|
89
93
|
Description-Content-Type: text/markdown
|
|
@@ -424,7 +428,7 @@ Our installation scripts automatically handle all dependencies:
|
|
|
424
428
|
|---------|---------|-----------------|
|
|
425
429
|
| **[Ollama](https://ollama.ai/)** | Local LLM for text processing | ✅ Yes, with default model |
|
|
426
430
|
| **[Wyoming Faster Whisper](https://github.com/rhasspy/wyoming-faster-whisper)** | Speech-to-text | ✅ Yes, via `uvx` |
|
|
427
|
-
| **[`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]"` |
|
|
428
432
|
| **[Wyoming Piper](https://github.com/rhasspy/wyoming-piper)** | Text-to-speech | ✅ Yes, via `uvx` |
|
|
429
433
|
| **[Kokoro-FastAPI](https://github.com/remsky/Kokoro-FastAPI)** | Premium TTS (optional) | ⚙️ Can be added later |
|
|
430
434
|
| **[Wyoming openWakeWord](https://github.com/rhasspy/wyoming-openwakeword)** | Wake word detection | ✅ Yes, for `assistant` |
|
|
@@ -518,6 +522,7 @@ agent-cli install-extras rag memory vad
|
|
|
518
522
|
• kokoro - Kokoro neural TTS engine
|
|
519
523
|
• faster-whisper - Whisper ASR for CUDA/CPU
|
|
520
524
|
• mlx-whisper - Whisper ASR for Apple Silicon
|
|
525
|
+
• whisper-transformers - Whisper ASR via HuggingFace transformers (safetensors)
|
|
521
526
|
• wyoming - Wyoming protocol for ASR/TTS servers
|
|
522
527
|
• server - FastAPI server components
|
|
523
528
|
• speed - Audio speed adjustment
|
|
@@ -534,7 +539,8 @@ agent-cli install-extras rag memory vad
|
|
|
534
539
|
|
|
535
540
|
╭─ Arguments ────────────────────────────────────────────────────────────────────────────╮
|
|
536
541
|
│ extras [EXTRAS]... Extras to install: rag, memory, vad, audio, piper, kokoro, │
|
|
537
|
-
│ faster-whisper, mlx-whisper,
|
|
542
|
+
│ faster-whisper, mlx-whisper, whisper-transformers, wyoming, │
|
|
543
|
+
│ server, speed, llm │
|
|
538
544
|
╰────────────────────────────────────────────────────────────────────────────────────────╯
|
|
539
545
|
╭─ Options ──────────────────────────────────────────────────────────────────────────────╮
|
|
540
546
|
│ --list -l Show available extras with descriptions (what each one enables) │
|
|
@@ -630,8 +636,8 @@ the `[defaults]` section of your configuration file.
|
|
|
630
636
|
```toml
|
|
631
637
|
[defaults]
|
|
632
638
|
# llm_provider = "ollama" # 'ollama', 'openai', or 'gemini'
|
|
633
|
-
# asr_provider = "wyoming" # 'wyoming' or '
|
|
634
|
-
# tts_provider = "wyoming" # 'wyoming', 'openai', or '
|
|
639
|
+
# asr_provider = "wyoming" # 'wyoming', 'openai', or 'gemini'
|
|
640
|
+
# tts_provider = "wyoming" # 'wyoming', 'openai', 'kokoro', or 'gemini'
|
|
635
641
|
# openai_api_key = "sk-..."
|
|
636
642
|
# gemini_api_key = "..."
|
|
637
643
|
```
|
|
@@ -643,7 +649,7 @@ the `[defaults]` section of your configuration file.
|
|
|
643
649
|
**Workflow:** This is a simple, one-shot command.
|
|
644
650
|
|
|
645
651
|
1. It reads text from your system clipboard (or from a direct argument).
|
|
646
|
-
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.
|
|
647
653
|
3. The corrected text is copied back to your clipboard, replacing the original.
|
|
648
654
|
|
|
649
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,12 +6,16 @@
|
|
|
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
|
+
"Kokoro neural TTS (GPU)",
|
|
16
|
+
[
|
|
17
|
+
"kokoro"
|
|
18
|
+
]
|
|
15
19
|
],
|
|
16
20
|
"llm": [
|
|
17
21
|
"LLM framework (pydantic-ai)",
|
|
@@ -28,12 +32,16 @@
|
|
|
28
32
|
]
|
|
29
33
|
],
|
|
30
34
|
"mlx-whisper": [
|
|
31
|
-
"
|
|
32
|
-
[
|
|
35
|
+
"Whisper ASR for Apple Silicon",
|
|
36
|
+
[
|
|
37
|
+
"mlx_whisper"
|
|
38
|
+
]
|
|
33
39
|
],
|
|
34
40
|
"piper": [
|
|
35
|
-
"
|
|
36
|
-
[
|
|
41
|
+
"Piper TTS (CPU)",
|
|
42
|
+
[
|
|
43
|
+
"piper"
|
|
44
|
+
]
|
|
37
45
|
],
|
|
38
46
|
"rag": [
|
|
39
47
|
"RAG proxy (ChromaDB, embeddings)",
|
|
@@ -60,6 +68,13 @@
|
|
|
60
68
|
"silero_vad"
|
|
61
69
|
]
|
|
62
70
|
],
|
|
71
|
+
"whisper-transformers": [
|
|
72
|
+
"Whisper ASR via HuggingFace transformers",
|
|
73
|
+
[
|
|
74
|
+
"transformers",
|
|
75
|
+
"torch"
|
|
76
|
+
]
|
|
77
|
+
],
|
|
63
78
|
"wyoming": [
|
|
64
79
|
"Wyoming protocol support",
|
|
65
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
|
|
|
@@ -132,7 +132,8 @@ def install_extras(
|
|
|
132
132
|
list[str] | None,
|
|
133
133
|
typer.Argument(
|
|
134
134
|
help="Extras to install: `rag`, `memory`, `vad`, `audio`, `piper`, `kokoro`, "
|
|
135
|
-
"`faster-whisper`, `mlx-whisper`, `
|
|
135
|
+
"`faster-whisper`, `mlx-whisper`, `whisper-transformers`, `wyoming`, `server`, "
|
|
136
|
+
"`speed`, `llm`",
|
|
136
137
|
),
|
|
137
138
|
] = None,
|
|
138
139
|
list_extras: Annotated[
|
|
@@ -163,6 +164,7 @@ def install_extras(
|
|
|
163
164
|
- `kokoro` - Kokoro neural TTS engine
|
|
164
165
|
- `faster-whisper` - Whisper ASR for CUDA/CPU
|
|
165
166
|
- `mlx-whisper` - Whisper ASR for Apple Silicon
|
|
167
|
+
- `whisper-transformers` - Whisper ASR via HuggingFace transformers (safetensors)
|
|
166
168
|
- `wyoming` - Wyoming protocol for ASR/TTS servers
|
|
167
169
|
- `server` - FastAPI server components
|
|
168
170
|
- `speed` - Audio speed adjustment
|
|
@@ -43,6 +43,16 @@ EXTRA_METADATA: dict[str, tuple[str, list[str]]] = {
|
|
|
43
43
|
"tts-kokoro": ("Kokoro neural TTS", ["kokoro"]),
|
|
44
44
|
"server": ("FastAPI server components", ["fastapi"]),
|
|
45
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"]),
|
|
46
56
|
}
|
|
47
57
|
|
|
48
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
|