agent-cli 0.102.1__tar.gz → 0.102.3__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.102.1 → agent_cli-0.102.3}/.github/workflows/docs.yml +1 -1
- {agent_cli-0.102.1 → agent_cli-0.102.3}/.github/workflows/markdown-code-runner.yml +2 -2
- {agent_cli-0.102.1 → agent_cli-0.102.3}/.github/workflows/pytest.yml +2 -2
- {agent_cli-0.102.1 → agent_cli-0.102.3}/.github/workflows/release.yml +2 -16
- {agent_cli-0.102.1 → agent_cli-0.102.3}/.pre-commit-config.yaml +5 -2
- {agent_cli-0.102.1 → agent_cli-0.102.3}/PKG-INFO +2 -1
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/_requirements/diarization.txt +8 -8
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/_requirements/mlx-whisper.txt +3 -1
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/_requirements/nemo-whisper.txt +8 -8
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/config.py +1 -1
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/cli.py +4 -4
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/project.py +9 -1
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/server/whisper/backends/mlx.py +14 -1
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/commands/dev.md +8 -3
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/README.md +5 -2
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/appcast.xml +49 -32
- {agent_cli-0.102.1 → agent_cli-0.102.3}/pyproject.toml +4 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/conftest.py +24 -4
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/dev/test_project.py +60 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_macos_app.py +5 -6
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_mlx_backend.py +67 -1
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_utils.py +42 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/uv.lock +2 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/.claude/skills/agent-cli-dev/SKILL.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/.claude/skills/agent-cli-dev/examples.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/.claude-plugin/README.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/.claude-plugin/marketplace.json +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/.claude-plugin/plugin.json +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/.claude-plugin/skills/agent-cli-dev/SKILL.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/.claude-plugin/skills/agent-cli-dev/examples.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/.cursorrules +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/.dockerignore +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/.env.example +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/.github/logo.svg +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/.github/release-drafter.yml +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/.github/renovate.json +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/.github/scripts/check_extras_sync.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/.github/scripts/check_plugin_skill_sync.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/.github/scripts/normalize_appcast.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/.github/scripts/sync_extras.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/.github/scripts/sync_requirements.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/.github/workflows/automerge.yml +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/.github/workflows/docker.yml +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/.github/workflows/release-drafter.yml +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/.github/workflows/toc.yaml +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/.gitignore +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/.jscpd.json +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/.prompts/docs-review.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/.prompts/pr-review.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/CLAUDE.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/LICENSE +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/LLAMA_SERVER_USAGE.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/README.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/__init__.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/__main__.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/_extras.json +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/_overrides/nemo-whisper.txt +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/_requirements/.gitkeep +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/_requirements/audio.txt +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/_requirements/faster-whisper.txt +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/_requirements/kokoro.txt +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/_requirements/llm.txt +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/_requirements/memory.txt +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/_requirements/piper.txt +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/_requirements/rag.txt +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/_requirements/server.txt +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/_requirements/speed.txt +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/_requirements/vad.txt +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/_requirements/vectordb.txt +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/_requirements/whisper-transformers.txt +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/_requirements/wyoming.txt +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/_tools.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/agents/__init__.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/agents/_voice_agent_common.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/agents/assistant.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/agents/autocorrect.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/agents/chat.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/agents/diarize_live_session.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/agents/memory/__init__.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/agents/memory/add.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/agents/memory/proxy.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/agents/rag_proxy.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/agents/speak.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/agents/speakers.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/agents/transcribe.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/agents/transcribe_live.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/agents/voice_edit.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/api.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/cli.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/config_cmd.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/constants.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/core/__init__.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/core/alignment.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/core/audio.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/core/audio_format.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/core/chroma.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/core/deps.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/core/diarization.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/core/openai_proxy.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/core/process.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/core/reranker.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/core/speaker_identity.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/core/sse.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/core/transcription_logger.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/core/utils.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/core/vad.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/core/watch.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/daemon/__init__.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/daemon/cli.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/__init__.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/_branch_name.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/_config.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/_output.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/cleanup.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/coding_agents/__init__.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/coding_agents/aider.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/coding_agents/base.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/coding_agents/claude.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/coding_agents/codex.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/coding_agents/continue_dev.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/coding_agents/copilot.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/coding_agents/cursor_agent.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/coding_agents/gemini.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/coding_agents/opencode.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/coding_agents/registry.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/editors/__init__.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/editors/base.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/editors/cursor.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/editors/emacs.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/editors/jetbrains.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/editors/nano.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/editors/neovim.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/editors/registry.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/editors/sublime.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/editors/vim.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/editors/vscode.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/editors/zed.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/hooks.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/launch.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/registry.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/skill/SKILL.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/skill/examples.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/terminals/__init__.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/terminals/apple_terminal.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/terminals/base.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/terminals/cmux.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/terminals/gnome.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/terminals/iterm2.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/terminals/kitty.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/terminals/registry.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/terminals/tmux.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/terminals/warp.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/terminals/zellij.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/dev/worktree.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/docs_gen.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/example-config.toml +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/install/__init__.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/install/common.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/install/extras.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/install/hotkeys.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/install/launchd.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/install/service_config.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/install/services.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/install/systemd.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/memory/__init__.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/memory/_files.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/memory/_filters.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/memory/_git.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/memory/_indexer.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/memory/_ingest.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/memory/_persistence.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/memory/_prompt.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/memory/_retrieval.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/memory/_store.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/memory/_streaming.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/memory/_tasks.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/memory/api.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/memory/client.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/memory/engine.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/memory/entities.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/memory/models.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/opts.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/py.typed +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/rag/__init__.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/rag/_indexer.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/rag/_indexing.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/rag/_prompt.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/rag/_retriever.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/rag/_store.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/rag/_utils.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/rag/api.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/rag/client.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/rag/engine.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/rag/models.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/scripts/.runtime/.gitkeep +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/scripts/__init__.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/scripts/linux-hotkeys/README.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/scripts/linux-hotkeys/toggle-voice-edit.sh +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/scripts/macos-hotkeys/README.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/scripts/macos-hotkeys/skhd-config-example +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/scripts/macos-hotkeys/toggle-autocorrect.sh +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/scripts/macos-hotkeys/toggle-transcription.sh +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/scripts/macos-hotkeys/toggle-voice-edit.sh +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/scripts/nvidia-asr-server/README.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/scripts/nvidia-asr-server/pyproject.toml +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/scripts/nvidia-asr-server/server.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/scripts/nvidia-asr-server/shell.nix +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/scripts/nvidia-asr-server/uv.lock +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/scripts/run-openwakeword.sh +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/scripts/setup-linux-hotkeys.sh +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/scripts/setup-linux.sh +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/scripts/setup-macos-hotkeys.sh +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/scripts/setup-macos.sh +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/scripts/setup-windows.ps1 +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/scripts/start-all-services-windows.ps1 +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/scripts/start-all-services.sh +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/server/__init__.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/server/cli.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/server/common.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/server/model_manager.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/server/model_registry.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/server/proxy/__init__.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/server/proxy/api.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/server/streaming.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/server/tts/__init__.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/server/tts/api.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/server/tts/backends/__init__.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/server/tts/backends/base.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/server/tts/backends/kokoro.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/server/tts/backends/piper.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/server/tts/model_manager.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/server/tts/model_registry.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/server/tts/wyoming_handler.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/server/whisper/__init__.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/server/whisper/api.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/server/whisper/backends/__init__.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/server/whisper/backends/base.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/server/whisper/backends/faster_whisper.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/server/whisper/backends/nemo.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/server/whisper/backends/transformers.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/server/whisper/languages.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/server/whisper/model_manager.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/server/whisper/model_registry.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/server/whisper/wyoming_handler.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/services/__init__.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/services/_wyoming_utils.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/services/asr.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/services/llm.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/services/tts.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/agent_cli/services/wake_word.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docker/docker-compose.yml +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docker/memory-proxy.Dockerfile +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docker/rag-proxy.Dockerfile +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docker/transcribe-proxy.Dockerfile +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docker/tts.Dockerfile +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docker/whisper.Dockerfile +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/CNAME +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/architecture/index.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/architecture/memory.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/architecture/rag.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/commands/assistant.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/commands/autocorrect.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/commands/chat.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/commands/config.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/commands/daemon.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/commands/diarize-live-session.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/commands/index.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/commands/install-extras.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/commands/install-hotkeys.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/commands/install-services.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/commands/memory.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/commands/rag-proxy.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/commands/server/index.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/commands/server/transcribe-proxy.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/commands/server/tts.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/commands/server/whisper.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/commands/speak.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/commands/speakers.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/commands/start-services.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/commands/transcribe-live.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/commands/transcribe.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/commands/voice-edit.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/configuration.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/getting-started.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/iOS_Shortcut_Guide.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/index.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/installation/docker.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/installation/index.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/installation/linux.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/installation/macos-app.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/installation/macos.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/installation/nixos.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/installation/windows.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/logo-avatar.svg +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/logo-clean.svg +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/run_markdown_code_runner.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/docs/system-integration.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/example.agent-cli-config.toml +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/justfile +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Package.resolved +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Package.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Resources/AgentCLI.entitlements +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Resources/Info.plist +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Resources/dmg-background.svg +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Sources/AgentCLI/AgentCLIApp.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Sources/AgentCLI/AgentCommand.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Sources/AgentCLI/AgentCommandRunner.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Sources/AgentCLI/AgentRuntime.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Sources/AgentCLI/AppDelegate.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Sources/AgentCLI/AppMetadata.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Sources/AgentCLI/AppUpdater.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Sources/AgentCLI/BootstrapState.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Sources/AgentCLI/CommandResult.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Sources/AgentCLI/ConfigurableHotkeyController.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Sources/AgentCLI/FocusedTextTarget.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Sources/AgentCLI/LiveTranscriptionPreview.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Sources/AgentCLI/LoginItemController.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Sources/AgentCLI/MenuActivityStatus.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Sources/AgentCLI/MenuActivityStatusRow.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Sources/AgentCLI/MenuActivityTracker.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Sources/AgentCLI/MenuBarIcon.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Sources/AgentCLI/RecentTranscriptionReader.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Sources/AgentCLI/RecordingIndicatorController.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Sources/AgentCLI/RecordingSoundSettings.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Sources/AgentCLI/RuntimeSettings.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Sources/AgentCLI/SettingsWindowController.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Sources/AgentCLI/Shortcuts.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Sources/AgentCLI/StatusMenuController.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Sources/AgentCLI/TranscriptPasteController.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Sources/AgentCLI/TranscriptionSettings.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Sources/AgentCLI/VoiceLevelOverlay.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Tests/AgentCLITests/AgentCommandTests.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Tests/AgentCLITests/ConfigurableHotkeyControllerTests.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Tests/AgentCLITests/LivePreviewSwiftTestingTests.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Tests/AgentCLITests/LiveTranscriptionPreviewTests.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Tests/AgentCLITests/LoginItemControllerTests.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Tests/AgentCLITests/RecentTranscriptionReaderTests.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Tests/AgentCLITests/RecordingIndicatorControllerTests.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Tests/AgentCLITests/ShortcutDefaultsTests.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/AgentCLI/Tests/AgentCLITests/VoiceLevelMeterTests.swift +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/build-macos-app.sh +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/macos/test-macos-app-e2e.sh +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/reddit.md +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/shell.nix +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/__init__.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/agents/__init__.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/agents/test_fix_my_text.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/agents/test_interactive.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/agents/test_interactive_extra.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/agents/test_memory_add.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/agents/test_speak.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/agents/test_speak_e2e.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/agents/test_speakers.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/agents/test_transcribe.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/agents/test_transcribe_agent.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/agents/test_transcribe_e2e.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/agents/test_transcribe_live.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/agents/test_transcribe_recovery.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/agents/test_tts_common.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/agents/test_tts_common_extra.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/agents/test_voice_agent_common.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/agents/test_voice_edit.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/agents/test_voice_edit_e2e.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/agents/test_wake_word_assistant.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/core/__init__.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/core/test_audio.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/core/test_audio_format.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/core/test_audio_levels.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/core/test_chroma.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/core/test_sse.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/core/test_vad.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/core/test_watch.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/dev/__init__.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/dev/test_cleanup.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/dev/test_cli.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/dev/test_coding_agents.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/dev/test_editors.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/dev/test_hooks.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/dev/test_launch.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/dev/test_terminals.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/dev/test_verification.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/dev/test_worktree.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/install/__init__.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/install/test_extras.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/install/test_launchd.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/memory/__init__.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/memory/test_api_health.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/memory/test_api_integration_liveish.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/memory/test_client.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/memory/test_engine.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/memory/test_files.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/memory/test_filters.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/memory/test_git_integration.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/memory/test_indexer.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/memory/test_memory_integration.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/memory/test_proxy_passthrough.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/memory/test_store.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/memory/test_utils.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/mocks/__init__.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/mocks/audio.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/mocks/llm.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/mocks/wyoming.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/rag/__init__.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/rag/test_api.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/rag/test_engine.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/rag/test_history.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/rag/test_indexer.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/rag/test_indexing.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/rag/test_rag_client.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/rag/test_rag_integration_liveish.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/rag/test_rag_proxy_passthrough.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/rag/test_retriever.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/rag/test_store.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/rag/test_utils.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_alignment.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_api.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_api_integration.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_asr.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_asr_recovery.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_audio_e2e.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_cli.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_config.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_config_cmd.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_daemon.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_diarization.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_diarize_live_session.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_docs_gen.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_env_vars.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_faster_whisper_backend.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_json_output.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_llm.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_llm_gemini.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_memory_tools.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_nemo_backend.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_normalize_appcast.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_process_manager.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_requires_extras.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_server_streaming.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_server_tts.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_server_tts_wyoming.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_server_whisper.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_services.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_speaker_identity.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_tools.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_transformers_backend.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_tts.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_wake_word.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/tests/test_wyoming_utils.py +0 -0
- {agent_cli-0.102.1 → agent_cli-0.102.3}/zensical.toml +0 -0
|
@@ -17,12 +17,12 @@ jobs:
|
|
|
17
17
|
fetch-depth: 0
|
|
18
18
|
|
|
19
19
|
- name: Set up Python
|
|
20
|
-
uses: actions/setup-python@
|
|
20
|
+
uses: actions/setup-python@v7.0.0
|
|
21
21
|
with:
|
|
22
22
|
python-version: "3.13.11"
|
|
23
23
|
|
|
24
24
|
- name: Install uv
|
|
25
|
-
uses: astral-sh/setup-uv@
|
|
25
|
+
uses: astral-sh/setup-uv@v9.0.0
|
|
26
26
|
|
|
27
27
|
- name: Run markdown-code-runner
|
|
28
28
|
env:
|
|
@@ -20,14 +20,14 @@ jobs:
|
|
|
20
20
|
steps:
|
|
21
21
|
- uses: actions/checkout@v7.0.1
|
|
22
22
|
- name: Set up Python ${{ matrix.python-version }}
|
|
23
|
-
uses: actions/setup-python@
|
|
23
|
+
uses: actions/setup-python@v7.0.0
|
|
24
24
|
with:
|
|
25
25
|
python-version: ${{ matrix.python-version }}
|
|
26
26
|
- name: Install portaudio (Linux only)
|
|
27
27
|
if: matrix.os == 'ubuntu-latest'
|
|
28
28
|
run: sudo apt-get update && sudo apt-get install -y portaudio19-dev
|
|
29
29
|
- name: Install uv
|
|
30
|
-
uses: astral-sh/setup-uv@
|
|
30
|
+
uses: astral-sh/setup-uv@v9.0.0
|
|
31
31
|
- name: Run macOS app Swift tests
|
|
32
32
|
if: matrix.os == 'macos-latest' && matrix.python-version == '3.13'
|
|
33
33
|
run: swift test --package-path macos/AgentCLI --enable-xctest
|
|
@@ -16,7 +16,7 @@ jobs:
|
|
|
16
16
|
steps:
|
|
17
17
|
- uses: actions/checkout@v7.0.1
|
|
18
18
|
- name: Install uv
|
|
19
|
-
uses: astral-sh/setup-uv@
|
|
19
|
+
uses: astral-sh/setup-uv@v9.0.0
|
|
20
20
|
- name: Build
|
|
21
21
|
run: uv build
|
|
22
22
|
- name: Publish package distributions to PyPI
|
|
@@ -31,7 +31,7 @@ jobs:
|
|
|
31
31
|
steps:
|
|
32
32
|
- uses: actions/checkout@v7.0.1
|
|
33
33
|
- name: Install uv
|
|
34
|
-
uses: astral-sh/setup-uv@
|
|
34
|
+
uses: astral-sh/setup-uv@v9.0.0
|
|
35
35
|
- name: Import Developer ID certificate
|
|
36
36
|
uses: apple-actions/import-codesign-certs@v7.0.0
|
|
37
37
|
with:
|
|
@@ -126,17 +126,3 @@ jobs:
|
|
|
126
126
|
git commit -m "Update AgentCLI release metadata to ${TAG_NAME}"
|
|
127
127
|
git pull --rebase origin main
|
|
128
128
|
git push origin HEAD:main
|
|
129
|
-
- name: Trigger Homebrew tap update
|
|
130
|
-
env:
|
|
131
|
-
GH_TOKEN: ${{ secrets.HOMEBREW_TAP_DISPATCH_TOKEN }}
|
|
132
|
-
TAG_NAME: ${{ github.event.release.tag_name }}
|
|
133
|
-
run: |
|
|
134
|
-
if [[ -z "$GH_TOKEN" ]]; then
|
|
135
|
-
echo "HOMEBREW_TAP_DISPATCH_TOKEN is required to update basnijholt/homebrew-tap." >&2
|
|
136
|
-
exit 1
|
|
137
|
-
fi
|
|
138
|
-
|
|
139
|
-
gh api repos/basnijholt/homebrew-tap/dispatches \
|
|
140
|
-
-f event_type=agent-cli-release \
|
|
141
|
-
-F "client_payload[tag_name]=$TAG_NAME" \
|
|
142
|
-
-F "client_payload[asset_url]=https://github.com/basnijholt/agent-cli/releases/download/${TAG_NAME}/AgentCLI.dmg"
|
|
@@ -48,14 +48,17 @@ repos:
|
|
|
48
48
|
name: uv lock
|
|
49
49
|
entry: uv lock
|
|
50
50
|
language: python
|
|
51
|
-
|
|
51
|
+
# Pinned: uv export's marker output differs between releases, so an
|
|
52
|
+
# unpinned uv makes agent_cli/_requirements/*.txt depend on whoever's
|
|
53
|
+
# hook cache is freshest.
|
|
54
|
+
additional_dependencies: ["uv==0.11.32"]
|
|
52
55
|
pass_filenames: false
|
|
53
56
|
files: pyproject\.toml
|
|
54
57
|
- id: sync-requirements
|
|
55
58
|
name: sync extra requirements
|
|
56
59
|
entry: python .github/scripts/sync_requirements.py
|
|
57
60
|
language: python
|
|
58
|
-
additional_dependencies: ["uv"]
|
|
61
|
+
additional_dependencies: ["uv==0.11.32"]
|
|
59
62
|
pass_filenames: false
|
|
60
63
|
files: (pyproject\.toml|uv\.lock)
|
|
61
64
|
- id: check-extras-sync
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-cli
|
|
3
|
-
Version: 0.102.
|
|
3
|
+
Version: 0.102.3
|
|
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>
|
|
@@ -61,6 +61,7 @@ Requires-Dist: watchfiles>=0.21.0; extra == 'memory'
|
|
|
61
61
|
Provides-Extra: mlx-whisper
|
|
62
62
|
Requires-Dist: fastapi[standard]; extra == 'mlx-whisper'
|
|
63
63
|
Requires-Dist: mlx-whisper>=0.4.0; (sys_platform == 'darwin' and platform_machine == 'arm64') and extra == 'mlx-whisper'
|
|
64
|
+
Requires-Dist: mlx>=0.24; (sys_platform == 'darwin' and platform_machine == 'arm64') and extra == 'mlx-whisper'
|
|
64
65
|
Provides-Extra: nemo-whisper
|
|
65
66
|
Requires-Dist: fastapi[standard]; extra == 'nemo-whisper'
|
|
66
67
|
Requires-Dist: nemo-toolkit[asr]>=2.2.0; (python_version < '3.14') and extra == 'nemo-whisper'
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# This file was autogenerated by uv via the following command:
|
|
2
2
|
# uv export --extra diarization --no-dev --no-emit-project --no-hashes
|
|
3
|
-
aiohappyeyeballs==2.6.2
|
|
3
|
+
aiohappyeyeballs==2.6.2 ; python_full_version < '3.13'
|
|
4
4
|
# via aiohttp
|
|
5
|
-
aiohttp==3.13.5
|
|
5
|
+
aiohttp==3.13.5 ; python_full_version < '3.13'
|
|
6
6
|
# via fsspec
|
|
7
|
-
aiosignal==1.4.0
|
|
7
|
+
aiosignal==1.4.0 ; python_full_version < '3.13'
|
|
8
8
|
# via aiohttp
|
|
9
9
|
alembic==1.18.4
|
|
10
10
|
# via optuna
|
|
@@ -18,7 +18,7 @@ anyio==4.13.0
|
|
|
18
18
|
# via httpx
|
|
19
19
|
asteroid-filterbanks==0.4.0
|
|
20
20
|
# via pyannote-audio
|
|
21
|
-
attrs==26.1.0
|
|
21
|
+
attrs==26.1.0 ; python_full_version < '3.13'
|
|
22
22
|
# via aiohttp
|
|
23
23
|
certifi==2026.5.20
|
|
24
24
|
# via
|
|
@@ -61,7 +61,7 @@ filelock==3.29.0
|
|
|
61
61
|
# torch
|
|
62
62
|
fonttools==4.63.0
|
|
63
63
|
# via matplotlib
|
|
64
|
-
frozenlist==1.8.0
|
|
64
|
+
frozenlist==1.8.0 ; python_full_version < '3.13'
|
|
65
65
|
# via
|
|
66
66
|
# aiohttp
|
|
67
67
|
# aiosignal
|
|
@@ -136,7 +136,7 @@ mdurl==0.1.2
|
|
|
136
136
|
# via markdown-it-py
|
|
137
137
|
mpmath==1.3.0
|
|
138
138
|
# via sympy
|
|
139
|
-
multidict==6.7.1
|
|
139
|
+
multidict==6.7.1 ; python_full_version < '3.13'
|
|
140
140
|
# via
|
|
141
141
|
# aiohttp
|
|
142
142
|
# yarl
|
|
@@ -267,7 +267,7 @@ pillow==12.2.0
|
|
|
267
267
|
# via matplotlib
|
|
268
268
|
primepy==1.3
|
|
269
269
|
# via torch-pitch-shift
|
|
270
|
-
propcache==0.5.2
|
|
270
|
+
propcache==0.5.2 ; python_full_version < '3.13'
|
|
271
271
|
# via
|
|
272
272
|
# aiohttp
|
|
273
273
|
# yarl
|
|
@@ -480,5 +480,5 @@ tzdata==2026.2 ; sys_platform == 'emscripten' or sys_platform == 'win32'
|
|
|
480
480
|
# via pandas
|
|
481
481
|
urllib3==2.7.0
|
|
482
482
|
# via requests
|
|
483
|
-
yarl==1.24.2
|
|
483
|
+
yarl==1.24.2 ; python_full_version < '3.13'
|
|
484
484
|
# via aiohttp
|
|
@@ -98,7 +98,9 @@ markupsafe==3.0.3
|
|
|
98
98
|
mdurl==0.1.2
|
|
99
99
|
# via markdown-it-py
|
|
100
100
|
mlx==0.31.2 ; platform_machine == 'arm64' and sys_platform == 'darwin'
|
|
101
|
-
# via
|
|
101
|
+
# via
|
|
102
|
+
# agent-cli
|
|
103
|
+
# mlx-whisper
|
|
102
104
|
mlx-metal==0.31.2 ; platform_machine == 'arm64' and sys_platform == 'darwin'
|
|
103
105
|
# via mlx
|
|
104
106
|
mlx-whisper==0.4.3 ; platform_machine == 'arm64' and sys_platform == 'darwin'
|
|
@@ -6,11 +6,11 @@ absl-py==2.4.0 ; python_full_version < '3.14'
|
|
|
6
6
|
# tensorboard
|
|
7
7
|
accelerate==1.13.0 ; python_full_version < '3.14'
|
|
8
8
|
# via peft
|
|
9
|
-
aiohappyeyeballs==2.6.2 ; python_full_version < '3.
|
|
9
|
+
aiohappyeyeballs==2.6.2 ; python_full_version < '3.13'
|
|
10
10
|
# via aiohttp
|
|
11
|
-
aiohttp==3.13.5 ; python_full_version < '3.
|
|
11
|
+
aiohttp==3.13.5 ; python_full_version < '3.13'
|
|
12
12
|
# via fsspec
|
|
13
|
-
aiosignal==1.4.0 ; python_full_version < '3.
|
|
13
|
+
aiosignal==1.4.0 ; python_full_version < '3.13'
|
|
14
14
|
# via aiohttp
|
|
15
15
|
alembic==1.18.4 ; python_full_version < '3.14'
|
|
16
16
|
# via optuna
|
|
@@ -31,7 +31,7 @@ anyio==4.13.0
|
|
|
31
31
|
# watchfiles
|
|
32
32
|
asttokens==3.0.1 ; python_full_version < '3.14'
|
|
33
33
|
# via stack-data
|
|
34
|
-
attrs==26.1.0 ; python_full_version < '3.
|
|
34
|
+
attrs==26.1.0 ; python_full_version < '3.13'
|
|
35
35
|
# via aiohttp
|
|
36
36
|
audioop-lts==0.2.2 ; python_full_version == '3.13.*'
|
|
37
37
|
# via
|
|
@@ -146,7 +146,7 @@ filelock==3.29.0 ; python_full_version < '3.14'
|
|
|
146
146
|
# transformers
|
|
147
147
|
fonttools==4.63.0 ; python_full_version < '3.14'
|
|
148
148
|
# via matplotlib
|
|
149
|
-
frozenlist==1.8.0 ; python_full_version < '3.
|
|
149
|
+
frozenlist==1.8.0 ; python_full_version < '3.13'
|
|
150
150
|
# via
|
|
151
151
|
# aiohttp
|
|
152
152
|
# aiosignal
|
|
@@ -308,7 +308,7 @@ mpmath==1.3.0 ; python_full_version < '3.14'
|
|
|
308
308
|
# via sympy
|
|
309
309
|
msgpack==1.1.2 ; python_full_version < '3.14'
|
|
310
310
|
# via librosa
|
|
311
|
-
multidict==6.7.1 ; python_full_version < '3.
|
|
311
|
+
multidict==6.7.1 ; python_full_version < '3.13'
|
|
312
312
|
# via
|
|
313
313
|
# aiohttp
|
|
314
314
|
# yarl
|
|
@@ -515,7 +515,7 @@ portalocker==3.2.0 ; python_full_version == '3.13.*'
|
|
|
515
515
|
# via sacrebleu
|
|
516
516
|
prompt-toolkit==3.0.52 ; python_full_version < '3.14'
|
|
517
517
|
# via ipython
|
|
518
|
-
propcache==0.5.2 ; python_full_version < '3.
|
|
518
|
+
propcache==0.5.2 ; python_full_version < '3.13'
|
|
519
519
|
# via
|
|
520
520
|
# aiohttp
|
|
521
521
|
# yarl
|
|
@@ -888,5 +888,5 @@ wrapt==2.2.1 ; python_full_version < '3.14'
|
|
|
888
888
|
# via nemo-toolkit
|
|
889
889
|
xxhash==3.7.0 ; python_full_version < '3.14'
|
|
890
890
|
# via datasets
|
|
891
|
-
yarl==1.24.2 ; python_full_version < '3.
|
|
891
|
+
yarl==1.24.2 ; python_full_version < '3.13'
|
|
892
892
|
# via aiohttp
|
|
@@ -316,7 +316,7 @@ class Dev(BaseModel):
|
|
|
316
316
|
)
|
|
317
317
|
agent_env: dict[str, dict[str, str]] | None = None
|
|
318
318
|
setup: bool = True # Run project setup (npm install, etc.)
|
|
319
|
-
copy_env: bool = True # Copy
|
|
319
|
+
copy_env: bool = True # Copy env and local agent instruction files from main repo
|
|
320
320
|
fetch: bool = True # Git fetch before creating worktree
|
|
321
321
|
|
|
322
322
|
|
|
@@ -290,12 +290,12 @@ def _setup_worktree_env(
|
|
|
290
290
|
direnv: bool | None,
|
|
291
291
|
verbose: bool,
|
|
292
292
|
) -> None:
|
|
293
|
-
"""Copy
|
|
293
|
+
"""Copy local setup files, run project setup, and configure direnv."""
|
|
294
294
|
if copy_env:
|
|
295
295
|
copied = copy_env_files(repo_root, worktree_path)
|
|
296
296
|
if copied:
|
|
297
297
|
names = ", ".join(f.name for f in copied)
|
|
298
|
-
success(f"Copied
|
|
298
|
+
success(f"Copied local setup file(s): {names}")
|
|
299
299
|
|
|
300
300
|
project = None
|
|
301
301
|
if setup:
|
|
@@ -413,7 +413,7 @@ def new(
|
|
|
413
413
|
bool,
|
|
414
414
|
typer.Option(
|
|
415
415
|
"--copy-env/--no-copy-env",
|
|
416
|
-
help="Copy
|
|
416
|
+
help="Copy env and local agent instruction files from main repo to worktree",
|
|
417
417
|
),
|
|
418
418
|
] = True,
|
|
419
419
|
fetch: Annotated[
|
|
@@ -525,7 +525,7 @@ def new(
|
|
|
525
525
|
**What happens:**
|
|
526
526
|
|
|
527
527
|
1. Creates git worktree at `../REPO-worktrees/BRANCH/`
|
|
528
|
-
2. Copies
|
|
528
|
+
2. Copies env and local agent instruction files from main repo (--copy-env)
|
|
529
529
|
3. Runs project setup: npm install, uv sync, etc. (--setup)
|
|
530
530
|
4. Sets up direnv if installed (--direnv)
|
|
531
531
|
5. Opens editor if requested (-e/--editor)
|
|
@@ -12,6 +12,8 @@ if TYPE_CHECKING:
|
|
|
12
12
|
from collections.abc import Callable
|
|
13
13
|
from pathlib import Path
|
|
14
14
|
|
|
15
|
+
_LOCAL_AGENT_INSTRUCTION_FILES = ("AGENTS.local.md", "CLAUDE.local.md")
|
|
16
|
+
|
|
15
17
|
|
|
16
18
|
@dataclass
|
|
17
19
|
class ProjectType:
|
|
@@ -366,6 +368,7 @@ def copy_env_files(
|
|
|
366
368
|
".env.local",
|
|
367
369
|
".env.example",
|
|
368
370
|
".envrc",
|
|
371
|
+
*_LOCAL_AGENT_INSTRUCTION_FILES,
|
|
369
372
|
]
|
|
370
373
|
|
|
371
374
|
copied: list[Path] = []
|
|
@@ -380,7 +383,12 @@ def copy_env_files(
|
|
|
380
383
|
|
|
381
384
|
for src_file in source_files:
|
|
382
385
|
if src_file.is_file():
|
|
383
|
-
|
|
386
|
+
relative_path = src_file.relative_to(source)
|
|
387
|
+
dest_file = dest / relative_path
|
|
388
|
+
if relative_path.as_posix() in _LOCAL_AGENT_INSTRUCTION_FILES and os.path.lexists(
|
|
389
|
+
dest_file
|
|
390
|
+
):
|
|
391
|
+
continue
|
|
384
392
|
dest_file.parent.mkdir(parents=True, exist_ok=True)
|
|
385
393
|
dest_file.write_bytes(src_file.read_bytes())
|
|
386
394
|
copied.append(dest_file)
|
|
@@ -135,11 +135,24 @@ def _transcribe_in_subprocess(
|
|
|
135
135
|
kwargs: dict[str, Any],
|
|
136
136
|
) -> dict[str, Any]:
|
|
137
137
|
"""Run transcription in subprocess. Model stays loaded between calls."""
|
|
138
|
+
import mlx.core as mx # noqa: PLC0415
|
|
138
139
|
import mlx_whisper # noqa: PLC0415
|
|
139
140
|
import numpy as np # noqa: PLC0415
|
|
140
141
|
|
|
141
142
|
audio_array = np.frombuffer(audio_bytes, dtype=audio_dtype).reshape(audio_shape)
|
|
142
|
-
|
|
143
|
+
try:
|
|
144
|
+
result = mlx_whisper.transcribe(audio_array, path_or_hf_repo=model_name, **kwargs)
|
|
145
|
+
finally:
|
|
146
|
+
# Release MLX's reusable Metal buffer cache after each request. With --ttl 0
|
|
147
|
+
# the subprocess is never recycled, so without this the cache grows to the
|
|
148
|
+
# largest working set ever seen and gets pushed to swap, degrading latency.
|
|
149
|
+
# clear_cache() frees only the cache, NOT live arrays, so the loaded model
|
|
150
|
+
# weights stay resident and inference stays hot (no cold reload).
|
|
151
|
+
# In finally so a failed transcription also releases the buffers it
|
|
152
|
+
# allocated; otherwise the long-lived worker would retain them.
|
|
153
|
+
# Top-level clear_cache() needs mlx>=0.24 (pinned in the mlx-whisper
|
|
154
|
+
# extra); older releases only expose mx.metal.clear_cache().
|
|
155
|
+
mx.clear_cache()
|
|
143
156
|
|
|
144
157
|
return {
|
|
145
158
|
"text": result.get("text", ""),
|
|
@@ -78,7 +78,7 @@ agent-cli dev new [BRANCH] [OPTIONS]
|
|
|
78
78
|
| `--agent` | - | Which AI agent to start: claude, codex, gemini, aider, copilot, cn (Continue), opencode, cursor-agent, or auto. Implies starting the agent |
|
|
79
79
|
| `--with-editor` | - | Which editor to open: cursor, vscode, zed, nvim, vim, emacs, sublime, idea, pycharm, etc. |
|
|
80
80
|
| `--setup/--no-setup` | `true` | Run project setup after creation: npm/pnpm/yarn install, poetry/uv sync, cargo build, etc. Auto-detects project type |
|
|
81
|
-
| `--copy-env/--no-copy-env` | `true` | Copy
|
|
81
|
+
| `--copy-env/--no-copy-env` | `true` | Copy env and local agent instruction files from main repo to worktree |
|
|
82
82
|
| `--fetch/--no-fetch` | `true` | Run 'git fetch' before creating the worktree to ensure refs are up-to-date |
|
|
83
83
|
| `--branch-name-mode` | `random` | How to auto-name branches when BRANCH is omitted: random (default), auto (AI only when --prompt/--prompt-file is set), or ai (always try AI first) |
|
|
84
84
|
| `--branch-name-agent` | - | Headless agent for AI branch naming: claude, codex, or gemini. If omitted, uses --agent when supported, otherwise tries available agents in that order |
|
|
@@ -606,7 +606,7 @@ direnv = true # Always generate .envrc (--direnv)
|
|
|
606
606
|
|
|
607
607
|
# Worktree creation behavior
|
|
608
608
|
setup = true # Run project setup (npm install, etc.)
|
|
609
|
-
copy_env = true # Copy
|
|
609
|
+
copy_env = true # Copy env and local agent instruction files
|
|
610
610
|
fetch = true # Git fetch before creating
|
|
611
611
|
|
|
612
612
|
# Branch naming behavior when BRANCH argument is omitted
|
|
@@ -702,7 +702,7 @@ git lfs pull
|
|
|
702
702
|
|
|
703
703
|
This ensures large files tracked by LFS are available in the worktree.
|
|
704
704
|
|
|
705
|
-
###
|
|
705
|
+
### Local Setup Files
|
|
706
706
|
|
|
707
707
|
The following files are automatically copied to new dev environments:
|
|
708
708
|
|
|
@@ -710,6 +710,11 @@ The following files are automatically copied to new dev environments:
|
|
|
710
710
|
- `.env.local`
|
|
711
711
|
- `.env.example`
|
|
712
712
|
- `.envrc`
|
|
713
|
+
- `AGENTS.local.md`
|
|
714
|
+
- `CLAUDE.local.md`
|
|
715
|
+
|
|
716
|
+
If the target branch already contains either local agent instruction file,
|
|
717
|
+
its checked-out version is preserved.
|
|
713
718
|
|
|
714
719
|
Use `--no-copy-env` to skip this.
|
|
715
720
|
|
|
@@ -111,8 +111,11 @@ workflow expects these repository secrets:
|
|
|
111
111
|
- `APPLE_APP_SPECIFIC_PASSWORD`: app-specific password for `notarytool`
|
|
112
112
|
- `APPLE_TEAM_ID`: Apple Developer Team ID
|
|
113
113
|
- `SPARKLE_PRIVATE_ED_KEY`: private Sparkle EdDSA key for signing updates
|
|
114
|
-
|
|
115
|
-
|
|
114
|
+
|
|
115
|
+
The Homebrew cask is not published from here. `basnijholt/homebrew-tap` runs a
|
|
116
|
+
daily cron that reads the latest release and bumps `Casks/agent-cli.rb` itself;
|
|
117
|
+
run it on demand with
|
|
118
|
+
`gh workflow run update-agent-cli-cask.yml --repo basnijholt/homebrew-tap`.
|
|
116
119
|
|
|
117
120
|
The workflow also expects the repository variable `SPARKLE_PUBLIC_ED_KEY`.
|
|
118
121
|
Generate the key pair with Sparkle's `generate_keys` tool and store only the
|
|
@@ -4,6 +4,55 @@
|
|
|
4
4
|
<title>Agent CLI Updates</title>
|
|
5
5
|
<link>https://github.com/basnijholt/agent-cli</link>
|
|
6
6
|
<description>Signed Agent CLI macOS app updates.</description>
|
|
7
|
+
<item>
|
|
8
|
+
<title>0.102.2</title>
|
|
9
|
+
<pubDate>Sat, 25 Jul 2026 20:18:46 +0000</pubDate>
|
|
10
|
+
<link>https://github.com/basnijholt/agent-cli</link>
|
|
11
|
+
<sparkle:version>199</sparkle:version>
|
|
12
|
+
<sparkle:shortVersionString>0.102.2</sparkle:shortVersionString>
|
|
13
|
+
<sparkle:minimumSystemVersion>13.0</sparkle:minimumSystemVersion>
|
|
14
|
+
<sparkle:hardwareRequirements>arm64</sparkle:hardwareRequirements>
|
|
15
|
+
<description sparkle:format="markdown"><![CDATA[## Bug fixes
|
|
16
|
+
|
|
17
|
+
- **MLX Whisper: stop unbounded memory growth under `--ttl 0`** (#620). The long-lived transcription subprocess never released MLX's reusable Metal buffer cache, so it ratcheted up to the largest working set ever seen and eventually got pushed to swap — one deployment reached a 17.1 GB physical footprint for a 2.9 GB model, with a 5.2s clip degrading from ~2.0s to ~5.2s. The backend now calls `mx.clear_cache()` after each request, including on failure. Only the reusable cache is freed, not live arrays, so model weights stay resident and inference stays hot; measured cost is ~7.6 ms per request (~0.3%).
|
|
18
|
+
|
|
19
|
+
- **Require `mlx>=0.24` for the `mlx-whisper` extra** (#620). The top-level `mx.clear_cache()` does not exist before mlx 0.24 — 0.23.2 and older only expose the deprecated `mx.metal.clear_cache()` — and `mlx-whisper` itself only requires `mlx>=0.11`. Without the floor, an environment resolving an older mlx would raise `AttributeError` on every transcription.
|
|
20
|
+
|
|
21
|
+
## Internal
|
|
22
|
+
|
|
23
|
+
- Pin `uv` in the `uv-lock` and `sync-requirements` pre-commit hooks so the generated `agent_cli/_requirements/*.txt` files depend on the config rather than on how fresh each contributor's hook cache is (#620).
|
|
24
|
+
- Render the shared consoles without colour during tests (#625).
|
|
25
|
+
- Drop the broken Homebrew tap dispatch from the release workflow (#623).
|
|
26
|
+
]]></description>
|
|
27
|
+
<enclosure url="https://github.com/basnijholt/agent-cli/releases/download/v0.102.2/AgentCLI.zip" length="24329779" type="application/octet-stream" sparkle:edSignature="CeWZFIPSDJSiO8iQbm46QDRet3IYvIvgL4qSyYdDmwlTlkhV66IaXp05Wt04+xLBKTJcAv9333tA9n8BZ9IvBQ=="/>
|
|
28
|
+
</item>
|
|
29
|
+
<item>
|
|
30
|
+
<title>0.102.1</title>
|
|
31
|
+
<pubDate>Sat, 25 Jul 2026 18:58:28 +0000</pubDate>
|
|
32
|
+
<link>https://github.com/basnijholt/agent-cli</link>
|
|
33
|
+
<sparkle:version>198</sparkle:version>
|
|
34
|
+
<sparkle:shortVersionString>0.102.1</sparkle:shortVersionString>
|
|
35
|
+
<sparkle:minimumSystemVersion>13.0</sparkle:minimumSystemVersion>
|
|
36
|
+
<sparkle:hardwareRequirements>arm64</sparkle:hardwareRequirements>
|
|
37
|
+
<description sparkle:format="markdown"><![CDATA[## Bug fixes
|
|
38
|
+
|
|
39
|
+
* **Transcription now starts ~1.3s sooner after pressing the hotkey.** The macOS app spawned a login + interactive shell (`zsh -lic`) to discover `PATH` on *every* command it ran, costing 1.1–1.4s with a typical dotfiles setup. The recording pill appeared immediately but the microphone did not open until that shell finished, so speaking right away lost the first words. The login shell `PATH` is now resolved once per app launch, during the existing startup warm-up. Measured hotkey to first audio chunk: ~1.8s → ~0.4–0.6s. (#622)
|
|
40
|
+
* Only successful lookups are cached, so a login shell that fails once does not leave the app on a degraded `PATH` for the rest of the session.
|
|
41
|
+
* *Install or Update CLI* still re-probes, so a relocated `agent-cli` binary is picked up without restarting the app.
|
|
42
|
+
|
|
43
|
+
## Performance
|
|
44
|
+
|
|
45
|
+
* `agent-cli` no longer reads its own distribution metadata on startup. `__version__` resolves lazily, saving ~29ms on every command. (#622)
|
|
46
|
+
|
|
47
|
+
## Maintenance
|
|
48
|
+
|
|
49
|
+
* ⬆️ Update docker/login-action to v4.5.1 (#621, #619)
|
|
50
|
+
* ⬆️ Update actions/checkout to v7.0.1 (#617)
|
|
51
|
+
* ⬆️ Update release-drafter/release-drafter to v7.6.0 (#614)
|
|
52
|
+
* [pre-commit.ci] pre-commit autoupdate (#616)
|
|
53
|
+
]]></description>
|
|
54
|
+
<enclosure url="https://github.com/basnijholt/agent-cli/releases/download/v0.102.1/AgentCLI.zip" length="24329452" type="application/octet-stream" sparkle:edSignature="MQizz/9FfhxJGKQc6I/XXtIUBLVPh20yWi/kvfE7xBpoQGPF4yE4C0T1Ex1WpU3im/vRLrMIbZMv0+yHYTifBQ=="/>
|
|
55
|
+
</item>
|
|
7
56
|
<item>
|
|
8
57
|
<title>0.102.0</title>
|
|
9
58
|
<pubDate>Tue, 14 Jul 2026 05:57:01 +0000</pubDate>
|
|
@@ -148,37 +197,5 @@
|
|
|
148
197
|
]]></description>
|
|
149
198
|
<enclosure url="https://github.com/basnijholt/agent-cli/releases/download/v0.98.2/AgentCLI.zip" length="22896370" type="application/octet-stream" sparkle:edSignature="2yWD4AB0k4GCxWKbXVysPQ5Hy0ehhW9XYlLHTipGwOCscaa+ZDVvlzM2WQtQ1EHDIsMR07loArT6PGKbXyyEBg=="/>
|
|
150
199
|
</item>
|
|
151
|
-
<item>
|
|
152
|
-
<title>0.98.1</title>
|
|
153
|
-
<pubDate>Thu, 04 Jun 2026 16:50:48 +0000</pubDate>
|
|
154
|
-
<link>https://github.com/basnijholt/agent-cli</link>
|
|
155
|
-
<sparkle:version>189</sparkle:version>
|
|
156
|
-
<sparkle:shortVersionString>0.98.1</sparkle:shortVersionString>
|
|
157
|
-
<sparkle:minimumSystemVersion>13.0</sparkle:minimumSystemVersion>
|
|
158
|
-
<sparkle:hardwareRequirements>arm64</sparkle:hardwareRequirements>
|
|
159
|
-
<description sparkle:format="markdown"><![CDATA[## What’s Changed
|
|
160
|
-
|
|
161
|
-
* Add macOS transcription TTL setting (#578) @basnijholt
|
|
162
|
-
|
|
163
|
-
]]></description>
|
|
164
|
-
<enclosure url="https://github.com/basnijholt/agent-cli/releases/download/v0.98.1/AgentCLI.zip" length="22896191" type="application/octet-stream" sparkle:edSignature="4g9PD/is1i4Htq5eM2TfAUjxEaXSb7xJJDjnliSfX5TQfqeLLsItUcaCLbhpXaOKqzq0YByVg5SLSpqHK08vAw=="/>
|
|
165
|
-
</item>
|
|
166
|
-
<item>
|
|
167
|
-
<title>0.98.0</title>
|
|
168
|
-
<pubDate>Thu, 04 Jun 2026 16:25:34 +0000</pubDate>
|
|
169
|
-
<link>https://github.com/basnijholt/agent-cli</link>
|
|
170
|
-
<sparkle:version>188</sparkle:version>
|
|
171
|
-
<sparkle:shortVersionString>0.98.0</sparkle:shortVersionString>
|
|
172
|
-
<sparkle:minimumSystemVersion>13.0</sparkle:minimumSystemVersion>
|
|
173
|
-
<sparkle:hardwareRequirements>arm64</sparkle:hardwareRequirements>
|
|
174
|
-
<description sparkle:format="markdown"><![CDATA[## What’s Changed
|
|
175
|
-
|
|
176
|
-
* Document NeMo Parakeet setup (#573) @basnijholt
|
|
177
|
-
* Add macOS transcription backend picker (#574) @basnijholt
|
|
178
|
-
* Reference upstream NeMo validation_ds fix (#577) @basnijholt
|
|
179
|
-
|
|
180
|
-
]]></description>
|
|
181
|
-
<enclosure url="https://github.com/basnijholt/agent-cli/releases/download/v0.98.0/AgentCLI.zip" length="22891739" type="application/octet-stream" sparkle:edSignature="tC7V5Z+r9fyFe5GvISxKB2ExZJoyx8G7Qt/Zqnb1ELJcU6lm+0KSN3tx7d/BBm1Dbl8eKRiCorOATkTKE2HSCw=="/>
|
|
182
|
-
</item>
|
|
183
200
|
</channel>
|
|
184
201
|
</rss>
|
|
@@ -60,6 +60,10 @@ faster-whisper = ["agent-cli[server]", "faster-whisper>=1.0.0", "ctranslate2>=4.
|
|
|
60
60
|
mlx-whisper = [
|
|
61
61
|
"agent-cli[server]; sys_platform == 'darwin' and platform_machine == 'arm64'",
|
|
62
62
|
"mlx-whisper>=0.4.0; sys_platform == 'darwin' and platform_machine == 'arm64'",
|
|
63
|
+
# mlx-whisper only requires mlx>=0.11, but the MLX backend calls the
|
|
64
|
+
# top-level mx.clear_cache(), which does not exist before mlx 0.24
|
|
65
|
+
# (0.23.2 and older only expose the deprecated mx.metal.clear_cache).
|
|
66
|
+
"mlx>=0.24; sys_platform == 'darwin' and platform_machine == 'arm64'",
|
|
63
67
|
]
|
|
64
68
|
whisper-transformers = ["agent-cli[server]", "transformers>=4.30.0", "torch>=2.0.0"]
|
|
65
69
|
nemo-whisper = [
|
|
@@ -55,11 +55,31 @@ def mock_console() -> Console:
|
|
|
55
55
|
return Console(file=io.StringIO(), width=80, force_terminal=True)
|
|
56
56
|
|
|
57
57
|
|
|
58
|
+
def force_plain_console(console: Console) -> None:
|
|
59
|
+
"""Make a console audible and strip every escape sequence from its output.
|
|
60
|
+
|
|
61
|
+
`no_color` alone still emits bold and dim, so the colour system is switched
|
|
62
|
+
off outright.
|
|
63
|
+
"""
|
|
64
|
+
console.quiet = False
|
|
65
|
+
console.no_color = True
|
|
66
|
+
console._color_system = None
|
|
67
|
+
|
|
68
|
+
|
|
58
69
|
@pytest.fixture(autouse=True)
|
|
59
|
-
def
|
|
60
|
-
"""
|
|
61
|
-
|
|
62
|
-
|
|
70
|
+
def reset_rich_console_state() -> None:
|
|
71
|
+
"""Keep the shared consoles audible and plain for every test.
|
|
72
|
+
|
|
73
|
+
`quiet` is reset so JSON-mode CLI tests cannot silence later command output.
|
|
74
|
+
|
|
75
|
+
Colour is disabled because Rich honours `FORCE_COLOR` even when stdout is
|
|
76
|
+
captured, so a developer shell exporting it makes 29 tests fail on ANSI
|
|
77
|
+
escapes interleaved into otherwise-matching output. The consoles are mutated
|
|
78
|
+
in place rather than rebound: 17 modules hold a direct
|
|
79
|
+
`from agent_cli.core.utils import console` reference.
|
|
80
|
+
"""
|
|
81
|
+
for console in (utils.console, utils.err_console):
|
|
82
|
+
force_plain_console(console)
|
|
63
83
|
|
|
64
84
|
|
|
65
85
|
@pytest.fixture
|
|
@@ -534,6 +534,66 @@ class TestCopyEnvFiles:
|
|
|
534
534
|
copied = copy_env_files(source, dest)
|
|
535
535
|
assert len(copied) == 2
|
|
536
536
|
|
|
537
|
+
def test_copy_local_agent_instruction_files(self, tmp_path: Path) -> None:
|
|
538
|
+
"""Copy local agent instruction files."""
|
|
539
|
+
source = tmp_path / "source"
|
|
540
|
+
dest = tmp_path / "dest"
|
|
541
|
+
source.mkdir()
|
|
542
|
+
dest.mkdir()
|
|
543
|
+
files = {
|
|
544
|
+
"AGENTS.local.md": "Use pytest.\n",
|
|
545
|
+
"CLAUDE.local.md": "Use ruff.\n",
|
|
546
|
+
}
|
|
547
|
+
for name, content in files.items():
|
|
548
|
+
(source / name).write_text(content)
|
|
549
|
+
|
|
550
|
+
copied = copy_env_files(source, dest)
|
|
551
|
+
|
|
552
|
+
assert {path.name for path in copied} == set(files)
|
|
553
|
+
for name, content in files.items():
|
|
554
|
+
assert (dest / name).read_text() == content
|
|
555
|
+
|
|
556
|
+
@pytest.mark.parametrize("name", ["AGENTS.local.md", "CLAUDE.local.md"])
|
|
557
|
+
def test_preserve_existing_local_agent_instruction_file(
|
|
558
|
+
self,
|
|
559
|
+
tmp_path: Path,
|
|
560
|
+
name: str,
|
|
561
|
+
) -> None:
|
|
562
|
+
"""Preserve local agent instructions checked out by the target branch."""
|
|
563
|
+
source = tmp_path / "source"
|
|
564
|
+
dest = tmp_path / "dest"
|
|
565
|
+
source.mkdir()
|
|
566
|
+
dest.mkdir()
|
|
567
|
+
(source / name).write_text("main worktree instructions\n")
|
|
568
|
+
(dest / name).write_text("target branch instructions\n")
|
|
569
|
+
|
|
570
|
+
copied = copy_env_files(source, dest)
|
|
571
|
+
|
|
572
|
+
assert copied == []
|
|
573
|
+
assert (dest / name).read_text() == "target branch instructions\n"
|
|
574
|
+
|
|
575
|
+
def test_preserve_dangling_local_agent_instruction_symlink(
|
|
576
|
+
self,
|
|
577
|
+
tmp_path: Path,
|
|
578
|
+
) -> None:
|
|
579
|
+
"""Preserve a dangling instruction symlink checked out by the target branch."""
|
|
580
|
+
source = tmp_path / "source"
|
|
581
|
+
dest = tmp_path / "dest"
|
|
582
|
+
source.mkdir()
|
|
583
|
+
dest.mkdir()
|
|
584
|
+
(source / "AGENTS.local.md").write_text("main worktree instructions\n")
|
|
585
|
+
dest_file = dest / "AGENTS.local.md"
|
|
586
|
+
try:
|
|
587
|
+
dest_file.symlink_to("missing-instructions.md")
|
|
588
|
+
except OSError as exc:
|
|
589
|
+
pytest.skip(f"Symlinks unavailable: {exc}")
|
|
590
|
+
|
|
591
|
+
copied = copy_env_files(source, dest)
|
|
592
|
+
|
|
593
|
+
assert copied == []
|
|
594
|
+
assert dest_file.is_symlink()
|
|
595
|
+
assert not (dest / "missing-instructions.md").exists()
|
|
596
|
+
|
|
537
597
|
def test_skip_missing_files(self, tmp_path: Path) -> None:
|
|
538
598
|
"""Skip files that don't exist."""
|
|
539
599
|
source = tmp_path / "source"
|
|
@@ -346,12 +346,11 @@ def test_release_workflow_publishes_macos_app_asset() -> None:
|
|
|
346
346
|
assert "NOTARIZE=1" in workflow
|
|
347
347
|
assert "gh release upload" in workflow
|
|
348
348
|
assert "dist/macos/AgentCLI.dmg" in workflow
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
assert "
|
|
353
|
-
assert "
|
|
354
|
-
assert "client_payload[asset_url]" in workflow
|
|
349
|
+
# The tap owns its own updates: basnijholt/homebrew-tap runs a daily cron that
|
|
350
|
+
# reads the latest release. Dispatching from here only duplicated that with an
|
|
351
|
+
# expiring cross-repo token, whose 401 turned every release run red.
|
|
352
|
+
assert "HOMEBREW_TAP_DISPATCH_TOKEN" not in workflow
|
|
353
|
+
assert "repos/basnijholt/homebrew-tap/dispatches" not in workflow
|
|
355
354
|
assert "python3 .github/scripts/normalize_appcast.py macos/appcast.xml" in workflow
|
|
356
355
|
assert workflow.index(
|
|
357
356
|
"python3 .github/scripts/normalize_appcast.py macos/appcast.xml"
|