agent-cli 0.68.5__tar.gz → 0.69.0__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 (360) hide show
  1. {agent_cli-0.68.5/agent_cli/dev/skill → agent_cli-0.69.0/.claude/skills/agent-cli-dev}/SKILL.md +9 -4
  2. {agent_cli-0.68.5 → agent_cli-0.69.0}/.claude/skills/agent-cli-dev/examples.md +65 -4
  3. {agent_cli-0.68.5/.claude → agent_cli-0.69.0/.claude-plugin}/skills/agent-cli-dev/SKILL.md +9 -4
  4. {agent_cli-0.68.5 → agent_cli-0.69.0}/.claude-plugin/skills/agent-cli-dev/examples.md +65 -4
  5. {agent_cli-0.68.5 → agent_cli-0.69.0}/.pre-commit-config.yaml +1 -1
  6. {agent_cli-0.68.5 → agent_cli-0.69.0}/CLAUDE.md +1 -1
  7. {agent_cli-0.68.5 → agent_cli-0.69.0}/PKG-INFO +10 -6
  8. {agent_cli-0.68.5 → agent_cli-0.69.0}/README.md +6 -3
  9. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/agents/autocorrect.py +2 -1
  10. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/agents/memory/__init__.py +1 -0
  11. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/agents/memory/proxy.py +5 -12
  12. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/agents/rag_proxy.py +2 -9
  13. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/agents/transcribe.py +4 -1
  14. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/cli.py +18 -2
  15. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/config_cmd.py +1 -0
  16. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/core/chroma.py +4 -4
  17. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/core/deps.py +1 -1
  18. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/core/openai_proxy.py +9 -4
  19. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/core/process.py +2 -2
  20. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/core/reranker.py +5 -4
  21. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/core/utils.py +3 -1
  22. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/core/vad.py +2 -1
  23. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/core/watch.py +8 -6
  24. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/cli.py +6 -5
  25. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/coding_agents/base.py +1 -2
  26. {agent_cli-0.68.5/.claude-plugin/skills/agent-cli-dev → agent_cli-0.69.0/agent_cli/dev/skill}/SKILL.md +9 -4
  27. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/skill/examples.md +65 -4
  28. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/install/extras.py +9 -7
  29. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/memory/_files.py +4 -1
  30. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/memory/_indexer.py +3 -2
  31. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/memory/_ingest.py +6 -5
  32. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/memory/_streaming.py +2 -2
  33. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/rag/_indexer.py +3 -2
  34. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/rag/api.py +1 -0
  35. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/server/cli.py +3 -5
  36. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/server/common.py +3 -4
  37. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/server/whisper/backends/faster_whisper.py +30 -23
  38. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/services/llm.py +2 -1
  39. {agent_cli-0.68.5 → agent_cli-0.69.0}/docker/transcription-proxy.Dockerfile +4 -4
  40. {agent_cli-0.68.5 → agent_cli-0.69.0}/pyproject.toml +4 -4
  41. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/agents/test_fix_my_text.py +5 -5
  42. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/agents/test_transcribe.py +23 -15
  43. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/agents/test_transcribe_agent.py +1 -1
  44. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/agents/test_transcribe_recovery.py +8 -6
  45. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/core/test_watch.py +3 -6
  46. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/memory/test_engine.py +2 -5
  47. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/rag/test_store.py +1 -1
  48. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/test_cli.py +3 -2
  49. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/test_requires_extras.py +1 -1
  50. {agent_cli-0.68.5 → agent_cli-0.69.0}/uv.lock +6 -8
  51. {agent_cli-0.68.5 → agent_cli-0.69.0}/.claude-plugin/README.md +0 -0
  52. {agent_cli-0.68.5 → agent_cli-0.69.0}/.claude-plugin/marketplace.json +0 -0
  53. {agent_cli-0.68.5 → agent_cli-0.69.0}/.claude-plugin/plugin.json +0 -0
  54. {agent_cli-0.68.5 → agent_cli-0.69.0}/.cursorrules +0 -0
  55. {agent_cli-0.68.5 → agent_cli-0.69.0}/.env.example +0 -0
  56. {agent_cli-0.68.5 → agent_cli-0.69.0}/.github/logo.svg +0 -0
  57. {agent_cli-0.68.5 → agent_cli-0.69.0}/.github/release-drafter.yml +0 -0
  58. {agent_cli-0.68.5 → agent_cli-0.69.0}/.github/renovate.json +0 -0
  59. {agent_cli-0.68.5 → agent_cli-0.69.0}/.github/scripts/check_extras_sync.py +0 -0
  60. {agent_cli-0.68.5 → agent_cli-0.69.0}/.github/scripts/sync_requirements.py +0 -0
  61. {agent_cli-0.68.5 → agent_cli-0.69.0}/.github/workflows/automerge.yml +0 -0
  62. {agent_cli-0.68.5 → agent_cli-0.69.0}/.github/workflows/docker.yml +0 -0
  63. {agent_cli-0.68.5 → agent_cli-0.69.0}/.github/workflows/docs.yml +0 -0
  64. {agent_cli-0.68.5 → agent_cli-0.69.0}/.github/workflows/markdown-code-runner.yml +0 -0
  65. {agent_cli-0.68.5 → agent_cli-0.69.0}/.github/workflows/pytest.yml +0 -0
  66. {agent_cli-0.68.5 → agent_cli-0.69.0}/.github/workflows/release-drafter.yml +0 -0
  67. {agent_cli-0.68.5 → agent_cli-0.69.0}/.github/workflows/release.yml +0 -0
  68. {agent_cli-0.68.5 → agent_cli-0.69.0}/.github/workflows/toc.yaml +0 -0
  69. {agent_cli-0.68.5 → agent_cli-0.69.0}/.gitignore +0 -0
  70. {agent_cli-0.68.5 → agent_cli-0.69.0}/.jscpd.json +0 -0
  71. {agent_cli-0.68.5 → agent_cli-0.69.0}/.prompts/docs-review.md +0 -0
  72. {agent_cli-0.68.5 → agent_cli-0.69.0}/.prompts/pr-review.md +0 -0
  73. {agent_cli-0.68.5 → agent_cli-0.69.0}/LICENSE +0 -0
  74. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/__init__.py +0 -0
  75. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/__main__.py +0 -0
  76. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/_extras.json +0 -0
  77. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/_requirements/.gitkeep +0 -0
  78. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/_requirements/audio.txt +0 -0
  79. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/_requirements/faster-whisper.txt +0 -0
  80. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/_requirements/kokoro.txt +0 -0
  81. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/_requirements/llm.txt +0 -0
  82. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/_requirements/memory.txt +0 -0
  83. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/_requirements/mlx-whisper.txt +0 -0
  84. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/_requirements/piper.txt +0 -0
  85. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/_requirements/rag.txt +0 -0
  86. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/_requirements/server.txt +0 -0
  87. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/_requirements/speed.txt +0 -0
  88. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/_requirements/vad.txt +0 -0
  89. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/_tools.py +0 -0
  90. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/agents/__init__.py +0 -0
  91. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/agents/_voice_agent_common.py +0 -0
  92. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/agents/assistant.py +0 -0
  93. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/agents/chat.py +0 -0
  94. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/agents/memory/add.py +0 -0
  95. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/agents/speak.py +0 -0
  96. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/agents/transcribe_daemon.py +0 -0
  97. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/agents/voice_edit.py +0 -0
  98. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/api.py +0 -0
  99. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/config.py +0 -0
  100. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/constants.py +0 -0
  101. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/core/__init__.py +0 -0
  102. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/core/audio.py +0 -0
  103. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/core/audio_format.py +0 -0
  104. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/core/sse.py +0 -0
  105. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/core/transcription_logger.py +0 -0
  106. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/__init__.py +0 -0
  107. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/coding_agents/__init__.py +0 -0
  108. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/coding_agents/aider.py +0 -0
  109. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/coding_agents/claude.py +0 -0
  110. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/coding_agents/codex.py +0 -0
  111. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/coding_agents/continue_dev.py +0 -0
  112. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/coding_agents/copilot.py +0 -0
  113. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/coding_agents/cursor_agent.py +0 -0
  114. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/coding_agents/gemini.py +0 -0
  115. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/coding_agents/opencode.py +0 -0
  116. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/coding_agents/registry.py +0 -0
  117. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/editors/__init__.py +0 -0
  118. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/editors/base.py +0 -0
  119. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/editors/cursor.py +0 -0
  120. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/editors/emacs.py +0 -0
  121. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/editors/jetbrains.py +0 -0
  122. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/editors/nano.py +0 -0
  123. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/editors/neovim.py +0 -0
  124. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/editors/registry.py +0 -0
  125. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/editors/sublime.py +0 -0
  126. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/editors/vim.py +0 -0
  127. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/editors/vscode.py +0 -0
  128. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/editors/zed.py +0 -0
  129. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/project.py +0 -0
  130. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/registry.py +0 -0
  131. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/terminals/__init__.py +0 -0
  132. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/terminals/apple_terminal.py +0 -0
  133. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/terminals/base.py +0 -0
  134. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/terminals/gnome.py +0 -0
  135. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/terminals/iterm2.py +0 -0
  136. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/terminals/kitty.py +0 -0
  137. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/terminals/registry.py +0 -0
  138. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/terminals/tmux.py +0 -0
  139. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/terminals/warp.py +0 -0
  140. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/terminals/zellij.py +0 -0
  141. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/dev/worktree.py +0 -0
  142. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/docs_gen.py +0 -0
  143. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/example-config.toml +0 -0
  144. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/install/__init__.py +0 -0
  145. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/install/common.py +0 -0
  146. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/install/hotkeys.py +0 -0
  147. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/install/services.py +0 -0
  148. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/memory/__init__.py +0 -0
  149. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/memory/_filters.py +0 -0
  150. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/memory/_git.py +0 -0
  151. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/memory/_persistence.py +0 -0
  152. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/memory/_prompt.py +0 -0
  153. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/memory/_retrieval.py +0 -0
  154. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/memory/_store.py +0 -0
  155. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/memory/_tasks.py +0 -0
  156. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/memory/api.py +0 -0
  157. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/memory/client.py +0 -0
  158. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/memory/engine.py +0 -0
  159. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/memory/entities.py +0 -0
  160. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/memory/models.py +0 -0
  161. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/opts.py +0 -0
  162. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/py.typed +0 -0
  163. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/rag/__init__.py +0 -0
  164. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/rag/_indexing.py +0 -0
  165. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/rag/_prompt.py +0 -0
  166. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/rag/_retriever.py +0 -0
  167. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/rag/_store.py +0 -0
  168. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/rag/_utils.py +0 -0
  169. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/rag/client.py +0 -0
  170. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/rag/engine.py +0 -0
  171. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/rag/models.py +0 -0
  172. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/.runtime/.gitkeep +0 -0
  173. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/__init__.py +0 -0
  174. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/check_plugin_skill_sync.py +0 -0
  175. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/linux-hotkeys/README.md +0 -0
  176. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh +0 -0
  177. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh +0 -0
  178. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/linux-hotkeys/toggle-voice-edit.sh +0 -0
  179. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/macos-hotkeys/README.md +0 -0
  180. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/macos-hotkeys/skhd-config-example +0 -0
  181. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/macos-hotkeys/toggle-autocorrect.sh +0 -0
  182. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/macos-hotkeys/toggle-transcription.sh +0 -0
  183. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/macos-hotkeys/toggle-voice-edit.sh +0 -0
  184. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/nvidia-asr-server/README.md +0 -0
  185. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/nvidia-asr-server/pyproject.toml +0 -0
  186. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/nvidia-asr-server/server.py +0 -0
  187. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/nvidia-asr-server/shell.nix +0 -0
  188. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/nvidia-asr-server/uv.lock +0 -0
  189. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/run-openwakeword.sh +0 -0
  190. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/run-piper-windows.ps1 +0 -0
  191. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/run-piper.sh +0 -0
  192. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/run-whisper-linux.sh +0 -0
  193. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/run-whisper-macos.sh +0 -0
  194. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/run-whisper-windows.ps1 +0 -0
  195. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/run-whisper.sh +0 -0
  196. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/run_faster_whisper_server.py +0 -0
  197. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/setup-linux-hotkeys.sh +0 -0
  198. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/setup-linux.sh +0 -0
  199. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/setup-macos-hotkeys.sh +0 -0
  200. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/setup-macos.sh +0 -0
  201. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/setup-windows.ps1 +0 -0
  202. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/start-all-services-windows.ps1 +0 -0
  203. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/start-all-services.sh +0 -0
  204. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/scripts/sync_extras.py +0 -0
  205. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/server/__init__.py +0 -0
  206. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/server/model_manager.py +0 -0
  207. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/server/model_registry.py +0 -0
  208. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/server/proxy/__init__.py +0 -0
  209. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/server/proxy/api.py +0 -0
  210. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/server/streaming.py +0 -0
  211. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/server/tts/__init__.py +0 -0
  212. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/server/tts/api.py +0 -0
  213. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/server/tts/backends/__init__.py +0 -0
  214. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/server/tts/backends/base.py +0 -0
  215. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/server/tts/backends/kokoro.py +0 -0
  216. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/server/tts/backends/piper.py +0 -0
  217. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/server/tts/model_manager.py +0 -0
  218. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/server/tts/model_registry.py +0 -0
  219. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/server/tts/wyoming_handler.py +0 -0
  220. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/server/whisper/__init__.py +0 -0
  221. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/server/whisper/api.py +0 -0
  222. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/server/whisper/backends/__init__.py +0 -0
  223. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/server/whisper/backends/base.py +0 -0
  224. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/server/whisper/backends/mlx.py +0 -0
  225. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/server/whisper/languages.py +0 -0
  226. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/server/whisper/model_manager.py +0 -0
  227. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/server/whisper/model_registry.py +0 -0
  228. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/server/whisper/wyoming_handler.py +0 -0
  229. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/services/__init__.py +0 -0
  230. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/services/_wyoming_utils.py +0 -0
  231. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/services/asr.py +0 -0
  232. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/services/tts.py +0 -0
  233. {agent_cli-0.68.5 → agent_cli-0.69.0}/agent_cli/services/wake_word.py +0 -0
  234. {agent_cli-0.68.5 → agent_cli-0.69.0}/docker/docker-compose.yml +0 -0
  235. {agent_cli-0.68.5 → agent_cli-0.69.0}/docker/tts.Dockerfile +0 -0
  236. {agent_cli-0.68.5 → agent_cli-0.69.0}/docker/whisper.Dockerfile +0 -0
  237. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/CNAME +0 -0
  238. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/architecture/index.md +0 -0
  239. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/architecture/memory.md +0 -0
  240. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/architecture/rag.md +0 -0
  241. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/commands/assistant.md +0 -0
  242. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/commands/autocorrect.md +0 -0
  243. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/commands/chat.md +0 -0
  244. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/commands/config.md +0 -0
  245. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/commands/dev.md +0 -0
  246. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/commands/index.md +0 -0
  247. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/commands/install-extras.md +0 -0
  248. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/commands/install-hotkeys.md +0 -0
  249. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/commands/install-services.md +0 -0
  250. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/commands/memory.md +0 -0
  251. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/commands/rag-proxy.md +0 -0
  252. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/commands/server/index.md +0 -0
  253. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/commands/server/transcription-proxy.md +0 -0
  254. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/commands/server/tts.md +0 -0
  255. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/commands/server/whisper.md +0 -0
  256. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/commands/speak.md +0 -0
  257. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/commands/start-services.md +0 -0
  258. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/commands/transcribe-daemon.md +0 -0
  259. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/commands/transcribe.md +0 -0
  260. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/commands/voice-edit.md +0 -0
  261. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/configuration.md +0 -0
  262. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/getting-started.md +0 -0
  263. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/iOS_Shortcut_Guide.md +0 -0
  264. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/index.md +0 -0
  265. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/installation/docker.md +0 -0
  266. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/installation/index.md +0 -0
  267. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/installation/linux.md +0 -0
  268. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/installation/macos.md +0 -0
  269. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/installation/nixos.md +0 -0
  270. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/installation/windows.md +0 -0
  271. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/logo-clean.svg +0 -0
  272. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
  273. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/run_markdown_code_runner.py +0 -0
  274. {agent_cli-0.68.5 → agent_cli-0.69.0}/docs/system-integration.md +0 -0
  275. {agent_cli-0.68.5 → agent_cli-0.69.0}/example.agent-cli-config.toml +0 -0
  276. {agent_cli-0.68.5 → agent_cli-0.69.0}/justfile +0 -0
  277. {agent_cli-0.68.5 → agent_cli-0.69.0}/shell.nix +0 -0
  278. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/__init__.py +0 -0
  279. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/agents/__init__.py +0 -0
  280. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/agents/test_interactive.py +0 -0
  281. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/agents/test_interactive_extra.py +0 -0
  282. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/agents/test_memory_add.py +0 -0
  283. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/agents/test_speak.py +0 -0
  284. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/agents/test_speak_e2e.py +0 -0
  285. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/agents/test_transcribe_daemon.py +0 -0
  286. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/agents/test_transcribe_e2e.py +0 -0
  287. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/agents/test_tts_common.py +0 -0
  288. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/agents/test_tts_common_extra.py +0 -0
  289. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/agents/test_voice_agent_common.py +0 -0
  290. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/agents/test_voice_edit.py +0 -0
  291. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/agents/test_voice_edit_e2e.py +0 -0
  292. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/agents/test_wake_word_assistant.py +0 -0
  293. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/conftest.py +0 -0
  294. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/core/__init__.py +0 -0
  295. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/core/test_audio_format.py +0 -0
  296. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/core/test_chroma.py +0 -0
  297. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/core/test_sse.py +0 -0
  298. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/core/test_vad.py +0 -0
  299. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/dev/__init__.py +0 -0
  300. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/dev/test_cli.py +0 -0
  301. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/dev/test_coding_agents.py +0 -0
  302. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/dev/test_editors.py +0 -0
  303. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/dev/test_project.py +0 -0
  304. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/dev/test_terminals.py +0 -0
  305. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/dev/test_verification.py +0 -0
  306. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/dev/test_worktree.py +0 -0
  307. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/install/__init__.py +0 -0
  308. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/install/test_extras.py +0 -0
  309. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/memory/__init__.py +0 -0
  310. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/memory/test_api_health.py +0 -0
  311. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/memory/test_api_integration_liveish.py +0 -0
  312. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/memory/test_client.py +0 -0
  313. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/memory/test_files.py +0 -0
  314. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/memory/test_filters.py +0 -0
  315. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/memory/test_git_integration.py +0 -0
  316. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/memory/test_indexer.py +0 -0
  317. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/memory/test_memory_integration.py +0 -0
  318. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/memory/test_proxy_passthrough.py +0 -0
  319. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/memory/test_store.py +0 -0
  320. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/memory/test_utils.py +0 -0
  321. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/mocks/__init__.py +0 -0
  322. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/mocks/audio.py +0 -0
  323. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/mocks/llm.py +0 -0
  324. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/mocks/wyoming.py +0 -0
  325. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/rag/__init__.py +0 -0
  326. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/rag/test_api.py +0 -0
  327. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/rag/test_engine.py +0 -0
  328. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/rag/test_history.py +0 -0
  329. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/rag/test_indexer.py +0 -0
  330. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/rag/test_indexing.py +0 -0
  331. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/rag/test_rag_client.py +0 -0
  332. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/rag/test_rag_integration_liveish.py +0 -0
  333. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/rag/test_rag_proxy_passthrough.py +0 -0
  334. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/rag/test_retriever.py +0 -0
  335. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/rag/test_utils.py +0 -0
  336. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/test_api.py +0 -0
  337. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/test_api_integration.py +0 -0
  338. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/test_asr.py +0 -0
  339. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/test_asr_recovery.py +0 -0
  340. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/test_audio_e2e.py +0 -0
  341. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/test_config.py +0 -0
  342. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/test_config_cmd.py +0 -0
  343. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/test_docs_gen.py +0 -0
  344. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/test_env_vars.py +0 -0
  345. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/test_json_output.py +0 -0
  346. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/test_llm.py +0 -0
  347. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/test_llm_gemini.py +0 -0
  348. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/test_memory_tools.py +0 -0
  349. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/test_mlx_backend.py +0 -0
  350. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/test_process_manager.py +0 -0
  351. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/test_server_streaming.py +0 -0
  352. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/test_server_tts.py +0 -0
  353. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/test_server_whisper.py +0 -0
  354. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/test_services.py +0 -0
  355. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/test_tools.py +0 -0
  356. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/test_tts.py +0 -0
  357. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/test_utils.py +0 -0
  358. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/test_wake_word.py +0 -0
  359. {agent_cli-0.68.5 → agent_cli-0.69.0}/tests/test_wyoming_utils.py +0 -0
  360. {agent_cli-0.68.5 → agent_cli-0.69.0}/zensical.toml +0 -0
@@ -34,14 +34,19 @@ Do NOT spawn when:
34
34
 
35
35
  ## Core command
36
36
 
37
- For short prompts:
37
+ For new features (starts from origin/main):
38
38
  ```bash
39
- agent-cli dev new <branch-name> --agent --prompt "Fix the login bug"
39
+ agent-cli dev new <branch-name> --agent --prompt "Implement the new feature..."
40
+ ```
41
+
42
+ For work on current branch (review, test, fix) - use `--from HEAD`:
43
+ ```bash
44
+ agent-cli dev new <branch-name> --from HEAD --agent --prompt "Review/test/fix..."
40
45
  ```
41
46
 
42
47
  For longer prompts (recommended for multi-line or complex instructions):
43
48
  ```bash
44
- agent-cli dev new <branch-name> --agent --prompt-file path/to/prompt.md
49
+ agent-cli dev new <branch-name> --from HEAD --agent --prompt-file path/to/prompt.md
45
50
  ```
46
51
 
47
52
  This creates:
@@ -129,7 +134,7 @@ Each agent works independently in its own branch. Results can be reviewed and me
129
134
  | `--agent` / `-a` | Start AI coding agent after creation |
130
135
  | `--prompt` / `-p` | Initial prompt for the agent (short prompts only) |
131
136
  | `--prompt-file` / `-P` | Read prompt from file (recommended for longer prompts) |
132
- | `--from` / `-f` | Base branch (default: origin/main) |
137
+ | `--from` / `-f` | Base ref (default: origin/main). **Use `--from HEAD` when reviewing/testing current branch!** |
133
138
  | `--with-agent` | Specific agent: claude, aider, codex, gemini |
134
139
  | `--agent-args` | Extra arguments for the agent |
135
140
 
@@ -20,7 +20,68 @@ Each prompt for a spawned agent should follow this structure:
20
20
  5. **Focused scope** - Keep solutions minimal, implement only what's requested
21
21
  6. **Structured report** - Write conclusions to `.claude/REPORT.md`
22
22
 
23
- ## Scenario 1: Multi-feature implementation
23
+ ## Scenario 1: Code review of current branch
24
+
25
+ **User request**: "Review the code on this branch" or "Spawn an agent to review my changes"
26
+
27
+ **CRITICAL**: Use `--from HEAD` (or the branch name) so the review agent has access to the changes!
28
+
29
+ ```bash
30
+ # Review the current branch - MUST use --from HEAD
31
+ agent-cli dev new review-changes --from HEAD --agent --prompt "Review the code changes on this branch.
32
+
33
+ <workflow>
34
+ - Run git diff origin/main...HEAD to identify all changes
35
+ - Read changed files in parallel to understand context
36
+ - Check CLAUDE.md for project-specific guidelines
37
+ - Test changes with real services if applicable
38
+ </workflow>
39
+
40
+ <code_exploration>
41
+ - Use git diff origin/main...HEAD to see the full diff
42
+ - Read each changed file completely before judging
43
+ - Look at surrounding code to understand patterns
44
+ - Check existing tests to understand expected behavior
45
+ </code_exploration>
46
+
47
+ <context>
48
+ Code review catches issues before merge. Focus on real problems - not style nitpicks. Apply these criteria:
49
+ - Code cleanliness: Is the implementation clean and well-structured?
50
+ - DRY principle: Does it avoid duplication?
51
+ - Code reuse: Are there parts that should be reused from other places?
52
+ - Organization: Is everything in the right place?
53
+ - Consistency: Is it in the same style as other parts of the codebase?
54
+ - Simplicity: Is it over-engineered? Remember KISS and YAGNI. No dead code paths, no defensive programming.
55
+ - No pointless wrappers: Functions that just call another function should be inlined.
56
+ - User experience: Does it provide a good user experience?
57
+ - Tests: Are tests meaningful or just trivial coverage?
58
+ - Live tests: Test changes with real services if applicable.
59
+ - Rules: Does the code follow CLAUDE.md guidelines?
60
+ </context>
61
+
62
+ <scope>
63
+ Review only - identify issues but do not fix them. Write findings to report.
64
+ </scope>
65
+
66
+ <report>
67
+ Write your review to .claude/REPORT.md:
68
+
69
+ ## Summary
70
+ [Overall assessment of the changes]
71
+
72
+ ## Issues Found
73
+ | Severity | File:Line | Issue | Suggestion |
74
+ |----------|-----------|-------|------------|
75
+ | Critical/High/Medium/Low | path:123 | description | fix |
76
+
77
+ ## Positive Observations
78
+ [What's well done]
79
+ </report>"
80
+ ```
81
+
82
+ **Common mistake**: Forgetting `--from HEAD` means the agent starts from `origin/main` and won't see any of the branch changes!
83
+
84
+ ## Scenario 2: Multi-feature implementation
24
85
 
25
86
  **User request**: "Implement user auth, payment processing, and email notifications"
26
87
 
@@ -169,7 +230,7 @@ After verifying tests pass, write to .claude/REPORT.md with summary, files chang
169
230
  </report>"
170
231
  ```
171
232
 
172
- ## Scenario 2: Test-driven development
233
+ ## Scenario 3: Test-driven development
173
234
 
174
235
  **User request**: "Add a caching layer with comprehensive tests"
175
236
 
@@ -289,7 +350,7 @@ After ALL tests pass, write to .claude/REPORT.md:
289
350
  </report>"
290
351
  ```
291
352
 
292
- ## Scenario 3: Large refactoring by module
353
+ ## Scenario 4: Large refactoring by module
293
354
 
294
355
  **User request**: "Refactor the API to use consistent error handling"
295
356
 
@@ -357,7 +418,7 @@ After tests pass and linting is clean, write to .claude/REPORT.md:
357
418
  </report>"
358
419
  ```
359
420
 
360
- ## Scenario 4: Documentation and implementation in parallel
421
+ ## Scenario 5: Documentation and implementation in parallel
361
422
 
362
423
  **User request**: "Add a plugin system with documentation"
363
424
 
@@ -34,14 +34,19 @@ Do NOT spawn when:
34
34
 
35
35
  ## Core command
36
36
 
37
- For short prompts:
37
+ For new features (starts from origin/main):
38
38
  ```bash
39
- agent-cli dev new <branch-name> --agent --prompt "Fix the login bug"
39
+ agent-cli dev new <branch-name> --agent --prompt "Implement the new feature..."
40
+ ```
41
+
42
+ For work on current branch (review, test, fix) - use `--from HEAD`:
43
+ ```bash
44
+ agent-cli dev new <branch-name> --from HEAD --agent --prompt "Review/test/fix..."
40
45
  ```
41
46
 
42
47
  For longer prompts (recommended for multi-line or complex instructions):
43
48
  ```bash
44
- agent-cli dev new <branch-name> --agent --prompt-file path/to/prompt.md
49
+ agent-cli dev new <branch-name> --from HEAD --agent --prompt-file path/to/prompt.md
45
50
  ```
46
51
 
47
52
  This creates:
@@ -129,7 +134,7 @@ Each agent works independently in its own branch. Results can be reviewed and me
129
134
  | `--agent` / `-a` | Start AI coding agent after creation |
130
135
  | `--prompt` / `-p` | Initial prompt for the agent (short prompts only) |
131
136
  | `--prompt-file` / `-P` | Read prompt from file (recommended for longer prompts) |
132
- | `--from` / `-f` | Base branch (default: origin/main) |
137
+ | `--from` / `-f` | Base ref (default: origin/main). **Use `--from HEAD` when reviewing/testing current branch!** |
133
138
  | `--with-agent` | Specific agent: claude, aider, codex, gemini |
134
139
  | `--agent-args` | Extra arguments for the agent |
135
140
 
@@ -20,7 +20,68 @@ Each prompt for a spawned agent should follow this structure:
20
20
  5. **Focused scope** - Keep solutions minimal, implement only what's requested
21
21
  6. **Structured report** - Write conclusions to `.claude/REPORT.md`
22
22
 
23
- ## Scenario 1: Multi-feature implementation
23
+ ## Scenario 1: Code review of current branch
24
+
25
+ **User request**: "Review the code on this branch" or "Spawn an agent to review my changes"
26
+
27
+ **CRITICAL**: Use `--from HEAD` (or the branch name) so the review agent has access to the changes!
28
+
29
+ ```bash
30
+ # Review the current branch - MUST use --from HEAD
31
+ agent-cli dev new review-changes --from HEAD --agent --prompt "Review the code changes on this branch.
32
+
33
+ <workflow>
34
+ - Run git diff origin/main...HEAD to identify all changes
35
+ - Read changed files in parallel to understand context
36
+ - Check CLAUDE.md for project-specific guidelines
37
+ - Test changes with real services if applicable
38
+ </workflow>
39
+
40
+ <code_exploration>
41
+ - Use git diff origin/main...HEAD to see the full diff
42
+ - Read each changed file completely before judging
43
+ - Look at surrounding code to understand patterns
44
+ - Check existing tests to understand expected behavior
45
+ </code_exploration>
46
+
47
+ <context>
48
+ Code review catches issues before merge. Focus on real problems - not style nitpicks. Apply these criteria:
49
+ - Code cleanliness: Is the implementation clean and well-structured?
50
+ - DRY principle: Does it avoid duplication?
51
+ - Code reuse: Are there parts that should be reused from other places?
52
+ - Organization: Is everything in the right place?
53
+ - Consistency: Is it in the same style as other parts of the codebase?
54
+ - Simplicity: Is it over-engineered? Remember KISS and YAGNI. No dead code paths, no defensive programming.
55
+ - No pointless wrappers: Functions that just call another function should be inlined.
56
+ - User experience: Does it provide a good user experience?
57
+ - Tests: Are tests meaningful or just trivial coverage?
58
+ - Live tests: Test changes with real services if applicable.
59
+ - Rules: Does the code follow CLAUDE.md guidelines?
60
+ </context>
61
+
62
+ <scope>
63
+ Review only - identify issues but do not fix them. Write findings to report.
64
+ </scope>
65
+
66
+ <report>
67
+ Write your review to .claude/REPORT.md:
68
+
69
+ ## Summary
70
+ [Overall assessment of the changes]
71
+
72
+ ## Issues Found
73
+ | Severity | File:Line | Issue | Suggestion |
74
+ |----------|-----------|-------|------------|
75
+ | Critical/High/Medium/Low | path:123 | description | fix |
76
+
77
+ ## Positive Observations
78
+ [What's well done]
79
+ </report>"
80
+ ```
81
+
82
+ **Common mistake**: Forgetting `--from HEAD` means the agent starts from `origin/main` and won't see any of the branch changes!
83
+
84
+ ## Scenario 2: Multi-feature implementation
24
85
 
25
86
  **User request**: "Implement user auth, payment processing, and email notifications"
26
87
 
@@ -169,7 +230,7 @@ After verifying tests pass, write to .claude/REPORT.md with summary, files chang
169
230
  </report>"
170
231
  ```
171
232
 
172
- ## Scenario 2: Test-driven development
233
+ ## Scenario 3: Test-driven development
173
234
 
174
235
  **User request**: "Add a caching layer with comprehensive tests"
175
236
 
@@ -289,7 +350,7 @@ After ALL tests pass, write to .claude/REPORT.md:
289
350
  </report>"
290
351
  ```
291
352
 
292
- ## Scenario 3: Large refactoring by module
353
+ ## Scenario 4: Large refactoring by module
293
354
 
294
355
  **User request**: "Refactor the API to use consistent error handling"
295
356
 
@@ -357,7 +418,7 @@ After tests pass and linting is clean, write to .claude/REPORT.md:
357
418
  </report>"
358
419
  ```
359
420
 
360
- ## Scenario 4: Documentation and implementation in parallel
421
+ ## Scenario 5: Documentation and implementation in parallel
361
422
 
362
423
  **User request**: "Add a plugin system with documentation"
363
424
 
@@ -8,7 +8,7 @@ repos:
8
8
  - id: end-of-file-fixer
9
9
  - id: mixed-line-ending
10
10
  - repo: https://github.com/astral-sh/ruff-pre-commit
11
- rev: "v0.14.13"
11
+ rev: "v0.14.14"
12
12
  hooks:
13
13
  - id: ruff
14
14
  args: ["--fix"]
@@ -12,7 +12,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
12
12
  - Run `pre-commit run --all-files` before committing
13
13
  - Use `git add <specific-file>` not `git add .`
14
14
  - CLI help in README.md is auto-generated - don't edit manually
15
- - Keep CLI startup fast (<300ms) - use top-level imports by default, only use lazy imports when a heavy dependency actually causes slowdown
15
+ - Keep CLI startup fast (<300ms) - use top-level imports by default for first-party and stdlib imports, use lazy imports for ALL 3rd party dependencies (except pydantic, typer, and rich)
16
16
  - External library assumptions (especially in `dev` command for terminals/editors/agents) must be backed by evidence (official docs, man pages, source code). Document evidence in test docstrings that also verify the implementation.
17
17
  - Private functions (`_name`) don't need parameter documentation in docstrings - a one-line description is sufficient
18
18
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-cli
3
- Version: 0.68.5
3
+ Version: 0.69.0
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>
@@ -21,9 +21,10 @@ Requires-Dist: sounddevice>=0.4.6; extra == 'audio'
21
21
  Requires-Dist: wyoming>=1.5.2; extra == 'audio'
22
22
  Provides-Extra: dev
23
23
  Requires-Dist: markdown-code-runner>=2.7.0; extra == 'dev'
24
+ Requires-Dist: markdown-gfm-admonition; extra == 'dev'
24
25
  Requires-Dist: notebook; extra == 'dev'
26
+ Requires-Dist: pre-commit-uv>=4.1.4; extra == 'dev'
25
27
  Requires-Dist: pre-commit>=3.0.0; extra == 'dev'
26
- Requires-Dist: pydantic-ai-slim[openai]; extra == 'dev'
27
28
  Requires-Dist: pylint>=3.0.0; extra == 'dev'
28
29
  Requires-Dist: pytest-asyncio>=0.20.0; extra == 'dev'
29
30
  Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
@@ -32,6 +33,7 @@ Requires-Dist: pytest-timeout; extra == 'dev'
32
33
  Requires-Dist: pytest>=7.0.0; extra == 'dev'
33
34
  Requires-Dist: ruff; extra == 'dev'
34
35
  Requires-Dist: versioningit; extra == 'dev'
36
+ Requires-Dist: zensical; extra == 'dev'
35
37
  Provides-Extra: faster-whisper
36
38
  Requires-Dist: fastapi[standard]; extra == 'faster-whisper'
37
39
  Requires-Dist: faster-whisper>=1.0.0; extra == 'faster-whisper'
@@ -71,7 +73,6 @@ Requires-Dist: fastapi[standard]; extra == 'server'
71
73
  Provides-Extra: speed
72
74
  Requires-Dist: audiostretchy>=1.3.0; extra == 'speed'
73
75
  Provides-Extra: test
74
- Requires-Dist: pydantic-ai-slim[openai]; extra == 'test'
75
76
  Requires-Dist: pytest-asyncio>=0.20.0; extra == 'test'
76
77
  Requires-Dist: pytest-cov>=4.0.0; extra == 'test'
77
78
  Requires-Dist: pytest-mock; extra == 'test'
@@ -497,9 +498,12 @@ agent-cli install-extras rag memory vad
497
498
 
498
499
  Install optional extras (rag, memory, vad, etc.) with pinned versions.
499
500
 
500
- Examples: agent-cli install-extras rag # Install RAG dependencies agent-cli
501
- install-extras memory vad # Install multiple extras agent-cli install-extras --list
502
- # Show available extras agent-cli install-extras --all # Install all extras
501
+ Examples:
502
+
503
+ agent-cli install-extras rag # Install RAG dependencies
504
+ • agent-cli install-extras memory vad # Install multiple extras
505
+ • agent-cli install-extras --list # Show available extras
506
+ • agent-cli install-extras --all # Install all extras
503
507
 
504
508
  ╭─ Arguments ────────────────────────────────────────────────────────────────────────────╮
505
509
  │ extras [EXTRAS]... Extras to install │
@@ -414,9 +414,12 @@ agent-cli install-extras rag memory vad
414
414
 
415
415
  Install optional extras (rag, memory, vad, etc.) with pinned versions.
416
416
 
417
- Examples: agent-cli install-extras rag # Install RAG dependencies agent-cli
418
- install-extras memory vad # Install multiple extras agent-cli install-extras --list
419
- # Show available extras agent-cli install-extras --all # Install all extras
417
+ Examples:
418
+
419
+ agent-cli install-extras rag # Install RAG dependencies
420
+ • agent-cli install-extras memory vad # Install multiple extras
421
+ • agent-cli install-extras --list # Show available extras
422
+ • agent-cli install-extras --all # Install all extras
420
423
 
421
424
  ╭─ Arguments ────────────────────────────────────────────────────────────────────────────╮
422
425
  │ extras [EXTRAS]... Extras to install │
@@ -9,7 +9,6 @@ import sys
9
9
  import time
10
10
  from typing import TYPE_CHECKING
11
11
 
12
- import pyperclip
13
12
  import typer
14
13
 
15
14
  from agent_cli import config, opts
@@ -118,6 +117,8 @@ def _display_result(
118
117
  ) -> None:
119
118
  """Handle output and clipboard copying based on desired verbosity."""
120
119
  if clipboard:
120
+ import pyperclip # noqa: PLC0415
121
+
121
122
  pyperclip.copy(corrected_text)
122
123
 
123
124
  if simple_output:
@@ -10,6 +10,7 @@ from agent_cli.core.process import set_process_title
10
10
  memory_app = typer.Typer(
11
11
  name="memory",
12
12
  help="Memory system operations (add, proxy, etc.).",
13
+ add_completion=True,
13
14
  rich_markup_mode="markdown",
14
15
  no_args_is_help=True,
15
16
  )
@@ -11,7 +11,7 @@ from rich.logging import RichHandler
11
11
  from agent_cli import constants, opts
12
12
  from agent_cli.agents.memory import memory_app
13
13
  from agent_cli.core.deps import requires_extras
14
- from agent_cli.core.utils import console, print_command_line_args, print_error_message
14
+ from agent_cli.core.utils import console, print_command_line_args
15
15
 
16
16
 
17
17
  @memory_app.command("proxy")
@@ -105,17 +105,10 @@ def proxy(
105
105
  if print_args:
106
106
  print_command_line_args(locals())
107
107
 
108
- try:
109
- import uvicorn # noqa: PLC0415
110
-
111
- from agent_cli.memory._files import ensure_store_dirs # noqa: PLC0415
112
- from agent_cli.memory.api import create_app # noqa: PLC0415
113
- except ImportError as exc:
114
- print_error_message(
115
- "Memory dependencies are not installed. Please install with "
116
- "`pip install agent-cli[memory]` or `uv sync --extra memory`.",
117
- )
118
- raise typer.Exit(1) from exc
108
+ import uvicorn # noqa: PLC0415
109
+
110
+ from agent_cli.memory._files import ensure_store_dirs # noqa: PLC0415
111
+ from agent_cli.memory.api import create_app # noqa: PLC0415
119
112
 
120
113
  logging.basicConfig(
121
114
  level=log_level.upper(),
@@ -77,16 +77,9 @@ def rag_proxy(
77
77
  logging.getLogger("chromadb").setLevel(logging.WARNING)
78
78
  logging.getLogger("uvicorn.access").setLevel(logging.WARNING)
79
79
 
80
- try:
81
- import uvicorn # noqa: PLC0415
80
+ import uvicorn # noqa: PLC0415
82
81
 
83
- from agent_cli.rag.api import create_app # noqa: PLC0415
84
- except ImportError as exc:
85
- print_error_message(
86
- "RAG dependencies are not installed. Please install with "
87
- "`pip install agent-cli[rag]` or `uv sync --extra rag`.",
88
- )
89
- raise typer.Exit(1) from exc
82
+ from agent_cli.rag.api import create_app # noqa: PLC0415
90
83
 
91
84
  docs_folder = docs_folder.resolve()
92
85
  chroma_path = chroma_path.resolve()
@@ -12,7 +12,6 @@ from datetime import UTC, datetime, timedelta
12
12
  from pathlib import Path # noqa: TC003
13
13
  from typing import Any, TypedDict
14
14
 
15
- import pyperclip
16
15
  import typer
17
16
 
18
17
  from agent_cli import config, opts
@@ -364,6 +363,8 @@ async def _async_main( # noqa: PLR0912, PLR0915, C901
364
363
  )
365
364
  clipboard_snapshot: str | None = None
366
365
  if general_cfg.clipboard:
366
+ import pyperclip # noqa: PLC0415
367
+
367
368
  clipboard_snapshot = pyperclip.paste()
368
369
  pyperclip.copy(transcript)
369
370
  LOGGER.info("Copied raw transcript to clipboard before LLM processing.")
@@ -445,6 +446,8 @@ async def _async_main( # noqa: PLR0912, PLR0915, C901
445
446
  )
446
447
 
447
448
  if general_cfg.clipboard:
449
+ import pyperclip # noqa: PLC0415
450
+
448
451
  pyperclip.copy(transcript)
449
452
  LOGGER.info("Copied transcript to clipboard.")
450
453
  else:
@@ -2,9 +2,12 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import sys
6
+ from pathlib import Path
5
7
  from typing import Annotated
6
8
 
7
9
  import typer
10
+ from rich.table import Table
8
11
 
9
12
  from . import __version__
10
13
  from .config import load_config, normalize_provider_defaults
@@ -14,15 +17,28 @@ from .core.utils import console
14
17
  app = typer.Typer(
15
18
  name="agent-cli",
16
19
  help="A suite of AI-powered command-line tools for text correction, audio transcription, and voice assistance.",
17
- add_completion=True,
18
20
  context_settings={"help_option_names": ["-h", "--help"]},
21
+ add_completion=True,
19
22
  rich_markup_mode="markdown",
23
+ no_args_is_help=True,
20
24
  )
21
25
 
22
26
 
23
27
  def _version_callback(value: bool) -> None:
24
28
  if value:
25
- console.print(f"agent-cli {__version__}")
29
+ path = Path(__file__).parent
30
+ data = [
31
+ ("agent-cli version", __version__),
32
+ ("agent-cli location", str(path)),
33
+ ("Python version", sys.version),
34
+ ("Python executable", sys.executable),
35
+ ]
36
+ table = Table(show_header=False)
37
+ table.add_column("Property", style="cyan")
38
+ table.add_column("Value", style="magenta")
39
+ for prop, val in data:
40
+ table.add_row(prop, val)
41
+ console.print(table)
26
42
  raise typer.Exit
27
43
 
28
44
 
@@ -21,6 +21,7 @@ from agent_cli.core.utils import console
21
21
  config_app = typer.Typer(
22
22
  name="config",
23
23
  help="Manage agent-cli configuration files.",
24
+ add_completion=True,
24
25
  rich_markup_mode="markdown",
25
26
  no_args_is_help=True,
26
27
  )
@@ -4,10 +4,6 @@ from __future__ import annotations
4
4
 
5
5
  from typing import TYPE_CHECKING, Any
6
6
 
7
- import chromadb
8
- from chromadb.config import Settings
9
- from chromadb.utils import embedding_functions
10
-
11
7
  from agent_cli.constants import DEFAULT_OPENAI_EMBEDDING_MODEL
12
8
 
13
9
  if TYPE_CHECKING:
@@ -28,6 +24,10 @@ def init_collection(
28
24
  subdir: str | None = None,
29
25
  ) -> Collection:
30
26
  """Initialize a Chroma collection with OpenAI-compatible embeddings."""
27
+ import chromadb # noqa: PLC0415
28
+ from chromadb.config import Settings # noqa: PLC0415
29
+ from chromadb.utils import embedding_functions # noqa: PLC0415
30
+
31
31
  target_path = persistence_path / subdir if subdir else persistence_path
32
32
  target_path.mkdir(parents=True, exist_ok=True)
33
33
  client = chromadb.PersistentClient(
@@ -142,7 +142,7 @@ def _try_auto_install(missing: list[str]) -> bool:
142
142
  console.print(
143
143
  f"[yellow]Auto-installing missing extras: {', '.join(extras_to_install)}[/]",
144
144
  )
145
- return install_extras_programmatic(extras_to_install)
145
+ return install_extras_programmatic(extras_to_install, quiet=True)
146
146
 
147
147
 
148
148
  def _check_and_install_extras(extras: tuple[str, ...]) -> list[str]:
@@ -6,13 +6,11 @@ import json
6
6
  import logging
7
7
  from typing import TYPE_CHECKING, Any, Protocol, runtime_checkable
8
8
 
9
- import httpx
10
- from fastapi import HTTPException, Request, Response
11
- from fastapi.responses import StreamingResponse
12
-
13
9
  if TYPE_CHECKING:
14
10
  from collections.abc import AsyncGenerator, Iterable
15
11
 
12
+ from fastapi import Request, Response
13
+
16
14
  LOGGER = logging.getLogger(__name__)
17
15
 
18
16
 
@@ -33,6 +31,9 @@ async def proxy_request_to_upstream(
33
31
  api_key: str | None = None,
34
32
  ) -> Response:
35
33
  """Forward a raw HTTP request to an upstream OpenAI-compatible provider."""
34
+ import httpx # noqa: PLC0415
35
+ from fastapi import Response # noqa: PLC0415
36
+
36
37
  auth_header = request.headers.get("Authorization")
37
38
  headers = {}
38
39
  if auth_header:
@@ -82,6 +83,10 @@ async def forward_chat_request(
82
83
  exclude_fields: Iterable[str] = (),
83
84
  ) -> Any:
84
85
  """Forward a chat request to a backend LLM."""
86
+ import httpx # noqa: PLC0415
87
+ from fastapi import HTTPException # noqa: PLC0415
88
+ from fastapi.responses import StreamingResponse # noqa: PLC0415
89
+
85
90
  forward_payload = request.model_dump(exclude=set(exclude_fields))
86
91
  headers = {"Authorization": f"Bearer {api_key}"} if api_key else None
87
92
 
@@ -10,8 +10,6 @@ from contextlib import contextmanager
10
10
  from pathlib import Path
11
11
  from typing import TYPE_CHECKING
12
12
 
13
- import setproctitle
14
-
15
13
  if TYPE_CHECKING:
16
14
  from collections.abc import Generator
17
15
 
@@ -36,6 +34,8 @@ def set_process_title(process_name: str) -> None:
36
34
  process_name: The name of the process (e.g., 'transcribe', 'chat').
37
35
 
38
36
  """
37
+ import setproctitle # noqa: PLC0415
38
+
39
39
  global _original_proctitle
40
40
 
41
41
  # Capture the original command line only once, before any modification
@@ -4,15 +4,13 @@ from __future__ import annotations
4
4
 
5
5
  import logging
6
6
 
7
- from huggingface_hub import hf_hub_download
8
- from onnxruntime import InferenceSession
9
- from transformers import AutoTokenizer
10
-
11
7
  LOGGER = logging.getLogger(__name__)
12
8
 
13
9
 
14
10
  def _download_onnx_model(model_name: str, onnx_filename: str) -> str:
15
11
  """Download the ONNX model, favoring the common `onnx/` folder layout."""
12
+ from huggingface_hub import hf_hub_download # noqa: PLC0415
13
+
16
14
  if "/" in onnx_filename:
17
15
  return hf_hub_download(repo_id=model_name, filename=onnx_filename)
18
16
 
@@ -45,6 +43,9 @@ class OnnxCrossEncoder:
45
43
  onnx_filename: str = "model.onnx",
46
44
  ) -> None:
47
45
  """Initialize the ONNX CrossEncoder."""
46
+ from onnxruntime import InferenceSession # noqa: PLC0415
47
+ from transformers import AutoTokenizer # noqa: PLC0415
48
+
48
49
  self.model_name = model_name
49
50
 
50
51
  # Download model if needed
@@ -18,7 +18,6 @@ from contextlib import (
18
18
  )
19
19
  from typing import TYPE_CHECKING, Any
20
20
 
21
- import pyperclip
22
21
  from rich.console import Console
23
22
  from rich.live import Live
24
23
  from rich.panel import Panel
@@ -40,6 +39,7 @@ if TYPE_CHECKING:
40
39
  from pathlib import Path
41
40
 
42
41
  console = Console()
42
+ err_console = Console(stderr=True)
43
43
 
44
44
 
45
45
  def enable_json_mode() -> None:
@@ -233,6 +233,8 @@ def print_device_index(input_device_index: int | None, input_device_name: str |
233
233
 
234
234
  def get_clipboard_text(*, quiet: bool = False) -> str | None:
235
235
  """Get text from clipboard, with an optional status message."""
236
+ import pyperclip # noqa: PLC0415
237
+
236
238
  text = pyperclip.paste()
237
239
  if not text:
238
240
  if not quiet:
@@ -12,7 +12,6 @@ from agent_cli import constants
12
12
  try:
13
13
  import numpy as np
14
14
  import torch
15
- from silero_vad.utils_vad import OnnxWrapper
16
15
  except ImportError as e:
17
16
  msg = (
18
17
  "silero-vad is required for the transcribe-daemon command. "
@@ -57,6 +56,8 @@ class VoiceActivityDetector:
57
56
  msg = f"Sample rate must be 8000 or 16000, got {sample_rate}"
58
57
  raise ValueError(msg)
59
58
 
59
+ from silero_vad.utils_vad import OnnxWrapper # noqa: PLC0415
60
+
60
61
  self.sample_rate = sample_rate
61
62
  self.threshold = threshold
62
63
  self.silence_threshold_ms = silence_threshold_ms