agent-cli 0.76.1__tar.gz → 0.76.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.76.1 → agent_cli-0.76.2}/PKG-INFO +1 -1
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/core/deps.py +95 -12
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/test_requires_extras.py +3 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/.claude/skills/agent-cli-dev/SKILL.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/.claude/skills/agent-cli-dev/examples.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/.claude-plugin/README.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/.claude-plugin/marketplace.json +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/.claude-plugin/plugin.json +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/.claude-plugin/skills/agent-cli-dev/SKILL.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/.claude-plugin/skills/agent-cli-dev/examples.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/.cursorrules +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/.dockerignore +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/.env.example +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/.github/logo.svg +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/.github/release-drafter.yml +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/.github/renovate.json +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/.github/scripts/check_extras_sync.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/.github/scripts/sync_requirements.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/.github/workflows/automerge.yml +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/.github/workflows/docker.yml +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/.github/workflows/docs.yml +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/.github/workflows/markdown-code-runner.yml +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/.github/workflows/pytest.yml +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/.github/workflows/release-drafter.yml +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/.github/workflows/release.yml +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/.github/workflows/toc.yaml +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/.gitignore +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/.jscpd.json +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/.pre-commit-config.yaml +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/.prompts/docs-review.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/.prompts/pr-review.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/CLAUDE.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/LICENSE +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/README.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/__init__.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/__main__.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/_extras.json +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/_requirements/.gitkeep +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/_requirements/audio.txt +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/_requirements/faster-whisper.txt +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/_requirements/kokoro.txt +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/_requirements/llm.txt +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/_requirements/memory.txt +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/_requirements/mlx-whisper.txt +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/_requirements/piper.txt +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/_requirements/rag.txt +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/_requirements/server.txt +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/_requirements/speed.txt +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/_requirements/vad.txt +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/_requirements/whisper-transformers.txt +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/_requirements/wyoming.txt +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/_tools.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/agents/__init__.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/agents/_voice_agent_common.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/agents/assistant.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/agents/autocorrect.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/agents/chat.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/agents/memory/__init__.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/agents/memory/add.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/agents/memory/proxy.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/agents/rag_proxy.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/agents/speak.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/agents/transcribe.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/agents/transcribe_daemon.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/agents/voice_edit.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/api.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/cli.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/config.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/config_cmd.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/constants.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/core/__init__.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/core/audio.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/core/audio_format.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/core/chroma.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/core/openai_proxy.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/core/process.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/core/reranker.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/core/sse.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/core/transcription_logger.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/core/utils.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/core/vad.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/core/watch.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/__init__.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/cli.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/coding_agents/__init__.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/coding_agents/aider.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/coding_agents/base.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/coding_agents/claude.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/coding_agents/codex.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/coding_agents/continue_dev.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/coding_agents/copilot.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/coding_agents/cursor_agent.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/coding_agents/gemini.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/coding_agents/opencode.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/coding_agents/registry.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/editors/__init__.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/editors/base.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/editors/cursor.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/editors/emacs.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/editors/jetbrains.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/editors/nano.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/editors/neovim.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/editors/registry.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/editors/sublime.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/editors/vim.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/editors/vscode.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/editors/zed.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/project.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/registry.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/skill/SKILL.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/skill/examples.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/terminals/__init__.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/terminals/apple_terminal.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/terminals/base.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/terminals/gnome.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/terminals/iterm2.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/terminals/kitty.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/terminals/registry.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/terminals/tmux.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/terminals/warp.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/terminals/zellij.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/dev/worktree.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/docs_gen.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/example-config.toml +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/install/__init__.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/install/common.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/install/extras.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/install/hotkeys.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/install/services.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/memory/__init__.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/memory/_files.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/memory/_filters.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/memory/_git.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/memory/_indexer.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/memory/_ingest.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/memory/_persistence.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/memory/_prompt.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/memory/_retrieval.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/memory/_store.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/memory/_streaming.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/memory/_tasks.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/memory/api.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/memory/client.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/memory/engine.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/memory/entities.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/memory/models.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/opts.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/py.typed +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/rag/__init__.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/rag/_indexer.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/rag/_indexing.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/rag/_prompt.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/rag/_retriever.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/rag/_store.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/rag/_utils.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/rag/api.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/rag/client.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/rag/engine.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/rag/models.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/.runtime/.gitkeep +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/__init__.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/check_plugin_skill_sync.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/linux-hotkeys/README.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/linux-hotkeys/toggle-voice-edit.sh +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/macos-hotkeys/README.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/macos-hotkeys/skhd-config-example +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/macos-hotkeys/toggle-autocorrect.sh +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/macos-hotkeys/toggle-transcription.sh +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/macos-hotkeys/toggle-voice-edit.sh +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/nvidia-asr-server/README.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/nvidia-asr-server/pyproject.toml +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/nvidia-asr-server/server.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/nvidia-asr-server/shell.nix +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/nvidia-asr-server/uv.lock +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/run-openwakeword.sh +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/run-piper-windows.ps1 +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/run-piper.sh +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/run-whisper-linux.sh +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/run-whisper-macos.sh +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/run-whisper-windows.ps1 +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/run-whisper.sh +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/run_faster_whisper_server.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/setup-linux-hotkeys.sh +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/setup-linux.sh +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/setup-macos-hotkeys.sh +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/setup-macos.sh +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/setup-windows.ps1 +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/start-all-services-windows.ps1 +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/start-all-services.sh +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/sync_extras.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/server/__init__.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/server/cli.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/server/common.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/server/model_manager.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/server/model_registry.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/server/proxy/__init__.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/server/proxy/api.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/server/streaming.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/server/tts/__init__.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/server/tts/api.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/server/tts/backends/__init__.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/server/tts/backends/base.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/server/tts/backends/kokoro.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/server/tts/backends/piper.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/server/tts/model_manager.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/server/tts/model_registry.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/server/tts/wyoming_handler.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/server/whisper/__init__.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/server/whisper/api.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/server/whisper/backends/__init__.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/server/whisper/backends/base.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/server/whisper/backends/faster_whisper.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/server/whisper/backends/mlx.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/server/whisper/backends/transformers.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/server/whisper/languages.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/server/whisper/model_manager.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/server/whisper/model_registry.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/server/whisper/wyoming_handler.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/services/__init__.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/services/_wyoming_utils.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/services/asr.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/services/llm.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/services/tts.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/services/wake_word.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docker/docker-compose.yml +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docker/memory-proxy.Dockerfile +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docker/rag-proxy.Dockerfile +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docker/transcribe-proxy.Dockerfile +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docker/tts.Dockerfile +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docker/whisper.Dockerfile +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/CNAME +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/architecture/index.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/architecture/memory.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/architecture/rag.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/commands/assistant.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/commands/autocorrect.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/commands/chat.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/commands/config.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/commands/dev.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/commands/index.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/commands/install-extras.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/commands/install-hotkeys.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/commands/install-services.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/commands/memory.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/commands/rag-proxy.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/commands/server/index.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/commands/server/transcribe-proxy.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/commands/server/tts.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/commands/server/whisper.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/commands/speak.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/commands/start-services.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/commands/transcribe-daemon.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/commands/transcribe.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/commands/voice-edit.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/configuration.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/getting-started.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/iOS_Shortcut_Guide.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/index.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/installation/docker.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/installation/index.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/installation/linux.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/installation/macos.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/installation/nixos.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/installation/windows.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/logo-clean.svg +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/run_markdown_code_runner.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/docs/system-integration.md +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/example.agent-cli-config.toml +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/justfile +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/pyproject.toml +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/shell.nix +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/__init__.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/agents/__init__.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/agents/test_fix_my_text.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/agents/test_interactive.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/agents/test_interactive_extra.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/agents/test_memory_add.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/agents/test_speak.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/agents/test_speak_e2e.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/agents/test_transcribe.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/agents/test_transcribe_agent.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/agents/test_transcribe_daemon.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/agents/test_transcribe_e2e.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/agents/test_transcribe_recovery.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/agents/test_tts_common.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/agents/test_tts_common_extra.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/agents/test_voice_agent_common.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/agents/test_voice_edit.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/agents/test_voice_edit_e2e.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/agents/test_wake_word_assistant.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/conftest.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/core/__init__.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/core/test_audio_format.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/core/test_chroma.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/core/test_sse.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/core/test_vad.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/core/test_watch.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/dev/__init__.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/dev/test_cli.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/dev/test_coding_agents.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/dev/test_editors.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/dev/test_project.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/dev/test_terminals.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/dev/test_verification.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/dev/test_worktree.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/install/__init__.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/install/test_extras.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/memory/__init__.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/memory/test_api_health.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/memory/test_api_integration_liveish.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/memory/test_client.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/memory/test_engine.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/memory/test_files.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/memory/test_filters.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/memory/test_git_integration.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/memory/test_indexer.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/memory/test_memory_integration.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/memory/test_proxy_passthrough.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/memory/test_store.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/memory/test_utils.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/mocks/__init__.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/mocks/audio.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/mocks/llm.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/mocks/wyoming.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/rag/__init__.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/rag/test_api.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/rag/test_engine.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/rag/test_history.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/rag/test_indexer.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/rag/test_indexing.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/rag/test_rag_client.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/rag/test_rag_integration_liveish.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/rag/test_rag_proxy_passthrough.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/rag/test_retriever.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/rag/test_store.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/rag/test_utils.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/test_api.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/test_api_integration.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/test_asr.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/test_asr_recovery.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/test_audio_e2e.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/test_cli.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/test_config.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/test_config_cmd.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/test_docs_gen.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/test_env_vars.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/test_json_output.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/test_llm.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/test_llm_gemini.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/test_memory_tools.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/test_mlx_backend.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/test_process_manager.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/test_server_streaming.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/test_server_tts.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/test_server_whisper.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/test_services.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/test_tools.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/test_transformers_backend.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/test_tts.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/test_utils.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/test_wake_word.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/tests/test_wyoming_utils.py +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/uv.lock +0 -0
- {agent_cli-0.76.1 → agent_cli-0.76.2}/zensical.toml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-cli
|
|
3
|
-
Version: 0.76.
|
|
3
|
+
Version: 0.76.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>
|
|
@@ -6,6 +6,8 @@ import functools
|
|
|
6
6
|
import importlib
|
|
7
7
|
import json
|
|
8
8
|
import os
|
|
9
|
+
import shutil
|
|
10
|
+
import sys
|
|
9
11
|
from importlib.util import find_spec
|
|
10
12
|
from pathlib import Path
|
|
11
13
|
from typing import TYPE_CHECKING, TypeVar
|
|
@@ -20,6 +22,9 @@ if TYPE_CHECKING:
|
|
|
20
22
|
|
|
21
23
|
F = TypeVar("F", bound="Callable[..., object]")
|
|
22
24
|
|
|
25
|
+
# Marker to prevent infinite re-exec loops
|
|
26
|
+
_REEXEC_MARKER = "_AGENT_CLI_REEXEC"
|
|
27
|
+
|
|
23
28
|
|
|
24
29
|
def _get_auto_install_setting() -> bool:
|
|
25
30
|
"""Check if auto-install is enabled (default: True)."""
|
|
@@ -28,6 +33,44 @@ def _get_auto_install_setting() -> bool:
|
|
|
28
33
|
return load_config().get("settings", {}).get("auto_install_extras", True)
|
|
29
34
|
|
|
30
35
|
|
|
36
|
+
def _is_uvx_cache() -> bool:
|
|
37
|
+
"""Check if running from uvx cache (ephemeral) vs uv tool (persistent)."""
|
|
38
|
+
# uvx uses ~/.cache/uv/archive-v0/... (or AppData\Local\uv\cache on Windows)
|
|
39
|
+
# uv tool uses ~/.local/share/uv/tools/... (or AppData\Local\uv\tools on Windows)
|
|
40
|
+
# Use as_posix() for cross-platform forward-slash paths
|
|
41
|
+
prefix_str = Path(sys.prefix).resolve().as_posix()
|
|
42
|
+
return "/cache/uv/" in prefix_str or "/archive-v" in prefix_str
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def _reexec(cmd: list[str], message: str) -> None:
|
|
46
|
+
"""Re-execute with a new command, preventing infinite loops."""
|
|
47
|
+
if os.environ.get(_REEXEC_MARKER):
|
|
48
|
+
return
|
|
49
|
+
err_console.print(f"[yellow]{message}[/]")
|
|
50
|
+
new_env = os.environ.copy()
|
|
51
|
+
new_env[_REEXEC_MARKER] = "1"
|
|
52
|
+
os.execvpe(cmd[0], cmd, new_env) # noqa: S606
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def _reexec_with_uvx_extras(extras: list[str]) -> bool:
|
|
56
|
+
"""Re-execute with uvx --with for extras. Returns False if not applicable."""
|
|
57
|
+
if os.environ.get(_REEXEC_MARKER) or not _is_uvx_cache():
|
|
58
|
+
return False
|
|
59
|
+
uvx_path = shutil.which("uvx")
|
|
60
|
+
if not uvx_path:
|
|
61
|
+
return False
|
|
62
|
+
extras_str = ",".join(extras)
|
|
63
|
+
cmd = [uvx_path, "--with", f"agent-cli[{extras_str}]", "agent-cli", *sys.argv[1:]]
|
|
64
|
+
_reexec(cmd, f"Re-running with extras: {extras_str}")
|
|
65
|
+
return True # Never reached
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def _reexec_self() -> None:
|
|
69
|
+
"""Re-execute after auto-install so new packages are visible."""
|
|
70
|
+
executable = shutil.which("agent-cli") or sys.executable
|
|
71
|
+
_reexec([executable, *sys.argv[1:]], "Re-running with installed extras...")
|
|
72
|
+
|
|
73
|
+
|
|
31
74
|
# Load extras from JSON file
|
|
32
75
|
_EXTRAS_FILE = Path(__file__).parent.parent / "_extras.json"
|
|
33
76
|
EXTRAS: dict[str, tuple[str, list[str]]] = {
|
|
@@ -127,21 +170,46 @@ def get_combined_install_hint(extras: list[str]) -> str:
|
|
|
127
170
|
return "\n".join(lines)
|
|
128
171
|
|
|
129
172
|
|
|
130
|
-
def
|
|
131
|
-
"""
|
|
173
|
+
def _resolve_alternative(extra: str) -> str | None:
|
|
174
|
+
"""For an alternative extra like 'a|b|c', return the installed one or first option."""
|
|
175
|
+
if "|" not in extra:
|
|
176
|
+
return extra
|
|
177
|
+
alternatives = extra.split("|")
|
|
178
|
+
# Check if any alternative is already installed - use that one
|
|
179
|
+
for alt in alternatives:
|
|
180
|
+
if check_extra_installed(alt):
|
|
181
|
+
return alt
|
|
182
|
+
# None installed, return first option for installation
|
|
183
|
+
return alternatives[0]
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
def _try_auto_install(
|
|
187
|
+
missing: list[str],
|
|
188
|
+
all_required: tuple[str, ...] | None = None,
|
|
189
|
+
) -> bool:
|
|
190
|
+
"""Attempt to auto-install missing extras. Returns True if successful.
|
|
191
|
+
|
|
192
|
+
If all_required is provided, ensures all those extras are installed
|
|
193
|
+
(not just the missing ones) to handle uv tool reinstall properly.
|
|
194
|
+
With --force, uv replaces the entire install, so we must include
|
|
195
|
+
ALL required extras to avoid losing ones that were already installed.
|
|
196
|
+
"""
|
|
132
197
|
from agent_cli.install.extras import install_extras_programmatic # noqa: PLC0415
|
|
133
198
|
|
|
134
|
-
#
|
|
199
|
+
# Use all required extras if provided, otherwise just missing
|
|
200
|
+
extras_source = all_required if all_required is not None else missing
|
|
201
|
+
|
|
202
|
+
# Resolve alternatives: use installed one if present, otherwise first option
|
|
135
203
|
extras_to_install = []
|
|
136
|
-
for extra in
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
extras_to_install.append(
|
|
140
|
-
else:
|
|
141
|
-
extras_to_install.append(extra)
|
|
204
|
+
for extra in extras_source:
|
|
205
|
+
resolved = _resolve_alternative(extra)
|
|
206
|
+
if resolved:
|
|
207
|
+
extras_to_install.append(resolved)
|
|
142
208
|
|
|
209
|
+
# Show only the missing ones in the message (resolved)
|
|
210
|
+
missing_display = [_resolve_alternative(e) or e.split("|")[0] for e in missing]
|
|
143
211
|
err_console.print(
|
|
144
|
-
f"[yellow]Auto-installing missing extras: {', '.join(
|
|
212
|
+
f"[yellow]Auto-installing missing extras: {', '.join(missing_display)}[/]",
|
|
145
213
|
)
|
|
146
214
|
return install_extras_programmatic(extras_to_install, quiet=True)
|
|
147
215
|
|
|
@@ -156,12 +224,27 @@ def _check_and_install_extras(extras: tuple[str, ...]) -> list[str]:
|
|
|
156
224
|
print_error_message(get_combined_install_hint(missing))
|
|
157
225
|
return missing
|
|
158
226
|
|
|
159
|
-
if
|
|
227
|
+
# Resolve alternatives: use installed one if present, otherwise first option
|
|
228
|
+
extras_to_install = [_resolve_alternative(e) or e.split("|")[0] for e in extras]
|
|
229
|
+
|
|
230
|
+
# For uvx cache environments, re-exec with --with flag
|
|
231
|
+
# This replaces the current process if successful (never returns)
|
|
232
|
+
_reexec_with_uvx_extras(extras_to_install)
|
|
233
|
+
|
|
234
|
+
# Not in uvx (or re-exec failed), try normal auto-install
|
|
235
|
+
if not _try_auto_install(missing, all_required=extras):
|
|
160
236
|
print_error_message("Auto-install failed.\n" + get_combined_install_hint(missing))
|
|
161
237
|
return missing
|
|
162
238
|
|
|
163
239
|
err_console.print("[green]Installation complete![/]")
|
|
164
|
-
|
|
240
|
+
|
|
241
|
+
# Re-exec ourselves so the new packages are visible
|
|
242
|
+
# The newly installed version will run with all extras available
|
|
243
|
+
# If re-exec succeeds, this never returns
|
|
244
|
+
_reexec_self()
|
|
245
|
+
|
|
246
|
+
# If we get here, re-exec was skipped (loop prevention) or failed
|
|
247
|
+
# Check if extras are now available in this process
|
|
165
248
|
importlib.invalidate_caches()
|
|
166
249
|
still_missing = [e for e in extras if not check_extra_installed(e)]
|
|
167
250
|
if still_missing:
|
|
@@ -201,6 +201,7 @@ class TestCheckAndInstallExtras:
|
|
|
201
201
|
),
|
|
202
202
|
patch("agent_cli.core.deps._get_auto_install_setting", return_value=True),
|
|
203
203
|
patch("agent_cli.core.deps._try_auto_install", return_value=True),
|
|
204
|
+
patch("agent_cli.core.deps._reexec_self"), # Prevent actual re-exec
|
|
204
205
|
):
|
|
205
206
|
result = _check_and_install_extras(("fake-extra",))
|
|
206
207
|
assert result == []
|
|
@@ -212,6 +213,7 @@ class TestCheckAndInstallExtras:
|
|
|
212
213
|
patch("agent_cli.core.deps.check_extra_installed", return_value=False),
|
|
213
214
|
patch("agent_cli.core.deps._get_auto_install_setting", return_value=True),
|
|
214
215
|
patch("agent_cli.core.deps._try_auto_install", return_value=True),
|
|
216
|
+
patch("agent_cli.core.deps._reexec_self"), # Prevent actual re-exec
|
|
215
217
|
patch("agent_cli.core.deps.print_error_message") as mock_error,
|
|
216
218
|
):
|
|
217
219
|
result = _check_and_install_extras(("fake-extra",))
|
|
@@ -259,6 +261,7 @@ class TestDecoratorIntegration:
|
|
|
259
261
|
),
|
|
260
262
|
patch("agent_cli.core.deps._get_auto_install_setting", return_value=True),
|
|
261
263
|
patch("agent_cli.core.deps._try_auto_install", return_value=True),
|
|
264
|
+
patch("agent_cli.core.deps._reexec_self"), # Prevent actual re-exec
|
|
262
265
|
):
|
|
263
266
|
|
|
264
267
|
@requires_extras("fake-extra")
|
|
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
|
{agent_cli-0.76.1 → agent_cli-0.76.2}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh
RENAMED
|
File without changes
|
|
File without changes
|