agent-cli 0.97.0__tar.gz → 0.97.2__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.97.0 → agent_cli-0.97.2}/PKG-INFO +1 -1
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/deps.py +42 -11
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/install/launchd.py +1 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/install/systemd.py +2 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/whisper/backends/nemo.py +35 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/appcast.xml +32 -33
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/install/test_launchd.py +1 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_daemon.py +1 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_nemo_backend.py +33 -1
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_requires_extras.py +61 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.claude/skills/agent-cli-dev/SKILL.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.claude/skills/agent-cli-dev/examples.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.claude-plugin/README.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.claude-plugin/marketplace.json +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.claude-plugin/plugin.json +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.claude-plugin/skills/agent-cli-dev/SKILL.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.claude-plugin/skills/agent-cli-dev/examples.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.cursorrules +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.dockerignore +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.env.example +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/logo.svg +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/release-drafter.yml +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/renovate.json +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/scripts/check_extras_sync.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/scripts/check_plugin_skill_sync.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/scripts/normalize_appcast.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/scripts/sync_extras.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/scripts/sync_requirements.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/workflows/automerge.yml +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/workflows/docker.yml +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/workflows/docs.yml +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/workflows/markdown-code-runner.yml +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/workflows/pytest.yml +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/workflows/release-drafter.yml +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/workflows/release.yml +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/workflows/toc.yaml +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.gitignore +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.jscpd.json +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.pre-commit-config.yaml +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.prompts/docs-review.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/.prompts/pr-review.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/CLAUDE.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/LICENSE +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/LLAMA_SERVER_USAGE.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/README.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/__init__.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/__main__.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_extras.json +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_overrides/nemo-whisper.txt +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/.gitkeep +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/audio.txt +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/diarization.txt +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/faster-whisper.txt +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/kokoro.txt +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/llm.txt +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/memory.txt +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/mlx-whisper.txt +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/nemo-whisper.txt +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/piper.txt +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/rag.txt +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/server.txt +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/speed.txt +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/vad.txt +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/vectordb.txt +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/whisper-transformers.txt +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/wyoming.txt +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_tools.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/agents/__init__.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/agents/_voice_agent_common.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/agents/assistant.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/agents/autocorrect.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/agents/chat.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/agents/diarize_live_session.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/agents/memory/__init__.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/agents/memory/add.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/agents/memory/proxy.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/agents/rag_proxy.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/agents/speak.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/agents/speakers.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/agents/transcribe.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/agents/transcribe_live.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/agents/voice_edit.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/api.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/cli.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/config.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/config_cmd.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/constants.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/__init__.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/alignment.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/audio.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/audio_format.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/chroma.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/diarization.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/openai_proxy.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/process.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/reranker.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/speaker_identity.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/sse.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/transcription_logger.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/utils.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/vad.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/watch.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/daemon/__init__.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/daemon/cli.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/__init__.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/_branch_name.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/_config.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/_output.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/cleanup.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/cli.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/coding_agents/__init__.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/coding_agents/aider.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/coding_agents/base.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/coding_agents/claude.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/coding_agents/codex.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/coding_agents/continue_dev.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/coding_agents/copilot.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/coding_agents/cursor_agent.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/coding_agents/gemini.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/coding_agents/opencode.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/coding_agents/registry.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/editors/__init__.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/editors/base.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/editors/cursor.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/editors/emacs.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/editors/jetbrains.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/editors/nano.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/editors/neovim.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/editors/registry.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/editors/sublime.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/editors/vim.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/editors/vscode.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/editors/zed.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/hooks.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/launch.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/project.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/registry.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/skill/SKILL.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/skill/examples.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/terminals/__init__.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/terminals/apple_terminal.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/terminals/base.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/terminals/gnome.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/terminals/iterm2.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/terminals/kitty.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/terminals/registry.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/terminals/tmux.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/terminals/warp.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/terminals/zellij.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/worktree.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/docs_gen.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/example-config.toml +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/install/__init__.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/install/common.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/install/extras.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/install/hotkeys.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/install/service_config.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/install/services.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/__init__.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/_files.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/_filters.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/_git.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/_indexer.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/_ingest.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/_persistence.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/_prompt.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/_retrieval.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/_store.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/_streaming.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/_tasks.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/api.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/client.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/engine.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/entities.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/models.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/opts.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/py.typed +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/rag/__init__.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/rag/_indexer.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/rag/_indexing.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/rag/_prompt.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/rag/_retriever.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/rag/_store.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/rag/_utils.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/rag/api.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/rag/client.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/rag/engine.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/rag/models.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/.runtime/.gitkeep +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/__init__.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/linux-hotkeys/README.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/linux-hotkeys/toggle-voice-edit.sh +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/macos-hotkeys/README.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/macos-hotkeys/skhd-config-example +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/macos-hotkeys/toggle-autocorrect.sh +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/macos-hotkeys/toggle-transcription.sh +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/macos-hotkeys/toggle-voice-edit.sh +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/nvidia-asr-server/README.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/nvidia-asr-server/pyproject.toml +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/nvidia-asr-server/server.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/nvidia-asr-server/shell.nix +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/nvidia-asr-server/uv.lock +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/run-openwakeword.sh +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/setup-linux-hotkeys.sh +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/setup-linux.sh +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/setup-macos-hotkeys.sh +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/setup-macos.sh +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/setup-windows.ps1 +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/start-all-services-windows.ps1 +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/start-all-services.sh +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/__init__.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/cli.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/common.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/model_manager.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/model_registry.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/proxy/__init__.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/proxy/api.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/streaming.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/tts/__init__.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/tts/api.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/tts/backends/__init__.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/tts/backends/base.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/tts/backends/kokoro.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/tts/backends/piper.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/tts/model_manager.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/tts/model_registry.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/tts/wyoming_handler.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/whisper/__init__.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/whisper/api.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/whisper/backends/__init__.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/whisper/backends/base.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/whisper/backends/faster_whisper.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/whisper/backends/mlx.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/whisper/backends/transformers.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/whisper/languages.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/whisper/model_manager.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/whisper/model_registry.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/whisper/wyoming_handler.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/services/__init__.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/services/_wyoming_utils.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/services/asr.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/services/llm.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/services/tts.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/services/wake_word.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docker/docker-compose.yml +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docker/memory-proxy.Dockerfile +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docker/rag-proxy.Dockerfile +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docker/transcribe-proxy.Dockerfile +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docker/tts.Dockerfile +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docker/whisper.Dockerfile +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/CNAME +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/architecture/index.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/architecture/memory.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/architecture/rag.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/assistant.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/autocorrect.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/chat.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/config.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/daemon.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/dev.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/diarize-live-session.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/index.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/install-extras.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/install-hotkeys.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/install-services.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/memory.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/rag-proxy.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/server/index.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/server/transcribe-proxy.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/server/tts.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/server/whisper.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/speak.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/speakers.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/start-services.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/transcribe-live.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/transcribe.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/voice-edit.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/configuration.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/getting-started.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/iOS_Shortcut_Guide.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/index.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/installation/docker.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/installation/index.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/installation/linux.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/installation/macos-app.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/installation/macos.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/installation/nixos.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/installation/windows.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/logo-avatar.svg +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/logo-clean.svg +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/run_markdown_code_runner.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/system-integration.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/example.agent-cli-config.toml +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/justfile +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Package.resolved +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Package.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/README.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Resources/AgentCLI.entitlements +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Resources/Info.plist +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Resources/dmg-background.svg +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/AgentCLIApp.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/AgentCommand.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/AgentCommandRunner.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/AgentRuntime.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/AppDelegate.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/AppMetadata.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/AppUpdater.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/BootstrapState.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/CommandResult.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/ConfigurableHotkeyController.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/FocusedTextTarget.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/LoginItemController.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/MenuActivityStatus.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/MenuActivityStatusRow.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/MenuActivityTracker.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/MenuBarIcon.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/RecentTranscriptionReader.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/RecordingIndicatorController.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/RecordingSoundSettings.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/RuntimeSettings.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/SettingsWindowController.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/Shortcuts.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/StatusMenuController.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/TranscriptPasteController.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/TranscriptionSettings.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/VoiceLevelOverlay.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Tests/AgentCLITests/AgentCommandTests.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Tests/AgentCLITests/LoginItemControllerTests.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Tests/AgentCLITests/RecentTranscriptionReaderTests.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Tests/AgentCLITests/RecordingIndicatorControllerTests.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Tests/AgentCLITests/ShortcutDefaultsTests.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Tests/AgentCLITests/VoiceLevelMeterTests.swift +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/build-macos-app.sh +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/test-macos-app-e2e.sh +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/pyproject.toml +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/reddit.md +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/shell.nix +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/__init__.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/__init__.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_fix_my_text.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_interactive.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_interactive_extra.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_memory_add.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_speak.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_speak_e2e.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_speakers.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_transcribe.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_transcribe_agent.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_transcribe_e2e.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_transcribe_live.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_transcribe_recovery.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_tts_common.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_tts_common_extra.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_voice_agent_common.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_voice_edit.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_voice_edit_e2e.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_wake_word_assistant.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/conftest.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/core/__init__.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/core/test_audio.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/core/test_audio_format.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/core/test_chroma.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/core/test_sse.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/core/test_vad.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/core/test_watch.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/dev/__init__.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/dev/test_cleanup.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/dev/test_cli.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/dev/test_coding_agents.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/dev/test_editors.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/dev/test_hooks.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/dev/test_launch.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/dev/test_project.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/dev/test_terminals.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/dev/test_verification.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/dev/test_worktree.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/install/__init__.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/install/test_extras.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/memory/__init__.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/memory/test_api_health.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/memory/test_api_integration_liveish.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/memory/test_client.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/memory/test_engine.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/memory/test_files.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/memory/test_filters.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/memory/test_git_integration.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/memory/test_indexer.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/memory/test_memory_integration.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/memory/test_proxy_passthrough.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/memory/test_store.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/memory/test_utils.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/mocks/__init__.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/mocks/audio.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/mocks/llm.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/mocks/wyoming.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/rag/__init__.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/rag/test_api.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/rag/test_engine.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/rag/test_history.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/rag/test_indexer.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/rag/test_indexing.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/rag/test_rag_client.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/rag/test_rag_integration_liveish.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/rag/test_rag_proxy_passthrough.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/rag/test_retriever.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/rag/test_store.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/rag/test_utils.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_alignment.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_api.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_api_integration.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_asr.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_asr_recovery.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_audio_e2e.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_cli.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_config.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_config_cmd.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_diarization.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_diarize_live_session.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_docs_gen.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_env_vars.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_faster_whisper_backend.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_json_output.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_llm.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_llm_gemini.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_macos_app.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_memory_tools.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_mlx_backend.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_normalize_appcast.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_process_manager.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_server_streaming.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_server_tts.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_server_whisper.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_services.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_speaker_identity.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_tools.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_transformers_backend.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_tts.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_utils.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_wake_word.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_wyoming_utils.py +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/uv.lock +0 -0
- {agent_cli-0.97.0 → agent_cli-0.97.2}/zensical.toml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-cli
|
|
3
|
-
Version: 0.97.
|
|
3
|
+
Version: 0.97.2
|
|
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>
|
|
@@ -70,6 +70,18 @@ def _is_uvx_cache() -> bool:
|
|
|
70
70
|
return "/cache/uv/" in prefix_str or "/archive-v" in prefix_str
|
|
71
71
|
|
|
72
72
|
|
|
73
|
+
def _find_runtime_uv() -> str | None:
|
|
74
|
+
"""Find uv for runtime dependency installs, including bundled app uv."""
|
|
75
|
+
for env_name in ("AGENTCLI_UV_PATH", "AGENTCLI_BUNDLED_UV"):
|
|
76
|
+
value = os.environ.get(env_name)
|
|
77
|
+
if not value:
|
|
78
|
+
continue
|
|
79
|
+
uv_path = Path(value).expanduser()
|
|
80
|
+
if uv_path.is_file() and os.access(uv_path, os.X_OK):
|
|
81
|
+
return str(uv_path)
|
|
82
|
+
return shutil.which("uv")
|
|
83
|
+
|
|
84
|
+
|
|
73
85
|
# -- Package Checking --
|
|
74
86
|
|
|
75
87
|
# Load extras from JSON file
|
|
@@ -252,8 +264,9 @@ def _install_via_uv_tool(extras: list[str], *, quiet: bool = False) -> bool:
|
|
|
252
264
|
def _install_cmd() -> list[str]:
|
|
253
265
|
"""Build the install command with appropriate flags."""
|
|
254
266
|
in_venv = _in_virtualenv()
|
|
255
|
-
|
|
256
|
-
|
|
267
|
+
uv_path = _find_runtime_uv()
|
|
268
|
+
if uv_path:
|
|
269
|
+
cmd = [uv_path, "pip", "install", "--python", sys.executable]
|
|
257
270
|
if not in_venv:
|
|
258
271
|
cmd.append("--system")
|
|
259
272
|
return cmd
|
|
@@ -281,7 +294,7 @@ def _supports_uv_runtime_override(
|
|
|
281
294
|
"""Return True when uv can install an extra with runtime overrides."""
|
|
282
295
|
if extra not in _EXTRA_UV_RUNTIME_REQUIREMENTS:
|
|
283
296
|
return False
|
|
284
|
-
has_uv =
|
|
297
|
+
has_uv = _find_runtime_uv() is not None if uv_available is None else uv_available
|
|
285
298
|
return has_uv and _uv_override_path(extra).exists()
|
|
286
299
|
|
|
287
300
|
|
|
@@ -299,11 +312,15 @@ def _uv_pip_extra_requirements(extra: str, cmd: list[str]) -> list[str]:
|
|
|
299
312
|
return list(_EXTRA_UV_RUNTIME_REQUIREMENTS[extra])
|
|
300
313
|
|
|
301
314
|
|
|
302
|
-
def _uv_tool_extra_args(
|
|
315
|
+
def _uv_tool_extra_args(
|
|
316
|
+
extras: list[str],
|
|
317
|
+
*,
|
|
318
|
+
uv_available: bool | None = None,
|
|
319
|
+
) -> list[str]:
|
|
303
320
|
"""Return uv tool arguments needed for extras with runtime overrides."""
|
|
304
321
|
args: list[str] = []
|
|
305
322
|
for extra in extras:
|
|
306
|
-
if not _supports_uv_runtime_override(extra):
|
|
323
|
+
if not _supports_uv_runtime_override(extra, uv_available=uv_available):
|
|
307
324
|
continue
|
|
308
325
|
args.extend(["--overrides", str(_uv_override_path(extra))])
|
|
309
326
|
for requirement in _EXTRA_UV_RUNTIME_REQUIREMENTS[extra]:
|
|
@@ -409,19 +426,33 @@ def _maybe_exec_with_marker(cmd: list[str], message: str) -> None:
|
|
|
409
426
|
|
|
410
427
|
|
|
411
428
|
def _maybe_reexec_with_uvx(extras: list[str]) -> None:
|
|
412
|
-
"""Try to re-execute with
|
|
429
|
+
"""Try to re-execute with uv running agent-cli[extras] directly.
|
|
413
430
|
|
|
414
431
|
If successful, replaces the current process (never returns).
|
|
415
|
-
If not in uvx cache or
|
|
432
|
+
If not in uvx cache or uv unavailable, returns normally.
|
|
416
433
|
"""
|
|
417
434
|
if os.environ.get(_REEXEC_MARKER) or not _is_uvx_cache():
|
|
418
435
|
return
|
|
419
|
-
|
|
420
|
-
|
|
436
|
+
|
|
437
|
+
uv_path = _find_runtime_uv()
|
|
438
|
+
if not uv_path:
|
|
421
439
|
return
|
|
440
|
+
|
|
422
441
|
extras_str = ",".join(extras)
|
|
423
|
-
|
|
424
|
-
|
|
442
|
+
package_source = os.environ.get("AGENTCLI_PACKAGE_SOURCE", "agent-cli")
|
|
443
|
+
package_spec = f"{package_source}[{extras_str}]"
|
|
444
|
+
cmd = [
|
|
445
|
+
uv_path,
|
|
446
|
+
"tool",
|
|
447
|
+
"run",
|
|
448
|
+
"--python",
|
|
449
|
+
"3.13",
|
|
450
|
+
*_uv_tool_extra_args(extras, uv_available=True),
|
|
451
|
+
"--from",
|
|
452
|
+
package_spec,
|
|
453
|
+
"agent-cli",
|
|
454
|
+
*sys.argv[1:],
|
|
455
|
+
]
|
|
425
456
|
_maybe_exec_with_marker(cmd, f"Re-running with extras: {extras_str}")
|
|
426
457
|
|
|
427
458
|
|
|
@@ -104,12 +104,14 @@ def _generate_unit_file(
|
|
|
104
104
|
exec_start = _format_exec_start(
|
|
105
105
|
build_service_command(service, uv_path, extra_command_args=extra_command_args),
|
|
106
106
|
)
|
|
107
|
+
uv_environment = _format_exec_start_arg(f"AGENTCLI_UV_PATH={uv_path}")
|
|
107
108
|
|
|
108
109
|
return f"""[Unit]
|
|
109
110
|
Description=agent-cli {service.display_name}
|
|
110
111
|
After=network.target
|
|
111
112
|
|
|
112
113
|
[Service]
|
|
114
|
+
Environment={uv_environment}
|
|
113
115
|
ExecStart={exec_start}
|
|
114
116
|
Restart=on-failure
|
|
115
117
|
RestartSec=5
|
|
@@ -209,6 +209,40 @@ def _build_transcribe_kwargs(
|
|
|
209
209
|
return transcribe_kwargs
|
|
210
210
|
|
|
211
211
|
|
|
212
|
+
def _set_config_value(config: Any, key: str, value: Any) -> None:
|
|
213
|
+
"""Set a NeMo config value, including OmegaConf configs in struct mode."""
|
|
214
|
+
try:
|
|
215
|
+
setattr(config, key, value)
|
|
216
|
+
return
|
|
217
|
+
except (AttributeError, TypeError):
|
|
218
|
+
if isinstance(config, dict):
|
|
219
|
+
config[key] = value
|
|
220
|
+
return
|
|
221
|
+
raise
|
|
222
|
+
except Exception:
|
|
223
|
+
from omegaconf import open_dict # noqa: PLC0415
|
|
224
|
+
|
|
225
|
+
with open_dict(config):
|
|
226
|
+
setattr(config, key, value)
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
def _ensure_validation_ds_config(model: Any) -> None:
|
|
230
|
+
"""NeMo RNNT transcribe expects cfg.validation_ds to be a mapping."""
|
|
231
|
+
config = getattr(model, "cfg", None)
|
|
232
|
+
if config is None:
|
|
233
|
+
return
|
|
234
|
+
|
|
235
|
+
try:
|
|
236
|
+
validation_ds = (
|
|
237
|
+
config.get("validation_ds") if hasattr(config, "get") else config.validation_ds
|
|
238
|
+
)
|
|
239
|
+
except (AttributeError, KeyError):
|
|
240
|
+
return
|
|
241
|
+
|
|
242
|
+
if validation_ds is None:
|
|
243
|
+
_set_config_value(config, "validation_ds", {})
|
|
244
|
+
|
|
245
|
+
|
|
212
246
|
def _load_model_in_subprocess(model_name: str, device: str) -> str:
|
|
213
247
|
"""Load model in subprocess. Returns actual device string."""
|
|
214
248
|
import nemo.collections.asr as nemo_asr # noqa: PLC0415
|
|
@@ -217,6 +251,7 @@ def _load_model_in_subprocess(model_name: str, device: str) -> str:
|
|
|
217
251
|
|
|
218
252
|
resolved_device = _resolve_device(device)
|
|
219
253
|
model = nemo_asr.models.ASRModel.from_pretrained(model_name=model_name)
|
|
254
|
+
_ensure_validation_ds_config(model)
|
|
220
255
|
if hasattr(model, "to"):
|
|
221
256
|
model = model.to(resolved_device)
|
|
222
257
|
if hasattr(model, "eval"):
|
|
@@ -4,6 +4,38 @@
|
|
|
4
4
|
<title>Agent CLI Updates</title>
|
|
5
5
|
<link>https://github.com/basnijholt/agent-cli</link>
|
|
6
6
|
<description>Signed Agent CLI macOS app updates.</description>
|
|
7
|
+
<item>
|
|
8
|
+
<title>0.97.1</title>
|
|
9
|
+
<pubDate>Thu, 04 Jun 2026 07:09:14 +0000</pubDate>
|
|
10
|
+
<link>https://github.com/basnijholt/agent-cli</link>
|
|
11
|
+
<sparkle:version>186</sparkle:version>
|
|
12
|
+
<sparkle:shortVersionString>0.97.1</sparkle:shortVersionString>
|
|
13
|
+
<sparkle:minimumSystemVersion>13.0</sparkle:minimumSystemVersion>
|
|
14
|
+
<sparkle:hardwareRequirements>arm64</sparkle:hardwareRequirements>
|
|
15
|
+
<description sparkle:format="markdown"><![CDATA[## What's Changed
|
|
16
|
+
* Fix NeMo daemon runtime installs by @basnijholt in https://github.com/basnijholt/agent-cli/pull/575
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
**Full Changelog**: https://github.com/basnijholt/agent-cli/compare/v0.97.0...v0.97.1
|
|
20
|
+
]]></description>
|
|
21
|
+
<enclosure url="https://github.com/basnijholt/agent-cli/releases/download/v0.97.1/AgentCLI.zip" length="22876193" type="application/octet-stream" sparkle:edSignature="zHJ1pEwR+In37XkGhdEX9sgTdAg0oiu6xbTpCoMF+4WsJEfDInwYlJkw10vb8dN3rnqSdNzv/UjB3tBnFlvRBA=="/>
|
|
22
|
+
</item>
|
|
23
|
+
<item>
|
|
24
|
+
<title>0.97.0</title>
|
|
25
|
+
<pubDate>Thu, 04 Jun 2026 06:29:00 +0000</pubDate>
|
|
26
|
+
<link>https://github.com/basnijholt/agent-cli</link>
|
|
27
|
+
<sparkle:version>185</sparkle:version>
|
|
28
|
+
<sparkle:shortVersionString>0.97.0</sparkle:shortVersionString>
|
|
29
|
+
<sparkle:minimumSystemVersion>13.0</sparkle:minimumSystemVersion>
|
|
30
|
+
<sparkle:hardwareRequirements>arm64</sparkle:hardwareRequirements>
|
|
31
|
+
<description sparkle:format="markdown"><![CDATA[## What’s Changed
|
|
32
|
+
|
|
33
|
+
* Add NeMo backend for Parakeet support in server whisper (#436) @basnijholt
|
|
34
|
+
* Allow custom args for daemon installs (#572) @basnijholt
|
|
35
|
+
|
|
36
|
+
]]></description>
|
|
37
|
+
<enclosure url="https://github.com/basnijholt/agent-cli/releases/download/v0.97.0/AgentCLI.zip" length="22875944" type="application/octet-stream" sparkle:edSignature="HdEW62220s/A/0bHgt7ZoEN/qKRDJr0ozOZ9jUYHT/OhybqVmv6reM/cWQFyWSPEKwH7ER8/76NGOOlmIAIcCA=="/>
|
|
38
|
+
</item>
|
|
7
39
|
<item>
|
|
8
40
|
<title>0.96.10</title>
|
|
9
41
|
<pubDate>Wed, 03 Jun 2026 18:47:20 +0000</pubDate>
|
|
@@ -140,38 +172,5 @@
|
|
|
140
172
|
]]></description>
|
|
141
173
|
<enclosure url="https://github.com/basnijholt/agent-cli/releases/download/v0.96.3/AgentCLI.zip" length="22735617" type="application/octet-stream" sparkle:edSignature="GIH6s55wnjpesAtPrHdk5btvtZfxkFrqr1v0tX69WWlHdA9w+qTQFszuw8/K21wsmqnp3ynacGP7aa4YqrB7Bg=="/>
|
|
142
174
|
</item>
|
|
143
|
-
<item>
|
|
144
|
-
<title>0.96.2</title>
|
|
145
|
-
<pubDate>Fri, 29 May 2026 05:56:37 +0000</pubDate>
|
|
146
|
-
<link>https://github.com/basnijholt/agent-cli</link>
|
|
147
|
-
<sparkle:version>176</sparkle:version>
|
|
148
|
-
<sparkle:shortVersionString>0.96.2</sparkle:shortVersionString>
|
|
149
|
-
<sparkle:minimumSystemVersion>13.0</sparkle:minimumSystemVersion>
|
|
150
|
-
<sparkle:hardwareRequirements>arm64</sparkle:hardwareRequirements>
|
|
151
|
-
<description sparkle:format="markdown"><![CDATA[## What’s Changed
|
|
152
|
-
|
|
153
|
-
* Fix macOS voice spectrum overlay sensitivity (#548) @basnijholt
|
|
154
|
-
|
|
155
|
-
]]></description>
|
|
156
|
-
<enclosure url="https://github.com/basnijholt/agent-cli/releases/download/v0.96.2/AgentCLI.zip" length="22731154" type="application/octet-stream" sparkle:edSignature="MmlMlLHAK31VEqi0/9apTebWyh31p1jp1U76dw5KU5E9LCl2lqkWnIF2JTPpiTxoS4egpxom7D1FNAKZWQ2EAw=="/>
|
|
157
|
-
</item>
|
|
158
|
-
<item>
|
|
159
|
-
<title>0.96.1</title>
|
|
160
|
-
<pubDate>Fri, 29 May 2026 05:47:47 +0000</pubDate>
|
|
161
|
-
<link>https://github.com/basnijholt/agent-cli</link>
|
|
162
|
-
<sparkle:version>175</sparkle:version>
|
|
163
|
-
<sparkle:shortVersionString>0.96.1</sparkle:shortVersionString>
|
|
164
|
-
<sparkle:minimumSystemVersion>13.0</sparkle:minimumSystemVersion>
|
|
165
|
-
<sparkle:hardwareRequirements>arm64</sparkle:hardwareRequirements>
|
|
166
|
-
<description sparkle:format="markdown"><![CDATA[## What’s Changed
|
|
167
|
-
|
|
168
|
-
* Clean up macOS menu lifecycle wiring (#545) @basnijholt
|
|
169
|
-
* Remove uv Python 3.13 install workarounds (#521) @basnijholt
|
|
170
|
-
* Remove brittle macOS source-shape tests (#547) @basnijholt
|
|
171
|
-
* Fix macOS voice meter source assertions (#546) @basnijholt
|
|
172
|
-
|
|
173
|
-
]]></description>
|
|
174
|
-
<enclosure url="https://github.com/basnijholt/agent-cli/releases/download/v0.96.1/AgentCLI.zip" length="22729845" type="application/octet-stream" sparkle:edSignature="YYq/64CSi+pxZD2NZ02GWIPAdusUf3mesEQ4MltVUOSheuOwimOZpHs81brT4g8rFBa2PRfnobfrfcTtfONqCQ=="/>
|
|
175
|
-
</item>
|
|
176
175
|
</channel>
|
|
177
176
|
</rss>
|
|
@@ -25,6 +25,7 @@ def test_generate_plist_sets_path_for_homebrew_bins() -> None:
|
|
|
25
25
|
assert "/opt/homebrew/bin" in path.split(":")
|
|
26
26
|
assert "/usr/local/bin" in path.split(":")
|
|
27
27
|
assert path.endswith("/usr/bin:/bin:/usr/sbin:/sbin")
|
|
28
|
+
assert plist["EnvironmentVariables"]["AGENTCLI_UV_PATH"] == "/opt/homebrew/bin/uv"
|
|
28
29
|
|
|
29
30
|
|
|
30
31
|
def test_generate_plist_preserves_app_private_uv_environment(
|
|
@@ -853,6 +853,7 @@ class TestSystemdModule:
|
|
|
853
853
|
assert "[Install]" in unit_content
|
|
854
854
|
assert "ExecStart=" in unit_content
|
|
855
855
|
assert str(uv_path) in unit_content
|
|
856
|
+
assert "Environment=AGENTCLI_UV_PATH=uv" in unit_content
|
|
856
857
|
assert "Restart=on-failure" in unit_content
|
|
857
858
|
|
|
858
859
|
def test_systemd_generate_unit_file_appends_extra_args(self) -> None:
|
|
@@ -23,6 +23,8 @@ if TYPE_CHECKING:
|
|
|
23
23
|
def _install_mock_nemo(
|
|
24
24
|
monkeypatch: pytest.MonkeyPatch,
|
|
25
25
|
calls: dict[str, object],
|
|
26
|
+
*,
|
|
27
|
+
model: object | None = None,
|
|
26
28
|
) -> None:
|
|
27
29
|
"""Install a minimal mock of nemo.collections.asr in sys.modules."""
|
|
28
30
|
|
|
@@ -30,7 +32,7 @@ def _install_mock_nemo(
|
|
|
30
32
|
@staticmethod
|
|
31
33
|
def from_pretrained(*, model_name: str) -> object:
|
|
32
34
|
calls["model_name"] = model_name
|
|
33
|
-
return object()
|
|
35
|
+
return model if model is not None else object()
|
|
34
36
|
|
|
35
37
|
nemo_module: Any = ModuleType("nemo")
|
|
36
38
|
collections_module: Any = ModuleType("nemo.collections")
|
|
@@ -235,6 +237,36 @@ def test_resolve_device_preserves_explicit_cpu(
|
|
|
235
237
|
assert backend._resolve_device("cpu") == "cpu"
|
|
236
238
|
|
|
237
239
|
|
|
240
|
+
def test_load_model_fills_missing_validation_ds_for_unified_parakeet(
|
|
241
|
+
monkeypatch: pytest.MonkeyPatch,
|
|
242
|
+
) -> None:
|
|
243
|
+
"""NeMo transcribe expects validation_ds to be a mapping, not None."""
|
|
244
|
+
|
|
245
|
+
class _Model:
|
|
246
|
+
def __init__(self) -> None:
|
|
247
|
+
self.cfg = SimpleNamespace(validation_ds=None)
|
|
248
|
+
|
|
249
|
+
def to(self, device: str) -> _Model:
|
|
250
|
+
assert device == "cpu"
|
|
251
|
+
return self
|
|
252
|
+
|
|
253
|
+
def eval(self) -> None:
|
|
254
|
+
return None
|
|
255
|
+
|
|
256
|
+
calls: dict[str, object] = {}
|
|
257
|
+
model = _Model()
|
|
258
|
+
_install_mock_torch(monkeypatch, cuda_available=False)
|
|
259
|
+
_install_mock_nemo(monkeypatch, calls, model=model)
|
|
260
|
+
monkeypatch.setattr(backend._state, "model", None)
|
|
261
|
+
monkeypatch.setattr(backend._state, "device", None)
|
|
262
|
+
|
|
263
|
+
assert backend._load_model_in_subprocess("nvidia/parakeet-unified-en-0.6b", "cpu") == "cpu"
|
|
264
|
+
|
|
265
|
+
assert calls["model_name"] == "nvidia/parakeet-unified-en-0.6b"
|
|
266
|
+
assert model.cfg.validation_ds == {}
|
|
267
|
+
assert backend._state.model is model
|
|
268
|
+
|
|
269
|
+
|
|
238
270
|
def test_audio_duration_seconds_returns_zero_for_non_wav(tmp_path: Path) -> None:
|
|
239
271
|
"""Ensure non-WAV uploads do not raise duration parsing errors."""
|
|
240
272
|
audio_path = tmp_path / "sample.mp3"
|
|
@@ -15,10 +15,12 @@ from agent_cli.core.deps import (
|
|
|
15
15
|
EXTRAS,
|
|
16
16
|
_check_and_install_extras,
|
|
17
17
|
_find_python_incompatible_extras,
|
|
18
|
+
_find_runtime_uv,
|
|
18
19
|
_get_auto_install_setting,
|
|
19
20
|
_get_install_hint,
|
|
20
21
|
_install_via_uv_tool,
|
|
21
22
|
_maybe_reexec_after_install,
|
|
23
|
+
_maybe_reexec_with_uvx,
|
|
22
24
|
_resolve_extras_for_install,
|
|
23
25
|
_should_skip_extra_check_for_process_control,
|
|
24
26
|
get_combined_install_hint,
|
|
@@ -297,6 +299,65 @@ class TestCheckAndInstallExtras:
|
|
|
297
299
|
uv_available=False,
|
|
298
300
|
) == ["nemo-whisper"]
|
|
299
301
|
|
|
302
|
+
def test_python_incompatible_extra_detection_uses_bundled_uv(self, tmp_path: Path) -> None:
|
|
303
|
+
"""Bundled uv should enable NeMo runtime overrides even when uv is not on PATH."""
|
|
304
|
+
uv_path = tmp_path / "uv"
|
|
305
|
+
uv_path.touch()
|
|
306
|
+
uv_path.chmod(0o755)
|
|
307
|
+
|
|
308
|
+
with (
|
|
309
|
+
patch.dict(os.environ, {"AGENTCLI_BUNDLED_UV": str(uv_path)}, clear=True),
|
|
310
|
+
patch("agent_cli.core.deps.shutil.which", return_value=None),
|
|
311
|
+
):
|
|
312
|
+
assert _find_runtime_uv() == str(uv_path)
|
|
313
|
+
assert (
|
|
314
|
+
_find_python_incompatible_extras(
|
|
315
|
+
["nemo-whisper"],
|
|
316
|
+
python_version=(3, 14),
|
|
317
|
+
)
|
|
318
|
+
== []
|
|
319
|
+
)
|
|
320
|
+
|
|
321
|
+
def test_uvx_cache_reexec_uses_bundled_uv_with_nemo_overrides(
|
|
322
|
+
self, tmp_path: Path, monkeypatch: pytest.MonkeyPatch
|
|
323
|
+
) -> None:
|
|
324
|
+
"""uvx-cache NeMo commands should re-exec via bundled uv with runtime overrides."""
|
|
325
|
+
uv_path = tmp_path / "uv"
|
|
326
|
+
uv_path.touch()
|
|
327
|
+
uv_path.chmod(0o755)
|
|
328
|
+
package_source = tmp_path / "agent_cli.whl"
|
|
329
|
+
captured: dict[str, object] = {}
|
|
330
|
+
|
|
331
|
+
def fake_execvpe(file: str, cmd: list[str], env: dict[str, str]) -> None:
|
|
332
|
+
captured["file"] = file
|
|
333
|
+
captured["cmd"] = cmd
|
|
334
|
+
captured["env"] = env
|
|
335
|
+
|
|
336
|
+
monkeypatch.setenv("AGENTCLI_BUNDLED_UV", str(uv_path))
|
|
337
|
+
monkeypatch.setenv("AGENTCLI_PACKAGE_SOURCE", str(package_source))
|
|
338
|
+
monkeypatch.setattr("agent_cli.core.deps.shutil.which", lambda _: None)
|
|
339
|
+
monkeypatch.setattr("agent_cli.core.deps._is_uvx_cache", lambda: True)
|
|
340
|
+
monkeypatch.setattr("agent_cli.core.deps.os.execvpe", fake_execvpe)
|
|
341
|
+
monkeypatch.setattr(
|
|
342
|
+
"sys.argv",
|
|
343
|
+
["agent-cli", "server", "whisper", "--backend", "nemo"],
|
|
344
|
+
)
|
|
345
|
+
|
|
346
|
+
_maybe_reexec_with_uvx(["server", "nemo-whisper", "wyoming"])
|
|
347
|
+
|
|
348
|
+
cmd = captured["cmd"]
|
|
349
|
+
assert isinstance(cmd, list)
|
|
350
|
+
assert cmd[:5] == [str(uv_path), "tool", "run", "--python", "3.13"]
|
|
351
|
+
assert "--overrides" in cmd
|
|
352
|
+
assert "nemo-whisper.txt" in cmd[cmd.index("--overrides") + 1]
|
|
353
|
+
assert "--with" in cmd
|
|
354
|
+
assert (
|
|
355
|
+
"NVIDIA-NeMo/NeMo.git@be23ce1ee6594da3d7fa2f37e603d3b3ba230a9e"
|
|
356
|
+
in cmd[cmd.index("--with") + 1]
|
|
357
|
+
)
|
|
358
|
+
assert cmd[cmd.index("--from") + 1] == f"{package_source}[server,nemo-whisper,wyoming]"
|
|
359
|
+
assert cmd[-4:] == ["server", "whisper", "--backend", "nemo"]
|
|
360
|
+
|
|
300
361
|
def test_uv_pip_install_uses_nemo_git_override(self) -> None:
|
|
301
362
|
"""Uv pip installs NeMo from a pinned Git revision with the kaldialign override."""
|
|
302
363
|
with (
|
|
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
|