agent-cli 0.99.0__tar.gz → 0.100.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 (451) hide show
  1. {agent_cli-0.99.0 → agent_cli-0.100.0}/.github/workflows/pytest.yml +1 -1
  2. {agent_cli-0.99.0 → agent_cli-0.100.0}/.pre-commit-config.yaml +1 -1
  3. {agent_cli-0.99.0 → agent_cli-0.100.0}/PKG-INFO +1 -1
  4. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/cli.py +5 -3
  5. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/launch.py +34 -0
  6. agent_cli-0.100.0/agent_cli/dev/terminals/cmux.py +247 -0
  7. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/terminals/registry.py +2 -0
  8. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/commands/dev.md +1 -0
  9. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Package.resolved +2 -2
  10. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Package.swift +1 -1
  11. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/appcast.xml +15 -24
  12. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/dev/test_launch.py +30 -0
  13. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/dev/test_terminals.py +295 -0
  14. {agent_cli-0.99.0 → agent_cli-0.100.0}/.claude/skills/agent-cli-dev/SKILL.md +0 -0
  15. {agent_cli-0.99.0 → agent_cli-0.100.0}/.claude/skills/agent-cli-dev/examples.md +0 -0
  16. {agent_cli-0.99.0 → agent_cli-0.100.0}/.claude-plugin/README.md +0 -0
  17. {agent_cli-0.99.0 → agent_cli-0.100.0}/.claude-plugin/marketplace.json +0 -0
  18. {agent_cli-0.99.0 → agent_cli-0.100.0}/.claude-plugin/plugin.json +0 -0
  19. {agent_cli-0.99.0 → agent_cli-0.100.0}/.claude-plugin/skills/agent-cli-dev/SKILL.md +0 -0
  20. {agent_cli-0.99.0 → agent_cli-0.100.0}/.claude-plugin/skills/agent-cli-dev/examples.md +0 -0
  21. {agent_cli-0.99.0 → agent_cli-0.100.0}/.cursorrules +0 -0
  22. {agent_cli-0.99.0 → agent_cli-0.100.0}/.dockerignore +0 -0
  23. {agent_cli-0.99.0 → agent_cli-0.100.0}/.env.example +0 -0
  24. {agent_cli-0.99.0 → agent_cli-0.100.0}/.github/logo.svg +0 -0
  25. {agent_cli-0.99.0 → agent_cli-0.100.0}/.github/release-drafter.yml +0 -0
  26. {agent_cli-0.99.0 → agent_cli-0.100.0}/.github/renovate.json +0 -0
  27. {agent_cli-0.99.0 → agent_cli-0.100.0}/.github/scripts/check_extras_sync.py +0 -0
  28. {agent_cli-0.99.0 → agent_cli-0.100.0}/.github/scripts/check_plugin_skill_sync.py +0 -0
  29. {agent_cli-0.99.0 → agent_cli-0.100.0}/.github/scripts/normalize_appcast.py +0 -0
  30. {agent_cli-0.99.0 → agent_cli-0.100.0}/.github/scripts/sync_extras.py +0 -0
  31. {agent_cli-0.99.0 → agent_cli-0.100.0}/.github/scripts/sync_requirements.py +0 -0
  32. {agent_cli-0.99.0 → agent_cli-0.100.0}/.github/workflows/automerge.yml +0 -0
  33. {agent_cli-0.99.0 → agent_cli-0.100.0}/.github/workflows/docker.yml +0 -0
  34. {agent_cli-0.99.0 → agent_cli-0.100.0}/.github/workflows/docs.yml +0 -0
  35. {agent_cli-0.99.0 → agent_cli-0.100.0}/.github/workflows/markdown-code-runner.yml +0 -0
  36. {agent_cli-0.99.0 → agent_cli-0.100.0}/.github/workflows/release-drafter.yml +0 -0
  37. {agent_cli-0.99.0 → agent_cli-0.100.0}/.github/workflows/release.yml +0 -0
  38. {agent_cli-0.99.0 → agent_cli-0.100.0}/.github/workflows/toc.yaml +0 -0
  39. {agent_cli-0.99.0 → agent_cli-0.100.0}/.gitignore +0 -0
  40. {agent_cli-0.99.0 → agent_cli-0.100.0}/.jscpd.json +0 -0
  41. {agent_cli-0.99.0 → agent_cli-0.100.0}/.prompts/docs-review.md +0 -0
  42. {agent_cli-0.99.0 → agent_cli-0.100.0}/.prompts/pr-review.md +0 -0
  43. {agent_cli-0.99.0 → agent_cli-0.100.0}/CLAUDE.md +0 -0
  44. {agent_cli-0.99.0 → agent_cli-0.100.0}/LICENSE +0 -0
  45. {agent_cli-0.99.0 → agent_cli-0.100.0}/LLAMA_SERVER_USAGE.md +0 -0
  46. {agent_cli-0.99.0 → agent_cli-0.100.0}/README.md +0 -0
  47. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/__init__.py +0 -0
  48. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/__main__.py +0 -0
  49. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/_extras.json +0 -0
  50. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/_overrides/nemo-whisper.txt +0 -0
  51. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/_requirements/.gitkeep +0 -0
  52. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/_requirements/audio.txt +0 -0
  53. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/_requirements/diarization.txt +0 -0
  54. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/_requirements/faster-whisper.txt +0 -0
  55. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/_requirements/kokoro.txt +0 -0
  56. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/_requirements/llm.txt +0 -0
  57. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/_requirements/memory.txt +0 -0
  58. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/_requirements/mlx-whisper.txt +0 -0
  59. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/_requirements/nemo-whisper.txt +0 -0
  60. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/_requirements/piper.txt +0 -0
  61. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/_requirements/rag.txt +0 -0
  62. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/_requirements/server.txt +0 -0
  63. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/_requirements/speed.txt +0 -0
  64. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/_requirements/vad.txt +0 -0
  65. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/_requirements/vectordb.txt +0 -0
  66. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/_requirements/whisper-transformers.txt +0 -0
  67. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/_requirements/wyoming.txt +0 -0
  68. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/_tools.py +0 -0
  69. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/agents/__init__.py +0 -0
  70. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/agents/_voice_agent_common.py +0 -0
  71. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/agents/assistant.py +0 -0
  72. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/agents/autocorrect.py +0 -0
  73. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/agents/chat.py +0 -0
  74. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/agents/diarize_live_session.py +0 -0
  75. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/agents/memory/__init__.py +0 -0
  76. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/agents/memory/add.py +0 -0
  77. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/agents/memory/proxy.py +0 -0
  78. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/agents/rag_proxy.py +0 -0
  79. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/agents/speak.py +0 -0
  80. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/agents/speakers.py +0 -0
  81. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/agents/transcribe.py +0 -0
  82. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/agents/transcribe_live.py +0 -0
  83. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/agents/voice_edit.py +0 -0
  84. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/api.py +0 -0
  85. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/cli.py +0 -0
  86. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/config.py +0 -0
  87. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/config_cmd.py +0 -0
  88. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/constants.py +0 -0
  89. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/core/__init__.py +0 -0
  90. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/core/alignment.py +0 -0
  91. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/core/audio.py +0 -0
  92. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/core/audio_format.py +0 -0
  93. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/core/chroma.py +0 -0
  94. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/core/deps.py +0 -0
  95. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/core/diarization.py +0 -0
  96. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/core/openai_proxy.py +0 -0
  97. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/core/process.py +0 -0
  98. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/core/reranker.py +0 -0
  99. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/core/speaker_identity.py +0 -0
  100. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/core/sse.py +0 -0
  101. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/core/transcription_logger.py +0 -0
  102. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/core/utils.py +0 -0
  103. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/core/vad.py +0 -0
  104. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/core/watch.py +0 -0
  105. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/daemon/__init__.py +0 -0
  106. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/daemon/cli.py +0 -0
  107. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/__init__.py +0 -0
  108. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/_branch_name.py +0 -0
  109. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/_config.py +0 -0
  110. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/_output.py +0 -0
  111. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/cleanup.py +0 -0
  112. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/coding_agents/__init__.py +0 -0
  113. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/coding_agents/aider.py +0 -0
  114. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/coding_agents/base.py +0 -0
  115. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/coding_agents/claude.py +0 -0
  116. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/coding_agents/codex.py +0 -0
  117. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/coding_agents/continue_dev.py +0 -0
  118. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/coding_agents/copilot.py +0 -0
  119. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/coding_agents/cursor_agent.py +0 -0
  120. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/coding_agents/gemini.py +0 -0
  121. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/coding_agents/opencode.py +0 -0
  122. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/coding_agents/registry.py +0 -0
  123. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/editors/__init__.py +0 -0
  124. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/editors/base.py +0 -0
  125. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/editors/cursor.py +0 -0
  126. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/editors/emacs.py +0 -0
  127. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/editors/jetbrains.py +0 -0
  128. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/editors/nano.py +0 -0
  129. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/editors/neovim.py +0 -0
  130. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/editors/registry.py +0 -0
  131. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/editors/sublime.py +0 -0
  132. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/editors/vim.py +0 -0
  133. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/editors/vscode.py +0 -0
  134. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/editors/zed.py +0 -0
  135. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/hooks.py +0 -0
  136. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/project.py +0 -0
  137. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/registry.py +0 -0
  138. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/skill/SKILL.md +0 -0
  139. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/skill/examples.md +0 -0
  140. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/terminals/__init__.py +0 -0
  141. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/terminals/apple_terminal.py +0 -0
  142. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/terminals/base.py +0 -0
  143. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/terminals/gnome.py +0 -0
  144. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/terminals/iterm2.py +0 -0
  145. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/terminals/kitty.py +0 -0
  146. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/terminals/tmux.py +0 -0
  147. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/terminals/warp.py +0 -0
  148. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/terminals/zellij.py +0 -0
  149. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/dev/worktree.py +0 -0
  150. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/docs_gen.py +0 -0
  151. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/example-config.toml +0 -0
  152. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/install/__init__.py +0 -0
  153. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/install/common.py +0 -0
  154. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/install/extras.py +0 -0
  155. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/install/hotkeys.py +0 -0
  156. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/install/launchd.py +0 -0
  157. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/install/service_config.py +0 -0
  158. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/install/services.py +0 -0
  159. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/install/systemd.py +0 -0
  160. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/memory/__init__.py +0 -0
  161. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/memory/_files.py +0 -0
  162. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/memory/_filters.py +0 -0
  163. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/memory/_git.py +0 -0
  164. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/memory/_indexer.py +0 -0
  165. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/memory/_ingest.py +0 -0
  166. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/memory/_persistence.py +0 -0
  167. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/memory/_prompt.py +0 -0
  168. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/memory/_retrieval.py +0 -0
  169. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/memory/_store.py +0 -0
  170. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/memory/_streaming.py +0 -0
  171. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/memory/_tasks.py +0 -0
  172. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/memory/api.py +0 -0
  173. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/memory/client.py +0 -0
  174. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/memory/engine.py +0 -0
  175. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/memory/entities.py +0 -0
  176. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/memory/models.py +0 -0
  177. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/opts.py +0 -0
  178. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/py.typed +0 -0
  179. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/rag/__init__.py +0 -0
  180. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/rag/_indexer.py +0 -0
  181. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/rag/_indexing.py +0 -0
  182. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/rag/_prompt.py +0 -0
  183. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/rag/_retriever.py +0 -0
  184. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/rag/_store.py +0 -0
  185. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/rag/_utils.py +0 -0
  186. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/rag/api.py +0 -0
  187. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/rag/client.py +0 -0
  188. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/rag/engine.py +0 -0
  189. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/rag/models.py +0 -0
  190. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/scripts/.runtime/.gitkeep +0 -0
  191. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/scripts/__init__.py +0 -0
  192. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/scripts/linux-hotkeys/README.md +0 -0
  193. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh +0 -0
  194. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh +0 -0
  195. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/scripts/linux-hotkeys/toggle-voice-edit.sh +0 -0
  196. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/scripts/macos-hotkeys/README.md +0 -0
  197. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/scripts/macos-hotkeys/skhd-config-example +0 -0
  198. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/scripts/macos-hotkeys/toggle-autocorrect.sh +0 -0
  199. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/scripts/macos-hotkeys/toggle-transcription.sh +0 -0
  200. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/scripts/macos-hotkeys/toggle-voice-edit.sh +0 -0
  201. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/scripts/nvidia-asr-server/README.md +0 -0
  202. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/scripts/nvidia-asr-server/pyproject.toml +0 -0
  203. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/scripts/nvidia-asr-server/server.py +0 -0
  204. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/scripts/nvidia-asr-server/shell.nix +0 -0
  205. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/scripts/nvidia-asr-server/uv.lock +0 -0
  206. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/scripts/run-openwakeword.sh +0 -0
  207. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/scripts/setup-linux-hotkeys.sh +0 -0
  208. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/scripts/setup-linux.sh +0 -0
  209. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/scripts/setup-macos-hotkeys.sh +0 -0
  210. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/scripts/setup-macos.sh +0 -0
  211. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/scripts/setup-windows.ps1 +0 -0
  212. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/scripts/start-all-services-windows.ps1 +0 -0
  213. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/scripts/start-all-services.sh +0 -0
  214. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/server/__init__.py +0 -0
  215. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/server/cli.py +0 -0
  216. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/server/common.py +0 -0
  217. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/server/model_manager.py +0 -0
  218. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/server/model_registry.py +0 -0
  219. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/server/proxy/__init__.py +0 -0
  220. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/server/proxy/api.py +0 -0
  221. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/server/streaming.py +0 -0
  222. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/server/tts/__init__.py +0 -0
  223. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/server/tts/api.py +0 -0
  224. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/server/tts/backends/__init__.py +0 -0
  225. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/server/tts/backends/base.py +0 -0
  226. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/server/tts/backends/kokoro.py +0 -0
  227. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/server/tts/backends/piper.py +0 -0
  228. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/server/tts/model_manager.py +0 -0
  229. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/server/tts/model_registry.py +0 -0
  230. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/server/tts/wyoming_handler.py +0 -0
  231. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/server/whisper/__init__.py +0 -0
  232. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/server/whisper/api.py +0 -0
  233. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/server/whisper/backends/__init__.py +0 -0
  234. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/server/whisper/backends/base.py +0 -0
  235. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/server/whisper/backends/faster_whisper.py +0 -0
  236. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/server/whisper/backends/mlx.py +0 -0
  237. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/server/whisper/backends/nemo.py +0 -0
  238. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/server/whisper/backends/transformers.py +0 -0
  239. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/server/whisper/languages.py +0 -0
  240. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/server/whisper/model_manager.py +0 -0
  241. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/server/whisper/model_registry.py +0 -0
  242. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/server/whisper/wyoming_handler.py +0 -0
  243. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/services/__init__.py +0 -0
  244. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/services/_wyoming_utils.py +0 -0
  245. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/services/asr.py +0 -0
  246. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/services/llm.py +0 -0
  247. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/services/tts.py +0 -0
  248. {agent_cli-0.99.0 → agent_cli-0.100.0}/agent_cli/services/wake_word.py +0 -0
  249. {agent_cli-0.99.0 → agent_cli-0.100.0}/docker/docker-compose.yml +0 -0
  250. {agent_cli-0.99.0 → agent_cli-0.100.0}/docker/memory-proxy.Dockerfile +0 -0
  251. {agent_cli-0.99.0 → agent_cli-0.100.0}/docker/rag-proxy.Dockerfile +0 -0
  252. {agent_cli-0.99.0 → agent_cli-0.100.0}/docker/transcribe-proxy.Dockerfile +0 -0
  253. {agent_cli-0.99.0 → agent_cli-0.100.0}/docker/tts.Dockerfile +0 -0
  254. {agent_cli-0.99.0 → agent_cli-0.100.0}/docker/whisper.Dockerfile +0 -0
  255. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/CNAME +0 -0
  256. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/architecture/index.md +0 -0
  257. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/architecture/memory.md +0 -0
  258. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/architecture/rag.md +0 -0
  259. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/commands/assistant.md +0 -0
  260. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/commands/autocorrect.md +0 -0
  261. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/commands/chat.md +0 -0
  262. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/commands/config.md +0 -0
  263. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/commands/daemon.md +0 -0
  264. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/commands/diarize-live-session.md +0 -0
  265. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/commands/index.md +0 -0
  266. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/commands/install-extras.md +0 -0
  267. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/commands/install-hotkeys.md +0 -0
  268. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/commands/install-services.md +0 -0
  269. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/commands/memory.md +0 -0
  270. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/commands/rag-proxy.md +0 -0
  271. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/commands/server/index.md +0 -0
  272. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/commands/server/transcribe-proxy.md +0 -0
  273. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/commands/server/tts.md +0 -0
  274. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/commands/server/whisper.md +0 -0
  275. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/commands/speak.md +0 -0
  276. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/commands/speakers.md +0 -0
  277. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/commands/start-services.md +0 -0
  278. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/commands/transcribe-live.md +0 -0
  279. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/commands/transcribe.md +0 -0
  280. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/commands/voice-edit.md +0 -0
  281. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/configuration.md +0 -0
  282. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/getting-started.md +0 -0
  283. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/iOS_Shortcut_Guide.md +0 -0
  284. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/index.md +0 -0
  285. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/installation/docker.md +0 -0
  286. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/installation/index.md +0 -0
  287. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/installation/linux.md +0 -0
  288. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/installation/macos-app.md +0 -0
  289. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/installation/macos.md +0 -0
  290. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/installation/nixos.md +0 -0
  291. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/installation/windows.md +0 -0
  292. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/logo-avatar.svg +0 -0
  293. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/logo-clean.svg +0 -0
  294. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
  295. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/run_markdown_code_runner.py +0 -0
  296. {agent_cli-0.99.0 → agent_cli-0.100.0}/docs/system-integration.md +0 -0
  297. {agent_cli-0.99.0 → agent_cli-0.100.0}/example.agent-cli-config.toml +0 -0
  298. {agent_cli-0.99.0 → agent_cli-0.100.0}/justfile +0 -0
  299. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/README.md +0 -0
  300. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Resources/AgentCLI.entitlements +0 -0
  301. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Resources/Info.plist +0 -0
  302. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Resources/dmg-background.svg +0 -0
  303. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Sources/AgentCLI/AgentCLIApp.swift +0 -0
  304. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Sources/AgentCLI/AgentCommand.swift +0 -0
  305. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Sources/AgentCLI/AgentCommandRunner.swift +0 -0
  306. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Sources/AgentCLI/AgentRuntime.swift +0 -0
  307. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Sources/AgentCLI/AppDelegate.swift +0 -0
  308. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Sources/AgentCLI/AppMetadata.swift +0 -0
  309. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Sources/AgentCLI/AppUpdater.swift +0 -0
  310. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Sources/AgentCLI/BootstrapState.swift +0 -0
  311. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Sources/AgentCLI/CommandResult.swift +0 -0
  312. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Sources/AgentCLI/ConfigurableHotkeyController.swift +0 -0
  313. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Sources/AgentCLI/FocusedTextTarget.swift +0 -0
  314. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Sources/AgentCLI/LiveTranscriptionPreview.swift +0 -0
  315. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Sources/AgentCLI/LoginItemController.swift +0 -0
  316. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Sources/AgentCLI/MenuActivityStatus.swift +0 -0
  317. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Sources/AgentCLI/MenuActivityStatusRow.swift +0 -0
  318. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Sources/AgentCLI/MenuActivityTracker.swift +0 -0
  319. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Sources/AgentCLI/MenuBarIcon.swift +0 -0
  320. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Sources/AgentCLI/RecentTranscriptionReader.swift +0 -0
  321. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Sources/AgentCLI/RecordingIndicatorController.swift +0 -0
  322. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Sources/AgentCLI/RecordingSoundSettings.swift +0 -0
  323. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Sources/AgentCLI/RuntimeSettings.swift +0 -0
  324. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Sources/AgentCLI/SettingsWindowController.swift +0 -0
  325. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Sources/AgentCLI/Shortcuts.swift +0 -0
  326. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Sources/AgentCLI/StatusMenuController.swift +0 -0
  327. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Sources/AgentCLI/TranscriptPasteController.swift +0 -0
  328. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Sources/AgentCLI/TranscriptionSettings.swift +0 -0
  329. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Sources/AgentCLI/VoiceLevelOverlay.swift +0 -0
  330. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Tests/AgentCLITests/AgentCommandTests.swift +0 -0
  331. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Tests/AgentCLITests/ConfigurableHotkeyControllerTests.swift +0 -0
  332. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Tests/AgentCLITests/LivePreviewSwiftTestingTests.swift +0 -0
  333. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Tests/AgentCLITests/LiveTranscriptionPreviewTests.swift +0 -0
  334. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Tests/AgentCLITests/LoginItemControllerTests.swift +0 -0
  335. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Tests/AgentCLITests/RecentTranscriptionReaderTests.swift +0 -0
  336. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Tests/AgentCLITests/RecordingIndicatorControllerTests.swift +0 -0
  337. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Tests/AgentCLITests/ShortcutDefaultsTests.swift +0 -0
  338. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/AgentCLI/Tests/AgentCLITests/VoiceLevelMeterTests.swift +0 -0
  339. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/build-macos-app.sh +0 -0
  340. {agent_cli-0.99.0 → agent_cli-0.100.0}/macos/test-macos-app-e2e.sh +0 -0
  341. {agent_cli-0.99.0 → agent_cli-0.100.0}/pyproject.toml +0 -0
  342. {agent_cli-0.99.0 → agent_cli-0.100.0}/reddit.md +0 -0
  343. {agent_cli-0.99.0 → agent_cli-0.100.0}/shell.nix +0 -0
  344. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/__init__.py +0 -0
  345. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/agents/__init__.py +0 -0
  346. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/agents/test_fix_my_text.py +0 -0
  347. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/agents/test_interactive.py +0 -0
  348. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/agents/test_interactive_extra.py +0 -0
  349. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/agents/test_memory_add.py +0 -0
  350. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/agents/test_speak.py +0 -0
  351. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/agents/test_speak_e2e.py +0 -0
  352. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/agents/test_speakers.py +0 -0
  353. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/agents/test_transcribe.py +0 -0
  354. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/agents/test_transcribe_agent.py +0 -0
  355. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/agents/test_transcribe_e2e.py +0 -0
  356. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/agents/test_transcribe_live.py +0 -0
  357. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/agents/test_transcribe_recovery.py +0 -0
  358. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/agents/test_tts_common.py +0 -0
  359. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/agents/test_tts_common_extra.py +0 -0
  360. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/agents/test_voice_agent_common.py +0 -0
  361. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/agents/test_voice_edit.py +0 -0
  362. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/agents/test_voice_edit_e2e.py +0 -0
  363. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/agents/test_wake_word_assistant.py +0 -0
  364. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/conftest.py +0 -0
  365. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/core/__init__.py +0 -0
  366. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/core/test_audio.py +0 -0
  367. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/core/test_audio_format.py +0 -0
  368. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/core/test_audio_levels.py +0 -0
  369. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/core/test_chroma.py +0 -0
  370. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/core/test_sse.py +0 -0
  371. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/core/test_vad.py +0 -0
  372. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/core/test_watch.py +0 -0
  373. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/dev/__init__.py +0 -0
  374. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/dev/test_cleanup.py +0 -0
  375. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/dev/test_cli.py +0 -0
  376. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/dev/test_coding_agents.py +0 -0
  377. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/dev/test_editors.py +0 -0
  378. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/dev/test_hooks.py +0 -0
  379. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/dev/test_project.py +0 -0
  380. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/dev/test_verification.py +0 -0
  381. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/dev/test_worktree.py +0 -0
  382. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/install/__init__.py +0 -0
  383. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/install/test_extras.py +0 -0
  384. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/install/test_launchd.py +0 -0
  385. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/memory/__init__.py +0 -0
  386. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/memory/test_api_health.py +0 -0
  387. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/memory/test_api_integration_liveish.py +0 -0
  388. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/memory/test_client.py +0 -0
  389. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/memory/test_engine.py +0 -0
  390. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/memory/test_files.py +0 -0
  391. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/memory/test_filters.py +0 -0
  392. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/memory/test_git_integration.py +0 -0
  393. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/memory/test_indexer.py +0 -0
  394. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/memory/test_memory_integration.py +0 -0
  395. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/memory/test_proxy_passthrough.py +0 -0
  396. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/memory/test_store.py +0 -0
  397. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/memory/test_utils.py +0 -0
  398. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/mocks/__init__.py +0 -0
  399. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/mocks/audio.py +0 -0
  400. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/mocks/llm.py +0 -0
  401. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/mocks/wyoming.py +0 -0
  402. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/rag/__init__.py +0 -0
  403. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/rag/test_api.py +0 -0
  404. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/rag/test_engine.py +0 -0
  405. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/rag/test_history.py +0 -0
  406. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/rag/test_indexer.py +0 -0
  407. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/rag/test_indexing.py +0 -0
  408. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/rag/test_rag_client.py +0 -0
  409. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/rag/test_rag_integration_liveish.py +0 -0
  410. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/rag/test_rag_proxy_passthrough.py +0 -0
  411. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/rag/test_retriever.py +0 -0
  412. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/rag/test_store.py +0 -0
  413. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/rag/test_utils.py +0 -0
  414. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_alignment.py +0 -0
  415. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_api.py +0 -0
  416. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_api_integration.py +0 -0
  417. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_asr.py +0 -0
  418. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_asr_recovery.py +0 -0
  419. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_audio_e2e.py +0 -0
  420. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_cli.py +0 -0
  421. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_config.py +0 -0
  422. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_config_cmd.py +0 -0
  423. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_daemon.py +0 -0
  424. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_diarization.py +0 -0
  425. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_diarize_live_session.py +0 -0
  426. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_docs_gen.py +0 -0
  427. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_env_vars.py +0 -0
  428. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_faster_whisper_backend.py +0 -0
  429. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_json_output.py +0 -0
  430. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_llm.py +0 -0
  431. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_llm_gemini.py +0 -0
  432. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_macos_app.py +0 -0
  433. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_memory_tools.py +0 -0
  434. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_mlx_backend.py +0 -0
  435. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_nemo_backend.py +0 -0
  436. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_normalize_appcast.py +0 -0
  437. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_process_manager.py +0 -0
  438. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_requires_extras.py +0 -0
  439. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_server_streaming.py +0 -0
  440. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_server_tts.py +0 -0
  441. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_server_whisper.py +0 -0
  442. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_services.py +0 -0
  443. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_speaker_identity.py +0 -0
  444. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_tools.py +0 -0
  445. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_transformers_backend.py +0 -0
  446. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_tts.py +0 -0
  447. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_utils.py +0 -0
  448. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_wake_word.py +0 -0
  449. {agent_cli-0.99.0 → agent_cli-0.100.0}/tests/test_wyoming_utils.py +0 -0
  450. {agent_cli-0.99.0 → agent_cli-0.100.0}/uv.lock +0 -0
  451. {agent_cli-0.99.0 → agent_cli-0.100.0}/zensical.toml +0 -0
@@ -43,6 +43,6 @@ jobs:
43
43
  run: uv run --extra audio --extra diarization --extra llm --extra rag --extra memory --extra vad --extra faster-whisper --extra piper --extra kokoro --extra server --extra speed --extra test pytest -vvv
44
44
  - name: Upload coverage reports to Codecov
45
45
  if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.13'
46
- uses: codecov/codecov-action@v6.0.1
46
+ uses: codecov/codecov-action@v7.0.0
47
47
  env:
48
48
  CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
@@ -11,7 +11,7 @@ repos:
11
11
  - id: end-of-file-fixer
12
12
  - id: mixed-line-ending
13
13
  - repo: https://github.com/astral-sh/ruff-pre-commit
14
- rev: "v0.15.15"
14
+ rev: "v0.15.16"
15
15
  hooks:
16
16
  - id: ruff
17
17
  args: ["--fix"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-cli
3
- Version: 0.99.0
3
+ Version: 0.100.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>
@@ -618,11 +618,13 @@ def new(
618
618
  summary_lines.append(
619
619
  f"[bold]Agent Handle:[/bold] {agent_handle.handle} ({agent_handle.terminal_name})",
620
620
  )
621
- if agent_handle.session_name:
621
+ if agent_handle.session_name and agent_handle.terminal_name == "tmux":
622
622
  summary_lines.append(f"[bold]tmux Session:[/bold] {agent_handle.session_name}")
623
623
  summary_lines.append(
624
624
  f"[bold]Attach:[/bold] tmux attach -t {shlex.quote(agent_handle.session_name)}",
625
625
  )
626
+ elif agent_handle.session_name and agent_handle.terminal_name == "cmux":
627
+ summary_lines.append(f"[bold]cmux Workspace:[/bold] {agent_handle.session_name}")
626
628
 
627
629
  console.print()
628
630
  console.print(
@@ -1146,7 +1148,7 @@ def start_agent(
1146
1148
  f"{handle.terminal_name} handle: {handle.handle}"
1147
1149
  + (
1148
1150
  f" (attach with: tmux attach -t {shlex.quote(handle.session_name)})"
1149
- if handle.session_name
1151
+ if handle.session_name and handle.terminal_name == "tmux"
1150
1152
  else ""
1151
1153
  ),
1152
1154
  )
@@ -1280,7 +1282,7 @@ def list_terminals_cmd(
1280
1282
  ) -> None:
1281
1283
  """List available terminal multiplexers and their status.
1282
1284
 
1283
- Shows supported terminals: tmux, zellij, kitty, iTerm2, Terminal.app,
1285
+ Shows supported terminals: tmux, zellij, cmux, kitty, iTerm2, Terminal.app,
1284
1286
  Warp, GNOME Terminal.
1285
1287
 
1286
1288
  These are used to open new tabs when launching AI agents with `dev new --start-agent`.
@@ -321,6 +321,36 @@ def _launch_in_tmux(
321
321
  return handle
322
322
 
323
323
 
324
+ def _launch_in_cmux(
325
+ path: Path,
326
+ agent: CodingAgent,
327
+ terminal: terminals.Terminal,
328
+ full_cmd: str,
329
+ tab_name: str,
330
+ repo_root: Path | None,
331
+ ) -> TerminalHandle | None:
332
+ """Launch an agent in a cmux tab inside a workspace named after the repo."""
333
+ from .terminals.cmux import Cmux # noqa: PLC0415
334
+
335
+ if not isinstance(terminal, Cmux):
336
+ warn("Could not open new tab in cmux")
337
+ return None
338
+
339
+ workspace_name = (repo_root or path).name
340
+ handle = terminal.open_in_workspace(
341
+ path,
342
+ full_cmd,
343
+ tab_name=tab_name,
344
+ workspace_name=workspace_name,
345
+ )
346
+ if handle is None:
347
+ warn("Could not open new tab in cmux")
348
+ return None
349
+
350
+ success(f"Started {agent.name} in cmux workspace {workspace_name!r}")
351
+ return handle
352
+
353
+
324
354
  def _launch_in_terminal(
325
355
  path: Path,
326
356
  agent: CodingAgent,
@@ -332,6 +362,10 @@ def _launch_in_terminal(
332
362
  tmux_session: str | None,
333
363
  ) -> tuple[bool, TerminalHandle | None]:
334
364
  """Launch an agent in the resolved terminal."""
365
+ if terminal.name == "cmux":
366
+ handle = _launch_in_cmux(path, agent, terminal, full_cmd, tab_name, repo_root)
367
+ return handle is not None, handle
368
+
335
369
  if terminal.name == "tmux":
336
370
  handle = _launch_in_tmux(
337
371
  path,
@@ -0,0 +1,247 @@
1
+ """cmux terminal adapter.
2
+
3
+ cmux (https://cmux.dev) is a Ghostty-based macOS terminal organized as
4
+ windows > workspaces > panes > surfaces (tabs), controlled via a Unix
5
+ socket through the bundled ``cmux`` CLI.
6
+
7
+ agent-cli maps repos to workspaces: each repo gets a workspace named after
8
+ it, and each worktree launch opens a new tab inside that workspace.
9
+ """
10
+
11
+ from __future__ import annotations
12
+
13
+ import hashlib
14
+ import json
15
+ import os
16
+ import shlex
17
+ import shutil
18
+ import subprocess
19
+ from typing import TYPE_CHECKING
20
+
21
+ from agent_cli.dev.worktree import get_main_repo_root
22
+
23
+ from .base import Terminal, TerminalHandle
24
+
25
+ if TYPE_CHECKING:
26
+ from pathlib import Path
27
+
28
+ # Named colors accepted by `cmux workspace-action --action set-color`.
29
+ _WORKSPACE_COLORS = (
30
+ "Red",
31
+ "Crimson",
32
+ "Orange",
33
+ "Amber",
34
+ "Olive",
35
+ "Green",
36
+ "Teal",
37
+ "Aqua",
38
+ "Blue",
39
+ "Navy",
40
+ "Indigo",
41
+ "Purple",
42
+ "Magenta",
43
+ "Rose",
44
+ "Brown",
45
+ "Charcoal",
46
+ )
47
+
48
+
49
+ class Cmux(Terminal):
50
+ """cmux - Ghostty-based terminal with workspaces for AI coding agents."""
51
+
52
+ name = "cmux"
53
+
54
+ def detect(self) -> bool:
55
+ """Detect if running inside cmux via its auto-set environment variables."""
56
+ return bool(
57
+ os.environ.get("CMUX_WORKSPACE_ID") or os.environ.get("CMUX_SURFACE_ID"),
58
+ )
59
+
60
+ def is_available(self) -> bool:
61
+ """Check if the cmux CLI is available."""
62
+ return shutil.which("cmux") is not None
63
+
64
+ def open_new_tab(
65
+ self,
66
+ path: Path,
67
+ command: str | None = None,
68
+ tab_name: str | None = None,
69
+ ) -> bool:
70
+ """Open a new tab in a workspace named after the repo containing ``path``."""
71
+ repo_root = get_main_repo_root(path)
72
+ workspace_name = (repo_root or path).name
73
+ handle = self.open_in_workspace(path, command, tab_name, workspace_name=workspace_name)
74
+ return handle is not None
75
+
76
+ def open_in_workspace(
77
+ self,
78
+ path: Path,
79
+ command: str | None = None,
80
+ tab_name: str | None = None,
81
+ *,
82
+ workspace_name: str,
83
+ ) -> TerminalHandle | None:
84
+ """Open a tab in the named cmux workspace, creating the workspace if needed.
85
+
86
+ Workspace targets are always passed explicitly because the cmux CLI
87
+ otherwise defaults to the caller's workspace (``CMUX_WORKSPACE_ID``).
88
+ """
89
+ if not self.is_available():
90
+ return None
91
+ workspaces = self._list_workspaces()
92
+ if workspaces is None:
93
+ # The cmux CLI itself failed (e.g. app not running); creating a
94
+ # workspace would fail too, or duplicate one we could not see.
95
+ return None
96
+ workspace_ref = next(
97
+ (w.get("ref") for w in workspaces if w.get("title") == workspace_name),
98
+ None,
99
+ )
100
+ if workspace_ref is None:
101
+ return self._create_workspace(path, command, tab_name, workspace_name=workspace_name)
102
+ return self._open_tab(
103
+ path,
104
+ command,
105
+ tab_name,
106
+ workspace_ref=workspace_ref,
107
+ workspace_name=workspace_name,
108
+ )
109
+
110
+ def _list_workspaces(self) -> list[dict] | None:
111
+ """List workspace dicts via the cmux CLI, or None when the CLI call fails."""
112
+ stdout = self._run(["workspace", "list", "--json"])
113
+ if stdout is None:
114
+ return None
115
+ try:
116
+ data = json.loads(stdout)
117
+ except json.JSONDecodeError:
118
+ return None
119
+ workspaces = data.get("workspaces", [])
120
+ return workspaces if isinstance(workspaces, list) else None
121
+
122
+ def _create_workspace(
123
+ self,
124
+ path: Path,
125
+ command: str | None,
126
+ tab_name: str | None,
127
+ *,
128
+ workspace_name: str,
129
+ ) -> TerminalHandle | None:
130
+ """Create a workspace whose initial tab starts in ``path`` running ``command``."""
131
+ cmd = ["workspace", "create", "--name", workspace_name, "--cwd", str(path)]
132
+ if command:
133
+ cmd.extend(["--command", command])
134
+ workspace_ref = self._parse_ok_ref(self._run(cmd), "workspace:")
135
+ if workspace_ref is None:
136
+ return None
137
+ self._run(
138
+ [
139
+ "workspace-action",
140
+ "--action",
141
+ "set-color",
142
+ "--workspace",
143
+ workspace_ref,
144
+ "--color",
145
+ self._workspace_color(workspace_name),
146
+ ],
147
+ )
148
+ if tab_name:
149
+ # The freshly created workspace has a single tab, which is its
150
+ # focused tab, so rename-tab needs no explicit surface target.
151
+ self._run(["rename-tab", "--workspace", workspace_ref, "--title", tab_name])
152
+ return TerminalHandle(
153
+ terminal_name=self.name,
154
+ handle=workspace_ref,
155
+ session_name=workspace_name,
156
+ )
157
+
158
+ def _open_tab(
159
+ self,
160
+ path: Path,
161
+ command: str | None,
162
+ tab_name: str | None,
163
+ *,
164
+ workspace_ref: str,
165
+ workspace_name: str,
166
+ ) -> TerminalHandle | None:
167
+ """Open a new tab in an existing workspace and run ``command`` in ``path``."""
168
+ surface_ref = self._parse_ok_ref(
169
+ self._run(["new-surface", "--workspace", workspace_ref]),
170
+ "surface:",
171
+ )
172
+ if surface_ref is None:
173
+ return None
174
+ if tab_name:
175
+ self._run(
176
+ [
177
+ "rename-tab",
178
+ "--workspace",
179
+ workspace_ref,
180
+ "--surface",
181
+ surface_ref,
182
+ "--title",
183
+ tab_name,
184
+ ],
185
+ )
186
+ # New surfaces don't accept a cwd/command, so type it into the shell.
187
+ # The terminal buffers the input until the shell is ready, and cmux
188
+ # turns the literal \n escape sequence into Enter.
189
+ shell_cmd = f"cd {shlex.quote(str(path))}"
190
+ if command:
191
+ shell_cmd += f" && {command}"
192
+ sent = self._run(
193
+ [
194
+ "send",
195
+ "--workspace",
196
+ workspace_ref,
197
+ "--surface",
198
+ surface_ref,
199
+ "--",
200
+ shell_cmd + "\\n",
201
+ ],
202
+ )
203
+ if sent is None:
204
+ # The command never reached the tab, so the agent is not running;
205
+ # remove the idle tab and report failure instead of a dead handle.
206
+ self._run(["close-surface", "--workspace", workspace_ref, "--surface", surface_ref])
207
+ return None
208
+ return TerminalHandle(
209
+ terminal_name=self.name,
210
+ handle=surface_ref,
211
+ session_name=workspace_name,
212
+ )
213
+
214
+ @staticmethod
215
+ def _workspace_color(workspace_name: str) -> str:
216
+ """Pick a deterministic cmux named color for a workspace."""
217
+ digest = hashlib.sha256(workspace_name.encode()).hexdigest()
218
+ return _WORKSPACE_COLORS[int(digest[:8], 16) % len(_WORKSPACE_COLORS)]
219
+
220
+ @staticmethod
221
+ def _run(args: list[str]) -> str | None:
222
+ """Run a cmux CLI command and return its stdout, or None on failure."""
223
+ env = {**os.environ, "CMUX_QUIET": "1"}
224
+ try:
225
+ result = subprocess.run(
226
+ ["cmux", *args], # noqa: S607
227
+ check=True,
228
+ capture_output=True,
229
+ text=True,
230
+ env=env,
231
+ )
232
+ except (subprocess.CalledProcessError, OSError):
233
+ return None
234
+ return result.stdout
235
+
236
+ @staticmethod
237
+ def _parse_ok_ref(stdout: str | None, prefix: str) -> str | None:
238
+ """Extract the first ``<prefix>N`` ref from an ``OK ...`` response line."""
239
+ if not stdout:
240
+ return None
241
+ for line in stdout.splitlines():
242
+ if not line.startswith("OK"):
243
+ continue
244
+ for token in line.split():
245
+ if token.startswith(prefix):
246
+ return token
247
+ return None
@@ -6,6 +6,7 @@ from agent_cli.dev.registry import Registry
6
6
 
7
7
  from .apple_terminal import AppleTerminal
8
8
  from .base import Terminal # noqa: TC001
9
+ from .cmux import Cmux
9
10
  from .gnome import GnomeTerminal
10
11
  from .iterm2 import ITerm2
11
12
  from .kitty import Kitty
@@ -18,6 +19,7 @@ from .zellij import Zellij
18
19
  _TERMINALS: list[type[Terminal]] = [
19
20
  Tmux,
20
21
  Zellij,
22
+ Cmux,
21
23
  ITerm2,
22
24
  Kitty,
23
25
  Warp,
@@ -578,6 +578,7 @@ agent-cli dev terminals [OPTIONS]
578
578
  |----------|-----------|-----------------|
579
579
  | tmux | `TMUX` env var | `tmux new-window -c <path>` |
580
580
  | Zellij | `ZELLIJ` env var | `zellij action new-tab --cwd <path>` |
581
+ | cmux | `CMUX_WORKSPACE_ID` env var | `cmux new-surface` in a workspace named after the repo (created on demand) |
581
582
  | Kitty | `KITTY_WINDOW_ID` | `kitten @ launch --type=tab` |
582
583
  | iTerm2 | `ITERM_SESSION_ID` | AppleScript |
583
584
  | Terminal.app | `TERM_PROGRAM=Apple_Terminal` | AppleScript + System Events * |
@@ -14,8 +14,8 @@
14
14
  "kind" : "remoteSourceControl",
15
15
  "location" : "https://github.com/sparkle-project/Sparkle",
16
16
  "state" : {
17
- "revision" : "6276ba2b404829d139c45ff98427cf90e2efc59b",
18
- "version" : "2.9.2"
17
+ "revision" : "d46d456107feacc80711b21847b82b07bd9fb46e",
18
+ "version" : "2.9.3"
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.2"),
15
+ .package(url: "https://github.com/sparkle-project/Sparkle", exact: "2.9.3"),
16
16
  ],
17
17
  targets: [
18
18
  .executableTarget(
@@ -4,6 +4,21 @@
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.99.0</title>
9
+ <pubDate>Fri, 05 Jun 2026 22:57:28 +0000</pubDate>
10
+ <link>https://github.com/basnijholt/agent-cli</link>
11
+ <sparkle:version>194</sparkle:version>
12
+ <sparkle:shortVersionString>0.99.0</sparkle:shortVersionString>
13
+ <sparkle:minimumSystemVersion>13.0</sparkle:minimumSystemVersion>
14
+ <sparkle:hardwareRequirements>arm64</sparkle:hardwareRequirements>
15
+ <description sparkle:format="markdown"><![CDATA[## What’s Changed
16
+
17
+ * Add live transcription preview (#571) @basnijholt
18
+
19
+ ]]></description>
20
+ <enclosure url="https://github.com/basnijholt/agent-cli/releases/download/v0.99.0/AgentCLI.zip" length="22924494" type="application/octet-stream" sparkle:edSignature="COI8nqDd0cBtOO9jw/QRmsucsxE0SPiSgNF/o+s/nv3FCjSXy0C+gZX/bIFtCYyz/DYkff+IaHaLzhw8Z5aEBQ=="/>
21
+ </item>
7
22
  <item>
8
23
  <title>0.98.5</title>
9
24
  <pubDate>Fri, 05 Jun 2026 20:33:00 +0000</pubDate>
@@ -145,29 +160,5 @@
145
160
  ]]></description>
146
161
  <enclosure url="https://github.com/basnijholt/agent-cli/releases/download/v0.97.0/AgentCLI.zip" length="22875944" type="application/octet-stream" sparkle:edSignature="HdEW62220s/A/0bHgt7ZoEN/qKRDJr0ozOZ9jUYHT/OhybqVmv6reM/cWQFyWSPEKwH7ER8/76NGOOlmIAIcCA=="/>
147
162
  </item>
148
- <item>
149
- <title>0.96.10</title>
150
- <pubDate>Wed, 03 Jun 2026 18:47:20 +0000</pubDate>
151
- <link>https://github.com/basnijholt/agent-cli</link>
152
- <sparkle:version>184</sparkle:version>
153
- <sparkle:shortVersionString>0.96.10</sparkle:shortVersionString>
154
- <sparkle:minimumSystemVersion>13.0</sparkle:minimumSystemVersion>
155
- <sparkle:hardwareRequirements>arm64</sparkle:hardwareRequirements>
156
- <description sparkle:format="markdown"><![CDATA[## What's Changed
157
- * Lazy-load cli.py top-level imports by @basnijholt in https://github.com/basnijholt/agent-cli/pull/561
158
- * Revert "Lazy-load cli.py top-level imports" by @basnijholt in https://github.com/basnijholt/agent-cli/pull/562
159
- * Clarify Homebrew tap URL in docs by @basnijholt in https://github.com/basnijholt/agent-cli/pull/563
160
- * Use short Homebrew tap command in docs by @basnijholt in https://github.com/basnijholt/agent-cli/pull/564
161
- * [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in https://github.com/basnijholt/agent-cli/pull/566
162
- * ⬆️ Pin dependencies by @renovate[bot] in https://github.com/basnijholt/agent-cli/pull/567
163
- * Update Homebrew cask install docs by @basnijholt in https://github.com/basnijholt/agent-cli/pull/569
164
- * Move Homebrew cask updates to tap repo by @basnijholt in https://github.com/basnijholt/agent-cli/pull/570
165
- * ⬆️ Update astral-sh/setup-uv action to v8.2.0 by @renovate[bot] in https://github.com/basnijholt/agent-cli/pull/568
166
-
167
-
168
- **Full Changelog**: https://github.com/basnijholt/agent-cli/compare/v0.96.9...v0.96.10
169
- ]]></description>
170
- <enclosure url="https://github.com/basnijholt/agent-cli/releases/download/v0.96.10/AgentCLI.zip" length="22739098" type="application/octet-stream" sparkle:edSignature="ts87YVB8W7EwWouoQ4UXK6UX9YUB3se9rwyd/RWiuiY18lGXz7+qgeKOUqqdtZYwqtg7HZO+4SmZKihg+gG6Bw=="/>
171
- </item>
172
163
  </channel>
173
164
  </rss>
@@ -12,6 +12,7 @@ from agent_cli.dev.launch import (
12
12
  write_prompt_to_worktree,
13
13
  )
14
14
  from agent_cli.dev.terminals import TerminalHandle
15
+ from agent_cli.dev.terminals.cmux import Cmux
15
16
  from agent_cli.dev.terminals.tmux import Tmux
16
17
 
17
18
 
@@ -194,6 +195,35 @@ class TestLaunchAgent:
194
195
  session_name="agent-cli-repo-1234",
195
196
  )
196
197
 
198
+ def test_cmux_uses_workspace_named_after_repo(self, tmp_path: Path) -> None:
199
+ """Detected cmux opens a tab in a workspace named after the repo."""
200
+ agent = MagicMock()
201
+ agent.name = "codex"
202
+ agent.launch_command.return_value = ["codex"]
203
+
204
+ cmux_terminal = Cmux()
205
+ handle = TerminalHandle("cmux", "surface:5", "repo")
206
+
207
+ with (
208
+ patch(
209
+ "agent_cli.dev.launch.terminals.detect_current_terminal",
210
+ return_value=cmux_terminal,
211
+ ),
212
+ patch.object(cmux_terminal, "is_available", return_value=True),
213
+ patch.object(cmux_terminal, "open_in_workspace", return_value=handle) as mock_open,
214
+ patch("agent_cli.dev.launch.worktree.get_main_repo_root", return_value=Path("/repo")),
215
+ patch("agent_cli.dev.launch.worktree.get_current_branch", return_value="feature"),
216
+ ):
217
+ result = launch_agent(tmp_path, agent)
218
+
219
+ assert result == handle
220
+ mock_open.assert_called_once_with(
221
+ tmp_path,
222
+ "codex",
223
+ tab_name="feature",
224
+ workspace_name="repo",
225
+ )
226
+
197
227
  def test_non_tmux_success_does_not_fall_back_to_manual_instructions(
198
228
  self,
199
229
  tmp_path: Path,