agent-cli 0.94.0__tar.gz → 0.94.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (395) hide show
  1. {agent_cli-0.94.0 → agent_cli-0.94.1}/.pre-commit-config.yaml +2 -2
  2. {agent_cli-0.94.0 → agent_cli-0.94.1}/PKG-INFO +1 -1
  3. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/core/deps.py +7 -2
  4. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/server/cli.py +37 -9
  5. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_requires_extras.py +66 -0
  6. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_server_tts.py +74 -0
  7. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_server_whisper.py +60 -0
  8. {agent_cli-0.94.0 → agent_cli-0.94.1}/.claude/skills/agent-cli-dev/SKILL.md +0 -0
  9. {agent_cli-0.94.0 → agent_cli-0.94.1}/.claude/skills/agent-cli-dev/examples.md +0 -0
  10. {agent_cli-0.94.0 → agent_cli-0.94.1}/.claude-plugin/README.md +0 -0
  11. {agent_cli-0.94.0 → agent_cli-0.94.1}/.claude-plugin/marketplace.json +0 -0
  12. {agent_cli-0.94.0 → agent_cli-0.94.1}/.claude-plugin/plugin.json +0 -0
  13. {agent_cli-0.94.0 → agent_cli-0.94.1}/.claude-plugin/skills/agent-cli-dev/SKILL.md +0 -0
  14. {agent_cli-0.94.0 → agent_cli-0.94.1}/.claude-plugin/skills/agent-cli-dev/examples.md +0 -0
  15. {agent_cli-0.94.0 → agent_cli-0.94.1}/.cursorrules +0 -0
  16. {agent_cli-0.94.0 → agent_cli-0.94.1}/.dockerignore +0 -0
  17. {agent_cli-0.94.0 → agent_cli-0.94.1}/.env.example +0 -0
  18. {agent_cli-0.94.0 → agent_cli-0.94.1}/.github/logo.svg +0 -0
  19. {agent_cli-0.94.0 → agent_cli-0.94.1}/.github/release-drafter.yml +0 -0
  20. {agent_cli-0.94.0 → agent_cli-0.94.1}/.github/renovate.json +0 -0
  21. {agent_cli-0.94.0 → agent_cli-0.94.1}/.github/scripts/check_extras_sync.py +0 -0
  22. {agent_cli-0.94.0 → agent_cli-0.94.1}/.github/scripts/check_plugin_skill_sync.py +0 -0
  23. {agent_cli-0.94.0 → agent_cli-0.94.1}/.github/scripts/sync_extras.py +0 -0
  24. {agent_cli-0.94.0 → agent_cli-0.94.1}/.github/scripts/sync_requirements.py +0 -0
  25. {agent_cli-0.94.0 → agent_cli-0.94.1}/.github/workflows/automerge.yml +0 -0
  26. {agent_cli-0.94.0 → agent_cli-0.94.1}/.github/workflows/docker.yml +0 -0
  27. {agent_cli-0.94.0 → agent_cli-0.94.1}/.github/workflows/docs.yml +0 -0
  28. {agent_cli-0.94.0 → agent_cli-0.94.1}/.github/workflows/markdown-code-runner.yml +0 -0
  29. {agent_cli-0.94.0 → agent_cli-0.94.1}/.github/workflows/pytest.yml +0 -0
  30. {agent_cli-0.94.0 → agent_cli-0.94.1}/.github/workflows/release-drafter.yml +0 -0
  31. {agent_cli-0.94.0 → agent_cli-0.94.1}/.github/workflows/release.yml +0 -0
  32. {agent_cli-0.94.0 → agent_cli-0.94.1}/.github/workflows/toc.yaml +0 -0
  33. {agent_cli-0.94.0 → agent_cli-0.94.1}/.gitignore +0 -0
  34. {agent_cli-0.94.0 → agent_cli-0.94.1}/.jscpd.json +0 -0
  35. {agent_cli-0.94.0 → agent_cli-0.94.1}/.prompts/docs-review.md +0 -0
  36. {agent_cli-0.94.0 → agent_cli-0.94.1}/.prompts/pr-review.md +0 -0
  37. {agent_cli-0.94.0 → agent_cli-0.94.1}/CLAUDE.md +0 -0
  38. {agent_cli-0.94.0 → agent_cli-0.94.1}/LICENSE +0 -0
  39. {agent_cli-0.94.0 → agent_cli-0.94.1}/LLAMA_SERVER_USAGE.md +0 -0
  40. {agent_cli-0.94.0 → agent_cli-0.94.1}/README.md +0 -0
  41. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/__init__.py +0 -0
  42. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/__main__.py +0 -0
  43. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/_extras.json +0 -0
  44. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/_requirements/.gitkeep +0 -0
  45. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/_requirements/audio.txt +0 -0
  46. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/_requirements/diarization.txt +0 -0
  47. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/_requirements/faster-whisper.txt +0 -0
  48. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/_requirements/kokoro.txt +0 -0
  49. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/_requirements/llm.txt +0 -0
  50. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/_requirements/memory.txt +0 -0
  51. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/_requirements/mlx-whisper.txt +0 -0
  52. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/_requirements/piper.txt +0 -0
  53. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/_requirements/rag.txt +0 -0
  54. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/_requirements/server.txt +0 -0
  55. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/_requirements/speed.txt +0 -0
  56. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/_requirements/vad.txt +0 -0
  57. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/_requirements/vectordb.txt +0 -0
  58. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/_requirements/whisper-transformers.txt +0 -0
  59. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/_requirements/wyoming.txt +0 -0
  60. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/_tools.py +0 -0
  61. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/agents/__init__.py +0 -0
  62. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/agents/_voice_agent_common.py +0 -0
  63. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/agents/assistant.py +0 -0
  64. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/agents/autocorrect.py +0 -0
  65. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/agents/chat.py +0 -0
  66. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/agents/diarize_live_session.py +0 -0
  67. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/agents/memory/__init__.py +0 -0
  68. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/agents/memory/add.py +0 -0
  69. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/agents/memory/proxy.py +0 -0
  70. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/agents/rag_proxy.py +0 -0
  71. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/agents/speak.py +0 -0
  72. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/agents/speakers.py +0 -0
  73. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/agents/transcribe.py +0 -0
  74. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/agents/transcribe_live.py +0 -0
  75. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/agents/voice_edit.py +0 -0
  76. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/api.py +0 -0
  77. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/cli.py +0 -0
  78. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/config.py +0 -0
  79. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/config_cmd.py +0 -0
  80. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/constants.py +0 -0
  81. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/core/__init__.py +0 -0
  82. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/core/alignment.py +0 -0
  83. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/core/audio.py +0 -0
  84. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/core/audio_format.py +0 -0
  85. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/core/chroma.py +0 -0
  86. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/core/diarization.py +0 -0
  87. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/core/openai_proxy.py +0 -0
  88. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/core/process.py +0 -0
  89. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/core/reranker.py +0 -0
  90. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/core/speaker_identity.py +0 -0
  91. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/core/sse.py +0 -0
  92. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/core/transcription_logger.py +0 -0
  93. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/core/utils.py +0 -0
  94. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/core/vad.py +0 -0
  95. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/core/watch.py +0 -0
  96. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/daemon/__init__.py +0 -0
  97. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/daemon/cli.py +0 -0
  98. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/__init__.py +0 -0
  99. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/_branch_name.py +0 -0
  100. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/_config.py +0 -0
  101. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/_output.py +0 -0
  102. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/cleanup.py +0 -0
  103. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/cli.py +0 -0
  104. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/coding_agents/__init__.py +0 -0
  105. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/coding_agents/aider.py +0 -0
  106. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/coding_agents/base.py +0 -0
  107. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/coding_agents/claude.py +0 -0
  108. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/coding_agents/codex.py +0 -0
  109. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/coding_agents/continue_dev.py +0 -0
  110. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/coding_agents/copilot.py +0 -0
  111. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/coding_agents/cursor_agent.py +0 -0
  112. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/coding_agents/gemini.py +0 -0
  113. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/coding_agents/opencode.py +0 -0
  114. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/coding_agents/registry.py +0 -0
  115. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/editors/__init__.py +0 -0
  116. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/editors/base.py +0 -0
  117. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/editors/cursor.py +0 -0
  118. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/editors/emacs.py +0 -0
  119. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/editors/jetbrains.py +0 -0
  120. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/editors/nano.py +0 -0
  121. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/editors/neovim.py +0 -0
  122. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/editors/registry.py +0 -0
  123. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/editors/sublime.py +0 -0
  124. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/editors/vim.py +0 -0
  125. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/editors/vscode.py +0 -0
  126. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/editors/zed.py +0 -0
  127. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/hooks.py +0 -0
  128. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/launch.py +0 -0
  129. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/project.py +0 -0
  130. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/registry.py +0 -0
  131. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/skill/SKILL.md +0 -0
  132. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/skill/examples.md +0 -0
  133. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/terminals/__init__.py +0 -0
  134. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/terminals/apple_terminal.py +0 -0
  135. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/terminals/base.py +0 -0
  136. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/terminals/gnome.py +0 -0
  137. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/terminals/iterm2.py +0 -0
  138. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/terminals/kitty.py +0 -0
  139. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/terminals/registry.py +0 -0
  140. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/terminals/tmux.py +0 -0
  141. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/terminals/warp.py +0 -0
  142. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/terminals/zellij.py +0 -0
  143. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/dev/worktree.py +0 -0
  144. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/docs_gen.py +0 -0
  145. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/example-config.toml +0 -0
  146. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/install/__init__.py +0 -0
  147. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/install/common.py +0 -0
  148. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/install/extras.py +0 -0
  149. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/install/hotkeys.py +0 -0
  150. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/install/launchd.py +0 -0
  151. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/install/service_config.py +0 -0
  152. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/install/services.py +0 -0
  153. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/install/systemd.py +0 -0
  154. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/memory/__init__.py +0 -0
  155. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/memory/_files.py +0 -0
  156. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/memory/_filters.py +0 -0
  157. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/memory/_git.py +0 -0
  158. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/memory/_indexer.py +0 -0
  159. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/memory/_ingest.py +0 -0
  160. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/memory/_persistence.py +0 -0
  161. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/memory/_prompt.py +0 -0
  162. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/memory/_retrieval.py +0 -0
  163. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/memory/_store.py +0 -0
  164. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/memory/_streaming.py +0 -0
  165. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/memory/_tasks.py +0 -0
  166. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/memory/api.py +0 -0
  167. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/memory/client.py +0 -0
  168. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/memory/engine.py +0 -0
  169. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/memory/entities.py +0 -0
  170. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/memory/models.py +0 -0
  171. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/opts.py +0 -0
  172. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/py.typed +0 -0
  173. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/rag/__init__.py +0 -0
  174. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/rag/_indexer.py +0 -0
  175. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/rag/_indexing.py +0 -0
  176. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/rag/_prompt.py +0 -0
  177. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/rag/_retriever.py +0 -0
  178. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/rag/_store.py +0 -0
  179. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/rag/_utils.py +0 -0
  180. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/rag/api.py +0 -0
  181. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/rag/client.py +0 -0
  182. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/rag/engine.py +0 -0
  183. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/rag/models.py +0 -0
  184. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/scripts/.runtime/.gitkeep +0 -0
  185. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/scripts/__init__.py +0 -0
  186. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/scripts/linux-hotkeys/README.md +0 -0
  187. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh +0 -0
  188. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh +0 -0
  189. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/scripts/linux-hotkeys/toggle-voice-edit.sh +0 -0
  190. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/scripts/macos-hotkeys/README.md +0 -0
  191. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/scripts/macos-hotkeys/skhd-config-example +0 -0
  192. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/scripts/macos-hotkeys/toggle-autocorrect.sh +0 -0
  193. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/scripts/macos-hotkeys/toggle-transcription.sh +0 -0
  194. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/scripts/macos-hotkeys/toggle-voice-edit.sh +0 -0
  195. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/scripts/nvidia-asr-server/README.md +0 -0
  196. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/scripts/nvidia-asr-server/pyproject.toml +0 -0
  197. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/scripts/nvidia-asr-server/server.py +0 -0
  198. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/scripts/nvidia-asr-server/shell.nix +0 -0
  199. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/scripts/nvidia-asr-server/uv.lock +0 -0
  200. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/scripts/run-openwakeword.sh +0 -0
  201. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/scripts/setup-linux-hotkeys.sh +0 -0
  202. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/scripts/setup-linux.sh +0 -0
  203. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/scripts/setup-macos-hotkeys.sh +0 -0
  204. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/scripts/setup-macos.sh +0 -0
  205. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/scripts/setup-windows.ps1 +0 -0
  206. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/scripts/start-all-services-windows.ps1 +0 -0
  207. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/scripts/start-all-services.sh +0 -0
  208. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/server/__init__.py +0 -0
  209. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/server/common.py +0 -0
  210. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/server/model_manager.py +0 -0
  211. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/server/model_registry.py +0 -0
  212. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/server/proxy/__init__.py +0 -0
  213. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/server/proxy/api.py +0 -0
  214. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/server/streaming.py +0 -0
  215. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/server/tts/__init__.py +0 -0
  216. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/server/tts/api.py +0 -0
  217. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/server/tts/backends/__init__.py +0 -0
  218. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/server/tts/backends/base.py +0 -0
  219. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/server/tts/backends/kokoro.py +0 -0
  220. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/server/tts/backends/piper.py +0 -0
  221. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/server/tts/model_manager.py +0 -0
  222. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/server/tts/model_registry.py +0 -0
  223. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/server/tts/wyoming_handler.py +0 -0
  224. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/server/whisper/__init__.py +0 -0
  225. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/server/whisper/api.py +0 -0
  226. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/server/whisper/backends/__init__.py +0 -0
  227. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/server/whisper/backends/base.py +0 -0
  228. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/server/whisper/backends/faster_whisper.py +0 -0
  229. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/server/whisper/backends/mlx.py +0 -0
  230. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/server/whisper/backends/transformers.py +0 -0
  231. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/server/whisper/languages.py +0 -0
  232. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/server/whisper/model_manager.py +0 -0
  233. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/server/whisper/model_registry.py +0 -0
  234. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/server/whisper/wyoming_handler.py +0 -0
  235. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/services/__init__.py +0 -0
  236. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/services/_wyoming_utils.py +0 -0
  237. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/services/asr.py +0 -0
  238. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/services/llm.py +0 -0
  239. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/services/tts.py +0 -0
  240. {agent_cli-0.94.0 → agent_cli-0.94.1}/agent_cli/services/wake_word.py +0 -0
  241. {agent_cli-0.94.0 → agent_cli-0.94.1}/docker/docker-compose.yml +0 -0
  242. {agent_cli-0.94.0 → agent_cli-0.94.1}/docker/memory-proxy.Dockerfile +0 -0
  243. {agent_cli-0.94.0 → agent_cli-0.94.1}/docker/rag-proxy.Dockerfile +0 -0
  244. {agent_cli-0.94.0 → agent_cli-0.94.1}/docker/transcribe-proxy.Dockerfile +0 -0
  245. {agent_cli-0.94.0 → agent_cli-0.94.1}/docker/tts.Dockerfile +0 -0
  246. {agent_cli-0.94.0 → agent_cli-0.94.1}/docker/whisper.Dockerfile +0 -0
  247. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/CNAME +0 -0
  248. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/architecture/index.md +0 -0
  249. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/architecture/memory.md +0 -0
  250. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/architecture/rag.md +0 -0
  251. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/commands/assistant.md +0 -0
  252. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/commands/autocorrect.md +0 -0
  253. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/commands/chat.md +0 -0
  254. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/commands/config.md +0 -0
  255. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/commands/daemon.md +0 -0
  256. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/commands/dev.md +0 -0
  257. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/commands/diarize-live-session.md +0 -0
  258. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/commands/index.md +0 -0
  259. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/commands/install-extras.md +0 -0
  260. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/commands/install-hotkeys.md +0 -0
  261. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/commands/install-services.md +0 -0
  262. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/commands/memory.md +0 -0
  263. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/commands/rag-proxy.md +0 -0
  264. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/commands/server/index.md +0 -0
  265. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/commands/server/transcribe-proxy.md +0 -0
  266. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/commands/server/tts.md +0 -0
  267. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/commands/server/whisper.md +0 -0
  268. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/commands/speak.md +0 -0
  269. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/commands/speakers.md +0 -0
  270. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/commands/start-services.md +0 -0
  271. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/commands/transcribe-live.md +0 -0
  272. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/commands/transcribe.md +0 -0
  273. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/commands/voice-edit.md +0 -0
  274. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/configuration.md +0 -0
  275. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/getting-started.md +0 -0
  276. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/iOS_Shortcut_Guide.md +0 -0
  277. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/index.md +0 -0
  278. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/installation/docker.md +0 -0
  279. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/installation/index.md +0 -0
  280. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/installation/linux.md +0 -0
  281. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/installation/macos.md +0 -0
  282. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/installation/nixos.md +0 -0
  283. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/installation/windows.md +0 -0
  284. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/logo-clean.svg +0 -0
  285. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
  286. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/run_markdown_code_runner.py +0 -0
  287. {agent_cli-0.94.0 → agent_cli-0.94.1}/docs/system-integration.md +0 -0
  288. {agent_cli-0.94.0 → agent_cli-0.94.1}/example.agent-cli-config.toml +0 -0
  289. {agent_cli-0.94.0 → agent_cli-0.94.1}/justfile +0 -0
  290. {agent_cli-0.94.0 → agent_cli-0.94.1}/pyproject.toml +0 -0
  291. {agent_cli-0.94.0 → agent_cli-0.94.1}/reddit.md +0 -0
  292. {agent_cli-0.94.0 → agent_cli-0.94.1}/shell.nix +0 -0
  293. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/__init__.py +0 -0
  294. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/agents/__init__.py +0 -0
  295. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/agents/test_fix_my_text.py +0 -0
  296. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/agents/test_interactive.py +0 -0
  297. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/agents/test_interactive_extra.py +0 -0
  298. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/agents/test_memory_add.py +0 -0
  299. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/agents/test_speak.py +0 -0
  300. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/agents/test_speak_e2e.py +0 -0
  301. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/agents/test_speakers.py +0 -0
  302. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/agents/test_transcribe.py +0 -0
  303. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/agents/test_transcribe_agent.py +0 -0
  304. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/agents/test_transcribe_e2e.py +0 -0
  305. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/agents/test_transcribe_live.py +0 -0
  306. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/agents/test_transcribe_recovery.py +0 -0
  307. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/agents/test_tts_common.py +0 -0
  308. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/agents/test_tts_common_extra.py +0 -0
  309. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/agents/test_voice_agent_common.py +0 -0
  310. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/agents/test_voice_edit.py +0 -0
  311. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/agents/test_voice_edit_e2e.py +0 -0
  312. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/agents/test_wake_word_assistant.py +0 -0
  313. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/conftest.py +0 -0
  314. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/core/__init__.py +0 -0
  315. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/core/test_audio.py +0 -0
  316. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/core/test_audio_format.py +0 -0
  317. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/core/test_chroma.py +0 -0
  318. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/core/test_sse.py +0 -0
  319. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/core/test_vad.py +0 -0
  320. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/core/test_watch.py +0 -0
  321. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/dev/__init__.py +0 -0
  322. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/dev/test_cleanup.py +0 -0
  323. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/dev/test_cli.py +0 -0
  324. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/dev/test_coding_agents.py +0 -0
  325. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/dev/test_editors.py +0 -0
  326. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/dev/test_hooks.py +0 -0
  327. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/dev/test_launch.py +0 -0
  328. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/dev/test_project.py +0 -0
  329. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/dev/test_terminals.py +0 -0
  330. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/dev/test_verification.py +0 -0
  331. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/dev/test_worktree.py +0 -0
  332. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/install/__init__.py +0 -0
  333. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/install/test_extras.py +0 -0
  334. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/install/test_launchd.py +0 -0
  335. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/memory/__init__.py +0 -0
  336. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/memory/test_api_health.py +0 -0
  337. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/memory/test_api_integration_liveish.py +0 -0
  338. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/memory/test_client.py +0 -0
  339. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/memory/test_engine.py +0 -0
  340. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/memory/test_files.py +0 -0
  341. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/memory/test_filters.py +0 -0
  342. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/memory/test_git_integration.py +0 -0
  343. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/memory/test_indexer.py +0 -0
  344. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/memory/test_memory_integration.py +0 -0
  345. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/memory/test_proxy_passthrough.py +0 -0
  346. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/memory/test_store.py +0 -0
  347. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/memory/test_utils.py +0 -0
  348. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/mocks/__init__.py +0 -0
  349. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/mocks/audio.py +0 -0
  350. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/mocks/llm.py +0 -0
  351. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/mocks/wyoming.py +0 -0
  352. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/rag/__init__.py +0 -0
  353. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/rag/test_api.py +0 -0
  354. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/rag/test_engine.py +0 -0
  355. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/rag/test_history.py +0 -0
  356. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/rag/test_indexer.py +0 -0
  357. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/rag/test_indexing.py +0 -0
  358. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/rag/test_rag_client.py +0 -0
  359. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/rag/test_rag_integration_liveish.py +0 -0
  360. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/rag/test_rag_proxy_passthrough.py +0 -0
  361. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/rag/test_retriever.py +0 -0
  362. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/rag/test_store.py +0 -0
  363. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/rag/test_utils.py +0 -0
  364. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_alignment.py +0 -0
  365. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_api.py +0 -0
  366. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_api_integration.py +0 -0
  367. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_asr.py +0 -0
  368. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_asr_recovery.py +0 -0
  369. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_audio_e2e.py +0 -0
  370. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_cli.py +0 -0
  371. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_config.py +0 -0
  372. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_config_cmd.py +0 -0
  373. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_daemon.py +0 -0
  374. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_diarization.py +0 -0
  375. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_diarize_live_session.py +0 -0
  376. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_docs_gen.py +0 -0
  377. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_env_vars.py +0 -0
  378. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_faster_whisper_backend.py +0 -0
  379. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_json_output.py +0 -0
  380. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_llm.py +0 -0
  381. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_llm_gemini.py +0 -0
  382. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_memory_tools.py +0 -0
  383. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_mlx_backend.py +0 -0
  384. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_process_manager.py +0 -0
  385. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_server_streaming.py +0 -0
  386. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_services.py +0 -0
  387. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_speaker_identity.py +0 -0
  388. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_tools.py +0 -0
  389. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_transformers_backend.py +0 -0
  390. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_tts.py +0 -0
  391. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_utils.py +0 -0
  392. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_wake_word.py +0 -0
  393. {agent_cli-0.94.0 → agent_cli-0.94.1}/tests/test_wyoming_utils.py +0 -0
  394. {agent_cli-0.94.0 → agent_cli-0.94.1}/uv.lock +0 -0
  395. {agent_cli-0.94.0 → agent_cli-0.94.1}/zensical.toml +0 -0
@@ -11,13 +11,13 @@ repos:
11
11
  - id: end-of-file-fixer
12
12
  - id: mixed-line-ending
13
13
  - repo: https://github.com/astral-sh/ruff-pre-commit
14
- rev: "v0.15.12"
14
+ rev: "v0.15.13"
15
15
  hooks:
16
16
  - id: ruff
17
17
  args: ["--fix"]
18
18
  - id: ruff-format
19
19
  - repo: https://github.com/pre-commit/mirrors-mypy
20
- rev: "v1.20.2"
20
+ rev: "v2.1.0"
21
21
  hooks:
22
22
  - id: mypy
23
23
  additional_dependencies: ["types-PyYAML"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-cli
3
- Version: 0.94.0
3
+ Version: 0.94.1
4
4
  Summary: A suite of AI-powered command-line tools for text correction, audio transcription, and voice assistance.
5
5
  Project-URL: Homepage, https://github.com/basnijholt/agent-cli
6
6
  Author-email: Bas Nijholt <bas@nijho.lt>
@@ -385,7 +385,11 @@ def _should_skip_extra_check_for_process_control(
385
385
  return process.is_process_running(process_name)
386
386
 
387
387
 
388
- def requires_extras(*extras: str, process_name: str | None = None) -> Callable[[F], F]:
388
+ def requires_extras(
389
+ *extras: str,
390
+ process_name: str | None = None,
391
+ resolve_extras: Callable[[dict[str, object]], tuple[str, ...]] | None = None,
392
+ ) -> Callable[[F], F]:
389
393
  """Decorator to declare required extras for a command.
390
394
 
391
395
  Auto-installs missing extras by default. Disable via AGENT_CLI_NO_AUTO_INSTALL=1
@@ -399,7 +403,8 @@ def requires_extras(*extras: str, process_name: str | None = None) -> Callable[[
399
403
  def wrapper(*args: object, **kwargs: object) -> object:
400
404
  if _should_skip_extra_check_for_process_control(kwargs, process_name):
401
405
  return func(*args, **kwargs)
402
- if _check_and_install_extras(extras):
406
+ required_extras = resolve_extras(kwargs) if resolve_extras is not None else extras
407
+ if _check_and_install_extras(required_extras):
403
408
  raise typer.Exit(1)
404
409
  return func(*args, **kwargs)
405
410
 
@@ -87,6 +87,13 @@ def _check_server_deps() -> None:
87
87
  raise typer.Exit(1)
88
88
 
89
89
 
90
+ def _resolve_tts_required_extras(kwargs: dict[str, object]) -> tuple[str, ...]:
91
+ """Choose the TTS backend extra after Typer has parsed --backend."""
92
+ backend = kwargs.get("backend")
93
+ backend_extra = backend if backend in ("piper", "kokoro") else "piper|kokoro"
94
+ return ("server", str(backend_extra), "wyoming")
95
+
96
+
90
97
  def _check_tts_deps(backend: str = "auto") -> None:
91
98
  """Check that TTS dependencies are available."""
92
99
  _check_server_deps()
@@ -95,8 +102,8 @@ def _check_tts_deps(backend: str = "auto") -> None:
95
102
  if not _has("kokoro"):
96
103
  err_console.print(
97
104
  "[bold red]Error:[/bold red] Kokoro backend requires kokoro. "
98
- "Run: [cyan]pip install agent-cli\\[tts-kokoro][/cyan] "
99
- "or [cyan]uv sync --extra tts-kokoro[/cyan]",
105
+ "Run: [cyan]pip install agent-cli\\[kokoro][/cyan] "
106
+ "or [cyan]uv sync --extra kokoro[/cyan]",
100
107
  )
101
108
  raise typer.Exit(1)
102
109
  return
@@ -105,8 +112,8 @@ def _check_tts_deps(backend: str = "auto") -> None:
105
112
  if not _has("piper"):
106
113
  err_console.print(
107
114
  "[bold red]Error:[/bold red] Piper backend requires piper-tts. "
108
- "Run: [cyan]pip install agent-cli\\[tts][/cyan] "
109
- "or [cyan]uv sync --extra tts[/cyan]",
115
+ "Run: [cyan]pip install agent-cli\\[piper][/cyan] "
116
+ "or [cyan]uv sync --extra piper[/cyan]",
110
117
  )
111
118
  raise typer.Exit(1)
112
119
  return
@@ -115,8 +122,8 @@ def _check_tts_deps(backend: str = "auto") -> None:
115
122
  if not _has("piper") and not _has("kokoro"):
116
123
  err_console.print(
117
124
  "[bold red]Error:[/bold red] No TTS backend available. "
118
- "Run: [cyan]pip install agent-cli\\[tts][/cyan] for Piper "
119
- "or [cyan]pip install agent-cli\\[tts-kokoro][/cyan] for Kokoro",
125
+ "Run: [cyan]pip install agent-cli\\[piper][/cyan] for Piper "
126
+ "or [cyan]pip install agent-cli\\[kokoro][/cyan] for Kokoro",
120
127
  )
121
128
  raise typer.Exit(1)
122
129
 
@@ -169,7 +176,8 @@ def _check_whisper_deps(backend: str, *, download_only: bool = False) -> None:
169
176
  if not _has("mlx_whisper"):
170
177
  err_console.print(
171
178
  "[bold red]Error:[/bold red] MLX Whisper backend requires mlx-whisper. "
172
- "Run: [cyan]pip install mlx-whisper[/cyan]",
179
+ "Run: [cyan]pip install agent-cli\\[mlx-whisper][/cyan] "
180
+ "or [cyan]uv sync --extra mlx-whisper[/cyan]",
173
181
  )
174
182
  raise typer.Exit(1)
175
183
  return
@@ -233,6 +241,21 @@ def _check_transformers_audio_model_deps(models: list[str]) -> None:
233
241
  raise typer.Exit(1)
234
242
 
235
243
 
244
+ def _resolve_whisper_required_extras(kwargs: dict[str, object]) -> tuple[str, ...]:
245
+ """Choose the Whisper backend extra after Typer has parsed --backend."""
246
+ backend_extras = {
247
+ "faster-whisper": "faster-whisper",
248
+ "mlx": "mlx-whisper",
249
+ "transformers": "whisper-transformers",
250
+ }
251
+ backend = kwargs.get("backend")
252
+ backend_extra = backend_extras.get(
253
+ str(backend),
254
+ "faster-whisper|mlx-whisper|whisper-transformers",
255
+ )
256
+ return ("server", backend_extra, "wyoming")
257
+
258
+
236
259
  def _print_optional_whisper_config(
237
260
  *,
238
261
  default_language: str | None,
@@ -249,7 +272,12 @@ def _print_optional_whisper_config(
249
272
 
250
273
 
251
274
  @app.command("whisper")
252
- @requires_extras("server", "faster-whisper|mlx-whisper|whisper-transformers", "wyoming")
275
+ @requires_extras(
276
+ "server",
277
+ "faster-whisper|mlx-whisper|whisper-transformers",
278
+ "wyoming",
279
+ resolve_extras=_resolve_whisper_required_extras,
280
+ )
253
281
  def whisper_cmd( # noqa: PLR0912, PLR0915
254
282
  model: Annotated[
255
283
  list[str] | None,
@@ -639,7 +667,7 @@ def transcribe_proxy_cmd(
639
667
 
640
668
 
641
669
  @app.command("tts")
642
- @requires_extras("server", "piper|kokoro", "wyoming")
670
+ @requires_extras("server", "piper|kokoro", "wyoming", resolve_extras=_resolve_tts_required_extras)
643
671
  def tts_cmd( # noqa: PLR0915
644
672
  model: Annotated[
645
673
  list[str] | None,
@@ -2,7 +2,9 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import ast
5
6
  import os
7
+ from pathlib import Path
6
8
  from unittest.mock import patch
7
9
 
8
10
  import pytest
@@ -33,6 +35,32 @@ class TestRequiresExtrasDecorator:
33
35
  assert hasattr(sample_command, "_required_extras")
34
36
  assert sample_command._required_extras == ("audio", "llm")
35
37
 
38
+ def test_decorator_uses_runtime_extras_resolver(self) -> None:
39
+ """Commands can choose concrete extras after Typer parses options."""
40
+
41
+ def resolve_extras(kwargs: dict[str, object]) -> tuple[str, ...]:
42
+ backend = kwargs["backend"]
43
+ return ("server", str(backend), "wyoming")
44
+
45
+ @requires_extras(
46
+ "server",
47
+ "piper|kokoro",
48
+ "wyoming",
49
+ resolve_extras=resolve_extras,
50
+ )
51
+ def sample_command(*, backend: str) -> str:
52
+ return f"success:{backend}"
53
+
54
+ with patch("agent_cli.core.deps._check_and_install_extras", return_value=[]) as mock_check:
55
+ assert sample_command(backend="kokoro") == "success:kokoro"
56
+
57
+ mock_check.assert_called_once_with(("server", "kokoro", "wyoming"))
58
+ assert getattr(sample_command, "_required_extras") == ( # noqa: B009
59
+ "server",
60
+ "piper|kokoro",
61
+ "wyoming",
62
+ )
63
+
36
64
  def test__get_install_hint_with_pipe_syntax(self) -> None:
37
65
  """Pipe syntax shows all alternatives in the hint."""
38
66
  hint = _get_install_hint("piper|kokoro")
@@ -43,6 +71,44 @@ class TestRequiresExtrasDecorator:
43
71
  assert "agent-cli\\[piper]" in hint
44
72
  assert "agent-cli\\[kokoro]" in hint
45
73
 
74
+ def test_commands_with_alternative_extras_have_runtime_resolver(self) -> None:
75
+ """Alternative extras on commands need a resolver for explicit backend options."""
76
+ repo_root = Path(__file__).resolve().parents[1]
77
+ violations: list[str] = []
78
+
79
+ for path in (repo_root / "agent_cli").rglob("*.py"):
80
+ tree = ast.parse(path.read_text(encoding="utf-8"), filename=str(path))
81
+ for node in ast.walk(tree):
82
+ if not isinstance(node, ast.FunctionDef | ast.AsyncFunctionDef):
83
+ continue
84
+
85
+ for decorator in node.decorator_list:
86
+ if not isinstance(decorator, ast.Call):
87
+ continue
88
+
89
+ func = decorator.func
90
+ if not isinstance(func, ast.Name) or func.id != "requires_extras":
91
+ continue
92
+
93
+ extras = [
94
+ arg.value
95
+ for arg in decorator.args
96
+ if isinstance(arg, ast.Constant) and isinstance(arg.value, str)
97
+ ]
98
+ if not any("|" in extra for extra in extras):
99
+ continue
100
+
101
+ has_resolver = any(
102
+ keyword.arg == "resolve_extras" for keyword in decorator.keywords
103
+ )
104
+ if not has_resolver:
105
+ violations.append(f"{path.relative_to(repo_root)}:{node.lineno}")
106
+
107
+ assert not violations, (
108
+ "requires_extras alternatives choose a default extra during auto-install. "
109
+ "Pass resolve_extras for commands with alternative extras: " + ", ".join(violations)
110
+ )
111
+
46
112
 
47
113
  class TestExtrasMetadata:
48
114
  """Test the _extras.json metadata is properly structured."""
@@ -6,8 +6,10 @@ from pathlib import Path
6
6
  from unittest.mock import AsyncMock, MagicMock, PropertyMock, patch
7
7
 
8
8
  import pytest
9
+ import typer
9
10
  from fastapi.testclient import TestClient
10
11
 
12
+ from agent_cli.server.cli import _check_tts_deps, _resolve_tts_required_extras
11
13
  from agent_cli.server.model_manager import ModelStats
12
14
  from agent_cli.server.tts.backends import SynthesisResult
13
15
  from agent_cli.server.tts.model_manager import TTSModelConfig, TTSModelManager
@@ -55,6 +57,78 @@ class TestTTSModelConfig:
55
57
  assert config.backend_type == "kokoro"
56
58
 
57
59
 
60
+ class TestTTSDependencyChecks:
61
+ """Tests for server TTS optional dependency handling."""
62
+
63
+ def test_resolve_tts_required_extras_uses_explicit_backend(self) -> None:
64
+ """Explicit TTS backends should install their matching extra."""
65
+ assert _resolve_tts_required_extras({"backend": "kokoro"}) == (
66
+ "server",
67
+ "kokoro",
68
+ "wyoming",
69
+ )
70
+ assert _resolve_tts_required_extras({"backend": "piper"}) == (
71
+ "server",
72
+ "piper",
73
+ "wyoming",
74
+ )
75
+
76
+ def test_resolve_tts_required_extras_keeps_auto_backend_alternatives(self) -> None:
77
+ """Auto backend should keep the existing Piper-or-Kokoro fallback."""
78
+ assert _resolve_tts_required_extras({"backend": "auto"}) == (
79
+ "server",
80
+ "piper|kokoro",
81
+ "wyoming",
82
+ )
83
+
84
+ @pytest.mark.parametrize(
85
+ ("backend", "expected_extra", "unexpected"),
86
+ [
87
+ ("kokoro", "kokoro", "tts-kokoro"),
88
+ ("piper", "piper", "agent-cli\\[tts]"),
89
+ ],
90
+ )
91
+ def test_backend_dependency_hint_uses_existing_extra(
92
+ self,
93
+ backend: str,
94
+ expected_extra: str,
95
+ unexpected: str,
96
+ ) -> None:
97
+ """Missing backend deps should point at existing extras."""
98
+ with (
99
+ patch(
100
+ "agent_cli.server.cli._has",
101
+ side_effect=lambda package: package in {"uvicorn", "fastapi"},
102
+ ),
103
+ patch("agent_cli.server.cli.err_console.print") as mock_print,
104
+ pytest.raises(typer.Exit),
105
+ ):
106
+ _check_tts_deps(backend)
107
+
108
+ message = mock_print.call_args[0][0]
109
+ assert f"agent-cli\\[{expected_extra}]" in message
110
+ assert f"uv sync --extra {expected_extra}" in message
111
+ assert unexpected not in message
112
+
113
+ def test_auto_dependency_hint_uses_backend_extras(self) -> None:
114
+ """Missing auto backend deps should list installable backend extras."""
115
+ with (
116
+ patch(
117
+ "agent_cli.server.cli._has",
118
+ side_effect=lambda package: package in {"uvicorn", "fastapi"},
119
+ ),
120
+ patch("agent_cli.server.cli.err_console.print") as mock_print,
121
+ pytest.raises(typer.Exit),
122
+ ):
123
+ _check_tts_deps("auto")
124
+
125
+ message = mock_print.call_args[0][0]
126
+ assert "agent-cli\\[piper]" in message
127
+ assert "agent-cli\\[kokoro]" in message
128
+ assert "agent-cli\\[tts]" not in message
129
+ assert "tts-kokoro" not in message
130
+
131
+
58
132
  class TestModelStats:
59
133
  """Tests for ModelStats dataclass with TTS-specific fields."""
60
134
 
@@ -9,8 +9,10 @@ from pathlib import Path
9
9
  from unittest.mock import AsyncMock, patch
10
10
 
11
11
  import pytest
12
+ import typer
12
13
  from fastapi.testclient import TestClient
13
14
 
15
+ from agent_cli.server.cli import _check_whisper_deps, _resolve_whisper_required_extras
14
16
  from agent_cli.server.model_manager import ModelStats
15
17
  from agent_cli.server.whisper.backends import TranscriptionResult
16
18
  from agent_cli.server.whisper.backends.base import UnsupportedRequestError
@@ -68,6 +70,64 @@ class TestModelConfig:
68
70
  assert config.trust_remote_code is True
69
71
 
70
72
 
73
+ class TestWhisperDependencyChecks:
74
+ """Tests for server Whisper optional dependency handling."""
75
+
76
+ def test_resolve_whisper_required_extras_uses_explicit_backend(self) -> None:
77
+ """Explicit Whisper backends should install their matching extra."""
78
+ assert _resolve_whisper_required_extras({"backend": "faster-whisper"}) == (
79
+ "server",
80
+ "faster-whisper",
81
+ "wyoming",
82
+ )
83
+ assert _resolve_whisper_required_extras({"backend": "mlx"}) == (
84
+ "server",
85
+ "mlx-whisper",
86
+ "wyoming",
87
+ )
88
+ assert _resolve_whisper_required_extras({"backend": "transformers"}) == (
89
+ "server",
90
+ "whisper-transformers",
91
+ "wyoming",
92
+ )
93
+
94
+ def test_resolve_whisper_required_extras_keeps_auto_backend_alternatives(self) -> None:
95
+ """Auto backend should keep the existing Whisper backend fallback."""
96
+ assert _resolve_whisper_required_extras({"backend": "auto"}) == (
97
+ "server",
98
+ "faster-whisper|mlx-whisper|whisper-transformers",
99
+ "wyoming",
100
+ )
101
+
102
+ @pytest.mark.parametrize(
103
+ ("backend", "expected_extra"),
104
+ [
105
+ ("faster-whisper", "faster-whisper"),
106
+ ("mlx", "mlx-whisper"),
107
+ ("transformers", "whisper-transformers"),
108
+ ],
109
+ )
110
+ def test_backend_dependency_hint_uses_existing_extra(
111
+ self,
112
+ backend: str,
113
+ expected_extra: str,
114
+ ) -> None:
115
+ """Missing backend deps should point at existing extras."""
116
+ with (
117
+ patch(
118
+ "agent_cli.server.cli._has",
119
+ side_effect=lambda package: package in {"uvicorn", "fastapi"},
120
+ ),
121
+ patch("agent_cli.server.cli.err_console.print") as mock_print,
122
+ pytest.raises(typer.Exit),
123
+ ):
124
+ _check_whisper_deps(backend)
125
+
126
+ message = mock_print.call_args[0][0]
127
+ assert f"agent-cli\\[{expected_extra}]" in message
128
+ assert f"uv sync --extra {expected_extra}" in message
129
+
130
+
71
131
  class TestModelStats:
72
132
  """Tests for ModelStats dataclass."""
73
133
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes