agent-cli 0.98.2__tar.gz → 0.98.3__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.98.2 → agent_cli-0.98.3}/PKG-INFO +1 -1
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Sources/AgentCLI/ConfigurableHotkeyController.swift +125 -42
- agent_cli-0.98.3/macos/AgentCLI/Tests/AgentCLITests/ConfigurableHotkeyControllerTests.swift +36 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.claude/skills/agent-cli-dev/SKILL.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.claude/skills/agent-cli-dev/examples.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.claude-plugin/README.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.claude-plugin/marketplace.json +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.claude-plugin/plugin.json +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.claude-plugin/skills/agent-cli-dev/SKILL.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.claude-plugin/skills/agent-cli-dev/examples.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.cursorrules +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.dockerignore +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.env.example +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.github/logo.svg +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.github/release-drafter.yml +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.github/renovate.json +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.github/scripts/check_extras_sync.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.github/scripts/check_plugin_skill_sync.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.github/scripts/normalize_appcast.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.github/scripts/sync_extras.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.github/scripts/sync_requirements.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.github/workflows/automerge.yml +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.github/workflows/docker.yml +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.github/workflows/docs.yml +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.github/workflows/markdown-code-runner.yml +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.github/workflows/pytest.yml +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.github/workflows/release-drafter.yml +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.github/workflows/release.yml +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.github/workflows/toc.yaml +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.gitignore +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.jscpd.json +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.pre-commit-config.yaml +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.prompts/docs-review.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/.prompts/pr-review.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/CLAUDE.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/LICENSE +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/LLAMA_SERVER_USAGE.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/README.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/__init__.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/__main__.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/_extras.json +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/_overrides/nemo-whisper.txt +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/_requirements/.gitkeep +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/_requirements/audio.txt +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/_requirements/diarization.txt +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/_requirements/faster-whisper.txt +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/_requirements/kokoro.txt +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/_requirements/llm.txt +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/_requirements/memory.txt +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/_requirements/mlx-whisper.txt +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/_requirements/nemo-whisper.txt +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/_requirements/piper.txt +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/_requirements/rag.txt +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/_requirements/server.txt +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/_requirements/speed.txt +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/_requirements/vad.txt +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/_requirements/vectordb.txt +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/_requirements/whisper-transformers.txt +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/_requirements/wyoming.txt +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/_tools.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/agents/__init__.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/agents/_voice_agent_common.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/agents/assistant.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/agents/autocorrect.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/agents/chat.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/agents/diarize_live_session.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/agents/memory/__init__.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/agents/memory/add.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/agents/memory/proxy.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/agents/rag_proxy.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/agents/speak.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/agents/speakers.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/agents/transcribe.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/agents/transcribe_live.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/agents/voice_edit.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/api.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/cli.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/config.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/config_cmd.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/constants.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/core/__init__.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/core/alignment.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/core/audio.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/core/audio_format.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/core/chroma.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/core/deps.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/core/diarization.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/core/openai_proxy.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/core/process.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/core/reranker.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/core/speaker_identity.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/core/sse.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/core/transcription_logger.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/core/utils.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/core/vad.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/core/watch.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/daemon/__init__.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/daemon/cli.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/__init__.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/_branch_name.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/_config.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/_output.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/cleanup.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/cli.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/coding_agents/__init__.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/coding_agents/aider.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/coding_agents/base.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/coding_agents/claude.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/coding_agents/codex.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/coding_agents/continue_dev.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/coding_agents/copilot.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/coding_agents/cursor_agent.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/coding_agents/gemini.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/coding_agents/opencode.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/coding_agents/registry.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/editors/__init__.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/editors/base.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/editors/cursor.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/editors/emacs.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/editors/jetbrains.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/editors/nano.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/editors/neovim.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/editors/registry.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/editors/sublime.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/editors/vim.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/editors/vscode.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/editors/zed.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/hooks.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/launch.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/project.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/registry.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/skill/SKILL.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/skill/examples.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/terminals/__init__.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/terminals/apple_terminal.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/terminals/base.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/terminals/gnome.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/terminals/iterm2.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/terminals/kitty.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/terminals/registry.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/terminals/tmux.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/terminals/warp.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/terminals/zellij.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/dev/worktree.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/docs_gen.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/example-config.toml +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/install/__init__.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/install/common.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/install/extras.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/install/hotkeys.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/install/launchd.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/install/service_config.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/install/services.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/install/systemd.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/memory/__init__.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/memory/_files.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/memory/_filters.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/memory/_git.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/memory/_indexer.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/memory/_ingest.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/memory/_persistence.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/memory/_prompt.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/memory/_retrieval.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/memory/_store.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/memory/_streaming.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/memory/_tasks.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/memory/api.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/memory/client.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/memory/engine.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/memory/entities.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/memory/models.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/opts.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/py.typed +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/rag/__init__.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/rag/_indexer.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/rag/_indexing.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/rag/_prompt.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/rag/_retriever.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/rag/_store.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/rag/_utils.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/rag/api.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/rag/client.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/rag/engine.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/rag/models.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/scripts/.runtime/.gitkeep +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/scripts/__init__.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/scripts/linux-hotkeys/README.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/scripts/linux-hotkeys/toggle-voice-edit.sh +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/scripts/macos-hotkeys/README.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/scripts/macos-hotkeys/skhd-config-example +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/scripts/macos-hotkeys/toggle-autocorrect.sh +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/scripts/macos-hotkeys/toggle-transcription.sh +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/scripts/macos-hotkeys/toggle-voice-edit.sh +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/scripts/nvidia-asr-server/README.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/scripts/nvidia-asr-server/pyproject.toml +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/scripts/nvidia-asr-server/server.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/scripts/nvidia-asr-server/shell.nix +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/scripts/nvidia-asr-server/uv.lock +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/scripts/run-openwakeword.sh +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/scripts/setup-linux-hotkeys.sh +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/scripts/setup-linux.sh +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/scripts/setup-macos-hotkeys.sh +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/scripts/setup-macos.sh +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/scripts/setup-windows.ps1 +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/scripts/start-all-services-windows.ps1 +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/scripts/start-all-services.sh +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/server/__init__.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/server/cli.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/server/common.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/server/model_manager.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/server/model_registry.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/server/proxy/__init__.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/server/proxy/api.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/server/streaming.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/server/tts/__init__.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/server/tts/api.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/server/tts/backends/__init__.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/server/tts/backends/base.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/server/tts/backends/kokoro.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/server/tts/backends/piper.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/server/tts/model_manager.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/server/tts/model_registry.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/server/tts/wyoming_handler.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/server/whisper/__init__.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/server/whisper/api.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/server/whisper/backends/__init__.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/server/whisper/backends/base.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/server/whisper/backends/faster_whisper.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/server/whisper/backends/mlx.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/server/whisper/backends/nemo.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/server/whisper/backends/transformers.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/server/whisper/languages.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/server/whisper/model_manager.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/server/whisper/model_registry.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/server/whisper/wyoming_handler.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/services/__init__.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/services/_wyoming_utils.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/services/asr.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/services/llm.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/services/tts.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/agent_cli/services/wake_word.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docker/docker-compose.yml +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docker/memory-proxy.Dockerfile +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docker/rag-proxy.Dockerfile +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docker/transcribe-proxy.Dockerfile +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docker/tts.Dockerfile +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docker/whisper.Dockerfile +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/CNAME +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/architecture/index.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/architecture/memory.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/architecture/rag.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/commands/assistant.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/commands/autocorrect.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/commands/chat.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/commands/config.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/commands/daemon.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/commands/dev.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/commands/diarize-live-session.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/commands/index.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/commands/install-extras.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/commands/install-hotkeys.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/commands/install-services.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/commands/memory.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/commands/rag-proxy.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/commands/server/index.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/commands/server/transcribe-proxy.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/commands/server/tts.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/commands/server/whisper.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/commands/speak.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/commands/speakers.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/commands/start-services.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/commands/transcribe-live.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/commands/transcribe.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/commands/voice-edit.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/configuration.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/getting-started.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/iOS_Shortcut_Guide.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/index.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/installation/docker.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/installation/index.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/installation/linux.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/installation/macos-app.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/installation/macos.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/installation/nixos.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/installation/windows.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/logo-avatar.svg +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/logo-clean.svg +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/run_markdown_code_runner.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/docs/system-integration.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/example.agent-cli-config.toml +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/justfile +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Package.resolved +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Package.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/README.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Resources/AgentCLI.entitlements +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Resources/Info.plist +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Resources/dmg-background.svg +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Sources/AgentCLI/AgentCLIApp.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Sources/AgentCLI/AgentCommand.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Sources/AgentCLI/AgentCommandRunner.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Sources/AgentCLI/AgentRuntime.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Sources/AgentCLI/AppDelegate.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Sources/AgentCLI/AppMetadata.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Sources/AgentCLI/AppUpdater.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Sources/AgentCLI/BootstrapState.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Sources/AgentCLI/CommandResult.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Sources/AgentCLI/FocusedTextTarget.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Sources/AgentCLI/LoginItemController.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Sources/AgentCLI/MenuActivityStatus.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Sources/AgentCLI/MenuActivityStatusRow.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Sources/AgentCLI/MenuActivityTracker.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Sources/AgentCLI/MenuBarIcon.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Sources/AgentCLI/RecentTranscriptionReader.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Sources/AgentCLI/RecordingIndicatorController.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Sources/AgentCLI/RecordingSoundSettings.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Sources/AgentCLI/RuntimeSettings.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Sources/AgentCLI/SettingsWindowController.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Sources/AgentCLI/Shortcuts.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Sources/AgentCLI/StatusMenuController.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Sources/AgentCLI/TranscriptPasteController.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Sources/AgentCLI/TranscriptionSettings.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Sources/AgentCLI/VoiceLevelOverlay.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Tests/AgentCLITests/AgentCommandTests.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Tests/AgentCLITests/LoginItemControllerTests.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Tests/AgentCLITests/RecentTranscriptionReaderTests.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Tests/AgentCLITests/RecordingIndicatorControllerTests.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Tests/AgentCLITests/ShortcutDefaultsTests.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/AgentCLI/Tests/AgentCLITests/VoiceLevelMeterTests.swift +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/appcast.xml +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/build-macos-app.sh +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/macos/test-macos-app-e2e.sh +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/pyproject.toml +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/reddit.md +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/shell.nix +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/__init__.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/agents/__init__.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/agents/test_fix_my_text.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/agents/test_interactive.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/agents/test_interactive_extra.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/agents/test_memory_add.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/agents/test_speak.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/agents/test_speak_e2e.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/agents/test_speakers.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/agents/test_transcribe.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/agents/test_transcribe_agent.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/agents/test_transcribe_e2e.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/agents/test_transcribe_live.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/agents/test_transcribe_recovery.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/agents/test_tts_common.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/agents/test_tts_common_extra.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/agents/test_voice_agent_common.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/agents/test_voice_edit.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/agents/test_voice_edit_e2e.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/agents/test_wake_word_assistant.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/conftest.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/core/__init__.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/core/test_audio.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/core/test_audio_format.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/core/test_chroma.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/core/test_sse.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/core/test_vad.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/core/test_watch.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/dev/__init__.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/dev/test_cleanup.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/dev/test_cli.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/dev/test_coding_agents.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/dev/test_editors.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/dev/test_hooks.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/dev/test_launch.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/dev/test_project.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/dev/test_terminals.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/dev/test_verification.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/dev/test_worktree.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/install/__init__.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/install/test_extras.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/install/test_launchd.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/memory/__init__.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/memory/test_api_health.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/memory/test_api_integration_liveish.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/memory/test_client.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/memory/test_engine.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/memory/test_files.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/memory/test_filters.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/memory/test_git_integration.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/memory/test_indexer.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/memory/test_memory_integration.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/memory/test_proxy_passthrough.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/memory/test_store.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/memory/test_utils.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/mocks/__init__.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/mocks/audio.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/mocks/llm.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/mocks/wyoming.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/rag/__init__.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/rag/test_api.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/rag/test_engine.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/rag/test_history.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/rag/test_indexer.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/rag/test_indexing.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/rag/test_rag_client.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/rag/test_rag_integration_liveish.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/rag/test_rag_proxy_passthrough.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/rag/test_retriever.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/rag/test_store.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/rag/test_utils.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_alignment.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_api.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_api_integration.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_asr.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_asr_recovery.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_audio_e2e.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_cli.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_config.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_config_cmd.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_daemon.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_diarization.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_diarize_live_session.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_docs_gen.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_env_vars.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_faster_whisper_backend.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_json_output.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_llm.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_llm_gemini.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_macos_app.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_memory_tools.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_mlx_backend.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_nemo_backend.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_normalize_appcast.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_process_manager.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_requires_extras.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_server_streaming.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_server_tts.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_server_whisper.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_services.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_speaker_identity.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_tools.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_transformers_backend.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_tts.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_utils.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_wake_word.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/tests/test_wyoming_utils.py +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/uv.lock +0 -0
- {agent_cli-0.98.2 → agent_cli-0.98.3}/zensical.toml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-cli
|
|
3
|
-
Version: 0.98.
|
|
3
|
+
Version: 0.98.3
|
|
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>
|
|
@@ -3,6 +3,70 @@ import Carbon.HIToolbox
|
|
|
3
3
|
import Foundation
|
|
4
4
|
import KeyboardShortcuts
|
|
5
5
|
|
|
6
|
+
enum HoldToTranscribeStopDecision: Equatable {
|
|
7
|
+
case none
|
|
8
|
+
case deferUntilStartCompletes
|
|
9
|
+
case stopNow
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
struct HoldToTranscribeKeyState {
|
|
13
|
+
private enum State {
|
|
14
|
+
case idle
|
|
15
|
+
case startPending(releaseRequested: Bool)
|
|
16
|
+
case recording
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
private var state: State = .idle
|
|
20
|
+
|
|
21
|
+
var isStartPendingOrRecording: Bool {
|
|
22
|
+
switch state {
|
|
23
|
+
case .idle:
|
|
24
|
+
return false
|
|
25
|
+
case .startPending, .recording:
|
|
26
|
+
return true
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
mutating func requestStart() -> Bool {
|
|
31
|
+
guard case .idle = state else { return false }
|
|
32
|
+
state = .startPending(releaseRequested: false)
|
|
33
|
+
return true
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
mutating func releaseKey() -> HoldToTranscribeStopDecision {
|
|
37
|
+
switch state {
|
|
38
|
+
case .idle:
|
|
39
|
+
return .none
|
|
40
|
+
case .startPending:
|
|
41
|
+
state = .startPending(releaseRequested: true)
|
|
42
|
+
return .deferUntilStartCompletes
|
|
43
|
+
case .recording:
|
|
44
|
+
state = .idle
|
|
45
|
+
return .stopNow
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
mutating func completeStart(started: Bool) -> HoldToTranscribeStopDecision {
|
|
50
|
+
guard case let .startPending(releaseRequested) = state else { return .none }
|
|
51
|
+
guard started else {
|
|
52
|
+
state = .idle
|
|
53
|
+
return .none
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if releaseRequested {
|
|
57
|
+
state = .idle
|
|
58
|
+
return .stopNow
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
state = .recording
|
|
62
|
+
return .none
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
mutating func reset() {
|
|
66
|
+
state = .idle
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
6
70
|
final class ConfigurableHotkeyController {
|
|
7
71
|
static let shared = ConfigurableHotkeyController()
|
|
8
72
|
|
|
@@ -12,7 +76,7 @@ final class ConfigurableHotkeyController {
|
|
|
12
76
|
private var runLoopSource: CFRunLoopSource?
|
|
13
77
|
private var functionKeyIsDown = false
|
|
14
78
|
private var suppressNextFunctionKeyRelease = false
|
|
15
|
-
private var
|
|
79
|
+
private var holdToTranscribeKeyState = HoldToTranscribeKeyState()
|
|
16
80
|
private var pendingHoldToTranscribeWorkItem: DispatchWorkItem?
|
|
17
81
|
private let holdToTranscribeDelay: TimeInterval = 0.16
|
|
18
82
|
|
|
@@ -52,9 +116,7 @@ final class ConfigurableHotkeyController {
|
|
|
52
116
|
!self.usesFunctionShortcut(shortcut) else {
|
|
53
117
|
return
|
|
54
118
|
}
|
|
55
|
-
|
|
56
|
-
_ = runner.beginHoldToTranscribe()
|
|
57
|
-
}
|
|
119
|
+
self.requestHoldToTranscribeStart(preferredRunner: runner)
|
|
58
120
|
}
|
|
59
121
|
KeyboardShortcuts.onKeyUp(for: .holdToTranscribe) {
|
|
60
122
|
guard !ShortcutRecordingState.shared.isRecording,
|
|
@@ -62,7 +124,7 @@ final class ConfigurableHotkeyController {
|
|
|
62
124
|
!self.usesFunctionShortcut(shortcut) else {
|
|
63
125
|
return
|
|
64
126
|
}
|
|
65
|
-
|
|
127
|
+
self.releaseHoldToTranscribeKey()
|
|
66
128
|
}
|
|
67
129
|
}
|
|
68
130
|
|
|
@@ -120,7 +182,7 @@ final class ConfigurableHotkeyController {
|
|
|
120
182
|
runLoopSource = nil
|
|
121
183
|
functionKeyIsDown = false
|
|
122
184
|
suppressNextFunctionKeyRelease = false
|
|
123
|
-
|
|
185
|
+
holdToTranscribeKeyState.reset()
|
|
124
186
|
}
|
|
125
187
|
|
|
126
188
|
func resumeFunctionAwareHotkeysAfterAccessibilityReset(runner: AgentCommandRunner) {
|
|
@@ -169,7 +231,7 @@ final class ConfigurableHotkeyController {
|
|
|
169
231
|
cancelPendingHoldToTranscribe()
|
|
170
232
|
suppressNextFunctionKeyRelease = usesFunctionShortcut(shortcut)
|
|
171
233
|
|
|
172
|
-
if !isAutorepeat(event) && !
|
|
234
|
+
if !isAutorepeat(event) && !holdToTranscribeKeyState.isStartPendingOrRecording {
|
|
173
235
|
Task { @MainActor in
|
|
174
236
|
self.runner?.run(.toggleTranscription)
|
|
175
237
|
}
|
|
@@ -190,25 +252,14 @@ final class ConfigurableHotkeyController {
|
|
|
190
252
|
}
|
|
191
253
|
|
|
192
254
|
if type == .keyDown {
|
|
193
|
-
if !isAutorepeat(event)
|
|
194
|
-
|
|
195
|
-
guard let runner = self.runner else { return }
|
|
196
|
-
if runner.beginHoldToTranscribe() {
|
|
197
|
-
self.holdToTranscribeIsRecording = true
|
|
198
|
-
}
|
|
199
|
-
}
|
|
255
|
+
if !isAutorepeat(event) {
|
|
256
|
+
requestHoldToTranscribeStart()
|
|
200
257
|
}
|
|
201
258
|
return true
|
|
202
259
|
}
|
|
203
260
|
|
|
204
261
|
if type == .keyUp {
|
|
205
|
-
|
|
206
|
-
holdToTranscribeIsRecording = false
|
|
207
|
-
Task { @MainActor in
|
|
208
|
-
guard let runner = self.runner else { return }
|
|
209
|
-
runner.endHoldToTranscribe()
|
|
210
|
-
}
|
|
211
|
-
}
|
|
262
|
+
releaseHoldToTranscribeKey()
|
|
212
263
|
return true
|
|
213
264
|
}
|
|
214
265
|
|
|
@@ -238,17 +289,7 @@ final class ConfigurableHotkeyController {
|
|
|
238
289
|
return true
|
|
239
290
|
}
|
|
240
291
|
|
|
241
|
-
|
|
242
|
-
holdToTranscribeIsRecording = false
|
|
243
|
-
Task { @MainActor in
|
|
244
|
-
guard let runner = self.runner else { return }
|
|
245
|
-
runner.endHoldToTranscribe()
|
|
246
|
-
}
|
|
247
|
-
} else {
|
|
248
|
-
Task { @MainActor in
|
|
249
|
-
_ = self.runner?.stopTranscriptionFromFunctionKeyIfNeeded()
|
|
250
|
-
}
|
|
251
|
-
}
|
|
292
|
+
releaseHoldToTranscribeKey(stopExistingFunctionRecordingIfIdle: true)
|
|
252
293
|
|
|
253
294
|
return true
|
|
254
295
|
}
|
|
@@ -264,16 +305,7 @@ final class ConfigurableHotkeyController {
|
|
|
264
305
|
}
|
|
265
306
|
|
|
266
307
|
self.pendingHoldToTranscribeWorkItem = nil
|
|
267
|
-
|
|
268
|
-
if self.runner?.stopTranscriptionFromFunctionKeyIfNeeded() == true {
|
|
269
|
-
return
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
guard let runner = self.runner else { return }
|
|
273
|
-
if runner.beginHoldToTranscribe() {
|
|
274
|
-
self.holdToTranscribeIsRecording = true
|
|
275
|
-
}
|
|
276
|
-
}
|
|
308
|
+
self.requestHoldToTranscribeStart(stopExistingFunctionRecordingFirst: true)
|
|
277
309
|
}
|
|
278
310
|
|
|
279
311
|
pendingHoldToTranscribeWorkItem = workItem
|
|
@@ -287,6 +319,57 @@ final class ConfigurableHotkeyController {
|
|
|
287
319
|
pendingHoldToTranscribeWorkItem = nil
|
|
288
320
|
}
|
|
289
321
|
|
|
322
|
+
private func requestHoldToTranscribeStart(
|
|
323
|
+
preferredRunner: AgentCommandRunner? = nil,
|
|
324
|
+
stopExistingFunctionRecordingFirst: Bool = false
|
|
325
|
+
) {
|
|
326
|
+
guard holdToTranscribeKeyState.requestStart() else { return }
|
|
327
|
+
Task { @MainActor in
|
|
328
|
+
if stopExistingFunctionRecordingFirst,
|
|
329
|
+
self.runner?.stopTranscriptionFromFunctionKeyIfNeeded() == true {
|
|
330
|
+
_ = self.holdToTranscribeKeyState.completeStart(started: false)
|
|
331
|
+
return
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
guard let runner = preferredRunner ?? self.runner else {
|
|
335
|
+
_ = self.holdToTranscribeKeyState.completeStart(started: false)
|
|
336
|
+
return
|
|
337
|
+
}
|
|
338
|
+
self.finishHoldToTranscribeStart(runner: runner)
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
@MainActor
|
|
343
|
+
private func finishHoldToTranscribeStart(runner: AgentCommandRunner) {
|
|
344
|
+
let started = runner.beginHoldToTranscribe()
|
|
345
|
+
let action = holdToTranscribeKeyState.completeStart(started: started)
|
|
346
|
+
if action == .stopNow {
|
|
347
|
+
runner.endHoldToTranscribe()
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
private func releaseHoldToTranscribeKey(stopExistingFunctionRecordingIfIdle: Bool = false) {
|
|
352
|
+
switch holdToTranscribeKeyState.releaseKey() {
|
|
353
|
+
case .stopNow:
|
|
354
|
+
stopHoldToTranscribe()
|
|
355
|
+
case .none:
|
|
356
|
+
if stopExistingFunctionRecordingIfIdle {
|
|
357
|
+
Task { @MainActor in
|
|
358
|
+
_ = self.runner?.stopTranscriptionFromFunctionKeyIfNeeded()
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
case .deferUntilStartCompletes:
|
|
362
|
+
break
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
private func stopHoldToTranscribe() {
|
|
367
|
+
Task { @MainActor in
|
|
368
|
+
guard let runner = self.runner else { return }
|
|
369
|
+
runner.endHoldToTranscribe()
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
|
|
290
373
|
private func shortcutMatches(type: CGEventType, event: CGEvent, shortcut: KeyboardShortcuts.Shortcut) -> Bool {
|
|
291
374
|
guard type == .keyDown || type == .keyUp else {
|
|
292
375
|
return false
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#if canImport(XCTest)
|
|
2
|
+
import XCTest
|
|
3
|
+
@testable import AgentCLI
|
|
4
|
+
|
|
5
|
+
final class ConfigurableHotkeyControllerTests: XCTestCase {
|
|
6
|
+
func testReleaseBeforeHoldStartCompletesStopsAfterSuccessfulStart() {
|
|
7
|
+
var state = HoldToTranscribeKeyState()
|
|
8
|
+
|
|
9
|
+
XCTAssertTrue(state.requestStart())
|
|
10
|
+
XCTAssertEqual(state.releaseKey(), .deferUntilStartCompletes)
|
|
11
|
+
|
|
12
|
+
XCTAssertEqual(state.completeStart(started: true), .stopNow)
|
|
13
|
+
XCTAssertFalse(state.isStartPendingOrRecording)
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
func testReleaseAfterHoldStartStopsImmediately() {
|
|
17
|
+
var state = HoldToTranscribeKeyState()
|
|
18
|
+
|
|
19
|
+
XCTAssertTrue(state.requestStart())
|
|
20
|
+
XCTAssertEqual(state.completeStart(started: true), .none)
|
|
21
|
+
|
|
22
|
+
XCTAssertEqual(state.releaseKey(), .stopNow)
|
|
23
|
+
XCTAssertFalse(state.isStartPendingOrRecording)
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
func testFailedHoldStartAfterReleaseClearsPendingStateWithoutStop() {
|
|
27
|
+
var state = HoldToTranscribeKeyState()
|
|
28
|
+
|
|
29
|
+
XCTAssertTrue(state.requestStart())
|
|
30
|
+
XCTAssertEqual(state.releaseKey(), .deferUntilStartCompletes)
|
|
31
|
+
|
|
32
|
+
XCTAssertEqual(state.completeStart(started: false), .none)
|
|
33
|
+
XCTAssertFalse(state.isStartPendingOrRecording)
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
#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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|