agent-cli 0.107.0__tar.gz → 0.107.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/workflows/docker.yml +3 -3
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/workflows/docs.yml +1 -1
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/workflows/markdown-code-runner.yml +1 -1
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/workflows/pytest.yml +1 -1
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/workflows/release-drafter.yml +1 -1
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/workflows/release.yml +2 -2
- {agent_cli-0.107.0 → agent_cli-0.107.1}/PKG-INFO +1 -1
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docker/tts.Dockerfile +1 -1
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docker/whisper.Dockerfile +1 -1
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Package.resolved +2 -2
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Package.swift +1 -1
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/AgentCommandRunner.swift +3 -3
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/AgentRuntime.swift +34 -3
- agent_cli-0.107.1/macos/AgentCLI/Sources/AgentCLI/CommandResult.swift +39 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Tests/AgentCLITests/AgentCommandTests.swift +9 -0
- agent_cli-0.107.1/macos/AgentCLI/Tests/AgentCLITests/TranscriptionResultTests.swift +76 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/appcast.xml +23 -27
- agent_cli-0.107.0/macos/AgentCLI/Sources/AgentCLI/CommandResult.swift +0 -17
- agent_cli-0.107.0/macos/AgentCLI/Tests/AgentCLITests/TranscriptionResultTests.swift +0 -23
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.claude/skills/agent-cli-dev/SKILL.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.claude/skills/agent-cli-dev/examples.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.claude-plugin/README.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.claude-plugin/marketplace.json +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.claude-plugin/plugin.json +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.claude-plugin/skills/agent-cli-dev/SKILL.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.claude-plugin/skills/agent-cli-dev/examples.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.cursorrules +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.dockerignore +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.env.example +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/logo.svg +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/release-drafter.yml +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/renovate.json +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/scripts/check_extras_sync.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/scripts/check_plugin_skill_sync.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/scripts/normalize_appcast.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/scripts/sync_extras.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/scripts/sync_requirements.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/workflows/automerge.yml +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.github/workflows/toc.yaml +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.gitignore +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.jscpd.json +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.pre-commit-config.yaml +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.prompts/docs-review.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/.prompts/pr-review.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/CLAUDE.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/LICENSE +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/LLAMA_SERVER_USAGE.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/README.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/__init__.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/__main__.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_extras.json +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_overrides/nemo-whisper.txt +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/.gitkeep +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/audio.txt +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/diarization.txt +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/faster-whisper.txt +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/kokoro.txt +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/llm.txt +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/memory.txt +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/mlx-whisper.txt +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/nemo-whisper.txt +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/piper.txt +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/rag.txt +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/server.txt +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/speed.txt +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/vad.txt +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/vectordb.txt +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/whisper-transformers.txt +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_requirements/wyoming.txt +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/_tools.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/agents/__init__.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/agents/_voice_agent_common.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/agents/assistant.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/agents/autocorrect.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/agents/chat.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/agents/diarize_live_session.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/agents/memory/__init__.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/agents/memory/add.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/agents/memory/proxy.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/agents/rag_proxy.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/agents/speak.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/agents/speakers.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/agents/transcribe.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/agents/transcribe_live.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/agents/voice_edit.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/api.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/cli.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/config.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/config_cmd.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/constants.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/__init__.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/alignment.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/audio.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/audio_format.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/chroma.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/deps.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/diarization.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/openai_proxy.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/process.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/reranker.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/speaker_identity.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/sse.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/transcription_logger.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/utils.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/vad.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/core/watch.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/daemon/__init__.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/daemon/cli.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/__init__.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/_branch_name.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/_config.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/_output.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/cleanup.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/cli.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/coding_agents/__init__.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/coding_agents/aider.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/coding_agents/base.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/coding_agents/claude.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/coding_agents/codex.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/coding_agents/continue_dev.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/coding_agents/copilot.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/coding_agents/cursor_agent.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/coding_agents/gemini.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/coding_agents/opencode.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/coding_agents/registry.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/editors/__init__.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/editors/base.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/editors/cursor.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/editors/emacs.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/editors/jetbrains.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/editors/nano.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/editors/neovim.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/editors/registry.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/editors/sublime.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/editors/vim.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/editors/vscode.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/editors/zed.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/hooks.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/launch.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/project.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/registry.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/skill/SKILL.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/skill/examples.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/terminals/__init__.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/terminals/apple_terminal.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/terminals/base.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/terminals/cmux.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/terminals/gnome.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/terminals/iterm2.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/terminals/kitty.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/terminals/registry.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/terminals/tmux.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/terminals/warp.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/terminals/zellij.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/dev/worktree.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/docs_gen.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/example-config.toml +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/install/__init__.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/install/common.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/install/extras.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/install/hotkeys.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/install/launchd.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/install/service_config.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/install/services.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/install/systemd.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/__init__.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/_files.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/_filters.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/_git.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/_indexer.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/_ingest.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/_persistence.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/_prompt.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/_retrieval.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/_store.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/_streaming.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/_tasks.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/api.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/client.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/engine.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/entities.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/memory/models.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/opts.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/py.typed +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/rag/__init__.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/rag/_indexer.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/rag/_indexing.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/rag/_prompt.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/rag/_retriever.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/rag/_store.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/rag/_utils.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/rag/api.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/rag/client.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/rag/engine.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/rag/models.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/.runtime/.gitkeep +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/__init__.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/linux-hotkeys/README.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/linux-hotkeys/toggle-voice-edit.sh +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/macos-hotkeys/README.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/macos-hotkeys/skhd-config-example +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/macos-hotkeys/toggle-autocorrect.sh +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/macos-hotkeys/toggle-transcription.sh +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/macos-hotkeys/toggle-voice-edit.sh +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/nvidia-asr-server/README.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/nvidia-asr-server/pyproject.toml +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/nvidia-asr-server/server.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/nvidia-asr-server/shell.nix +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/nvidia-asr-server/uv.lock +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/run-openwakeword.sh +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/setup-linux-hotkeys.sh +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/setup-linux.sh +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/setup-macos-hotkeys.sh +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/setup-macos.sh +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/setup-windows.ps1 +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/start-all-services-windows.ps1 +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/scripts/start-all-services.sh +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/__init__.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/cli.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/common.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/model_manager.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/model_registry.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/proxy/__init__.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/proxy/api.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/proxy/diarization.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/streaming.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/tts/__init__.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/tts/api.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/tts/backends/__init__.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/tts/backends/base.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/tts/backends/kokoro.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/tts/backends/piper.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/tts/model_manager.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/tts/model_registry.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/tts/wyoming_handler.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/whisper/__init__.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/whisper/api.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/whisper/backends/__init__.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/whisper/backends/audio.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/whisper/backends/base.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/whisper/backends/faster_whisper.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/whisper/backends/mlx.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/whisper/backends/nemo.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/whisper/backends/transformers.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/whisper/languages.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/whisper/model_manager.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/whisper/model_registry.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/server/whisper/wyoming_handler.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/services/__init__.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/services/_wyoming_utils.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/services/asr.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/services/llm.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/services/tts.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/agent_cli/services/wake_word.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docker/diarization.Dockerfile +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docker/docker-compose.yml +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docker/memory-proxy.Dockerfile +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docker/rag-proxy.Dockerfile +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docker/transcribe-proxy.Dockerfile +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/CNAME +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/architecture/index.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/architecture/memory.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/architecture/rag.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/assistant.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/autocorrect.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/chat.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/config.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/daemon.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/dev.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/diarize-live-session.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/index.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/install-extras.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/install-hotkeys.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/install-services.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/memory.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/rag-proxy.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/server/index.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/server/transcribe-proxy.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/server/tts.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/server/whisper.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/speak.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/speakers.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/start-services.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/transcribe-live.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/transcribe.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/commands/voice-edit.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/configuration.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/getting-started.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/iOS_Shortcut_Guide.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/index.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/installation/docker.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/installation/index.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/installation/linux.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/installation/macos-app.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/installation/macos.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/installation/nixos.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/installation/windows.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/logo-avatar.svg +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/logo-clean.svg +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/run_markdown_code_runner.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/docs/system-integration.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/example.agent-cli-config.toml +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/justfile +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/README.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Resources/AgentCLI.entitlements +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Resources/Info.plist +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Resources/dmg-background.svg +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/AgentCLIApp.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/AgentCommand.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/AppDelegate.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/AppMetadata.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/AppUpdater.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/BootstrapState.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/ConfigurableHotkeyController.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/FocusedTextTarget.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/LiveTranscriptionPreview.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/LoginItemController.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/MenuActivityStatus.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/MenuActivityStatusRow.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/MenuActivityTracker.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/MenuBarIcon.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/RecentTranscriptionReader.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/RecordingIndicatorController.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/RecordingSoundSettings.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/RuntimeSettings.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/SettingsWindowController.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/Shortcuts.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/StatusMenuController.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/TranscriptPasteController.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/TranscriptionSettings.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/VoiceLevelOverlay.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Tests/AgentCLITests/ConfigurableHotkeyControllerTests.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Tests/AgentCLITests/LivePreviewSwiftTestingTests.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Tests/AgentCLITests/LiveTranscriptionPreviewTests.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Tests/AgentCLITests/LoginItemControllerTests.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Tests/AgentCLITests/RecentTranscriptionReaderTests.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Tests/AgentCLITests/RecordingIndicatorControllerTests.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Tests/AgentCLITests/ShortcutDefaultsTests.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Tests/AgentCLITests/VoiceLevelMeterTests.swift +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/build-macos-app.sh +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/macos/test-macos-app-e2e.sh +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/pyproject.toml +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/reddit.md +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/shell.nix +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/__init__.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/__init__.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_fix_my_text.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_interactive.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_interactive_extra.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_memory_add.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_speak.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_speak_e2e.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_speakers.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_transcribe.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_transcribe_agent.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_transcribe_e2e.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_transcribe_live.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_transcribe_recovery.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_tts_common.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_tts_common_extra.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_voice_agent_common.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_voice_edit.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_voice_edit_e2e.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/agents/test_wake_word_assistant.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/conftest.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/core/__init__.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/core/test_audio.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/core/test_audio_format.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/core/test_audio_levels.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/core/test_chroma.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/core/test_sse.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/core/test_vad.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/core/test_watch.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/dev/__init__.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/dev/test_cleanup.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/dev/test_cli.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/dev/test_coding_agents.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/dev/test_editors.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/dev/test_hooks.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/dev/test_launch.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/dev/test_project.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/dev/test_terminals.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/dev/test_verification.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/dev/test_worktree.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/install/__init__.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/install/test_extras.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/install/test_launchd.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/memory/__init__.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/memory/test_api_health.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/memory/test_api_integration_liveish.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/memory/test_client.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/memory/test_engine.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/memory/test_files.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/memory/test_filters.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/memory/test_git_integration.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/memory/test_indexer.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/memory/test_memory_integration.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/memory/test_proxy_passthrough.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/memory/test_store.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/memory/test_utils.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/mocks/__init__.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/mocks/audio.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/mocks/llm.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/mocks/wyoming.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/rag/__init__.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/rag/test_api.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/rag/test_engine.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/rag/test_history.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/rag/test_indexer.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/rag/test_indexing.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/rag/test_rag_client.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/rag/test_rag_integration_liveish.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/rag/test_rag_proxy_passthrough.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/rag/test_retriever.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/rag/test_store.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/rag/test_utils.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_alignment.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_api.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_api_integration.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_asr.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_asr_recovery.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_audio_e2e.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_cli.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_config.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_config_cmd.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_daemon.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_diarization.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_diarize_live_session.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_docs_gen.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_env_vars.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_faster_whisper_backend.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_json_output.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_llm.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_llm_gemini.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_macos_app.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_memory_tools.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_mlx_backend.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_nemo_backend.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_normalize_appcast.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_process_manager.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_proxy_diarization.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_requires_extras.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_server_streaming.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_server_tts.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_server_tts_wyoming.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_server_whisper.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_server_whisper_wyoming.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_services.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_speaker_identity.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_tools.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_transformers_backend.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_tts.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_utils.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_wake_word.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_whisper_backend_audio.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/tests/test_wyoming_utils.py +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/uv.lock +0 -0
- {agent_cli-0.107.0 → agent_cli-0.107.1}/zensical.toml +0 -0
|
@@ -52,7 +52,7 @@ jobs:
|
|
|
52
52
|
uses: docker/setup-buildx-action@v4.4.1
|
|
53
53
|
|
|
54
54
|
- name: Log in to Container Registry
|
|
55
|
-
uses: docker/login-action@v4.5.
|
|
55
|
+
uses: docker/login-action@v4.5.2
|
|
56
56
|
with:
|
|
57
57
|
registry: ${{ env.REGISTRY }}
|
|
58
58
|
username: ${{ github.actor }}
|
|
@@ -125,7 +125,7 @@ jobs:
|
|
|
125
125
|
uses: docker/setup-buildx-action@v4.4.1
|
|
126
126
|
|
|
127
127
|
- name: Log in to Container Registry
|
|
128
|
-
uses: docker/login-action@v4.5.
|
|
128
|
+
uses: docker/login-action@v4.5.2
|
|
129
129
|
with:
|
|
130
130
|
registry: ${{ env.REGISTRY }}
|
|
131
131
|
username: ${{ github.actor }}
|
|
@@ -178,7 +178,7 @@ jobs:
|
|
|
178
178
|
df -h
|
|
179
179
|
|
|
180
180
|
- name: Log in to Container Registry
|
|
181
|
-
uses: docker/login-action@v4.5.
|
|
181
|
+
uses: docker/login-action@v4.5.2
|
|
182
182
|
with:
|
|
183
183
|
registry: ${{ env.REGISTRY }}
|
|
184
184
|
username: ${{ github.actor }}
|
|
@@ -27,7 +27,7 @@ jobs:
|
|
|
27
27
|
if: matrix.os == 'ubuntu-latest'
|
|
28
28
|
run: sudo apt-get update && sudo apt-get install -y portaudio19-dev
|
|
29
29
|
- name: Install uv
|
|
30
|
-
uses: astral-sh/setup-uv@
|
|
30
|
+
uses: astral-sh/setup-uv@v10.0.0
|
|
31
31
|
- name: Run macOS app Swift tests
|
|
32
32
|
if: matrix.os == 'macos-latest' && matrix.python-version == '3.13'
|
|
33
33
|
run: swift test --package-path macos/AgentCLI --enable-xctest
|
|
@@ -16,7 +16,7 @@ jobs:
|
|
|
16
16
|
steps:
|
|
17
17
|
- uses: actions/checkout@v7.0.1
|
|
18
18
|
- name: Install uv
|
|
19
|
-
uses: astral-sh/setup-uv@
|
|
19
|
+
uses: astral-sh/setup-uv@v10.0.0
|
|
20
20
|
- name: Build
|
|
21
21
|
run: uv build
|
|
22
22
|
- name: Publish package distributions to PyPI
|
|
@@ -31,7 +31,7 @@ jobs:
|
|
|
31
31
|
steps:
|
|
32
32
|
- uses: actions/checkout@v7.0.1
|
|
33
33
|
- name: Install uv
|
|
34
|
-
uses: astral-sh/setup-uv@
|
|
34
|
+
uses: astral-sh/setup-uv@v10.0.0
|
|
35
35
|
- name: Import Developer ID certificate
|
|
36
36
|
uses: apple-actions/import-codesign-certs@v7.0.0
|
|
37
37
|
with:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: agent-cli
|
|
3
|
-
Version: 0.107.
|
|
3
|
+
Version: 0.107.1
|
|
4
4
|
Summary: A suite of AI-powered command-line tools for text correction, audio transcription, and voice assistance.
|
|
5
5
|
Project-URL: Homepage, https://github.com/basnijholt/agent-cli
|
|
6
6
|
Author-email: Bas Nijholt <bas@nijho.lt>
|
|
@@ -51,7 +51,7 @@ RUN uv sync --frozen --no-dev --no-editable --extra server --extra piper --extra
|
|
|
51
51
|
# =============================================================================
|
|
52
52
|
# CUDA target: GPU-accelerated with Kokoro TTS
|
|
53
53
|
# =============================================================================
|
|
54
|
-
FROM nvcr.io/nvidia/cuda:12.9.
|
|
54
|
+
FROM nvcr.io/nvidia/cuda:12.9.2-cudnn-runtime-ubuntu24.04 AS cuda
|
|
55
55
|
|
|
56
56
|
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
|
|
57
57
|
|
|
@@ -31,7 +31,7 @@ RUN uv sync --frozen --no-dev --no-editable --extra server --extra faster-whispe
|
|
|
31
31
|
# =============================================================================
|
|
32
32
|
# CUDA target: GPU-accelerated with faster-whisper
|
|
33
33
|
# =============================================================================
|
|
34
|
-
FROM nvcr.io/nvidia/cuda:12.9.
|
|
34
|
+
FROM nvcr.io/nvidia/cuda:12.9.2-cudnn-runtime-ubuntu24.04 AS cuda
|
|
35
35
|
|
|
36
36
|
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
|
|
37
37
|
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
"kind" : "remoteSourceControl",
|
|
15
15
|
"location" : "https://github.com/sparkle-project/Sparkle",
|
|
16
16
|
"state" : {
|
|
17
|
-
"revision" : "
|
|
18
|
-
"version" : "2.9.
|
|
17
|
+
"revision" : "ac2def288cbff5cfc7df3ffef6abdf45b72bcb0a",
|
|
18
|
+
"version" : "2.9.6"
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
],
|
|
@@ -12,7 +12,7 @@ let package = Package(
|
|
|
12
12
|
],
|
|
13
13
|
dependencies: [
|
|
14
14
|
.package(url: "https://github.com/sindresorhus/KeyboardShortcuts", exact: "1.10.0"),
|
|
15
|
-
.package(url: "https://github.com/sparkle-project/Sparkle", exact: "2.9.
|
|
15
|
+
.package(url: "https://github.com/sparkle-project/Sparkle", exact: "2.9.6"),
|
|
16
16
|
],
|
|
17
17
|
targets: [
|
|
18
18
|
.executableTarget(
|
{agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Sources/AgentCLI/AgentCommandRunner.swift
RENAMED
|
@@ -265,12 +265,12 @@ final class AgentCommandRunner: ObservableObject {
|
|
|
265
265
|
Task { @MainActor in
|
|
266
266
|
if shouldStartRecording {
|
|
267
267
|
self.clearHoldTranscriptionState(for: command)
|
|
268
|
-
let shouldPaste = self.shouldPasteAfterRecording(for: command)
|
|
268
|
+
let shouldPaste = self.shouldPasteAfterRecording(for: command)
|
|
269
269
|
let pasteTarget = self.holdToTranscribePasteTarget
|
|
270
270
|
self.endRecordingIndicator(for: command)
|
|
271
271
|
self.clearStopRequested(for: command)
|
|
272
|
-
if shouldPaste {
|
|
273
|
-
self.pasteController.pasteTranscriptIntoFocusedField(
|
|
272
|
+
if shouldPaste, let pasteText = result.pasteText {
|
|
273
|
+
self.pasteController.pasteTranscriptIntoFocusedField(pasteText, target: pasteTarget) { message in
|
|
274
274
|
self.statusMessage = message
|
|
275
275
|
}
|
|
276
276
|
}
|
|
@@ -53,6 +53,22 @@ private final class LoginShellPATHCache {
|
|
|
53
53
|
typealias AgentProcessRunner = (URL, [String], [String: String]) -> CommandResult
|
|
54
54
|
typealias LocalhostConnector = (UInt16) -> Bool
|
|
55
55
|
|
|
56
|
+
private final class ProcessDiagnosticCapture: @unchecked Sendable {
|
|
57
|
+
private let lock = NSLock()
|
|
58
|
+
private var text = ""
|
|
59
|
+
|
|
60
|
+
func read(from handle: FileHandle) {
|
|
61
|
+
let data = handle.readDataToEndOfFile()
|
|
62
|
+
lock.withLock {
|
|
63
|
+
text = String(decoding: data, as: UTF8.self).trimmingCharacters(in: .whitespacesAndNewlines)
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
var output: String {
|
|
68
|
+
lock.withLock { text }
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
56
72
|
struct AgentRuntime {
|
|
57
73
|
static let shared = AgentRuntime()
|
|
58
74
|
|
|
@@ -747,7 +763,7 @@ struct AgentRuntime {
|
|
|
747
763
|
)
|
|
748
764
|
guard result.exitCode == 0 else { return nil }
|
|
749
765
|
|
|
750
|
-
return result.output
|
|
766
|
+
return (result.standardOutput ?? result.output)
|
|
751
767
|
.split(separator: "\n")
|
|
752
768
|
.last
|
|
753
769
|
.map(String.init)
|
|
@@ -799,20 +815,35 @@ struct AgentRuntime {
|
|
|
799
815
|
) -> CommandResult {
|
|
800
816
|
let task = Process()
|
|
801
817
|
let pipe = Pipe()
|
|
818
|
+
let errorPipe = Pipe()
|
|
802
819
|
|
|
803
820
|
task.executableURL = executableURL
|
|
804
821
|
task.arguments = arguments
|
|
805
822
|
task.environment = environment
|
|
806
823
|
task.standardOutput = pipe
|
|
807
|
-
task.standardError =
|
|
824
|
+
task.standardError = errorPipe
|
|
808
825
|
|
|
809
826
|
do {
|
|
810
827
|
try task.run()
|
|
828
|
+
// Drain both streams concurrently so verbose diagnostics cannot fill
|
|
829
|
+
// stderr's pipe and block the child before it finishes stdout.
|
|
830
|
+
let diagnostics = ProcessDiagnosticCapture()
|
|
831
|
+
let readers = DispatchGroup()
|
|
832
|
+
readers.enter()
|
|
833
|
+
DispatchQueue.global(qos: .userInitiated).async {
|
|
834
|
+
diagnostics.read(from: errorPipe.fileHandleForReading)
|
|
835
|
+
readers.leave()
|
|
836
|
+
}
|
|
811
837
|
let data = pipe.fileHandleForReading.readDataToEndOfFile()
|
|
812
838
|
task.waitUntilExit()
|
|
839
|
+
readers.wait()
|
|
840
|
+
let stdout = String(decoding: data, as: UTF8.self).trimmingCharacters(in: .whitespacesAndNewlines)
|
|
841
|
+
let output = [stdout, diagnostics.output].filter { !$0.isEmpty }.joined(separator: "\n")
|
|
813
842
|
return CommandResult(
|
|
814
843
|
exitCode: task.terminationStatus,
|
|
815
|
-
output:
|
|
844
|
+
output: output,
|
|
845
|
+
standardOutput: stdout,
|
|
846
|
+
standardError: diagnostics.output
|
|
816
847
|
)
|
|
817
848
|
} catch {
|
|
818
849
|
return CommandResult(exitCode: 127, output: error.localizedDescription)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
|
|
3
|
+
struct CommandResult {
|
|
4
|
+
let exitCode: Int32
|
|
5
|
+
let output: String
|
|
6
|
+
/// Unmixed stdout for child processes; nil for synthetic results.
|
|
7
|
+
let standardOutput: String?
|
|
8
|
+
let standardError: String?
|
|
9
|
+
|
|
10
|
+
init(exitCode: Int32, output: String, standardOutput: String? = nil, standardError: String? = nil) {
|
|
11
|
+
self.exitCode = exitCode
|
|
12
|
+
self.output = output
|
|
13
|
+
self.standardOutput = standardOutput
|
|
14
|
+
self.standardError = standardError
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
var pasteText: String? {
|
|
18
|
+
let candidates = standardOutput == nil && standardError == nil
|
|
19
|
+
? [output] : [standardOutput ?? "", standardError ?? ""]
|
|
20
|
+
return candidates
|
|
21
|
+
.map { $0.trimmingCharacters(in: .whitespacesAndNewlines) }
|
|
22
|
+
.first { !$0.isEmpty }
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
func requiringTranscript() -> CommandResult {
|
|
26
|
+
guard exitCode == 0 else { return self }
|
|
27
|
+
let transcript = (standardOutput ?? output).trimmingCharacters(in: .whitespacesAndNewlines)
|
|
28
|
+
if !transcript.isEmpty {
|
|
29
|
+
return CommandResult(exitCode: 0, output: transcript, standardOutput: transcript, standardError: standardError)
|
|
30
|
+
}
|
|
31
|
+
return CommandResult(
|
|
32
|
+
exitCode: 1,
|
|
33
|
+
output: "No transcript returned. Check the microphone and ASR server, then try again. "
|
|
34
|
+
+ "If a recording was saved, recover it with agent-cli transcribe --last-recording.",
|
|
35
|
+
standardOutput: standardOutput,
|
|
36
|
+
standardError: standardError
|
|
37
|
+
)
|
|
38
|
+
}
|
|
39
|
+
}
|
{agent_cli-0.107.0 → agent_cli-0.107.1}/macos/AgentCLI/Tests/AgentCLITests/AgentCommandTests.swift
RENAMED
|
@@ -268,6 +268,15 @@ final class AgentCommandTests: XCTestCase {
|
|
|
268
268
|
|
|
269
269
|
private static let shellPATHProbeSuccess = CommandResult(exitCode: 0, output: "/shell/bin\n")
|
|
270
270
|
|
|
271
|
+
func testLoginShellPATHIgnoresStderrWarnings() {
|
|
272
|
+
let runtime = makeShellPATHProbingRuntime(suiteName: "AgentCLITests.shell-path-diagnostics") {
|
|
273
|
+
CommandResult(exitCode: 0, output: "/shell/bin\nShell startup warning", standardOutput: "/shell/bin\n")
|
|
274
|
+
}
|
|
275
|
+
let path = runtime.commandEnvironment()["PATH"] ?? ""
|
|
276
|
+
XCTAssertEqual(path.split(separator: ":").first.map(String.init), "/shell/bin")
|
|
277
|
+
XCTAssertFalse(path.contains("Shell startup warning"))
|
|
278
|
+
}
|
|
279
|
+
|
|
271
280
|
/// `zsh -lic` costs roughly a second with a real dotfiles setup, so the login shell
|
|
272
281
|
/// PATH must be resolved once per runtime instead of once per spawned command.
|
|
273
282
|
func testUserInstalledRuntimeCachesLoginShellPATHLookup() {
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
#if canImport(XCTest)
|
|
2
|
+
import XCTest
|
|
3
|
+
@testable import AgentCLI
|
|
4
|
+
|
|
5
|
+
final class TranscriptionResultTests: XCTestCase {
|
|
6
|
+
func testShutdownWarningsAreNotPartOfTranscript() {
|
|
7
|
+
let result = runShell("""
|
|
8
|
+
printf '%s\\n' 'Timed out after 0.50s waiting for audio stream.abort(); continuing.' >&2
|
|
9
|
+
printf '%s\\n' 'Timed out after 0.50s waiting for audio stream.close(); continuing.' >&2
|
|
10
|
+
printf '%s\\n' 'CI is failing for the proxy. Fix it.'
|
|
11
|
+
""").requiringTranscript()
|
|
12
|
+
XCTAssertEqual(result.exitCode, 0)
|
|
13
|
+
XCTAssertEqual(result.output, "CI is failing for the proxy. Fix it.")
|
|
14
|
+
XCTAssertEqual(result.pasteText, "CI is failing for the proxy. Fix it.")
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
func testWarningsAloneDoNotCountAsTranscript() {
|
|
18
|
+
let result = runShell("printf 'Audio shutdown warning\\n' >&2").requiringTranscript()
|
|
19
|
+
XCTAssertNotEqual(result.exitCode, 0)
|
|
20
|
+
XCTAssertTrue(result.output.contains("No transcript"))
|
|
21
|
+
XCTAssertEqual(result.pasteText, "Audio shutdown warning")
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
func testFailureKeepsStderrDiagnostics() {
|
|
25
|
+
let result = runShell("printf 'ASR connection failed\\n' >&2; exit 7").requiringTranscript()
|
|
26
|
+
XCTAssertEqual(result.exitCode, 7)
|
|
27
|
+
XCTAssertTrue(result.output.contains("ASR connection failed"))
|
|
28
|
+
XCTAssertEqual(result.pasteText, "ASR connection failed")
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
func testStdoutWinsOverStderrEvenWhenCommandFails() {
|
|
32
|
+
let result = runShell("printf 'Recognized speech\\n'; printf 'Cleanup failed\\n' >&2; exit 7")
|
|
33
|
+
.requiringTranscript()
|
|
34
|
+
XCTAssertEqual(result.exitCode, 7)
|
|
35
|
+
XCTAssertEqual(result.pasteText, "Recognized speech")
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
func testSilentProcessDoesNotPasteInventedTranscript() {
|
|
39
|
+
let result = runShell("exit 0").requiringTranscript()
|
|
40
|
+
XCTAssertNotEqual(result.exitCode, 0)
|
|
41
|
+
XCTAssertNil(result.pasteText)
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
func testLargeDiagnosticsDoNotBlockTranscriptCapture() {
|
|
45
|
+
let result = runShell("dd if=/dev/zero bs=65536 count=4 >&2 2>/dev/null; printf 'Hello\\n'")
|
|
46
|
+
.requiringTranscript()
|
|
47
|
+
XCTAssertEqual(result.exitCode, 0)
|
|
48
|
+
XCTAssertEqual(result.output, "Hello")
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
private func runShell(_ command: String) -> CommandResult {
|
|
52
|
+
AgentRuntime.runProcess(
|
|
53
|
+
executableURL: URL(fileURLWithPath: "/bin/sh"),
|
|
54
|
+
arguments: ["-c", command],
|
|
55
|
+
environment: ["PATH": "/usr/bin:/bin"]
|
|
56
|
+
)
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
func testEmptySuccessfulRecordingBecomesFailure() {
|
|
60
|
+
for output in ["", " \n\t"] {
|
|
61
|
+
let result = CommandResult(exitCode: 0, output: output).requiringTranscript()
|
|
62
|
+
XCTAssertNotEqual(result.exitCode, 0)
|
|
63
|
+
XCTAssertTrue(result.output.contains("No transcript"))
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
func testTranscriptAndBackendFailureArePreserved() {
|
|
68
|
+
let success = CommandResult(exitCode: 0, output: "Hello world").requiringTranscript()
|
|
69
|
+
XCTAssertEqual(success.exitCode, 0)
|
|
70
|
+
XCTAssertEqual(success.output, "Hello world")
|
|
71
|
+
let failure = CommandResult(exitCode: 7, output: "Connection lost").requiringTranscript()
|
|
72
|
+
XCTAssertEqual(failure.exitCode, 7)
|
|
73
|
+
XCTAssertEqual(failure.output, "Connection lost")
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
#endif
|
|
@@ -4,6 +4,29 @@
|
|
|
4
4
|
<title>Agent CLI Updates</title>
|
|
5
5
|
<link>https://github.com/basnijholt/agent-cli</link>
|
|
6
6
|
<description>Signed Agent CLI macOS app updates.</description>
|
|
7
|
+
<item>
|
|
8
|
+
<title>0.107.0</title>
|
|
9
|
+
<pubDate>Mon, 21 Sep 2026 18:53:01 +0000</pubDate>
|
|
10
|
+
<link>https://github.com/basnijholt/agent-cli</link>
|
|
11
|
+
<sparkle:version>208</sparkle:version>
|
|
12
|
+
<sparkle:shortVersionString>0.107.0</sparkle:shortVersionString>
|
|
13
|
+
<sparkle:minimumSystemVersion>13.0</sparkle:minimumSystemVersion>
|
|
14
|
+
<sparkle:hardwareRequirements>arm64</sparkle:hardwareRequirements>
|
|
15
|
+
<description sparkle:format="markdown"><![CDATA[## Features
|
|
16
|
+
|
|
17
|
+
- **See transcription progress after releasing the key.** The macOS overlay stays visible with a blue spinner and “Transcribing…” label until the request completes or fails. A separate MM:SS timer shows elapsed transcription time, starting from zero when processing begins. (#651)
|
|
18
|
+
- **A fuller recording waveform.** The recording timer sits closer to the left edge, and wider, taller waveform bars fill the remaining pill space. (#651)
|
|
19
|
+
|
|
20
|
+
## Bug fixes
|
|
21
|
+
|
|
22
|
+
- Keep the transcription pill compact after live-preview recordings, and restore the preview layout if a failed toggle-stop request returns to recording. (#651)
|
|
23
|
+
- Preserve overlay visibility across overlapping recording and transcription activity. Ignore duplicate recording-completion events so they cannot stop another active recording indicator. (#651)
|
|
24
|
+
|
|
25
|
+
**Full changelog:** https://github.com/basnijholt/agent-cli/compare/v0.106.0...v0.107.0
|
|
26
|
+
|
|
27
|
+
]]></description>
|
|
28
|
+
<enclosure url="https://github.com/basnijholt/agent-cli/releases/download/v0.107.0/AgentCLI.zip" length="18871107" type="application/octet-stream" sparkle:edSignature="NBfAeYMwnrVy3ageqaHEyepstJ6EBHI6tJgwqf3UrdOH0u8zEx0pWWuKzNgv+Tq2Uu2rn6PMeiUSfuUpHl8WCw=="/>
|
|
29
|
+
</item>
|
|
7
30
|
<item>
|
|
8
31
|
<title>0.106.0</title>
|
|
9
32
|
<pubDate>Mon, 21 Sep 2026 16:57:54 +0000</pubDate>
|
|
@@ -179,32 +202,5 @@
|
|
|
179
202
|
]]></description>
|
|
180
203
|
<enclosure url="https://github.com/basnijholt/agent-cli/releases/download/v0.102.2/AgentCLI.zip" length="24329779" type="application/octet-stream" sparkle:edSignature="CeWZFIPSDJSiO8iQbm46QDRet3IYvIvgL4qSyYdDmwlTlkhV66IaXp05Wt04+xLBKTJcAv9333tA9n8BZ9IvBQ=="/>
|
|
181
204
|
</item>
|
|
182
|
-
<item>
|
|
183
|
-
<title>0.102.1</title>
|
|
184
|
-
<pubDate>Sat, 25 Jul 2026 18:58:28 +0000</pubDate>
|
|
185
|
-
<link>https://github.com/basnijholt/agent-cli</link>
|
|
186
|
-
<sparkle:version>198</sparkle:version>
|
|
187
|
-
<sparkle:shortVersionString>0.102.1</sparkle:shortVersionString>
|
|
188
|
-
<sparkle:minimumSystemVersion>13.0</sparkle:minimumSystemVersion>
|
|
189
|
-
<sparkle:hardwareRequirements>arm64</sparkle:hardwareRequirements>
|
|
190
|
-
<description sparkle:format="markdown"><![CDATA[## Bug fixes
|
|
191
|
-
|
|
192
|
-
* **Transcription now starts ~1.3s sooner after pressing the hotkey.** The macOS app spawned a login + interactive shell (`zsh -lic`) to discover `PATH` on *every* command it ran, costing 1.1–1.4s with a typical dotfiles setup. The recording pill appeared immediately but the microphone did not open until that shell finished, so speaking right away lost the first words. The login shell `PATH` is now resolved once per app launch, during the existing startup warm-up. Measured hotkey to first audio chunk: ~1.8s → ~0.4–0.6s. (#622)
|
|
193
|
-
* Only successful lookups are cached, so a login shell that fails once does not leave the app on a degraded `PATH` for the rest of the session.
|
|
194
|
-
* *Install or Update CLI* still re-probes, so a relocated `agent-cli` binary is picked up without restarting the app.
|
|
195
|
-
|
|
196
|
-
## Performance
|
|
197
|
-
|
|
198
|
-
* `agent-cli` no longer reads its own distribution metadata on startup. `__version__` resolves lazily, saving ~29ms on every command. (#622)
|
|
199
|
-
|
|
200
|
-
## Maintenance
|
|
201
|
-
|
|
202
|
-
* ⬆️ Update docker/login-action to v4.5.1 (#621, #619)
|
|
203
|
-
* ⬆️ Update actions/checkout to v7.0.1 (#617)
|
|
204
|
-
* ⬆️ Update release-drafter/release-drafter to v7.6.0 (#614)
|
|
205
|
-
* [pre-commit.ci] pre-commit autoupdate (#616)
|
|
206
|
-
]]></description>
|
|
207
|
-
<enclosure url="https://github.com/basnijholt/agent-cli/releases/download/v0.102.1/AgentCLI.zip" length="24329452" type="application/octet-stream" sparkle:edSignature="MQizz/9FfhxJGKQc6I/XXtIUBLVPh20yWi/kvfE7xBpoQGPF4yE4C0T1Ex1WpU3im/vRLrMIbZMv0+yHYTifBQ=="/>
|
|
208
|
-
</item>
|
|
209
205
|
</channel>
|
|
210
206
|
</rss>
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import Foundation
|
|
2
|
-
|
|
3
|
-
struct CommandResult {
|
|
4
|
-
let exitCode: Int32
|
|
5
|
-
let output: String
|
|
6
|
-
|
|
7
|
-
func requiringTranscript() -> CommandResult {
|
|
8
|
-
guard exitCode == 0, output.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty else {
|
|
9
|
-
return self
|
|
10
|
-
}
|
|
11
|
-
return CommandResult(
|
|
12
|
-
exitCode: 1,
|
|
13
|
-
output: "No transcript returned. Check the microphone and ASR server, then try again. "
|
|
14
|
-
+ "If a recording was saved, recover it with agent-cli transcribe --last-recording."
|
|
15
|
-
)
|
|
16
|
-
}
|
|
17
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
#if canImport(XCTest)
|
|
2
|
-
import XCTest
|
|
3
|
-
@testable import AgentCLI
|
|
4
|
-
|
|
5
|
-
final class TranscriptionResultTests: XCTestCase {
|
|
6
|
-
func testEmptySuccessfulRecordingBecomesFailure() {
|
|
7
|
-
for output in ["", " \n\t"] {
|
|
8
|
-
let result = CommandResult(exitCode: 0, output: output).requiringTranscript()
|
|
9
|
-
XCTAssertNotEqual(result.exitCode, 0)
|
|
10
|
-
XCTAssertTrue(result.output.contains("No transcript"))
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
func testTranscriptAndBackendFailureArePreserved() {
|
|
15
|
-
let success = CommandResult(exitCode: 0, output: "Hello world").requiringTranscript()
|
|
16
|
-
XCTAssertEqual(success.exitCode, 0)
|
|
17
|
-
XCTAssertEqual(success.output, "Hello world")
|
|
18
|
-
let failure = CommandResult(exitCode: 7, output: "Connection lost").requiringTranscript()
|
|
19
|
-
XCTAssertEqual(failure.exitCode, 7)
|
|
20
|
-
XCTAssertEqual(failure.output, "Connection lost")
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
#endif
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|