agent-cli 0.95.3__tar.gz → 0.95.4__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 (421) hide show
  1. {agent_cli-0.95.3 → agent_cli-0.95.4}/PKG-INFO +1 -1
  2. {agent_cli-0.95.3 → agent_cli-0.95.4}/macos/AgentCLI/README.md +5 -3
  3. agent_cli-0.95.4/macos/AgentCLI/Resources/dmg-background.svg +8 -0
  4. {agent_cli-0.95.3 → agent_cli-0.95.4}/macos/AgentCLI/Sources/AgentCLI/AgentCLIApp.swift +12 -1
  5. {agent_cli-0.95.3 → agent_cli-0.95.4}/macos/AgentCLI/Sources/AgentCLI/AppDelegate.swift +1 -0
  6. agent_cli-0.95.4/macos/AgentCLI/Sources/AgentCLI/LoginItemController.swift +173 -0
  7. {agent_cli-0.95.3 → agent_cli-0.95.4}/macos/AgentCLI/Sources/AgentCLI/Shortcuts.swift +23 -0
  8. agent_cli-0.95.4/macos/AgentCLI/Tests/AgentCLITests/LoginItemControllerTests.swift +25 -0
  9. {agent_cli-0.95.3 → agent_cli-0.95.4}/macos/build-macos-app.sh +94 -7
  10. {agent_cli-0.95.3 → agent_cli-0.95.4}/macos/test-macos-app-e2e.sh +9 -0
  11. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_macos_app.py +32 -0
  12. {agent_cli-0.95.3 → agent_cli-0.95.4}/.claude/skills/agent-cli-dev/SKILL.md +0 -0
  13. {agent_cli-0.95.3 → agent_cli-0.95.4}/.claude/skills/agent-cli-dev/examples.md +0 -0
  14. {agent_cli-0.95.3 → agent_cli-0.95.4}/.claude-plugin/README.md +0 -0
  15. {agent_cli-0.95.3 → agent_cli-0.95.4}/.claude-plugin/marketplace.json +0 -0
  16. {agent_cli-0.95.3 → agent_cli-0.95.4}/.claude-plugin/plugin.json +0 -0
  17. {agent_cli-0.95.3 → agent_cli-0.95.4}/.claude-plugin/skills/agent-cli-dev/SKILL.md +0 -0
  18. {agent_cli-0.95.3 → agent_cli-0.95.4}/.claude-plugin/skills/agent-cli-dev/examples.md +0 -0
  19. {agent_cli-0.95.3 → agent_cli-0.95.4}/.cursorrules +0 -0
  20. {agent_cli-0.95.3 → agent_cli-0.95.4}/.dockerignore +0 -0
  21. {agent_cli-0.95.3 → agent_cli-0.95.4}/.env.example +0 -0
  22. {agent_cli-0.95.3 → agent_cli-0.95.4}/.github/logo.svg +0 -0
  23. {agent_cli-0.95.3 → agent_cli-0.95.4}/.github/release-drafter.yml +0 -0
  24. {agent_cli-0.95.3 → agent_cli-0.95.4}/.github/renovate.json +0 -0
  25. {agent_cli-0.95.3 → agent_cli-0.95.4}/.github/scripts/check_extras_sync.py +0 -0
  26. {agent_cli-0.95.3 → agent_cli-0.95.4}/.github/scripts/check_plugin_skill_sync.py +0 -0
  27. {agent_cli-0.95.3 → agent_cli-0.95.4}/.github/scripts/sync_extras.py +0 -0
  28. {agent_cli-0.95.3 → agent_cli-0.95.4}/.github/scripts/sync_requirements.py +0 -0
  29. {agent_cli-0.95.3 → agent_cli-0.95.4}/.github/workflows/automerge.yml +0 -0
  30. {agent_cli-0.95.3 → agent_cli-0.95.4}/.github/workflows/docker.yml +0 -0
  31. {agent_cli-0.95.3 → agent_cli-0.95.4}/.github/workflows/docs.yml +0 -0
  32. {agent_cli-0.95.3 → agent_cli-0.95.4}/.github/workflows/markdown-code-runner.yml +0 -0
  33. {agent_cli-0.95.3 → agent_cli-0.95.4}/.github/workflows/pytest.yml +0 -0
  34. {agent_cli-0.95.3 → agent_cli-0.95.4}/.github/workflows/release-drafter.yml +0 -0
  35. {agent_cli-0.95.3 → agent_cli-0.95.4}/.github/workflows/release.yml +0 -0
  36. {agent_cli-0.95.3 → agent_cli-0.95.4}/.github/workflows/toc.yaml +0 -0
  37. {agent_cli-0.95.3 → agent_cli-0.95.4}/.gitignore +0 -0
  38. {agent_cli-0.95.3 → agent_cli-0.95.4}/.jscpd.json +0 -0
  39. {agent_cli-0.95.3 → agent_cli-0.95.4}/.pre-commit-config.yaml +0 -0
  40. {agent_cli-0.95.3 → agent_cli-0.95.4}/.prompts/docs-review.md +0 -0
  41. {agent_cli-0.95.3 → agent_cli-0.95.4}/.prompts/pr-review.md +0 -0
  42. {agent_cli-0.95.3 → agent_cli-0.95.4}/CLAUDE.md +0 -0
  43. {agent_cli-0.95.3 → agent_cli-0.95.4}/LICENSE +0 -0
  44. {agent_cli-0.95.3 → agent_cli-0.95.4}/LLAMA_SERVER_USAGE.md +0 -0
  45. {agent_cli-0.95.3 → agent_cli-0.95.4}/README.md +0 -0
  46. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/__init__.py +0 -0
  47. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/__main__.py +0 -0
  48. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/_extras.json +0 -0
  49. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/_requirements/.gitkeep +0 -0
  50. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/_requirements/audio.txt +0 -0
  51. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/_requirements/diarization.txt +0 -0
  52. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/_requirements/faster-whisper.txt +0 -0
  53. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/_requirements/kokoro.txt +0 -0
  54. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/_requirements/llm.txt +0 -0
  55. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/_requirements/memory.txt +0 -0
  56. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/_requirements/mlx-whisper.txt +0 -0
  57. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/_requirements/piper.txt +0 -0
  58. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/_requirements/rag.txt +0 -0
  59. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/_requirements/server.txt +0 -0
  60. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/_requirements/speed.txt +0 -0
  61. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/_requirements/vad.txt +0 -0
  62. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/_requirements/vectordb.txt +0 -0
  63. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/_requirements/whisper-transformers.txt +0 -0
  64. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/_requirements/wyoming.txt +0 -0
  65. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/_tools.py +0 -0
  66. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/agents/__init__.py +0 -0
  67. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/agents/_voice_agent_common.py +0 -0
  68. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/agents/assistant.py +0 -0
  69. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/agents/autocorrect.py +0 -0
  70. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/agents/chat.py +0 -0
  71. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/agents/diarize_live_session.py +0 -0
  72. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/agents/memory/__init__.py +0 -0
  73. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/agents/memory/add.py +0 -0
  74. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/agents/memory/proxy.py +0 -0
  75. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/agents/rag_proxy.py +0 -0
  76. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/agents/speak.py +0 -0
  77. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/agents/speakers.py +0 -0
  78. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/agents/transcribe.py +0 -0
  79. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/agents/transcribe_live.py +0 -0
  80. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/agents/voice_edit.py +0 -0
  81. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/api.py +0 -0
  82. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/cli.py +0 -0
  83. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/config.py +0 -0
  84. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/config_cmd.py +0 -0
  85. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/constants.py +0 -0
  86. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/core/__init__.py +0 -0
  87. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/core/alignment.py +0 -0
  88. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/core/audio.py +0 -0
  89. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/core/audio_format.py +0 -0
  90. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/core/chroma.py +0 -0
  91. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/core/deps.py +0 -0
  92. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/core/diarization.py +0 -0
  93. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/core/openai_proxy.py +0 -0
  94. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/core/process.py +0 -0
  95. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/core/reranker.py +0 -0
  96. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/core/speaker_identity.py +0 -0
  97. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/core/sse.py +0 -0
  98. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/core/transcription_logger.py +0 -0
  99. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/core/utils.py +0 -0
  100. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/core/vad.py +0 -0
  101. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/core/watch.py +0 -0
  102. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/daemon/__init__.py +0 -0
  103. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/daemon/cli.py +0 -0
  104. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/__init__.py +0 -0
  105. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/_branch_name.py +0 -0
  106. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/_config.py +0 -0
  107. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/_output.py +0 -0
  108. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/cleanup.py +0 -0
  109. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/cli.py +0 -0
  110. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/coding_agents/__init__.py +0 -0
  111. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/coding_agents/aider.py +0 -0
  112. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/coding_agents/base.py +0 -0
  113. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/coding_agents/claude.py +0 -0
  114. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/coding_agents/codex.py +0 -0
  115. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/coding_agents/continue_dev.py +0 -0
  116. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/coding_agents/copilot.py +0 -0
  117. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/coding_agents/cursor_agent.py +0 -0
  118. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/coding_agents/gemini.py +0 -0
  119. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/coding_agents/opencode.py +0 -0
  120. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/coding_agents/registry.py +0 -0
  121. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/editors/__init__.py +0 -0
  122. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/editors/base.py +0 -0
  123. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/editors/cursor.py +0 -0
  124. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/editors/emacs.py +0 -0
  125. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/editors/jetbrains.py +0 -0
  126. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/editors/nano.py +0 -0
  127. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/editors/neovim.py +0 -0
  128. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/editors/registry.py +0 -0
  129. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/editors/sublime.py +0 -0
  130. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/editors/vim.py +0 -0
  131. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/editors/vscode.py +0 -0
  132. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/editors/zed.py +0 -0
  133. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/hooks.py +0 -0
  134. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/launch.py +0 -0
  135. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/project.py +0 -0
  136. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/registry.py +0 -0
  137. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/skill/SKILL.md +0 -0
  138. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/skill/examples.md +0 -0
  139. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/terminals/__init__.py +0 -0
  140. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/terminals/apple_terminal.py +0 -0
  141. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/terminals/base.py +0 -0
  142. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/terminals/gnome.py +0 -0
  143. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/terminals/iterm2.py +0 -0
  144. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/terminals/kitty.py +0 -0
  145. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/terminals/registry.py +0 -0
  146. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/terminals/tmux.py +0 -0
  147. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/terminals/warp.py +0 -0
  148. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/terminals/zellij.py +0 -0
  149. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/dev/worktree.py +0 -0
  150. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/docs_gen.py +0 -0
  151. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/example-config.toml +0 -0
  152. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/install/__init__.py +0 -0
  153. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/install/common.py +0 -0
  154. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/install/extras.py +0 -0
  155. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/install/hotkeys.py +0 -0
  156. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/install/launchd.py +0 -0
  157. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/install/service_config.py +0 -0
  158. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/install/services.py +0 -0
  159. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/install/systemd.py +0 -0
  160. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/memory/__init__.py +0 -0
  161. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/memory/_files.py +0 -0
  162. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/memory/_filters.py +0 -0
  163. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/memory/_git.py +0 -0
  164. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/memory/_indexer.py +0 -0
  165. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/memory/_ingest.py +0 -0
  166. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/memory/_persistence.py +0 -0
  167. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/memory/_prompt.py +0 -0
  168. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/memory/_retrieval.py +0 -0
  169. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/memory/_store.py +0 -0
  170. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/memory/_streaming.py +0 -0
  171. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/memory/_tasks.py +0 -0
  172. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/memory/api.py +0 -0
  173. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/memory/client.py +0 -0
  174. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/memory/engine.py +0 -0
  175. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/memory/entities.py +0 -0
  176. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/memory/models.py +0 -0
  177. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/opts.py +0 -0
  178. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/py.typed +0 -0
  179. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/rag/__init__.py +0 -0
  180. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/rag/_indexer.py +0 -0
  181. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/rag/_indexing.py +0 -0
  182. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/rag/_prompt.py +0 -0
  183. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/rag/_retriever.py +0 -0
  184. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/rag/_store.py +0 -0
  185. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/rag/_utils.py +0 -0
  186. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/rag/api.py +0 -0
  187. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/rag/client.py +0 -0
  188. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/rag/engine.py +0 -0
  189. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/rag/models.py +0 -0
  190. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/scripts/.runtime/.gitkeep +0 -0
  191. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/scripts/__init__.py +0 -0
  192. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/scripts/linux-hotkeys/README.md +0 -0
  193. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh +0 -0
  194. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh +0 -0
  195. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/scripts/linux-hotkeys/toggle-voice-edit.sh +0 -0
  196. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/scripts/macos-hotkeys/README.md +0 -0
  197. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/scripts/macos-hotkeys/skhd-config-example +0 -0
  198. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/scripts/macos-hotkeys/toggle-autocorrect.sh +0 -0
  199. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/scripts/macos-hotkeys/toggle-transcription.sh +0 -0
  200. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/scripts/macos-hotkeys/toggle-voice-edit.sh +0 -0
  201. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/scripts/nvidia-asr-server/README.md +0 -0
  202. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/scripts/nvidia-asr-server/pyproject.toml +0 -0
  203. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/scripts/nvidia-asr-server/server.py +0 -0
  204. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/scripts/nvidia-asr-server/shell.nix +0 -0
  205. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/scripts/nvidia-asr-server/uv.lock +0 -0
  206. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/scripts/run-openwakeword.sh +0 -0
  207. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/scripts/setup-linux-hotkeys.sh +0 -0
  208. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/scripts/setup-linux.sh +0 -0
  209. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/scripts/setup-macos-hotkeys.sh +0 -0
  210. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/scripts/setup-macos.sh +0 -0
  211. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/scripts/setup-windows.ps1 +0 -0
  212. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/scripts/start-all-services-windows.ps1 +0 -0
  213. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/scripts/start-all-services.sh +0 -0
  214. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/server/__init__.py +0 -0
  215. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/server/cli.py +0 -0
  216. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/server/common.py +0 -0
  217. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/server/model_manager.py +0 -0
  218. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/server/model_registry.py +0 -0
  219. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/server/proxy/__init__.py +0 -0
  220. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/server/proxy/api.py +0 -0
  221. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/server/streaming.py +0 -0
  222. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/server/tts/__init__.py +0 -0
  223. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/server/tts/api.py +0 -0
  224. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/server/tts/backends/__init__.py +0 -0
  225. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/server/tts/backends/base.py +0 -0
  226. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/server/tts/backends/kokoro.py +0 -0
  227. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/server/tts/backends/piper.py +0 -0
  228. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/server/tts/model_manager.py +0 -0
  229. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/server/tts/model_registry.py +0 -0
  230. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/server/tts/wyoming_handler.py +0 -0
  231. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/server/whisper/__init__.py +0 -0
  232. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/server/whisper/api.py +0 -0
  233. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/server/whisper/backends/__init__.py +0 -0
  234. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/server/whisper/backends/base.py +0 -0
  235. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/server/whisper/backends/faster_whisper.py +0 -0
  236. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/server/whisper/backends/mlx.py +0 -0
  237. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/server/whisper/backends/transformers.py +0 -0
  238. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/server/whisper/languages.py +0 -0
  239. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/server/whisper/model_manager.py +0 -0
  240. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/server/whisper/model_registry.py +0 -0
  241. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/server/whisper/wyoming_handler.py +0 -0
  242. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/services/__init__.py +0 -0
  243. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/services/_wyoming_utils.py +0 -0
  244. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/services/asr.py +0 -0
  245. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/services/llm.py +0 -0
  246. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/services/tts.py +0 -0
  247. {agent_cli-0.95.3 → agent_cli-0.95.4}/agent_cli/services/wake_word.py +0 -0
  248. {agent_cli-0.95.3 → agent_cli-0.95.4}/docker/docker-compose.yml +0 -0
  249. {agent_cli-0.95.3 → agent_cli-0.95.4}/docker/memory-proxy.Dockerfile +0 -0
  250. {agent_cli-0.95.3 → agent_cli-0.95.4}/docker/rag-proxy.Dockerfile +0 -0
  251. {agent_cli-0.95.3 → agent_cli-0.95.4}/docker/transcribe-proxy.Dockerfile +0 -0
  252. {agent_cli-0.95.3 → agent_cli-0.95.4}/docker/tts.Dockerfile +0 -0
  253. {agent_cli-0.95.3 → agent_cli-0.95.4}/docker/whisper.Dockerfile +0 -0
  254. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/CNAME +0 -0
  255. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/architecture/index.md +0 -0
  256. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/architecture/memory.md +0 -0
  257. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/architecture/rag.md +0 -0
  258. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/commands/assistant.md +0 -0
  259. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/commands/autocorrect.md +0 -0
  260. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/commands/chat.md +0 -0
  261. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/commands/config.md +0 -0
  262. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/commands/daemon.md +0 -0
  263. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/commands/dev.md +0 -0
  264. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/commands/diarize-live-session.md +0 -0
  265. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/commands/index.md +0 -0
  266. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/commands/install-extras.md +0 -0
  267. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/commands/install-hotkeys.md +0 -0
  268. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/commands/install-services.md +0 -0
  269. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/commands/memory.md +0 -0
  270. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/commands/rag-proxy.md +0 -0
  271. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/commands/server/index.md +0 -0
  272. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/commands/server/transcribe-proxy.md +0 -0
  273. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/commands/server/tts.md +0 -0
  274. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/commands/server/whisper.md +0 -0
  275. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/commands/speak.md +0 -0
  276. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/commands/speakers.md +0 -0
  277. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/commands/start-services.md +0 -0
  278. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/commands/transcribe-live.md +0 -0
  279. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/commands/transcribe.md +0 -0
  280. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/commands/voice-edit.md +0 -0
  281. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/configuration.md +0 -0
  282. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/getting-started.md +0 -0
  283. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/iOS_Shortcut_Guide.md +0 -0
  284. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/index.md +0 -0
  285. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/installation/docker.md +0 -0
  286. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/installation/index.md +0 -0
  287. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/installation/linux.md +0 -0
  288. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/installation/macos.md +0 -0
  289. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/installation/nixos.md +0 -0
  290. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/installation/windows.md +0 -0
  291. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/logo-avatar.svg +0 -0
  292. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/logo-clean.svg +0 -0
  293. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
  294. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/run_markdown_code_runner.py +0 -0
  295. {agent_cli-0.95.3 → agent_cli-0.95.4}/docs/system-integration.md +0 -0
  296. {agent_cli-0.95.3 → agent_cli-0.95.4}/example.agent-cli-config.toml +0 -0
  297. {agent_cli-0.95.3 → agent_cli-0.95.4}/justfile +0 -0
  298. {agent_cli-0.95.3 → agent_cli-0.95.4}/macos/AgentCLI/Package.resolved +0 -0
  299. {agent_cli-0.95.3 → agent_cli-0.95.4}/macos/AgentCLI/Package.swift +0 -0
  300. {agent_cli-0.95.3 → agent_cli-0.95.4}/macos/AgentCLI/Resources/AgentCLI.entitlements +0 -0
  301. {agent_cli-0.95.3 → agent_cli-0.95.4}/macos/AgentCLI/Resources/Info.plist +0 -0
  302. {agent_cli-0.95.3 → agent_cli-0.95.4}/macos/AgentCLI/Sources/AgentCLI/AgentCommand.swift +0 -0
  303. {agent_cli-0.95.3 → agent_cli-0.95.4}/macos/AgentCLI/Sources/AgentCLI/AgentCommandRunner.swift +0 -0
  304. {agent_cli-0.95.3 → agent_cli-0.95.4}/macos/AgentCLI/Sources/AgentCLI/AgentRuntime.swift +0 -0
  305. {agent_cli-0.95.3 → agent_cli-0.95.4}/macos/AgentCLI/Sources/AgentCLI/CommandResult.swift +0 -0
  306. {agent_cli-0.95.3 → agent_cli-0.95.4}/macos/AgentCLI/Sources/AgentCLI/ConfigurableHotkeyController.swift +0 -0
  307. {agent_cli-0.95.3 → agent_cli-0.95.4}/macos/AgentCLI/Sources/AgentCLI/FocusedTextTarget.swift +0 -0
  308. {agent_cli-0.95.3 → agent_cli-0.95.4}/macos/AgentCLI/Sources/AgentCLI/MenuBarIcon.swift +0 -0
  309. {agent_cli-0.95.3 → agent_cli-0.95.4}/macos/AgentCLI/Sources/AgentCLI/RecordingIndicatorController.swift +0 -0
  310. {agent_cli-0.95.3 → agent_cli-0.95.4}/macos/AgentCLI/Sources/AgentCLI/TranscriptPasteController.swift +0 -0
  311. {agent_cli-0.95.3 → agent_cli-0.95.4}/macos/AgentCLI/Sources/AgentCLI/VoiceLevelOverlay.swift +0 -0
  312. {agent_cli-0.95.3 → agent_cli-0.95.4}/macos/AgentCLI/Tests/AgentCLITests/AgentCommandTests.swift +0 -0
  313. {agent_cli-0.95.3 → agent_cli-0.95.4}/pyproject.toml +0 -0
  314. {agent_cli-0.95.3 → agent_cli-0.95.4}/reddit.md +0 -0
  315. {agent_cli-0.95.3 → agent_cli-0.95.4}/shell.nix +0 -0
  316. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/__init__.py +0 -0
  317. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/agents/__init__.py +0 -0
  318. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/agents/test_fix_my_text.py +0 -0
  319. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/agents/test_interactive.py +0 -0
  320. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/agents/test_interactive_extra.py +0 -0
  321. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/agents/test_memory_add.py +0 -0
  322. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/agents/test_speak.py +0 -0
  323. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/agents/test_speak_e2e.py +0 -0
  324. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/agents/test_speakers.py +0 -0
  325. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/agents/test_transcribe.py +0 -0
  326. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/agents/test_transcribe_agent.py +0 -0
  327. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/agents/test_transcribe_e2e.py +0 -0
  328. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/agents/test_transcribe_live.py +0 -0
  329. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/agents/test_transcribe_recovery.py +0 -0
  330. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/agents/test_tts_common.py +0 -0
  331. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/agents/test_tts_common_extra.py +0 -0
  332. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/agents/test_voice_agent_common.py +0 -0
  333. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/agents/test_voice_edit.py +0 -0
  334. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/agents/test_voice_edit_e2e.py +0 -0
  335. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/agents/test_wake_word_assistant.py +0 -0
  336. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/conftest.py +0 -0
  337. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/core/__init__.py +0 -0
  338. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/core/test_audio.py +0 -0
  339. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/core/test_audio_format.py +0 -0
  340. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/core/test_chroma.py +0 -0
  341. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/core/test_sse.py +0 -0
  342. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/core/test_vad.py +0 -0
  343. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/core/test_watch.py +0 -0
  344. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/dev/__init__.py +0 -0
  345. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/dev/test_cleanup.py +0 -0
  346. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/dev/test_cli.py +0 -0
  347. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/dev/test_coding_agents.py +0 -0
  348. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/dev/test_editors.py +0 -0
  349. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/dev/test_hooks.py +0 -0
  350. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/dev/test_launch.py +0 -0
  351. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/dev/test_project.py +0 -0
  352. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/dev/test_terminals.py +0 -0
  353. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/dev/test_verification.py +0 -0
  354. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/dev/test_worktree.py +0 -0
  355. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/install/__init__.py +0 -0
  356. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/install/test_extras.py +0 -0
  357. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/install/test_launchd.py +0 -0
  358. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/memory/__init__.py +0 -0
  359. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/memory/test_api_health.py +0 -0
  360. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/memory/test_api_integration_liveish.py +0 -0
  361. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/memory/test_client.py +0 -0
  362. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/memory/test_engine.py +0 -0
  363. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/memory/test_files.py +0 -0
  364. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/memory/test_filters.py +0 -0
  365. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/memory/test_git_integration.py +0 -0
  366. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/memory/test_indexer.py +0 -0
  367. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/memory/test_memory_integration.py +0 -0
  368. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/memory/test_proxy_passthrough.py +0 -0
  369. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/memory/test_store.py +0 -0
  370. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/memory/test_utils.py +0 -0
  371. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/mocks/__init__.py +0 -0
  372. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/mocks/audio.py +0 -0
  373. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/mocks/llm.py +0 -0
  374. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/mocks/wyoming.py +0 -0
  375. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/rag/__init__.py +0 -0
  376. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/rag/test_api.py +0 -0
  377. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/rag/test_engine.py +0 -0
  378. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/rag/test_history.py +0 -0
  379. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/rag/test_indexer.py +0 -0
  380. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/rag/test_indexing.py +0 -0
  381. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/rag/test_rag_client.py +0 -0
  382. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/rag/test_rag_integration_liveish.py +0 -0
  383. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/rag/test_rag_proxy_passthrough.py +0 -0
  384. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/rag/test_retriever.py +0 -0
  385. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/rag/test_store.py +0 -0
  386. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/rag/test_utils.py +0 -0
  387. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_alignment.py +0 -0
  388. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_api.py +0 -0
  389. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_api_integration.py +0 -0
  390. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_asr.py +0 -0
  391. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_asr_recovery.py +0 -0
  392. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_audio_e2e.py +0 -0
  393. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_cli.py +0 -0
  394. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_config.py +0 -0
  395. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_config_cmd.py +0 -0
  396. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_daemon.py +0 -0
  397. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_diarization.py +0 -0
  398. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_diarize_live_session.py +0 -0
  399. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_docs_gen.py +0 -0
  400. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_env_vars.py +0 -0
  401. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_faster_whisper_backend.py +0 -0
  402. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_json_output.py +0 -0
  403. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_llm.py +0 -0
  404. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_llm_gemini.py +0 -0
  405. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_memory_tools.py +0 -0
  406. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_mlx_backend.py +0 -0
  407. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_process_manager.py +0 -0
  408. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_requires_extras.py +0 -0
  409. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_server_streaming.py +0 -0
  410. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_server_tts.py +0 -0
  411. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_server_whisper.py +0 -0
  412. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_services.py +0 -0
  413. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_speaker_identity.py +0 -0
  414. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_tools.py +0 -0
  415. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_transformers_backend.py +0 -0
  416. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_tts.py +0 -0
  417. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_utils.py +0 -0
  418. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_wake_word.py +0 -0
  419. {agent_cli-0.95.3 → agent_cli-0.95.4}/tests/test_wyoming_utils.py +0 -0
  420. {agent_cli-0.95.3 → agent_cli-0.95.4}/uv.lock +0 -0
  421. {agent_cli-0.95.3 → agent_cli-0.95.4}/zensical.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-cli
3
- Version: 0.95.3
3
+ Version: 0.95.4
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>
@@ -18,9 +18,11 @@ The packaged app registers native macOS global hotkeys itself:
18
18
  - `Cmd+Shift+A` autocorrects clipboard text
19
19
  - `Cmd+Shift+V` starts voice edit
20
20
 
21
- Choose **Keyboard Shortcuts...** from the menu bar app to change these
22
- shortcuts. The settings UI uses the `KeyboardShortcuts` Swift package for
23
- shortcut parsing, `UserDefaults` storage, and global key-up handlers.
21
+ Choose **Settings...** from the menu bar app to change these shortcuts or enable
22
+ **Start at Login**. The settings UI uses the `KeyboardShortcuts` Swift package
23
+ for shortcut parsing, `UserDefaults` storage, and global key-up handlers. The
24
+ login option uses Apple's login item API for the main app bundle, so macOS may
25
+ require approval in System Settings → General → Login Items.
24
26
 
25
27
  ## Build
26
28
 
@@ -0,0 +1,8 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="600" height="360" viewBox="0 0 600 360">
2
+ <rect width="600" height="360" fill="#f6f7f9"/>
3
+ <rect x="28" y="28" width="544" height="304" rx="24" fill="#ffffff" stroke="#d7dbe2"/>
4
+ <path d="M255 180h110" fill="none" stroke="#7b8494" stroke-width="10" stroke-linecap="round"/>
5
+ <path d="M335 140l40 40-40 40" fill="none" stroke="#7b8494" stroke-width="10" stroke-linecap="round" stroke-linejoin="round"/>
6
+ <text x="300" y="78" text-anchor="middle" font-family="-apple-system, BlinkMacSystemFont, Helvetica, Arial, sans-serif" font-size="24" font-weight="600" fill="#242933">Install Agent CLI</text>
7
+ <text x="300" y="112" text-anchor="middle" font-family="-apple-system, BlinkMacSystemFont, Helvetica, Arial, sans-serif" font-size="15" fill="#596171">Drag AgentCLI.app to Applications</text>
8
+ </svg>
@@ -6,6 +6,7 @@ struct AgentCLIApp: App {
6
6
  @NSApplicationDelegateAdaptor(AppDelegate.self) private var appDelegate
7
7
  @Environment(\.openWindow) private var openWindow
8
8
  @StateObject private var runner = AgentCommandRunner.shared
9
+ @StateObject private var loginItemController = LoginItemController.shared
9
10
  @StateObject private var shortcutSummary = ShortcutSummaryState.shared
10
11
 
11
12
  var body: some Scene {
@@ -38,11 +39,21 @@ struct AgentCLIApp: App {
38
39
 
39
40
  Divider()
40
41
 
42
+ Button {
43
+ loginItemController.toggle()
44
+ } label: {
45
+ Label(
46
+ loginItemController.presentation.menuTitle,
47
+ systemImage: loginItemController.presentation.isEnabled ? "checkmark.circle" : "circle"
48
+ )
49
+ }
50
+ .disabled(!loginItemController.presentation.canToggle)
51
+
41
52
  Button {
42
53
  openWindow(id: "settings")
43
54
  NSApp.activate(ignoringOtherApps: true)
44
55
  } label: {
45
- Label("Keyboard Shortcuts...", systemImage: "command")
56
+ Label("Settings...", systemImage: "gearshape")
46
57
  }
47
58
 
48
59
  Menu {
@@ -14,6 +14,7 @@ final class AppDelegate: NSObject, NSApplicationDelegate, UNUserNotificationCent
14
14
  UNUserNotificationCenter.current().delegate = self
15
15
  configureNotifications()
16
16
  ShortcutDefaultsMigrator.migrate()
17
+ LoginItemController.shared.refresh()
17
18
  ConfigurableHotkeyController.shared.registerDefaultHotkeys(runner: AgentCommandRunner.shared)
18
19
  ShortcutSummaryState.shared.refresh()
19
20
  }
@@ -0,0 +1,173 @@
1
+ import Foundation
2
+ #if canImport(ServiceManagement)
3
+ import ServiceManagement
4
+ #endif
5
+ import SwiftUI
6
+
7
+ enum LoginItemStatus: Equatable {
8
+ case notRegistered
9
+ case enabled
10
+ case requiresApproval
11
+ case notFound
12
+ case unavailable
13
+ }
14
+
15
+ struct LoginItemPresentation: Equatable {
16
+ let status: LoginItemStatus
17
+
18
+ var isEnabled: Bool {
19
+ status == .enabled
20
+ }
21
+
22
+ var canToggle: Bool {
23
+ switch status {
24
+ case .notFound, .unavailable:
25
+ return false
26
+ case .notRegistered, .enabled, .requiresApproval:
27
+ return true
28
+ }
29
+ }
30
+
31
+ var menuTitle: String {
32
+ "Start at Login: \(statusTitle)"
33
+ }
34
+
35
+ var helpText: String {
36
+ switch status {
37
+ case .requiresApproval:
38
+ return "Approve Agent CLI in System Settings > General > Login Items."
39
+ case .notFound:
40
+ return "Start at login is only available when Agent CLI is running from an app bundle."
41
+ case .unavailable:
42
+ return "Start at login is unavailable on this macOS version."
43
+ case .notRegistered, .enabled:
44
+ return ""
45
+ }
46
+ }
47
+
48
+ private var statusTitle: String {
49
+ switch status {
50
+ case .notRegistered:
51
+ return "Off"
52
+ case .enabled:
53
+ return "On"
54
+ case .requiresApproval:
55
+ return "Needs Approval"
56
+ case .notFound, .unavailable:
57
+ return "Unavailable"
58
+ }
59
+ }
60
+ }
61
+
62
+ protocol LoginItemServicing {
63
+ var status: LoginItemStatus { get }
64
+ func register() throws
65
+ func unregister() throws
66
+ }
67
+
68
+ @MainActor
69
+ final class LoginItemController: ObservableObject {
70
+ static let shared = LoginItemController(service: MainAppLoginItemService())
71
+
72
+ @Published private(set) var status: LoginItemStatus
73
+ @Published private(set) var errorMessage = ""
74
+
75
+ private let service: LoginItemServicing
76
+
77
+ var presentation: LoginItemPresentation {
78
+ LoginItemPresentation(status: status)
79
+ }
80
+
81
+ var detailText: String {
82
+ if !errorMessage.isEmpty {
83
+ return errorMessage
84
+ }
85
+ return presentation.helpText
86
+ }
87
+
88
+ init(service: LoginItemServicing) {
89
+ self.service = service
90
+ self.status = service.status
91
+ }
92
+
93
+ func refresh() {
94
+ status = service.status
95
+ }
96
+
97
+ func toggle() {
98
+ setEnabled(!presentation.isEnabled)
99
+ }
100
+
101
+ func setEnabled(_ enabled: Bool) {
102
+ do {
103
+ if enabled {
104
+ try service.register()
105
+ } else {
106
+ try service.unregister()
107
+ }
108
+ errorMessage = ""
109
+ } catch {
110
+ errorMessage = error.localizedDescription
111
+ }
112
+ refresh()
113
+ }
114
+ }
115
+
116
+ struct MainAppLoginItemService: LoginItemServicing {
117
+ var status: LoginItemStatus {
118
+ #if canImport(ServiceManagement)
119
+ if #available(macOS 13.0, *) {
120
+ return LoginItemStatus(SMAppService.mainApp.status)
121
+ }
122
+ #endif
123
+ return .unavailable
124
+ }
125
+
126
+ func register() throws {
127
+ #if canImport(ServiceManagement)
128
+ if #available(macOS 13.0, *) {
129
+ try SMAppService.mainApp.register()
130
+ return
131
+ }
132
+ #endif
133
+ throw LoginItemServiceError.unavailable
134
+ }
135
+
136
+ func unregister() throws {
137
+ #if canImport(ServiceManagement)
138
+ if #available(macOS 13.0, *) {
139
+ try SMAppService.mainApp.unregister()
140
+ return
141
+ }
142
+ #endif
143
+ throw LoginItemServiceError.unavailable
144
+ }
145
+ }
146
+
147
+ private enum LoginItemServiceError: LocalizedError {
148
+ case unavailable
149
+
150
+ var errorDescription: String? {
151
+ "Start at login is unavailable on this macOS version."
152
+ }
153
+ }
154
+
155
+ #if canImport(ServiceManagement)
156
+ @available(macOS 13.0, *)
157
+ private extension LoginItemStatus {
158
+ init(_ status: SMAppService.Status) {
159
+ switch status {
160
+ case .notRegistered:
161
+ self = .notRegistered
162
+ case .enabled:
163
+ self = .enabled
164
+ case .requiresApproval:
165
+ self = .requiresApproval
166
+ case .notFound:
167
+ self = .notFound
168
+ @unknown default:
169
+ self = .unavailable
170
+ }
171
+ }
172
+ }
173
+ #endif
@@ -149,10 +149,30 @@ enum ShortcutDefaultsMigrator {
149
149
  }
150
150
 
151
151
  struct SettingsView: View {
152
+ @ObservedObject private var loginItemController = LoginItemController.shared
152
153
  @State private var shortcutRevision = 0
153
154
 
154
155
  var body: some View {
155
156
  Form {
157
+ Section {
158
+ Toggle(
159
+ "Start at Login",
160
+ isOn: Binding(
161
+ get: { loginItemController.presentation.isEnabled },
162
+ set: { loginItemController.setEnabled($0) }
163
+ )
164
+ )
165
+ .disabled(!loginItemController.presentation.canToggle)
166
+
167
+ if !loginItemController.detailText.isEmpty {
168
+ Text(loginItemController.detailText)
169
+ .font(.footnote)
170
+ .foregroundStyle(.secondary)
171
+ }
172
+ } header: {
173
+ Text("General")
174
+ }
175
+
156
176
  Section {
157
177
  ShortcutRecorderRow(
158
178
  title: "Toggle Transcription",
@@ -187,6 +207,9 @@ struct SettingsView: View {
187
207
  }
188
208
  .formStyle(.grouped)
189
209
  .padding()
210
+ .onAppear {
211
+ loginItemController.refresh()
212
+ }
190
213
  }
191
214
  }
192
215
 
@@ -0,0 +1,25 @@
1
+ #if canImport(XCTest)
2
+ import XCTest
3
+ @testable import AgentCLI
4
+
5
+ final class LoginItemControllerTests: XCTestCase {
6
+ func testEnabledStatusIsPresentedAsOn() {
7
+ let presentation = LoginItemPresentation(status: .enabled)
8
+
9
+ XCTAssertTrue(presentation.isEnabled)
10
+ XCTAssertEqual(presentation.menuTitle, "Start at Login: On")
11
+ XCTAssertEqual(presentation.helpText, "")
12
+ }
13
+
14
+ func testRequiresApprovalIsNotPresentedAsOn() {
15
+ let presentation = LoginItemPresentation(status: .requiresApproval)
16
+
17
+ XCTAssertFalse(presentation.isEnabled)
18
+ XCTAssertEqual(presentation.menuTitle, "Start at Login: Needs Approval")
19
+ XCTAssertEqual(
20
+ presentation.helpText,
21
+ "Approve Agent CLI in System Settings > General > Login Items."
22
+ )
23
+ }
24
+ }
25
+ #endif
@@ -62,9 +62,13 @@ PACKAGE_DIR="$ROOT_DIR/macos/$APP_NAME"
62
62
  DIST_DIR="$ROOT_DIR/dist/macos"
63
63
  APP_DIR="$DIST_DIR/$APP_NAME.app"
64
64
  WHEEL_BUILD_DIR="$DIST_DIR/wheels-build"
65
+ DMG_STAGING_DIR="$DIST_DIR/dmg-staging"
66
+ DMG_RW_PATH="$DIST_DIR/$APP_NAME-rw.dmg"
65
67
  INFO_PLIST="$PACKAGE_DIR/Resources/Info.plist"
66
68
  ENTITLEMENTS_PLIST="$PACKAGE_DIR/Resources/AgentCLI.entitlements"
67
69
  MENU_BAR_LOGO_SVG="$ROOT_DIR/docs/logo-avatar.svg"
70
+ DMG_BACKGROUND_SVG="$PACKAGE_DIR/Resources/dmg-background.svg"
71
+ DMG_BACKGROUND_PNG="$DIST_DIR/dmg-background.png"
68
72
  ICONSET_DIR="$DIST_DIR/AgentCLI.iconset"
69
73
  ICON_SOURCE_PNG="$DIST_DIR/logo-avatar-source.png"
70
74
  NOTIFICATION_LOGO_PNG="$DIST_DIR/logo-avatar.png"
@@ -108,6 +112,11 @@ if [[ ! -f "$ENTITLEMENTS_PLIST" ]]; then
108
112
  exit 1
109
113
  fi
110
114
 
115
+ if [[ "$CREATE_DMG" == true && ! -f "$DMG_BACKGROUND_SVG" ]]; then
116
+ echo "AgentCLI DMG background SVG is missing: $DMG_BACKGROUND_SVG" >&2
117
+ exit 1
118
+ fi
119
+
111
120
  if [[ "$NOTARIZE" == "1" && "$CREATE_DMG" != true ]]; then
112
121
  echo "NOTARIZE=1 requires --dmg so there is a distributable artifact to notarize." >&2
113
122
  exit 1
@@ -293,6 +302,90 @@ build_app_icon() {
293
302
  rm -rf "$ICONSET_DIR"
294
303
  }
295
304
 
305
+ render_dmg_background() {
306
+ local render_dir="$DIST_DIR/dmg-background-render"
307
+ local rendered="$render_dir/$(basename "$DMG_BACKGROUND_SVG").png"
308
+
309
+ rm -rf "$render_dir" "$DMG_BACKGROUND_PNG"
310
+ mkdir -p "$render_dir"
311
+ qlmanage -t -s 600 -o "$render_dir" "$DMG_BACKGROUND_SVG" >/dev/null 2>&1
312
+ if [[ ! -f "$rendered" ]]; then
313
+ echo "Failed to render AgentCLI DMG background PNG: $rendered" >&2
314
+ exit 1
315
+ fi
316
+ cp "$rendered" "$DMG_BACKGROUND_PNG"
317
+ rm -rf "$render_dir"
318
+ }
319
+
320
+ set_dmg_finder_layout() {
321
+ local volume_path="$1"
322
+
323
+ osascript <<APPLESCRIPT
324
+ tell application "Finder"
325
+ tell disk "$DISPLAY_NAME"
326
+ open
327
+ set current view of container window to icon view
328
+ set toolbar visible of container window to false
329
+ set statusbar visible of container window to false
330
+ set bounds of container window to {100, 100, 700, 460}
331
+ set theViewOptions to icon view options of container window
332
+ set arrangement of theViewOptions to not arranged
333
+ set icon size of theViewOptions to 96
334
+ set background picture of theViewOptions to file ".background:dmg-background.png"
335
+ set position of item "AgentCLI.app" of container window to {150, 180}
336
+ set position of item "Applications" of container window to {450, 180}
337
+ close
338
+ open
339
+ update without registering applications
340
+ delay 1
341
+ end tell
342
+ end tell
343
+ APPLESCRIPT
344
+
345
+ sync
346
+ touch "$volume_path/.metadata_never_index"
347
+ }
348
+
349
+ create_drag_install_dmg() {
350
+ local dmg_path="$1"
351
+ local attach_output
352
+ local volume_path
353
+
354
+ hdiutil detach "/Volumes/$DISPLAY_NAME" >/dev/null 2>&1 || true
355
+ rm -rf "$DMG_STAGING_DIR" "$DMG_RW_PATH" "$dmg_path" || return
356
+ mkdir -p "$DMG_STAGING_DIR/.background" || return
357
+
358
+ ditto "$APP_DIR" "$DMG_STAGING_DIR/$APP_NAME.app" || return
359
+ ln -s /Applications "$DMG_STAGING_DIR/Applications" || return
360
+ render_dmg_background || return
361
+ cp "$DMG_BACKGROUND_PNG" "$DMG_STAGING_DIR/.background/dmg-background.png" || return
362
+
363
+ hdiutil create "$DMG_RW_PATH" \
364
+ -volname "$DISPLAY_NAME" \
365
+ -srcfolder "$DMG_STAGING_DIR" \
366
+ -ov \
367
+ -format UDRW || return
368
+ attach_output=$(hdiutil attach "$DMG_RW_PATH" \
369
+ -nobrowse \
370
+ -noautoopen) || return
371
+ volume_path=$(printf '%s\n' "$attach_output" | awk -F '\t' '/\/Volumes\// { mount=$NF } END { if (mount) print mount; else exit 1 }')
372
+ if [[ -z "$volume_path" ]]; then
373
+ echo "Failed to resolve mounted DMG volume from hdiutil attach output." >&2
374
+ printf '%s\n' "$attach_output" >&2
375
+ return 1
376
+ fi
377
+ if ! set_dmg_finder_layout "$volume_path"; then
378
+ hdiutil detach "$volume_path" >/dev/null 2>&1 || true
379
+ return 1
380
+ fi
381
+ hdiutil detach "$volume_path" >/dev/null || return
382
+ hdiutil convert "$DMG_RW_PATH" \
383
+ -format UDZO \
384
+ -imagekey zlib-level=9 \
385
+ -o "$dmg_path" || return
386
+ rm -rf "$DMG_STAGING_DIR" "$DMG_RW_PATH" || return
387
+ }
388
+
296
389
  quit_running_app() {
297
390
  if ! pgrep -x "$APP_NAME" >/dev/null 2>&1; then
298
391
  return
@@ -390,13 +483,7 @@ echo "Built $APP_DIR"
390
483
  if [[ "$CREATE_DMG" == true ]]; then
391
484
  DMG_PATH="$DIST_DIR/$APP_NAME.dmg"
392
485
  for attempt in 1 2 3; do
393
- rm -f "$DMG_PATH"
394
- if hdiutil create \
395
- -volname "$DISPLAY_NAME" \
396
- -srcfolder "$APP_DIR" \
397
- -ov \
398
- -format UDZO \
399
- "$DMG_PATH"; then
486
+ if create_drag_install_dmg "$DMG_PATH"; then
400
487
  break
401
488
  fi
402
489
  if [[ "$attempt" == 3 ]]; then
@@ -121,6 +121,15 @@ test -f "$APP/Contents/Resources/wheels/agent_cli-0.0.0-py3-none-any.whl"
121
121
  codesign --verify --verbose=2 "$APP"
122
122
  hdiutil verify "$DMG"
123
123
 
124
+ DMG_MOUNT="$TMP_DIR/dmg-mount"
125
+ mkdir -p "$DMG_MOUNT"
126
+ hdiutil attach "$DMG" -mountpoint "$DMG_MOUNT" -nobrowse -noautoopen >/dev/null
127
+ test -d "$DMG_MOUNT/AgentCLI.app"
128
+ test -L "$DMG_MOUNT/Applications"
129
+ test "$(readlink "$DMG_MOUNT/Applications")" = "/Applications"
130
+ test -f "$DMG_MOUNT/.background/dmg-background.png"
131
+ hdiutil detach "$DMG_MOUNT" >/dev/null
132
+
124
133
  SUPPORT_DIR="$TMP_DIR/Application Support/AgentCLI"
125
134
  SELF_TEST_OUTPUT=$(
126
135
  AGENTCLI_APP_SUPPORT_DIR="$SUPPORT_DIR" \
@@ -791,6 +791,34 @@ def test_macos_build_script_signs_bundled_executables_before_notarization() -> N
791
791
  )
792
792
 
793
793
 
794
+ def test_macos_build_script_creates_drag_install_dmg() -> None:
795
+ """The release DMG should open as a drag-to-Applications installer window."""
796
+ script = BUILD_SCRIPT.read_text()
797
+
798
+ assert 'DMG_STAGING_DIR="$DIST_DIR/dmg-staging"' in script
799
+ assert 'DMG_RW_PATH="$DIST_DIR/$APP_NAME-rw.dmg"' in script
800
+ assert 'DMG_BACKGROUND_SVG="$PACKAGE_DIR/Resources/dmg-background.svg"' in script
801
+ assert 'DMG_BACKGROUND_PNG="$DIST_DIR/dmg-background.png"' in script
802
+ assert 'ln -s /Applications "$DMG_STAGING_DIR/Applications"' in script
803
+ assert '"$DMG_STAGING_DIR/$APP_NAME.app"' in script
804
+ assert 'hdiutil create "$DMG_RW_PATH"' in script
805
+ assert "-format UDRW" in script
806
+ assert "hdiutil attach" in script
807
+ assert "-mountpoint" not in script
808
+ assert "volume_path=$(printf" in script
809
+ assert (
810
+ 'set background picture of theViewOptions to file ".background:dmg-background.png"'
811
+ in script
812
+ )
813
+ assert 'set position of item "AgentCLI.app" of container window to {150, 180}' in script
814
+ assert 'set position of item "Applications" of container window to {450, 180}' in script
815
+ assert 'if ! set_dmg_finder_layout "$volume_path"; then' in script
816
+ assert "hdiutil convert" in script
817
+ assert "-format UDZO" in script
818
+ assert "sign_dmg_if_needed" in script
819
+ assert (MACOS_APP / "Resources" / "dmg-background.svg").is_file()
820
+
821
+
794
822
  def test_release_workflow_publishes_macos_app_asset() -> None:
795
823
  """Publishing a GitHub release should attach the notarized macOS DMG."""
796
824
  workflow = RELEASE_WORKFLOW.read_text()
@@ -893,6 +921,10 @@ def test_macos_app_has_end_to_end_packaging_test() -> None:
893
921
  assert "AGENTCLI_INSTANCE_LOCK_PATH" in script
894
922
  assert "UV_BINARY=" in script
895
923
  assert "uv build --wheel" in script
924
+ assert 'test -d "$DMG_MOUNT/AgentCLI.app"' in script
925
+ assert 'test -L "$DMG_MOUNT/Applications"' in script
926
+ assert 'readlink "$DMG_MOUNT/Applications"' in script
927
+ assert 'test -f "$DMG_MOUNT/.background/dmg-background.png"' in script
896
928
  assert "--agentcli-bootstrap-self-test" in script
897
929
  assert "daemon install whisper -y" in script
898
930
  assert "transcribe --toggle --quiet" in script
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes