agent-cli 0.69.0__tar.gz → 0.69.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 (361) hide show
  1. {agent_cli-0.69.0 → agent_cli-0.69.2}/PKG-INFO +1 -1
  2. agent_cli-0.69.2/docker/transcription-proxy.Dockerfile +61 -0
  3. {agent_cli-0.69.0 → agent_cli-0.69.2}/docker/tts.Dockerfile +61 -44
  4. {agent_cli-0.69.0 → agent_cli-0.69.2}/docker/whisper.Dockerfile +43 -43
  5. agent_cli-0.69.0/docker/transcription-proxy.Dockerfile +0 -51
  6. {agent_cli-0.69.0 → agent_cli-0.69.2}/.claude/skills/agent-cli-dev/SKILL.md +0 -0
  7. {agent_cli-0.69.0 → agent_cli-0.69.2}/.claude/skills/agent-cli-dev/examples.md +0 -0
  8. {agent_cli-0.69.0 → agent_cli-0.69.2}/.claude-plugin/README.md +0 -0
  9. {agent_cli-0.69.0 → agent_cli-0.69.2}/.claude-plugin/marketplace.json +0 -0
  10. {agent_cli-0.69.0 → agent_cli-0.69.2}/.claude-plugin/plugin.json +0 -0
  11. {agent_cli-0.69.0 → agent_cli-0.69.2}/.claude-plugin/skills/agent-cli-dev/SKILL.md +0 -0
  12. {agent_cli-0.69.0 → agent_cli-0.69.2}/.claude-plugin/skills/agent-cli-dev/examples.md +0 -0
  13. {agent_cli-0.69.0 → agent_cli-0.69.2}/.cursorrules +0 -0
  14. {agent_cli-0.69.0 → agent_cli-0.69.2}/.env.example +0 -0
  15. {agent_cli-0.69.0 → agent_cli-0.69.2}/.github/logo.svg +0 -0
  16. {agent_cli-0.69.0 → agent_cli-0.69.2}/.github/release-drafter.yml +0 -0
  17. {agent_cli-0.69.0 → agent_cli-0.69.2}/.github/renovate.json +0 -0
  18. {agent_cli-0.69.0 → agent_cli-0.69.2}/.github/scripts/check_extras_sync.py +0 -0
  19. {agent_cli-0.69.0 → agent_cli-0.69.2}/.github/scripts/sync_requirements.py +0 -0
  20. {agent_cli-0.69.0 → agent_cli-0.69.2}/.github/workflows/automerge.yml +0 -0
  21. {agent_cli-0.69.0 → agent_cli-0.69.2}/.github/workflows/docker.yml +0 -0
  22. {agent_cli-0.69.0 → agent_cli-0.69.2}/.github/workflows/docs.yml +0 -0
  23. {agent_cli-0.69.0 → agent_cli-0.69.2}/.github/workflows/markdown-code-runner.yml +0 -0
  24. {agent_cli-0.69.0 → agent_cli-0.69.2}/.github/workflows/pytest.yml +0 -0
  25. {agent_cli-0.69.0 → agent_cli-0.69.2}/.github/workflows/release-drafter.yml +0 -0
  26. {agent_cli-0.69.0 → agent_cli-0.69.2}/.github/workflows/release.yml +0 -0
  27. {agent_cli-0.69.0 → agent_cli-0.69.2}/.github/workflows/toc.yaml +0 -0
  28. {agent_cli-0.69.0 → agent_cli-0.69.2}/.gitignore +0 -0
  29. {agent_cli-0.69.0 → agent_cli-0.69.2}/.jscpd.json +0 -0
  30. {agent_cli-0.69.0 → agent_cli-0.69.2}/.pre-commit-config.yaml +0 -0
  31. {agent_cli-0.69.0 → agent_cli-0.69.2}/.prompts/docs-review.md +0 -0
  32. {agent_cli-0.69.0 → agent_cli-0.69.2}/.prompts/pr-review.md +0 -0
  33. {agent_cli-0.69.0 → agent_cli-0.69.2}/CLAUDE.md +0 -0
  34. {agent_cli-0.69.0 → agent_cli-0.69.2}/LICENSE +0 -0
  35. {agent_cli-0.69.0 → agent_cli-0.69.2}/README.md +0 -0
  36. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/__init__.py +0 -0
  37. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/__main__.py +0 -0
  38. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/_extras.json +0 -0
  39. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/_requirements/.gitkeep +0 -0
  40. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/_requirements/audio.txt +0 -0
  41. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/_requirements/faster-whisper.txt +0 -0
  42. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/_requirements/kokoro.txt +0 -0
  43. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/_requirements/llm.txt +0 -0
  44. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/_requirements/memory.txt +0 -0
  45. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/_requirements/mlx-whisper.txt +0 -0
  46. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/_requirements/piper.txt +0 -0
  47. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/_requirements/rag.txt +0 -0
  48. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/_requirements/server.txt +0 -0
  49. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/_requirements/speed.txt +0 -0
  50. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/_requirements/vad.txt +0 -0
  51. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/_tools.py +0 -0
  52. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/agents/__init__.py +0 -0
  53. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/agents/_voice_agent_common.py +0 -0
  54. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/agents/assistant.py +0 -0
  55. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/agents/autocorrect.py +0 -0
  56. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/agents/chat.py +0 -0
  57. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/agents/memory/__init__.py +0 -0
  58. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/agents/memory/add.py +0 -0
  59. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/agents/memory/proxy.py +0 -0
  60. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/agents/rag_proxy.py +0 -0
  61. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/agents/speak.py +0 -0
  62. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/agents/transcribe.py +0 -0
  63. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/agents/transcribe_daemon.py +0 -0
  64. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/agents/voice_edit.py +0 -0
  65. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/api.py +0 -0
  66. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/cli.py +0 -0
  67. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/config.py +0 -0
  68. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/config_cmd.py +0 -0
  69. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/constants.py +0 -0
  70. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/core/__init__.py +0 -0
  71. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/core/audio.py +0 -0
  72. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/core/audio_format.py +0 -0
  73. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/core/chroma.py +0 -0
  74. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/core/deps.py +0 -0
  75. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/core/openai_proxy.py +0 -0
  76. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/core/process.py +0 -0
  77. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/core/reranker.py +0 -0
  78. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/core/sse.py +0 -0
  79. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/core/transcription_logger.py +0 -0
  80. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/core/utils.py +0 -0
  81. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/core/vad.py +0 -0
  82. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/core/watch.py +0 -0
  83. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/__init__.py +0 -0
  84. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/cli.py +0 -0
  85. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/coding_agents/__init__.py +0 -0
  86. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/coding_agents/aider.py +0 -0
  87. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/coding_agents/base.py +0 -0
  88. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/coding_agents/claude.py +0 -0
  89. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/coding_agents/codex.py +0 -0
  90. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/coding_agents/continue_dev.py +0 -0
  91. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/coding_agents/copilot.py +0 -0
  92. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/coding_agents/cursor_agent.py +0 -0
  93. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/coding_agents/gemini.py +0 -0
  94. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/coding_agents/opencode.py +0 -0
  95. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/coding_agents/registry.py +0 -0
  96. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/editors/__init__.py +0 -0
  97. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/editors/base.py +0 -0
  98. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/editors/cursor.py +0 -0
  99. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/editors/emacs.py +0 -0
  100. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/editors/jetbrains.py +0 -0
  101. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/editors/nano.py +0 -0
  102. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/editors/neovim.py +0 -0
  103. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/editors/registry.py +0 -0
  104. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/editors/sublime.py +0 -0
  105. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/editors/vim.py +0 -0
  106. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/editors/vscode.py +0 -0
  107. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/editors/zed.py +0 -0
  108. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/project.py +0 -0
  109. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/registry.py +0 -0
  110. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/skill/SKILL.md +0 -0
  111. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/skill/examples.md +0 -0
  112. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/terminals/__init__.py +0 -0
  113. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/terminals/apple_terminal.py +0 -0
  114. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/terminals/base.py +0 -0
  115. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/terminals/gnome.py +0 -0
  116. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/terminals/iterm2.py +0 -0
  117. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/terminals/kitty.py +0 -0
  118. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/terminals/registry.py +0 -0
  119. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/terminals/tmux.py +0 -0
  120. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/terminals/warp.py +0 -0
  121. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/terminals/zellij.py +0 -0
  122. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/dev/worktree.py +0 -0
  123. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/docs_gen.py +0 -0
  124. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/example-config.toml +0 -0
  125. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/install/__init__.py +0 -0
  126. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/install/common.py +0 -0
  127. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/install/extras.py +0 -0
  128. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/install/hotkeys.py +0 -0
  129. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/install/services.py +0 -0
  130. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/memory/__init__.py +0 -0
  131. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/memory/_files.py +0 -0
  132. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/memory/_filters.py +0 -0
  133. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/memory/_git.py +0 -0
  134. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/memory/_indexer.py +0 -0
  135. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/memory/_ingest.py +0 -0
  136. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/memory/_persistence.py +0 -0
  137. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/memory/_prompt.py +0 -0
  138. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/memory/_retrieval.py +0 -0
  139. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/memory/_store.py +0 -0
  140. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/memory/_streaming.py +0 -0
  141. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/memory/_tasks.py +0 -0
  142. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/memory/api.py +0 -0
  143. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/memory/client.py +0 -0
  144. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/memory/engine.py +0 -0
  145. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/memory/entities.py +0 -0
  146. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/memory/models.py +0 -0
  147. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/opts.py +0 -0
  148. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/py.typed +0 -0
  149. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/rag/__init__.py +0 -0
  150. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/rag/_indexer.py +0 -0
  151. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/rag/_indexing.py +0 -0
  152. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/rag/_prompt.py +0 -0
  153. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/rag/_retriever.py +0 -0
  154. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/rag/_store.py +0 -0
  155. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/rag/_utils.py +0 -0
  156. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/rag/api.py +0 -0
  157. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/rag/client.py +0 -0
  158. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/rag/engine.py +0 -0
  159. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/rag/models.py +0 -0
  160. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/.runtime/.gitkeep +0 -0
  161. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/__init__.py +0 -0
  162. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/check_plugin_skill_sync.py +0 -0
  163. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/linux-hotkeys/README.md +0 -0
  164. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh +0 -0
  165. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh +0 -0
  166. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/linux-hotkeys/toggle-voice-edit.sh +0 -0
  167. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/macos-hotkeys/README.md +0 -0
  168. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/macos-hotkeys/skhd-config-example +0 -0
  169. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/macos-hotkeys/toggle-autocorrect.sh +0 -0
  170. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/macos-hotkeys/toggle-transcription.sh +0 -0
  171. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/macos-hotkeys/toggle-voice-edit.sh +0 -0
  172. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/nvidia-asr-server/README.md +0 -0
  173. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/nvidia-asr-server/pyproject.toml +0 -0
  174. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/nvidia-asr-server/server.py +0 -0
  175. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/nvidia-asr-server/shell.nix +0 -0
  176. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/nvidia-asr-server/uv.lock +0 -0
  177. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/run-openwakeword.sh +0 -0
  178. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/run-piper-windows.ps1 +0 -0
  179. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/run-piper.sh +0 -0
  180. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/run-whisper-linux.sh +0 -0
  181. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/run-whisper-macos.sh +0 -0
  182. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/run-whisper-windows.ps1 +0 -0
  183. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/run-whisper.sh +0 -0
  184. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/run_faster_whisper_server.py +0 -0
  185. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/setup-linux-hotkeys.sh +0 -0
  186. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/setup-linux.sh +0 -0
  187. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/setup-macos-hotkeys.sh +0 -0
  188. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/setup-macos.sh +0 -0
  189. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/setup-windows.ps1 +0 -0
  190. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/start-all-services-windows.ps1 +0 -0
  191. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/start-all-services.sh +0 -0
  192. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/scripts/sync_extras.py +0 -0
  193. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/server/__init__.py +0 -0
  194. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/server/cli.py +0 -0
  195. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/server/common.py +0 -0
  196. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/server/model_manager.py +0 -0
  197. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/server/model_registry.py +0 -0
  198. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/server/proxy/__init__.py +0 -0
  199. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/server/proxy/api.py +0 -0
  200. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/server/streaming.py +0 -0
  201. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/server/tts/__init__.py +0 -0
  202. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/server/tts/api.py +0 -0
  203. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/server/tts/backends/__init__.py +0 -0
  204. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/server/tts/backends/base.py +0 -0
  205. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/server/tts/backends/kokoro.py +0 -0
  206. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/server/tts/backends/piper.py +0 -0
  207. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/server/tts/model_manager.py +0 -0
  208. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/server/tts/model_registry.py +0 -0
  209. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/server/tts/wyoming_handler.py +0 -0
  210. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/server/whisper/__init__.py +0 -0
  211. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/server/whisper/api.py +0 -0
  212. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/server/whisper/backends/__init__.py +0 -0
  213. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/server/whisper/backends/base.py +0 -0
  214. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/server/whisper/backends/faster_whisper.py +0 -0
  215. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/server/whisper/backends/mlx.py +0 -0
  216. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/server/whisper/languages.py +0 -0
  217. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/server/whisper/model_manager.py +0 -0
  218. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/server/whisper/model_registry.py +0 -0
  219. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/server/whisper/wyoming_handler.py +0 -0
  220. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/services/__init__.py +0 -0
  221. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/services/_wyoming_utils.py +0 -0
  222. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/services/asr.py +0 -0
  223. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/services/llm.py +0 -0
  224. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/services/tts.py +0 -0
  225. {agent_cli-0.69.0 → agent_cli-0.69.2}/agent_cli/services/wake_word.py +0 -0
  226. {agent_cli-0.69.0 → agent_cli-0.69.2}/docker/docker-compose.yml +0 -0
  227. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/CNAME +0 -0
  228. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/architecture/index.md +0 -0
  229. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/architecture/memory.md +0 -0
  230. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/architecture/rag.md +0 -0
  231. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/commands/assistant.md +0 -0
  232. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/commands/autocorrect.md +0 -0
  233. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/commands/chat.md +0 -0
  234. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/commands/config.md +0 -0
  235. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/commands/dev.md +0 -0
  236. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/commands/index.md +0 -0
  237. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/commands/install-extras.md +0 -0
  238. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/commands/install-hotkeys.md +0 -0
  239. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/commands/install-services.md +0 -0
  240. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/commands/memory.md +0 -0
  241. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/commands/rag-proxy.md +0 -0
  242. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/commands/server/index.md +0 -0
  243. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/commands/server/transcription-proxy.md +0 -0
  244. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/commands/server/tts.md +0 -0
  245. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/commands/server/whisper.md +0 -0
  246. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/commands/speak.md +0 -0
  247. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/commands/start-services.md +0 -0
  248. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/commands/transcribe-daemon.md +0 -0
  249. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/commands/transcribe.md +0 -0
  250. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/commands/voice-edit.md +0 -0
  251. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/configuration.md +0 -0
  252. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/getting-started.md +0 -0
  253. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/iOS_Shortcut_Guide.md +0 -0
  254. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/index.md +0 -0
  255. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/installation/docker.md +0 -0
  256. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/installation/index.md +0 -0
  257. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/installation/linux.md +0 -0
  258. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/installation/macos.md +0 -0
  259. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/installation/nixos.md +0 -0
  260. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/installation/windows.md +0 -0
  261. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/logo-clean.svg +0 -0
  262. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
  263. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/run_markdown_code_runner.py +0 -0
  264. {agent_cli-0.69.0 → agent_cli-0.69.2}/docs/system-integration.md +0 -0
  265. {agent_cli-0.69.0 → agent_cli-0.69.2}/example.agent-cli-config.toml +0 -0
  266. {agent_cli-0.69.0 → agent_cli-0.69.2}/justfile +0 -0
  267. {agent_cli-0.69.0 → agent_cli-0.69.2}/pyproject.toml +0 -0
  268. {agent_cli-0.69.0 → agent_cli-0.69.2}/shell.nix +0 -0
  269. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/__init__.py +0 -0
  270. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/agents/__init__.py +0 -0
  271. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/agents/test_fix_my_text.py +0 -0
  272. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/agents/test_interactive.py +0 -0
  273. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/agents/test_interactive_extra.py +0 -0
  274. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/agents/test_memory_add.py +0 -0
  275. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/agents/test_speak.py +0 -0
  276. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/agents/test_speak_e2e.py +0 -0
  277. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/agents/test_transcribe.py +0 -0
  278. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/agents/test_transcribe_agent.py +0 -0
  279. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/agents/test_transcribe_daemon.py +0 -0
  280. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/agents/test_transcribe_e2e.py +0 -0
  281. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/agents/test_transcribe_recovery.py +0 -0
  282. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/agents/test_tts_common.py +0 -0
  283. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/agents/test_tts_common_extra.py +0 -0
  284. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/agents/test_voice_agent_common.py +0 -0
  285. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/agents/test_voice_edit.py +0 -0
  286. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/agents/test_voice_edit_e2e.py +0 -0
  287. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/agents/test_wake_word_assistant.py +0 -0
  288. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/conftest.py +0 -0
  289. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/core/__init__.py +0 -0
  290. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/core/test_audio_format.py +0 -0
  291. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/core/test_chroma.py +0 -0
  292. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/core/test_sse.py +0 -0
  293. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/core/test_vad.py +0 -0
  294. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/core/test_watch.py +0 -0
  295. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/dev/__init__.py +0 -0
  296. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/dev/test_cli.py +0 -0
  297. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/dev/test_coding_agents.py +0 -0
  298. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/dev/test_editors.py +0 -0
  299. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/dev/test_project.py +0 -0
  300. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/dev/test_terminals.py +0 -0
  301. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/dev/test_verification.py +0 -0
  302. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/dev/test_worktree.py +0 -0
  303. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/install/__init__.py +0 -0
  304. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/install/test_extras.py +0 -0
  305. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/memory/__init__.py +0 -0
  306. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/memory/test_api_health.py +0 -0
  307. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/memory/test_api_integration_liveish.py +0 -0
  308. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/memory/test_client.py +0 -0
  309. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/memory/test_engine.py +0 -0
  310. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/memory/test_files.py +0 -0
  311. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/memory/test_filters.py +0 -0
  312. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/memory/test_git_integration.py +0 -0
  313. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/memory/test_indexer.py +0 -0
  314. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/memory/test_memory_integration.py +0 -0
  315. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/memory/test_proxy_passthrough.py +0 -0
  316. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/memory/test_store.py +0 -0
  317. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/memory/test_utils.py +0 -0
  318. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/mocks/__init__.py +0 -0
  319. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/mocks/audio.py +0 -0
  320. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/mocks/llm.py +0 -0
  321. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/mocks/wyoming.py +0 -0
  322. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/rag/__init__.py +0 -0
  323. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/rag/test_api.py +0 -0
  324. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/rag/test_engine.py +0 -0
  325. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/rag/test_history.py +0 -0
  326. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/rag/test_indexer.py +0 -0
  327. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/rag/test_indexing.py +0 -0
  328. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/rag/test_rag_client.py +0 -0
  329. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/rag/test_rag_integration_liveish.py +0 -0
  330. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/rag/test_rag_proxy_passthrough.py +0 -0
  331. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/rag/test_retriever.py +0 -0
  332. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/rag/test_store.py +0 -0
  333. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/rag/test_utils.py +0 -0
  334. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/test_api.py +0 -0
  335. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/test_api_integration.py +0 -0
  336. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/test_asr.py +0 -0
  337. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/test_asr_recovery.py +0 -0
  338. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/test_audio_e2e.py +0 -0
  339. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/test_cli.py +0 -0
  340. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/test_config.py +0 -0
  341. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/test_config_cmd.py +0 -0
  342. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/test_docs_gen.py +0 -0
  343. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/test_env_vars.py +0 -0
  344. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/test_json_output.py +0 -0
  345. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/test_llm.py +0 -0
  346. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/test_llm_gemini.py +0 -0
  347. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/test_memory_tools.py +0 -0
  348. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/test_mlx_backend.py +0 -0
  349. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/test_process_manager.py +0 -0
  350. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/test_requires_extras.py +0 -0
  351. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/test_server_streaming.py +0 -0
  352. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/test_server_tts.py +0 -0
  353. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/test_server_whisper.py +0 -0
  354. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/test_services.py +0 -0
  355. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/test_tools.py +0 -0
  356. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/test_tts.py +0 -0
  357. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/test_utils.py +0 -0
  358. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/test_wake_word.py +0 -0
  359. {agent_cli-0.69.0 → agent_cli-0.69.2}/tests/test_wyoming_utils.py +0 -0
  360. {agent_cli-0.69.0 → agent_cli-0.69.2}/uv.lock +0 -0
  361. {agent_cli-0.69.0 → agent_cli-0.69.2}/zensical.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-cli
3
- Version: 0.69.0
3
+ Version: 0.69.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>
@@ -0,0 +1,61 @@
1
+ # Dockerfile for agent-cli Transcription Proxy server
2
+ # A lightweight proxy that forwards requests to configured ASR providers
3
+ #
4
+ # Build example:
5
+ # docker build -f docker/transcription-proxy.Dockerfile -t agent-cli-transcription-proxy .
6
+ #
7
+ # Run example:
8
+ # docker run -p 61337:61337 agent-cli-transcription-proxy
9
+
10
+ # =============================================================================
11
+ # Builder stage - install dependencies and project
12
+ # =============================================================================
13
+ FROM python:3.13-slim AS builder
14
+
15
+ RUN apt-get update && \
16
+ apt-get install -y --no-install-recommends git && \
17
+ apt-get clean && rm -rf /var/lib/apt/lists/*
18
+
19
+ COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
20
+
21
+ WORKDIR /app
22
+
23
+ COPY pyproject.toml uv.lock README.md ./
24
+ COPY .git ./.git
25
+ COPY agent_cli ./agent_cli
26
+ COPY scripts ./scripts
27
+ RUN uv sync --frozen --no-dev --no-editable --extra server
28
+
29
+ # =============================================================================
30
+ # Runtime stage - minimal image
31
+ # =============================================================================
32
+ FROM debian:bookworm-slim
33
+
34
+ COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
35
+
36
+ ENV UV_PYTHON_INSTALL_DIR=/opt/python
37
+ RUN uv python install 3.13
38
+
39
+ RUN groupadd -g 1000 transcribe && useradd -m -u 1000 -g transcribe transcribe
40
+
41
+ WORKDIR /app
42
+
43
+ COPY --from=builder /app/.venv /app/.venv
44
+
45
+ RUN ln -sf $(uv python find 3.13) /app/.venv/bin/python && \
46
+ ln -s /app/.venv/bin/agent-cli /usr/local/bin/agent-cli
47
+
48
+ USER transcribe
49
+
50
+ EXPOSE 61337
51
+
52
+ ENV PROXY_HOST=0.0.0.0 \
53
+ PROXY_PORT=61337
54
+
55
+ HEALTHCHECK --interval=30s --timeout=10s --start-period=10s --retries=3 \
56
+ CMD /app/.venv/bin/python -c "import urllib.request; urllib.request.urlopen('http://localhost:${PROXY_PORT}/health')" || exit 1
57
+
58
+ ENTRYPOINT ["sh", "-c", "agent-cli server transcription-proxy \
59
+ --host ${PROXY_HOST} \
60
+ --port ${PROXY_PORT} \
61
+ ${PROXY_EXTRA_ARGS:-}"]
@@ -9,50 +9,76 @@
9
9
  # docker run -p 10200:10200 -p 10201:10201 --gpus all agent-cli-tts:cuda
10
10
  # docker run -p 10200:10200 -p 10201:10201 agent-cli-tts:cpu
11
11
 
12
+ # =============================================================================
13
+ # Builder stage for CUDA - Kokoro TTS (requires build tools)
14
+ # =============================================================================
15
+ FROM python:3.13-slim AS builder-cuda
16
+
17
+ RUN apt-get update && \
18
+ apt-get install -y --no-install-recommends build-essential git && \
19
+ apt-get clean && rm -rf /var/lib/apt/lists/*
20
+
21
+ COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
22
+
23
+ WORKDIR /app
24
+
25
+ COPY pyproject.toml uv.lock README.md ./
26
+ COPY .git ./.git
27
+ COPY agent_cli ./agent_cli
28
+ COPY scripts ./scripts
29
+ RUN uv sync --frozen --no-dev --no-editable --extra server --extra kokoro && \
30
+ /app/.venv/bin/python -m spacy download en_core_web_sm
31
+
32
+ # =============================================================================
33
+ # Builder stage for CPU - Piper TTS
34
+ # =============================================================================
35
+ FROM python:3.13-slim AS builder-cpu
36
+
37
+ RUN apt-get update && \
38
+ apt-get install -y --no-install-recommends git && \
39
+ apt-get clean && rm -rf /var/lib/apt/lists/*
40
+
41
+ COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
42
+
43
+ WORKDIR /app
44
+
45
+ COPY pyproject.toml uv.lock README.md ./
46
+ COPY .git ./.git
47
+ COPY agent_cli ./agent_cli
48
+ COPY scripts ./scripts
49
+ RUN uv sync --frozen --no-dev --no-editable --extra server --extra piper
50
+
12
51
  # =============================================================================
13
52
  # CUDA target: GPU-accelerated with Kokoro TTS
14
53
  # =============================================================================
15
54
  FROM nvidia/cuda:12.9.1-cudnn-runtime-ubuntu22.04 AS cuda
16
55
 
17
- # Install system dependencies
18
- # espeak-ng is required for Kokoro's phoneme generation
19
- # build-essential is required for compiling C++ extensions (curated-tokenizers)
56
+ COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
57
+
20
58
  RUN apt-get update && \
21
59
  apt-get install -y --no-install-recommends \
22
- build-essential \
23
- curl \
24
60
  ffmpeg \
25
- git \
26
- ca-certificates \
27
61
  espeak-ng \
28
62
  libsndfile1 \
29
- && apt-get clean \
30
- && rm -rf /var/lib/apt/lists/*
63
+ && apt-get clean && rm -rf /var/lib/apt/lists/*
31
64
 
32
- # Install uv
33
- COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
65
+ ENV UV_PYTHON_INSTALL_DIR=/opt/python
66
+ RUN uv python install 3.13
34
67
 
35
- # Create non-root user with explicit UID:GID 1000:1000
36
68
  RUN groupadd -g 1000 tts && useradd -m -u 1000 -g tts tts
37
69
 
38
70
  WORKDIR /app
39
71
 
40
- # Install from lock file for reproducible builds
41
- COPY pyproject.toml uv.lock ./
42
- ENV UV_PYTHON=3.13
43
- RUN uv sync --frozen --no-dev --extra server --extra kokoro --no-install-project && \
44
- ln -s /app/.venv/bin/agent-cli /usr/local/bin/agent-cli && \
45
- /app/.venv/bin/python -m spacy download en_core_web_sm
72
+ COPY --from=builder-cuda /app/.venv /app/.venv
46
73
 
47
- # Create cache directory for models
48
- RUN mkdir -p /home/tts/.cache && chown -R tts:tts /home/tts
74
+ RUN ln -sf $(uv python find 3.13) /app/.venv/bin/python && \
75
+ ln -s /app/.venv/bin/agent-cli /usr/local/bin/agent-cli && \
76
+ mkdir -p /home/tts/.cache && chown -R tts:tts /home/tts
49
77
 
50
78
  USER tts
51
79
 
52
- # Expose ports: Wyoming (10200) and HTTP API (10201)
53
80
  EXPOSE 10200 10201
54
81
 
55
- # Default environment variables
56
82
  ENV TTS_HOST=0.0.0.0 \
57
83
  TTS_PORT=10201 \
58
84
  TTS_WYOMING_PORT=10200 \
@@ -62,9 +88,8 @@ ENV TTS_HOST=0.0.0.0 \
62
88
  TTS_LOG_LEVEL=info \
63
89
  TTS_DEVICE=cuda
64
90
 
65
- # Health check
66
91
  HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
67
- CMD python3 -c "import urllib.request; urllib.request.urlopen('http://localhost:${TTS_PORT}/health')" || exit 1
92
+ CMD /app/.venv/bin/python -c "import urllib.request; urllib.request.urlopen('http://localhost:${TTS_PORT}/health')" || exit 1
68
93
 
69
94
  ENTRYPOINT ["sh", "-c", "agent-cli server tts \
70
95
  --host ${TTS_HOST} \
@@ -80,38 +105,31 @@ ENTRYPOINT ["sh", "-c", "agent-cli server tts \
80
105
  # =============================================================================
81
106
  # CPU target: CPU-only with Piper TTS
82
107
  # =============================================================================
83
- FROM python:3.13-slim AS cpu
108
+ FROM debian:bookworm-slim AS cpu
109
+
110
+ COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
84
111
 
85
- # Install system dependencies
86
112
  RUN apt-get update && \
87
- apt-get install -y --no-install-recommends \
88
- ffmpeg \
89
- git \
90
- && apt-get clean \
91
- && rm -rf /var/lib/apt/lists/*
113
+ apt-get install -y --no-install-recommends ffmpeg && \
114
+ apt-get clean && rm -rf /var/lib/apt/lists/*
92
115
 
93
- # Install uv
94
- COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
116
+ ENV UV_PYTHON_INSTALL_DIR=/opt/python
117
+ RUN uv python install 3.13
95
118
 
96
- # Create non-root user with explicit UID:GID 1000:1000
97
119
  RUN groupadd -g 1000 tts && useradd -m -u 1000 -g tts tts
98
120
 
99
121
  WORKDIR /app
100
122
 
101
- # Install from lock file for reproducible builds
102
- COPY pyproject.toml uv.lock ./
103
- RUN uv sync --frozen --no-dev --extra server --extra piper --no-install-project && \
104
- ln -s /app/.venv/bin/agent-cli /usr/local/bin/agent-cli
123
+ COPY --from=builder-cpu /app/.venv /app/.venv
105
124
 
106
- # Create cache directory for models
107
- RUN mkdir -p /home/tts/.cache && chown -R tts:tts /home/tts
125
+ RUN ln -sf $(uv python find 3.13) /app/.venv/bin/python && \
126
+ ln -s /app/.venv/bin/agent-cli /usr/local/bin/agent-cli && \
127
+ mkdir -p /home/tts/.cache && chown -R tts:tts /home/tts
108
128
 
109
129
  USER tts
110
130
 
111
- # Expose ports: Wyoming (10200) and HTTP API (10201)
112
131
  EXPOSE 10200 10201
113
132
 
114
- # Default environment variables
115
133
  ENV TTS_HOST=0.0.0.0 \
116
134
  TTS_PORT=10201 \
117
135
  TTS_WYOMING_PORT=10200 \
@@ -121,9 +139,8 @@ ENV TTS_HOST=0.0.0.0 \
121
139
  TTS_LOG_LEVEL=info \
122
140
  TTS_DEVICE=cpu
123
141
 
124
- # Health check
125
142
  HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
126
- CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:${TTS_PORT}/health')" || exit 1
143
+ CMD /app/.venv/bin/python -c "import urllib.request; urllib.request.urlopen('http://localhost:${TTS_PORT}/health')" || exit 1
127
144
 
128
145
  ENTRYPOINT ["sh", "-c", "agent-cli server tts \
129
146
  --host ${TTS_HOST} \
@@ -9,44 +9,53 @@
9
9
  # docker run -p 10300:10300 -p 10301:10301 --gpus all agent-cli-whisper:cuda
10
10
  # docker run -p 10300:10300 -p 10301:10301 agent-cli-whisper:cpu
11
11
 
12
+ # =============================================================================
13
+ # Builder stage - install dependencies and project
14
+ # =============================================================================
15
+ FROM python:3.13-slim AS builder
16
+
17
+ RUN apt-get update && \
18
+ apt-get install -y --no-install-recommends git && \
19
+ apt-get clean && rm -rf /var/lib/apt/lists/*
20
+
21
+ COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
22
+
23
+ WORKDIR /app
24
+
25
+ COPY pyproject.toml uv.lock README.md ./
26
+ COPY .git ./.git
27
+ COPY agent_cli ./agent_cli
28
+ COPY scripts ./scripts
29
+ RUN uv sync --frozen --no-dev --no-editable --extra server --extra faster-whisper
30
+
12
31
  # =============================================================================
13
32
  # CUDA target: GPU-accelerated with faster-whisper
14
33
  # =============================================================================
15
34
  FROM nvidia/cuda:12.9.1-cudnn-runtime-ubuntu22.04 AS cuda
16
35
 
17
- # Install system dependencies
18
- RUN apt-get update && \
19
- apt-get install -y --no-install-recommends \
20
- curl \
21
- ffmpeg \
22
- git \
23
- ca-certificates \
24
- && apt-get clean \
25
- && rm -rf /var/lib/apt/lists/*
26
-
27
- # Install uv
28
36
  COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
29
37
 
30
- # Create non-root user with explicit UID:GID 1000:1000
38
+ RUN apt-get update && \
39
+ apt-get install -y --no-install-recommends ffmpeg && \
40
+ apt-get clean && rm -rf /var/lib/apt/lists/*
41
+
42
+ ENV UV_PYTHON_INSTALL_DIR=/opt/python
43
+ RUN uv python install 3.13
44
+
31
45
  RUN groupadd -g 1000 whisper && useradd -m -u 1000 -g whisper whisper
32
46
 
33
47
  WORKDIR /app
34
48
 
35
- # Install from lock file for reproducible builds
36
- COPY pyproject.toml uv.lock ./
37
- ENV UV_PYTHON=3.13
38
- RUN uv sync --frozen --no-dev --extra server --extra faster-whisper --no-install-project && \
39
- ln -s /app/.venv/bin/agent-cli /usr/local/bin/agent-cli
49
+ COPY --from=builder /app/.venv /app/.venv
40
50
 
41
- # Create cache directory for models
42
- RUN mkdir -p /home/whisper/.cache && chown -R whisper:whisper /home/whisper
51
+ RUN ln -sf $(uv python find 3.13) /app/.venv/bin/python && \
52
+ ln -s /app/.venv/bin/agent-cli /usr/local/bin/agent-cli && \
53
+ mkdir -p /home/whisper/.cache && chown -R whisper:whisper /home/whisper
43
54
 
44
55
  USER whisper
45
56
 
46
- # Expose ports: Wyoming (10300) and HTTP API (10301)
47
57
  EXPOSE 10300 10301
48
58
 
49
- # Default environment variables
50
59
  ENV WHISPER_HOST=0.0.0.0 \
51
60
  WHISPER_PORT=10301 \
52
61
  WHISPER_WYOMING_PORT=10300 \
@@ -55,9 +64,8 @@ ENV WHISPER_HOST=0.0.0.0 \
55
64
  WHISPER_LOG_LEVEL=info \
56
65
  WHISPER_DEVICE=cuda
57
66
 
58
- # Health check
59
67
  HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
60
- CMD python3 -c "import urllib.request; urllib.request.urlopen('http://localhost:${WHISPER_PORT}/health')" || exit 1
68
+ CMD /app/.venv/bin/python -c "import urllib.request; urllib.request.urlopen('http://localhost:${WHISPER_PORT}/health')" || exit 1
61
69
 
62
70
  ENTRYPOINT ["sh", "-c", "agent-cli server whisper \
63
71
  --host ${WHISPER_HOST} \
@@ -72,38 +80,31 @@ ENTRYPOINT ["sh", "-c", "agent-cli server whisper \
72
80
  # =============================================================================
73
81
  # CPU target: CPU-only with faster-whisper
74
82
  # =============================================================================
75
- FROM python:3.13-slim AS cpu
83
+ FROM debian:bookworm-slim AS cpu
84
+
85
+ COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
76
86
 
77
- # Install system dependencies
78
87
  RUN apt-get update && \
79
- apt-get install -y --no-install-recommends \
80
- ffmpeg \
81
- git \
82
- && apt-get clean \
83
- && rm -rf /var/lib/apt/lists/*
88
+ apt-get install -y --no-install-recommends ffmpeg && \
89
+ apt-get clean && rm -rf /var/lib/apt/lists/*
84
90
 
85
- # Install uv
86
- COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
91
+ ENV UV_PYTHON_INSTALL_DIR=/opt/python
92
+ RUN uv python install 3.13
87
93
 
88
- # Create non-root user with explicit UID:GID 1000:1000
89
94
  RUN groupadd -g 1000 whisper && useradd -m -u 1000 -g whisper whisper
90
95
 
91
96
  WORKDIR /app
92
97
 
93
- # Install from lock file for reproducible builds
94
- COPY pyproject.toml uv.lock ./
95
- RUN uv sync --frozen --no-dev --extra server --extra faster-whisper --no-install-project && \
96
- ln -s /app/.venv/bin/agent-cli /usr/local/bin/agent-cli
98
+ COPY --from=builder /app/.venv /app/.venv
97
99
 
98
- # Create cache directory for models
99
- RUN mkdir -p /home/whisper/.cache && chown -R whisper:whisper /home/whisper
100
+ RUN ln -sf $(uv python find 3.13) /app/.venv/bin/python && \
101
+ ln -s /app/.venv/bin/agent-cli /usr/local/bin/agent-cli && \
102
+ mkdir -p /home/whisper/.cache && chown -R whisper:whisper /home/whisper
100
103
 
101
104
  USER whisper
102
105
 
103
- # Expose ports: Wyoming (10300) and HTTP API (10301)
104
106
  EXPOSE 10300 10301
105
107
 
106
- # Default environment variables
107
108
  ENV WHISPER_HOST=0.0.0.0 \
108
109
  WHISPER_PORT=10301 \
109
110
  WHISPER_WYOMING_PORT=10300 \
@@ -112,9 +113,8 @@ ENV WHISPER_HOST=0.0.0.0 \
112
113
  WHISPER_LOG_LEVEL=info \
113
114
  WHISPER_DEVICE=cpu
114
115
 
115
- # Health check
116
116
  HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
117
- CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:${WHISPER_PORT}/health')" || exit 1
117
+ CMD /app/.venv/bin/python -c "import urllib.request; urllib.request.urlopen('http://localhost:${WHISPER_PORT}/health')" || exit 1
118
118
 
119
119
  ENTRYPOINT ["sh", "-c", "agent-cli server whisper \
120
120
  --host ${WHISPER_HOST} \
@@ -1,51 +0,0 @@
1
- # syntax=docker/dockerfile:1
2
- # Dockerfile for agent-cli Transcription Proxy server
3
- # A lightweight proxy that forwards requests to configured ASR providers
4
- #
5
- # Build example:
6
- # docker build -f docker/transcription-proxy.Dockerfile -t agent-cli-transcription-proxy .
7
- #
8
- # Run example:
9
- # docker run -p 61337:61337 agent-cli-transcription-proxy
10
-
11
- # Build stage - install with uv
12
- FROM ghcr.io/astral-sh/uv:python3.13-bookworm-slim AS builder
13
-
14
- # --refresh bypasses uv cache to ensure latest version from PyPI
15
- RUN uv tool install --refresh --compile-bytecode "agent-cli[server]"
16
-
17
- # Runtime stage - minimal image without uv
18
- FROM python:3.13-slim
19
-
20
- # Create non-root user with explicit UID:GID 1000:1000
21
- RUN groupadd -g 1000 transcribe && useradd -m -u 1000 -g transcribe transcribe
22
-
23
- # Copy installed tool virtualenv from builder with execute permissions
24
- # Using --chmod=755 avoids a duplicate layer from running chmod after COPY
25
- COPY --from=builder --chmod=755 /root/.local/share/uv/tools/agent-cli /root/.local/share/uv/tools/agent-cli
26
-
27
- # Make parent directories accessible to non-root users and create symlinks
28
- RUN chmod 755 /root /root/.local /root/.local/share /root/.local/share/uv /root/.local/share/uv/tools && \
29
- ln -s /root/.local/share/uv/tools/agent-cli/bin/agent-cli /usr/local/bin/agent-cli && \
30
- ln -s /root/.local/share/uv/tools/agent-cli/bin/agent /usr/local/bin/agent && \
31
- ln -s /root/.local/share/uv/tools/agent-cli/bin/ag /usr/local/bin/ag
32
-
33
- USER transcribe
34
-
35
- WORKDIR /app
36
-
37
- # Expose port
38
- EXPOSE 61337
39
-
40
- # Default environment variables
41
- ENV PROXY_HOST=0.0.0.0 \
42
- PROXY_PORT=61337
43
-
44
- # Health check
45
- HEALTHCHECK --interval=30s --timeout=10s --start-period=10s --retries=3 \
46
- CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:${PROXY_PORT}/health')" || exit 1
47
-
48
- ENTRYPOINT ["sh", "-c", "agent-cli server transcription-proxy \
49
- --host ${PROXY_HOST} \
50
- --port ${PROXY_PORT} \
51
- ${PROXY_EXTRA_ARGS:-}"]
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