agent-cli 0.97.0__tar.gz → 0.97.2__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 (445) hide show
  1. {agent_cli-0.97.0 → agent_cli-0.97.2}/PKG-INFO +1 -1
  2. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/deps.py +42 -11
  3. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/install/launchd.py +1 -0
  4. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/install/systemd.py +2 -0
  5. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/whisper/backends/nemo.py +35 -0
  6. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/appcast.xml +32 -33
  7. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/install/test_launchd.py +1 -0
  8. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_daemon.py +1 -0
  9. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_nemo_backend.py +33 -1
  10. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_requires_extras.py +61 -0
  11. {agent_cli-0.97.0 → agent_cli-0.97.2}/.claude/skills/agent-cli-dev/SKILL.md +0 -0
  12. {agent_cli-0.97.0 → agent_cli-0.97.2}/.claude/skills/agent-cli-dev/examples.md +0 -0
  13. {agent_cli-0.97.0 → agent_cli-0.97.2}/.claude-plugin/README.md +0 -0
  14. {agent_cli-0.97.0 → agent_cli-0.97.2}/.claude-plugin/marketplace.json +0 -0
  15. {agent_cli-0.97.0 → agent_cli-0.97.2}/.claude-plugin/plugin.json +0 -0
  16. {agent_cli-0.97.0 → agent_cli-0.97.2}/.claude-plugin/skills/agent-cli-dev/SKILL.md +0 -0
  17. {agent_cli-0.97.0 → agent_cli-0.97.2}/.claude-plugin/skills/agent-cli-dev/examples.md +0 -0
  18. {agent_cli-0.97.0 → agent_cli-0.97.2}/.cursorrules +0 -0
  19. {agent_cli-0.97.0 → agent_cli-0.97.2}/.dockerignore +0 -0
  20. {agent_cli-0.97.0 → agent_cli-0.97.2}/.env.example +0 -0
  21. {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/logo.svg +0 -0
  22. {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/release-drafter.yml +0 -0
  23. {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/renovate.json +0 -0
  24. {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/scripts/check_extras_sync.py +0 -0
  25. {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/scripts/check_plugin_skill_sync.py +0 -0
  26. {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/scripts/normalize_appcast.py +0 -0
  27. {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/scripts/sync_extras.py +0 -0
  28. {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/scripts/sync_requirements.py +0 -0
  29. {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/workflows/automerge.yml +0 -0
  30. {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/workflows/docker.yml +0 -0
  31. {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/workflows/docs.yml +0 -0
  32. {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/workflows/markdown-code-runner.yml +0 -0
  33. {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/workflows/pytest.yml +0 -0
  34. {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/workflows/release-drafter.yml +0 -0
  35. {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/workflows/release.yml +0 -0
  36. {agent_cli-0.97.0 → agent_cli-0.97.2}/.github/workflows/toc.yaml +0 -0
  37. {agent_cli-0.97.0 → agent_cli-0.97.2}/.gitignore +0 -0
  38. {agent_cli-0.97.0 → agent_cli-0.97.2}/.jscpd.json +0 -0
  39. {agent_cli-0.97.0 → agent_cli-0.97.2}/.pre-commit-config.yaml +0 -0
  40. {agent_cli-0.97.0 → agent_cli-0.97.2}/.prompts/docs-review.md +0 -0
  41. {agent_cli-0.97.0 → agent_cli-0.97.2}/.prompts/pr-review.md +0 -0
  42. {agent_cli-0.97.0 → agent_cli-0.97.2}/CLAUDE.md +0 -0
  43. {agent_cli-0.97.0 → agent_cli-0.97.2}/LICENSE +0 -0
  44. {agent_cli-0.97.0 → agent_cli-0.97.2}/LLAMA_SERVER_USAGE.md +0 -0
  45. {agent_cli-0.97.0 → agent_cli-0.97.2}/README.md +0 -0
  46. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/__init__.py +0 -0
  47. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/__main__.py +0 -0
  48. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_extras.json +0 -0
  49. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_overrides/nemo-whisper.txt +0 -0
  50. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/.gitkeep +0 -0
  51. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/audio.txt +0 -0
  52. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/diarization.txt +0 -0
  53. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/faster-whisper.txt +0 -0
  54. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/kokoro.txt +0 -0
  55. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/llm.txt +0 -0
  56. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/memory.txt +0 -0
  57. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/mlx-whisper.txt +0 -0
  58. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/nemo-whisper.txt +0 -0
  59. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/piper.txt +0 -0
  60. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/rag.txt +0 -0
  61. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/server.txt +0 -0
  62. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/speed.txt +0 -0
  63. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/vad.txt +0 -0
  64. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/vectordb.txt +0 -0
  65. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/whisper-transformers.txt +0 -0
  66. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_requirements/wyoming.txt +0 -0
  67. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/_tools.py +0 -0
  68. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/agents/__init__.py +0 -0
  69. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/agents/_voice_agent_common.py +0 -0
  70. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/agents/assistant.py +0 -0
  71. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/agents/autocorrect.py +0 -0
  72. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/agents/chat.py +0 -0
  73. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/agents/diarize_live_session.py +0 -0
  74. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/agents/memory/__init__.py +0 -0
  75. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/agents/memory/add.py +0 -0
  76. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/agents/memory/proxy.py +0 -0
  77. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/agents/rag_proxy.py +0 -0
  78. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/agents/speak.py +0 -0
  79. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/agents/speakers.py +0 -0
  80. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/agents/transcribe.py +0 -0
  81. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/agents/transcribe_live.py +0 -0
  82. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/agents/voice_edit.py +0 -0
  83. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/api.py +0 -0
  84. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/cli.py +0 -0
  85. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/config.py +0 -0
  86. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/config_cmd.py +0 -0
  87. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/constants.py +0 -0
  88. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/__init__.py +0 -0
  89. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/alignment.py +0 -0
  90. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/audio.py +0 -0
  91. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/audio_format.py +0 -0
  92. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/chroma.py +0 -0
  93. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/diarization.py +0 -0
  94. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/openai_proxy.py +0 -0
  95. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/process.py +0 -0
  96. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/reranker.py +0 -0
  97. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/speaker_identity.py +0 -0
  98. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/sse.py +0 -0
  99. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/transcription_logger.py +0 -0
  100. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/utils.py +0 -0
  101. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/vad.py +0 -0
  102. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/core/watch.py +0 -0
  103. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/daemon/__init__.py +0 -0
  104. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/daemon/cli.py +0 -0
  105. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/__init__.py +0 -0
  106. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/_branch_name.py +0 -0
  107. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/_config.py +0 -0
  108. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/_output.py +0 -0
  109. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/cleanup.py +0 -0
  110. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/cli.py +0 -0
  111. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/coding_agents/__init__.py +0 -0
  112. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/coding_agents/aider.py +0 -0
  113. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/coding_agents/base.py +0 -0
  114. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/coding_agents/claude.py +0 -0
  115. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/coding_agents/codex.py +0 -0
  116. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/coding_agents/continue_dev.py +0 -0
  117. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/coding_agents/copilot.py +0 -0
  118. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/coding_agents/cursor_agent.py +0 -0
  119. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/coding_agents/gemini.py +0 -0
  120. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/coding_agents/opencode.py +0 -0
  121. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/coding_agents/registry.py +0 -0
  122. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/editors/__init__.py +0 -0
  123. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/editors/base.py +0 -0
  124. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/editors/cursor.py +0 -0
  125. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/editors/emacs.py +0 -0
  126. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/editors/jetbrains.py +0 -0
  127. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/editors/nano.py +0 -0
  128. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/editors/neovim.py +0 -0
  129. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/editors/registry.py +0 -0
  130. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/editors/sublime.py +0 -0
  131. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/editors/vim.py +0 -0
  132. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/editors/vscode.py +0 -0
  133. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/editors/zed.py +0 -0
  134. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/hooks.py +0 -0
  135. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/launch.py +0 -0
  136. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/project.py +0 -0
  137. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/registry.py +0 -0
  138. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/skill/SKILL.md +0 -0
  139. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/skill/examples.md +0 -0
  140. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/terminals/__init__.py +0 -0
  141. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/terminals/apple_terminal.py +0 -0
  142. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/terminals/base.py +0 -0
  143. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/terminals/gnome.py +0 -0
  144. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/terminals/iterm2.py +0 -0
  145. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/terminals/kitty.py +0 -0
  146. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/terminals/registry.py +0 -0
  147. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/terminals/tmux.py +0 -0
  148. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/terminals/warp.py +0 -0
  149. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/terminals/zellij.py +0 -0
  150. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/dev/worktree.py +0 -0
  151. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/docs_gen.py +0 -0
  152. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/example-config.toml +0 -0
  153. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/install/__init__.py +0 -0
  154. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/install/common.py +0 -0
  155. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/install/extras.py +0 -0
  156. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/install/hotkeys.py +0 -0
  157. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/install/service_config.py +0 -0
  158. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/install/services.py +0 -0
  159. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/__init__.py +0 -0
  160. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/_files.py +0 -0
  161. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/_filters.py +0 -0
  162. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/_git.py +0 -0
  163. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/_indexer.py +0 -0
  164. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/_ingest.py +0 -0
  165. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/_persistence.py +0 -0
  166. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/_prompt.py +0 -0
  167. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/_retrieval.py +0 -0
  168. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/_store.py +0 -0
  169. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/_streaming.py +0 -0
  170. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/_tasks.py +0 -0
  171. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/api.py +0 -0
  172. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/client.py +0 -0
  173. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/engine.py +0 -0
  174. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/entities.py +0 -0
  175. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/memory/models.py +0 -0
  176. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/opts.py +0 -0
  177. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/py.typed +0 -0
  178. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/rag/__init__.py +0 -0
  179. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/rag/_indexer.py +0 -0
  180. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/rag/_indexing.py +0 -0
  181. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/rag/_prompt.py +0 -0
  182. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/rag/_retriever.py +0 -0
  183. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/rag/_store.py +0 -0
  184. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/rag/_utils.py +0 -0
  185. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/rag/api.py +0 -0
  186. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/rag/client.py +0 -0
  187. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/rag/engine.py +0 -0
  188. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/rag/models.py +0 -0
  189. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/.runtime/.gitkeep +0 -0
  190. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/__init__.py +0 -0
  191. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/linux-hotkeys/README.md +0 -0
  192. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh +0 -0
  193. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh +0 -0
  194. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/linux-hotkeys/toggle-voice-edit.sh +0 -0
  195. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/macos-hotkeys/README.md +0 -0
  196. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/macos-hotkeys/skhd-config-example +0 -0
  197. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/macos-hotkeys/toggle-autocorrect.sh +0 -0
  198. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/macos-hotkeys/toggle-transcription.sh +0 -0
  199. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/macos-hotkeys/toggle-voice-edit.sh +0 -0
  200. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/nvidia-asr-server/README.md +0 -0
  201. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/nvidia-asr-server/pyproject.toml +0 -0
  202. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/nvidia-asr-server/server.py +0 -0
  203. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/nvidia-asr-server/shell.nix +0 -0
  204. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/nvidia-asr-server/uv.lock +0 -0
  205. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/run-openwakeword.sh +0 -0
  206. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/setup-linux-hotkeys.sh +0 -0
  207. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/setup-linux.sh +0 -0
  208. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/setup-macos-hotkeys.sh +0 -0
  209. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/setup-macos.sh +0 -0
  210. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/setup-windows.ps1 +0 -0
  211. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/start-all-services-windows.ps1 +0 -0
  212. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/scripts/start-all-services.sh +0 -0
  213. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/__init__.py +0 -0
  214. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/cli.py +0 -0
  215. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/common.py +0 -0
  216. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/model_manager.py +0 -0
  217. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/model_registry.py +0 -0
  218. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/proxy/__init__.py +0 -0
  219. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/proxy/api.py +0 -0
  220. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/streaming.py +0 -0
  221. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/tts/__init__.py +0 -0
  222. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/tts/api.py +0 -0
  223. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/tts/backends/__init__.py +0 -0
  224. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/tts/backends/base.py +0 -0
  225. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/tts/backends/kokoro.py +0 -0
  226. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/tts/backends/piper.py +0 -0
  227. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/tts/model_manager.py +0 -0
  228. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/tts/model_registry.py +0 -0
  229. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/tts/wyoming_handler.py +0 -0
  230. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/whisper/__init__.py +0 -0
  231. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/whisper/api.py +0 -0
  232. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/whisper/backends/__init__.py +0 -0
  233. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/whisper/backends/base.py +0 -0
  234. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/whisper/backends/faster_whisper.py +0 -0
  235. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/whisper/backends/mlx.py +0 -0
  236. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/whisper/backends/transformers.py +0 -0
  237. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/whisper/languages.py +0 -0
  238. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/whisper/model_manager.py +0 -0
  239. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/whisper/model_registry.py +0 -0
  240. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/server/whisper/wyoming_handler.py +0 -0
  241. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/services/__init__.py +0 -0
  242. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/services/_wyoming_utils.py +0 -0
  243. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/services/asr.py +0 -0
  244. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/services/llm.py +0 -0
  245. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/services/tts.py +0 -0
  246. {agent_cli-0.97.0 → agent_cli-0.97.2}/agent_cli/services/wake_word.py +0 -0
  247. {agent_cli-0.97.0 → agent_cli-0.97.2}/docker/docker-compose.yml +0 -0
  248. {agent_cli-0.97.0 → agent_cli-0.97.2}/docker/memory-proxy.Dockerfile +0 -0
  249. {agent_cli-0.97.0 → agent_cli-0.97.2}/docker/rag-proxy.Dockerfile +0 -0
  250. {agent_cli-0.97.0 → agent_cli-0.97.2}/docker/transcribe-proxy.Dockerfile +0 -0
  251. {agent_cli-0.97.0 → agent_cli-0.97.2}/docker/tts.Dockerfile +0 -0
  252. {agent_cli-0.97.0 → agent_cli-0.97.2}/docker/whisper.Dockerfile +0 -0
  253. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/CNAME +0 -0
  254. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/architecture/index.md +0 -0
  255. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/architecture/memory.md +0 -0
  256. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/architecture/rag.md +0 -0
  257. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/assistant.md +0 -0
  258. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/autocorrect.md +0 -0
  259. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/chat.md +0 -0
  260. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/config.md +0 -0
  261. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/daemon.md +0 -0
  262. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/dev.md +0 -0
  263. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/diarize-live-session.md +0 -0
  264. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/index.md +0 -0
  265. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/install-extras.md +0 -0
  266. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/install-hotkeys.md +0 -0
  267. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/install-services.md +0 -0
  268. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/memory.md +0 -0
  269. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/rag-proxy.md +0 -0
  270. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/server/index.md +0 -0
  271. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/server/transcribe-proxy.md +0 -0
  272. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/server/tts.md +0 -0
  273. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/server/whisper.md +0 -0
  274. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/speak.md +0 -0
  275. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/speakers.md +0 -0
  276. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/start-services.md +0 -0
  277. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/transcribe-live.md +0 -0
  278. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/transcribe.md +0 -0
  279. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/commands/voice-edit.md +0 -0
  280. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/configuration.md +0 -0
  281. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/getting-started.md +0 -0
  282. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/iOS_Shortcut_Guide.md +0 -0
  283. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/index.md +0 -0
  284. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/installation/docker.md +0 -0
  285. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/installation/index.md +0 -0
  286. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/installation/linux.md +0 -0
  287. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/installation/macos-app.md +0 -0
  288. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/installation/macos.md +0 -0
  289. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/installation/nixos.md +0 -0
  290. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/installation/windows.md +0 -0
  291. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/logo-avatar.svg +0 -0
  292. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/logo-clean.svg +0 -0
  293. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
  294. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/run_markdown_code_runner.py +0 -0
  295. {agent_cli-0.97.0 → agent_cli-0.97.2}/docs/system-integration.md +0 -0
  296. {agent_cli-0.97.0 → agent_cli-0.97.2}/example.agent-cli-config.toml +0 -0
  297. {agent_cli-0.97.0 → agent_cli-0.97.2}/justfile +0 -0
  298. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Package.resolved +0 -0
  299. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Package.swift +0 -0
  300. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/README.md +0 -0
  301. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Resources/AgentCLI.entitlements +0 -0
  302. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Resources/Info.plist +0 -0
  303. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Resources/dmg-background.svg +0 -0
  304. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/AgentCLIApp.swift +0 -0
  305. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/AgentCommand.swift +0 -0
  306. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/AgentCommandRunner.swift +0 -0
  307. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/AgentRuntime.swift +0 -0
  308. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/AppDelegate.swift +0 -0
  309. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/AppMetadata.swift +0 -0
  310. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/AppUpdater.swift +0 -0
  311. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/BootstrapState.swift +0 -0
  312. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/CommandResult.swift +0 -0
  313. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/ConfigurableHotkeyController.swift +0 -0
  314. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/FocusedTextTarget.swift +0 -0
  315. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/LoginItemController.swift +0 -0
  316. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/MenuActivityStatus.swift +0 -0
  317. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/MenuActivityStatusRow.swift +0 -0
  318. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/MenuActivityTracker.swift +0 -0
  319. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/MenuBarIcon.swift +0 -0
  320. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/RecentTranscriptionReader.swift +0 -0
  321. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/RecordingIndicatorController.swift +0 -0
  322. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/RecordingSoundSettings.swift +0 -0
  323. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/RuntimeSettings.swift +0 -0
  324. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/SettingsWindowController.swift +0 -0
  325. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/Shortcuts.swift +0 -0
  326. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/StatusMenuController.swift +0 -0
  327. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/TranscriptPasteController.swift +0 -0
  328. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/TranscriptionSettings.swift +0 -0
  329. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Sources/AgentCLI/VoiceLevelOverlay.swift +0 -0
  330. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Tests/AgentCLITests/AgentCommandTests.swift +0 -0
  331. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Tests/AgentCLITests/LoginItemControllerTests.swift +0 -0
  332. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Tests/AgentCLITests/RecentTranscriptionReaderTests.swift +0 -0
  333. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Tests/AgentCLITests/RecordingIndicatorControllerTests.swift +0 -0
  334. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Tests/AgentCLITests/ShortcutDefaultsTests.swift +0 -0
  335. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/AgentCLI/Tests/AgentCLITests/VoiceLevelMeterTests.swift +0 -0
  336. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/build-macos-app.sh +0 -0
  337. {agent_cli-0.97.0 → agent_cli-0.97.2}/macos/test-macos-app-e2e.sh +0 -0
  338. {agent_cli-0.97.0 → agent_cli-0.97.2}/pyproject.toml +0 -0
  339. {agent_cli-0.97.0 → agent_cli-0.97.2}/reddit.md +0 -0
  340. {agent_cli-0.97.0 → agent_cli-0.97.2}/shell.nix +0 -0
  341. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/__init__.py +0 -0
  342. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/__init__.py +0 -0
  343. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_fix_my_text.py +0 -0
  344. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_interactive.py +0 -0
  345. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_interactive_extra.py +0 -0
  346. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_memory_add.py +0 -0
  347. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_speak.py +0 -0
  348. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_speak_e2e.py +0 -0
  349. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_speakers.py +0 -0
  350. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_transcribe.py +0 -0
  351. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_transcribe_agent.py +0 -0
  352. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_transcribe_e2e.py +0 -0
  353. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_transcribe_live.py +0 -0
  354. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_transcribe_recovery.py +0 -0
  355. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_tts_common.py +0 -0
  356. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_tts_common_extra.py +0 -0
  357. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_voice_agent_common.py +0 -0
  358. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_voice_edit.py +0 -0
  359. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_voice_edit_e2e.py +0 -0
  360. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/agents/test_wake_word_assistant.py +0 -0
  361. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/conftest.py +0 -0
  362. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/core/__init__.py +0 -0
  363. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/core/test_audio.py +0 -0
  364. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/core/test_audio_format.py +0 -0
  365. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/core/test_chroma.py +0 -0
  366. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/core/test_sse.py +0 -0
  367. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/core/test_vad.py +0 -0
  368. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/core/test_watch.py +0 -0
  369. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/dev/__init__.py +0 -0
  370. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/dev/test_cleanup.py +0 -0
  371. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/dev/test_cli.py +0 -0
  372. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/dev/test_coding_agents.py +0 -0
  373. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/dev/test_editors.py +0 -0
  374. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/dev/test_hooks.py +0 -0
  375. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/dev/test_launch.py +0 -0
  376. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/dev/test_project.py +0 -0
  377. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/dev/test_terminals.py +0 -0
  378. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/dev/test_verification.py +0 -0
  379. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/dev/test_worktree.py +0 -0
  380. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/install/__init__.py +0 -0
  381. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/install/test_extras.py +0 -0
  382. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/memory/__init__.py +0 -0
  383. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/memory/test_api_health.py +0 -0
  384. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/memory/test_api_integration_liveish.py +0 -0
  385. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/memory/test_client.py +0 -0
  386. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/memory/test_engine.py +0 -0
  387. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/memory/test_files.py +0 -0
  388. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/memory/test_filters.py +0 -0
  389. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/memory/test_git_integration.py +0 -0
  390. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/memory/test_indexer.py +0 -0
  391. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/memory/test_memory_integration.py +0 -0
  392. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/memory/test_proxy_passthrough.py +0 -0
  393. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/memory/test_store.py +0 -0
  394. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/memory/test_utils.py +0 -0
  395. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/mocks/__init__.py +0 -0
  396. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/mocks/audio.py +0 -0
  397. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/mocks/llm.py +0 -0
  398. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/mocks/wyoming.py +0 -0
  399. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/rag/__init__.py +0 -0
  400. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/rag/test_api.py +0 -0
  401. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/rag/test_engine.py +0 -0
  402. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/rag/test_history.py +0 -0
  403. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/rag/test_indexer.py +0 -0
  404. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/rag/test_indexing.py +0 -0
  405. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/rag/test_rag_client.py +0 -0
  406. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/rag/test_rag_integration_liveish.py +0 -0
  407. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/rag/test_rag_proxy_passthrough.py +0 -0
  408. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/rag/test_retriever.py +0 -0
  409. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/rag/test_store.py +0 -0
  410. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/rag/test_utils.py +0 -0
  411. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_alignment.py +0 -0
  412. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_api.py +0 -0
  413. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_api_integration.py +0 -0
  414. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_asr.py +0 -0
  415. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_asr_recovery.py +0 -0
  416. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_audio_e2e.py +0 -0
  417. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_cli.py +0 -0
  418. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_config.py +0 -0
  419. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_config_cmd.py +0 -0
  420. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_diarization.py +0 -0
  421. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_diarize_live_session.py +0 -0
  422. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_docs_gen.py +0 -0
  423. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_env_vars.py +0 -0
  424. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_faster_whisper_backend.py +0 -0
  425. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_json_output.py +0 -0
  426. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_llm.py +0 -0
  427. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_llm_gemini.py +0 -0
  428. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_macos_app.py +0 -0
  429. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_memory_tools.py +0 -0
  430. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_mlx_backend.py +0 -0
  431. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_normalize_appcast.py +0 -0
  432. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_process_manager.py +0 -0
  433. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_server_streaming.py +0 -0
  434. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_server_tts.py +0 -0
  435. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_server_whisper.py +0 -0
  436. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_services.py +0 -0
  437. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_speaker_identity.py +0 -0
  438. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_tools.py +0 -0
  439. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_transformers_backend.py +0 -0
  440. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_tts.py +0 -0
  441. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_utils.py +0 -0
  442. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_wake_word.py +0 -0
  443. {agent_cli-0.97.0 → agent_cli-0.97.2}/tests/test_wyoming_utils.py +0 -0
  444. {agent_cli-0.97.0 → agent_cli-0.97.2}/uv.lock +0 -0
  445. {agent_cli-0.97.0 → agent_cli-0.97.2}/zensical.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-cli
3
- Version: 0.97.0
3
+ Version: 0.97.2
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>
@@ -70,6 +70,18 @@ def _is_uvx_cache() -> bool:
70
70
  return "/cache/uv/" in prefix_str or "/archive-v" in prefix_str
71
71
 
72
72
 
73
+ def _find_runtime_uv() -> str | None:
74
+ """Find uv for runtime dependency installs, including bundled app uv."""
75
+ for env_name in ("AGENTCLI_UV_PATH", "AGENTCLI_BUNDLED_UV"):
76
+ value = os.environ.get(env_name)
77
+ if not value:
78
+ continue
79
+ uv_path = Path(value).expanduser()
80
+ if uv_path.is_file() and os.access(uv_path, os.X_OK):
81
+ return str(uv_path)
82
+ return shutil.which("uv")
83
+
84
+
73
85
  # -- Package Checking --
74
86
 
75
87
  # Load extras from JSON file
@@ -252,8 +264,9 @@ def _install_via_uv_tool(extras: list[str], *, quiet: bool = False) -> bool:
252
264
  def _install_cmd() -> list[str]:
253
265
  """Build the install command with appropriate flags."""
254
266
  in_venv = _in_virtualenv()
255
- if shutil.which("uv"):
256
- cmd = ["uv", "pip", "install", "--python", sys.executable]
267
+ uv_path = _find_runtime_uv()
268
+ if uv_path:
269
+ cmd = [uv_path, "pip", "install", "--python", sys.executable]
257
270
  if not in_venv:
258
271
  cmd.append("--system")
259
272
  return cmd
@@ -281,7 +294,7 @@ def _supports_uv_runtime_override(
281
294
  """Return True when uv can install an extra with runtime overrides."""
282
295
  if extra not in _EXTRA_UV_RUNTIME_REQUIREMENTS:
283
296
  return False
284
- has_uv = shutil.which("uv") is not None if uv_available is None else uv_available
297
+ has_uv = _find_runtime_uv() is not None if uv_available is None else uv_available
285
298
  return has_uv and _uv_override_path(extra).exists()
286
299
 
287
300
 
@@ -299,11 +312,15 @@ def _uv_pip_extra_requirements(extra: str, cmd: list[str]) -> list[str]:
299
312
  return list(_EXTRA_UV_RUNTIME_REQUIREMENTS[extra])
300
313
 
301
314
 
302
- def _uv_tool_extra_args(extras: list[str]) -> list[str]:
315
+ def _uv_tool_extra_args(
316
+ extras: list[str],
317
+ *,
318
+ uv_available: bool | None = None,
319
+ ) -> list[str]:
303
320
  """Return uv tool arguments needed for extras with runtime overrides."""
304
321
  args: list[str] = []
305
322
  for extra in extras:
306
- if not _supports_uv_runtime_override(extra):
323
+ if not _supports_uv_runtime_override(extra, uv_available=uv_available):
307
324
  continue
308
325
  args.extend(["--overrides", str(_uv_override_path(extra))])
309
326
  for requirement in _EXTRA_UV_RUNTIME_REQUIREMENTS[extra]:
@@ -409,19 +426,33 @@ def _maybe_exec_with_marker(cmd: list[str], message: str) -> None:
409
426
 
410
427
 
411
428
  def _maybe_reexec_with_uvx(extras: list[str]) -> None:
412
- """Try to re-execute with uvx running agent-cli[extras] directly.
429
+ """Try to re-execute with uv running agent-cli[extras] directly.
413
430
 
414
431
  If successful, replaces the current process (never returns).
415
- If not in uvx cache or uvx unavailable, returns normally.
432
+ If not in uvx cache or uv unavailable, returns normally.
416
433
  """
417
434
  if os.environ.get(_REEXEC_MARKER) or not _is_uvx_cache():
418
435
  return
419
- uvx_path = shutil.which("uvx")
420
- if not uvx_path:
436
+
437
+ uv_path = _find_runtime_uv()
438
+ if not uv_path:
421
439
  return
440
+
422
441
  extras_str = ",".join(extras)
423
- # Run agent-cli[extras] directly with Python 3.13 (some deps lack 3.14 wheels)
424
- cmd = [uvx_path, "--python", "3.13", f"agent-cli[{extras_str}]", *sys.argv[1:]]
442
+ package_source = os.environ.get("AGENTCLI_PACKAGE_SOURCE", "agent-cli")
443
+ package_spec = f"{package_source}[{extras_str}]"
444
+ cmd = [
445
+ uv_path,
446
+ "tool",
447
+ "run",
448
+ "--python",
449
+ "3.13",
450
+ *_uv_tool_extra_args(extras, uv_available=True),
451
+ "--from",
452
+ package_spec,
453
+ "agent-cli",
454
+ *sys.argv[1:],
455
+ ]
425
456
  _maybe_exec_with_marker(cmd, f"Re-running with extras: {extras_str}")
426
457
 
427
458
 
@@ -117,6 +117,7 @@ def _generate_plist(
117
117
  value = os.environ.get(key)
118
118
  if value:
119
119
  environment[key] = value
120
+ environment["AGENTCLI_UV_PATH"] = uv_path.as_posix()
120
121
 
121
122
  return {
122
123
  "Label": _get_label(service.name),
@@ -104,12 +104,14 @@ def _generate_unit_file(
104
104
  exec_start = _format_exec_start(
105
105
  build_service_command(service, uv_path, extra_command_args=extra_command_args),
106
106
  )
107
+ uv_environment = _format_exec_start_arg(f"AGENTCLI_UV_PATH={uv_path}")
107
108
 
108
109
  return f"""[Unit]
109
110
  Description=agent-cli {service.display_name}
110
111
  After=network.target
111
112
 
112
113
  [Service]
114
+ Environment={uv_environment}
113
115
  ExecStart={exec_start}
114
116
  Restart=on-failure
115
117
  RestartSec=5
@@ -209,6 +209,40 @@ def _build_transcribe_kwargs(
209
209
  return transcribe_kwargs
210
210
 
211
211
 
212
+ def _set_config_value(config: Any, key: str, value: Any) -> None:
213
+ """Set a NeMo config value, including OmegaConf configs in struct mode."""
214
+ try:
215
+ setattr(config, key, value)
216
+ return
217
+ except (AttributeError, TypeError):
218
+ if isinstance(config, dict):
219
+ config[key] = value
220
+ return
221
+ raise
222
+ except Exception:
223
+ from omegaconf import open_dict # noqa: PLC0415
224
+
225
+ with open_dict(config):
226
+ setattr(config, key, value)
227
+
228
+
229
+ def _ensure_validation_ds_config(model: Any) -> None:
230
+ """NeMo RNNT transcribe expects cfg.validation_ds to be a mapping."""
231
+ config = getattr(model, "cfg", None)
232
+ if config is None:
233
+ return
234
+
235
+ try:
236
+ validation_ds = (
237
+ config.get("validation_ds") if hasattr(config, "get") else config.validation_ds
238
+ )
239
+ except (AttributeError, KeyError):
240
+ return
241
+
242
+ if validation_ds is None:
243
+ _set_config_value(config, "validation_ds", {})
244
+
245
+
212
246
  def _load_model_in_subprocess(model_name: str, device: str) -> str:
213
247
  """Load model in subprocess. Returns actual device string."""
214
248
  import nemo.collections.asr as nemo_asr # noqa: PLC0415
@@ -217,6 +251,7 @@ def _load_model_in_subprocess(model_name: str, device: str) -> str:
217
251
 
218
252
  resolved_device = _resolve_device(device)
219
253
  model = nemo_asr.models.ASRModel.from_pretrained(model_name=model_name)
254
+ _ensure_validation_ds_config(model)
220
255
  if hasattr(model, "to"):
221
256
  model = model.to(resolved_device)
222
257
  if hasattr(model, "eval"):
@@ -4,6 +4,38 @@
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.97.1</title>
9
+ <pubDate>Thu, 04 Jun 2026 07:09:14 +0000</pubDate>
10
+ <link>https://github.com/basnijholt/agent-cli</link>
11
+ <sparkle:version>186</sparkle:version>
12
+ <sparkle:shortVersionString>0.97.1</sparkle:shortVersionString>
13
+ <sparkle:minimumSystemVersion>13.0</sparkle:minimumSystemVersion>
14
+ <sparkle:hardwareRequirements>arm64</sparkle:hardwareRequirements>
15
+ <description sparkle:format="markdown"><![CDATA[## What's Changed
16
+ * Fix NeMo daemon runtime installs by @basnijholt in https://github.com/basnijholt/agent-cli/pull/575
17
+
18
+
19
+ **Full Changelog**: https://github.com/basnijholt/agent-cli/compare/v0.97.0...v0.97.1
20
+ ]]></description>
21
+ <enclosure url="https://github.com/basnijholt/agent-cli/releases/download/v0.97.1/AgentCLI.zip" length="22876193" type="application/octet-stream" sparkle:edSignature="zHJ1pEwR+In37XkGhdEX9sgTdAg0oiu6xbTpCoMF+4WsJEfDInwYlJkw10vb8dN3rnqSdNzv/UjB3tBnFlvRBA=="/>
22
+ </item>
23
+ <item>
24
+ <title>0.97.0</title>
25
+ <pubDate>Thu, 04 Jun 2026 06:29:00 +0000</pubDate>
26
+ <link>https://github.com/basnijholt/agent-cli</link>
27
+ <sparkle:version>185</sparkle:version>
28
+ <sparkle:shortVersionString>0.97.0</sparkle:shortVersionString>
29
+ <sparkle:minimumSystemVersion>13.0</sparkle:minimumSystemVersion>
30
+ <sparkle:hardwareRequirements>arm64</sparkle:hardwareRequirements>
31
+ <description sparkle:format="markdown"><![CDATA[## What’s Changed
32
+
33
+ * Add NeMo backend for Parakeet support in server whisper (#436) @basnijholt
34
+ * Allow custom args for daemon installs (#572) @basnijholt
35
+
36
+ ]]></description>
37
+ <enclosure url="https://github.com/basnijholt/agent-cli/releases/download/v0.97.0/AgentCLI.zip" length="22875944" type="application/octet-stream" sparkle:edSignature="HdEW62220s/A/0bHgt7ZoEN/qKRDJr0ozOZ9jUYHT/OhybqVmv6reM/cWQFyWSPEKwH7ER8/76NGOOlmIAIcCA=="/>
38
+ </item>
7
39
  <item>
8
40
  <title>0.96.10</title>
9
41
  <pubDate>Wed, 03 Jun 2026 18:47:20 +0000</pubDate>
@@ -140,38 +172,5 @@
140
172
  ]]></description>
141
173
  <enclosure url="https://github.com/basnijholt/agent-cli/releases/download/v0.96.3/AgentCLI.zip" length="22735617" type="application/octet-stream" sparkle:edSignature="GIH6s55wnjpesAtPrHdk5btvtZfxkFrqr1v0tX69WWlHdA9w+qTQFszuw8/K21wsmqnp3ynacGP7aa4YqrB7Bg=="/>
142
174
  </item>
143
- <item>
144
- <title>0.96.2</title>
145
- <pubDate>Fri, 29 May 2026 05:56:37 +0000</pubDate>
146
- <link>https://github.com/basnijholt/agent-cli</link>
147
- <sparkle:version>176</sparkle:version>
148
- <sparkle:shortVersionString>0.96.2</sparkle:shortVersionString>
149
- <sparkle:minimumSystemVersion>13.0</sparkle:minimumSystemVersion>
150
- <sparkle:hardwareRequirements>arm64</sparkle:hardwareRequirements>
151
- <description sparkle:format="markdown"><![CDATA[## What’s Changed
152
-
153
- * Fix macOS voice spectrum overlay sensitivity (#548) @basnijholt
154
-
155
- ]]></description>
156
- <enclosure url="https://github.com/basnijholt/agent-cli/releases/download/v0.96.2/AgentCLI.zip" length="22731154" type="application/octet-stream" sparkle:edSignature="MmlMlLHAK31VEqi0/9apTebWyh31p1jp1U76dw5KU5E9LCl2lqkWnIF2JTPpiTxoS4egpxom7D1FNAKZWQ2EAw=="/>
157
- </item>
158
- <item>
159
- <title>0.96.1</title>
160
- <pubDate>Fri, 29 May 2026 05:47:47 +0000</pubDate>
161
- <link>https://github.com/basnijholt/agent-cli</link>
162
- <sparkle:version>175</sparkle:version>
163
- <sparkle:shortVersionString>0.96.1</sparkle:shortVersionString>
164
- <sparkle:minimumSystemVersion>13.0</sparkle:minimumSystemVersion>
165
- <sparkle:hardwareRequirements>arm64</sparkle:hardwareRequirements>
166
- <description sparkle:format="markdown"><![CDATA[## What’s Changed
167
-
168
- * Clean up macOS menu lifecycle wiring (#545) @basnijholt
169
- * Remove uv Python 3.13 install workarounds (#521) @basnijholt
170
- * Remove brittle macOS source-shape tests (#547) @basnijholt
171
- * Fix macOS voice meter source assertions (#546) @basnijholt
172
-
173
- ]]></description>
174
- <enclosure url="https://github.com/basnijholt/agent-cli/releases/download/v0.96.1/AgentCLI.zip" length="22729845" type="application/octet-stream" sparkle:edSignature="YYq/64CSi+pxZD2NZ02GWIPAdusUf3mesEQ4MltVUOSheuOwimOZpHs81brT4g8rFBa2PRfnobfrfcTtfONqCQ=="/>
175
- </item>
176
175
  </channel>
177
176
  </rss>
@@ -25,6 +25,7 @@ def test_generate_plist_sets_path_for_homebrew_bins() -> None:
25
25
  assert "/opt/homebrew/bin" in path.split(":")
26
26
  assert "/usr/local/bin" in path.split(":")
27
27
  assert path.endswith("/usr/bin:/bin:/usr/sbin:/sbin")
28
+ assert plist["EnvironmentVariables"]["AGENTCLI_UV_PATH"] == "/opt/homebrew/bin/uv"
28
29
 
29
30
 
30
31
  def test_generate_plist_preserves_app_private_uv_environment(
@@ -853,6 +853,7 @@ class TestSystemdModule:
853
853
  assert "[Install]" in unit_content
854
854
  assert "ExecStart=" in unit_content
855
855
  assert str(uv_path) in unit_content
856
+ assert "Environment=AGENTCLI_UV_PATH=uv" in unit_content
856
857
  assert "Restart=on-failure" in unit_content
857
858
 
858
859
  def test_systemd_generate_unit_file_appends_extra_args(self) -> None:
@@ -23,6 +23,8 @@ if TYPE_CHECKING:
23
23
  def _install_mock_nemo(
24
24
  monkeypatch: pytest.MonkeyPatch,
25
25
  calls: dict[str, object],
26
+ *,
27
+ model: object | None = None,
26
28
  ) -> None:
27
29
  """Install a minimal mock of nemo.collections.asr in sys.modules."""
28
30
 
@@ -30,7 +32,7 @@ def _install_mock_nemo(
30
32
  @staticmethod
31
33
  def from_pretrained(*, model_name: str) -> object:
32
34
  calls["model_name"] = model_name
33
- return object()
35
+ return model if model is not None else object()
34
36
 
35
37
  nemo_module: Any = ModuleType("nemo")
36
38
  collections_module: Any = ModuleType("nemo.collections")
@@ -235,6 +237,36 @@ def test_resolve_device_preserves_explicit_cpu(
235
237
  assert backend._resolve_device("cpu") == "cpu"
236
238
 
237
239
 
240
+ def test_load_model_fills_missing_validation_ds_for_unified_parakeet(
241
+ monkeypatch: pytest.MonkeyPatch,
242
+ ) -> None:
243
+ """NeMo transcribe expects validation_ds to be a mapping, not None."""
244
+
245
+ class _Model:
246
+ def __init__(self) -> None:
247
+ self.cfg = SimpleNamespace(validation_ds=None)
248
+
249
+ def to(self, device: str) -> _Model:
250
+ assert device == "cpu"
251
+ return self
252
+
253
+ def eval(self) -> None:
254
+ return None
255
+
256
+ calls: dict[str, object] = {}
257
+ model = _Model()
258
+ _install_mock_torch(monkeypatch, cuda_available=False)
259
+ _install_mock_nemo(monkeypatch, calls, model=model)
260
+ monkeypatch.setattr(backend._state, "model", None)
261
+ monkeypatch.setattr(backend._state, "device", None)
262
+
263
+ assert backend._load_model_in_subprocess("nvidia/parakeet-unified-en-0.6b", "cpu") == "cpu"
264
+
265
+ assert calls["model_name"] == "nvidia/parakeet-unified-en-0.6b"
266
+ assert model.cfg.validation_ds == {}
267
+ assert backend._state.model is model
268
+
269
+
238
270
  def test_audio_duration_seconds_returns_zero_for_non_wav(tmp_path: Path) -> None:
239
271
  """Ensure non-WAV uploads do not raise duration parsing errors."""
240
272
  audio_path = tmp_path / "sample.mp3"
@@ -15,10 +15,12 @@ from agent_cli.core.deps import (
15
15
  EXTRAS,
16
16
  _check_and_install_extras,
17
17
  _find_python_incompatible_extras,
18
+ _find_runtime_uv,
18
19
  _get_auto_install_setting,
19
20
  _get_install_hint,
20
21
  _install_via_uv_tool,
21
22
  _maybe_reexec_after_install,
23
+ _maybe_reexec_with_uvx,
22
24
  _resolve_extras_for_install,
23
25
  _should_skip_extra_check_for_process_control,
24
26
  get_combined_install_hint,
@@ -297,6 +299,65 @@ class TestCheckAndInstallExtras:
297
299
  uv_available=False,
298
300
  ) == ["nemo-whisper"]
299
301
 
302
+ def test_python_incompatible_extra_detection_uses_bundled_uv(self, tmp_path: Path) -> None:
303
+ """Bundled uv should enable NeMo runtime overrides even when uv is not on PATH."""
304
+ uv_path = tmp_path / "uv"
305
+ uv_path.touch()
306
+ uv_path.chmod(0o755)
307
+
308
+ with (
309
+ patch.dict(os.environ, {"AGENTCLI_BUNDLED_UV": str(uv_path)}, clear=True),
310
+ patch("agent_cli.core.deps.shutil.which", return_value=None),
311
+ ):
312
+ assert _find_runtime_uv() == str(uv_path)
313
+ assert (
314
+ _find_python_incompatible_extras(
315
+ ["nemo-whisper"],
316
+ python_version=(3, 14),
317
+ )
318
+ == []
319
+ )
320
+
321
+ def test_uvx_cache_reexec_uses_bundled_uv_with_nemo_overrides(
322
+ self, tmp_path: Path, monkeypatch: pytest.MonkeyPatch
323
+ ) -> None:
324
+ """uvx-cache NeMo commands should re-exec via bundled uv with runtime overrides."""
325
+ uv_path = tmp_path / "uv"
326
+ uv_path.touch()
327
+ uv_path.chmod(0o755)
328
+ package_source = tmp_path / "agent_cli.whl"
329
+ captured: dict[str, object] = {}
330
+
331
+ def fake_execvpe(file: str, cmd: list[str], env: dict[str, str]) -> None:
332
+ captured["file"] = file
333
+ captured["cmd"] = cmd
334
+ captured["env"] = env
335
+
336
+ monkeypatch.setenv("AGENTCLI_BUNDLED_UV", str(uv_path))
337
+ monkeypatch.setenv("AGENTCLI_PACKAGE_SOURCE", str(package_source))
338
+ monkeypatch.setattr("agent_cli.core.deps.shutil.which", lambda _: None)
339
+ monkeypatch.setattr("agent_cli.core.deps._is_uvx_cache", lambda: True)
340
+ monkeypatch.setattr("agent_cli.core.deps.os.execvpe", fake_execvpe)
341
+ monkeypatch.setattr(
342
+ "sys.argv",
343
+ ["agent-cli", "server", "whisper", "--backend", "nemo"],
344
+ )
345
+
346
+ _maybe_reexec_with_uvx(["server", "nemo-whisper", "wyoming"])
347
+
348
+ cmd = captured["cmd"]
349
+ assert isinstance(cmd, list)
350
+ assert cmd[:5] == [str(uv_path), "tool", "run", "--python", "3.13"]
351
+ assert "--overrides" in cmd
352
+ assert "nemo-whisper.txt" in cmd[cmd.index("--overrides") + 1]
353
+ assert "--with" in cmd
354
+ assert (
355
+ "NVIDIA-NeMo/NeMo.git@be23ce1ee6594da3d7fa2f37e603d3b3ba230a9e"
356
+ in cmd[cmd.index("--with") + 1]
357
+ )
358
+ assert cmd[cmd.index("--from") + 1] == f"{package_source}[server,nemo-whisper,wyoming]"
359
+ assert cmd[-4:] == ["server", "whisper", "--backend", "nemo"]
360
+
300
361
  def test_uv_pip_install_uses_nemo_git_override(self) -> None:
301
362
  """Uv pip installs NeMo from a pinned Git revision with the kaldialign override."""
302
363
  with (
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