agent-cli 0.107.0__tar.gz → 0.107.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 (461) hide show
  1. {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/workflows/docker.yml +3 -3
  2. {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/workflows/docs.yml +1 -1
  3. {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/workflows/markdown-code-runner.yml +1 -1
  4. {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/workflows/pytest.yml +1 -1
  5. {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/workflows/release-drafter.yml +1 -1
  6. {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/workflows/release.yml +2 -2
  7. {agent_cli-0.107.0 → agent_cli-0.107.1}/PKG-INFO +1 -1
  8. {agent_cli-0.107.0 → agent_cli-0.107.1}/docker/tts.Dockerfile +1 -1
  9. {agent_cli-0.107.0 → agent_cli-0.107.1}/docker/whisper.Dockerfile +1 -1
  10. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Package.resolved +2 -2
  11. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Package.swift +1 -1
  12. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/AgentCommandRunner.swift +3 -3
  13. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/AgentRuntime.swift +34 -3
  14. agent_cli-0.107.1/macos/AgentCLI/Sources/AgentCLI/CommandResult.swift +39 -0
  15. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Tests/AgentCLITests/AgentCommandTests.swift +9 -0
  16. agent_cli-0.107.1/macos/AgentCLI/Tests/AgentCLITests/TranscriptionResultTests.swift +76 -0
  17. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/appcast.xml +23 -27
  18. agent_cli-0.107.0/macos/AgentCLI/Sources/AgentCLI/CommandResult.swift +0 -17
  19. agent_cli-0.107.0/macos/AgentCLI/Tests/AgentCLITests/TranscriptionResultTests.swift +0 -23
  20. {agent_cli-0.107.0 → agent_cli-0.107.1}/.claude/skills/agent-cli-dev/SKILL.md +0 -0
  21. {agent_cli-0.107.0 → agent_cli-0.107.1}/.claude/skills/agent-cli-dev/examples.md +0 -0
  22. {agent_cli-0.107.0 → agent_cli-0.107.1}/.claude-plugin/README.md +0 -0
  23. {agent_cli-0.107.0 → agent_cli-0.107.1}/.claude-plugin/marketplace.json +0 -0
  24. {agent_cli-0.107.0 → agent_cli-0.107.1}/.claude-plugin/plugin.json +0 -0
  25. {agent_cli-0.107.0 → agent_cli-0.107.1}/.claude-plugin/skills/agent-cli-dev/SKILL.md +0 -0
  26. {agent_cli-0.107.0 → agent_cli-0.107.1}/.claude-plugin/skills/agent-cli-dev/examples.md +0 -0
  27. {agent_cli-0.107.0 → agent_cli-0.107.1}/.cursorrules +0 -0
  28. {agent_cli-0.107.0 → agent_cli-0.107.1}/.dockerignore +0 -0
  29. {agent_cli-0.107.0 → agent_cli-0.107.1}/.env.example +0 -0
  30. {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/logo.svg +0 -0
  31. {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/release-drafter.yml +0 -0
  32. {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/renovate.json +0 -0
  33. {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/scripts/check_extras_sync.py +0 -0
  34. {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/scripts/check_plugin_skill_sync.py +0 -0
  35. {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/scripts/normalize_appcast.py +0 -0
  36. {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/scripts/sync_extras.py +0 -0
  37. {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/scripts/sync_requirements.py +0 -0
  38. {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/workflows/automerge.yml +0 -0
  39. {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/workflows/toc.yaml +0 -0
  40. {agent_cli-0.107.0 → agent_cli-0.107.1}/.gitignore +0 -0
  41. {agent_cli-0.107.0 → agent_cli-0.107.1}/.jscpd.json +0 -0
  42. {agent_cli-0.107.0 → agent_cli-0.107.1}/.pre-commit-config.yaml +0 -0
  43. {agent_cli-0.107.0 → agent_cli-0.107.1}/.prompts/docs-review.md +0 -0
  44. {agent_cli-0.107.0 → agent_cli-0.107.1}/.prompts/pr-review.md +0 -0
  45. {agent_cli-0.107.0 → agent_cli-0.107.1}/CLAUDE.md +0 -0
  46. {agent_cli-0.107.0 → agent_cli-0.107.1}/LICENSE +0 -0
  47. {agent_cli-0.107.0 → agent_cli-0.107.1}/LLAMA_SERVER_USAGE.md +0 -0
  48. {agent_cli-0.107.0 → agent_cli-0.107.1}/README.md +0 -0
  49. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/__init__.py +0 -0
  50. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/__main__.py +0 -0
  51. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_extras.json +0 -0
  52. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_overrides/nemo-whisper.txt +0 -0
  53. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/.gitkeep +0 -0
  54. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/audio.txt +0 -0
  55. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/diarization.txt +0 -0
  56. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/faster-whisper.txt +0 -0
  57. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/kokoro.txt +0 -0
  58. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/llm.txt +0 -0
  59. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/memory.txt +0 -0
  60. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/mlx-whisper.txt +0 -0
  61. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/nemo-whisper.txt +0 -0
  62. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/piper.txt +0 -0
  63. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/rag.txt +0 -0
  64. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/server.txt +0 -0
  65. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/speed.txt +0 -0
  66. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/vad.txt +0 -0
  67. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/vectordb.txt +0 -0
  68. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/whisper-transformers.txt +0 -0
  69. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/wyoming.txt +0 -0
  70. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_tools.py +0 -0
  71. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/agents/__init__.py +0 -0
  72. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/agents/_voice_agent_common.py +0 -0
  73. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/agents/assistant.py +0 -0
  74. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/agents/autocorrect.py +0 -0
  75. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/agents/chat.py +0 -0
  76. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/agents/diarize_live_session.py +0 -0
  77. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/agents/memory/__init__.py +0 -0
  78. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/agents/memory/add.py +0 -0
  79. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/agents/memory/proxy.py +0 -0
  80. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/agents/rag_proxy.py +0 -0
  81. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/agents/speak.py +0 -0
  82. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/agents/speakers.py +0 -0
  83. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/agents/transcribe.py +0 -0
  84. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/agents/transcribe_live.py +0 -0
  85. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/agents/voice_edit.py +0 -0
  86. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/api.py +0 -0
  87. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/cli.py +0 -0
  88. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/config.py +0 -0
  89. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/config_cmd.py +0 -0
  90. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/constants.py +0 -0
  91. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/__init__.py +0 -0
  92. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/alignment.py +0 -0
  93. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/audio.py +0 -0
  94. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/audio_format.py +0 -0
  95. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/chroma.py +0 -0
  96. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/deps.py +0 -0
  97. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/diarization.py +0 -0
  98. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/openai_proxy.py +0 -0
  99. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/process.py +0 -0
  100. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/reranker.py +0 -0
  101. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/speaker_identity.py +0 -0
  102. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/sse.py +0 -0
  103. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/transcription_logger.py +0 -0
  104. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/utils.py +0 -0
  105. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/vad.py +0 -0
  106. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/watch.py +0 -0
  107. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/daemon/__init__.py +0 -0
  108. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/daemon/cli.py +0 -0
  109. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/__init__.py +0 -0
  110. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/_branch_name.py +0 -0
  111. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/_config.py +0 -0
  112. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/_output.py +0 -0
  113. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/cleanup.py +0 -0
  114. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/cli.py +0 -0
  115. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/coding_agents/__init__.py +0 -0
  116. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/coding_agents/aider.py +0 -0
  117. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/coding_agents/base.py +0 -0
  118. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/coding_agents/claude.py +0 -0
  119. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/coding_agents/codex.py +0 -0
  120. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/coding_agents/continue_dev.py +0 -0
  121. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/coding_agents/copilot.py +0 -0
  122. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/coding_agents/cursor_agent.py +0 -0
  123. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/coding_agents/gemini.py +0 -0
  124. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/coding_agents/opencode.py +0 -0
  125. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/coding_agents/registry.py +0 -0
  126. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/editors/__init__.py +0 -0
  127. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/editors/base.py +0 -0
  128. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/editors/cursor.py +0 -0
  129. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/editors/emacs.py +0 -0
  130. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/editors/jetbrains.py +0 -0
  131. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/editors/nano.py +0 -0
  132. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/editors/neovim.py +0 -0
  133. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/editors/registry.py +0 -0
  134. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/editors/sublime.py +0 -0
  135. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/editors/vim.py +0 -0
  136. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/editors/vscode.py +0 -0
  137. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/editors/zed.py +0 -0
  138. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/hooks.py +0 -0
  139. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/launch.py +0 -0
  140. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/project.py +0 -0
  141. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/registry.py +0 -0
  142. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/skill/SKILL.md +0 -0
  143. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/skill/examples.md +0 -0
  144. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/terminals/__init__.py +0 -0
  145. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/terminals/apple_terminal.py +0 -0
  146. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/terminals/base.py +0 -0
  147. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/terminals/cmux.py +0 -0
  148. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/terminals/gnome.py +0 -0
  149. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/terminals/iterm2.py +0 -0
  150. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/terminals/kitty.py +0 -0
  151. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/terminals/registry.py +0 -0
  152. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/terminals/tmux.py +0 -0
  153. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/terminals/warp.py +0 -0
  154. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/terminals/zellij.py +0 -0
  155. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/worktree.py +0 -0
  156. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/docs_gen.py +0 -0
  157. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/example-config.toml +0 -0
  158. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/install/__init__.py +0 -0
  159. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/install/common.py +0 -0
  160. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/install/extras.py +0 -0
  161. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/install/hotkeys.py +0 -0
  162. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/install/launchd.py +0 -0
  163. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/install/service_config.py +0 -0
  164. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/install/services.py +0 -0
  165. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/install/systemd.py +0 -0
  166. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/__init__.py +0 -0
  167. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/_files.py +0 -0
  168. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/_filters.py +0 -0
  169. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/_git.py +0 -0
  170. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/_indexer.py +0 -0
  171. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/_ingest.py +0 -0
  172. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/_persistence.py +0 -0
  173. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/_prompt.py +0 -0
  174. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/_retrieval.py +0 -0
  175. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/_store.py +0 -0
  176. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/_streaming.py +0 -0
  177. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/_tasks.py +0 -0
  178. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/api.py +0 -0
  179. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/client.py +0 -0
  180. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/engine.py +0 -0
  181. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/entities.py +0 -0
  182. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/models.py +0 -0
  183. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/opts.py +0 -0
  184. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/py.typed +0 -0
  185. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/rag/__init__.py +0 -0
  186. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/rag/_indexer.py +0 -0
  187. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/rag/_indexing.py +0 -0
  188. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/rag/_prompt.py +0 -0
  189. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/rag/_retriever.py +0 -0
  190. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/rag/_store.py +0 -0
  191. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/rag/_utils.py +0 -0
  192. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/rag/api.py +0 -0
  193. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/rag/client.py +0 -0
  194. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/rag/engine.py +0 -0
  195. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/rag/models.py +0 -0
  196. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/.runtime/.gitkeep +0 -0
  197. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/__init__.py +0 -0
  198. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/linux-hotkeys/README.md +0 -0
  199. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh +0 -0
  200. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh +0 -0
  201. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/linux-hotkeys/toggle-voice-edit.sh +0 -0
  202. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/macos-hotkeys/README.md +0 -0
  203. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/macos-hotkeys/skhd-config-example +0 -0
  204. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/macos-hotkeys/toggle-autocorrect.sh +0 -0
  205. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/macos-hotkeys/toggle-transcription.sh +0 -0
  206. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/macos-hotkeys/toggle-voice-edit.sh +0 -0
  207. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/nvidia-asr-server/README.md +0 -0
  208. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/nvidia-asr-server/pyproject.toml +0 -0
  209. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/nvidia-asr-server/server.py +0 -0
  210. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/nvidia-asr-server/shell.nix +0 -0
  211. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/nvidia-asr-server/uv.lock +0 -0
  212. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/run-openwakeword.sh +0 -0
  213. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/setup-linux-hotkeys.sh +0 -0
  214. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/setup-linux.sh +0 -0
  215. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/setup-macos-hotkeys.sh +0 -0
  216. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/setup-macos.sh +0 -0
  217. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/setup-windows.ps1 +0 -0
  218. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/start-all-services-windows.ps1 +0 -0
  219. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/start-all-services.sh +0 -0
  220. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/__init__.py +0 -0
  221. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/cli.py +0 -0
  222. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/common.py +0 -0
  223. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/model_manager.py +0 -0
  224. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/model_registry.py +0 -0
  225. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/proxy/__init__.py +0 -0
  226. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/proxy/api.py +0 -0
  227. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/proxy/diarization.py +0 -0
  228. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/streaming.py +0 -0
  229. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/tts/__init__.py +0 -0
  230. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/tts/api.py +0 -0
  231. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/tts/backends/__init__.py +0 -0
  232. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/tts/backends/base.py +0 -0
  233. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/tts/backends/kokoro.py +0 -0
  234. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/tts/backends/piper.py +0 -0
  235. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/tts/model_manager.py +0 -0
  236. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/tts/model_registry.py +0 -0
  237. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/tts/wyoming_handler.py +0 -0
  238. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/whisper/__init__.py +0 -0
  239. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/whisper/api.py +0 -0
  240. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/whisper/backends/__init__.py +0 -0
  241. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/whisper/backends/audio.py +0 -0
  242. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/whisper/backends/base.py +0 -0
  243. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/whisper/backends/faster_whisper.py +0 -0
  244. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/whisper/backends/mlx.py +0 -0
  245. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/whisper/backends/nemo.py +0 -0
  246. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/whisper/backends/transformers.py +0 -0
  247. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/whisper/languages.py +0 -0
  248. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/whisper/model_manager.py +0 -0
  249. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/whisper/model_registry.py +0 -0
  250. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/whisper/wyoming_handler.py +0 -0
  251. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/services/__init__.py +0 -0
  252. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/services/_wyoming_utils.py +0 -0
  253. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/services/asr.py +0 -0
  254. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/services/llm.py +0 -0
  255. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/services/tts.py +0 -0
  256. {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/services/wake_word.py +0 -0
  257. {agent_cli-0.107.0 → agent_cli-0.107.1}/docker/diarization.Dockerfile +0 -0
  258. {agent_cli-0.107.0 → agent_cli-0.107.1}/docker/docker-compose.yml +0 -0
  259. {agent_cli-0.107.0 → agent_cli-0.107.1}/docker/memory-proxy.Dockerfile +0 -0
  260. {agent_cli-0.107.0 → agent_cli-0.107.1}/docker/rag-proxy.Dockerfile +0 -0
  261. {agent_cli-0.107.0 → agent_cli-0.107.1}/docker/transcribe-proxy.Dockerfile +0 -0
  262. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/CNAME +0 -0
  263. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/architecture/index.md +0 -0
  264. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/architecture/memory.md +0 -0
  265. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/architecture/rag.md +0 -0
  266. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/assistant.md +0 -0
  267. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/autocorrect.md +0 -0
  268. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/chat.md +0 -0
  269. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/config.md +0 -0
  270. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/daemon.md +0 -0
  271. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/dev.md +0 -0
  272. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/diarize-live-session.md +0 -0
  273. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/index.md +0 -0
  274. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/install-extras.md +0 -0
  275. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/install-hotkeys.md +0 -0
  276. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/install-services.md +0 -0
  277. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/memory.md +0 -0
  278. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/rag-proxy.md +0 -0
  279. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/server/index.md +0 -0
  280. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/server/transcribe-proxy.md +0 -0
  281. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/server/tts.md +0 -0
  282. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/server/whisper.md +0 -0
  283. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/speak.md +0 -0
  284. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/speakers.md +0 -0
  285. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/start-services.md +0 -0
  286. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/transcribe-live.md +0 -0
  287. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/transcribe.md +0 -0
  288. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/voice-edit.md +0 -0
  289. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/configuration.md +0 -0
  290. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/getting-started.md +0 -0
  291. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/iOS_Shortcut_Guide.md +0 -0
  292. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/index.md +0 -0
  293. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/installation/docker.md +0 -0
  294. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/installation/index.md +0 -0
  295. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/installation/linux.md +0 -0
  296. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/installation/macos-app.md +0 -0
  297. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/installation/macos.md +0 -0
  298. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/installation/nixos.md +0 -0
  299. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/installation/windows.md +0 -0
  300. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/logo-avatar.svg +0 -0
  301. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/logo-clean.svg +0 -0
  302. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
  303. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/run_markdown_code_runner.py +0 -0
  304. {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/system-integration.md +0 -0
  305. {agent_cli-0.107.0 → agent_cli-0.107.1}/example.agent-cli-config.toml +0 -0
  306. {agent_cli-0.107.0 → agent_cli-0.107.1}/justfile +0 -0
  307. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/README.md +0 -0
  308. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Resources/AgentCLI.entitlements +0 -0
  309. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Resources/Info.plist +0 -0
  310. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Resources/dmg-background.svg +0 -0
  311. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/AgentCLIApp.swift +0 -0
  312. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/AgentCommand.swift +0 -0
  313. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/AppDelegate.swift +0 -0
  314. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/AppMetadata.swift +0 -0
  315. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/AppUpdater.swift +0 -0
  316. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/BootstrapState.swift +0 -0
  317. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/ConfigurableHotkeyController.swift +0 -0
  318. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/FocusedTextTarget.swift +0 -0
  319. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/LiveTranscriptionPreview.swift +0 -0
  320. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/LoginItemController.swift +0 -0
  321. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/MenuActivityStatus.swift +0 -0
  322. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/MenuActivityStatusRow.swift +0 -0
  323. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/MenuActivityTracker.swift +0 -0
  324. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/MenuBarIcon.swift +0 -0
  325. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/RecentTranscriptionReader.swift +0 -0
  326. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/RecordingIndicatorController.swift +0 -0
  327. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/RecordingSoundSettings.swift +0 -0
  328. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/RuntimeSettings.swift +0 -0
  329. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/SettingsWindowController.swift +0 -0
  330. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/Shortcuts.swift +0 -0
  331. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/StatusMenuController.swift +0 -0
  332. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/TranscriptPasteController.swift +0 -0
  333. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/TranscriptionSettings.swift +0 -0
  334. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/VoiceLevelOverlay.swift +0 -0
  335. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Tests/AgentCLITests/ConfigurableHotkeyControllerTests.swift +0 -0
  336. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Tests/AgentCLITests/LivePreviewSwiftTestingTests.swift +0 -0
  337. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Tests/AgentCLITests/LiveTranscriptionPreviewTests.swift +0 -0
  338. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Tests/AgentCLITests/LoginItemControllerTests.swift +0 -0
  339. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Tests/AgentCLITests/RecentTranscriptionReaderTests.swift +0 -0
  340. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Tests/AgentCLITests/RecordingIndicatorControllerTests.swift +0 -0
  341. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Tests/AgentCLITests/ShortcutDefaultsTests.swift +0 -0
  342. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Tests/AgentCLITests/VoiceLevelMeterTests.swift +0 -0
  343. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/build-macos-app.sh +0 -0
  344. {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/test-macos-app-e2e.sh +0 -0
  345. {agent_cli-0.107.0 → agent_cli-0.107.1}/pyproject.toml +0 -0
  346. {agent_cli-0.107.0 → agent_cli-0.107.1}/reddit.md +0 -0
  347. {agent_cli-0.107.0 → agent_cli-0.107.1}/shell.nix +0 -0
  348. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/__init__.py +0 -0
  349. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/__init__.py +0 -0
  350. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_fix_my_text.py +0 -0
  351. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_interactive.py +0 -0
  352. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_interactive_extra.py +0 -0
  353. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_memory_add.py +0 -0
  354. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_speak.py +0 -0
  355. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_speak_e2e.py +0 -0
  356. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_speakers.py +0 -0
  357. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_transcribe.py +0 -0
  358. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_transcribe_agent.py +0 -0
  359. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_transcribe_e2e.py +0 -0
  360. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_transcribe_live.py +0 -0
  361. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_transcribe_recovery.py +0 -0
  362. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_tts_common.py +0 -0
  363. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_tts_common_extra.py +0 -0
  364. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_voice_agent_common.py +0 -0
  365. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_voice_edit.py +0 -0
  366. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_voice_edit_e2e.py +0 -0
  367. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_wake_word_assistant.py +0 -0
  368. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/conftest.py +0 -0
  369. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/core/__init__.py +0 -0
  370. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/core/test_audio.py +0 -0
  371. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/core/test_audio_format.py +0 -0
  372. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/core/test_audio_levels.py +0 -0
  373. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/core/test_chroma.py +0 -0
  374. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/core/test_sse.py +0 -0
  375. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/core/test_vad.py +0 -0
  376. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/core/test_watch.py +0 -0
  377. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/dev/__init__.py +0 -0
  378. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/dev/test_cleanup.py +0 -0
  379. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/dev/test_cli.py +0 -0
  380. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/dev/test_coding_agents.py +0 -0
  381. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/dev/test_editors.py +0 -0
  382. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/dev/test_hooks.py +0 -0
  383. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/dev/test_launch.py +0 -0
  384. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/dev/test_project.py +0 -0
  385. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/dev/test_terminals.py +0 -0
  386. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/dev/test_verification.py +0 -0
  387. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/dev/test_worktree.py +0 -0
  388. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/install/__init__.py +0 -0
  389. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/install/test_extras.py +0 -0
  390. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/install/test_launchd.py +0 -0
  391. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/memory/__init__.py +0 -0
  392. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/memory/test_api_health.py +0 -0
  393. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/memory/test_api_integration_liveish.py +0 -0
  394. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/memory/test_client.py +0 -0
  395. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/memory/test_engine.py +0 -0
  396. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/memory/test_files.py +0 -0
  397. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/memory/test_filters.py +0 -0
  398. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/memory/test_git_integration.py +0 -0
  399. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/memory/test_indexer.py +0 -0
  400. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/memory/test_memory_integration.py +0 -0
  401. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/memory/test_proxy_passthrough.py +0 -0
  402. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/memory/test_store.py +0 -0
  403. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/memory/test_utils.py +0 -0
  404. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/mocks/__init__.py +0 -0
  405. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/mocks/audio.py +0 -0
  406. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/mocks/llm.py +0 -0
  407. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/mocks/wyoming.py +0 -0
  408. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/rag/__init__.py +0 -0
  409. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/rag/test_api.py +0 -0
  410. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/rag/test_engine.py +0 -0
  411. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/rag/test_history.py +0 -0
  412. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/rag/test_indexer.py +0 -0
  413. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/rag/test_indexing.py +0 -0
  414. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/rag/test_rag_client.py +0 -0
  415. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/rag/test_rag_integration_liveish.py +0 -0
  416. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/rag/test_rag_proxy_passthrough.py +0 -0
  417. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/rag/test_retriever.py +0 -0
  418. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/rag/test_store.py +0 -0
  419. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/rag/test_utils.py +0 -0
  420. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_alignment.py +0 -0
  421. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_api.py +0 -0
  422. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_api_integration.py +0 -0
  423. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_asr.py +0 -0
  424. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_asr_recovery.py +0 -0
  425. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_audio_e2e.py +0 -0
  426. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_cli.py +0 -0
  427. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_config.py +0 -0
  428. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_config_cmd.py +0 -0
  429. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_daemon.py +0 -0
  430. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_diarization.py +0 -0
  431. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_diarize_live_session.py +0 -0
  432. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_docs_gen.py +0 -0
  433. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_env_vars.py +0 -0
  434. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_faster_whisper_backend.py +0 -0
  435. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_json_output.py +0 -0
  436. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_llm.py +0 -0
  437. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_llm_gemini.py +0 -0
  438. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_macos_app.py +0 -0
  439. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_memory_tools.py +0 -0
  440. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_mlx_backend.py +0 -0
  441. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_nemo_backend.py +0 -0
  442. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_normalize_appcast.py +0 -0
  443. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_process_manager.py +0 -0
  444. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_proxy_diarization.py +0 -0
  445. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_requires_extras.py +0 -0
  446. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_server_streaming.py +0 -0
  447. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_server_tts.py +0 -0
  448. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_server_tts_wyoming.py +0 -0
  449. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_server_whisper.py +0 -0
  450. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_server_whisper_wyoming.py +0 -0
  451. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_services.py +0 -0
  452. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_speaker_identity.py +0 -0
  453. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_tools.py +0 -0
  454. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_transformers_backend.py +0 -0
  455. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_tts.py +0 -0
  456. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_utils.py +0 -0
  457. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_wake_word.py +0 -0
  458. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_whisper_backend_audio.py +0 -0
  459. {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_wyoming_utils.py +0 -0
  460. {agent_cli-0.107.0 → agent_cli-0.107.1}/uv.lock +0 -0
  461. {agent_cli-0.107.0 → agent_cli-0.107.1}/zensical.toml +0 -0
@@ -52,7 +52,7 @@ jobs:
52
52
  uses: docker/setup-buildx-action@v4.4.1
53
53
 
54
54
  - name: Log in to Container Registry
55
- uses: docker/login-action@v4.5.1
55
+ uses: docker/login-action@v4.5.2
56
56
  with:
57
57
  registry: ${{ env.REGISTRY }}
58
58
  username: ${{ github.actor }}
@@ -125,7 +125,7 @@ jobs:
125
125
  uses: docker/setup-buildx-action@v4.4.1
126
126
 
127
127
  - name: Log in to Container Registry
128
- uses: docker/login-action@v4.5.1
128
+ uses: docker/login-action@v4.5.2
129
129
  with:
130
130
  registry: ${{ env.REGISTRY }}
131
131
  username: ${{ github.actor }}
@@ -178,7 +178,7 @@ jobs:
178
178
  df -h
179
179
 
180
180
  - name: Log in to Container Registry
181
- uses: docker/login-action@v4.5.1
181
+ uses: docker/login-action@v4.5.2
182
182
  with:
183
183
  registry: ${{ env.REGISTRY }}
184
184
  username: ${{ github.actor }}
@@ -32,7 +32,7 @@ jobs:
32
32
  lfs: true
33
33
 
34
34
  - name: Install uv
35
- uses: astral-sh/setup-uv@v9.0.0
35
+ uses: astral-sh/setup-uv@v10.0.0
36
36
 
37
37
  - name: Set up Python
38
38
  run: uv python install 3.12
@@ -22,7 +22,7 @@ jobs:
22
22
  python-version: "3.13.11"
23
23
 
24
24
  - name: Install uv
25
- uses: astral-sh/setup-uv@v9.0.0
25
+ uses: astral-sh/setup-uv@v10.0.0
26
26
 
27
27
  - name: Run markdown-code-runner
28
28
  env:
@@ -27,7 +27,7 @@ jobs:
27
27
  if: matrix.os == 'ubuntu-latest'
28
28
  run: sudo apt-get update && sudo apt-get install -y portaudio19-dev
29
29
  - name: Install uv
30
- uses: astral-sh/setup-uv@v9.0.0
30
+ uses: astral-sh/setup-uv@v10.0.0
31
31
  - name: Run macOS app Swift tests
32
32
  if: matrix.os == 'macos-latest' && matrix.python-version == '3.13'
33
33
  run: swift test --package-path macos/AgentCLI --enable-xctest
@@ -9,6 +9,6 @@ jobs:
9
9
  update_release_draft:
10
10
  runs-on: ubuntu-latest
11
11
  steps:
12
- - uses: release-drafter/release-drafter@v7.6.0
12
+ - uses: release-drafter/release-drafter@v7.7.0
13
13
  env:
14
14
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -16,7 +16,7 @@ jobs:
16
16
  steps:
17
17
  - uses: actions/checkout@v7.0.1
18
18
  - name: Install uv
19
- uses: astral-sh/setup-uv@v9.0.0
19
+ uses: astral-sh/setup-uv@v10.0.0
20
20
  - name: Build
21
21
  run: uv build
22
22
  - name: Publish package distributions to PyPI
@@ -31,7 +31,7 @@ jobs:
31
31
  steps:
32
32
  - uses: actions/checkout@v7.0.1
33
33
  - name: Install uv
34
- uses: astral-sh/setup-uv@v9.0.0
34
+ uses: astral-sh/setup-uv@v10.0.0
35
35
  - name: Import Developer ID certificate
36
36
  uses: apple-actions/import-codesign-certs@v7.0.0
37
37
  with:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: agent-cli
3
- Version: 0.107.0
3
+ Version: 0.107.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>
@@ -51,7 +51,7 @@ RUN uv sync --frozen --no-dev --no-editable --extra server --extra piper --extra
51
51
  # =============================================================================
52
52
  # CUDA target: GPU-accelerated with Kokoro TTS
53
53
  # =============================================================================
54
- FROM nvcr.io/nvidia/cuda:12.9.1-cudnn-runtime-ubuntu24.04 AS cuda
54
+ FROM nvcr.io/nvidia/cuda:12.9.2-cudnn-runtime-ubuntu24.04 AS cuda
55
55
 
56
56
  COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
57
57
 
@@ -31,7 +31,7 @@ RUN uv sync --frozen --no-dev --no-editable --extra server --extra faster-whispe
31
31
  # =============================================================================
32
32
  # CUDA target: GPU-accelerated with faster-whisper
33
33
  # =============================================================================
34
- FROM nvcr.io/nvidia/cuda:12.9.1-cudnn-runtime-ubuntu24.04 AS cuda
34
+ FROM nvcr.io/nvidia/cuda:12.9.2-cudnn-runtime-ubuntu24.04 AS cuda
35
35
 
36
36
  COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
37
37
 
@@ -14,8 +14,8 @@
14
14
  "kind" : "remoteSourceControl",
15
15
  "location" : "https://github.com/sparkle-project/Sparkle",
16
16
  "state" : {
17
- "revision" : "b6496a74a087257ef5e6da1c5b29a447a60f5bd7",
18
- "version" : "2.9.4"
17
+ "revision" : "ac2def288cbff5cfc7df3ffef6abdf45b72bcb0a",
18
+ "version" : "2.9.6"
19
19
  }
20
20
  }
21
21
  ],
@@ -12,7 +12,7 @@ let package = Package(
12
12
  ],
13
13
  dependencies: [
14
14
  .package(url: "https://github.com/sindresorhus/KeyboardShortcuts", exact: "1.10.0"),
15
- .package(url: "https://github.com/sparkle-project/Sparkle", exact: "2.9.4"),
15
+ .package(url: "https://github.com/sparkle-project/Sparkle", exact: "2.9.6"),
16
16
  ],
17
17
  targets: [
18
18
  .executableTarget(
@@ -265,12 +265,12 @@ final class AgentCommandRunner: ObservableObject {
265
265
  Task { @MainActor in
266
266
  if shouldStartRecording {
267
267
  self.clearHoldTranscriptionState(for: command)
268
- let shouldPaste = self.shouldPasteAfterRecording(for: command) && result.exitCode == 0
268
+ let shouldPaste = self.shouldPasteAfterRecording(for: command)
269
269
  let pasteTarget = self.holdToTranscribePasteTarget
270
270
  self.endRecordingIndicator(for: command)
271
271
  self.clearStopRequested(for: command)
272
- if shouldPaste {
273
- self.pasteController.pasteTranscriptIntoFocusedField(result.output, target: pasteTarget) { message in
272
+ if shouldPaste, let pasteText = result.pasteText {
273
+ self.pasteController.pasteTranscriptIntoFocusedField(pasteText, target: pasteTarget) { message in
274
274
  self.statusMessage = message
275
275
  }
276
276
  }
@@ -53,6 +53,22 @@ private final class LoginShellPATHCache {
53
53
  typealias AgentProcessRunner = (URL, [String], [String: String]) -> CommandResult
54
54
  typealias LocalhostConnector = (UInt16) -> Bool
55
55
 
56
+ private final class ProcessDiagnosticCapture: @unchecked Sendable {
57
+ private let lock = NSLock()
58
+ private var text = ""
59
+
60
+ func read(from handle: FileHandle) {
61
+ let data = handle.readDataToEndOfFile()
62
+ lock.withLock {
63
+ text = String(decoding: data, as: UTF8.self).trimmingCharacters(in: .whitespacesAndNewlines)
64
+ }
65
+ }
66
+
67
+ var output: String {
68
+ lock.withLock { text }
69
+ }
70
+ }
71
+
56
72
  struct AgentRuntime {
57
73
  static let shared = AgentRuntime()
58
74
 
@@ -747,7 +763,7 @@ struct AgentRuntime {
747
763
  )
748
764
  guard result.exitCode == 0 else { return nil }
749
765
 
750
- return result.output
766
+ return (result.standardOutput ?? result.output)
751
767
  .split(separator: "\n")
752
768
  .last
753
769
  .map(String.init)
@@ -799,20 +815,35 @@ struct AgentRuntime {
799
815
  ) -> CommandResult {
800
816
  let task = Process()
801
817
  let pipe = Pipe()
818
+ let errorPipe = Pipe()
802
819
 
803
820
  task.executableURL = executableURL
804
821
  task.arguments = arguments
805
822
  task.environment = environment
806
823
  task.standardOutput = pipe
807
- task.standardError = pipe
824
+ task.standardError = errorPipe
808
825
 
809
826
  do {
810
827
  try task.run()
828
+ // Drain both streams concurrently so verbose diagnostics cannot fill
829
+ // stderr's pipe and block the child before it finishes stdout.
830
+ let diagnostics = ProcessDiagnosticCapture()
831
+ let readers = DispatchGroup()
832
+ readers.enter()
833
+ DispatchQueue.global(qos: .userInitiated).async {
834
+ diagnostics.read(from: errorPipe.fileHandleForReading)
835
+ readers.leave()
836
+ }
811
837
  let data = pipe.fileHandleForReading.readDataToEndOfFile()
812
838
  task.waitUntilExit()
839
+ readers.wait()
840
+ let stdout = String(decoding: data, as: UTF8.self).trimmingCharacters(in: .whitespacesAndNewlines)
841
+ let output = [stdout, diagnostics.output].filter { !$0.isEmpty }.joined(separator: "\n")
813
842
  return CommandResult(
814
843
  exitCode: task.terminationStatus,
815
- output: String(data: data, encoding: .utf8)?.trimmingCharacters(in: .whitespacesAndNewlines) ?? ""
844
+ output: output,
845
+ standardOutput: stdout,
846
+ standardError: diagnostics.output
816
847
  )
817
848
  } catch {
818
849
  return CommandResult(exitCode: 127, output: error.localizedDescription)
@@ -0,0 +1,39 @@
1
+ import Foundation
2
+
3
+ struct CommandResult {
4
+ let exitCode: Int32
5
+ let output: String
6
+ /// Unmixed stdout for child processes; nil for synthetic results.
7
+ let standardOutput: String?
8
+ let standardError: String?
9
+
10
+ init(exitCode: Int32, output: String, standardOutput: String? = nil, standardError: String? = nil) {
11
+ self.exitCode = exitCode
12
+ self.output = output
13
+ self.standardOutput = standardOutput
14
+ self.standardError = standardError
15
+ }
16
+
17
+ var pasteText: String? {
18
+ let candidates = standardOutput == nil && standardError == nil
19
+ ? [output] : [standardOutput ?? "", standardError ?? ""]
20
+ return candidates
21
+ .map { $0.trimmingCharacters(in: .whitespacesAndNewlines) }
22
+ .first { !$0.isEmpty }
23
+ }
24
+
25
+ func requiringTranscript() -> CommandResult {
26
+ guard exitCode == 0 else { return self }
27
+ let transcript = (standardOutput ?? output).trimmingCharacters(in: .whitespacesAndNewlines)
28
+ if !transcript.isEmpty {
29
+ return CommandResult(exitCode: 0, output: transcript, standardOutput: transcript, standardError: standardError)
30
+ }
31
+ return CommandResult(
32
+ exitCode: 1,
33
+ output: "No transcript returned. Check the microphone and ASR server, then try again. "
34
+ + "If a recording was saved, recover it with agent-cli transcribe --last-recording.",
35
+ standardOutput: standardOutput,
36
+ standardError: standardError
37
+ )
38
+ }
39
+ }
@@ -268,6 +268,15 @@ final class AgentCommandTests: XCTestCase {
268
268
 
269
269
  private static let shellPATHProbeSuccess = CommandResult(exitCode: 0, output: "/shell/bin\n")
270
270
 
271
+ func testLoginShellPATHIgnoresStderrWarnings() {
272
+ let runtime = makeShellPATHProbingRuntime(suiteName: "AgentCLITests.shell-path-diagnostics") {
273
+ CommandResult(exitCode: 0, output: "/shell/bin\nShell startup warning", standardOutput: "/shell/bin\n")
274
+ }
275
+ let path = runtime.commandEnvironment()["PATH"] ?? ""
276
+ XCTAssertEqual(path.split(separator: ":").first.map(String.init), "/shell/bin")
277
+ XCTAssertFalse(path.contains("Shell startup warning"))
278
+ }
279
+
271
280
  /// `zsh -lic` costs roughly a second with a real dotfiles setup, so the login shell
272
281
  /// PATH must be resolved once per runtime instead of once per spawned command.
273
282
  func testUserInstalledRuntimeCachesLoginShellPATHLookup() {
@@ -0,0 +1,76 @@
1
+ #if canImport(XCTest)
2
+ import XCTest
3
+ @testable import AgentCLI
4
+
5
+ final class TranscriptionResultTests: XCTestCase {
6
+ func testShutdownWarningsAreNotPartOfTranscript() {
7
+ let result = runShell("""
8
+ printf '%s\\n' 'Timed out after 0.50s waiting for audio stream.abort(); continuing.' >&2
9
+ printf '%s\\n' 'Timed out after 0.50s waiting for audio stream.close(); continuing.' >&2
10
+ printf '%s\\n' 'CI is failing for the proxy. Fix it.'
11
+ """).requiringTranscript()
12
+ XCTAssertEqual(result.exitCode, 0)
13
+ XCTAssertEqual(result.output, "CI is failing for the proxy. Fix it.")
14
+ XCTAssertEqual(result.pasteText, "CI is failing for the proxy. Fix it.")
15
+ }
16
+
17
+ func testWarningsAloneDoNotCountAsTranscript() {
18
+ let result = runShell("printf 'Audio shutdown warning\\n' >&2").requiringTranscript()
19
+ XCTAssertNotEqual(result.exitCode, 0)
20
+ XCTAssertTrue(result.output.contains("No transcript"))
21
+ XCTAssertEqual(result.pasteText, "Audio shutdown warning")
22
+ }
23
+
24
+ func testFailureKeepsStderrDiagnostics() {
25
+ let result = runShell("printf 'ASR connection failed\\n' >&2; exit 7").requiringTranscript()
26
+ XCTAssertEqual(result.exitCode, 7)
27
+ XCTAssertTrue(result.output.contains("ASR connection failed"))
28
+ XCTAssertEqual(result.pasteText, "ASR connection failed")
29
+ }
30
+
31
+ func testStdoutWinsOverStderrEvenWhenCommandFails() {
32
+ let result = runShell("printf 'Recognized speech\\n'; printf 'Cleanup failed\\n' >&2; exit 7")
33
+ .requiringTranscript()
34
+ XCTAssertEqual(result.exitCode, 7)
35
+ XCTAssertEqual(result.pasteText, "Recognized speech")
36
+ }
37
+
38
+ func testSilentProcessDoesNotPasteInventedTranscript() {
39
+ let result = runShell("exit 0").requiringTranscript()
40
+ XCTAssertNotEqual(result.exitCode, 0)
41
+ XCTAssertNil(result.pasteText)
42
+ }
43
+
44
+ func testLargeDiagnosticsDoNotBlockTranscriptCapture() {
45
+ let result = runShell("dd if=/dev/zero bs=65536 count=4 >&2 2>/dev/null; printf 'Hello\\n'")
46
+ .requiringTranscript()
47
+ XCTAssertEqual(result.exitCode, 0)
48
+ XCTAssertEqual(result.output, "Hello")
49
+ }
50
+
51
+ private func runShell(_ command: String) -> CommandResult {
52
+ AgentRuntime.runProcess(
53
+ executableURL: URL(fileURLWithPath: "/bin/sh"),
54
+ arguments: ["-c", command],
55
+ environment: ["PATH": "/usr/bin:/bin"]
56
+ )
57
+ }
58
+
59
+ func testEmptySuccessfulRecordingBecomesFailure() {
60
+ for output in ["", " \n\t"] {
61
+ let result = CommandResult(exitCode: 0, output: output).requiringTranscript()
62
+ XCTAssertNotEqual(result.exitCode, 0)
63
+ XCTAssertTrue(result.output.contains("No transcript"))
64
+ }
65
+ }
66
+
67
+ func testTranscriptAndBackendFailureArePreserved() {
68
+ let success = CommandResult(exitCode: 0, output: "Hello world").requiringTranscript()
69
+ XCTAssertEqual(success.exitCode, 0)
70
+ XCTAssertEqual(success.output, "Hello world")
71
+ let failure = CommandResult(exitCode: 7, output: "Connection lost").requiringTranscript()
72
+ XCTAssertEqual(failure.exitCode, 7)
73
+ XCTAssertEqual(failure.output, "Connection lost")
74
+ }
75
+ }
76
+ #endif
@@ -4,6 +4,29 @@
4
4
  <title>Agent CLI Updates</title>
5
5
  <link>https://github.com/basnijholt/agent-cli</link>
6
6
  <description>Signed Agent CLI macOS app updates.</description>
7
+ <item>
8
+ <title>0.107.0</title>
9
+ <pubDate>Mon, 21 Sep 2026 18:53:01 +0000</pubDate>
10
+ <link>https://github.com/basnijholt/agent-cli</link>
11
+ <sparkle:version>208</sparkle:version>
12
+ <sparkle:shortVersionString>0.107.0</sparkle:shortVersionString>
13
+ <sparkle:minimumSystemVersion>13.0</sparkle:minimumSystemVersion>
14
+ <sparkle:hardwareRequirements>arm64</sparkle:hardwareRequirements>
15
+ <description sparkle:format="markdown"><![CDATA[## Features
16
+
17
+ - **See transcription progress after releasing the key.** The macOS overlay stays visible with a blue spinner and “Transcribing…” label until the request completes or fails. A separate MM:SS timer shows elapsed transcription time, starting from zero when processing begins. (#651)
18
+ - **A fuller recording waveform.** The recording timer sits closer to the left edge, and wider, taller waveform bars fill the remaining pill space. (#651)
19
+
20
+ ## Bug fixes
21
+
22
+ - Keep the transcription pill compact after live-preview recordings, and restore the preview layout if a failed toggle-stop request returns to recording. (#651)
23
+ - Preserve overlay visibility across overlapping recording and transcription activity. Ignore duplicate recording-completion events so they cannot stop another active recording indicator. (#651)
24
+
25
+ **Full changelog:** https://github.com/basnijholt/agent-cli/compare/v0.106.0...v0.107.0
26
+
27
+ ]]></description>
28
+ <enclosure url="https://github.com/basnijholt/agent-cli/releases/download/v0.107.0/AgentCLI.zip" length="18871107" type="application/octet-stream" sparkle:edSignature="NBfAeYMwnrVy3ageqaHEyepstJ6EBHI6tJgwqf3UrdOH0u8zEx0pWWuKzNgv+Tq2Uu2rn6PMeiUSfuUpHl8WCw=="/>
29
+ </item>
7
30
  <item>
8
31
  <title>0.106.0</title>
9
32
  <pubDate>Mon, 21 Sep 2026 16:57:54 +0000</pubDate>
@@ -179,32 +202,5 @@
179
202
  ]]></description>
180
203
  <enclosure url="https://github.com/basnijholt/agent-cli/releases/download/v0.102.2/AgentCLI.zip" length="24329779" type="application/octet-stream" sparkle:edSignature="CeWZFIPSDJSiO8iQbm46QDRet3IYvIvgL4qSyYdDmwlTlkhV66IaXp05Wt04+xLBKTJcAv9333tA9n8BZ9IvBQ=="/>
181
204
  </item>
182
- <item>
183
- <title>0.102.1</title>
184
- <pubDate>Sat, 25 Jul 2026 18:58:28 +0000</pubDate>
185
- <link>https://github.com/basnijholt/agent-cli</link>
186
- <sparkle:version>198</sparkle:version>
187
- <sparkle:shortVersionString>0.102.1</sparkle:shortVersionString>
188
- <sparkle:minimumSystemVersion>13.0</sparkle:minimumSystemVersion>
189
- <sparkle:hardwareRequirements>arm64</sparkle:hardwareRequirements>
190
- <description sparkle:format="markdown"><![CDATA[## Bug fixes
191
-
192
- * **Transcription now starts ~1.3s sooner after pressing the hotkey.** The macOS app spawned a login + interactive shell (`zsh -lic`) to discover `PATH` on *every* command it ran, costing 1.1–1.4s with a typical dotfiles setup. The recording pill appeared immediately but the microphone did not open until that shell finished, so speaking right away lost the first words. The login shell `PATH` is now resolved once per app launch, during the existing startup warm-up. Measured hotkey to first audio chunk: ~1.8s → ~0.4–0.6s. (#622)
193
- * Only successful lookups are cached, so a login shell that fails once does not leave the app on a degraded `PATH` for the rest of the session.
194
- * *Install or Update CLI* still re-probes, so a relocated `agent-cli` binary is picked up without restarting the app.
195
-
196
- ## Performance
197
-
198
- * `agent-cli` no longer reads its own distribution metadata on startup. `__version__` resolves lazily, saving ~29ms on every command. (#622)
199
-
200
- ## Maintenance
201
-
202
- * ⬆️ Update docker/login-action to v4.5.1 (#621, #619)
203
- * ⬆️ Update actions/checkout to v7.0.1 (#617)
204
- * ⬆️ Update release-drafter/release-drafter to v7.6.0 (#614)
205
- * [pre-commit.ci] pre-commit autoupdate (#616)
206
- ]]></description>
207
- <enclosure url="https://github.com/basnijholt/agent-cli/releases/download/v0.102.1/AgentCLI.zip" length="24329452" type="application/octet-stream" sparkle:edSignature="MQizz/9FfhxJGKQc6I/XXtIUBLVPh20yWi/kvfE7xBpoQGPF4yE4C0T1Ex1WpU3im/vRLrMIbZMv0+yHYTifBQ=="/>
208
- </item>
209
205
  </channel>
210
206
  </rss>
@@ -1,17 +0,0 @@
1
- import Foundation
2
-
3
- struct CommandResult {
4
- let exitCode: Int32
5
- let output: String
6
-
7
- func requiringTranscript() -> CommandResult {
8
- guard exitCode == 0, output.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty else {
9
- return self
10
- }
11
- return CommandResult(
12
- exitCode: 1,
13
- output: "No transcript returned. Check the microphone and ASR server, then try again. "
14
- + "If a recording was saved, recover it with agent-cli transcribe --last-recording."
15
- )
16
- }
17
- }
@@ -1,23 +0,0 @@
1
- #if canImport(XCTest)
2
- import XCTest
3
- @testable import AgentCLI
4
-
5
- final class TranscriptionResultTests: XCTestCase {
6
- func testEmptySuccessfulRecordingBecomesFailure() {
7
- for output in ["", " \n\t"] {
8
- let result = CommandResult(exitCode: 0, output: output).requiringTranscript()
9
- XCTAssertNotEqual(result.exitCode, 0)
10
- XCTAssertTrue(result.output.contains("No transcript"))
11
- }
12
- }
13
-
14
- func testTranscriptAndBackendFailureArePreserved() {
15
- let success = CommandResult(exitCode: 0, output: "Hello world").requiringTranscript()
16
- XCTAssertEqual(success.exitCode, 0)
17
- XCTAssertEqual(success.output, "Hello world")
18
- let failure = CommandResult(exitCode: 7, output: "Connection lost").requiringTranscript()
19
- XCTAssertEqual(failure.exitCode, 7)
20
- XCTAssertEqual(failure.output, "Connection lost")
21
- }
22
- }
23
- #endif
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes