agent-cli 0.82.2__tar.gz → 0.82.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.
Files changed (373) hide show
  1. {agent_cli-0.82.2 → agent_cli-0.82.3}/.github/workflows/docker.yml +8 -8
  2. {agent_cli-0.82.2 → agent_cli-0.82.3}/.pre-commit-config.yaml +1 -1
  3. {agent_cli-0.82.2 → agent_cli-0.82.3}/PKG-INFO +1 -1
  4. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/agents/assistant.py +1 -1
  5. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/agents/chat.py +1 -1
  6. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/agents/speak.py +1 -1
  7. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/agents/transcribe.py +1 -1
  8. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/agents/transcribe_live.py +1 -1
  9. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/agents/voice_edit.py +1 -1
  10. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/core/deps.py +29 -3
  11. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/install/hotkeys.py +17 -1
  12. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/scripts/macos-hotkeys/toggle-transcription.sh +1 -1
  13. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/test_requires_extras.py +73 -0
  14. {agent_cli-0.82.2 → agent_cli-0.82.3}/.claude/skills/agent-cli-dev/SKILL.md +0 -0
  15. {agent_cli-0.82.2 → agent_cli-0.82.3}/.claude/skills/agent-cli-dev/examples.md +0 -0
  16. {agent_cli-0.82.2 → agent_cli-0.82.3}/.claude-plugin/README.md +0 -0
  17. {agent_cli-0.82.2 → agent_cli-0.82.3}/.claude-plugin/marketplace.json +0 -0
  18. {agent_cli-0.82.2 → agent_cli-0.82.3}/.claude-plugin/plugin.json +0 -0
  19. {agent_cli-0.82.2 → agent_cli-0.82.3}/.claude-plugin/skills/agent-cli-dev/SKILL.md +0 -0
  20. {agent_cli-0.82.2 → agent_cli-0.82.3}/.claude-plugin/skills/agent-cli-dev/examples.md +0 -0
  21. {agent_cli-0.82.2 → agent_cli-0.82.3}/.cursorrules +0 -0
  22. {agent_cli-0.82.2 → agent_cli-0.82.3}/.dockerignore +0 -0
  23. {agent_cli-0.82.2 → agent_cli-0.82.3}/.env.example +0 -0
  24. {agent_cli-0.82.2 → agent_cli-0.82.3}/.github/logo.svg +0 -0
  25. {agent_cli-0.82.2 → agent_cli-0.82.3}/.github/release-drafter.yml +0 -0
  26. {agent_cli-0.82.2 → agent_cli-0.82.3}/.github/renovate.json +0 -0
  27. {agent_cli-0.82.2 → agent_cli-0.82.3}/.github/scripts/check_extras_sync.py +0 -0
  28. {agent_cli-0.82.2 → agent_cli-0.82.3}/.github/scripts/check_plugin_skill_sync.py +0 -0
  29. {agent_cli-0.82.2 → agent_cli-0.82.3}/.github/scripts/sync_extras.py +0 -0
  30. {agent_cli-0.82.2 → agent_cli-0.82.3}/.github/scripts/sync_requirements.py +0 -0
  31. {agent_cli-0.82.2 → agent_cli-0.82.3}/.github/workflows/automerge.yml +0 -0
  32. {agent_cli-0.82.2 → agent_cli-0.82.3}/.github/workflows/docs.yml +0 -0
  33. {agent_cli-0.82.2 → agent_cli-0.82.3}/.github/workflows/markdown-code-runner.yml +0 -0
  34. {agent_cli-0.82.2 → agent_cli-0.82.3}/.github/workflows/pytest.yml +0 -0
  35. {agent_cli-0.82.2 → agent_cli-0.82.3}/.github/workflows/release-drafter.yml +0 -0
  36. {agent_cli-0.82.2 → agent_cli-0.82.3}/.github/workflows/release.yml +0 -0
  37. {agent_cli-0.82.2 → agent_cli-0.82.3}/.github/workflows/toc.yaml +0 -0
  38. {agent_cli-0.82.2 → agent_cli-0.82.3}/.gitignore +0 -0
  39. {agent_cli-0.82.2 → agent_cli-0.82.3}/.jscpd.json +0 -0
  40. {agent_cli-0.82.2 → agent_cli-0.82.3}/.prompts/docs-review.md +0 -0
  41. {agent_cli-0.82.2 → agent_cli-0.82.3}/.prompts/pr-review.md +0 -0
  42. {agent_cli-0.82.2 → agent_cli-0.82.3}/CLAUDE.md +0 -0
  43. {agent_cli-0.82.2 → agent_cli-0.82.3}/LICENSE +0 -0
  44. {agent_cli-0.82.2 → agent_cli-0.82.3}/README.md +0 -0
  45. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/__init__.py +0 -0
  46. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/__main__.py +0 -0
  47. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/_extras.json +0 -0
  48. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/_requirements/.gitkeep +0 -0
  49. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/_requirements/audio.txt +0 -0
  50. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/_requirements/faster-whisper.txt +0 -0
  51. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/_requirements/kokoro.txt +0 -0
  52. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/_requirements/llm.txt +0 -0
  53. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/_requirements/memory.txt +0 -0
  54. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/_requirements/mlx-whisper.txt +0 -0
  55. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/_requirements/piper.txt +0 -0
  56. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/_requirements/rag.txt +0 -0
  57. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/_requirements/server.txt +0 -0
  58. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/_requirements/speed.txt +0 -0
  59. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/_requirements/vad.txt +0 -0
  60. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/_requirements/vectordb.txt +0 -0
  61. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/_requirements/whisper-transformers.txt +0 -0
  62. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/_requirements/wyoming.txt +0 -0
  63. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/_tools.py +0 -0
  64. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/agents/__init__.py +0 -0
  65. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/agents/_voice_agent_common.py +0 -0
  66. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/agents/autocorrect.py +0 -0
  67. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/agents/memory/__init__.py +0 -0
  68. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/agents/memory/add.py +0 -0
  69. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/agents/memory/proxy.py +0 -0
  70. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/agents/rag_proxy.py +0 -0
  71. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/api.py +0 -0
  72. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/cli.py +0 -0
  73. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/config.py +0 -0
  74. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/config_cmd.py +0 -0
  75. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/constants.py +0 -0
  76. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/core/__init__.py +0 -0
  77. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/core/audio.py +0 -0
  78. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/core/audio_format.py +0 -0
  79. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/core/chroma.py +0 -0
  80. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/core/openai_proxy.py +0 -0
  81. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/core/process.py +0 -0
  82. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/core/reranker.py +0 -0
  83. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/core/sse.py +0 -0
  84. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/core/transcription_logger.py +0 -0
  85. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/core/utils.py +0 -0
  86. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/core/vad.py +0 -0
  87. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/core/watch.py +0 -0
  88. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/daemon/__init__.py +0 -0
  89. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/daemon/cli.py +0 -0
  90. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/__init__.py +0 -0
  91. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/_branch_name.py +0 -0
  92. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/_output.py +0 -0
  93. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/cleanup.py +0 -0
  94. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/cli.py +0 -0
  95. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/coding_agents/__init__.py +0 -0
  96. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/coding_agents/aider.py +0 -0
  97. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/coding_agents/base.py +0 -0
  98. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/coding_agents/claude.py +0 -0
  99. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/coding_agents/codex.py +0 -0
  100. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/coding_agents/continue_dev.py +0 -0
  101. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/coding_agents/copilot.py +0 -0
  102. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/coding_agents/cursor_agent.py +0 -0
  103. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/coding_agents/gemini.py +0 -0
  104. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/coding_agents/opencode.py +0 -0
  105. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/coding_agents/registry.py +0 -0
  106. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/editors/__init__.py +0 -0
  107. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/editors/base.py +0 -0
  108. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/editors/cursor.py +0 -0
  109. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/editors/emacs.py +0 -0
  110. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/editors/jetbrains.py +0 -0
  111. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/editors/nano.py +0 -0
  112. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/editors/neovim.py +0 -0
  113. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/editors/registry.py +0 -0
  114. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/editors/sublime.py +0 -0
  115. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/editors/vim.py +0 -0
  116. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/editors/vscode.py +0 -0
  117. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/editors/zed.py +0 -0
  118. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/launch.py +0 -0
  119. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/project.py +0 -0
  120. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/registry.py +0 -0
  121. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/skill/SKILL.md +0 -0
  122. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/skill/examples.md +0 -0
  123. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/terminals/__init__.py +0 -0
  124. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/terminals/apple_terminal.py +0 -0
  125. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/terminals/base.py +0 -0
  126. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/terminals/gnome.py +0 -0
  127. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/terminals/iterm2.py +0 -0
  128. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/terminals/kitty.py +0 -0
  129. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/terminals/registry.py +0 -0
  130. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/terminals/tmux.py +0 -0
  131. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/terminals/warp.py +0 -0
  132. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/terminals/zellij.py +0 -0
  133. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/dev/worktree.py +0 -0
  134. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/docs_gen.py +0 -0
  135. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/example-config.toml +0 -0
  136. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/install/__init__.py +0 -0
  137. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/install/common.py +0 -0
  138. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/install/extras.py +0 -0
  139. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/install/launchd.py +0 -0
  140. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/install/service_config.py +0 -0
  141. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/install/services.py +0 -0
  142. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/install/systemd.py +0 -0
  143. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/memory/__init__.py +0 -0
  144. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/memory/_files.py +0 -0
  145. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/memory/_filters.py +0 -0
  146. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/memory/_git.py +0 -0
  147. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/memory/_indexer.py +0 -0
  148. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/memory/_ingest.py +0 -0
  149. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/memory/_persistence.py +0 -0
  150. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/memory/_prompt.py +0 -0
  151. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/memory/_retrieval.py +0 -0
  152. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/memory/_store.py +0 -0
  153. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/memory/_streaming.py +0 -0
  154. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/memory/_tasks.py +0 -0
  155. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/memory/api.py +0 -0
  156. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/memory/client.py +0 -0
  157. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/memory/engine.py +0 -0
  158. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/memory/entities.py +0 -0
  159. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/memory/models.py +0 -0
  160. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/opts.py +0 -0
  161. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/py.typed +0 -0
  162. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/rag/__init__.py +0 -0
  163. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/rag/_indexer.py +0 -0
  164. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/rag/_indexing.py +0 -0
  165. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/rag/_prompt.py +0 -0
  166. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/rag/_retriever.py +0 -0
  167. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/rag/_store.py +0 -0
  168. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/rag/_utils.py +0 -0
  169. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/rag/api.py +0 -0
  170. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/rag/client.py +0 -0
  171. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/rag/engine.py +0 -0
  172. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/rag/models.py +0 -0
  173. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/scripts/.runtime/.gitkeep +0 -0
  174. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/scripts/__init__.py +0 -0
  175. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/scripts/linux-hotkeys/README.md +0 -0
  176. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh +0 -0
  177. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh +0 -0
  178. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/scripts/linux-hotkeys/toggle-voice-edit.sh +0 -0
  179. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/scripts/macos-hotkeys/README.md +0 -0
  180. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/scripts/macos-hotkeys/skhd-config-example +0 -0
  181. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/scripts/macos-hotkeys/toggle-autocorrect.sh +0 -0
  182. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/scripts/macos-hotkeys/toggle-voice-edit.sh +0 -0
  183. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/scripts/nvidia-asr-server/README.md +0 -0
  184. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/scripts/nvidia-asr-server/pyproject.toml +0 -0
  185. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/scripts/nvidia-asr-server/server.py +0 -0
  186. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/scripts/nvidia-asr-server/shell.nix +0 -0
  187. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/scripts/nvidia-asr-server/uv.lock +0 -0
  188. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/scripts/run-openwakeword.sh +0 -0
  189. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/scripts/setup-linux-hotkeys.sh +0 -0
  190. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/scripts/setup-linux.sh +0 -0
  191. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/scripts/setup-macos-hotkeys.sh +0 -0
  192. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/scripts/setup-macos.sh +0 -0
  193. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/scripts/setup-windows.ps1 +0 -0
  194. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/scripts/start-all-services-windows.ps1 +0 -0
  195. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/scripts/start-all-services.sh +0 -0
  196. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/server/__init__.py +0 -0
  197. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/server/cli.py +0 -0
  198. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/server/common.py +0 -0
  199. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/server/model_manager.py +0 -0
  200. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/server/model_registry.py +0 -0
  201. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/server/proxy/__init__.py +0 -0
  202. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/server/proxy/api.py +0 -0
  203. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/server/streaming.py +0 -0
  204. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/server/tts/__init__.py +0 -0
  205. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/server/tts/api.py +0 -0
  206. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/server/tts/backends/__init__.py +0 -0
  207. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/server/tts/backends/base.py +0 -0
  208. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/server/tts/backends/kokoro.py +0 -0
  209. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/server/tts/backends/piper.py +0 -0
  210. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/server/tts/model_manager.py +0 -0
  211. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/server/tts/model_registry.py +0 -0
  212. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/server/tts/wyoming_handler.py +0 -0
  213. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/server/whisper/__init__.py +0 -0
  214. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/server/whisper/api.py +0 -0
  215. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/server/whisper/backends/__init__.py +0 -0
  216. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/server/whisper/backends/base.py +0 -0
  217. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/server/whisper/backends/faster_whisper.py +0 -0
  218. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/server/whisper/backends/mlx.py +0 -0
  219. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/server/whisper/backends/transformers.py +0 -0
  220. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/server/whisper/languages.py +0 -0
  221. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/server/whisper/model_manager.py +0 -0
  222. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/server/whisper/model_registry.py +0 -0
  223. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/server/whisper/wyoming_handler.py +0 -0
  224. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/services/__init__.py +0 -0
  225. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/services/_wyoming_utils.py +0 -0
  226. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/services/asr.py +0 -0
  227. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/services/llm.py +0 -0
  228. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/services/tts.py +0 -0
  229. {agent_cli-0.82.2 → agent_cli-0.82.3}/agent_cli/services/wake_word.py +0 -0
  230. {agent_cli-0.82.2 → agent_cli-0.82.3}/docker/docker-compose.yml +0 -0
  231. {agent_cli-0.82.2 → agent_cli-0.82.3}/docker/memory-proxy.Dockerfile +0 -0
  232. {agent_cli-0.82.2 → agent_cli-0.82.3}/docker/rag-proxy.Dockerfile +0 -0
  233. {agent_cli-0.82.2 → agent_cli-0.82.3}/docker/transcribe-proxy.Dockerfile +0 -0
  234. {agent_cli-0.82.2 → agent_cli-0.82.3}/docker/tts.Dockerfile +0 -0
  235. {agent_cli-0.82.2 → agent_cli-0.82.3}/docker/whisper.Dockerfile +0 -0
  236. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/CNAME +0 -0
  237. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/architecture/index.md +0 -0
  238. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/architecture/memory.md +0 -0
  239. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/architecture/rag.md +0 -0
  240. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/commands/assistant.md +0 -0
  241. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/commands/autocorrect.md +0 -0
  242. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/commands/chat.md +0 -0
  243. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/commands/config.md +0 -0
  244. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/commands/daemon.md +0 -0
  245. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/commands/dev.md +0 -0
  246. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/commands/index.md +0 -0
  247. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/commands/install-extras.md +0 -0
  248. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/commands/install-hotkeys.md +0 -0
  249. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/commands/install-services.md +0 -0
  250. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/commands/memory.md +0 -0
  251. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/commands/rag-proxy.md +0 -0
  252. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/commands/server/index.md +0 -0
  253. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/commands/server/transcribe-proxy.md +0 -0
  254. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/commands/server/tts.md +0 -0
  255. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/commands/server/whisper.md +0 -0
  256. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/commands/speak.md +0 -0
  257. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/commands/start-services.md +0 -0
  258. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/commands/transcribe-live.md +0 -0
  259. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/commands/transcribe.md +0 -0
  260. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/commands/voice-edit.md +0 -0
  261. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/configuration.md +0 -0
  262. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/getting-started.md +0 -0
  263. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/iOS_Shortcut_Guide.md +0 -0
  264. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/index.md +0 -0
  265. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/installation/docker.md +0 -0
  266. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/installation/index.md +0 -0
  267. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/installation/linux.md +0 -0
  268. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/installation/macos.md +0 -0
  269. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/installation/nixos.md +0 -0
  270. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/installation/windows.md +0 -0
  271. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/logo-clean.svg +0 -0
  272. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
  273. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/run_markdown_code_runner.py +0 -0
  274. {agent_cli-0.82.2 → agent_cli-0.82.3}/docs/system-integration.md +0 -0
  275. {agent_cli-0.82.2 → agent_cli-0.82.3}/example.agent-cli-config.toml +0 -0
  276. {agent_cli-0.82.2 → agent_cli-0.82.3}/justfile +0 -0
  277. {agent_cli-0.82.2 → agent_cli-0.82.3}/pyproject.toml +0 -0
  278. {agent_cli-0.82.2 → agent_cli-0.82.3}/shell.nix +0 -0
  279. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/__init__.py +0 -0
  280. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/agents/__init__.py +0 -0
  281. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/agents/test_fix_my_text.py +0 -0
  282. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/agents/test_interactive.py +0 -0
  283. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/agents/test_interactive_extra.py +0 -0
  284. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/agents/test_memory_add.py +0 -0
  285. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/agents/test_speak.py +0 -0
  286. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/agents/test_speak_e2e.py +0 -0
  287. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/agents/test_transcribe.py +0 -0
  288. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/agents/test_transcribe_agent.py +0 -0
  289. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/agents/test_transcribe_e2e.py +0 -0
  290. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/agents/test_transcribe_live.py +0 -0
  291. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/agents/test_transcribe_recovery.py +0 -0
  292. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/agents/test_tts_common.py +0 -0
  293. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/agents/test_tts_common_extra.py +0 -0
  294. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/agents/test_voice_agent_common.py +0 -0
  295. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/agents/test_voice_edit.py +0 -0
  296. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/agents/test_voice_edit_e2e.py +0 -0
  297. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/agents/test_wake_word_assistant.py +0 -0
  298. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/conftest.py +0 -0
  299. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/core/__init__.py +0 -0
  300. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/core/test_audio.py +0 -0
  301. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/core/test_audio_format.py +0 -0
  302. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/core/test_chroma.py +0 -0
  303. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/core/test_sse.py +0 -0
  304. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/core/test_vad.py +0 -0
  305. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/core/test_watch.py +0 -0
  306. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/dev/__init__.py +0 -0
  307. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/dev/test_cli.py +0 -0
  308. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/dev/test_coding_agents.py +0 -0
  309. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/dev/test_editors.py +0 -0
  310. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/dev/test_project.py +0 -0
  311. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/dev/test_terminals.py +0 -0
  312. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/dev/test_verification.py +0 -0
  313. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/dev/test_worktree.py +0 -0
  314. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/install/__init__.py +0 -0
  315. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/install/test_extras.py +0 -0
  316. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/memory/__init__.py +0 -0
  317. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/memory/test_api_health.py +0 -0
  318. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/memory/test_api_integration_liveish.py +0 -0
  319. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/memory/test_client.py +0 -0
  320. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/memory/test_engine.py +0 -0
  321. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/memory/test_files.py +0 -0
  322. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/memory/test_filters.py +0 -0
  323. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/memory/test_git_integration.py +0 -0
  324. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/memory/test_indexer.py +0 -0
  325. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/memory/test_memory_integration.py +0 -0
  326. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/memory/test_proxy_passthrough.py +0 -0
  327. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/memory/test_store.py +0 -0
  328. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/memory/test_utils.py +0 -0
  329. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/mocks/__init__.py +0 -0
  330. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/mocks/audio.py +0 -0
  331. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/mocks/llm.py +0 -0
  332. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/mocks/wyoming.py +0 -0
  333. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/rag/__init__.py +0 -0
  334. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/rag/test_api.py +0 -0
  335. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/rag/test_engine.py +0 -0
  336. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/rag/test_history.py +0 -0
  337. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/rag/test_indexer.py +0 -0
  338. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/rag/test_indexing.py +0 -0
  339. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/rag/test_rag_client.py +0 -0
  340. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/rag/test_rag_integration_liveish.py +0 -0
  341. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/rag/test_rag_proxy_passthrough.py +0 -0
  342. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/rag/test_retriever.py +0 -0
  343. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/rag/test_store.py +0 -0
  344. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/rag/test_utils.py +0 -0
  345. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/test_api.py +0 -0
  346. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/test_api_integration.py +0 -0
  347. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/test_asr.py +0 -0
  348. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/test_asr_recovery.py +0 -0
  349. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/test_audio_e2e.py +0 -0
  350. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/test_cli.py +0 -0
  351. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/test_config.py +0 -0
  352. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/test_config_cmd.py +0 -0
  353. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/test_daemon.py +0 -0
  354. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/test_docs_gen.py +0 -0
  355. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/test_env_vars.py +0 -0
  356. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/test_json_output.py +0 -0
  357. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/test_llm.py +0 -0
  358. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/test_llm_gemini.py +0 -0
  359. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/test_memory_tools.py +0 -0
  360. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/test_mlx_backend.py +0 -0
  361. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/test_process_manager.py +0 -0
  362. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/test_server_streaming.py +0 -0
  363. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/test_server_tts.py +0 -0
  364. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/test_server_whisper.py +0 -0
  365. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/test_services.py +0 -0
  366. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/test_tools.py +0 -0
  367. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/test_transformers_backend.py +0 -0
  368. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/test_tts.py +0 -0
  369. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/test_utils.py +0 -0
  370. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/test_wake_word.py +0 -0
  371. {agent_cli-0.82.2 → agent_cli-0.82.3}/tests/test_wyoming_utils.py +0 -0
  372. {agent_cli-0.82.2 → agent_cli-0.82.3}/uv.lock +0 -0
  373. {agent_cli-0.82.2 → agent_cli-0.82.3}/zensical.toml +0 -0
@@ -51,10 +51,10 @@ jobs:
51
51
  fetch-depth: 0 # Full history for version detection
52
52
 
53
53
  - name: Set up Docker Buildx
54
- uses: docker/setup-buildx-action@v3
54
+ uses: docker/setup-buildx-action@v4
55
55
 
56
56
  - name: Log in to Container Registry
57
- uses: docker/login-action@v3
57
+ uses: docker/login-action@v4
58
58
  with:
59
59
  registry: ${{ env.REGISTRY }}
60
60
  username: ${{ github.actor }}
@@ -71,7 +71,7 @@ jobs:
71
71
 
72
72
  - name: Extract metadata
73
73
  id: meta
74
- uses: docker/metadata-action@v5
74
+ uses: docker/metadata-action@v6
75
75
  with:
76
76
  images: ${{ env.REGISTRY }}/${{ github.repository }}-${{ matrix.image }}
77
77
  tags: |
@@ -80,7 +80,7 @@ jobs:
80
80
  type=sha,suffix=-${{ matrix.suffix }}
81
81
 
82
82
  - name: Build and push
83
- uses: docker/build-push-action@v6
83
+ uses: docker/build-push-action@v7
84
84
  with:
85
85
  context: .
86
86
  file: ${{ matrix.dockerfile }}
@@ -116,10 +116,10 @@ jobs:
116
116
  fetch-depth: 0 # Full history for version detection
117
117
 
118
118
  - name: Set up Docker Buildx
119
- uses: docker/setup-buildx-action@v3
119
+ uses: docker/setup-buildx-action@v4
120
120
 
121
121
  - name: Log in to Container Registry
122
- uses: docker/login-action@v3
122
+ uses: docker/login-action@v4
123
123
  with:
124
124
  registry: ${{ env.REGISTRY }}
125
125
  username: ${{ github.actor }}
@@ -136,7 +136,7 @@ jobs:
136
136
 
137
137
  - name: Extract metadata
138
138
  id: meta
139
- uses: docker/metadata-action@v5
139
+ uses: docker/metadata-action@v6
140
140
  with:
141
141
  images: ${{ env.REGISTRY }}/${{ github.repository }}-${{ matrix.image }}
142
142
  tags: |
@@ -145,7 +145,7 @@ jobs:
145
145
  type=sha
146
146
 
147
147
  - name: Build and push
148
- uses: docker/build-push-action@v6
148
+ uses: docker/build-push-action@v7
149
149
  with:
150
150
  context: .
151
151
  file: ${{ matrix.dockerfile }}
@@ -11,7 +11,7 @@ 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.2"
14
+ rev: "v0.15.5"
15
15
  hooks:
16
16
  - id: ruff
17
17
  args: ["--fix"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-cli
3
- Version: 0.82.2
3
+ Version: 0.82.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>
@@ -230,7 +230,7 @@ async def _async_main(
230
230
 
231
231
 
232
232
  @app.command("assistant", rich_help_panel="Voice Commands")
233
- @requires_extras("audio", "llm")
233
+ @requires_extras("audio", "llm", process_name="assistant")
234
234
  def assistant(
235
235
  *,
236
236
  # --- Provider Selection ---
@@ -377,7 +377,7 @@ async def _async_main(
377
377
 
378
378
 
379
379
  @app.command("chat", rich_help_panel="Voice Commands")
380
- @requires_extras("audio", "llm")
380
+ @requires_extras("audio", "llm", process_name="chat")
381
381
  def chat(
382
382
  *,
383
383
  # --- Provider Selection ---
@@ -81,7 +81,7 @@ async def _async_main(
81
81
 
82
82
 
83
83
  @app.command("speak", rich_help_panel="Text Commands")
84
- @requires_extras("audio")
84
+ @requires_extras("audio", process_name="speak")
85
85
  def speak(
86
86
  *,
87
87
  text: str | None = typer.Argument(
@@ -465,7 +465,7 @@ async def _async_main( # noqa: PLR0912, PLR0915, C901
465
465
 
466
466
 
467
467
  @app.command("transcribe", rich_help_panel="Voice Commands")
468
- @requires_extras("audio", "llm")
468
+ @requires_extras("audio", "llm", process_name="transcribe")
469
469
  def transcribe( # noqa: PLR0912
470
470
  *,
471
471
  extra_instructions: str | None = typer.Option(
@@ -288,7 +288,7 @@ async def _daemon_loop(cfg: DaemonConfig) -> None: # noqa: PLR0912, PLR0915
288
288
 
289
289
 
290
290
  @app.command("transcribe-live", rich_help_panel="Voice Commands")
291
- @requires_extras("audio", "vad", "llm")
291
+ @requires_extras("audio", "vad", "llm", process_name="transcribe-live")
292
292
  def transcribe_live( # noqa: PLR0912
293
293
  *,
294
294
  # Daemon-specific options
@@ -174,7 +174,7 @@ async def _async_main(
174
174
 
175
175
 
176
176
  @app.command("voice-edit", rich_help_panel="Voice Commands")
177
- @requires_extras("audio", "llm")
177
+ @requires_extras("audio", "llm", process_name="voice-edit")
178
178
  def voice_edit(
179
179
  *,
180
180
  # --- Provider Selection ---
@@ -311,8 +311,12 @@ def _try_auto_install(missing_display: list[str], extras_to_install: list[str])
311
311
 
312
312
  def _maybe_reexec_after_install() -> None:
313
313
  """Re-execute after auto-install so new packages are visible."""
314
- executable = shutil.which("agent-cli") or sys.executable
315
- _maybe_exec_with_marker([executable, *sys.argv[1:]], "Re-running with installed extras...")
314
+ argv0 = sys.argv[0] if sys.argv else ""
315
+ if argv0:
316
+ cmd = [argv0, *sys.argv[1:]]
317
+ else:
318
+ cmd = [sys.executable, "-m", "agent_cli.cli", *sys.argv[1:]]
319
+ _maybe_exec_with_marker(cmd, "Re-running with installed extras...")
316
320
 
317
321
 
318
322
  # -- Main Orchestration --
@@ -362,7 +366,26 @@ def _check_and_install_extras(extras: tuple[str, ...]) -> list[str]:
362
366
  # -- Decorator --
363
367
 
364
368
 
365
- def requires_extras(*extras: str) -> Callable[[F], F]:
369
+ def _should_skip_extra_check_for_process_control(
370
+ kwargs: dict[str, object],
371
+ process_name: str | None,
372
+ ) -> bool:
373
+ """Skip dependency checks when the command only needs process control."""
374
+ if not process_name:
375
+ return False
376
+
377
+ if bool(kwargs.get("stop")) or bool(kwargs.get("status")):
378
+ return True
379
+
380
+ if not bool(kwargs.get("toggle")):
381
+ return False
382
+
383
+ from agent_cli.core import process # noqa: PLC0415
384
+
385
+ return process.is_process_running(process_name)
386
+
387
+
388
+ def requires_extras(*extras: str, process_name: str | None = None) -> Callable[[F], F]:
366
389
  """Decorator to declare required extras for a command.
367
390
 
368
391
  Auto-installs missing extras by default. Disable via AGENT_CLI_NO_AUTO_INSTALL=1
@@ -374,11 +397,14 @@ def requires_extras(*extras: str) -> Callable[[F], F]:
374
397
 
375
398
  @functools.wraps(func)
376
399
  def wrapper(*args: object, **kwargs: object) -> object:
400
+ if _should_skip_extra_check_for_process_control(kwargs, process_name):
401
+ return func(*args, **kwargs)
377
402
  if _check_and_install_extras(extras):
378
403
  raise typer.Exit(1)
379
404
  return func(*args, **kwargs)
380
405
 
381
406
  wrapper._required_extras = extras # type: ignore[attr-defined]
407
+ wrapper._required_process_name = process_name # type: ignore[attr-defined]
382
408
  return wrapper # type: ignore[return-value]
383
409
 
384
410
  return decorator
@@ -4,8 +4,11 @@ from __future__ import annotations
4
4
 
5
5
  import platform
6
6
 
7
+ import typer
8
+
7
9
  from agent_cli.cli import app
8
- from agent_cli.core.utils import print_with_style
10
+ from agent_cli.core.deps import _check_extra_installed, install_extras_impl
11
+ from agent_cli.core.utils import print_error_message, print_with_style
9
12
  from agent_cli.install.common import execute_installation_script, get_platform_script
10
13
 
11
14
 
@@ -39,6 +42,19 @@ def install_hotkeys() -> None:
39
42
  **Customizing hotkeys** (macOS): Edit `~/.config/skhd/skhdrc` and restart skhd:
40
43
  `skhd --restart-service`
41
44
  """
45
+ required_extras = ["audio", "llm"]
46
+ missing_extras = [extra for extra in required_extras if not _check_extra_installed(extra)]
47
+ if missing_extras:
48
+ print_with_style(
49
+ f"Installing required extras for hotkeys: {', '.join(missing_extras)}",
50
+ "cyan",
51
+ )
52
+ if not install_extras_impl(missing_extras):
53
+ print_error_message(
54
+ "Failed to install required extras for hotkeys: " + ", ".join(missing_extras),
55
+ )
56
+ raise typer.Exit(1)
57
+
42
58
  script_name = get_platform_script("setup-macos-hotkeys.sh", "setup-linux-hotkeys.sh")
43
59
  system = platform.system().lower()
44
60
 
@@ -34,7 +34,7 @@ if is_transcribe_running; then
34
34
  "$NOTIFIER" -remove "$RECORDING_GROUP" >/dev/null 2>&1 || true
35
35
  notify_temp "🛑 Stopped" "Processing results..."
36
36
  else
37
- "$NOTIFIER" -title "🎙️ Started" -message "Listening..." -group "$RECORDING_GROUP"
37
+ "$NOTIFIER" -title "🎙️ Starting" -message "Preparing transcription..." -group "$RECORDING_GROUP"
38
38
  (
39
39
  OUTPUT=$("$AGENT_CLI" transcribe --toggle --llm --quiet 2>/dev/null)
40
40
  "$NOTIFIER" -remove "$RECORDING_GROUP" >/dev/null 2>&1 || true
@@ -13,7 +13,9 @@ from agent_cli.core.deps import (
13
13
  _check_and_install_extras,
14
14
  _get_auto_install_setting,
15
15
  _get_install_hint,
16
+ _maybe_reexec_after_install,
16
17
  _resolve_extras_for_install,
18
+ _should_skip_extra_check_for_process_control,
17
19
  requires_extras,
18
20
  )
19
21
 
@@ -219,6 +221,77 @@ class TestCheckAndInstallExtras:
219
221
  assert "not visible" in mock_error.call_args[0][0]
220
222
 
221
223
 
224
+ class TestReexecBehavior:
225
+ """Test re-exec behavior after auto-install."""
226
+
227
+ def test_reexec_uses_original_argv0(self) -> None:
228
+ """Re-exec should preserve the command path that launched agent-cli."""
229
+ with (
230
+ patch("agent_cli.core.deps._maybe_exec_with_marker") as mock_reexec,
231
+ patch("sys.argv", ["/custom/bin/agent-cli", "transcribe", "--toggle"]),
232
+ ):
233
+ _maybe_reexec_after_install()
234
+
235
+ mock_reexec.assert_called_once_with(
236
+ ["/custom/bin/agent-cli", "transcribe", "--toggle"],
237
+ "Re-running with installed extras...",
238
+ )
239
+
240
+ def test_reexec_falls_back_to_python_module_when_argv0_missing(self) -> None:
241
+ """Re-exec should still work if argv[0] is unavailable."""
242
+ with (
243
+ patch("agent_cli.core.deps._maybe_exec_with_marker") as mock_reexec,
244
+ patch("sys.argv", ["", "transcribe", "--toggle"]),
245
+ patch("sys.executable", "/usr/bin/python3"),
246
+ ):
247
+ _maybe_reexec_after_install()
248
+
249
+ mock_reexec.assert_called_once_with(
250
+ ["/usr/bin/python3", "-m", "agent_cli.cli", "transcribe", "--toggle"],
251
+ "Re-running with installed extras...",
252
+ )
253
+
254
+
255
+ class TestProcessControlBypass:
256
+ """Test process-control bypasses for dependency checks."""
257
+
258
+ def test_skip_for_stop_and_status(self) -> None:
259
+ """Stop/status commands should not trigger extra checks."""
260
+ assert _should_skip_extra_check_for_process_control({"stop": True}, "transcribe") is True
261
+ assert _should_skip_extra_check_for_process_control({"status": True}, "transcribe") is True
262
+
263
+ def test_skip_for_toggle_when_process_running(self) -> None:
264
+ """Toggle should bypass extra checks when it is acting as stop."""
265
+ with patch("agent_cli.core.process.is_process_running", return_value=True):
266
+ assert (
267
+ _should_skip_extra_check_for_process_control({"toggle": True}, "transcribe") is True
268
+ )
269
+
270
+ def test_no_skip_for_toggle_when_process_not_running(self) -> None:
271
+ """Toggle start still needs dependency checks."""
272
+ with patch("agent_cli.core.process.is_process_running", return_value=False):
273
+ assert (
274
+ _should_skip_extra_check_for_process_control({"toggle": True}, "transcribe")
275
+ is False
276
+ )
277
+
278
+ def test_decorator_skips_extra_checks_for_toggle_stop(self) -> None:
279
+ """Decorated commands should stop an existing process without installing extras."""
280
+ with (
281
+ patch("agent_cli.core.process.is_process_running", return_value=True),
282
+ patch("agent_cli.core.deps._check_and_install_extras") as mock_check,
283
+ ):
284
+
285
+ @requires_extras("audio", process_name="transcribe")
286
+ def my_command(**kwargs: object) -> str:
287
+ assert kwargs["toggle"] is True
288
+ return "stopped"
289
+
290
+ assert my_command(toggle=True) == "stopped"
291
+
292
+ mock_check.assert_not_called()
293
+
294
+
222
295
  class TestDecoratorIntegration:
223
296
  """Test the requires_extras decorator end-to-end behavior."""
224
297
 
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