agent-cli 0.64.2__tar.gz → 0.65.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (342) hide show
  1. agent_cli-0.65.1/.claude-plugin/marketplace.json +21 -0
  2. {agent_cli-0.64.2 → agent_cli-0.65.1}/.claude-plugin/plugin.json +4 -1
  3. agent_cli-0.65.1/.github/workflows/docker.yml +142 -0
  4. {agent_cli-0.64.2 → agent_cli-0.65.1}/PKG-INFO +22 -1
  5. {agent_cli-0.64.2 → agent_cli-0.65.1}/README.md +20 -0
  6. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/cli.py +1 -28
  7. {agent_cli-0.64.2 → agent_cli-0.65.1}/docker/docker-compose.yml +21 -0
  8. agent_cli-0.65.1/docker/transcription-proxy.Dockerfile +51 -0
  9. {agent_cli-0.64.2 → agent_cli-0.65.1}/docker/tts.Dockerfile +10 -18
  10. {agent_cli-0.64.2 → agent_cli-0.65.1}/docker/whisper.Dockerfile +9 -15
  11. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/commands/dev.md +11 -15
  12. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/commands/server/transcription-proxy.md +20 -0
  13. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/installation/docker.md +19 -14
  14. {agent_cli-0.64.2 → agent_cli-0.65.1}/pyproject.toml +1 -0
  15. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/dev/test_cli.py +0 -23
  16. {agent_cli-0.64.2 → agent_cli-0.65.1}/uv.lock +20 -18
  17. agent_cli-0.64.2/.claude-plugin/marketplace.json +0 -8
  18. agent_cli-0.64.2/.github/workflows/docker-tts.yml +0 -72
  19. agent_cli-0.64.2/.github/workflows/docker-whisper.yml +0 -72
  20. {agent_cli-0.64.2 → agent_cli-0.65.1}/.claude/skills/agent-cli-dev/SKILL.md +0 -0
  21. {agent_cli-0.64.2 → agent_cli-0.65.1}/.claude/skills/agent-cli-dev/examples.md +0 -0
  22. {agent_cli-0.64.2 → agent_cli-0.65.1}/.claude-plugin/README.md +0 -0
  23. {agent_cli-0.64.2 → agent_cli-0.65.1}/.claude-plugin/skills/agent-cli-dev/SKILL.md +0 -0
  24. {agent_cli-0.64.2 → agent_cli-0.65.1}/.claude-plugin/skills/agent-cli-dev/examples.md +0 -0
  25. {agent_cli-0.64.2 → agent_cli-0.65.1}/.cursorrules +0 -0
  26. {agent_cli-0.64.2 → agent_cli-0.65.1}/.env.example +0 -0
  27. {agent_cli-0.64.2 → agent_cli-0.65.1}/.github/logo.svg +0 -0
  28. {agent_cli-0.64.2 → agent_cli-0.65.1}/.github/release-drafter.yml +0 -0
  29. {agent_cli-0.64.2 → agent_cli-0.65.1}/.github/renovate.json +0 -0
  30. {agent_cli-0.64.2 → agent_cli-0.65.1}/.github/workflows/automerge.yml +0 -0
  31. {agent_cli-0.64.2 → agent_cli-0.65.1}/.github/workflows/docs.yml +0 -0
  32. {agent_cli-0.64.2 → agent_cli-0.65.1}/.github/workflows/markdown-code-runner.yml +0 -0
  33. {agent_cli-0.64.2 → agent_cli-0.65.1}/.github/workflows/pytest.yml +0 -0
  34. {agent_cli-0.64.2 → agent_cli-0.65.1}/.github/workflows/release-drafter.yml +0 -0
  35. {agent_cli-0.64.2 → agent_cli-0.65.1}/.github/workflows/release.yml +0 -0
  36. {agent_cli-0.64.2 → agent_cli-0.65.1}/.github/workflows/toc.yaml +0 -0
  37. {agent_cli-0.64.2 → agent_cli-0.65.1}/.gitignore +0 -0
  38. {agent_cli-0.64.2 → agent_cli-0.65.1}/.jscpd.json +0 -0
  39. {agent_cli-0.64.2 → agent_cli-0.65.1}/.pre-commit-config.yaml +0 -0
  40. {agent_cli-0.64.2 → agent_cli-0.65.1}/.prompts/docs-review.md +0 -0
  41. {agent_cli-0.64.2 → agent_cli-0.65.1}/.prompts/pr-review.md +0 -0
  42. {agent_cli-0.64.2 → agent_cli-0.65.1}/CLAUDE.md +0 -0
  43. {agent_cli-0.64.2 → agent_cli-0.65.1}/LICENSE +0 -0
  44. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/__init__.py +0 -0
  45. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/__main__.py +0 -0
  46. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/_tools.py +0 -0
  47. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/agents/__init__.py +0 -0
  48. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/agents/_voice_agent_common.py +0 -0
  49. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/agents/assistant.py +0 -0
  50. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/agents/autocorrect.py +0 -0
  51. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/agents/chat.py +0 -0
  52. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/agents/memory/__init__.py +0 -0
  53. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/agents/memory/add.py +0 -0
  54. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/agents/memory/proxy.py +0 -0
  55. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/agents/rag_proxy.py +0 -0
  56. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/agents/speak.py +0 -0
  57. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/agents/transcribe.py +0 -0
  58. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/agents/transcribe_daemon.py +0 -0
  59. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/agents/voice_edit.py +0 -0
  60. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/api.py +0 -0
  61. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/cli.py +0 -0
  62. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/config.py +0 -0
  63. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/config_cmd.py +0 -0
  64. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/constants.py +0 -0
  65. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/core/__init__.py +0 -0
  66. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/core/audio.py +0 -0
  67. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/core/audio_format.py +0 -0
  68. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/core/chroma.py +0 -0
  69. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/core/deps.py +0 -0
  70. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/core/openai_proxy.py +0 -0
  71. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/core/process.py +0 -0
  72. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/core/reranker.py +0 -0
  73. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/core/sse.py +0 -0
  74. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/core/transcription_logger.py +0 -0
  75. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/core/utils.py +0 -0
  76. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/core/vad.py +0 -0
  77. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/core/watch.py +0 -0
  78. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/__init__.py +0 -0
  79. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/coding_agents/__init__.py +0 -0
  80. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/coding_agents/aider.py +0 -0
  81. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/coding_agents/base.py +0 -0
  82. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/coding_agents/claude.py +0 -0
  83. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/coding_agents/codex.py +0 -0
  84. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/coding_agents/continue_dev.py +0 -0
  85. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/coding_agents/copilot.py +0 -0
  86. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/coding_agents/cursor_agent.py +0 -0
  87. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/coding_agents/gemini.py +0 -0
  88. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/coding_agents/opencode.py +0 -0
  89. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/coding_agents/registry.py +0 -0
  90. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/editors/__init__.py +0 -0
  91. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/editors/base.py +0 -0
  92. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/editors/cursor.py +0 -0
  93. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/editors/emacs.py +0 -0
  94. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/editors/jetbrains.py +0 -0
  95. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/editors/nano.py +0 -0
  96. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/editors/neovim.py +0 -0
  97. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/editors/registry.py +0 -0
  98. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/editors/sublime.py +0 -0
  99. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/editors/vim.py +0 -0
  100. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/editors/vscode.py +0 -0
  101. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/editors/zed.py +0 -0
  102. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/project.py +0 -0
  103. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/registry.py +0 -0
  104. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/skill/SKILL.md +0 -0
  105. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/skill/examples.md +0 -0
  106. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/terminals/__init__.py +0 -0
  107. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/terminals/apple_terminal.py +0 -0
  108. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/terminals/base.py +0 -0
  109. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/terminals/gnome.py +0 -0
  110. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/terminals/iterm2.py +0 -0
  111. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/terminals/kitty.py +0 -0
  112. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/terminals/registry.py +0 -0
  113. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/terminals/tmux.py +0 -0
  114. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/terminals/warp.py +0 -0
  115. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/terminals/zellij.py +0 -0
  116. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/dev/worktree.py +0 -0
  117. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/docs_gen.py +0 -0
  118. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/example-config.toml +0 -0
  119. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/install/__init__.py +0 -0
  120. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/install/common.py +0 -0
  121. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/install/hotkeys.py +0 -0
  122. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/install/services.py +0 -0
  123. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/memory/__init__.py +0 -0
  124. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/memory/_files.py +0 -0
  125. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/memory/_filters.py +0 -0
  126. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/memory/_git.py +0 -0
  127. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/memory/_indexer.py +0 -0
  128. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/memory/_ingest.py +0 -0
  129. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/memory/_persistence.py +0 -0
  130. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/memory/_prompt.py +0 -0
  131. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/memory/_retrieval.py +0 -0
  132. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/memory/_store.py +0 -0
  133. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/memory/_streaming.py +0 -0
  134. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/memory/_tasks.py +0 -0
  135. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/memory/api.py +0 -0
  136. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/memory/client.py +0 -0
  137. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/memory/engine.py +0 -0
  138. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/memory/entities.py +0 -0
  139. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/memory/models.py +0 -0
  140. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/opts.py +0 -0
  141. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/py.typed +0 -0
  142. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/rag/__init__.py +0 -0
  143. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/rag/_indexer.py +0 -0
  144. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/rag/_indexing.py +0 -0
  145. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/rag/_prompt.py +0 -0
  146. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/rag/_retriever.py +0 -0
  147. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/rag/_store.py +0 -0
  148. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/rag/_utils.py +0 -0
  149. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/rag/api.py +0 -0
  150. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/rag/client.py +0 -0
  151. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/rag/engine.py +0 -0
  152. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/rag/models.py +0 -0
  153. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/.runtime/.gitkeep +0 -0
  154. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/__init__.py +0 -0
  155. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/check_plugin_skill_sync.py +0 -0
  156. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/linux-hotkeys/README.md +0 -0
  157. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh +0 -0
  158. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh +0 -0
  159. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/linux-hotkeys/toggle-voice-edit.sh +0 -0
  160. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/macos-hotkeys/README.md +0 -0
  161. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/macos-hotkeys/skhd-config-example +0 -0
  162. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/macos-hotkeys/toggle-autocorrect.sh +0 -0
  163. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/macos-hotkeys/toggle-transcription.sh +0 -0
  164. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/macos-hotkeys/toggle-voice-edit.sh +0 -0
  165. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/nvidia-asr-server/README.md +0 -0
  166. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/nvidia-asr-server/pyproject.toml +0 -0
  167. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/nvidia-asr-server/server.py +0 -0
  168. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/nvidia-asr-server/shell.nix +0 -0
  169. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/nvidia-asr-server/uv.lock +0 -0
  170. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/run-openwakeword.sh +0 -0
  171. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/run-piper-windows.ps1 +0 -0
  172. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/run-piper.sh +0 -0
  173. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/run-whisper-linux.sh +0 -0
  174. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/run-whisper-macos.sh +0 -0
  175. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/run-whisper-windows.ps1 +0 -0
  176. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/run-whisper.sh +0 -0
  177. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/run_faster_whisper_server.py +0 -0
  178. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/setup-linux-hotkeys.sh +0 -0
  179. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/setup-linux.sh +0 -0
  180. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/setup-macos-hotkeys.sh +0 -0
  181. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/setup-macos.sh +0 -0
  182. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/setup-windows.ps1 +0 -0
  183. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/start-all-services-windows.ps1 +0 -0
  184. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/scripts/start-all-services.sh +0 -0
  185. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/server/__init__.py +0 -0
  186. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/server/cli.py +0 -0
  187. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/server/common.py +0 -0
  188. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/server/model_manager.py +0 -0
  189. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/server/model_registry.py +0 -0
  190. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/server/proxy/__init__.py +0 -0
  191. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/server/proxy/api.py +0 -0
  192. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/server/streaming.py +0 -0
  193. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/server/tts/__init__.py +0 -0
  194. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/server/tts/api.py +0 -0
  195. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/server/tts/backends/__init__.py +0 -0
  196. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/server/tts/backends/base.py +0 -0
  197. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/server/tts/backends/kokoro.py +0 -0
  198. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/server/tts/backends/piper.py +0 -0
  199. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/server/tts/model_manager.py +0 -0
  200. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/server/tts/model_registry.py +0 -0
  201. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/server/tts/wyoming_handler.py +0 -0
  202. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/server/whisper/__init__.py +0 -0
  203. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/server/whisper/api.py +0 -0
  204. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/server/whisper/backends/__init__.py +0 -0
  205. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/server/whisper/backends/base.py +0 -0
  206. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/server/whisper/backends/faster_whisper.py +0 -0
  207. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/server/whisper/backends/mlx.py +0 -0
  208. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/server/whisper/languages.py +0 -0
  209. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/server/whisper/model_manager.py +0 -0
  210. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/server/whisper/model_registry.py +0 -0
  211. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/server/whisper/wyoming_handler.py +0 -0
  212. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/services/__init__.py +0 -0
  213. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/services/_wyoming_utils.py +0 -0
  214. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/services/asr.py +0 -0
  215. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/services/llm.py +0 -0
  216. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/services/tts.py +0 -0
  217. {agent_cli-0.64.2 → agent_cli-0.65.1}/agent_cli/services/wake_word.py +0 -0
  218. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/CNAME +0 -0
  219. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/architecture/index.md +0 -0
  220. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/architecture/memory.md +0 -0
  221. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/architecture/rag.md +0 -0
  222. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/commands/assistant.md +0 -0
  223. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/commands/autocorrect.md +0 -0
  224. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/commands/chat.md +0 -0
  225. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/commands/config.md +0 -0
  226. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/commands/index.md +0 -0
  227. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/commands/install-hotkeys.md +0 -0
  228. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/commands/install-services.md +0 -0
  229. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/commands/memory.md +0 -0
  230. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/commands/rag-proxy.md +0 -0
  231. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/commands/server/index.md +0 -0
  232. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/commands/server/tts.md +0 -0
  233. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/commands/server/whisper.md +0 -0
  234. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/commands/speak.md +0 -0
  235. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/commands/start-services.md +0 -0
  236. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/commands/transcribe-daemon.md +0 -0
  237. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/commands/transcribe.md +0 -0
  238. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/commands/voice-edit.md +0 -0
  239. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/configuration.md +0 -0
  240. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/getting-started.md +0 -0
  241. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/iOS_Shortcut_Guide.md +0 -0
  242. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/index.md +0 -0
  243. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/installation/index.md +0 -0
  244. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/installation/linux.md +0 -0
  245. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/installation/macos.md +0 -0
  246. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/installation/nixos.md +0 -0
  247. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/installation/windows.md +0 -0
  248. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/logo-clean.svg +0 -0
  249. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
  250. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/run_markdown_code_runner.py +0 -0
  251. {agent_cli-0.64.2 → agent_cli-0.65.1}/docs/system-integration.md +0 -0
  252. {agent_cli-0.64.2 → agent_cli-0.65.1}/example.agent-cli-config.toml +0 -0
  253. {agent_cli-0.64.2 → agent_cli-0.65.1}/justfile +0 -0
  254. {agent_cli-0.64.2 → agent_cli-0.65.1}/shell.nix +0 -0
  255. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/__init__.py +0 -0
  256. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/agents/__init__.py +0 -0
  257. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/agents/test_fix_my_text.py +0 -0
  258. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/agents/test_interactive.py +0 -0
  259. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/agents/test_interactive_extra.py +0 -0
  260. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/agents/test_memory_add.py +0 -0
  261. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/agents/test_speak.py +0 -0
  262. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/agents/test_speak_e2e.py +0 -0
  263. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/agents/test_transcribe.py +0 -0
  264. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/agents/test_transcribe_agent.py +0 -0
  265. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/agents/test_transcribe_daemon.py +0 -0
  266. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/agents/test_transcribe_e2e.py +0 -0
  267. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/agents/test_transcribe_recovery.py +0 -0
  268. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/agents/test_tts_common.py +0 -0
  269. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/agents/test_tts_common_extra.py +0 -0
  270. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/agents/test_voice_agent_common.py +0 -0
  271. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/agents/test_voice_edit.py +0 -0
  272. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/agents/test_voice_edit_e2e.py +0 -0
  273. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/agents/test_wake_word_assistant.py +0 -0
  274. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/conftest.py +0 -0
  275. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/core/__init__.py +0 -0
  276. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/core/test_audio_format.py +0 -0
  277. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/core/test_chroma.py +0 -0
  278. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/core/test_sse.py +0 -0
  279. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/core/test_vad.py +0 -0
  280. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/core/test_watch.py +0 -0
  281. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/dev/__init__.py +0 -0
  282. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/dev/test_coding_agents.py +0 -0
  283. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/dev/test_editors.py +0 -0
  284. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/dev/test_project.py +0 -0
  285. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/dev/test_terminals.py +0 -0
  286. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/dev/test_verification.py +0 -0
  287. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/dev/test_worktree.py +0 -0
  288. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/memory/__init__.py +0 -0
  289. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/memory/test_api_health.py +0 -0
  290. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/memory/test_api_integration_liveish.py +0 -0
  291. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/memory/test_client.py +0 -0
  292. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/memory/test_engine.py +0 -0
  293. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/memory/test_files.py +0 -0
  294. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/memory/test_filters.py +0 -0
  295. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/memory/test_git_integration.py +0 -0
  296. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/memory/test_indexer.py +0 -0
  297. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/memory/test_memory_integration.py +0 -0
  298. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/memory/test_proxy_passthrough.py +0 -0
  299. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/memory/test_store.py +0 -0
  300. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/memory/test_utils.py +0 -0
  301. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/mocks/__init__.py +0 -0
  302. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/mocks/audio.py +0 -0
  303. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/mocks/llm.py +0 -0
  304. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/mocks/wyoming.py +0 -0
  305. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/rag/__init__.py +0 -0
  306. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/rag/test_api.py +0 -0
  307. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/rag/test_engine.py +0 -0
  308. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/rag/test_history.py +0 -0
  309. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/rag/test_indexer.py +0 -0
  310. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/rag/test_indexing.py +0 -0
  311. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/rag/test_rag_client.py +0 -0
  312. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/rag/test_rag_integration_liveish.py +0 -0
  313. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/rag/test_rag_proxy_passthrough.py +0 -0
  314. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/rag/test_retriever.py +0 -0
  315. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/rag/test_store.py +0 -0
  316. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/rag/test_utils.py +0 -0
  317. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/test_api.py +0 -0
  318. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/test_api_integration.py +0 -0
  319. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/test_asr.py +0 -0
  320. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/test_asr_recovery.py +0 -0
  321. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/test_audio_e2e.py +0 -0
  322. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/test_cli.py +0 -0
  323. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/test_config.py +0 -0
  324. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/test_config_cmd.py +0 -0
  325. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/test_docs_gen.py +0 -0
  326. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/test_env_vars.py +0 -0
  327. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/test_json_output.py +0 -0
  328. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/test_llm.py +0 -0
  329. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/test_llm_gemini.py +0 -0
  330. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/test_memory_tools.py +0 -0
  331. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/test_mlx_backend.py +0 -0
  332. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/test_process_manager.py +0 -0
  333. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/test_server_streaming.py +0 -0
  334. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/test_server_tts.py +0 -0
  335. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/test_server_whisper.py +0 -0
  336. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/test_services.py +0 -0
  337. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/test_tools.py +0 -0
  338. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/test_tts.py +0 -0
  339. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/test_utils.py +0 -0
  340. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/test_wake_word.py +0 -0
  341. {agent_cli-0.64.2 → agent_cli-0.65.1}/tests/test_wyoming_utils.py +0 -0
  342. {agent_cli-0.64.2 → agent_cli-0.65.1}/zensical.toml +0 -0
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "agent-cli",
3
+ "owner": {
4
+ "name": "Bas Nijholt",
5
+ "github": "basnijholt"
6
+ },
7
+ "metadata": {
8
+ "description": "Parallel development environment manager using git worktrees",
9
+ "repository": "https://github.com/basnijholt/agent-cli",
10
+ "homepage": "https://github.com/basnijholt/agent-cli",
11
+ "documentation": "https://github.com/basnijholt/agent-cli/blob/main/docs/commands/dev.md",
12
+ "keywords": ["git", "worktree", "parallel", "agents", "development", "claude", "ai"],
13
+ "license": "MIT"
14
+ },
15
+ "plugins": [
16
+ {
17
+ "name": "agent-cli-dev",
18
+ "source": "./.claude-plugin"
19
+ }
20
+ ]
21
+ }
@@ -1,7 +1,10 @@
1
1
  {
2
2
  "name": "agent-cli-dev",
3
3
  "version": "1.0.0",
4
- "author": "basnijholt",
4
+ "author": {
5
+ "name": "Bas Nijholt",
6
+ "github": "basnijholt"
7
+ },
5
8
  "description": "Spawn parallel AI coding agents in isolated git worktrees. Creates isolated development environments with automatic project setup, letting you work on multiple features simultaneously with different AI agents (Claude, Codex, Gemini, Aider).",
6
9
  "skills": ["./skills/agent-cli-dev"]
7
10
  }
@@ -0,0 +1,142 @@
1
+ name: Publish Docker Images
2
+
3
+ on:
4
+ workflow_run:
5
+ workflows: ["Upload Python Package"]
6
+ types: [completed]
7
+ workflow_dispatch:
8
+
9
+ env:
10
+ REGISTRY: ghcr.io
11
+
12
+ jobs:
13
+ # Images with cuda/cpu targets (whisper, tts)
14
+ build-multi-target:
15
+ runs-on: ubuntu-latest
16
+ if: ${{ github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' }}
17
+ permissions:
18
+ contents: read
19
+ packages: write
20
+
21
+ strategy:
22
+ matrix:
23
+ include:
24
+ - image: whisper
25
+ dockerfile: docker/whisper.Dockerfile
26
+ target: cuda
27
+ suffix: cuda
28
+ - image: whisper
29
+ dockerfile: docker/whisper.Dockerfile
30
+ target: cpu
31
+ suffix: cpu
32
+ - image: tts
33
+ dockerfile: docker/tts.Dockerfile
34
+ target: cuda
35
+ suffix: cuda
36
+ - image: tts
37
+ dockerfile: docker/tts.Dockerfile
38
+ target: cpu
39
+ suffix: cpu
40
+
41
+ steps:
42
+ - name: Checkout repository
43
+ uses: actions/checkout@v6
44
+
45
+ - name: Set up Docker Buildx
46
+ uses: docker/setup-buildx-action@v3
47
+
48
+ - name: Log in to Container Registry
49
+ uses: docker/login-action@v3
50
+ with:
51
+ registry: ${{ env.REGISTRY }}
52
+ username: ${{ github.actor }}
53
+ password: ${{ secrets.GITHUB_TOKEN }}
54
+
55
+ - name: Get version from trigger
56
+ id: version
57
+ run: |
58
+ if [[ "${{ github.event_name }}" == "workflow_run" ]]; then
59
+ # Extract version from release tag (v0.61.3 -> 0.61.3)
60
+ TAG="${{ github.event.workflow_run.head_branch }}"
61
+ echo "version=${TAG#v}" >> $GITHUB_OUTPUT
62
+ fi
63
+
64
+ - name: Extract metadata
65
+ id: meta
66
+ uses: docker/metadata-action@v5
67
+ with:
68
+ images: ${{ env.REGISTRY }}/${{ github.repository }}-${{ matrix.image }}
69
+ tags: |
70
+ type=raw,value=${{ steps.version.outputs.version }},suffix=-${{ matrix.suffix }},enable=${{ steps.version.outputs.version != '' }}
71
+ type=raw,value=latest,suffix=-${{ matrix.suffix }}
72
+ type=sha,suffix=-${{ matrix.suffix }}
73
+
74
+ - name: Build and push
75
+ uses: docker/build-push-action@v6
76
+ with:
77
+ context: .
78
+ file: ${{ matrix.dockerfile }}
79
+ target: ${{ matrix.target }}
80
+ push: true
81
+ tags: ${{ steps.meta.outputs.tags }}
82
+ labels: ${{ steps.meta.outputs.labels }}
83
+ cache-from: type=gha
84
+ cache-to: type=gha,mode=max
85
+
86
+ # Single-target images (transcription-proxy)
87
+ build-single-target:
88
+ runs-on: ubuntu-latest
89
+ if: ${{ github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' }}
90
+ permissions:
91
+ contents: read
92
+ packages: write
93
+
94
+ strategy:
95
+ matrix:
96
+ include:
97
+ - image: transcription-proxy
98
+ dockerfile: docker/transcription-proxy.Dockerfile
99
+
100
+ steps:
101
+ - name: Checkout repository
102
+ uses: actions/checkout@v6
103
+
104
+ - name: Set up Docker Buildx
105
+ uses: docker/setup-buildx-action@v3
106
+
107
+ - name: Log in to Container Registry
108
+ uses: docker/login-action@v3
109
+ with:
110
+ registry: ${{ env.REGISTRY }}
111
+ username: ${{ github.actor }}
112
+ password: ${{ secrets.GITHUB_TOKEN }}
113
+
114
+ - name: Get version from trigger
115
+ id: version
116
+ run: |
117
+ if [[ "${{ github.event_name }}" == "workflow_run" ]]; then
118
+ # Extract version from release tag (v0.61.3 -> 0.61.3)
119
+ TAG="${{ github.event.workflow_run.head_branch }}"
120
+ echo "version=${TAG#v}" >> $GITHUB_OUTPUT
121
+ fi
122
+
123
+ - name: Extract metadata
124
+ id: meta
125
+ uses: docker/metadata-action@v5
126
+ with:
127
+ images: ${{ env.REGISTRY }}/${{ github.repository }}-${{ matrix.image }}
128
+ tags: |
129
+ type=raw,value=${{ steps.version.outputs.version }},enable=${{ steps.version.outputs.version != '' }}
130
+ type=raw,value=latest
131
+ type=sha
132
+
133
+ - name: Build and push
134
+ uses: docker/build-push-action@v6
135
+ with:
136
+ context: .
137
+ file: ${{ matrix.dockerfile }}
138
+ push: true
139
+ tags: ${{ steps.meta.outputs.tags }}
140
+ labels: ${{ steps.meta.outputs.labels }}
141
+ cache-from: type=gha
142
+ cache-to: type=gha,mode=max
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-cli
3
- Version: 0.64.2
3
+ Version: 0.65.1
4
4
  Summary: A suite of AI-powered command-line tools for text correction, audio transcription, and voice assistance.
5
5
  Project-URL: Homepage, https://github.com/basnijholt/agent-cli
6
6
  Author-email: Bas Nijholt <bas@nijho.lt>
@@ -68,6 +68,7 @@ Requires-Dist: huggingface-hub>=0.20.0; extra == 'tts-kokoro'
68
68
  Requires-Dist: kokoro>=0.9.0; extra == 'tts-kokoro'
69
69
  Requires-Dist: pip; extra == 'tts-kokoro'
70
70
  Requires-Dist: soundfile>=0.12.0; extra == 'tts-kokoro'
71
+ Requires-Dist: transformers>=4.40.0; extra == 'tts-kokoro'
71
72
  Provides-Extra: vad
72
73
  Requires-Dist: silero-vad>=5.1; extra == 'vad'
73
74
  Provides-Extra: whisper
@@ -220,6 +221,7 @@ The setup scripts automatically install:
220
221
  - [System Integration](#system-integration)
221
222
  - [macOS Hotkeys](#macos-hotkeys)
222
223
  - [Linux Hotkeys](#linux-hotkeys)
224
+ - [Claude Code Plugin](#claude-code-plugin)
223
225
  - [Prerequisites](#prerequisites)
224
226
  - [What You Need to Install Manually](#what-you-need-to-install-manually)
225
227
  - [What the Setup Scripts Install for You](#what-the-setup-scripts-install-for-you)
@@ -367,6 +369,25 @@ This script automatically:
367
369
 
368
370
  The script supports Hyprland, GNOME, KDE, Sway, i3, XFCE, and provides instructions for manual configuration on other environments.
369
371
 
372
+ ### Claude Code Plugin
373
+
374
+ The [`dev`](docs/commands/dev.md) command is also available as a **Claude Code plugin**, enabling Claude to automatically spawn parallel AI agents in isolated git worktrees when you ask it to work on multiple features.
375
+
376
+ ```bash
377
+ # Option 1: Install skill directly in your project (recommended)
378
+ agent-cli dev install-skill
379
+
380
+ # Option 2: Install via Claude Code plugin marketplace
381
+ claude plugin marketplace add basnijholt/agent-cli
382
+ claude plugin install agent-cli@agent-cli-dev
383
+ ```
384
+
385
+ Once installed, Claude Code can automatically use this skill when you ask to:
386
+ - "Work on these 3 features in parallel"
387
+ - "Spawn agents for auth and payments"
388
+ - "Delegate this refactoring to a separate agent"
389
+
390
+ See the [plugin documentation](.claude-plugin/README.md) for more details.
370
391
 
371
392
  ## Prerequisites
372
393
 
@@ -140,6 +140,7 @@ The setup scripts automatically install:
140
140
  - [System Integration](#system-integration)
141
141
  - [macOS Hotkeys](#macos-hotkeys)
142
142
  - [Linux Hotkeys](#linux-hotkeys)
143
+ - [Claude Code Plugin](#claude-code-plugin)
143
144
  - [Prerequisites](#prerequisites)
144
145
  - [What You Need to Install Manually](#what-you-need-to-install-manually)
145
146
  - [What the Setup Scripts Install for You](#what-the-setup-scripts-install-for-you)
@@ -287,6 +288,25 @@ This script automatically:
287
288
 
288
289
  The script supports Hyprland, GNOME, KDE, Sway, i3, XFCE, and provides instructions for manual configuration on other environments.
289
290
 
291
+ ### Claude Code Plugin
292
+
293
+ The [`dev`](docs/commands/dev.md) command is also available as a **Claude Code plugin**, enabling Claude to automatically spawn parallel AI agents in isolated git worktrees when you ask it to work on multiple features.
294
+
295
+ ```bash
296
+ # Option 1: Install skill directly in your project (recommended)
297
+ agent-cli dev install-skill
298
+
299
+ # Option 2: Install via Claude Code plugin marketplace
300
+ claude plugin marketplace add basnijholt/agent-cli
301
+ claude plugin install agent-cli@agent-cli-dev
302
+ ```
303
+
304
+ Once installed, Claude Code can automatically use this skill when you ask to:
305
+ - "Work on these 3 features in parallel"
306
+ - "Spawn agents for auth and payments"
307
+ - "Delegate this refactoring to a separate agent"
308
+
309
+ See the [plugin documentation](.claude-plugin/README.md) for more details.
290
310
 
291
311
  ## Prerequisites
292
312
 
@@ -673,10 +673,6 @@ def new( # noqa: PLR0912, PLR0915
673
673
 
674
674
  @app.command("list")
675
675
  def list_envs(
676
- porcelain: Annotated[
677
- bool,
678
- typer.Option("--porcelain", "-p", help="Machine-readable output"),
679
- ] = False,
680
676
  json_output: Annotated[
681
677
  bool,
682
678
  typer.Option("--json", help="Output as JSON for automation"),
@@ -710,11 +706,6 @@ def list_envs(
710
706
  print(json.dumps({"worktrees": data}))
711
707
  return
712
708
 
713
- if porcelain:
714
- for wt in worktrees:
715
- print(f"{wt.path.as_posix()}\t{wt.branch or '(detached)'}")
716
- return
717
-
718
709
  table = Table(title="Dev Environments (Git Worktrees)")
719
710
  table.add_column("Name", style="cyan")
720
711
  table.add_column("Branch", style="green")
@@ -784,15 +775,11 @@ def _is_stale(status: worktree.WorktreeStatus, stale_days: int) -> bool:
784
775
 
785
776
 
786
777
  @app.command("status")
787
- def status_cmd( # noqa: PLR0912, PLR0915
778
+ def status_cmd( # noqa: PLR0915
788
779
  stale_days: Annotated[
789
780
  int,
790
781
  typer.Option("--stale-days", "-s", help="Highlight worktrees inactive for N+ days"),
791
782
  ] = 7,
792
- porcelain: Annotated[
793
- bool,
794
- typer.Option("--porcelain", "-p", help="Machine-readable output"),
795
- ] = False,
796
783
  json_output: Annotated[
797
784
  bool,
798
785
  typer.Option("--json", help="Output as JSON for automation"),
@@ -836,20 +823,6 @@ def status_cmd( # noqa: PLR0912, PLR0915
836
823
  print(json.dumps({"worktrees": data, "stale_days": stale_days}))
837
824
  return
838
825
 
839
- if porcelain:
840
- # Machine-readable: name\tbranch\tmodified\tstaged\tuntracked\tahead\tbehind\ttimestamp
841
- for wt in worktrees:
842
- status = worktree.get_worktree_status(wt.path)
843
- if status:
844
- print(
845
- f"{wt.name}\t{wt.branch or ''}\t"
846
- f"{status.modified}\t{status.staged}\t{status.untracked}\t"
847
- f"{status.ahead}\t{status.behind}\t{status.last_commit_timestamp or ''}",
848
- )
849
- else:
850
- print(f"{wt.name}\t{wt.branch or ''}\t\t\t\t\t\t")
851
- return
852
-
853
826
  table = Table(title="Dev Environment Status")
854
827
  table.add_column("Name", style="cyan")
855
828
  table.add_column("Branch", style="green")
@@ -27,6 +27,8 @@
27
27
  # TTS_LOG_LEVEL - Logging level (default: info)
28
28
  #
29
29
  # OLLAMA_MODEL - Ollama model to pull on startup (default: gemma3:4b)
30
+ #
31
+ # PROXY_PORT - Transcription proxy port (default: 61337)
30
32
 
31
33
  services:
32
34
  # ===========================================================================
@@ -175,6 +177,25 @@ services:
175
177
  - TTS_DEVICE=cpu
176
178
  restart: unless-stopped
177
179
 
180
+ # ===========================================================================
181
+ # Transcription Proxy
182
+ # ===========================================================================
183
+
184
+ transcription-proxy:
185
+ image: ghcr.io/basnijholt/agent-cli-transcription-proxy:latest
186
+ build:
187
+ context: ..
188
+ dockerfile: docker/transcription-proxy.Dockerfile
189
+ profiles: [cuda, cpu]
190
+ ports:
191
+ - "61337:61337"
192
+ # volumes:
193
+ # - ./config.toml:/home/transcribe/.config/agent-cli/config.toml:ro
194
+ environment:
195
+ - PROXY_HOST=0.0.0.0
196
+ - PROXY_PORT=${PROXY_PORT:-61337}
197
+ restart: unless-stopped
198
+
178
199
  volumes:
179
200
  ollama-data:
180
201
  name: agent-cli-ollama-data
@@ -0,0 +1,51 @@
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 (keep original path for shebang compatibility)
24
+ COPY --from=builder /root/.local/share/uv/tools/agent-cli /root/.local/share/uv/tools/agent-cli
25
+
26
+ # Make tool accessible to non-root users and create symlinks
27
+ RUN chmod 755 /root /root/.local /root/.local/share /root/.local/share/uv /root/.local/share/uv/tools && \
28
+ chmod -R 755 /root/.local/share/uv/tools/agent-cli && \
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:-}"]
@@ -37,18 +37,12 @@ RUN groupadd -g 1000 tts && useradd -m -u 1000 -g tts tts
37
37
 
38
38
  WORKDIR /app
39
39
 
40
- # Install Python 3.13 and agent-cli with Kokoro TTS support using uv tool
41
- # UV_PYTHON_INSTALL_DIR ensures Python is installed in accessible location (not /root/.local/)
42
- ENV UV_PYTHON=3.13 \
43
- UV_TOOL_BIN_DIR=/usr/local/bin \
44
- UV_TOOL_DIR=/opt/uv-tools \
45
- UV_PYTHON_INSTALL_DIR=/opt/uv-python
46
-
47
- # --refresh bypasses uv cache to ensure latest version from PyPI
48
- RUN uv tool install --refresh --python 3.13 "agent-cli[tts-kokoro]"
49
-
50
- # Download spacy model required by misaki/Kokoro for grapheme-to-phoneme conversion
51
- RUN /opt/uv-tools/agent-cli/bin/python -m spacy download en_core_web_sm
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 tts-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
52
46
 
53
47
  # Create cache directory for models
54
48
  RUN mkdir -p /home/tts/.cache && chown -R tts:tts /home/tts
@@ -104,12 +98,10 @@ RUN groupadd -g 1000 tts && useradd -m -u 1000 -g tts tts
104
98
 
105
99
  WORKDIR /app
106
100
 
107
- # Install agent-cli with Piper TTS support
108
- ENV UV_TOOL_BIN_DIR=/usr/local/bin \
109
- UV_TOOL_DIR=/opt/uv-tools
110
-
111
- # --refresh bypasses uv cache to ensure latest version from PyPI
112
- RUN uv tool install --refresh "agent-cli[tts]"
101
+ # Install from lock file for reproducible builds
102
+ COPY pyproject.toml uv.lock ./
103
+ RUN uv sync --frozen --no-dev --extra tts --no-install-project && \
104
+ ln -s /app/.venv/bin/agent-cli /usr/local/bin/agent-cli
113
105
 
114
106
  # Create cache directory for models
115
107
  RUN mkdir -p /home/tts/.cache && chown -R tts:tts /home/tts
@@ -32,15 +32,11 @@ RUN groupadd -g 1000 whisper && useradd -m -u 1000 -g whisper whisper
32
32
 
33
33
  WORKDIR /app
34
34
 
35
- # Install Python 3.13 and agent-cli with whisper support using uv tool
36
- # UV_PYTHON_INSTALL_DIR ensures Python is installed in accessible location (not /root/.local/)
37
- ENV UV_PYTHON=3.13 \
38
- UV_TOOL_BIN_DIR=/usr/local/bin \
39
- UV_TOOL_DIR=/opt/uv-tools \
40
- UV_PYTHON_INSTALL_DIR=/opt/uv-python
41
-
42
- # --refresh bypasses uv cache to ensure latest version from PyPI
43
- RUN uv tool install --refresh --python 3.13 "agent-cli[whisper]"
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 whisper --no-install-project && \
39
+ ln -s /app/.venv/bin/agent-cli /usr/local/bin/agent-cli
44
40
 
45
41
  # Create cache directory for models
46
42
  RUN mkdir -p /home/whisper/.cache && chown -R whisper:whisper /home/whisper
@@ -94,12 +90,10 @@ RUN groupadd -g 1000 whisper && useradd -m -u 1000 -g whisper whisper
94
90
 
95
91
  WORKDIR /app
96
92
 
97
- # Install agent-cli with whisper support
98
- ENV UV_TOOL_BIN_DIR=/usr/local/bin \
99
- UV_TOOL_DIR=/opt/uv-tools
100
-
101
- # --refresh bypasses uv cache to ensure latest version from PyPI
102
- RUN uv tool install --refresh "agent-cli[whisper]"
93
+ # Install from lock file for reproducible builds
94
+ COPY pyproject.toml uv.lock ./
95
+ RUN uv sync --frozen --no-dev --extra whisper --no-install-project && \
96
+ ln -s /app/.venv/bin/agent-cli /usr/local/bin/agent-cli
103
97
 
104
98
  # Create cache directory for models
105
99
  RUN mkdir -p /home/whisper/.cache && chown -R whisper:whisper /home/whisper
@@ -98,7 +98,6 @@ agent-cli dev list [OPTIONS]
98
98
 
99
99
  | Option | Description |
100
100
  |--------|-------------|
101
- | `--porcelain`, `-p` | Machine-readable output (path + branch) |
102
101
  | `--json` | Output as JSON for automation |
103
102
 
104
103
  ### `dev status`
@@ -114,7 +113,6 @@ agent-cli dev status [OPTIONS]
114
113
  | Option | Description |
115
114
  |--------|-------------|
116
115
  | `--stale-days`, `-s` | Highlight worktrees inactive for N+ days (default: 7) |
117
- | `--porcelain`, `-p` | Machine-readable output |
118
116
  | `--json` | Output as JSON for automation |
119
117
 
120
118
  **Output columns:**
@@ -135,9 +133,6 @@ agent-cli dev status
135
133
 
136
134
  # Highlight worktrees inactive for 14+ days
137
135
  agent-cli dev status --stale-days 14
138
-
139
- # Machine-readable output for scripting
140
- agent-cli dev status --porcelain
141
136
  ```
142
137
 
143
138
  **Example output:**
@@ -162,16 +157,6 @@ agent-cli dev status --porcelain
162
157
  - `-N` = N commits behind upstream
163
158
  - `⚠️` = Stale worktree (inactive for longer than `--stale-days`)
164
159
 
165
- **Porcelain format:**
166
-
167
- Tab-separated values: `name`, `branch`, `modified`, `staged`, `untracked`, `ahead`, `behind`, `timestamp`
168
-
169
- ```bash
170
- $ agent-cli dev status --porcelain
171
- main main 3 0 0 0 0 1768343512
172
- my-feature feat/my-feature 0 0 0 0 0 1767544043
173
- ```
174
-
175
160
  ### `dev rm`
176
161
 
177
162
  Remove a dev environment (worktree).
@@ -327,6 +312,17 @@ agent-cli dev install-skill --force
327
312
 
328
313
  Once installed, Claude Code can automatically use the skill when you ask to work on multiple features or parallelize development tasks.
329
314
 
315
+ **Alternative: Plugin Marketplace**
316
+
317
+ You can also install the skill globally via the Claude Code plugin marketplace:
318
+
319
+ ```bash
320
+ claude plugin marketplace add basnijholt/agent-cli
321
+ claude plugin install agent-cli-dev@agent-cli
322
+ ```
323
+
324
+ This installs the skill globally so it's available in all projects without needing to run `dev install-skill` in each one.
325
+
330
326
  ## Discovery Commands
331
327
 
332
328
  ### `dev agents`
@@ -93,3 +93,23 @@ pip install "agent-cli[server]"
93
93
  # or
94
94
  uv sync --extra server
95
95
  ```
96
+
97
+ ## Docker
98
+
99
+ Run using the published container image:
100
+
101
+ ```bash
102
+ # Run standalone
103
+ docker run -p 61337:61337 ghcr.io/basnijholt/agent-cli-transcription-proxy:latest
104
+
105
+ # Or use docker-compose (included in both cuda and cpu profiles)
106
+ docker compose -f docker/docker-compose.yml --profile cpu up transcription-proxy
107
+ ```
108
+
109
+ To use a custom config, mount it as a volume:
110
+
111
+ ```bash
112
+ docker run -p 61337:61337 \
113
+ -v ./config.toml:/home/transcribe/.config/agent-cli/config.toml:ro \
114
+ ghcr.io/basnijholt/agent-cli-transcription-proxy:latest
115
+ ```
@@ -55,12 +55,13 @@ Universal Docker setup that works on any platform with Docker support.
55
55
 
56
56
  The Docker setup provides:
57
57
 
58
- | Service | Image | Port | Purpose |
59
- | ---------------- | --------------------------------- | ----------- | ------------------------------ |
60
- | **whisper** | agent-cli-whisper (custom) | 10300/10301 | Speech-to-text (Faster Whisper)|
61
- | **tts** | agent-cli-tts (custom) | 10200/10201 | Text-to-speech (Kokoro/Piper) |
62
- | **ollama** | ollama/ollama | 11434 | LLM server |
63
- | **openwakeword** | rhasspy/wyoming-openwakeword | 10400 | Wake word detection |
58
+ | Service | Image | Port | Purpose |
59
+ | ----------------------- | --------------------------------- | ----------- | ------------------------------ |
60
+ | **whisper** | agent-cli-whisper (custom) | 10300/10301 | Speech-to-text (Faster Whisper)|
61
+ | **tts** | agent-cli-tts (custom) | 10200/10201 | Text-to-speech (Kokoro/Piper) |
62
+ | **transcription-proxy** | agent-cli-transcription-proxy | 61337 | ASR proxy for iOS/external apps|
63
+ | **ollama** | ollama/ollama | 11434 | LLM server |
64
+ | **openwakeword** | rhasspy/wyoming-openwakeword | 10400 | Wake word detection |
64
65
 
65
66
  ## Configuration
66
67
 
@@ -75,6 +76,9 @@ WHISPER_TTL=300 # Seconds before unloading idle model
75
76
  TTS_MODEL=kokoro # For CUDA: kokoro, For CPU: en_US-lessac-medium
76
77
  TTS_BACKEND=kokoro # Backend: kokoro (GPU), piper (CPU)
77
78
  TTS_TTL=300 # Seconds before unloading idle model
79
+
80
+ # Transcription Proxy
81
+ PROXY_PORT=61337 # Port for transcription proxy
78
82
  ```
79
83
 
80
84
  ### GPU Support
@@ -108,14 +112,15 @@ Services store data in Docker volumes:
108
112
 
109
113
  ## Ports Reference
110
114
 
111
- | Port | Service | Protocol |
112
- | ----- | ------------ | -------- |
113
- | 10200 | TTS | Wyoming |
114
- | 10201 | TTS | HTTP API |
115
- | 10300 | Whisper | Wyoming |
116
- | 10301 | Whisper | HTTP API |
117
- | 10400 | OpenWakeWord | Wyoming |
118
- | 11434 | Ollama | HTTP API |
115
+ | Port | Service | Protocol |
116
+ | ----- | ------------------- | -------- |
117
+ | 10200 | TTS | Wyoming |
118
+ | 10201 | TTS | HTTP API |
119
+ | 10300 | Whisper | Wyoming |
120
+ | 10301 | Whisper | HTTP API |
121
+ | 10400 | OpenWakeWord | Wyoming |
122
+ | 11434 | Ollama | HTTP API |
123
+ | 61337 | Transcription Proxy | HTTP API |
119
124
 
120
125
  ## Alternative: Native Installation
121
126
 
@@ -77,6 +77,7 @@ tts-kokoro = [
77
77
  "soundfile>=0.12.0",
78
78
  "huggingface-hub>=0.20.0",
79
79
  "pip", # Kokoro uses spacy which calls `pip install` to download language models at runtime
80
+ "transformers>=4.40.0", # Ensure pre-built tokenizers wheels for Python 3.13+
80
81
  ]
81
82
  test = [
82
83
  "pytest>=7.0.0",
@@ -151,29 +151,6 @@ class TestDevList:
151
151
  assert "main" in result.output
152
152
  assert "feature" in result.output
153
153
 
154
- def test_list_porcelain(self) -> None:
155
- """List with --porcelain shows machine-readable output."""
156
- mock_worktrees = [
157
- WorktreeInfo(
158
- path=Path("/repo"),
159
- branch="main",
160
- commit="abc",
161
- is_main=True,
162
- is_detached=False,
163
- is_locked=False,
164
- is_prunable=False,
165
- ),
166
- ]
167
-
168
- with (
169
- patch("agent_cli.dev.worktree.get_main_repo_root", return_value=Path("/repo")),
170
- patch("agent_cli.dev.worktree.git_available", return_value=True),
171
- patch("agent_cli.dev.worktree.list_worktrees", return_value=mock_worktrees),
172
- ):
173
- result = runner.invoke(app, ["dev", "list", "--porcelain"])
174
- assert result.exit_code == 0
175
- assert "/repo\tmain" in result.output
176
-
177
154
 
178
155
  class TestDevPath:
179
156
  """Tests for dev path command."""