agent-cli 0.68.5__tar.gz → 0.69.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.68.5/agent_cli/dev/skill → agent_cli-0.69.1/.claude/skills/agent-cli-dev}/SKILL.md +9 -4
- {agent_cli-0.68.5 → agent_cli-0.69.1}/.claude/skills/agent-cli-dev/examples.md +65 -4
- {agent_cli-0.68.5/.claude → agent_cli-0.69.1/.claude-plugin}/skills/agent-cli-dev/SKILL.md +9 -4
- {agent_cli-0.68.5 → agent_cli-0.69.1}/.claude-plugin/skills/agent-cli-dev/examples.md +65 -4
- {agent_cli-0.68.5 → agent_cli-0.69.1}/.pre-commit-config.yaml +1 -1
- {agent_cli-0.68.5 → agent_cli-0.69.1}/CLAUDE.md +1 -1
- {agent_cli-0.68.5 → agent_cli-0.69.1}/PKG-INFO +10 -6
- {agent_cli-0.68.5 → agent_cli-0.69.1}/README.md +6 -3
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/agents/autocorrect.py +2 -1
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/agents/memory/__init__.py +1 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/agents/memory/proxy.py +5 -12
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/agents/rag_proxy.py +2 -9
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/agents/transcribe.py +4 -1
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/cli.py +18 -2
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/config_cmd.py +1 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/core/chroma.py +4 -4
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/core/deps.py +1 -1
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/core/openai_proxy.py +9 -4
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/core/process.py +2 -2
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/core/reranker.py +5 -4
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/core/utils.py +3 -1
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/core/vad.py +2 -1
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/core/watch.py +8 -6
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/cli.py +6 -5
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/coding_agents/base.py +1 -2
- {agent_cli-0.68.5/.claude-plugin/skills/agent-cli-dev → agent_cli-0.69.1/agent_cli/dev/skill}/SKILL.md +9 -4
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/skill/examples.md +65 -4
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/install/extras.py +9 -7
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/memory/_files.py +4 -1
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/memory/_indexer.py +3 -2
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/memory/_ingest.py +6 -5
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/memory/_streaming.py +2 -2
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/rag/_indexer.py +3 -2
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/rag/api.py +1 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/server/cli.py +3 -5
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/server/common.py +3 -4
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/server/whisper/backends/faster_whisper.py +30 -23
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/services/llm.py +2 -1
- agent_cli-0.69.1/docker/transcription-proxy.Dockerfile +55 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docker/tts.Dockerfile +51 -43
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docker/whisper.Dockerfile +29 -35
- {agent_cli-0.68.5 → agent_cli-0.69.1}/pyproject.toml +4 -4
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/agents/test_fix_my_text.py +5 -5
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/agents/test_transcribe.py +23 -15
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/agents/test_transcribe_agent.py +1 -1
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/agents/test_transcribe_recovery.py +8 -6
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/core/test_watch.py +3 -6
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/memory/test_engine.py +2 -5
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/rag/test_store.py +1 -1
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/test_cli.py +3 -2
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/test_requires_extras.py +1 -1
- {agent_cli-0.68.5 → agent_cli-0.69.1}/uv.lock +6 -8
- agent_cli-0.68.5/docker/transcription-proxy.Dockerfile +0 -51
- {agent_cli-0.68.5 → agent_cli-0.69.1}/.claude-plugin/README.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/.claude-plugin/marketplace.json +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/.claude-plugin/plugin.json +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/.cursorrules +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/.env.example +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/.github/logo.svg +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/.github/release-drafter.yml +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/.github/renovate.json +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/.github/scripts/check_extras_sync.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/.github/scripts/sync_requirements.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/.github/workflows/automerge.yml +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/.github/workflows/docker.yml +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/.github/workflows/docs.yml +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/.github/workflows/markdown-code-runner.yml +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/.github/workflows/pytest.yml +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/.github/workflows/release-drafter.yml +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/.github/workflows/release.yml +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/.github/workflows/toc.yaml +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/.gitignore +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/.jscpd.json +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/.prompts/docs-review.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/.prompts/pr-review.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/LICENSE +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/__init__.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/__main__.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/_extras.json +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/_requirements/.gitkeep +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/_requirements/audio.txt +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/_requirements/faster-whisper.txt +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/_requirements/kokoro.txt +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/_requirements/llm.txt +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/_requirements/memory.txt +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/_requirements/mlx-whisper.txt +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/_requirements/piper.txt +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/_requirements/rag.txt +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/_requirements/server.txt +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/_requirements/speed.txt +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/_requirements/vad.txt +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/_tools.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/agents/__init__.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/agents/_voice_agent_common.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/agents/assistant.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/agents/chat.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/agents/memory/add.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/agents/speak.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/agents/transcribe_daemon.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/agents/voice_edit.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/api.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/config.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/constants.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/core/__init__.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/core/audio.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/core/audio_format.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/core/sse.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/core/transcription_logger.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/__init__.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/coding_agents/__init__.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/coding_agents/aider.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/coding_agents/claude.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/coding_agents/codex.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/coding_agents/continue_dev.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/coding_agents/copilot.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/coding_agents/cursor_agent.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/coding_agents/gemini.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/coding_agents/opencode.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/coding_agents/registry.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/editors/__init__.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/editors/base.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/editors/cursor.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/editors/emacs.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/editors/jetbrains.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/editors/nano.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/editors/neovim.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/editors/registry.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/editors/sublime.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/editors/vim.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/editors/vscode.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/editors/zed.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/project.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/registry.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/terminals/__init__.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/terminals/apple_terminal.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/terminals/base.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/terminals/gnome.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/terminals/iterm2.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/terminals/kitty.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/terminals/registry.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/terminals/tmux.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/terminals/warp.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/terminals/zellij.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/dev/worktree.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/docs_gen.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/example-config.toml +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/install/__init__.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/install/common.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/install/hotkeys.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/install/services.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/memory/__init__.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/memory/_filters.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/memory/_git.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/memory/_persistence.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/memory/_prompt.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/memory/_retrieval.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/memory/_store.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/memory/_tasks.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/memory/api.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/memory/client.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/memory/engine.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/memory/entities.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/memory/models.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/opts.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/py.typed +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/rag/__init__.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/rag/_indexing.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/rag/_prompt.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/rag/_retriever.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/rag/_store.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/rag/_utils.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/rag/client.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/rag/engine.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/rag/models.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/.runtime/.gitkeep +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/__init__.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/check_plugin_skill_sync.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/linux-hotkeys/README.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/linux-hotkeys/toggle-voice-edit.sh +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/macos-hotkeys/README.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/macos-hotkeys/skhd-config-example +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/macos-hotkeys/toggle-autocorrect.sh +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/macos-hotkeys/toggle-transcription.sh +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/macos-hotkeys/toggle-voice-edit.sh +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/nvidia-asr-server/README.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/nvidia-asr-server/pyproject.toml +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/nvidia-asr-server/server.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/nvidia-asr-server/shell.nix +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/nvidia-asr-server/uv.lock +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/run-openwakeword.sh +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/run-piper-windows.ps1 +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/run-piper.sh +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/run-whisper-linux.sh +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/run-whisper-macos.sh +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/run-whisper-windows.ps1 +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/run-whisper.sh +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/run_faster_whisper_server.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/setup-linux-hotkeys.sh +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/setup-linux.sh +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/setup-macos-hotkeys.sh +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/setup-macos.sh +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/setup-windows.ps1 +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/start-all-services-windows.ps1 +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/start-all-services.sh +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/scripts/sync_extras.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/server/__init__.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/server/model_manager.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/server/model_registry.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/server/proxy/__init__.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/server/proxy/api.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/server/streaming.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/server/tts/__init__.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/server/tts/api.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/server/tts/backends/__init__.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/server/tts/backends/base.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/server/tts/backends/kokoro.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/server/tts/backends/piper.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/server/tts/model_manager.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/server/tts/model_registry.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/server/tts/wyoming_handler.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/server/whisper/__init__.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/server/whisper/api.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/server/whisper/backends/__init__.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/server/whisper/backends/base.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/server/whisper/backends/mlx.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/server/whisper/languages.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/server/whisper/model_manager.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/server/whisper/model_registry.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/server/whisper/wyoming_handler.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/services/__init__.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/services/_wyoming_utils.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/services/asr.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/services/tts.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/agent_cli/services/wake_word.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docker/docker-compose.yml +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/CNAME +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/architecture/index.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/architecture/memory.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/architecture/rag.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/commands/assistant.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/commands/autocorrect.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/commands/chat.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/commands/config.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/commands/dev.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/commands/index.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/commands/install-extras.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/commands/install-hotkeys.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/commands/install-services.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/commands/memory.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/commands/rag-proxy.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/commands/server/index.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/commands/server/transcription-proxy.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/commands/server/tts.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/commands/server/whisper.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/commands/speak.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/commands/start-services.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/commands/transcribe-daemon.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/commands/transcribe.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/commands/voice-edit.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/configuration.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/getting-started.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/iOS_Shortcut_Guide.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/index.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/installation/docker.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/installation/index.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/installation/linux.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/installation/macos.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/installation/nixos.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/installation/windows.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/logo-clean.svg +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/run_markdown_code_runner.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/docs/system-integration.md +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/example.agent-cli-config.toml +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/justfile +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/shell.nix +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/__init__.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/agents/__init__.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/agents/test_interactive.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/agents/test_interactive_extra.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/agents/test_memory_add.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/agents/test_speak.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/agents/test_speak_e2e.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/agents/test_transcribe_daemon.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/agents/test_transcribe_e2e.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/agents/test_tts_common.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/agents/test_tts_common_extra.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/agents/test_voice_agent_common.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/agents/test_voice_edit.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/agents/test_voice_edit_e2e.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/agents/test_wake_word_assistant.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/conftest.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/core/__init__.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/core/test_audio_format.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/core/test_chroma.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/core/test_sse.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/core/test_vad.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/dev/__init__.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/dev/test_cli.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/dev/test_coding_agents.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/dev/test_editors.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/dev/test_project.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/dev/test_terminals.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/dev/test_verification.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/dev/test_worktree.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/install/__init__.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/install/test_extras.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/memory/__init__.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/memory/test_api_health.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/memory/test_api_integration_liveish.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/memory/test_client.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/memory/test_files.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/memory/test_filters.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/memory/test_git_integration.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/memory/test_indexer.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/memory/test_memory_integration.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/memory/test_proxy_passthrough.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/memory/test_store.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/memory/test_utils.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/mocks/__init__.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/mocks/audio.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/mocks/llm.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/mocks/wyoming.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/rag/__init__.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/rag/test_api.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/rag/test_engine.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/rag/test_history.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/rag/test_indexer.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/rag/test_indexing.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/rag/test_rag_client.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/rag/test_rag_integration_liveish.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/rag/test_rag_proxy_passthrough.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/rag/test_retriever.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/rag/test_utils.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/test_api.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/test_api_integration.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/test_asr.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/test_asr_recovery.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/test_audio_e2e.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/test_config.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/test_config_cmd.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/test_docs_gen.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/test_env_vars.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/test_json_output.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/test_llm.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/test_llm_gemini.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/test_memory_tools.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/test_mlx_backend.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/test_process_manager.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/test_server_streaming.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/test_server_tts.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/test_server_whisper.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/test_services.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/test_tools.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/test_tts.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/test_utils.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/test_wake_word.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/tests/test_wyoming_utils.py +0 -0
- {agent_cli-0.68.5 → agent_cli-0.69.1}/zensical.toml +0 -0
{agent_cli-0.68.5/agent_cli/dev/skill → agent_cli-0.69.1/.claude/skills/agent-cli-dev}/SKILL.md
RENAMED
|
@@ -34,14 +34,19 @@ Do NOT spawn when:
|
|
|
34
34
|
|
|
35
35
|
## Core command
|
|
36
36
|
|
|
37
|
-
For
|
|
37
|
+
For new features (starts from origin/main):
|
|
38
38
|
```bash
|
|
39
|
-
agent-cli dev new <branch-name> --agent --prompt "
|
|
39
|
+
agent-cli dev new <branch-name> --agent --prompt "Implement the new feature..."
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
For work on current branch (review, test, fix) - use `--from HEAD`:
|
|
43
|
+
```bash
|
|
44
|
+
agent-cli dev new <branch-name> --from HEAD --agent --prompt "Review/test/fix..."
|
|
40
45
|
```
|
|
41
46
|
|
|
42
47
|
For longer prompts (recommended for multi-line or complex instructions):
|
|
43
48
|
```bash
|
|
44
|
-
agent-cli dev new <branch-name> --agent --prompt-file path/to/prompt.md
|
|
49
|
+
agent-cli dev new <branch-name> --from HEAD --agent --prompt-file path/to/prompt.md
|
|
45
50
|
```
|
|
46
51
|
|
|
47
52
|
This creates:
|
|
@@ -129,7 +134,7 @@ Each agent works independently in its own branch. Results can be reviewed and me
|
|
|
129
134
|
| `--agent` / `-a` | Start AI coding agent after creation |
|
|
130
135
|
| `--prompt` / `-p` | Initial prompt for the agent (short prompts only) |
|
|
131
136
|
| `--prompt-file` / `-P` | Read prompt from file (recommended for longer prompts) |
|
|
132
|
-
| `--from` / `-f` | Base
|
|
137
|
+
| `--from` / `-f` | Base ref (default: origin/main). **Use `--from HEAD` when reviewing/testing current branch!** |
|
|
133
138
|
| `--with-agent` | Specific agent: claude, aider, codex, gemini |
|
|
134
139
|
| `--agent-args` | Extra arguments for the agent |
|
|
135
140
|
|
|
@@ -20,7 +20,68 @@ Each prompt for a spawned agent should follow this structure:
|
|
|
20
20
|
5. **Focused scope** - Keep solutions minimal, implement only what's requested
|
|
21
21
|
6. **Structured report** - Write conclusions to `.claude/REPORT.md`
|
|
22
22
|
|
|
23
|
-
## Scenario 1:
|
|
23
|
+
## Scenario 1: Code review of current branch
|
|
24
|
+
|
|
25
|
+
**User request**: "Review the code on this branch" or "Spawn an agent to review my changes"
|
|
26
|
+
|
|
27
|
+
**CRITICAL**: Use `--from HEAD` (or the branch name) so the review agent has access to the changes!
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# Review the current branch - MUST use --from HEAD
|
|
31
|
+
agent-cli dev new review-changes --from HEAD --agent --prompt "Review the code changes on this branch.
|
|
32
|
+
|
|
33
|
+
<workflow>
|
|
34
|
+
- Run git diff origin/main...HEAD to identify all changes
|
|
35
|
+
- Read changed files in parallel to understand context
|
|
36
|
+
- Check CLAUDE.md for project-specific guidelines
|
|
37
|
+
- Test changes with real services if applicable
|
|
38
|
+
</workflow>
|
|
39
|
+
|
|
40
|
+
<code_exploration>
|
|
41
|
+
- Use git diff origin/main...HEAD to see the full diff
|
|
42
|
+
- Read each changed file completely before judging
|
|
43
|
+
- Look at surrounding code to understand patterns
|
|
44
|
+
- Check existing tests to understand expected behavior
|
|
45
|
+
</code_exploration>
|
|
46
|
+
|
|
47
|
+
<context>
|
|
48
|
+
Code review catches issues before merge. Focus on real problems - not style nitpicks. Apply these criteria:
|
|
49
|
+
- Code cleanliness: Is the implementation clean and well-structured?
|
|
50
|
+
- DRY principle: Does it avoid duplication?
|
|
51
|
+
- Code reuse: Are there parts that should be reused from other places?
|
|
52
|
+
- Organization: Is everything in the right place?
|
|
53
|
+
- Consistency: Is it in the same style as other parts of the codebase?
|
|
54
|
+
- Simplicity: Is it over-engineered? Remember KISS and YAGNI. No dead code paths, no defensive programming.
|
|
55
|
+
- No pointless wrappers: Functions that just call another function should be inlined.
|
|
56
|
+
- User experience: Does it provide a good user experience?
|
|
57
|
+
- Tests: Are tests meaningful or just trivial coverage?
|
|
58
|
+
- Live tests: Test changes with real services if applicable.
|
|
59
|
+
- Rules: Does the code follow CLAUDE.md guidelines?
|
|
60
|
+
</context>
|
|
61
|
+
|
|
62
|
+
<scope>
|
|
63
|
+
Review only - identify issues but do not fix them. Write findings to report.
|
|
64
|
+
</scope>
|
|
65
|
+
|
|
66
|
+
<report>
|
|
67
|
+
Write your review to .claude/REPORT.md:
|
|
68
|
+
|
|
69
|
+
## Summary
|
|
70
|
+
[Overall assessment of the changes]
|
|
71
|
+
|
|
72
|
+
## Issues Found
|
|
73
|
+
| Severity | File:Line | Issue | Suggestion |
|
|
74
|
+
|----------|-----------|-------|------------|
|
|
75
|
+
| Critical/High/Medium/Low | path:123 | description | fix |
|
|
76
|
+
|
|
77
|
+
## Positive Observations
|
|
78
|
+
[What's well done]
|
|
79
|
+
</report>"
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Common mistake**: Forgetting `--from HEAD` means the agent starts from `origin/main` and won't see any of the branch changes!
|
|
83
|
+
|
|
84
|
+
## Scenario 2: Multi-feature implementation
|
|
24
85
|
|
|
25
86
|
**User request**: "Implement user auth, payment processing, and email notifications"
|
|
26
87
|
|
|
@@ -169,7 +230,7 @@ After verifying tests pass, write to .claude/REPORT.md with summary, files chang
|
|
|
169
230
|
</report>"
|
|
170
231
|
```
|
|
171
232
|
|
|
172
|
-
## Scenario
|
|
233
|
+
## Scenario 3: Test-driven development
|
|
173
234
|
|
|
174
235
|
**User request**: "Add a caching layer with comprehensive tests"
|
|
175
236
|
|
|
@@ -289,7 +350,7 @@ After ALL tests pass, write to .claude/REPORT.md:
|
|
|
289
350
|
</report>"
|
|
290
351
|
```
|
|
291
352
|
|
|
292
|
-
## Scenario
|
|
353
|
+
## Scenario 4: Large refactoring by module
|
|
293
354
|
|
|
294
355
|
**User request**: "Refactor the API to use consistent error handling"
|
|
295
356
|
|
|
@@ -357,7 +418,7 @@ After tests pass and linting is clean, write to .claude/REPORT.md:
|
|
|
357
418
|
</report>"
|
|
358
419
|
```
|
|
359
420
|
|
|
360
|
-
## Scenario
|
|
421
|
+
## Scenario 5: Documentation and implementation in parallel
|
|
361
422
|
|
|
362
423
|
**User request**: "Add a plugin system with documentation"
|
|
363
424
|
|
|
@@ -34,14 +34,19 @@ Do NOT spawn when:
|
|
|
34
34
|
|
|
35
35
|
## Core command
|
|
36
36
|
|
|
37
|
-
For
|
|
37
|
+
For new features (starts from origin/main):
|
|
38
38
|
```bash
|
|
39
|
-
agent-cli dev new <branch-name> --agent --prompt "
|
|
39
|
+
agent-cli dev new <branch-name> --agent --prompt "Implement the new feature..."
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
For work on current branch (review, test, fix) - use `--from HEAD`:
|
|
43
|
+
```bash
|
|
44
|
+
agent-cli dev new <branch-name> --from HEAD --agent --prompt "Review/test/fix..."
|
|
40
45
|
```
|
|
41
46
|
|
|
42
47
|
For longer prompts (recommended for multi-line or complex instructions):
|
|
43
48
|
```bash
|
|
44
|
-
agent-cli dev new <branch-name> --agent --prompt-file path/to/prompt.md
|
|
49
|
+
agent-cli dev new <branch-name> --from HEAD --agent --prompt-file path/to/prompt.md
|
|
45
50
|
```
|
|
46
51
|
|
|
47
52
|
This creates:
|
|
@@ -129,7 +134,7 @@ Each agent works independently in its own branch. Results can be reviewed and me
|
|
|
129
134
|
| `--agent` / `-a` | Start AI coding agent after creation |
|
|
130
135
|
| `--prompt` / `-p` | Initial prompt for the agent (short prompts only) |
|
|
131
136
|
| `--prompt-file` / `-P` | Read prompt from file (recommended for longer prompts) |
|
|
132
|
-
| `--from` / `-f` | Base
|
|
137
|
+
| `--from` / `-f` | Base ref (default: origin/main). **Use `--from HEAD` when reviewing/testing current branch!** |
|
|
133
138
|
| `--with-agent` | Specific agent: claude, aider, codex, gemini |
|
|
134
139
|
| `--agent-args` | Extra arguments for the agent |
|
|
135
140
|
|
|
@@ -20,7 +20,68 @@ Each prompt for a spawned agent should follow this structure:
|
|
|
20
20
|
5. **Focused scope** - Keep solutions minimal, implement only what's requested
|
|
21
21
|
6. **Structured report** - Write conclusions to `.claude/REPORT.md`
|
|
22
22
|
|
|
23
|
-
## Scenario 1:
|
|
23
|
+
## Scenario 1: Code review of current branch
|
|
24
|
+
|
|
25
|
+
**User request**: "Review the code on this branch" or "Spawn an agent to review my changes"
|
|
26
|
+
|
|
27
|
+
**CRITICAL**: Use `--from HEAD` (or the branch name) so the review agent has access to the changes!
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# Review the current branch - MUST use --from HEAD
|
|
31
|
+
agent-cli dev new review-changes --from HEAD --agent --prompt "Review the code changes on this branch.
|
|
32
|
+
|
|
33
|
+
<workflow>
|
|
34
|
+
- Run git diff origin/main...HEAD to identify all changes
|
|
35
|
+
- Read changed files in parallel to understand context
|
|
36
|
+
- Check CLAUDE.md for project-specific guidelines
|
|
37
|
+
- Test changes with real services if applicable
|
|
38
|
+
</workflow>
|
|
39
|
+
|
|
40
|
+
<code_exploration>
|
|
41
|
+
- Use git diff origin/main...HEAD to see the full diff
|
|
42
|
+
- Read each changed file completely before judging
|
|
43
|
+
- Look at surrounding code to understand patterns
|
|
44
|
+
- Check existing tests to understand expected behavior
|
|
45
|
+
</code_exploration>
|
|
46
|
+
|
|
47
|
+
<context>
|
|
48
|
+
Code review catches issues before merge. Focus on real problems - not style nitpicks. Apply these criteria:
|
|
49
|
+
- Code cleanliness: Is the implementation clean and well-structured?
|
|
50
|
+
- DRY principle: Does it avoid duplication?
|
|
51
|
+
- Code reuse: Are there parts that should be reused from other places?
|
|
52
|
+
- Organization: Is everything in the right place?
|
|
53
|
+
- Consistency: Is it in the same style as other parts of the codebase?
|
|
54
|
+
- Simplicity: Is it over-engineered? Remember KISS and YAGNI. No dead code paths, no defensive programming.
|
|
55
|
+
- No pointless wrappers: Functions that just call another function should be inlined.
|
|
56
|
+
- User experience: Does it provide a good user experience?
|
|
57
|
+
- Tests: Are tests meaningful or just trivial coverage?
|
|
58
|
+
- Live tests: Test changes with real services if applicable.
|
|
59
|
+
- Rules: Does the code follow CLAUDE.md guidelines?
|
|
60
|
+
</context>
|
|
61
|
+
|
|
62
|
+
<scope>
|
|
63
|
+
Review only - identify issues but do not fix them. Write findings to report.
|
|
64
|
+
</scope>
|
|
65
|
+
|
|
66
|
+
<report>
|
|
67
|
+
Write your review to .claude/REPORT.md:
|
|
68
|
+
|
|
69
|
+
## Summary
|
|
70
|
+
[Overall assessment of the changes]
|
|
71
|
+
|
|
72
|
+
## Issues Found
|
|
73
|
+
| Severity | File:Line | Issue | Suggestion |
|
|
74
|
+
|----------|-----------|-------|------------|
|
|
75
|
+
| Critical/High/Medium/Low | path:123 | description | fix |
|
|
76
|
+
|
|
77
|
+
## Positive Observations
|
|
78
|
+
[What's well done]
|
|
79
|
+
</report>"
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Common mistake**: Forgetting `--from HEAD` means the agent starts from `origin/main` and won't see any of the branch changes!
|
|
83
|
+
|
|
84
|
+
## Scenario 2: Multi-feature implementation
|
|
24
85
|
|
|
25
86
|
**User request**: "Implement user auth, payment processing, and email notifications"
|
|
26
87
|
|
|
@@ -169,7 +230,7 @@ After verifying tests pass, write to .claude/REPORT.md with summary, files chang
|
|
|
169
230
|
</report>"
|
|
170
231
|
```
|
|
171
232
|
|
|
172
|
-
## Scenario
|
|
233
|
+
## Scenario 3: Test-driven development
|
|
173
234
|
|
|
174
235
|
**User request**: "Add a caching layer with comprehensive tests"
|
|
175
236
|
|
|
@@ -289,7 +350,7 @@ After ALL tests pass, write to .claude/REPORT.md:
|
|
|
289
350
|
</report>"
|
|
290
351
|
```
|
|
291
352
|
|
|
292
|
-
## Scenario
|
|
353
|
+
## Scenario 4: Large refactoring by module
|
|
293
354
|
|
|
294
355
|
**User request**: "Refactor the API to use consistent error handling"
|
|
295
356
|
|
|
@@ -357,7 +418,7 @@ After tests pass and linting is clean, write to .claude/REPORT.md:
|
|
|
357
418
|
</report>"
|
|
358
419
|
```
|
|
359
420
|
|
|
360
|
-
## Scenario
|
|
421
|
+
## Scenario 5: Documentation and implementation in parallel
|
|
361
422
|
|
|
362
423
|
**User request**: "Add a plugin system with documentation"
|
|
363
424
|
|
|
@@ -12,7 +12,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
|
|
12
12
|
- Run `pre-commit run --all-files` before committing
|
|
13
13
|
- Use `git add <specific-file>` not `git add .`
|
|
14
14
|
- CLI help in README.md is auto-generated - don't edit manually
|
|
15
|
-
- Keep CLI startup fast (<300ms) - use top-level imports by default,
|
|
15
|
+
- Keep CLI startup fast (<300ms) - use top-level imports by default for first-party and stdlib imports, use lazy imports for ALL 3rd party dependencies (except pydantic, typer, and rich)
|
|
16
16
|
- External library assumptions (especially in `dev` command for terminals/editors/agents) must be backed by evidence (official docs, man pages, source code). Document evidence in test docstrings that also verify the implementation.
|
|
17
17
|
- Private functions (`_name`) don't need parameter documentation in docstrings - a one-line description is sufficient
|
|
18
18
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.69.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>
|
|
@@ -21,9 +21,10 @@ Requires-Dist: sounddevice>=0.4.6; extra == 'audio'
|
|
|
21
21
|
Requires-Dist: wyoming>=1.5.2; extra == 'audio'
|
|
22
22
|
Provides-Extra: dev
|
|
23
23
|
Requires-Dist: markdown-code-runner>=2.7.0; extra == 'dev'
|
|
24
|
+
Requires-Dist: markdown-gfm-admonition; extra == 'dev'
|
|
24
25
|
Requires-Dist: notebook; extra == 'dev'
|
|
26
|
+
Requires-Dist: pre-commit-uv>=4.1.4; extra == 'dev'
|
|
25
27
|
Requires-Dist: pre-commit>=3.0.0; extra == 'dev'
|
|
26
|
-
Requires-Dist: pydantic-ai-slim[openai]; extra == 'dev'
|
|
27
28
|
Requires-Dist: pylint>=3.0.0; extra == 'dev'
|
|
28
29
|
Requires-Dist: pytest-asyncio>=0.20.0; extra == 'dev'
|
|
29
30
|
Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
|
|
@@ -32,6 +33,7 @@ Requires-Dist: pytest-timeout; extra == 'dev'
|
|
|
32
33
|
Requires-Dist: pytest>=7.0.0; extra == 'dev'
|
|
33
34
|
Requires-Dist: ruff; extra == 'dev'
|
|
34
35
|
Requires-Dist: versioningit; extra == 'dev'
|
|
36
|
+
Requires-Dist: zensical; extra == 'dev'
|
|
35
37
|
Provides-Extra: faster-whisper
|
|
36
38
|
Requires-Dist: fastapi[standard]; extra == 'faster-whisper'
|
|
37
39
|
Requires-Dist: faster-whisper>=1.0.0; extra == 'faster-whisper'
|
|
@@ -71,7 +73,6 @@ Requires-Dist: fastapi[standard]; extra == 'server'
|
|
|
71
73
|
Provides-Extra: speed
|
|
72
74
|
Requires-Dist: audiostretchy>=1.3.0; extra == 'speed'
|
|
73
75
|
Provides-Extra: test
|
|
74
|
-
Requires-Dist: pydantic-ai-slim[openai]; extra == 'test'
|
|
75
76
|
Requires-Dist: pytest-asyncio>=0.20.0; extra == 'test'
|
|
76
77
|
Requires-Dist: pytest-cov>=4.0.0; extra == 'test'
|
|
77
78
|
Requires-Dist: pytest-mock; extra == 'test'
|
|
@@ -497,9 +498,12 @@ agent-cli install-extras rag memory vad
|
|
|
497
498
|
|
|
498
499
|
Install optional extras (rag, memory, vad, etc.) with pinned versions.
|
|
499
500
|
|
|
500
|
-
Examples:
|
|
501
|
-
|
|
502
|
-
|
|
501
|
+
Examples:
|
|
502
|
+
|
|
503
|
+
• agent-cli install-extras rag # Install RAG dependencies
|
|
504
|
+
• agent-cli install-extras memory vad # Install multiple extras
|
|
505
|
+
• agent-cli install-extras --list # Show available extras
|
|
506
|
+
• agent-cli install-extras --all # Install all extras
|
|
503
507
|
|
|
504
508
|
╭─ Arguments ────────────────────────────────────────────────────────────────────────────╮
|
|
505
509
|
│ extras [EXTRAS]... Extras to install │
|
|
@@ -414,9 +414,12 @@ agent-cli install-extras rag memory vad
|
|
|
414
414
|
|
|
415
415
|
Install optional extras (rag, memory, vad, etc.) with pinned versions.
|
|
416
416
|
|
|
417
|
-
Examples:
|
|
418
|
-
|
|
419
|
-
|
|
417
|
+
Examples:
|
|
418
|
+
|
|
419
|
+
• agent-cli install-extras rag # Install RAG dependencies
|
|
420
|
+
• agent-cli install-extras memory vad # Install multiple extras
|
|
421
|
+
• agent-cli install-extras --list # Show available extras
|
|
422
|
+
• agent-cli install-extras --all # Install all extras
|
|
420
423
|
|
|
421
424
|
╭─ Arguments ────────────────────────────────────────────────────────────────────────────╮
|
|
422
425
|
│ extras [EXTRAS]... Extras to install │
|
|
@@ -9,7 +9,6 @@ import sys
|
|
|
9
9
|
import time
|
|
10
10
|
from typing import TYPE_CHECKING
|
|
11
11
|
|
|
12
|
-
import pyperclip
|
|
13
12
|
import typer
|
|
14
13
|
|
|
15
14
|
from agent_cli import config, opts
|
|
@@ -118,6 +117,8 @@ def _display_result(
|
|
|
118
117
|
) -> None:
|
|
119
118
|
"""Handle output and clipboard copying based on desired verbosity."""
|
|
120
119
|
if clipboard:
|
|
120
|
+
import pyperclip # noqa: PLC0415
|
|
121
|
+
|
|
121
122
|
pyperclip.copy(corrected_text)
|
|
122
123
|
|
|
123
124
|
if simple_output:
|
|
@@ -11,7 +11,7 @@ from rich.logging import RichHandler
|
|
|
11
11
|
from agent_cli import constants, opts
|
|
12
12
|
from agent_cli.agents.memory import memory_app
|
|
13
13
|
from agent_cli.core.deps import requires_extras
|
|
14
|
-
from agent_cli.core.utils import console, print_command_line_args
|
|
14
|
+
from agent_cli.core.utils import console, print_command_line_args
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
@memory_app.command("proxy")
|
|
@@ -105,17 +105,10 @@ def proxy(
|
|
|
105
105
|
if print_args:
|
|
106
106
|
print_command_line_args(locals())
|
|
107
107
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
from agent_cli.memory.api import create_app # noqa: PLC0415
|
|
113
|
-
except ImportError as exc:
|
|
114
|
-
print_error_message(
|
|
115
|
-
"Memory dependencies are not installed. Please install with "
|
|
116
|
-
"`pip install agent-cli[memory]` or `uv sync --extra memory`.",
|
|
117
|
-
)
|
|
118
|
-
raise typer.Exit(1) from exc
|
|
108
|
+
import uvicorn # noqa: PLC0415
|
|
109
|
+
|
|
110
|
+
from agent_cli.memory._files import ensure_store_dirs # noqa: PLC0415
|
|
111
|
+
from agent_cli.memory.api import create_app # noqa: PLC0415
|
|
119
112
|
|
|
120
113
|
logging.basicConfig(
|
|
121
114
|
level=log_level.upper(),
|
|
@@ -77,16 +77,9 @@ def rag_proxy(
|
|
|
77
77
|
logging.getLogger("chromadb").setLevel(logging.WARNING)
|
|
78
78
|
logging.getLogger("uvicorn.access").setLevel(logging.WARNING)
|
|
79
79
|
|
|
80
|
-
|
|
81
|
-
import uvicorn # noqa: PLC0415
|
|
80
|
+
import uvicorn # noqa: PLC0415
|
|
82
81
|
|
|
83
|
-
|
|
84
|
-
except ImportError as exc:
|
|
85
|
-
print_error_message(
|
|
86
|
-
"RAG dependencies are not installed. Please install with "
|
|
87
|
-
"`pip install agent-cli[rag]` or `uv sync --extra rag`.",
|
|
88
|
-
)
|
|
89
|
-
raise typer.Exit(1) from exc
|
|
82
|
+
from agent_cli.rag.api import create_app # noqa: PLC0415
|
|
90
83
|
|
|
91
84
|
docs_folder = docs_folder.resolve()
|
|
92
85
|
chroma_path = chroma_path.resolve()
|
|
@@ -12,7 +12,6 @@ from datetime import UTC, datetime, timedelta
|
|
|
12
12
|
from pathlib import Path # noqa: TC003
|
|
13
13
|
from typing import Any, TypedDict
|
|
14
14
|
|
|
15
|
-
import pyperclip
|
|
16
15
|
import typer
|
|
17
16
|
|
|
18
17
|
from agent_cli import config, opts
|
|
@@ -364,6 +363,8 @@ async def _async_main( # noqa: PLR0912, PLR0915, C901
|
|
|
364
363
|
)
|
|
365
364
|
clipboard_snapshot: str | None = None
|
|
366
365
|
if general_cfg.clipboard:
|
|
366
|
+
import pyperclip # noqa: PLC0415
|
|
367
|
+
|
|
367
368
|
clipboard_snapshot = pyperclip.paste()
|
|
368
369
|
pyperclip.copy(transcript)
|
|
369
370
|
LOGGER.info("Copied raw transcript to clipboard before LLM processing.")
|
|
@@ -445,6 +446,8 @@ async def _async_main( # noqa: PLR0912, PLR0915, C901
|
|
|
445
446
|
)
|
|
446
447
|
|
|
447
448
|
if general_cfg.clipboard:
|
|
449
|
+
import pyperclip # noqa: PLC0415
|
|
450
|
+
|
|
448
451
|
pyperclip.copy(transcript)
|
|
449
452
|
LOGGER.info("Copied transcript to clipboard.")
|
|
450
453
|
else:
|
|
@@ -2,9 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
import sys
|
|
6
|
+
from pathlib import Path
|
|
5
7
|
from typing import Annotated
|
|
6
8
|
|
|
7
9
|
import typer
|
|
10
|
+
from rich.table import Table
|
|
8
11
|
|
|
9
12
|
from . import __version__
|
|
10
13
|
from .config import load_config, normalize_provider_defaults
|
|
@@ -14,15 +17,28 @@ from .core.utils import console
|
|
|
14
17
|
app = typer.Typer(
|
|
15
18
|
name="agent-cli",
|
|
16
19
|
help="A suite of AI-powered command-line tools for text correction, audio transcription, and voice assistance.",
|
|
17
|
-
add_completion=True,
|
|
18
20
|
context_settings={"help_option_names": ["-h", "--help"]},
|
|
21
|
+
add_completion=True,
|
|
19
22
|
rich_markup_mode="markdown",
|
|
23
|
+
no_args_is_help=True,
|
|
20
24
|
)
|
|
21
25
|
|
|
22
26
|
|
|
23
27
|
def _version_callback(value: bool) -> None:
|
|
24
28
|
if value:
|
|
25
|
-
|
|
29
|
+
path = Path(__file__).parent
|
|
30
|
+
data = [
|
|
31
|
+
("agent-cli version", __version__),
|
|
32
|
+
("agent-cli location", str(path)),
|
|
33
|
+
("Python version", sys.version),
|
|
34
|
+
("Python executable", sys.executable),
|
|
35
|
+
]
|
|
36
|
+
table = Table(show_header=False)
|
|
37
|
+
table.add_column("Property", style="cyan")
|
|
38
|
+
table.add_column("Value", style="magenta")
|
|
39
|
+
for prop, val in data:
|
|
40
|
+
table.add_row(prop, val)
|
|
41
|
+
console.print(table)
|
|
26
42
|
raise typer.Exit
|
|
27
43
|
|
|
28
44
|
|
|
@@ -4,10 +4,6 @@ from __future__ import annotations
|
|
|
4
4
|
|
|
5
5
|
from typing import TYPE_CHECKING, Any
|
|
6
6
|
|
|
7
|
-
import chromadb
|
|
8
|
-
from chromadb.config import Settings
|
|
9
|
-
from chromadb.utils import embedding_functions
|
|
10
|
-
|
|
11
7
|
from agent_cli.constants import DEFAULT_OPENAI_EMBEDDING_MODEL
|
|
12
8
|
|
|
13
9
|
if TYPE_CHECKING:
|
|
@@ -28,6 +24,10 @@ def init_collection(
|
|
|
28
24
|
subdir: str | None = None,
|
|
29
25
|
) -> Collection:
|
|
30
26
|
"""Initialize a Chroma collection with OpenAI-compatible embeddings."""
|
|
27
|
+
import chromadb # noqa: PLC0415
|
|
28
|
+
from chromadb.config import Settings # noqa: PLC0415
|
|
29
|
+
from chromadb.utils import embedding_functions # noqa: PLC0415
|
|
30
|
+
|
|
31
31
|
target_path = persistence_path / subdir if subdir else persistence_path
|
|
32
32
|
target_path.mkdir(parents=True, exist_ok=True)
|
|
33
33
|
client = chromadb.PersistentClient(
|
|
@@ -142,7 +142,7 @@ def _try_auto_install(missing: list[str]) -> bool:
|
|
|
142
142
|
console.print(
|
|
143
143
|
f"[yellow]Auto-installing missing extras: {', '.join(extras_to_install)}[/]",
|
|
144
144
|
)
|
|
145
|
-
return install_extras_programmatic(extras_to_install)
|
|
145
|
+
return install_extras_programmatic(extras_to_install, quiet=True)
|
|
146
146
|
|
|
147
147
|
|
|
148
148
|
def _check_and_install_extras(extras: tuple[str, ...]) -> list[str]:
|
|
@@ -6,13 +6,11 @@ import json
|
|
|
6
6
|
import logging
|
|
7
7
|
from typing import TYPE_CHECKING, Any, Protocol, runtime_checkable
|
|
8
8
|
|
|
9
|
-
import httpx
|
|
10
|
-
from fastapi import HTTPException, Request, Response
|
|
11
|
-
from fastapi.responses import StreamingResponse
|
|
12
|
-
|
|
13
9
|
if TYPE_CHECKING:
|
|
14
10
|
from collections.abc import AsyncGenerator, Iterable
|
|
15
11
|
|
|
12
|
+
from fastapi import Request, Response
|
|
13
|
+
|
|
16
14
|
LOGGER = logging.getLogger(__name__)
|
|
17
15
|
|
|
18
16
|
|
|
@@ -33,6 +31,9 @@ async def proxy_request_to_upstream(
|
|
|
33
31
|
api_key: str | None = None,
|
|
34
32
|
) -> Response:
|
|
35
33
|
"""Forward a raw HTTP request to an upstream OpenAI-compatible provider."""
|
|
34
|
+
import httpx # noqa: PLC0415
|
|
35
|
+
from fastapi import Response # noqa: PLC0415
|
|
36
|
+
|
|
36
37
|
auth_header = request.headers.get("Authorization")
|
|
37
38
|
headers = {}
|
|
38
39
|
if auth_header:
|
|
@@ -82,6 +83,10 @@ async def forward_chat_request(
|
|
|
82
83
|
exclude_fields: Iterable[str] = (),
|
|
83
84
|
) -> Any:
|
|
84
85
|
"""Forward a chat request to a backend LLM."""
|
|
86
|
+
import httpx # noqa: PLC0415
|
|
87
|
+
from fastapi import HTTPException # noqa: PLC0415
|
|
88
|
+
from fastapi.responses import StreamingResponse # noqa: PLC0415
|
|
89
|
+
|
|
85
90
|
forward_payload = request.model_dump(exclude=set(exclude_fields))
|
|
86
91
|
headers = {"Authorization": f"Bearer {api_key}"} if api_key else None
|
|
87
92
|
|
|
@@ -10,8 +10,6 @@ from contextlib import contextmanager
|
|
|
10
10
|
from pathlib import Path
|
|
11
11
|
from typing import TYPE_CHECKING
|
|
12
12
|
|
|
13
|
-
import setproctitle
|
|
14
|
-
|
|
15
13
|
if TYPE_CHECKING:
|
|
16
14
|
from collections.abc import Generator
|
|
17
15
|
|
|
@@ -36,6 +34,8 @@ def set_process_title(process_name: str) -> None:
|
|
|
36
34
|
process_name: The name of the process (e.g., 'transcribe', 'chat').
|
|
37
35
|
|
|
38
36
|
"""
|
|
37
|
+
import setproctitle # noqa: PLC0415
|
|
38
|
+
|
|
39
39
|
global _original_proctitle
|
|
40
40
|
|
|
41
41
|
# Capture the original command line only once, before any modification
|
|
@@ -4,15 +4,13 @@ from __future__ import annotations
|
|
|
4
4
|
|
|
5
5
|
import logging
|
|
6
6
|
|
|
7
|
-
from huggingface_hub import hf_hub_download
|
|
8
|
-
from onnxruntime import InferenceSession
|
|
9
|
-
from transformers import AutoTokenizer
|
|
10
|
-
|
|
11
7
|
LOGGER = logging.getLogger(__name__)
|
|
12
8
|
|
|
13
9
|
|
|
14
10
|
def _download_onnx_model(model_name: str, onnx_filename: str) -> str:
|
|
15
11
|
"""Download the ONNX model, favoring the common `onnx/` folder layout."""
|
|
12
|
+
from huggingface_hub import hf_hub_download # noqa: PLC0415
|
|
13
|
+
|
|
16
14
|
if "/" in onnx_filename:
|
|
17
15
|
return hf_hub_download(repo_id=model_name, filename=onnx_filename)
|
|
18
16
|
|
|
@@ -45,6 +43,9 @@ class OnnxCrossEncoder:
|
|
|
45
43
|
onnx_filename: str = "model.onnx",
|
|
46
44
|
) -> None:
|
|
47
45
|
"""Initialize the ONNX CrossEncoder."""
|
|
46
|
+
from onnxruntime import InferenceSession # noqa: PLC0415
|
|
47
|
+
from transformers import AutoTokenizer # noqa: PLC0415
|
|
48
|
+
|
|
48
49
|
self.model_name = model_name
|
|
49
50
|
|
|
50
51
|
# Download model if needed
|
|
@@ -18,7 +18,6 @@ from contextlib import (
|
|
|
18
18
|
)
|
|
19
19
|
from typing import TYPE_CHECKING, Any
|
|
20
20
|
|
|
21
|
-
import pyperclip
|
|
22
21
|
from rich.console import Console
|
|
23
22
|
from rich.live import Live
|
|
24
23
|
from rich.panel import Panel
|
|
@@ -40,6 +39,7 @@ if TYPE_CHECKING:
|
|
|
40
39
|
from pathlib import Path
|
|
41
40
|
|
|
42
41
|
console = Console()
|
|
42
|
+
err_console = Console(stderr=True)
|
|
43
43
|
|
|
44
44
|
|
|
45
45
|
def enable_json_mode() -> None:
|
|
@@ -233,6 +233,8 @@ def print_device_index(input_device_index: int | None, input_device_name: str |
|
|
|
233
233
|
|
|
234
234
|
def get_clipboard_text(*, quiet: bool = False) -> str | None:
|
|
235
235
|
"""Get text from clipboard, with an optional status message."""
|
|
236
|
+
import pyperclip # noqa: PLC0415
|
|
237
|
+
|
|
236
238
|
text = pyperclip.paste()
|
|
237
239
|
if not text:
|
|
238
240
|
if not quiet:
|
|
@@ -12,7 +12,6 @@ from agent_cli import constants
|
|
|
12
12
|
try:
|
|
13
13
|
import numpy as np
|
|
14
14
|
import torch
|
|
15
|
-
from silero_vad.utils_vad import OnnxWrapper
|
|
16
15
|
except ImportError as e:
|
|
17
16
|
msg = (
|
|
18
17
|
"silero-vad is required for the transcribe-daemon command. "
|
|
@@ -57,6 +56,8 @@ class VoiceActivityDetector:
|
|
|
57
56
|
msg = f"Sample rate must be 8000 or 16000, got {sample_rate}"
|
|
58
57
|
raise ValueError(msg)
|
|
59
58
|
|
|
59
|
+
from silero_vad.utils_vad import OnnxWrapper # noqa: PLC0415
|
|
60
|
+
|
|
60
61
|
self.sample_rate = sample_rate
|
|
61
62
|
self.threshold = threshold
|
|
62
63
|
self.silence_threshold_ms = silence_threshold_ms
|