agent-cli 0.88.0__tar.gz → 0.89.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.88.0 → agent_cli-0.89.0}/.github/workflows/docs.yml +3 -3
- {agent_cli-0.88.0 → agent_cli-0.89.0}/.github/workflows/release-drafter.yml +1 -1
- {agent_cli-0.88.0 → agent_cli-0.89.0}/.pre-commit-config.yaml +2 -2
- {agent_cli-0.88.0 → agent_cli-0.89.0}/PKG-INFO +1 -1
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/server/whisper/backends/faster_whisper.py +22 -6
- agent_cli-0.89.0/tests/test_faster_whisper_backend.py +66 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/.claude/skills/agent-cli-dev/SKILL.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/.claude/skills/agent-cli-dev/examples.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/.claude-plugin/README.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/.claude-plugin/marketplace.json +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/.claude-plugin/plugin.json +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/.claude-plugin/skills/agent-cli-dev/SKILL.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/.claude-plugin/skills/agent-cli-dev/examples.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/.cursorrules +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/.dockerignore +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/.env.example +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/.github/logo.svg +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/.github/release-drafter.yml +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/.github/renovate.json +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/.github/scripts/check_extras_sync.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/.github/scripts/check_plugin_skill_sync.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/.github/scripts/sync_extras.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/.github/scripts/sync_requirements.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/.github/workflows/automerge.yml +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/.github/workflows/docker.yml +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/.github/workflows/markdown-code-runner.yml +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/.github/workflows/pytest.yml +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/.github/workflows/release.yml +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/.github/workflows/toc.yaml +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/.gitignore +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/.jscpd.json +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/.prompts/docs-review.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/.prompts/pr-review.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/CLAUDE.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/LICENSE +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/LLAMA_SERVER_USAGE.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/README.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/__init__.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/__main__.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/_extras.json +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/_requirements/.gitkeep +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/_requirements/audio.txt +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/_requirements/faster-whisper.txt +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/_requirements/kokoro.txt +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/_requirements/llm.txt +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/_requirements/memory.txt +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/_requirements/mlx-whisper.txt +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/_requirements/piper.txt +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/_requirements/rag.txt +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/_requirements/server.txt +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/_requirements/speed.txt +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/_requirements/vad.txt +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/_requirements/vectordb.txt +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/_requirements/whisper-transformers.txt +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/_requirements/wyoming.txt +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/_tools.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/agents/__init__.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/agents/_voice_agent_common.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/agents/assistant.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/agents/autocorrect.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/agents/chat.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/agents/memory/__init__.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/agents/memory/add.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/agents/memory/proxy.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/agents/rag_proxy.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/agents/speak.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/agents/transcribe.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/agents/transcribe_live.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/agents/voice_edit.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/api.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/cli.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/config.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/config_cmd.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/constants.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/core/__init__.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/core/audio.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/core/audio_format.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/core/chroma.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/core/deps.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/core/openai_proxy.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/core/process.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/core/reranker.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/core/sse.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/core/transcription_logger.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/core/utils.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/core/vad.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/core/watch.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/daemon/__init__.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/daemon/cli.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/__init__.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/_branch_name.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/_config.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/_output.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/cleanup.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/cli.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/coding_agents/__init__.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/coding_agents/aider.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/coding_agents/base.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/coding_agents/claude.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/coding_agents/codex.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/coding_agents/continue_dev.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/coding_agents/copilot.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/coding_agents/cursor_agent.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/coding_agents/gemini.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/coding_agents/opencode.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/coding_agents/registry.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/editors/__init__.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/editors/base.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/editors/cursor.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/editors/emacs.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/editors/jetbrains.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/editors/nano.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/editors/neovim.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/editors/registry.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/editors/sublime.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/editors/vim.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/editors/vscode.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/editors/zed.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/hooks.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/launch.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/project.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/registry.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/skill/SKILL.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/skill/examples.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/terminals/__init__.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/terminals/apple_terminal.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/terminals/base.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/terminals/gnome.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/terminals/iterm2.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/terminals/kitty.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/terminals/registry.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/terminals/tmux.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/terminals/warp.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/terminals/zellij.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/dev/worktree.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/docs_gen.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/example-config.toml +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/install/__init__.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/install/common.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/install/extras.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/install/hotkeys.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/install/launchd.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/install/service_config.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/install/services.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/install/systemd.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/memory/__init__.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/memory/_files.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/memory/_filters.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/memory/_git.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/memory/_indexer.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/memory/_ingest.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/memory/_persistence.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/memory/_prompt.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/memory/_retrieval.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/memory/_store.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/memory/_streaming.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/memory/_tasks.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/memory/api.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/memory/client.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/memory/engine.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/memory/entities.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/memory/models.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/opts.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/py.typed +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/rag/__init__.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/rag/_indexer.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/rag/_indexing.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/rag/_prompt.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/rag/_retriever.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/rag/_store.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/rag/_utils.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/rag/api.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/rag/client.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/rag/engine.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/rag/models.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/scripts/.runtime/.gitkeep +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/scripts/__init__.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/scripts/linux-hotkeys/README.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/scripts/linux-hotkeys/toggle-voice-edit.sh +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/scripts/macos-hotkeys/README.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/scripts/macos-hotkeys/skhd-config-example +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/scripts/macos-hotkeys/toggle-autocorrect.sh +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/scripts/macos-hotkeys/toggle-transcription.sh +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/scripts/macos-hotkeys/toggle-voice-edit.sh +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/scripts/nvidia-asr-server/README.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/scripts/nvidia-asr-server/pyproject.toml +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/scripts/nvidia-asr-server/server.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/scripts/nvidia-asr-server/shell.nix +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/scripts/nvidia-asr-server/uv.lock +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/scripts/run-openwakeword.sh +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/scripts/setup-linux-hotkeys.sh +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/scripts/setup-linux.sh +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/scripts/setup-macos-hotkeys.sh +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/scripts/setup-macos.sh +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/scripts/setup-windows.ps1 +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/scripts/start-all-services-windows.ps1 +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/scripts/start-all-services.sh +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/server/__init__.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/server/cli.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/server/common.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/server/model_manager.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/server/model_registry.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/server/proxy/__init__.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/server/proxy/api.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/server/streaming.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/server/tts/__init__.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/server/tts/api.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/server/tts/backends/__init__.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/server/tts/backends/base.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/server/tts/backends/kokoro.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/server/tts/backends/piper.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/server/tts/model_manager.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/server/tts/model_registry.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/server/tts/wyoming_handler.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/server/whisper/__init__.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/server/whisper/api.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/server/whisper/backends/__init__.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/server/whisper/backends/base.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/server/whisper/backends/mlx.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/server/whisper/backends/transformers.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/server/whisper/languages.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/server/whisper/model_manager.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/server/whisper/model_registry.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/server/whisper/wyoming_handler.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/services/__init__.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/services/_wyoming_utils.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/services/asr.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/services/llm.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/services/tts.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/agent_cli/services/wake_word.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docker/docker-compose.yml +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docker/memory-proxy.Dockerfile +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docker/rag-proxy.Dockerfile +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docker/transcribe-proxy.Dockerfile +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docker/tts.Dockerfile +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docker/whisper.Dockerfile +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/CNAME +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/architecture/index.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/architecture/memory.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/architecture/rag.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/commands/assistant.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/commands/autocorrect.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/commands/chat.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/commands/config.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/commands/daemon.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/commands/dev.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/commands/index.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/commands/install-extras.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/commands/install-hotkeys.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/commands/install-services.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/commands/memory.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/commands/rag-proxy.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/commands/server/index.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/commands/server/transcribe-proxy.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/commands/server/tts.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/commands/server/whisper.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/commands/speak.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/commands/start-services.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/commands/transcribe-live.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/commands/transcribe.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/commands/voice-edit.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/configuration.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/getting-started.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/iOS_Shortcut_Guide.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/index.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/installation/docker.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/installation/index.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/installation/linux.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/installation/macos.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/installation/nixos.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/installation/windows.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/logo-clean.svg +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/run_markdown_code_runner.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/docs/system-integration.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/example.agent-cli-config.toml +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/justfile +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/pyproject.toml +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/reddit.md +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/shell.nix +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/__init__.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/agents/__init__.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/agents/test_fix_my_text.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/agents/test_interactive.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/agents/test_interactive_extra.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/agents/test_memory_add.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/agents/test_speak.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/agents/test_speak_e2e.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/agents/test_transcribe.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/agents/test_transcribe_agent.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/agents/test_transcribe_e2e.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/agents/test_transcribe_live.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/agents/test_transcribe_recovery.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/agents/test_tts_common.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/agents/test_tts_common_extra.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/agents/test_voice_agent_common.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/agents/test_voice_edit.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/agents/test_voice_edit_e2e.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/agents/test_wake_word_assistant.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/conftest.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/core/__init__.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/core/test_audio.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/core/test_audio_format.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/core/test_chroma.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/core/test_sse.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/core/test_vad.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/core/test_watch.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/dev/__init__.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/dev/test_cleanup.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/dev/test_cli.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/dev/test_coding_agents.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/dev/test_editors.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/dev/test_hooks.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/dev/test_launch.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/dev/test_project.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/dev/test_terminals.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/dev/test_verification.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/dev/test_worktree.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/install/__init__.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/install/test_extras.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/memory/__init__.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/memory/test_api_health.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/memory/test_api_integration_liveish.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/memory/test_client.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/memory/test_engine.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/memory/test_files.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/memory/test_filters.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/memory/test_git_integration.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/memory/test_indexer.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/memory/test_memory_integration.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/memory/test_proxy_passthrough.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/memory/test_store.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/memory/test_utils.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/mocks/__init__.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/mocks/audio.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/mocks/llm.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/mocks/wyoming.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/rag/__init__.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/rag/test_api.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/rag/test_engine.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/rag/test_history.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/rag/test_indexer.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/rag/test_indexing.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/rag/test_rag_client.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/rag/test_rag_integration_liveish.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/rag/test_rag_proxy_passthrough.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/rag/test_retriever.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/rag/test_store.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/rag/test_utils.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/test_api.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/test_api_integration.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/test_asr.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/test_asr_recovery.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/test_audio_e2e.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/test_cli.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/test_config.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/test_config_cmd.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/test_daemon.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/test_docs_gen.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/test_env_vars.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/test_json_output.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/test_llm.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/test_llm_gemini.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/test_memory_tools.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/test_mlx_backend.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/test_process_manager.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/test_requires_extras.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/test_server_streaming.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/test_server_tts.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/test_server_whisper.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/test_services.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/test_tools.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/test_transformers_backend.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/test_tts.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/test_utils.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/test_wake_word.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/tests/test_wyoming_utils.py +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/uv.lock +0 -0
- {agent_cli-0.88.0 → agent_cli-0.89.0}/zensical.toml +0 -0
|
@@ -45,11 +45,11 @@ jobs:
|
|
|
45
45
|
|
|
46
46
|
- name: Setup Pages
|
|
47
47
|
if: github.event_name != 'pull_request'
|
|
48
|
-
uses: actions/configure-pages@
|
|
48
|
+
uses: actions/configure-pages@v6
|
|
49
49
|
|
|
50
50
|
- name: Upload artifact
|
|
51
51
|
if: github.event_name != 'pull_request'
|
|
52
|
-
uses: actions/upload-pages-artifact@
|
|
52
|
+
uses: actions/upload-pages-artifact@v5
|
|
53
53
|
with:
|
|
54
54
|
path: "./site"
|
|
55
55
|
|
|
@@ -63,4 +63,4 @@ jobs:
|
|
|
63
63
|
steps:
|
|
64
64
|
- name: Deploy to GitHub Pages
|
|
65
65
|
id: deployment
|
|
66
|
-
uses: actions/deploy-pages@
|
|
66
|
+
uses: actions/deploy-pages@v5
|
|
@@ -11,13 +11,13 @@ repos:
|
|
|
11
11
|
- id: end-of-file-fixer
|
|
12
12
|
- id: mixed-line-ending
|
|
13
13
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
14
|
-
rev: "v0.15.
|
|
14
|
+
rev: "v0.15.11"
|
|
15
15
|
hooks:
|
|
16
16
|
- id: ruff
|
|
17
17
|
args: ["--fix"]
|
|
18
18
|
- id: ruff-format
|
|
19
19
|
- repo: https://github.com/pre-commit/mirrors-mypy
|
|
20
|
-
rev: "v1.
|
|
20
|
+
rev: "v1.20.1"
|
|
21
21
|
hooks:
|
|
22
22
|
- id: mypy
|
|
23
23
|
additional_dependencies: ["types-PyYAML"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.89.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>
|
|
@@ -6,6 +6,7 @@ import asyncio
|
|
|
6
6
|
import logging
|
|
7
7
|
import tempfile
|
|
8
8
|
from concurrent.futures import ProcessPoolExecutor
|
|
9
|
+
from concurrent.futures.process import BrokenProcessPool
|
|
9
10
|
from dataclasses import dataclass
|
|
10
11
|
from multiprocessing import get_context
|
|
11
12
|
from pathlib import Path
|
|
@@ -209,12 +210,27 @@ class FasterWhisperBackend:
|
|
|
209
210
|
}
|
|
210
211
|
|
|
211
212
|
loop = asyncio.get_running_loop()
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
213
|
+
try:
|
|
214
|
+
result = await loop.run_in_executor(
|
|
215
|
+
self._executor,
|
|
216
|
+
_transcribe_in_subprocess,
|
|
217
|
+
audio,
|
|
218
|
+
kwargs,
|
|
219
|
+
)
|
|
220
|
+
except BrokenProcessPool:
|
|
221
|
+
logger.warning(
|
|
222
|
+
"faster-whisper process pool died during transcription; "
|
|
223
|
+
"reloading model %s and retrying once",
|
|
224
|
+
self._config.model_name,
|
|
225
|
+
)
|
|
226
|
+
await self.unload()
|
|
227
|
+
await self.load()
|
|
228
|
+
result = await loop.run_in_executor(
|
|
229
|
+
self._executor,
|
|
230
|
+
_transcribe_in_subprocess,
|
|
231
|
+
audio,
|
|
232
|
+
kwargs,
|
|
233
|
+
)
|
|
218
234
|
|
|
219
235
|
return TranscriptionResult(
|
|
220
236
|
text=result["text"],
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"""Tests for the faster-whisper backend."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from concurrent.futures.process import BrokenProcessPool
|
|
6
|
+
from typing import TYPE_CHECKING, cast
|
|
7
|
+
from unittest.mock import AsyncMock, patch
|
|
8
|
+
|
|
9
|
+
import pytest
|
|
10
|
+
|
|
11
|
+
from agent_cli.server.whisper.backends.base import BackendConfig
|
|
12
|
+
from agent_cli.server.whisper.backends.faster_whisper import FasterWhisperBackend
|
|
13
|
+
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from concurrent.futures import ProcessPoolExecutor
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@pytest.mark.asyncio
|
|
19
|
+
async def test_faster_whisper_transcribe_recovers_from_broken_process_pool() -> None:
|
|
20
|
+
"""Reload the backend and retry once when the process pool is broken."""
|
|
21
|
+
config = BackendConfig(model_name="tiny", device="cpu", compute_type="int8")
|
|
22
|
+
backend = FasterWhisperBackend(config)
|
|
23
|
+
initial_executor = cast("ProcessPoolExecutor", object())
|
|
24
|
+
backend._executor = initial_executor
|
|
25
|
+
backend._device = "cpu"
|
|
26
|
+
|
|
27
|
+
recovered_executor = cast("ProcessPoolExecutor", object())
|
|
28
|
+
fake_result = {
|
|
29
|
+
"text": "hello world",
|
|
30
|
+
"language": "en",
|
|
31
|
+
"language_probability": 0.99,
|
|
32
|
+
"duration": 1.25,
|
|
33
|
+
"segments": [],
|
|
34
|
+
}
|
|
35
|
+
executors_seen: list[object] = []
|
|
36
|
+
|
|
37
|
+
async def mock_run_in_executor(
|
|
38
|
+
executor: object, _func: object, *_args: object
|
|
39
|
+
) -> dict[str, object]:
|
|
40
|
+
executors_seen.append(executor)
|
|
41
|
+
if len(executors_seen) == 1:
|
|
42
|
+
msg = "worker died"
|
|
43
|
+
raise BrokenProcessPool(msg)
|
|
44
|
+
return fake_result
|
|
45
|
+
|
|
46
|
+
async def fake_unload() -> None:
|
|
47
|
+
backend._executor = None
|
|
48
|
+
backend._device = None
|
|
49
|
+
|
|
50
|
+
async def fake_load() -> float:
|
|
51
|
+
backend._executor = recovered_executor
|
|
52
|
+
backend._device = "cpu"
|
|
53
|
+
return 0.1
|
|
54
|
+
|
|
55
|
+
with (
|
|
56
|
+
patch("asyncio.get_running_loop") as mock_loop,
|
|
57
|
+
patch.object(backend, "unload", new=AsyncMock(side_effect=fake_unload)) as unload_mock,
|
|
58
|
+
patch.object(backend, "load", new=AsyncMock(side_effect=fake_load)) as load_mock,
|
|
59
|
+
):
|
|
60
|
+
mock_loop.return_value.run_in_executor = mock_run_in_executor
|
|
61
|
+
result = await backend.transcribe(b"fake audio bytes")
|
|
62
|
+
|
|
63
|
+
assert result.text == "hello world"
|
|
64
|
+
unload_mock.assert_awaited_once()
|
|
65
|
+
load_mock.assert_awaited_once()
|
|
66
|
+
assert executors_seen == [initial_executor, recovered_executor]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|