agent-cli 0.84.0__tar.gz → 0.84.1__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.84.0 → agent_cli-0.84.1}/PKG-INFO +1 -1
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/cli.py +29 -8
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/dev/test_cli.py +79 -4
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/memory/test_client.py +9 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/.claude/skills/agent-cli-dev/SKILL.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/.claude/skills/agent-cli-dev/examples.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/.claude-plugin/README.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/.claude-plugin/marketplace.json +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/.claude-plugin/plugin.json +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/.claude-plugin/skills/agent-cli-dev/SKILL.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/.claude-plugin/skills/agent-cli-dev/examples.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/.cursorrules +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/.dockerignore +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/.env.example +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/.github/logo.svg +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/.github/release-drafter.yml +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/.github/renovate.json +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/.github/scripts/check_extras_sync.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/.github/scripts/check_plugin_skill_sync.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/.github/scripts/sync_extras.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/.github/scripts/sync_requirements.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/.github/workflows/automerge.yml +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/.github/workflows/docker.yml +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/.github/workflows/docs.yml +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/.github/workflows/markdown-code-runner.yml +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/.github/workflows/pytest.yml +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/.github/workflows/release-drafter.yml +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/.github/workflows/release.yml +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/.github/workflows/toc.yaml +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/.gitignore +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/.jscpd.json +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/.pre-commit-config.yaml +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/.prompts/docs-review.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/.prompts/pr-review.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/CLAUDE.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/LICENSE +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/README.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/__init__.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/__main__.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/_extras.json +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/_requirements/.gitkeep +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/_requirements/audio.txt +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/_requirements/faster-whisper.txt +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/_requirements/kokoro.txt +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/_requirements/llm.txt +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/_requirements/memory.txt +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/_requirements/mlx-whisper.txt +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/_requirements/piper.txt +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/_requirements/rag.txt +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/_requirements/server.txt +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/_requirements/speed.txt +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/_requirements/vad.txt +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/_requirements/vectordb.txt +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/_requirements/whisper-transformers.txt +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/_requirements/wyoming.txt +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/_tools.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/agents/__init__.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/agents/_voice_agent_common.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/agents/assistant.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/agents/autocorrect.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/agents/chat.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/agents/memory/__init__.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/agents/memory/add.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/agents/memory/proxy.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/agents/rag_proxy.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/agents/speak.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/agents/transcribe.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/agents/transcribe_live.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/agents/voice_edit.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/api.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/cli.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/config.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/config_cmd.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/constants.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/core/__init__.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/core/audio.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/core/audio_format.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/core/chroma.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/core/deps.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/core/openai_proxy.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/core/process.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/core/reranker.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/core/sse.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/core/transcription_logger.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/core/utils.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/core/vad.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/core/watch.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/daemon/__init__.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/daemon/cli.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/__init__.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/_branch_name.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/_output.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/cleanup.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/coding_agents/__init__.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/coding_agents/aider.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/coding_agents/base.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/coding_agents/claude.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/coding_agents/codex.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/coding_agents/continue_dev.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/coding_agents/copilot.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/coding_agents/cursor_agent.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/coding_agents/gemini.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/coding_agents/opencode.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/coding_agents/registry.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/editors/__init__.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/editors/base.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/editors/cursor.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/editors/emacs.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/editors/jetbrains.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/editors/nano.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/editors/neovim.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/editors/registry.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/editors/sublime.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/editors/vim.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/editors/vscode.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/editors/zed.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/launch.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/project.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/registry.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/skill/SKILL.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/skill/examples.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/terminals/__init__.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/terminals/apple_terminal.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/terminals/base.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/terminals/gnome.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/terminals/iterm2.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/terminals/kitty.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/terminals/registry.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/terminals/tmux.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/terminals/warp.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/terminals/zellij.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/dev/worktree.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/docs_gen.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/example-config.toml +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/install/__init__.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/install/common.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/install/extras.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/install/hotkeys.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/install/launchd.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/install/service_config.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/install/services.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/install/systemd.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/memory/__init__.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/memory/_files.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/memory/_filters.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/memory/_git.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/memory/_indexer.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/memory/_ingest.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/memory/_persistence.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/memory/_prompt.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/memory/_retrieval.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/memory/_store.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/memory/_streaming.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/memory/_tasks.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/memory/api.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/memory/client.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/memory/engine.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/memory/entities.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/memory/models.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/opts.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/py.typed +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/rag/__init__.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/rag/_indexer.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/rag/_indexing.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/rag/_prompt.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/rag/_retriever.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/rag/_store.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/rag/_utils.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/rag/api.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/rag/client.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/rag/engine.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/rag/models.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/scripts/.runtime/.gitkeep +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/scripts/__init__.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/scripts/linux-hotkeys/README.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/scripts/linux-hotkeys/toggle-voice-edit.sh +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/scripts/macos-hotkeys/README.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/scripts/macos-hotkeys/skhd-config-example +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/scripts/macos-hotkeys/toggle-autocorrect.sh +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/scripts/macos-hotkeys/toggle-transcription.sh +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/scripts/macos-hotkeys/toggle-voice-edit.sh +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/scripts/nvidia-asr-server/README.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/scripts/nvidia-asr-server/pyproject.toml +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/scripts/nvidia-asr-server/server.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/scripts/nvidia-asr-server/shell.nix +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/scripts/nvidia-asr-server/uv.lock +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/scripts/run-openwakeword.sh +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/scripts/setup-linux-hotkeys.sh +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/scripts/setup-linux.sh +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/scripts/setup-macos-hotkeys.sh +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/scripts/setup-macos.sh +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/scripts/setup-windows.ps1 +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/scripts/start-all-services-windows.ps1 +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/scripts/start-all-services.sh +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/server/__init__.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/server/cli.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/server/common.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/server/model_manager.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/server/model_registry.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/server/proxy/__init__.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/server/proxy/api.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/server/streaming.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/server/tts/__init__.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/server/tts/api.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/server/tts/backends/__init__.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/server/tts/backends/base.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/server/tts/backends/kokoro.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/server/tts/backends/piper.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/server/tts/model_manager.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/server/tts/model_registry.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/server/tts/wyoming_handler.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/server/whisper/__init__.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/server/whisper/api.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/server/whisper/backends/__init__.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/server/whisper/backends/base.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/server/whisper/backends/faster_whisper.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/server/whisper/backends/mlx.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/server/whisper/backends/transformers.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/server/whisper/languages.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/server/whisper/model_manager.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/server/whisper/model_registry.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/server/whisper/wyoming_handler.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/services/__init__.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/services/_wyoming_utils.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/services/asr.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/services/llm.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/services/tts.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/agent_cli/services/wake_word.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docker/docker-compose.yml +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docker/memory-proxy.Dockerfile +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docker/rag-proxy.Dockerfile +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docker/transcribe-proxy.Dockerfile +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docker/tts.Dockerfile +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docker/whisper.Dockerfile +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/CNAME +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/architecture/index.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/architecture/memory.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/architecture/rag.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/commands/assistant.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/commands/autocorrect.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/commands/chat.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/commands/config.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/commands/daemon.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/commands/dev.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/commands/index.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/commands/install-extras.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/commands/install-hotkeys.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/commands/install-services.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/commands/memory.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/commands/rag-proxy.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/commands/server/index.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/commands/server/transcribe-proxy.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/commands/server/tts.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/commands/server/whisper.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/commands/speak.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/commands/start-services.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/commands/transcribe-live.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/commands/transcribe.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/commands/voice-edit.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/configuration.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/getting-started.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/iOS_Shortcut_Guide.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/index.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/installation/docker.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/installation/index.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/installation/linux.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/installation/macos.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/installation/nixos.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/installation/windows.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/logo-clean.svg +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/run_markdown_code_runner.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/docs/system-integration.md +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/example.agent-cli-config.toml +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/justfile +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/pyproject.toml +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/shell.nix +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/__init__.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/agents/__init__.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/agents/test_fix_my_text.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/agents/test_interactive.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/agents/test_interactive_extra.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/agents/test_memory_add.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/agents/test_speak.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/agents/test_speak_e2e.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/agents/test_transcribe.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/agents/test_transcribe_agent.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/agents/test_transcribe_e2e.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/agents/test_transcribe_live.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/agents/test_transcribe_recovery.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/agents/test_tts_common.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/agents/test_tts_common_extra.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/agents/test_voice_agent_common.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/agents/test_voice_edit.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/agents/test_voice_edit_e2e.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/agents/test_wake_word_assistant.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/conftest.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/core/__init__.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/core/test_audio.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/core/test_audio_format.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/core/test_chroma.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/core/test_sse.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/core/test_vad.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/core/test_watch.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/dev/__init__.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/dev/test_coding_agents.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/dev/test_editors.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/dev/test_launch.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/dev/test_project.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/dev/test_terminals.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/dev/test_verification.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/dev/test_worktree.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/install/__init__.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/install/test_extras.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/memory/__init__.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/memory/test_api_health.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/memory/test_api_integration_liveish.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/memory/test_engine.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/memory/test_files.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/memory/test_filters.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/memory/test_git_integration.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/memory/test_indexer.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/memory/test_memory_integration.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/memory/test_proxy_passthrough.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/memory/test_store.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/memory/test_utils.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/mocks/__init__.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/mocks/audio.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/mocks/llm.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/mocks/wyoming.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/rag/__init__.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/rag/test_api.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/rag/test_engine.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/rag/test_history.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/rag/test_indexer.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/rag/test_indexing.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/rag/test_rag_client.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/rag/test_rag_integration_liveish.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/rag/test_rag_proxy_passthrough.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/rag/test_retriever.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/rag/test_store.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/rag/test_utils.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/test_api.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/test_api_integration.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/test_asr.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/test_asr_recovery.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/test_audio_e2e.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/test_cli.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/test_config.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/test_config_cmd.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/test_daemon.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/test_docs_gen.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/test_env_vars.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/test_json_output.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/test_llm.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/test_llm_gemini.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/test_memory_tools.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/test_mlx_backend.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/test_process_manager.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/test_requires_extras.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/test_server_streaming.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/test_server_tts.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/test_server_whisper.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/test_services.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/test_tools.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/test_transformers_backend.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/test_tts.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/test_utils.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/test_wake_word.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/tests/test_wyoming_utils.py +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/uv.lock +0 -0
- {agent_cli-0.84.0 → agent_cli-0.84.1}/zensical.toml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-cli
|
|
3
|
-
Version: 0.84.
|
|
3
|
+
Version: 0.84.1
|
|
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>
|
|
@@ -111,6 +111,29 @@ def _ensure_git_repo() -> Path:
|
|
|
111
111
|
return repo_root
|
|
112
112
|
|
|
113
113
|
|
|
114
|
+
def _require_available_agent(
|
|
115
|
+
agent: coding_agents.CodingAgent | None,
|
|
116
|
+
*,
|
|
117
|
+
requested_name: str | None = None,
|
|
118
|
+
) -> coding_agents.CodingAgent:
|
|
119
|
+
"""Fail fast when an explicit agent launch was requested but cannot happen."""
|
|
120
|
+
if agent is None:
|
|
121
|
+
if requested_name:
|
|
122
|
+
error(f"Agent not found: {requested_name}")
|
|
123
|
+
available_names = ", ".join(candidate.name for candidate in coding_agents.get_all_agents())
|
|
124
|
+
if available_names:
|
|
125
|
+
error(f"No AI coding agents found. Install one of: {available_names}")
|
|
126
|
+
error("No AI coding agents found")
|
|
127
|
+
|
|
128
|
+
if not agent.is_available():
|
|
129
|
+
msg = f"{agent.name} is not installed"
|
|
130
|
+
if agent.install_url:
|
|
131
|
+
msg += f". Install from: {agent.install_url}"
|
|
132
|
+
error(msg)
|
|
133
|
+
|
|
134
|
+
return agent
|
|
135
|
+
|
|
136
|
+
|
|
114
137
|
def _resolve_branch_name(
|
|
115
138
|
branch: str | None,
|
|
116
139
|
branch_name_mode: str,
|
|
@@ -404,6 +427,10 @@ def new(
|
|
|
404
427
|
from_ref,
|
|
405
428
|
)
|
|
406
429
|
|
|
430
|
+
resolved_agent = resolve_agent(agent, agent_name, default_agent)
|
|
431
|
+
if agent:
|
|
432
|
+
resolved_agent = _require_available_agent(resolved_agent, requested_name=agent_name)
|
|
433
|
+
|
|
407
434
|
# Create the worktree
|
|
408
435
|
info(f"Creating worktree for branch '{branch}'...")
|
|
409
436
|
result = worktree.create_worktree(
|
|
@@ -440,7 +467,6 @@ def new(
|
|
|
440
467
|
|
|
441
468
|
# Resolve and launch editor/agent
|
|
442
469
|
resolved_editor = resolve_editor(editor, editor_name, default_editor)
|
|
443
|
-
resolved_agent = resolve_agent(agent, agent_name, default_agent)
|
|
444
470
|
|
|
445
471
|
if resolved_editor and resolved_editor.is_available():
|
|
446
472
|
launch_editor(result.path, resolved_editor)
|
|
@@ -914,18 +940,13 @@ def start_agent(
|
|
|
914
940
|
|
|
915
941
|
if agent_name:
|
|
916
942
|
agent = coding_agents.get_agent(agent_name)
|
|
917
|
-
if agent is None:
|
|
918
|
-
error(f"Agent not found: {agent_name}")
|
|
919
943
|
else:
|
|
920
944
|
agent = coding_agents.detect_current_agent()
|
|
921
945
|
if agent is None:
|
|
922
946
|
available = coding_agents.get_available_agents()
|
|
923
|
-
if
|
|
924
|
-
error("No AI coding agents available")
|
|
925
|
-
agent = available[0]
|
|
947
|
+
agent = available[0] if available else None
|
|
926
948
|
|
|
927
|
-
|
|
928
|
-
error(f"{agent.name} is not installed. Install from: {agent.install_url}")
|
|
949
|
+
agent = _require_available_agent(agent, requested_name=agent_name)
|
|
929
950
|
|
|
930
951
|
# Write prompt to worktree (makes task available to the agent)
|
|
931
952
|
task_file = None
|
|
@@ -19,6 +19,7 @@ from agent_cli.dev._branch_name import (
|
|
|
19
19
|
generate_random_branch_name,
|
|
20
20
|
)
|
|
21
21
|
from agent_cli.dev.cli import _clean_no_commits_worktrees
|
|
22
|
+
from agent_cli.dev.cli import app as dev_app
|
|
22
23
|
from agent_cli.dev.coding_agents.base import CodingAgent
|
|
23
24
|
from agent_cli.dev.launch import (
|
|
24
25
|
_format_env_prefix,
|
|
@@ -300,8 +301,13 @@ class TestDevNewBranchNaming:
|
|
|
300
301
|
return_value=wt_path / ".claude/TASK.md",
|
|
301
302
|
),
|
|
302
303
|
patch("agent_cli.dev.cli.resolve_editor", return_value=None),
|
|
303
|
-
patch("agent_cli.dev.cli.resolve_agent"
|
|
304
|
+
patch("agent_cli.dev.cli.resolve_agent") as mock_resolve_agent,
|
|
305
|
+
patch("agent_cli.dev.cli.merge_agent_args", return_value=None),
|
|
306
|
+
patch("agent_cli.dev.cli.get_agent_env", return_value={}),
|
|
307
|
+
patch("agent_cli.dev.cli.launch_agent", return_value=None),
|
|
304
308
|
):
|
|
309
|
+
mock_agent = mock_resolve_agent.return_value
|
|
310
|
+
mock_agent.is_available.return_value = True
|
|
305
311
|
result = runner.invoke(
|
|
306
312
|
app,
|
|
307
313
|
[
|
|
@@ -559,6 +565,75 @@ direnv = false
|
|
|
559
565
|
assert "%42" in result.output
|
|
560
566
|
assert "tmux attach -t agent-cli-repo-1234" in result.output
|
|
561
567
|
|
|
568
|
+
def test_new_fails_before_creating_worktree_when_no_agent_is_available(
|
|
569
|
+
self,
|
|
570
|
+
tmp_path: Path,
|
|
571
|
+
) -> None:
|
|
572
|
+
"""Explicit agent launches should fail fast before creating side effects."""
|
|
573
|
+
prompt_file = tmp_path / "task.md"
|
|
574
|
+
prompt_file.write_text("Fix login retries")
|
|
575
|
+
|
|
576
|
+
with (
|
|
577
|
+
patch("agent_cli.dev.cli._ensure_git_repo", return_value=Path("/repo")),
|
|
578
|
+
patch("agent_cli.dev.cli.resolve_agent", return_value=None),
|
|
579
|
+
patch("agent_cli.dev.worktree.create_worktree") as mock_create,
|
|
580
|
+
):
|
|
581
|
+
result = runner.invoke(
|
|
582
|
+
app,
|
|
583
|
+
[
|
|
584
|
+
"dev",
|
|
585
|
+
"new",
|
|
586
|
+
"my-feature",
|
|
587
|
+
"--agent",
|
|
588
|
+
"--multiplexer",
|
|
589
|
+
"tmux",
|
|
590
|
+
"--prompt-file",
|
|
591
|
+
str(prompt_file),
|
|
592
|
+
"--no-setup",
|
|
593
|
+
"--no-copy-env",
|
|
594
|
+
"--no-fetch",
|
|
595
|
+
"--no-direnv",
|
|
596
|
+
],
|
|
597
|
+
)
|
|
598
|
+
|
|
599
|
+
assert result.exit_code == 1
|
|
600
|
+
assert "No AI coding agents found" in result.output
|
|
601
|
+
assert "Success" not in result.output
|
|
602
|
+
mock_create.assert_not_called()
|
|
603
|
+
|
|
604
|
+
def test_new_fails_before_creating_worktree_when_requested_agent_is_unavailable(self) -> None:
|
|
605
|
+
"""Unavailable explicit agents should abort before worktree creation."""
|
|
606
|
+
with (
|
|
607
|
+
patch("agent_cli.dev.cli._ensure_git_repo", return_value=Path("/repo")),
|
|
608
|
+
patch("agent_cli.dev.cli.resolve_agent") as mock_resolve_agent,
|
|
609
|
+
patch("agent_cli.dev.worktree.create_worktree") as mock_create,
|
|
610
|
+
):
|
|
611
|
+
mock_agent = mock_resolve_agent.return_value
|
|
612
|
+
mock_agent.name = "codex"
|
|
613
|
+
mock_agent.install_url = "https://example.com/codex"
|
|
614
|
+
mock_agent.is_available.return_value = False
|
|
615
|
+
|
|
616
|
+
result = runner.invoke(
|
|
617
|
+
app,
|
|
618
|
+
[
|
|
619
|
+
"dev",
|
|
620
|
+
"new",
|
|
621
|
+
"my-feature",
|
|
622
|
+
"--agent",
|
|
623
|
+
"--with-agent",
|
|
624
|
+
"codex",
|
|
625
|
+
"--no-setup",
|
|
626
|
+
"--no-copy-env",
|
|
627
|
+
"--no-fetch",
|
|
628
|
+
"--no-direnv",
|
|
629
|
+
],
|
|
630
|
+
)
|
|
631
|
+
|
|
632
|
+
assert result.exit_code == 1
|
|
633
|
+
assert "codex is not installed. Install from: https://example.com/codex" in result.output
|
|
634
|
+
assert "Success" not in result.output
|
|
635
|
+
mock_create.assert_not_called()
|
|
636
|
+
|
|
562
637
|
|
|
563
638
|
class TestDevHelp:
|
|
564
639
|
"""Tests for dev command help."""
|
|
@@ -645,7 +720,7 @@ class TestDevAgents:
|
|
|
645
720
|
|
|
646
721
|
def test_list_agents(self) -> None:
|
|
647
722
|
"""List all agents."""
|
|
648
|
-
result = runner.invoke(
|
|
723
|
+
result = runner.invoke(dev_app, ["agents"])
|
|
649
724
|
assert result.exit_code == 0
|
|
650
725
|
assert "claude" in result.output.lower()
|
|
651
726
|
assert "aider" in result.output.lower()
|
|
@@ -656,7 +731,7 @@ class TestDevEditors:
|
|
|
656
731
|
|
|
657
732
|
def test_list_editors(self) -> None:
|
|
658
733
|
"""List all editors."""
|
|
659
|
-
result = runner.invoke(
|
|
734
|
+
result = runner.invoke(dev_app, ["editors"])
|
|
660
735
|
assert result.exit_code == 0
|
|
661
736
|
assert "vscode" in result.output.lower()
|
|
662
737
|
assert "neovim" in result.output.lower()
|
|
@@ -667,7 +742,7 @@ class TestDevTerminals:
|
|
|
667
742
|
|
|
668
743
|
def test_list_terminals(self) -> None:
|
|
669
744
|
"""List all terminals."""
|
|
670
|
-
result = runner.invoke(
|
|
745
|
+
result = runner.invoke(dev_app, ["terminals"])
|
|
671
746
|
assert result.exit_code == 0
|
|
672
747
|
assert "tmux" in result.output.lower()
|
|
673
748
|
assert "zellij" in result.output.lower()
|
|
@@ -53,6 +53,9 @@ class _DummyReranker:
|
|
|
53
53
|
def client(tmp_path: Path) -> MemoryClient:
|
|
54
54
|
"""Create a memory client with stubs."""
|
|
55
55
|
with ExitStack() as stack:
|
|
56
|
+
stack.enter_context(
|
|
57
|
+
patch("agent_cli.memory.client.init_repo"),
|
|
58
|
+
)
|
|
56
59
|
stack.enter_context(
|
|
57
60
|
patch("agent_cli.memory.client.watch_memory_store"),
|
|
58
61
|
)
|
|
@@ -150,6 +153,9 @@ async def test_client_startup_manual(tmp_path: Path) -> None:
|
|
|
150
153
|
pass
|
|
151
154
|
|
|
152
155
|
with ExitStack() as stack:
|
|
156
|
+
stack.enter_context(
|
|
157
|
+
patch("agent_cli.memory.client.init_repo"),
|
|
158
|
+
)
|
|
153
159
|
mock_watch = stack.enter_context(patch("agent_cli.memory.client.watch_memory_store"))
|
|
154
160
|
mock_watch.side_effect = _fake_watch
|
|
155
161
|
|
|
@@ -195,6 +201,9 @@ async def test_client_context_manager(tmp_path: Path) -> None:
|
|
|
195
201
|
pass
|
|
196
202
|
|
|
197
203
|
with ExitStack() as stack:
|
|
204
|
+
stack.enter_context(
|
|
205
|
+
patch("agent_cli.memory.client.init_repo"),
|
|
206
|
+
)
|
|
198
207
|
mock_watch = stack.enter_context(patch("agent_cli.memory.client.watch_memory_store"))
|
|
199
208
|
mock_watch.side_effect = _fake_watch
|
|
200
209
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|