agent-cli 0.64.1__tar.gz → 0.65.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- agent_cli-0.65.0/.claude-plugin/marketplace.json +21 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/.claude-plugin/plugin.json +4 -1
- agent_cli-0.65.0/.github/workflows/docker.yml +142 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/PKG-INFO +27 -7
- {agent_cli-0.64.1 → agent_cli-0.65.0}/README.md +20 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/core/deps.py +0 -16
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/cli.py +1 -28
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docker/docker-compose.yml +21 -0
- agent_cli-0.65.0/docker/transcription-proxy.Dockerfile +51 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/commands/dev.md +11 -15
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/commands/server/transcription-proxy.md +23 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/installation/docker.md +19 -14
- {agent_cli-0.64.1 → agent_cli-0.65.0}/pyproject.toml +6 -10
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/dev/test_cli.py +0 -23
- agent_cli-0.64.1/.claude-plugin/marketplace.json +0 -8
- agent_cli-0.64.1/.github/workflows/docker-tts.yml +0 -72
- agent_cli-0.64.1/.github/workflows/docker-whisper.yml +0 -72
- {agent_cli-0.64.1 → agent_cli-0.65.0}/.claude/skills/agent-cli-dev/SKILL.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/.claude/skills/agent-cli-dev/examples.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/.claude-plugin/README.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/.claude-plugin/skills/agent-cli-dev/SKILL.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/.claude-plugin/skills/agent-cli-dev/examples.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/.cursorrules +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/.env.example +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/.github/logo.svg +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/.github/release-drafter.yml +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/.github/renovate.json +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/.github/workflows/automerge.yml +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/.github/workflows/docs.yml +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/.github/workflows/markdown-code-runner.yml +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/.github/workflows/pytest.yml +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/.github/workflows/release-drafter.yml +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/.github/workflows/release.yml +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/.github/workflows/toc.yaml +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/.gitignore +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/.jscpd.json +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/.pre-commit-config.yaml +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/.prompts/docs-review.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/.prompts/pr-review.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/CLAUDE.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/LICENSE +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/__init__.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/__main__.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/_tools.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/agents/__init__.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/agents/_voice_agent_common.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/agents/assistant.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/agents/autocorrect.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/agents/chat.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/agents/memory/__init__.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/agents/memory/add.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/agents/memory/proxy.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/agents/rag_proxy.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/agents/speak.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/agents/transcribe.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/agents/transcribe_daemon.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/agents/voice_edit.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/api.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/cli.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/config.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/config_cmd.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/constants.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/core/__init__.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/core/audio.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/core/audio_format.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/core/chroma.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/core/openai_proxy.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/core/process.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/core/reranker.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/core/sse.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/core/transcription_logger.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/core/utils.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/core/vad.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/core/watch.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/__init__.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/coding_agents/__init__.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/coding_agents/aider.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/coding_agents/base.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/coding_agents/claude.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/coding_agents/codex.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/coding_agents/continue_dev.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/coding_agents/copilot.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/coding_agents/cursor_agent.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/coding_agents/gemini.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/coding_agents/opencode.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/coding_agents/registry.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/editors/__init__.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/editors/base.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/editors/cursor.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/editors/emacs.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/editors/jetbrains.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/editors/nano.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/editors/neovim.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/editors/registry.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/editors/sublime.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/editors/vim.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/editors/vscode.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/editors/zed.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/project.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/registry.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/skill/SKILL.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/skill/examples.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/terminals/__init__.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/terminals/apple_terminal.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/terminals/base.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/terminals/gnome.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/terminals/iterm2.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/terminals/kitty.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/terminals/registry.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/terminals/tmux.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/terminals/warp.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/terminals/zellij.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/dev/worktree.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/docs_gen.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/example-config.toml +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/install/__init__.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/install/common.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/install/hotkeys.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/install/services.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/memory/__init__.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/memory/_files.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/memory/_filters.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/memory/_git.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/memory/_indexer.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/memory/_ingest.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/memory/_persistence.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/memory/_prompt.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/memory/_retrieval.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/memory/_store.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/memory/_streaming.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/memory/_tasks.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/memory/api.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/memory/client.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/memory/engine.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/memory/entities.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/memory/models.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/opts.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/py.typed +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/rag/__init__.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/rag/_indexer.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/rag/_indexing.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/rag/_prompt.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/rag/_retriever.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/rag/_store.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/rag/_utils.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/rag/api.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/rag/client.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/rag/engine.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/rag/models.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/.runtime/.gitkeep +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/__init__.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/check_plugin_skill_sync.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/linux-hotkeys/README.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/linux-hotkeys/toggle-voice-edit.sh +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/macos-hotkeys/README.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/macos-hotkeys/skhd-config-example +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/macos-hotkeys/toggle-autocorrect.sh +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/macos-hotkeys/toggle-transcription.sh +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/macos-hotkeys/toggle-voice-edit.sh +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/nvidia-asr-server/README.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/nvidia-asr-server/pyproject.toml +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/nvidia-asr-server/server.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/nvidia-asr-server/shell.nix +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/nvidia-asr-server/uv.lock +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/run-openwakeword.sh +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/run-piper-windows.ps1 +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/run-piper.sh +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/run-whisper-linux.sh +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/run-whisper-macos.sh +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/run-whisper-windows.ps1 +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/run-whisper.sh +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/run_faster_whisper_server.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/setup-linux-hotkeys.sh +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/setup-linux.sh +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/setup-macos-hotkeys.sh +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/setup-macos.sh +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/setup-windows.ps1 +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/start-all-services-windows.ps1 +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/scripts/start-all-services.sh +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/server/__init__.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/server/cli.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/server/common.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/server/model_manager.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/server/model_registry.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/server/proxy/__init__.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/server/proxy/api.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/server/streaming.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/server/tts/__init__.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/server/tts/api.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/server/tts/backends/__init__.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/server/tts/backends/base.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/server/tts/backends/kokoro.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/server/tts/backends/piper.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/server/tts/model_manager.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/server/tts/model_registry.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/server/tts/wyoming_handler.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/server/whisper/__init__.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/server/whisper/api.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/server/whisper/backends/__init__.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/server/whisper/backends/base.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/server/whisper/backends/faster_whisper.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/server/whisper/backends/mlx.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/server/whisper/languages.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/server/whisper/model_manager.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/server/whisper/model_registry.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/server/whisper/wyoming_handler.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/services/__init__.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/services/_wyoming_utils.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/services/asr.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/services/llm.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/services/tts.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/agent_cli/services/wake_word.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docker/tts.Dockerfile +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docker/whisper.Dockerfile +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/CNAME +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/architecture/index.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/architecture/memory.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/architecture/rag.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/commands/assistant.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/commands/autocorrect.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/commands/chat.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/commands/config.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/commands/index.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/commands/install-hotkeys.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/commands/install-services.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/commands/memory.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/commands/rag-proxy.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/commands/server/index.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/commands/server/tts.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/commands/server/whisper.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/commands/speak.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/commands/start-services.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/commands/transcribe-daemon.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/commands/transcribe.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/commands/voice-edit.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/configuration.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/getting-started.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/iOS_Shortcut_Guide.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/index.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/installation/index.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/installation/linux.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/installation/macos.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/installation/nixos.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/installation/windows.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/logo-clean.svg +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/run_markdown_code_runner.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/docs/system-integration.md +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/example.agent-cli-config.toml +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/justfile +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/shell.nix +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/__init__.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/agents/__init__.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/agents/test_fix_my_text.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/agents/test_interactive.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/agents/test_interactive_extra.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/agents/test_memory_add.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/agents/test_speak.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/agents/test_speak_e2e.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/agents/test_transcribe.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/agents/test_transcribe_agent.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/agents/test_transcribe_daemon.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/agents/test_transcribe_e2e.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/agents/test_transcribe_recovery.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/agents/test_tts_common.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/agents/test_tts_common_extra.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/agents/test_voice_agent_common.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/agents/test_voice_edit.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/agents/test_voice_edit_e2e.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/agents/test_wake_word_assistant.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/conftest.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/core/__init__.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/core/test_audio_format.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/core/test_chroma.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/core/test_sse.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/core/test_vad.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/core/test_watch.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/dev/__init__.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/dev/test_coding_agents.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/dev/test_editors.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/dev/test_project.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/dev/test_terminals.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/dev/test_verification.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/dev/test_worktree.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/memory/__init__.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/memory/test_api_health.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/memory/test_api_integration_liveish.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/memory/test_client.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/memory/test_engine.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/memory/test_files.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/memory/test_filters.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/memory/test_git_integration.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/memory/test_indexer.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/memory/test_memory_integration.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/memory/test_proxy_passthrough.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/memory/test_store.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/memory/test_utils.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/mocks/__init__.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/mocks/audio.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/mocks/llm.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/mocks/wyoming.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/rag/__init__.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/rag/test_api.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/rag/test_engine.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/rag/test_history.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/rag/test_indexer.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/rag/test_indexing.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/rag/test_rag_client.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/rag/test_rag_integration_liveish.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/rag/test_rag_proxy_passthrough.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/rag/test_retriever.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/rag/test_store.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/rag/test_utils.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/test_api.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/test_api_integration.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/test_asr.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/test_asr_recovery.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/test_audio_e2e.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/test_cli.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/test_config.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/test_config_cmd.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/test_docs_gen.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/test_env_vars.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/test_json_output.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/test_llm.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/test_llm_gemini.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/test_memory_tools.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/test_mlx_backend.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/test_process_manager.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/test_server_streaming.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/test_server_tts.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/test_server_whisper.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/test_services.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/test_tools.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/test_tts.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/test_utils.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/test_wake_word.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/tests/test_wyoming_utils.py +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/uv.lock +0 -0
- {agent_cli-0.64.1 → agent_cli-0.65.0}/zensical.toml +0 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "agent-cli",
|
|
3
|
+
"owner": {
|
|
4
|
+
"name": "Bas Nijholt",
|
|
5
|
+
"github": "basnijholt"
|
|
6
|
+
},
|
|
7
|
+
"metadata": {
|
|
8
|
+
"description": "Parallel development environment manager using git worktrees",
|
|
9
|
+
"repository": "https://github.com/basnijholt/agent-cli",
|
|
10
|
+
"homepage": "https://github.com/basnijholt/agent-cli",
|
|
11
|
+
"documentation": "https://github.com/basnijholt/agent-cli/blob/main/docs/commands/dev.md",
|
|
12
|
+
"keywords": ["git", "worktree", "parallel", "agents", "development", "claude", "ai"],
|
|
13
|
+
"license": "MIT"
|
|
14
|
+
},
|
|
15
|
+
"plugins": [
|
|
16
|
+
{
|
|
17
|
+
"name": "agent-cli-dev",
|
|
18
|
+
"source": "./.claude-plugin"
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-cli-dev",
|
|
3
3
|
"version": "1.0.0",
|
|
4
|
-
"author":
|
|
4
|
+
"author": {
|
|
5
|
+
"name": "Bas Nijholt",
|
|
6
|
+
"github": "basnijholt"
|
|
7
|
+
},
|
|
5
8
|
"description": "Spawn parallel AI coding agents in isolated git worktrees. Creates isolated development environments with automatic project setup, letting you work on multiple features simultaneously with different AI agents (Claude, Codex, Gemini, Aider).",
|
|
6
9
|
"skills": ["./skills/agent-cli-dev"]
|
|
7
10
|
}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
name: Publish Docker Images
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_run:
|
|
5
|
+
workflows: ["Upload Python Package"]
|
|
6
|
+
types: [completed]
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
env:
|
|
10
|
+
REGISTRY: ghcr.io
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
# Images with cuda/cpu targets (whisper, tts)
|
|
14
|
+
build-multi-target:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
if: ${{ github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' }}
|
|
17
|
+
permissions:
|
|
18
|
+
contents: read
|
|
19
|
+
packages: write
|
|
20
|
+
|
|
21
|
+
strategy:
|
|
22
|
+
matrix:
|
|
23
|
+
include:
|
|
24
|
+
- image: whisper
|
|
25
|
+
dockerfile: docker/whisper.Dockerfile
|
|
26
|
+
target: cuda
|
|
27
|
+
suffix: cuda
|
|
28
|
+
- image: whisper
|
|
29
|
+
dockerfile: docker/whisper.Dockerfile
|
|
30
|
+
target: cpu
|
|
31
|
+
suffix: cpu
|
|
32
|
+
- image: tts
|
|
33
|
+
dockerfile: docker/tts.Dockerfile
|
|
34
|
+
target: cuda
|
|
35
|
+
suffix: cuda
|
|
36
|
+
- image: tts
|
|
37
|
+
dockerfile: docker/tts.Dockerfile
|
|
38
|
+
target: cpu
|
|
39
|
+
suffix: cpu
|
|
40
|
+
|
|
41
|
+
steps:
|
|
42
|
+
- name: Checkout repository
|
|
43
|
+
uses: actions/checkout@v6
|
|
44
|
+
|
|
45
|
+
- name: Set up Docker Buildx
|
|
46
|
+
uses: docker/setup-buildx-action@v3
|
|
47
|
+
|
|
48
|
+
- name: Log in to Container Registry
|
|
49
|
+
uses: docker/login-action@v3
|
|
50
|
+
with:
|
|
51
|
+
registry: ${{ env.REGISTRY }}
|
|
52
|
+
username: ${{ github.actor }}
|
|
53
|
+
password: ${{ secrets.GITHUB_TOKEN }}
|
|
54
|
+
|
|
55
|
+
- name: Get version from trigger
|
|
56
|
+
id: version
|
|
57
|
+
run: |
|
|
58
|
+
if [[ "${{ github.event_name }}" == "workflow_run" ]]; then
|
|
59
|
+
# Extract version from release tag (v0.61.3 -> 0.61.3)
|
|
60
|
+
TAG="${{ github.event.workflow_run.head_branch }}"
|
|
61
|
+
echo "version=${TAG#v}" >> $GITHUB_OUTPUT
|
|
62
|
+
fi
|
|
63
|
+
|
|
64
|
+
- name: Extract metadata
|
|
65
|
+
id: meta
|
|
66
|
+
uses: docker/metadata-action@v5
|
|
67
|
+
with:
|
|
68
|
+
images: ${{ env.REGISTRY }}/${{ github.repository }}-${{ matrix.image }}
|
|
69
|
+
tags: |
|
|
70
|
+
type=raw,value=${{ steps.version.outputs.version }},suffix=-${{ matrix.suffix }},enable=${{ steps.version.outputs.version != '' }}
|
|
71
|
+
type=raw,value=latest,suffix=-${{ matrix.suffix }}
|
|
72
|
+
type=sha,suffix=-${{ matrix.suffix }}
|
|
73
|
+
|
|
74
|
+
- name: Build and push
|
|
75
|
+
uses: docker/build-push-action@v6
|
|
76
|
+
with:
|
|
77
|
+
context: .
|
|
78
|
+
file: ${{ matrix.dockerfile }}
|
|
79
|
+
target: ${{ matrix.target }}
|
|
80
|
+
push: true
|
|
81
|
+
tags: ${{ steps.meta.outputs.tags }}
|
|
82
|
+
labels: ${{ steps.meta.outputs.labels }}
|
|
83
|
+
cache-from: type=gha
|
|
84
|
+
cache-to: type=gha,mode=max
|
|
85
|
+
|
|
86
|
+
# Single-target images (transcription-proxy)
|
|
87
|
+
build-single-target:
|
|
88
|
+
runs-on: ubuntu-latest
|
|
89
|
+
if: ${{ github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' }}
|
|
90
|
+
permissions:
|
|
91
|
+
contents: read
|
|
92
|
+
packages: write
|
|
93
|
+
|
|
94
|
+
strategy:
|
|
95
|
+
matrix:
|
|
96
|
+
include:
|
|
97
|
+
- image: transcription-proxy
|
|
98
|
+
dockerfile: docker/transcription-proxy.Dockerfile
|
|
99
|
+
|
|
100
|
+
steps:
|
|
101
|
+
- name: Checkout repository
|
|
102
|
+
uses: actions/checkout@v6
|
|
103
|
+
|
|
104
|
+
- name: Set up Docker Buildx
|
|
105
|
+
uses: docker/setup-buildx-action@v3
|
|
106
|
+
|
|
107
|
+
- name: Log in to Container Registry
|
|
108
|
+
uses: docker/login-action@v3
|
|
109
|
+
with:
|
|
110
|
+
registry: ${{ env.REGISTRY }}
|
|
111
|
+
username: ${{ github.actor }}
|
|
112
|
+
password: ${{ secrets.GITHUB_TOKEN }}
|
|
113
|
+
|
|
114
|
+
- name: Get version from trigger
|
|
115
|
+
id: version
|
|
116
|
+
run: |
|
|
117
|
+
if [[ "${{ github.event_name }}" == "workflow_run" ]]; then
|
|
118
|
+
# Extract version from release tag (v0.61.3 -> 0.61.3)
|
|
119
|
+
TAG="${{ github.event.workflow_run.head_branch }}"
|
|
120
|
+
echo "version=${TAG#v}" >> $GITHUB_OUTPUT
|
|
121
|
+
fi
|
|
122
|
+
|
|
123
|
+
- name: Extract metadata
|
|
124
|
+
id: meta
|
|
125
|
+
uses: docker/metadata-action@v5
|
|
126
|
+
with:
|
|
127
|
+
images: ${{ env.REGISTRY }}/${{ github.repository }}-${{ matrix.image }}
|
|
128
|
+
tags: |
|
|
129
|
+
type=raw,value=${{ steps.version.outputs.version }},enable=${{ steps.version.outputs.version != '' }}
|
|
130
|
+
type=raw,value=latest
|
|
131
|
+
type=sha
|
|
132
|
+
|
|
133
|
+
- name: Build and push
|
|
134
|
+
uses: docker/build-push-action@v6
|
|
135
|
+
with:
|
|
136
|
+
context: .
|
|
137
|
+
file: ${{ matrix.dockerfile }}
|
|
138
|
+
push: true
|
|
139
|
+
tags: ${{ steps.meta.outputs.tags }}
|
|
140
|
+
labels: ${{ steps.meta.outputs.labels }}
|
|
141
|
+
cache-from: type=gha
|
|
142
|
+
cache-to: type=gha,mode=max
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.65.0
|
|
4
4
|
Summary: A suite of AI-powered command-line tools for text correction, audio transcription, and voice assistance.
|
|
5
5
|
Project-URL: Homepage, https://github.com/basnijholt/agent-cli
|
|
6
6
|
Author-email: Bas Nijholt <bas@nijho.lt>
|
|
@@ -33,19 +33,19 @@ Requires-Dist: pytest>=7.0.0; extra == 'dev'
|
|
|
33
33
|
Requires-Dist: ruff; extra == 'dev'
|
|
34
34
|
Requires-Dist: versioningit; extra == 'dev'
|
|
35
35
|
Provides-Extra: memory
|
|
36
|
-
Requires-Dist: chromadb>=0.4.22;
|
|
36
|
+
Requires-Dist: chromadb>=0.4.22; extra == 'memory'
|
|
37
37
|
Requires-Dist: fastapi[standard]; extra == 'memory'
|
|
38
38
|
Requires-Dist: huggingface-hub>=0.20.0; extra == 'memory'
|
|
39
|
-
Requires-Dist: onnxruntime>=1.17.0;
|
|
39
|
+
Requires-Dist: onnxruntime>=1.17.0; extra == 'memory'
|
|
40
40
|
Requires-Dist: pyyaml>=6.0.0; extra == 'memory'
|
|
41
41
|
Requires-Dist: transformers>=4.30.0; extra == 'memory'
|
|
42
42
|
Requires-Dist: watchfiles>=0.21.0; extra == 'memory'
|
|
43
43
|
Provides-Extra: rag
|
|
44
|
-
Requires-Dist: chromadb>=0.4.22;
|
|
44
|
+
Requires-Dist: chromadb>=0.4.22; extra == 'rag'
|
|
45
45
|
Requires-Dist: fastapi[standard]; extra == 'rag'
|
|
46
46
|
Requires-Dist: huggingface-hub>=0.20.0; extra == 'rag'
|
|
47
|
-
Requires-Dist: markitdown[docx,pdf,pptx]>=0.1.3;
|
|
48
|
-
Requires-Dist: onnxruntime>=1.17.0;
|
|
47
|
+
Requires-Dist: markitdown[docx,pdf,pptx]>=0.1.3; extra == 'rag'
|
|
48
|
+
Requires-Dist: onnxruntime>=1.17.0; extra == 'rag'
|
|
49
49
|
Requires-Dist: transformers>=4.30.0; extra == 'rag'
|
|
50
50
|
Requires-Dist: watchfiles>=0.21.0; extra == 'rag'
|
|
51
51
|
Provides-Extra: server
|
|
@@ -69,7 +69,7 @@ Requires-Dist: kokoro>=0.9.0; extra == 'tts-kokoro'
|
|
|
69
69
|
Requires-Dist: pip; extra == 'tts-kokoro'
|
|
70
70
|
Requires-Dist: soundfile>=0.12.0; extra == 'tts-kokoro'
|
|
71
71
|
Provides-Extra: vad
|
|
72
|
-
Requires-Dist: silero-vad>=5.1;
|
|
72
|
+
Requires-Dist: silero-vad>=5.1; extra == 'vad'
|
|
73
73
|
Provides-Extra: whisper
|
|
74
74
|
Requires-Dist: fastapi[standard]; extra == 'whisper'
|
|
75
75
|
Requires-Dist: faster-whisper>=1.0.0; extra == 'whisper'
|
|
@@ -220,6 +220,7 @@ The setup scripts automatically install:
|
|
|
220
220
|
- [System Integration](#system-integration)
|
|
221
221
|
- [macOS Hotkeys](#macos-hotkeys)
|
|
222
222
|
- [Linux Hotkeys](#linux-hotkeys)
|
|
223
|
+
- [Claude Code Plugin](#claude-code-plugin)
|
|
223
224
|
- [Prerequisites](#prerequisites)
|
|
224
225
|
- [What You Need to Install Manually](#what-you-need-to-install-manually)
|
|
225
226
|
- [What the Setup Scripts Install for You](#what-the-setup-scripts-install-for-you)
|
|
@@ -367,6 +368,25 @@ This script automatically:
|
|
|
367
368
|
|
|
368
369
|
The script supports Hyprland, GNOME, KDE, Sway, i3, XFCE, and provides instructions for manual configuration on other environments.
|
|
369
370
|
|
|
371
|
+
### Claude Code Plugin
|
|
372
|
+
|
|
373
|
+
The [`dev`](docs/commands/dev.md) command is also available as a **Claude Code plugin**, enabling Claude to automatically spawn parallel AI agents in isolated git worktrees when you ask it to work on multiple features.
|
|
374
|
+
|
|
375
|
+
```bash
|
|
376
|
+
# Option 1: Install skill directly in your project (recommended)
|
|
377
|
+
agent-cli dev install-skill
|
|
378
|
+
|
|
379
|
+
# Option 2: Install via Claude Code plugin marketplace
|
|
380
|
+
claude plugin marketplace add basnijholt/agent-cli
|
|
381
|
+
claude plugin install agent-cli@agent-cli-dev
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
Once installed, Claude Code can automatically use this skill when you ask to:
|
|
385
|
+
- "Work on these 3 features in parallel"
|
|
386
|
+
- "Spawn agents for auth and payments"
|
|
387
|
+
- "Delegate this refactoring to a separate agent"
|
|
388
|
+
|
|
389
|
+
See the [plugin documentation](.claude-plugin/README.md) for more details.
|
|
370
390
|
|
|
371
391
|
## Prerequisites
|
|
372
392
|
|
|
@@ -140,6 +140,7 @@ The setup scripts automatically install:
|
|
|
140
140
|
- [System Integration](#system-integration)
|
|
141
141
|
- [macOS Hotkeys](#macos-hotkeys)
|
|
142
142
|
- [Linux Hotkeys](#linux-hotkeys)
|
|
143
|
+
- [Claude Code Plugin](#claude-code-plugin)
|
|
143
144
|
- [Prerequisites](#prerequisites)
|
|
144
145
|
- [What You Need to Install Manually](#what-you-need-to-install-manually)
|
|
145
146
|
- [What the Setup Scripts Install for You](#what-the-setup-scripts-install-for-you)
|
|
@@ -287,6 +288,25 @@ This script automatically:
|
|
|
287
288
|
|
|
288
289
|
The script supports Hyprland, GNOME, KDE, Sway, i3, XFCE, and provides instructions for manual configuration on other environments.
|
|
289
290
|
|
|
291
|
+
### Claude Code Plugin
|
|
292
|
+
|
|
293
|
+
The [`dev`](docs/commands/dev.md) command is also available as a **Claude Code plugin**, enabling Claude to automatically spawn parallel AI agents in isolated git worktrees when you ask it to work on multiple features.
|
|
294
|
+
|
|
295
|
+
```bash
|
|
296
|
+
# Option 1: Install skill directly in your project (recommended)
|
|
297
|
+
agent-cli dev install-skill
|
|
298
|
+
|
|
299
|
+
# Option 2: Install via Claude Code plugin marketplace
|
|
300
|
+
claude plugin marketplace add basnijholt/agent-cli
|
|
301
|
+
claude plugin install agent-cli@agent-cli-dev
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
Once installed, Claude Code can automatically use this skill when you ask to:
|
|
305
|
+
- "Work on these 3 features in parallel"
|
|
306
|
+
- "Spawn agents for auth and payments"
|
|
307
|
+
- "Delegate this refactoring to a separate agent"
|
|
308
|
+
|
|
309
|
+
See the [plugin documentation](.claude-plugin/README.md) for more details.
|
|
290
310
|
|
|
291
311
|
## Prerequisites
|
|
292
312
|
|
|
@@ -2,12 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
import sys
|
|
6
5
|
from importlib.util import find_spec
|
|
7
6
|
|
|
8
|
-
# Dependencies that don't support Python 3.14 yet
|
|
9
|
-
_PYTHON_314_INCOMPATIBLE = {"chromadb", "onnxruntime"}
|
|
10
|
-
|
|
11
7
|
|
|
12
8
|
def ensure_optional_dependencies(
|
|
13
9
|
required: dict[str, str],
|
|
@@ -22,18 +18,6 @@ def ensure_optional_dependencies(
|
|
|
22
18
|
if not missing:
|
|
23
19
|
return
|
|
24
20
|
|
|
25
|
-
# Check if running on Python 3.14+ with incompatible dependencies
|
|
26
|
-
is_py314 = sys.version_info >= (3, 14)
|
|
27
|
-
incompatible = set(missing) & _PYTHON_314_INCOMPATIBLE
|
|
28
|
-
|
|
29
|
-
if is_py314 and incompatible:
|
|
30
|
-
msg = (
|
|
31
|
-
f"The '{extra_name}' feature requires {', '.join(sorted(incompatible))}, "
|
|
32
|
-
f"which {'does' if len(incompatible) == 1 else 'do'} not support Python 3.14 yet. "
|
|
33
|
-
f"Please use Python 3.13 or earlier for this feature."
|
|
34
|
-
)
|
|
35
|
-
raise ImportError(msg)
|
|
36
|
-
|
|
37
21
|
hint = install_hint or f"`pip install agent-cli[{extra_name}]`"
|
|
38
22
|
msg = f"Missing required dependencies for {extra_name}: {', '.join(missing)}. Please install with {hint}."
|
|
39
23
|
raise ImportError(msg)
|
|
@@ -673,10 +673,6 @@ def new( # noqa: PLR0912, PLR0915
|
|
|
673
673
|
|
|
674
674
|
@app.command("list")
|
|
675
675
|
def list_envs(
|
|
676
|
-
porcelain: Annotated[
|
|
677
|
-
bool,
|
|
678
|
-
typer.Option("--porcelain", "-p", help="Machine-readable output"),
|
|
679
|
-
] = False,
|
|
680
676
|
json_output: Annotated[
|
|
681
677
|
bool,
|
|
682
678
|
typer.Option("--json", help="Output as JSON for automation"),
|
|
@@ -710,11 +706,6 @@ def list_envs(
|
|
|
710
706
|
print(json.dumps({"worktrees": data}))
|
|
711
707
|
return
|
|
712
708
|
|
|
713
|
-
if porcelain:
|
|
714
|
-
for wt in worktrees:
|
|
715
|
-
print(f"{wt.path.as_posix()}\t{wt.branch or '(detached)'}")
|
|
716
|
-
return
|
|
717
|
-
|
|
718
709
|
table = Table(title="Dev Environments (Git Worktrees)")
|
|
719
710
|
table.add_column("Name", style="cyan")
|
|
720
711
|
table.add_column("Branch", style="green")
|
|
@@ -784,15 +775,11 @@ def _is_stale(status: worktree.WorktreeStatus, stale_days: int) -> bool:
|
|
|
784
775
|
|
|
785
776
|
|
|
786
777
|
@app.command("status")
|
|
787
|
-
def status_cmd( # noqa:
|
|
778
|
+
def status_cmd( # noqa: PLR0915
|
|
788
779
|
stale_days: Annotated[
|
|
789
780
|
int,
|
|
790
781
|
typer.Option("--stale-days", "-s", help="Highlight worktrees inactive for N+ days"),
|
|
791
782
|
] = 7,
|
|
792
|
-
porcelain: Annotated[
|
|
793
|
-
bool,
|
|
794
|
-
typer.Option("--porcelain", "-p", help="Machine-readable output"),
|
|
795
|
-
] = False,
|
|
796
783
|
json_output: Annotated[
|
|
797
784
|
bool,
|
|
798
785
|
typer.Option("--json", help="Output as JSON for automation"),
|
|
@@ -836,20 +823,6 @@ def status_cmd( # noqa: PLR0912, PLR0915
|
|
|
836
823
|
print(json.dumps({"worktrees": data, "stale_days": stale_days}))
|
|
837
824
|
return
|
|
838
825
|
|
|
839
|
-
if porcelain:
|
|
840
|
-
# Machine-readable: name\tbranch\tmodified\tstaged\tuntracked\tahead\tbehind\ttimestamp
|
|
841
|
-
for wt in worktrees:
|
|
842
|
-
status = worktree.get_worktree_status(wt.path)
|
|
843
|
-
if status:
|
|
844
|
-
print(
|
|
845
|
-
f"{wt.name}\t{wt.branch or ''}\t"
|
|
846
|
-
f"{status.modified}\t{status.staged}\t{status.untracked}\t"
|
|
847
|
-
f"{status.ahead}\t{status.behind}\t{status.last_commit_timestamp or ''}",
|
|
848
|
-
)
|
|
849
|
-
else:
|
|
850
|
-
print(f"{wt.name}\t{wt.branch or ''}\t\t\t\t\t\t")
|
|
851
|
-
return
|
|
852
|
-
|
|
853
826
|
table = Table(title="Dev Environment Status")
|
|
854
827
|
table.add_column("Name", style="cyan")
|
|
855
828
|
table.add_column("Branch", style="green")
|
|
@@ -27,6 +27,8 @@
|
|
|
27
27
|
# TTS_LOG_LEVEL - Logging level (default: info)
|
|
28
28
|
#
|
|
29
29
|
# OLLAMA_MODEL - Ollama model to pull on startup (default: gemma3:4b)
|
|
30
|
+
#
|
|
31
|
+
# PROXY_PORT - Transcription proxy port (default: 61337)
|
|
30
32
|
|
|
31
33
|
services:
|
|
32
34
|
# ===========================================================================
|
|
@@ -175,6 +177,25 @@ services:
|
|
|
175
177
|
- TTS_DEVICE=cpu
|
|
176
178
|
restart: unless-stopped
|
|
177
179
|
|
|
180
|
+
# ===========================================================================
|
|
181
|
+
# Transcription Proxy
|
|
182
|
+
# ===========================================================================
|
|
183
|
+
|
|
184
|
+
transcription-proxy:
|
|
185
|
+
image: ghcr.io/basnijholt/agent-cli-transcription-proxy:latest
|
|
186
|
+
build:
|
|
187
|
+
context: ..
|
|
188
|
+
dockerfile: docker/transcription-proxy.Dockerfile
|
|
189
|
+
profiles: [cuda, cpu]
|
|
190
|
+
ports:
|
|
191
|
+
- "61337:61337"
|
|
192
|
+
# volumes:
|
|
193
|
+
# - ./config.toml:/home/transcribe/.config/agent-cli/config.toml:ro
|
|
194
|
+
environment:
|
|
195
|
+
- PROXY_HOST=0.0.0.0
|
|
196
|
+
- PROXY_PORT=${PROXY_PORT:-61337}
|
|
197
|
+
restart: unless-stopped
|
|
198
|
+
|
|
178
199
|
volumes:
|
|
179
200
|
ollama-data:
|
|
180
201
|
name: agent-cli-ollama-data
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# syntax=docker/dockerfile:1
|
|
2
|
+
# Dockerfile for agent-cli Transcription Proxy server
|
|
3
|
+
# A lightweight proxy that forwards requests to configured ASR providers
|
|
4
|
+
#
|
|
5
|
+
# Build example:
|
|
6
|
+
# docker build -f docker/transcription-proxy.Dockerfile -t agent-cli-transcription-proxy .
|
|
7
|
+
#
|
|
8
|
+
# Run example:
|
|
9
|
+
# docker run -p 61337:61337 agent-cli-transcription-proxy
|
|
10
|
+
|
|
11
|
+
# Build stage - install with uv
|
|
12
|
+
FROM ghcr.io/astral-sh/uv:python3.13-bookworm-slim AS builder
|
|
13
|
+
|
|
14
|
+
# --refresh bypasses uv cache to ensure latest version from PyPI
|
|
15
|
+
RUN uv tool install --refresh --compile-bytecode "agent-cli[server]"
|
|
16
|
+
|
|
17
|
+
# Runtime stage - minimal image without uv
|
|
18
|
+
FROM python:3.13-slim
|
|
19
|
+
|
|
20
|
+
# Create non-root user with explicit UID:GID 1000:1000
|
|
21
|
+
RUN groupadd -g 1000 transcribe && useradd -m -u 1000 -g transcribe transcribe
|
|
22
|
+
|
|
23
|
+
# Copy installed tool virtualenv from builder (keep original path for shebang compatibility)
|
|
24
|
+
COPY --from=builder /root/.local/share/uv/tools/agent-cli /root/.local/share/uv/tools/agent-cli
|
|
25
|
+
|
|
26
|
+
# Make tool accessible to non-root users and create symlinks
|
|
27
|
+
RUN chmod 755 /root /root/.local /root/.local/share /root/.local/share/uv /root/.local/share/uv/tools && \
|
|
28
|
+
chmod -R 755 /root/.local/share/uv/tools/agent-cli && \
|
|
29
|
+
ln -s /root/.local/share/uv/tools/agent-cli/bin/agent-cli /usr/local/bin/agent-cli && \
|
|
30
|
+
ln -s /root/.local/share/uv/tools/agent-cli/bin/agent /usr/local/bin/agent && \
|
|
31
|
+
ln -s /root/.local/share/uv/tools/agent-cli/bin/ag /usr/local/bin/ag
|
|
32
|
+
|
|
33
|
+
USER transcribe
|
|
34
|
+
|
|
35
|
+
WORKDIR /app
|
|
36
|
+
|
|
37
|
+
# Expose port
|
|
38
|
+
EXPOSE 61337
|
|
39
|
+
|
|
40
|
+
# Default environment variables
|
|
41
|
+
ENV PROXY_HOST=0.0.0.0 \
|
|
42
|
+
PROXY_PORT=61337
|
|
43
|
+
|
|
44
|
+
# Health check
|
|
45
|
+
HEALTHCHECK --interval=30s --timeout=10s --start-period=10s --retries=3 \
|
|
46
|
+
CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:${PROXY_PORT}/health')" || exit 1
|
|
47
|
+
|
|
48
|
+
ENTRYPOINT ["sh", "-c", "agent-cli server transcription-proxy \
|
|
49
|
+
--host ${PROXY_HOST} \
|
|
50
|
+
--port ${PROXY_PORT} \
|
|
51
|
+
${PROXY_EXTRA_ARGS:-}"]
|
|
@@ -98,7 +98,6 @@ agent-cli dev list [OPTIONS]
|
|
|
98
98
|
|
|
99
99
|
| Option | Description |
|
|
100
100
|
|--------|-------------|
|
|
101
|
-
| `--porcelain`, `-p` | Machine-readable output (path + branch) |
|
|
102
101
|
| `--json` | Output as JSON for automation |
|
|
103
102
|
|
|
104
103
|
### `dev status`
|
|
@@ -114,7 +113,6 @@ agent-cli dev status [OPTIONS]
|
|
|
114
113
|
| Option | Description |
|
|
115
114
|
|--------|-------------|
|
|
116
115
|
| `--stale-days`, `-s` | Highlight worktrees inactive for N+ days (default: 7) |
|
|
117
|
-
| `--porcelain`, `-p` | Machine-readable output |
|
|
118
116
|
| `--json` | Output as JSON for automation |
|
|
119
117
|
|
|
120
118
|
**Output columns:**
|
|
@@ -135,9 +133,6 @@ agent-cli dev status
|
|
|
135
133
|
|
|
136
134
|
# Highlight worktrees inactive for 14+ days
|
|
137
135
|
agent-cli dev status --stale-days 14
|
|
138
|
-
|
|
139
|
-
# Machine-readable output for scripting
|
|
140
|
-
agent-cli dev status --porcelain
|
|
141
136
|
```
|
|
142
137
|
|
|
143
138
|
**Example output:**
|
|
@@ -162,16 +157,6 @@ agent-cli dev status --porcelain
|
|
|
162
157
|
- `-N` = N commits behind upstream
|
|
163
158
|
- `⚠️` = Stale worktree (inactive for longer than `--stale-days`)
|
|
164
159
|
|
|
165
|
-
**Porcelain format:**
|
|
166
|
-
|
|
167
|
-
Tab-separated values: `name`, `branch`, `modified`, `staged`, `untracked`, `ahead`, `behind`, `timestamp`
|
|
168
|
-
|
|
169
|
-
```bash
|
|
170
|
-
$ agent-cli dev status --porcelain
|
|
171
|
-
main main 3 0 0 0 0 1768343512
|
|
172
|
-
my-feature feat/my-feature 0 0 0 0 0 1767544043
|
|
173
|
-
```
|
|
174
|
-
|
|
175
160
|
### `dev rm`
|
|
176
161
|
|
|
177
162
|
Remove a dev environment (worktree).
|
|
@@ -327,6 +312,17 @@ agent-cli dev install-skill --force
|
|
|
327
312
|
|
|
328
313
|
Once installed, Claude Code can automatically use the skill when you ask to work on multiple features or parallelize development tasks.
|
|
329
314
|
|
|
315
|
+
**Alternative: Plugin Marketplace**
|
|
316
|
+
|
|
317
|
+
You can also install the skill globally via the Claude Code plugin marketplace:
|
|
318
|
+
|
|
319
|
+
```bash
|
|
320
|
+
claude plugin marketplace add basnijholt/agent-cli
|
|
321
|
+
claude plugin install agent-cli-dev@agent-cli
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
This installs the skill globally so it's available in all projects without needing to run `dev install-skill` in each one.
|
|
325
|
+
|
|
330
326
|
## Discovery Commands
|
|
331
327
|
|
|
332
328
|
### `dev agents`
|
|
@@ -93,3 +93,26 @@ pip install "agent-cli[server]"
|
|
|
93
93
|
# or
|
|
94
94
|
uv sync --extra server
|
|
95
95
|
```
|
|
96
|
+
|
|
97
|
+
## Docker
|
|
98
|
+
|
|
99
|
+
Run as a Docker container:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
# Build the image
|
|
103
|
+
docker build -f docker/transcription-proxy.Dockerfile -t agent-cli-transcription-proxy .
|
|
104
|
+
|
|
105
|
+
# Run standalone
|
|
106
|
+
docker run -p 61337:61337 agent-cli-transcription-proxy
|
|
107
|
+
|
|
108
|
+
# Or use docker-compose (included in both cuda and cpu profiles)
|
|
109
|
+
docker compose -f docker/docker-compose.yml --profile cpu up transcription-proxy
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
To use a custom config, mount it as a volume:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
docker run -p 61337:61337 \
|
|
116
|
+
-v ./config.toml:/root/.config/agent-cli/config.toml:ro \
|
|
117
|
+
agent-cli-transcription-proxy
|
|
118
|
+
```
|
|
@@ -55,12 +55,13 @@ Universal Docker setup that works on any platform with Docker support.
|
|
|
55
55
|
|
|
56
56
|
The Docker setup provides:
|
|
57
57
|
|
|
58
|
-
| Service
|
|
59
|
-
|
|
|
60
|
-
| **whisper**
|
|
61
|
-
| **tts**
|
|
62
|
-
| **
|
|
63
|
-
| **
|
|
58
|
+
| Service | Image | Port | Purpose |
|
|
59
|
+
| ----------------------- | --------------------------------- | ----------- | ------------------------------ |
|
|
60
|
+
| **whisper** | agent-cli-whisper (custom) | 10300/10301 | Speech-to-text (Faster Whisper)|
|
|
61
|
+
| **tts** | agent-cli-tts (custom) | 10200/10201 | Text-to-speech (Kokoro/Piper) |
|
|
62
|
+
| **transcription-proxy** | agent-cli-transcription-proxy | 61337 | ASR proxy for iOS/external apps|
|
|
63
|
+
| **ollama** | ollama/ollama | 11434 | LLM server |
|
|
64
|
+
| **openwakeword** | rhasspy/wyoming-openwakeword | 10400 | Wake word detection |
|
|
64
65
|
|
|
65
66
|
## Configuration
|
|
66
67
|
|
|
@@ -75,6 +76,9 @@ WHISPER_TTL=300 # Seconds before unloading idle model
|
|
|
75
76
|
TTS_MODEL=kokoro # For CUDA: kokoro, For CPU: en_US-lessac-medium
|
|
76
77
|
TTS_BACKEND=kokoro # Backend: kokoro (GPU), piper (CPU)
|
|
77
78
|
TTS_TTL=300 # Seconds before unloading idle model
|
|
79
|
+
|
|
80
|
+
# Transcription Proxy
|
|
81
|
+
PROXY_PORT=61337 # Port for transcription proxy
|
|
78
82
|
```
|
|
79
83
|
|
|
80
84
|
### GPU Support
|
|
@@ -108,14 +112,15 @@ Services store data in Docker volumes:
|
|
|
108
112
|
|
|
109
113
|
## Ports Reference
|
|
110
114
|
|
|
111
|
-
| Port | Service
|
|
112
|
-
| ----- |
|
|
113
|
-
| 10200 | TTS
|
|
114
|
-
| 10201 | TTS
|
|
115
|
-
| 10300 | Whisper
|
|
116
|
-
| 10301 | Whisper
|
|
117
|
-
| 10400 | OpenWakeWord
|
|
118
|
-
| 11434 | Ollama
|
|
115
|
+
| Port | Service | Protocol |
|
|
116
|
+
| ----- | ------------------- | -------- |
|
|
117
|
+
| 10200 | TTS | Wyoming |
|
|
118
|
+
| 10201 | TTS | HTTP API |
|
|
119
|
+
| 10300 | Whisper | Wyoming |
|
|
120
|
+
| 10301 | Whisper | HTTP API |
|
|
121
|
+
| 10400 | OpenWakeWord | Wyoming |
|
|
122
|
+
| 11434 | Ollama | HTTP API |
|
|
123
|
+
| 61337 | Transcription Proxy | HTTP API |
|
|
119
124
|
|
|
120
125
|
## Alternative: Native Installation
|
|
121
126
|
|
|
@@ -38,21 +38,18 @@ server = [
|
|
|
38
38
|
]
|
|
39
39
|
rag = [
|
|
40
40
|
"fastapi[standard]",
|
|
41
|
-
|
|
42
|
-
"
|
|
43
|
-
"onnxruntime>=1.17.0; python_version < '3.14'",
|
|
41
|
+
"chromadb>=0.4.22",
|
|
42
|
+
"onnxruntime>=1.17.0",
|
|
44
43
|
"huggingface-hub>=0.20.0",
|
|
45
44
|
"transformers>=4.30.0",
|
|
46
45
|
"watchfiles>=0.21.0",
|
|
47
46
|
# Until here same as 'memory' extras
|
|
48
|
-
|
|
49
|
-
"markitdown[docx,pdf,pptx]>=0.1.3; python_version < '3.14'",
|
|
47
|
+
"markitdown[docx,pdf,pptx]>=0.1.3",
|
|
50
48
|
]
|
|
51
49
|
memory = [
|
|
52
50
|
"fastapi[standard]",
|
|
53
|
-
|
|
54
|
-
"
|
|
55
|
-
"onnxruntime>=1.17.0; python_version < '3.14'",
|
|
51
|
+
"chromadb>=0.4.22",
|
|
52
|
+
"onnxruntime>=1.17.0",
|
|
56
53
|
"huggingface-hub>=0.20.0",
|
|
57
54
|
"transformers>=4.30.0",
|
|
58
55
|
"watchfiles>=0.21.0",
|
|
@@ -60,8 +57,7 @@ memory = [
|
|
|
60
57
|
"pyyaml>=6.0.0",
|
|
61
58
|
]
|
|
62
59
|
vad = [
|
|
63
|
-
|
|
64
|
-
"silero-vad>=5.1; python_version < '3.14'",
|
|
60
|
+
"silero-vad>=5.1",
|
|
65
61
|
]
|
|
66
62
|
whisper = [
|
|
67
63
|
"fastapi[standard]",
|
|
@@ -151,29 +151,6 @@ class TestDevList:
|
|
|
151
151
|
assert "main" in result.output
|
|
152
152
|
assert "feature" in result.output
|
|
153
153
|
|
|
154
|
-
def test_list_porcelain(self) -> None:
|
|
155
|
-
"""List with --porcelain shows machine-readable output."""
|
|
156
|
-
mock_worktrees = [
|
|
157
|
-
WorktreeInfo(
|
|
158
|
-
path=Path("/repo"),
|
|
159
|
-
branch="main",
|
|
160
|
-
commit="abc",
|
|
161
|
-
is_main=True,
|
|
162
|
-
is_detached=False,
|
|
163
|
-
is_locked=False,
|
|
164
|
-
is_prunable=False,
|
|
165
|
-
),
|
|
166
|
-
]
|
|
167
|
-
|
|
168
|
-
with (
|
|
169
|
-
patch("agent_cli.dev.worktree.get_main_repo_root", return_value=Path("/repo")),
|
|
170
|
-
patch("agent_cli.dev.worktree.git_available", return_value=True),
|
|
171
|
-
patch("agent_cli.dev.worktree.list_worktrees", return_value=mock_worktrees),
|
|
172
|
-
):
|
|
173
|
-
result = runner.invoke(app, ["dev", "list", "--porcelain"])
|
|
174
|
-
assert result.exit_code == 0
|
|
175
|
-
assert "/repo\tmain" in result.output
|
|
176
|
-
|
|
177
154
|
|
|
178
155
|
class TestDevPath:
|
|
179
156
|
"""Tests for dev path command."""
|