agent-cli 0.98.0__tar.gz → 0.98.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.98.0 → agent_cli-0.98.1}/PKG-INFO +1 -1
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/core/deps.py +35 -1
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/install/launchd.py +6 -4
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Sources/AgentCLI/AgentRuntime.swift +2 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Sources/AgentCLI/SettingsWindowController.swift +1 -1
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Sources/AgentCLI/Shortcuts.swift +41 -1
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Sources/AgentCLI/TranscriptionSettings.swift +11 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Tests/AgentCLITests/AgentCommandTests.swift +48 -4
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/appcast.xml +17 -16
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_daemon.py +45 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.claude/skills/agent-cli-dev/SKILL.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.claude/skills/agent-cli-dev/examples.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.claude-plugin/README.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.claude-plugin/marketplace.json +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.claude-plugin/plugin.json +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.claude-plugin/skills/agent-cli-dev/SKILL.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.claude-plugin/skills/agent-cli-dev/examples.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.cursorrules +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.dockerignore +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.env.example +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.github/logo.svg +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.github/release-drafter.yml +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.github/renovate.json +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.github/scripts/check_extras_sync.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.github/scripts/check_plugin_skill_sync.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.github/scripts/normalize_appcast.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.github/scripts/sync_extras.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.github/scripts/sync_requirements.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.github/workflows/automerge.yml +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.github/workflows/docker.yml +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.github/workflows/docs.yml +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.github/workflows/markdown-code-runner.yml +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.github/workflows/pytest.yml +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.github/workflows/release-drafter.yml +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.github/workflows/release.yml +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.github/workflows/toc.yaml +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.gitignore +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.jscpd.json +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.pre-commit-config.yaml +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.prompts/docs-review.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/.prompts/pr-review.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/CLAUDE.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/LICENSE +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/LLAMA_SERVER_USAGE.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/README.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/__init__.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/__main__.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/_extras.json +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/_overrides/nemo-whisper.txt +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/_requirements/.gitkeep +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/_requirements/audio.txt +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/_requirements/diarization.txt +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/_requirements/faster-whisper.txt +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/_requirements/kokoro.txt +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/_requirements/llm.txt +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/_requirements/memory.txt +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/_requirements/mlx-whisper.txt +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/_requirements/nemo-whisper.txt +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/_requirements/piper.txt +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/_requirements/rag.txt +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/_requirements/server.txt +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/_requirements/speed.txt +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/_requirements/vad.txt +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/_requirements/vectordb.txt +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/_requirements/whisper-transformers.txt +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/_requirements/wyoming.txt +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/_tools.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/agents/__init__.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/agents/_voice_agent_common.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/agents/assistant.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/agents/autocorrect.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/agents/chat.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/agents/diarize_live_session.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/agents/memory/__init__.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/agents/memory/add.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/agents/memory/proxy.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/agents/rag_proxy.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/agents/speak.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/agents/speakers.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/agents/transcribe.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/agents/transcribe_live.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/agents/voice_edit.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/api.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/cli.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/config.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/config_cmd.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/constants.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/core/__init__.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/core/alignment.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/core/audio.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/core/audio_format.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/core/chroma.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/core/diarization.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/core/openai_proxy.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/core/process.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/core/reranker.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/core/speaker_identity.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/core/sse.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/core/transcription_logger.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/core/utils.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/core/vad.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/core/watch.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/daemon/__init__.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/daemon/cli.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/__init__.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/_branch_name.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/_config.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/_output.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/cleanup.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/cli.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/coding_agents/__init__.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/coding_agents/aider.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/coding_agents/base.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/coding_agents/claude.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/coding_agents/codex.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/coding_agents/continue_dev.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/coding_agents/copilot.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/coding_agents/cursor_agent.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/coding_agents/gemini.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/coding_agents/opencode.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/coding_agents/registry.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/editors/__init__.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/editors/base.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/editors/cursor.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/editors/emacs.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/editors/jetbrains.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/editors/nano.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/editors/neovim.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/editors/registry.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/editors/sublime.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/editors/vim.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/editors/vscode.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/editors/zed.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/hooks.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/launch.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/project.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/registry.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/skill/SKILL.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/skill/examples.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/terminals/__init__.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/terminals/apple_terminal.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/terminals/base.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/terminals/gnome.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/terminals/iterm2.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/terminals/kitty.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/terminals/registry.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/terminals/tmux.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/terminals/warp.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/terminals/zellij.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/dev/worktree.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/docs_gen.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/example-config.toml +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/install/__init__.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/install/common.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/install/extras.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/install/hotkeys.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/install/service_config.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/install/services.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/install/systemd.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/memory/__init__.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/memory/_files.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/memory/_filters.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/memory/_git.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/memory/_indexer.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/memory/_ingest.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/memory/_persistence.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/memory/_prompt.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/memory/_retrieval.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/memory/_store.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/memory/_streaming.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/memory/_tasks.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/memory/api.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/memory/client.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/memory/engine.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/memory/entities.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/memory/models.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/opts.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/py.typed +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/rag/__init__.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/rag/_indexer.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/rag/_indexing.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/rag/_prompt.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/rag/_retriever.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/rag/_store.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/rag/_utils.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/rag/api.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/rag/client.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/rag/engine.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/rag/models.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/scripts/.runtime/.gitkeep +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/scripts/__init__.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/scripts/linux-hotkeys/README.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/scripts/linux-hotkeys/toggle-voice-edit.sh +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/scripts/macos-hotkeys/README.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/scripts/macos-hotkeys/skhd-config-example +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/scripts/macos-hotkeys/toggle-autocorrect.sh +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/scripts/macos-hotkeys/toggle-transcription.sh +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/scripts/macos-hotkeys/toggle-voice-edit.sh +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/scripts/nvidia-asr-server/README.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/scripts/nvidia-asr-server/pyproject.toml +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/scripts/nvidia-asr-server/server.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/scripts/nvidia-asr-server/shell.nix +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/scripts/nvidia-asr-server/uv.lock +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/scripts/run-openwakeword.sh +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/scripts/setup-linux-hotkeys.sh +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/scripts/setup-linux.sh +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/scripts/setup-macos-hotkeys.sh +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/scripts/setup-macos.sh +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/scripts/setup-windows.ps1 +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/scripts/start-all-services-windows.ps1 +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/scripts/start-all-services.sh +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/server/__init__.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/server/cli.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/server/common.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/server/model_manager.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/server/model_registry.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/server/proxy/__init__.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/server/proxy/api.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/server/streaming.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/server/tts/__init__.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/server/tts/api.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/server/tts/backends/__init__.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/server/tts/backends/base.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/server/tts/backends/kokoro.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/server/tts/backends/piper.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/server/tts/model_manager.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/server/tts/model_registry.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/server/tts/wyoming_handler.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/server/whisper/__init__.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/server/whisper/api.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/server/whisper/backends/__init__.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/server/whisper/backends/base.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/server/whisper/backends/faster_whisper.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/server/whisper/backends/mlx.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/server/whisper/backends/nemo.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/server/whisper/backends/transformers.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/server/whisper/languages.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/server/whisper/model_manager.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/server/whisper/model_registry.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/server/whisper/wyoming_handler.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/services/__init__.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/services/_wyoming_utils.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/services/asr.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/services/llm.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/services/tts.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/agent_cli/services/wake_word.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docker/docker-compose.yml +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docker/memory-proxy.Dockerfile +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docker/rag-proxy.Dockerfile +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docker/transcribe-proxy.Dockerfile +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docker/tts.Dockerfile +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docker/whisper.Dockerfile +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/CNAME +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/architecture/index.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/architecture/memory.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/architecture/rag.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/commands/assistant.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/commands/autocorrect.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/commands/chat.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/commands/config.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/commands/daemon.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/commands/dev.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/commands/diarize-live-session.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/commands/index.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/commands/install-extras.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/commands/install-hotkeys.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/commands/install-services.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/commands/memory.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/commands/rag-proxy.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/commands/server/index.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/commands/server/transcribe-proxy.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/commands/server/tts.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/commands/server/whisper.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/commands/speak.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/commands/speakers.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/commands/start-services.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/commands/transcribe-live.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/commands/transcribe.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/commands/voice-edit.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/configuration.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/getting-started.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/iOS_Shortcut_Guide.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/index.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/installation/docker.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/installation/index.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/installation/linux.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/installation/macos-app.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/installation/macos.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/installation/nixos.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/installation/windows.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/logo-avatar.svg +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/logo-clean.svg +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/run_markdown_code_runner.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/docs/system-integration.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/example.agent-cli-config.toml +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/justfile +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Package.resolved +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Package.swift +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/README.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Resources/AgentCLI.entitlements +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Resources/Info.plist +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Resources/dmg-background.svg +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Sources/AgentCLI/AgentCLIApp.swift +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Sources/AgentCLI/AgentCommand.swift +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Sources/AgentCLI/AgentCommandRunner.swift +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Sources/AgentCLI/AppDelegate.swift +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Sources/AgentCLI/AppMetadata.swift +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Sources/AgentCLI/AppUpdater.swift +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Sources/AgentCLI/BootstrapState.swift +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Sources/AgentCLI/CommandResult.swift +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Sources/AgentCLI/ConfigurableHotkeyController.swift +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Sources/AgentCLI/FocusedTextTarget.swift +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Sources/AgentCLI/LoginItemController.swift +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Sources/AgentCLI/MenuActivityStatus.swift +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Sources/AgentCLI/MenuActivityStatusRow.swift +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Sources/AgentCLI/MenuActivityTracker.swift +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Sources/AgentCLI/MenuBarIcon.swift +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Sources/AgentCLI/RecentTranscriptionReader.swift +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Sources/AgentCLI/RecordingIndicatorController.swift +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Sources/AgentCLI/RecordingSoundSettings.swift +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Sources/AgentCLI/RuntimeSettings.swift +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Sources/AgentCLI/StatusMenuController.swift +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Sources/AgentCLI/TranscriptPasteController.swift +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Sources/AgentCLI/VoiceLevelOverlay.swift +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Tests/AgentCLITests/LoginItemControllerTests.swift +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Tests/AgentCLITests/RecentTranscriptionReaderTests.swift +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Tests/AgentCLITests/RecordingIndicatorControllerTests.swift +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Tests/AgentCLITests/ShortcutDefaultsTests.swift +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Tests/AgentCLITests/VoiceLevelMeterTests.swift +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/build-macos-app.sh +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/macos/test-macos-app-e2e.sh +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/pyproject.toml +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/reddit.md +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/shell.nix +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/__init__.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/agents/__init__.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/agents/test_fix_my_text.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/agents/test_interactive.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/agents/test_interactive_extra.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/agents/test_memory_add.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/agents/test_speak.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/agents/test_speak_e2e.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/agents/test_speakers.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/agents/test_transcribe.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/agents/test_transcribe_agent.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/agents/test_transcribe_e2e.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/agents/test_transcribe_live.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/agents/test_transcribe_recovery.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/agents/test_tts_common.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/agents/test_tts_common_extra.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/agents/test_voice_agent_common.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/agents/test_voice_edit.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/agents/test_voice_edit_e2e.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/agents/test_wake_word_assistant.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/conftest.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/core/__init__.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/core/test_audio.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/core/test_audio_format.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/core/test_chroma.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/core/test_sse.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/core/test_vad.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/core/test_watch.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/dev/__init__.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/dev/test_cleanup.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/dev/test_cli.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/dev/test_coding_agents.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/dev/test_editors.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/dev/test_hooks.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/dev/test_launch.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/dev/test_project.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/dev/test_terminals.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/dev/test_verification.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/dev/test_worktree.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/install/__init__.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/install/test_extras.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/install/test_launchd.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/memory/__init__.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/memory/test_api_health.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/memory/test_api_integration_liveish.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/memory/test_client.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/memory/test_engine.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/memory/test_files.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/memory/test_filters.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/memory/test_git_integration.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/memory/test_indexer.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/memory/test_memory_integration.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/memory/test_proxy_passthrough.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/memory/test_store.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/memory/test_utils.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/mocks/__init__.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/mocks/audio.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/mocks/llm.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/mocks/wyoming.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/rag/__init__.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/rag/test_api.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/rag/test_engine.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/rag/test_history.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/rag/test_indexer.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/rag/test_indexing.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/rag/test_rag_client.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/rag/test_rag_integration_liveish.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/rag/test_rag_proxy_passthrough.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/rag/test_retriever.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/rag/test_store.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/rag/test_utils.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_alignment.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_api.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_api_integration.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_asr.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_asr_recovery.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_audio_e2e.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_cli.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_config.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_config_cmd.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_diarization.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_diarize_live_session.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_docs_gen.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_env_vars.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_faster_whisper_backend.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_json_output.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_llm.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_llm_gemini.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_macos_app.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_memory_tools.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_mlx_backend.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_nemo_backend.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_normalize_appcast.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_process_manager.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_requires_extras.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_server_streaming.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_server_tts.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_server_whisper.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_services.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_speaker_identity.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_tools.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_transformers_backend.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_tts.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_utils.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_wake_word.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/tests/test_wyoming_utils.py +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/uv.lock +0 -0
- {agent_cli-0.98.0 → agent_cli-0.98.1}/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.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>
|
|
@@ -283,7 +283,41 @@ def _is_uv_cmd(cmd: list[str]) -> bool:
|
|
|
283
283
|
|
|
284
284
|
def _uv_override_path(extra: str) -> Path:
|
|
285
285
|
"""Return the override file path for an extra."""
|
|
286
|
-
|
|
286
|
+
source = _OVERRIDES_DIR / f"{extra}.txt"
|
|
287
|
+
if not _path_contains_whitespace(source):
|
|
288
|
+
return source
|
|
289
|
+
# uv mishandles --overrides paths with spaces (for example, app bundles
|
|
290
|
+
# installed under "Application Support"), so hand it a copied no-space path.
|
|
291
|
+
return _materialize_uv_override(source)
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
def _path_contains_whitespace(path: Path) -> bool:
|
|
295
|
+
return any(character.isspace() for character in str(path))
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
def _materialized_uv_overrides_dir() -> Path:
|
|
299
|
+
configured_dir = os.environ.get("AGENTCLI_UV_OVERRIDES_DIR")
|
|
300
|
+
if configured_dir:
|
|
301
|
+
configured_path = Path(configured_dir).expanduser()
|
|
302
|
+
if not _path_contains_whitespace(configured_path):
|
|
303
|
+
return configured_path
|
|
304
|
+
|
|
305
|
+
# Keep this outside AGENTCLI_APP_SUPPORT_DIR; that path usually contains a
|
|
306
|
+
# space on macOS and would reintroduce the launchd/uv parse failure.
|
|
307
|
+
return Path.home() / ".cache" / "agent-cli" / "uv-overrides"
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
def _materialize_uv_override(source: Path) -> Path:
|
|
311
|
+
"""Copy a bundled override to a no-space path that uv can parse."""
|
|
312
|
+
target = _materialized_uv_overrides_dir() / source.name
|
|
313
|
+
try:
|
|
314
|
+
source_bytes = source.read_bytes()
|
|
315
|
+
target.parent.mkdir(parents=True, exist_ok=True)
|
|
316
|
+
if not target.exists() or target.read_bytes() != source_bytes:
|
|
317
|
+
target.write_bytes(source_bytes)
|
|
318
|
+
except OSError:
|
|
319
|
+
return source
|
|
320
|
+
return target
|
|
287
321
|
|
|
288
322
|
|
|
289
323
|
def _supports_uv_runtime_override(
|
|
@@ -88,16 +88,18 @@ def _get_recent_logs(service_name: str, num_lines: int = 10) -> list[str]:
|
|
|
88
88
|
|
|
89
89
|
lines: list[str] = []
|
|
90
90
|
|
|
91
|
-
# Prefer stdout as it has structured output (startup message, usage examples)
|
|
92
|
-
# stderr often has noisy warnings from libraries like PyTorch/Kokoro
|
|
93
91
|
for log_file in [stdout_log, stderr_log]:
|
|
94
92
|
if log_file.exists():
|
|
95
93
|
try:
|
|
96
94
|
with log_file.open() as f:
|
|
97
95
|
all_lines = f.readlines()
|
|
98
|
-
|
|
96
|
+
recent_lines = [line.rstrip() for line in all_lines[-num_lines:]]
|
|
97
|
+
if not recent_lines:
|
|
98
|
+
continue
|
|
99
99
|
if lines:
|
|
100
|
-
|
|
100
|
+
lines.append("")
|
|
101
|
+
lines.append(f"==> {log_file.name} <==")
|
|
102
|
+
lines.extend(recent_lines)
|
|
101
103
|
except OSError:
|
|
102
104
|
continue
|
|
103
105
|
|
|
@@ -360,8 +360,10 @@ struct AgentRuntime {
|
|
|
360
360
|
var contents = "runtimeMode=\(modeName)\npackageSource=\(agentCLIPackageSource)\n"
|
|
361
361
|
if runtimeMode == .bundled {
|
|
362
362
|
let backend = TranscriptionSettings.selectedBackend(userDefaults: userDefaults)
|
|
363
|
+
let ttlSeconds = TranscriptionSettings.selectedModelTTLSeconds(userDefaults: userDefaults)
|
|
363
364
|
contents += "transcriptionBackend=\(backend.rawValue)\n"
|
|
364
365
|
contents += "transcriptionModel=\(TranscriptionSettings.selectedModelName(userDefaults: userDefaults))\n"
|
|
366
|
+
contents += "transcriptionModelTTLSeconds=\(ttlSeconds)\n"
|
|
365
367
|
}
|
|
366
368
|
return contents
|
|
367
369
|
}
|
{agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Sources/AgentCLI/SettingsWindowController.swift
RENAMED
|
@@ -5,7 +5,7 @@ import SwiftUI
|
|
|
5
5
|
final class SettingsWindowController {
|
|
6
6
|
static let shared = SettingsWindowController()
|
|
7
7
|
|
|
8
|
-
private static let contentSize = NSSize(width: 460, height:
|
|
8
|
+
private static let contentSize = NSSize(width: 460, height: 680)
|
|
9
9
|
|
|
10
10
|
private var window: NSWindow?
|
|
11
11
|
|
|
@@ -285,6 +285,8 @@ struct SettingsView: View {
|
|
|
285
285
|
private var transcriptionBackend = TranscriptionBackend.whisper.rawValue
|
|
286
286
|
@AppStorage(TranscriptionSettings.transcriptionModelKey)
|
|
287
287
|
private var transcriptionModel = TranscriptionBackend.whisper.defaultModelName
|
|
288
|
+
@AppStorage(TranscriptionSettings.transcriptionModelTTLSecondsKey)
|
|
289
|
+
private var transcriptionModelTTLSeconds = TranscriptionSettings.defaultModelTTLSeconds
|
|
288
290
|
@AppStorage(TranscriptionSettings.transcriptionExtraInstructionsKey)
|
|
289
291
|
private var transcriptionExtraInstructions = ""
|
|
290
292
|
@State private var shortcutRevision = 0
|
|
@@ -335,13 +337,31 @@ struct SettingsView: View {
|
|
|
335
337
|
}
|
|
336
338
|
.pickerStyle(.menu)
|
|
337
339
|
.disabled(useUserInstalledAgentCLI)
|
|
340
|
+
|
|
341
|
+
Stepper(
|
|
342
|
+
value: Binding(
|
|
343
|
+
get: { max(0, transcriptionModelTTLSeconds) },
|
|
344
|
+
set: { transcriptionModelTTLSeconds = max(0, $0) }
|
|
345
|
+
),
|
|
346
|
+
in: 0...86_400,
|
|
347
|
+
step: 60
|
|
348
|
+
) {
|
|
349
|
+
HStack {
|
|
350
|
+
Text("Model TTL")
|
|
351
|
+
Spacer()
|
|
352
|
+
Text(Self.formatTTLSeconds(transcriptionModelTTLSeconds))
|
|
353
|
+
.foregroundStyle(.secondary)
|
|
354
|
+
.monospacedDigit()
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
.disabled(useUserInstalledAgentCLI)
|
|
338
358
|
} header: {
|
|
339
359
|
Text("Voice Service")
|
|
340
360
|
} footer: {
|
|
341
361
|
Text(
|
|
342
362
|
useUserInstalledAgentCLI
|
|
343
363
|
? "Disabled while User-Installed agent-cli is active."
|
|
344
|
-
: "
|
|
364
|
+
: "TTL is how long the selected model lives in memory after the last transcription. Set to 0 to keep it loaded until the voice service restarts."
|
|
345
365
|
)
|
|
346
366
|
}
|
|
347
367
|
|
|
@@ -426,6 +446,26 @@ struct SettingsView: View {
|
|
|
426
446
|
guard backend.modelOption(named: transcriptionModel) == nil else { return }
|
|
427
447
|
transcriptionModel = backend.defaultModelName
|
|
428
448
|
}
|
|
449
|
+
|
|
450
|
+
private static func formatTTLSeconds(_ seconds: Int) -> String {
|
|
451
|
+
let clampedSeconds = max(0, seconds)
|
|
452
|
+
if clampedSeconds == 0 {
|
|
453
|
+
return "Never"
|
|
454
|
+
}
|
|
455
|
+
if clampedSeconds < 60 {
|
|
456
|
+
return "\(clampedSeconds)s"
|
|
457
|
+
}
|
|
458
|
+
if clampedSeconds < 3_600 {
|
|
459
|
+
return "\(clampedSeconds / 60)m"
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
let hours = clampedSeconds / 3_600
|
|
463
|
+
let minutes = (clampedSeconds % 3_600) / 60
|
|
464
|
+
if minutes == 0 {
|
|
465
|
+
return "\(hours)h"
|
|
466
|
+
}
|
|
467
|
+
return "\(hours)h \(minutes)m"
|
|
468
|
+
}
|
|
429
469
|
}
|
|
430
470
|
|
|
431
471
|
struct ShortcutRecorderRow: View {
|
{agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Sources/AgentCLI/TranscriptionSettings.swift
RENAMED
|
@@ -61,6 +61,8 @@ enum TranscriptionSettings {
|
|
|
61
61
|
static let transcriptionExtraInstructionsKey = "transcriptionExtraInstructions"
|
|
62
62
|
static let transcriptionBackendKey = "transcriptionBackend"
|
|
63
63
|
static let transcriptionModelKey = "transcriptionModel"
|
|
64
|
+
static let transcriptionModelTTLSecondsKey = "transcriptionModelTTLSeconds"
|
|
65
|
+
static let defaultModelTTLSeconds = 300
|
|
64
66
|
|
|
65
67
|
static var extraInstructions: String {
|
|
66
68
|
UserDefaults.standard.string(forKey: transcriptionExtraInstructionsKey) ?? ""
|
|
@@ -77,6 +79,13 @@ enum TranscriptionSettings {
|
|
|
77
79
|
return backend.modelOption(named: storedModelName)?.id ?? backend.defaultModelName
|
|
78
80
|
}
|
|
79
81
|
|
|
82
|
+
static func selectedModelTTLSeconds(userDefaults: UserDefaults = .standard) -> Int {
|
|
83
|
+
guard let storedValue = userDefaults.object(forKey: transcriptionModelTTLSecondsKey) as? NSNumber else {
|
|
84
|
+
return defaultModelTTLSeconds
|
|
85
|
+
}
|
|
86
|
+
return max(0, storedValue.intValue)
|
|
87
|
+
}
|
|
88
|
+
|
|
80
89
|
static func whisperDaemonInstallArguments(userDefaults: UserDefaults = .standard) -> [String] {
|
|
81
90
|
let backend = selectedBackend(userDefaults: userDefaults)
|
|
82
91
|
return [
|
|
@@ -89,6 +98,8 @@ enum TranscriptionSettings {
|
|
|
89
98
|
backend.cliBackend,
|
|
90
99
|
"--model",
|
|
91
100
|
selectedModelName(userDefaults: userDefaults),
|
|
101
|
+
"--ttl",
|
|
102
|
+
"\(selectedModelTTLSeconds(userDefaults: userDefaults))",
|
|
92
103
|
]
|
|
93
104
|
}
|
|
94
105
|
}
|
{agent_cli-0.98.0 → agent_cli-0.98.1}/macos/AgentCLI/Tests/AgentCLITests/AgentCommandTests.swift
RENAMED
|
@@ -64,12 +64,32 @@ final class AgentCommandTests: XCTestCase {
|
|
|
64
64
|
"daemon", "install", "whisper", "-y", "--",
|
|
65
65
|
"--backend", "nemo",
|
|
66
66
|
"--model", "parakeet-tdt-0.6b-v3",
|
|
67
|
+
"--ttl", "86400",
|
|
67
68
|
]
|
|
68
69
|
),
|
|
69
70
|
[
|
|
70
71
|
"daemon", "install", "whisper", "-y", "--",
|
|
71
72
|
"--backend", "nemo",
|
|
72
73
|
"--model", "parakeet-tdt-0.6b-v3",
|
|
74
|
+
"--ttl", "86400",
|
|
75
|
+
]
|
|
76
|
+
)
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
func testTranscriptionDaemonArgumentsIncludeConfiguredTTL() {
|
|
80
|
+
let defaults = UserDefaults(suiteName: "AgentCLITests.transcription-ttl")!
|
|
81
|
+
defaults.removePersistentDomain(forName: "AgentCLITests.transcription-ttl")
|
|
82
|
+
defaults.set("nemo", forKey: TranscriptionSettings.transcriptionBackendKey)
|
|
83
|
+
defaults.set("parakeet-unified-en-0.6b", forKey: TranscriptionSettings.transcriptionModelKey)
|
|
84
|
+
defaults.set(86400, forKey: TranscriptionSettings.transcriptionModelTTLSecondsKey)
|
|
85
|
+
|
|
86
|
+
XCTAssertEqual(
|
|
87
|
+
TranscriptionSettings.whisperDaemonInstallArguments(userDefaults: defaults),
|
|
88
|
+
[
|
|
89
|
+
"daemon", "install", "whisper", "-y", "--",
|
|
90
|
+
"--backend", "nemo",
|
|
91
|
+
"--model", "parakeet-unified-en-0.6b",
|
|
92
|
+
"--ttl", "86400",
|
|
73
93
|
]
|
|
74
94
|
)
|
|
75
95
|
}
|
|
@@ -220,7 +240,12 @@ final class AgentCommandTests: XCTestCase {
|
|
|
220
240
|
userDefaults: defaults,
|
|
221
241
|
processRunner: { _, arguments, _ in
|
|
222
242
|
processArguments.append(arguments)
|
|
223
|
-
if arguments == [
|
|
243
|
+
if arguments == [
|
|
244
|
+
"daemon", "install", "whisper", "-y", "--",
|
|
245
|
+
"--backend", "auto",
|
|
246
|
+
"--model", "large-v3",
|
|
247
|
+
"--ttl", "300",
|
|
248
|
+
] {
|
|
224
249
|
installedWhisper = true
|
|
225
250
|
return CommandResult(exitCode: 0, output: "Installed and started")
|
|
226
251
|
}
|
|
@@ -241,7 +266,12 @@ final class AgentCommandTests: XCTestCase {
|
|
|
241
266
|
XCTAssertEqual(
|
|
242
267
|
processArguments,
|
|
243
268
|
[
|
|
244
|
-
[
|
|
269
|
+
[
|
|
270
|
+
"daemon", "install", "whisper", "-y", "--",
|
|
271
|
+
"--backend", "auto",
|
|
272
|
+
"--model", "large-v3",
|
|
273
|
+
"--ttl", "300",
|
|
274
|
+
],
|
|
245
275
|
]
|
|
246
276
|
)
|
|
247
277
|
XCTAssertEqual(phases, [.installingVoiceService, .waitingForVoiceService])
|
|
@@ -277,7 +307,12 @@ final class AgentCommandTests: XCTestCase {
|
|
|
277
307
|
userDefaults: defaults,
|
|
278
308
|
processRunner: { _, arguments, _ in
|
|
279
309
|
processArguments.append(arguments)
|
|
280
|
-
if arguments == [
|
|
310
|
+
if arguments == [
|
|
311
|
+
"daemon", "install", "whisper", "-y", "--",
|
|
312
|
+
"--backend", "auto",
|
|
313
|
+
"--model", "large-v3",
|
|
314
|
+
"--ttl", "300",
|
|
315
|
+
] {
|
|
281
316
|
installedWhisper = true
|
|
282
317
|
return CommandResult(exitCode: 0, output: "Installed and started")
|
|
283
318
|
}
|
|
@@ -297,7 +332,12 @@ final class AgentCommandTests: XCTestCase {
|
|
|
297
332
|
XCTAssertEqual(
|
|
298
333
|
processArguments,
|
|
299
334
|
[
|
|
300
|
-
[
|
|
335
|
+
[
|
|
336
|
+
"daemon", "install", "whisper", "-y", "--",
|
|
337
|
+
"--backend", "auto",
|
|
338
|
+
"--model", "large-v3",
|
|
339
|
+
"--ttl", "300",
|
|
340
|
+
],
|
|
301
341
|
]
|
|
302
342
|
)
|
|
303
343
|
}
|
|
@@ -339,6 +379,7 @@ final class AgentCommandTests: XCTestCase {
|
|
|
339
379
|
"daemon", "install", "whisper", "-y", "--",
|
|
340
380
|
"--backend", "nemo",
|
|
341
381
|
"--model", "parakeet-tdt-0.6b-v3",
|
|
382
|
+
"--ttl", "300",
|
|
342
383
|
] {
|
|
343
384
|
installedWhisper = true
|
|
344
385
|
return CommandResult(exitCode: 0, output: "Installed and started")
|
|
@@ -363,6 +404,7 @@ final class AgentCommandTests: XCTestCase {
|
|
|
363
404
|
"daemon", "install", "whisper", "-y", "--",
|
|
364
405
|
"--backend", "nemo",
|
|
365
406
|
"--model", "parakeet-tdt-0.6b-v3",
|
|
407
|
+
"--ttl", "300",
|
|
366
408
|
],
|
|
367
409
|
]
|
|
368
410
|
)
|
|
@@ -413,6 +455,7 @@ final class AgentCommandTests: XCTestCase {
|
|
|
413
455
|
"daemon", "install", "whisper", "-y", "--",
|
|
414
456
|
"--backend", "nemo",
|
|
415
457
|
"--model", "parakeet-tdt-0.6b-v3",
|
|
458
|
+
"--ttl", "300",
|
|
416
459
|
] {
|
|
417
460
|
installedWhisper = true
|
|
418
461
|
return CommandResult(exitCode: 0, output: "Installed and started")
|
|
@@ -438,6 +481,7 @@ final class AgentCommandTests: XCTestCase {
|
|
|
438
481
|
"daemon", "install", "whisper", "-y", "--",
|
|
439
482
|
"--backend", "nemo",
|
|
440
483
|
"--model", "parakeet-tdt-0.6b-v3",
|
|
484
|
+
"--ttl", "300",
|
|
441
485
|
],
|
|
442
486
|
]
|
|
443
487
|
)
|
|
@@ -4,6 +4,23 @@
|
|
|
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.98.0</title>
|
|
9
|
+
<pubDate>Thu, 04 Jun 2026 16:25:34 +0000</pubDate>
|
|
10
|
+
<link>https://github.com/basnijholt/agent-cli</link>
|
|
11
|
+
<sparkle:version>188</sparkle:version>
|
|
12
|
+
<sparkle:shortVersionString>0.98.0</sparkle:shortVersionString>
|
|
13
|
+
<sparkle:minimumSystemVersion>13.0</sparkle:minimumSystemVersion>
|
|
14
|
+
<sparkle:hardwareRequirements>arm64</sparkle:hardwareRequirements>
|
|
15
|
+
<description sparkle:format="markdown"><![CDATA[## What’s Changed
|
|
16
|
+
|
|
17
|
+
* Document NeMo Parakeet setup (#573) @basnijholt
|
|
18
|
+
* Add macOS transcription backend picker (#574) @basnijholt
|
|
19
|
+
* Reference upstream NeMo validation_ds fix (#577) @basnijholt
|
|
20
|
+
|
|
21
|
+
]]></description>
|
|
22
|
+
<enclosure url="https://github.com/basnijholt/agent-cli/releases/download/v0.98.0/AgentCLI.zip" length="22891739" type="application/octet-stream" sparkle:edSignature="tC7V5Z+r9fyFe5GvISxKB2ExZJoyx8G7Qt/Zqnb1ELJcU6lm+0KSN3tx7d/BBm1Dbl8eKRiCorOATkTKE2HSCw=="/>
|
|
23
|
+
</item>
|
|
7
24
|
<item>
|
|
8
25
|
<title>0.97.2</title>
|
|
9
26
|
<pubDate>Thu, 04 Jun 2026 07:34:52 +0000</pubDate>
|
|
@@ -155,21 +172,5 @@
|
|
|
155
172
|
]]></description>
|
|
156
173
|
<enclosure url="https://github.com/basnijholt/agent-cli/releases/download/v0.96.5/AgentCLI.zip" length="22738995" type="application/octet-stream" sparkle:edSignature="Jf0aoWxUGvOR6idZhELnlGf61IHrf8Kw92tcH5Xk4wC8chn3mO3OgeE+8+P2orbHC0VhszHgjMNzsGN3bZPwCg=="/>
|
|
157
174
|
</item>
|
|
158
|
-
<item>
|
|
159
|
-
<title>0.96.4</title>
|
|
160
|
-
<pubDate>Fri, 29 May 2026 14:59:58 +0000</pubDate>
|
|
161
|
-
<link>https://github.com/basnijholt/agent-cli</link>
|
|
162
|
-
<sparkle:version>178</sparkle:version>
|
|
163
|
-
<sparkle:shortVersionString>0.96.4</sparkle:shortVersionString>
|
|
164
|
-
<sparkle:minimumSystemVersion>13.0</sparkle:minimumSystemVersion>
|
|
165
|
-
<sparkle:hardwareRequirements>arm64</sparkle:hardwareRequirements>
|
|
166
|
-
<description sparkle:format="markdown"><![CDATA[## What’s Changed
|
|
167
|
-
|
|
168
|
-
* Cache user CLI runtime checks (#552) @basnijholt
|
|
169
|
-
* Clean up macOS menu activity abstractions (#551) @basnijholt
|
|
170
|
-
|
|
171
|
-
]]></description>
|
|
172
|
-
<enclosure url="https://github.com/basnijholt/agent-cli/releases/download/v0.96.4/AgentCLI.zip" length="22738926" type="application/octet-stream" sparkle:edSignature="Ro8WhN/AVGWxCvG/C6//ISayy5lo5KiOJhvpVQdJKLBsPdZv96HmtZx7G2qeVG87sAmcyIR/84pW4zwzCR7lAA=="/>
|
|
173
|
-
</item>
|
|
174
175
|
</channel>
|
|
175
176
|
</rss>
|
|
@@ -12,6 +12,8 @@ import pytest
|
|
|
12
12
|
from typer.testing import CliRunner
|
|
13
13
|
|
|
14
14
|
from agent_cli.cli import app
|
|
15
|
+
from agent_cli.core import deps
|
|
16
|
+
from agent_cli.install import launchd as launchd_module
|
|
15
17
|
from agent_cli.install.launchd import _generate_plist as launchd_generate_plist
|
|
16
18
|
from agent_cli.install.launchd import _get_log_command as launchd_get_log_command
|
|
17
19
|
from agent_cli.install.launchd import _get_service_status as launchd_get_service_status
|
|
@@ -158,6 +160,34 @@ class TestServiceConfig:
|
|
|
158
160
|
assert "agent-cli[server,nemo-whisper,wyoming]" in cmd
|
|
159
161
|
assert cmd[cmd.index("--python") + 1] == "3.13"
|
|
160
162
|
|
|
163
|
+
def test_build_service_command_materializes_nemo_override_without_spaces(
|
|
164
|
+
self, tmp_path: Path, monkeypatch: pytest.MonkeyPatch
|
|
165
|
+
) -> None:
|
|
166
|
+
"""UV --overrides receives a copied no-space path for bundled app installs."""
|
|
167
|
+
uv_path = tmp_path / "uv"
|
|
168
|
+
uv_path.touch()
|
|
169
|
+
source_dir = tmp_path / "Application Support" / "AgentCLI" / "_overrides"
|
|
170
|
+
source_dir.mkdir(parents=True)
|
|
171
|
+
source_override = source_dir / "nemo-whisper.txt"
|
|
172
|
+
source_override.write_text("kaldialign==0.9.3\n")
|
|
173
|
+
materialized_dir = tmp_path / "agentcli-overrides"
|
|
174
|
+
monkeypatch.setattr(deps, "_OVERRIDES_DIR", source_dir)
|
|
175
|
+
monkeypatch.setattr(deps, "_find_runtime_uv", lambda: str(uv_path))
|
|
176
|
+
monkeypatch.setenv("AGENTCLI_UV_OVERRIDES_DIR", str(materialized_dir))
|
|
177
|
+
|
|
178
|
+
cmd = build_service_command(
|
|
179
|
+
SERVICES["whisper"],
|
|
180
|
+
uv_path,
|
|
181
|
+
use_macos_extra=True,
|
|
182
|
+
extra_command_args=["--backend", "nemo"],
|
|
183
|
+
)
|
|
184
|
+
|
|
185
|
+
override_path = Path(cmd[cmd.index("--overrides") + 1])
|
|
186
|
+
assert override_path == materialized_dir / "nemo-whisper.txt"
|
|
187
|
+
assert " " not in override_path.as_posix()
|
|
188
|
+
assert override_path.read_text() == source_override.read_text()
|
|
189
|
+
assert "agent-cli[server,nemo-whisper,wyoming]" in cmd
|
|
190
|
+
|
|
161
191
|
def test_build_service_command_uses_app_package_source(
|
|
162
192
|
self, tmp_path: Path, monkeypatch: pytest.MonkeyPatch
|
|
163
193
|
) -> None:
|
|
@@ -763,6 +793,21 @@ class TestLaunchdModule:
|
|
|
763
793
|
|
|
764
794
|
assert plist["ProgramArguments"][-4:] == ["--model", "small", "--port", "10311"]
|
|
765
795
|
|
|
796
|
+
def test_launchd_recent_logs_include_stdout_and_stderr(
|
|
797
|
+
self, tmp_path: Path, monkeypatch: pytest.MonkeyPatch
|
|
798
|
+
) -> None:
|
|
799
|
+
"""Status output should include stderr when stdout has stale startup logs."""
|
|
800
|
+
(tmp_path / "stdout.log").write_text("old large-v3 startup\n")
|
|
801
|
+
(tmp_path / "stderr.log").write_text("error: File not found: `Library/Application`\n")
|
|
802
|
+
monkeypatch.setattr(launchd_module, "_get_log_dir", lambda _service_name: tmp_path)
|
|
803
|
+
|
|
804
|
+
lines = launchd_module._get_recent_logs("whisper", 5)
|
|
805
|
+
|
|
806
|
+
assert "==> stdout.log <==" in lines
|
|
807
|
+
assert "old large-v3 startup" in lines
|
|
808
|
+
assert "==> stderr.log <==" in lines
|
|
809
|
+
assert "error: File not found: `Library/Application`" in lines
|
|
810
|
+
|
|
766
811
|
@patch("subprocess.run")
|
|
767
812
|
def test_launchd_get_service_status_not_installed(
|
|
768
813
|
self,
|
|
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
|