agent-cli 0.66.2__py3-none-any.whl → 0.67.0__py3-none-any.whl
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/_extras.json +13 -0
- agent_cli/_requirements/audio.txt +60 -0
- agent_cli/_requirements/{whisper.txt → faster-whisper.txt} +4 -112
- agent_cli/_requirements/{tts-kokoro.txt → kokoro.txt} +4 -107
- agent_cli/_requirements/llm.txt +177 -0
- agent_cli/_requirements/memory.txt +6 -97
- agent_cli/_requirements/{whisper-mlx.txt → mlx-whisper.txt} +61 -124
- agent_cli/_requirements/{tts.txt → piper.txt} +4 -121
- agent_cli/_requirements/rag.txt +9 -96
- agent_cli/_requirements/server.txt +3 -120
- agent_cli/_requirements/speed.txt +5 -138
- agent_cli/_requirements/vad.txt +4 -137
- agent_cli/agents/assistant.py +2 -0
- agent_cli/agents/autocorrect.py +2 -0
- agent_cli/agents/chat.py +2 -0
- agent_cli/agents/memory/add.py +2 -0
- agent_cli/agents/memory/proxy.py +2 -0
- agent_cli/agents/rag_proxy.py +2 -0
- agent_cli/agents/speak.py +2 -0
- agent_cli/agents/transcribe.py +2 -0
- agent_cli/agents/transcribe_daemon.py +2 -0
- agent_cli/agents/voice_edit.py +2 -0
- agent_cli/core/deps.py +130 -14
- agent_cli/dev/skill/SKILL.md +2 -2
- agent_cli/docs_gen.py +0 -42
- agent_cli/install/extras.py +6 -14
- agent_cli/memory/__init__.py +1 -18
- agent_cli/rag/__init__.py +0 -19
- agent_cli/scripts/sync_extras.py +138 -0
- agent_cli/server/cli.py +4 -0
- agent_cli/services/_wyoming_utils.py +4 -2
- agent_cli/services/asr.py +13 -3
- agent_cli/services/tts.py +5 -2
- agent_cli/services/wake_word.py +6 -3
- {agent_cli-0.66.2.dist-info → agent_cli-0.67.0.dist-info}/METADATA +33 -29
- {agent_cli-0.66.2.dist-info → agent_cli-0.67.0.dist-info}/RECORD +39 -35
- {agent_cli-0.66.2.dist-info → agent_cli-0.67.0.dist-info}/WHEEL +0 -0
- {agent_cli-0.66.2.dist-info → agent_cli-0.67.0.dist-info}/entry_points.txt +0 -0
- {agent_cli-0.66.2.dist-info → agent_cli-0.67.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Generate _extras.json from pyproject.toml.
|
|
3
|
+
|
|
4
|
+
This script parses the optional-dependencies in pyproject.toml and generates
|
|
5
|
+
the agent_cli/_extras.json file with package-to-import mappings.
|
|
6
|
+
|
|
7
|
+
Usage:
|
|
8
|
+
python scripts/sync_extras.py
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from __future__ import annotations
|
|
12
|
+
|
|
13
|
+
import json
|
|
14
|
+
import re
|
|
15
|
+
import sys
|
|
16
|
+
import tomllib
|
|
17
|
+
from pathlib import Path
|
|
18
|
+
|
|
19
|
+
REPO_ROOT = Path(__file__).parent.parent
|
|
20
|
+
PYPROJECT = REPO_ROOT / "pyproject.toml"
|
|
21
|
+
EXTRAS_FILE = REPO_ROOT / "agent_cli" / "_extras.json"
|
|
22
|
+
|
|
23
|
+
# Extras to skip (dev/test dependencies, not runtime installable)
|
|
24
|
+
SKIP_EXTRAS = {"dev", "test"}
|
|
25
|
+
|
|
26
|
+
# Manual mapping of extra name -> (description, list of import names)
|
|
27
|
+
# Import names should be the Python module name (how you import it)
|
|
28
|
+
# Bundle extras (voice, cloud, full) have empty import lists since they just install other extras
|
|
29
|
+
EXTRA_METADATA: dict[str, tuple[str, list[str]]] = {
|
|
30
|
+
# Provider extras (base dependencies now optional)
|
|
31
|
+
"audio": ("Audio recording/playback", ["sounddevice"]),
|
|
32
|
+
"wyoming": ("Wyoming protocol support", ["wyoming"]),
|
|
33
|
+
"openai": ("OpenAI API provider", ["openai"]),
|
|
34
|
+
"gemini": ("Google Gemini provider", ["google.genai"]),
|
|
35
|
+
"llm": ("LLM framework (pydantic-ai)", ["pydantic_ai"]),
|
|
36
|
+
# Feature extras
|
|
37
|
+
"rag": ("RAG proxy (ChromaDB, embeddings)", ["chromadb"]),
|
|
38
|
+
"memory": ("Long-term memory proxy", ["chromadb", "yaml"]),
|
|
39
|
+
"vad": ("Voice Activity Detection (silero-vad)", ["silero_vad"]),
|
|
40
|
+
"whisper": ("Local Whisper ASR (faster-whisper)", ["faster_whisper"]),
|
|
41
|
+
"whisper-mlx": ("MLX Whisper for Apple Silicon", ["mlx_whisper"]),
|
|
42
|
+
"tts": ("Local Piper TTS", ["piper"]),
|
|
43
|
+
"tts-kokoro": ("Kokoro neural TTS", ["kokoro"]),
|
|
44
|
+
"server": ("FastAPI server components", ["fastapi"]),
|
|
45
|
+
"speed": ("Audio speed adjustment (audiostretchy)", ["audiostretchy"]),
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def get_extras_from_pyproject() -> set[str]:
|
|
50
|
+
"""Parse optional-dependencies from pyproject.toml."""
|
|
51
|
+
with PYPROJECT.open("rb") as f:
|
|
52
|
+
data = tomllib.load(f)
|
|
53
|
+
all_extras = set(data.get("project", {}).get("optional-dependencies", {}).keys())
|
|
54
|
+
return all_extras - SKIP_EXTRAS
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def extract_package_name(dep: str) -> str:
|
|
58
|
+
"""Extract the package name from a dependency specification.
|
|
59
|
+
|
|
60
|
+
Examples:
|
|
61
|
+
"chromadb>=0.4.22" -> "chromadb"
|
|
62
|
+
"pydantic-ai-slim[openai,duckduckgo]" -> "pydantic-ai-slim"
|
|
63
|
+
'mlx-whisper>=0.4.0; sys_platform == "darwin"' -> "mlx-whisper"
|
|
64
|
+
|
|
65
|
+
"""
|
|
66
|
+
# Remove markers (;...) and extras ([...])
|
|
67
|
+
dep = re.split(r"[;\[]", dep)[0]
|
|
68
|
+
# Remove version specifiers
|
|
69
|
+
dep = re.split(r"[<>=!~]", dep)[0]
|
|
70
|
+
return dep.strip()
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def package_to_import_name(package: str) -> str:
|
|
74
|
+
"""Convert a package name to its Python import name.
|
|
75
|
+
|
|
76
|
+
Examples:
|
|
77
|
+
"google-genai" -> "google.genai"
|
|
78
|
+
"pydantic-ai-slim" -> "pydantic_ai"
|
|
79
|
+
"silero-vad" -> "silero_vad"
|
|
80
|
+
"faster-whisper" -> "faster_whisper"
|
|
81
|
+
|
|
82
|
+
"""
|
|
83
|
+
# Special cases where the import name differs significantly
|
|
84
|
+
special_cases = {
|
|
85
|
+
"google-genai": "google.genai",
|
|
86
|
+
"pydantic-ai-slim": "pydantic_ai",
|
|
87
|
+
"silero-vad": "silero_vad",
|
|
88
|
+
"faster-whisper": "faster_whisper",
|
|
89
|
+
"mlx-whisper": "mlx_whisper",
|
|
90
|
+
"piper-tts": "piper",
|
|
91
|
+
"huggingface-hub": "huggingface_hub",
|
|
92
|
+
"fastapi": "fastapi",
|
|
93
|
+
"audiostretchy": "audiostretchy",
|
|
94
|
+
}
|
|
95
|
+
if package in special_cases:
|
|
96
|
+
return special_cases[package]
|
|
97
|
+
# Default: replace hyphens with underscores
|
|
98
|
+
return package.replace("-", "_")
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
def generate_extras_json(extras: set[str]) -> dict[str, list]:
|
|
102
|
+
"""Generate the content for _extras.json."""
|
|
103
|
+
result = {}
|
|
104
|
+
for extra in sorted(extras):
|
|
105
|
+
if extra in EXTRA_METADATA:
|
|
106
|
+
desc, imports = EXTRA_METADATA[extra]
|
|
107
|
+
result[extra] = [desc, imports]
|
|
108
|
+
else:
|
|
109
|
+
# Unknown extra - add a placeholder
|
|
110
|
+
result[extra] = ["TODO: add description", []]
|
|
111
|
+
return result
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
def check_missing_metadata(extras: set[str]) -> list[str]:
|
|
115
|
+
"""Check for extras that don't have metadata defined."""
|
|
116
|
+
return [e for e in extras if e not in EXTRA_METADATA]
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def main() -> int:
|
|
120
|
+
"""Generate _extras.json from pyproject.toml."""
|
|
121
|
+
extras = get_extras_from_pyproject()
|
|
122
|
+
|
|
123
|
+
# Check for missing metadata
|
|
124
|
+
missing = check_missing_metadata(extras)
|
|
125
|
+
if missing:
|
|
126
|
+
print(f"Warning: The following extras need metadata in EXTRA_METADATA: {missing}")
|
|
127
|
+
print("Please update EXTRA_METADATA in scripts/sync_extras.py")
|
|
128
|
+
|
|
129
|
+
# Generate the file
|
|
130
|
+
content = generate_extras_json(extras)
|
|
131
|
+
EXTRAS_FILE.write_text(json.dumps(content, indent=2) + "\n")
|
|
132
|
+
print(f"Generated {EXTRAS_FILE}")
|
|
133
|
+
|
|
134
|
+
return 0
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
if __name__ == "__main__":
|
|
138
|
+
sys.exit(main())
|
agent_cli/server/cli.py
CHANGED
|
@@ -12,6 +12,7 @@ import typer
|
|
|
12
12
|
from rich.console import Console
|
|
13
13
|
|
|
14
14
|
from agent_cli.cli import app as main_app
|
|
15
|
+
from agent_cli.core.deps import requires_extras
|
|
15
16
|
from agent_cli.core.process import set_process_title
|
|
16
17
|
from agent_cli.server.common import setup_rich_logging
|
|
17
18
|
|
|
@@ -163,6 +164,7 @@ def _check_whisper_deps(backend: str, *, download_only: bool = False) -> None:
|
|
|
163
164
|
|
|
164
165
|
|
|
165
166
|
@app.command("whisper")
|
|
167
|
+
@requires_extras("server", "faster-whisper|mlx-whisper")
|
|
166
168
|
def whisper_cmd( # noqa: PLR0912, PLR0915
|
|
167
169
|
model: Annotated[
|
|
168
170
|
list[str] | None,
|
|
@@ -422,6 +424,7 @@ def whisper_cmd( # noqa: PLR0912, PLR0915
|
|
|
422
424
|
|
|
423
425
|
|
|
424
426
|
@app.command("transcription-proxy")
|
|
427
|
+
@requires_extras("server")
|
|
425
428
|
def transcription_proxy_cmd(
|
|
426
429
|
host: Annotated[
|
|
427
430
|
str,
|
|
@@ -475,6 +478,7 @@ def transcription_proxy_cmd(
|
|
|
475
478
|
|
|
476
479
|
|
|
477
480
|
@app.command("tts")
|
|
481
|
+
@requires_extras("server", "piper|kokoro")
|
|
478
482
|
def tts_cmd( # noqa: PLR0915
|
|
479
483
|
model: Annotated[
|
|
480
484
|
list[str] | None,
|
|
@@ -5,14 +5,14 @@ from __future__ import annotations
|
|
|
5
5
|
from contextlib import asynccontextmanager
|
|
6
6
|
from typing import TYPE_CHECKING
|
|
7
7
|
|
|
8
|
-
from wyoming.client import AsyncClient
|
|
9
|
-
|
|
10
8
|
from agent_cli.core.utils import print_error_message
|
|
11
9
|
|
|
12
10
|
if TYPE_CHECKING:
|
|
13
11
|
import logging
|
|
14
12
|
from collections.abc import AsyncGenerator
|
|
15
13
|
|
|
14
|
+
from wyoming.client import AsyncClient
|
|
15
|
+
|
|
16
16
|
|
|
17
17
|
@asynccontextmanager
|
|
18
18
|
async def wyoming_client_context(
|
|
@@ -40,6 +40,8 @@ async def wyoming_client_context(
|
|
|
40
40
|
Exception: For other connection errors
|
|
41
41
|
|
|
42
42
|
"""
|
|
43
|
+
from wyoming.client import AsyncClient # noqa: PLC0415
|
|
44
|
+
|
|
43
45
|
uri = f"tcp://{server_ip}:{server_port}"
|
|
44
46
|
logger.info("Connecting to Wyoming %s server at %s", server_type, uri)
|
|
45
47
|
|
agent_cli/services/asr.py
CHANGED
|
@@ -10,9 +10,6 @@ from functools import partial
|
|
|
10
10
|
from pathlib import Path
|
|
11
11
|
from typing import TYPE_CHECKING
|
|
12
12
|
|
|
13
|
-
from wyoming.asr import Transcribe, Transcript, TranscriptChunk, TranscriptStart, TranscriptStop
|
|
14
|
-
from wyoming.audio import AudioChunk, AudioStart, AudioStop
|
|
15
|
-
|
|
16
13
|
from agent_cli import constants
|
|
17
14
|
from agent_cli.core.audio import (
|
|
18
15
|
open_audio_stream,
|
|
@@ -225,6 +222,9 @@ async def _send_audio(
|
|
|
225
222
|
initial_prompt: str | None = None,
|
|
226
223
|
) -> None:
|
|
227
224
|
"""Read from mic and send to Wyoming server."""
|
|
225
|
+
from wyoming.asr import Transcribe # noqa: PLC0415
|
|
226
|
+
from wyoming.audio import AudioChunk, AudioStart, AudioStop # noqa: PLC0415
|
|
227
|
+
|
|
228
228
|
# Build context with initial_prompt if provided
|
|
229
229
|
context = {"initial_prompt": initial_prompt} if initial_prompt else None
|
|
230
230
|
await client.write_event(Transcribe(context=context).event())
|
|
@@ -282,6 +282,13 @@ async def _receive_transcript(
|
|
|
282
282
|
final_callback: Callable[[str], None] | None = None,
|
|
283
283
|
) -> str:
|
|
284
284
|
"""Receive transcription events and return the final transcript."""
|
|
285
|
+
from wyoming.asr import ( # noqa: PLC0415
|
|
286
|
+
Transcript,
|
|
287
|
+
TranscriptChunk,
|
|
288
|
+
TranscriptStart,
|
|
289
|
+
TranscriptStop,
|
|
290
|
+
)
|
|
291
|
+
|
|
285
292
|
transcript_text = ""
|
|
286
293
|
while True:
|
|
287
294
|
event = await client.read_event()
|
|
@@ -370,6 +377,9 @@ async def _transcribe_recorded_audio_wyoming(
|
|
|
370
377
|
**_kwargs: object,
|
|
371
378
|
) -> str:
|
|
372
379
|
"""Process pre-recorded audio data with Wyoming ASR server."""
|
|
380
|
+
from wyoming.asr import Transcribe # noqa: PLC0415
|
|
381
|
+
from wyoming.audio import AudioChunk, AudioStart, AudioStop # noqa: PLC0415
|
|
382
|
+
|
|
373
383
|
try:
|
|
374
384
|
async with wyoming_client_context(
|
|
375
385
|
wyoming_asr_cfg.asr_wyoming_ip,
|
agent_cli/services/tts.py
CHANGED
|
@@ -10,8 +10,6 @@ from pathlib import Path
|
|
|
10
10
|
from typing import TYPE_CHECKING
|
|
11
11
|
|
|
12
12
|
from rich.live import Live
|
|
13
|
-
from wyoming.audio import AudioChunk, AudioStart, AudioStop
|
|
14
|
-
from wyoming.tts import Synthesize, SynthesizeVoice
|
|
15
13
|
|
|
16
14
|
from agent_cli import config, constants
|
|
17
15
|
from agent_cli.core.audio import open_audio_stream, setup_output_stream
|
|
@@ -32,6 +30,7 @@ if TYPE_CHECKING:
|
|
|
32
30
|
|
|
33
31
|
from rich.live import Live
|
|
34
32
|
from wyoming.client import AsyncClient
|
|
33
|
+
from wyoming.tts import Synthesize
|
|
35
34
|
|
|
36
35
|
|
|
37
36
|
has_audiostretchy = importlib.util.find_spec("audiostretchy") is not None
|
|
@@ -134,6 +133,8 @@ def _create_synthesis_request(
|
|
|
134
133
|
speaker: str | None = None,
|
|
135
134
|
) -> Synthesize:
|
|
136
135
|
"""Create a synthesis request with optional voice parameters."""
|
|
136
|
+
from wyoming.tts import Synthesize, SynthesizeVoice # noqa: PLC0415
|
|
137
|
+
|
|
137
138
|
synthesize_event = Synthesize(text=text)
|
|
138
139
|
|
|
139
140
|
# Add voice parameters if specified
|
|
@@ -152,6 +153,8 @@ async def _process_audio_events(
|
|
|
152
153
|
logger: logging.Logger,
|
|
153
154
|
) -> tuple[bytes, int | None, int | None, int | None]:
|
|
154
155
|
"""Process audio events from TTS server and return audio data with metadata."""
|
|
156
|
+
from wyoming.audio import AudioChunk, AudioStart, AudioStop # noqa: PLC0415
|
|
157
|
+
|
|
155
158
|
audio_data = io.BytesIO()
|
|
156
159
|
sample_rate = None
|
|
157
160
|
sample_width = None
|
agent_cli/services/wake_word.py
CHANGED
|
@@ -6,9 +6,6 @@ import asyncio
|
|
|
6
6
|
from functools import partial
|
|
7
7
|
from typing import TYPE_CHECKING
|
|
8
8
|
|
|
9
|
-
from wyoming.audio import AudioChunk, AudioStart, AudioStop
|
|
10
|
-
from wyoming.wake import Detect, Detection, NotDetected
|
|
11
|
-
|
|
12
9
|
from agent_cli import config, constants
|
|
13
10
|
from agent_cli.core.audio import read_from_queue
|
|
14
11
|
from agent_cli.core.utils import manage_send_receive_tasks
|
|
@@ -38,6 +35,8 @@ async def _send_audio_from_queue_for_wake_detection(
|
|
|
38
35
|
progress_message: str,
|
|
39
36
|
) -> None:
|
|
40
37
|
"""Read from a queue and send to Wyoming wake word server."""
|
|
38
|
+
from wyoming.audio import AudioChunk, AudioStart, AudioStop # noqa: PLC0415
|
|
39
|
+
|
|
41
40
|
await client.write_event(AudioStart(**constants.WYOMING_AUDIO_CONFIG).event())
|
|
42
41
|
seconds_streamed = 0.0
|
|
43
42
|
|
|
@@ -76,6 +75,8 @@ async def _receive_wake_detection(
|
|
|
76
75
|
Name of detected wake word or None if no detection
|
|
77
76
|
|
|
78
77
|
"""
|
|
78
|
+
from wyoming.wake import Detection, NotDetected # noqa: PLC0415
|
|
79
|
+
|
|
79
80
|
while True:
|
|
80
81
|
event = await client.read_event()
|
|
81
82
|
if event is None:
|
|
@@ -108,6 +109,8 @@ async def _detect_wake_word_from_queue(
|
|
|
108
109
|
progress_message: str = "Listening for wake word",
|
|
109
110
|
) -> str | None:
|
|
110
111
|
"""Detect wake word from an audio queue."""
|
|
112
|
+
from wyoming.wake import Detect # noqa: PLC0415
|
|
113
|
+
|
|
111
114
|
try:
|
|
112
115
|
async with wyoming_client_context(
|
|
113
116
|
wake_word_cfg.wake_server_ip,
|
|
@@ -1,26 +1,24 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.67.0
|
|
4
4
|
Summary: A suite of AI-powered command-line tools for text correction, audio transcription, and voice assistance.
|
|
5
5
|
Project-URL: Homepage, https://github.com/basnijholt/agent-cli
|
|
6
6
|
Author-email: Bas Nijholt <bas@nijho.lt>
|
|
7
7
|
License-File: LICENSE
|
|
8
8
|
Requires-Python: <3.14,>=3.11
|
|
9
9
|
Requires-Dist: dotenv
|
|
10
|
-
Requires-Dist: google-genai>=1.25.0
|
|
11
10
|
Requires-Dist: httpx
|
|
12
11
|
Requires-Dist: numpy
|
|
13
|
-
Requires-Dist: openai
|
|
14
12
|
Requires-Dist: psutil; sys_platform == 'win32'
|
|
15
|
-
Requires-Dist: pydantic-ai-slim[duckduckgo,openai,vertexai]
|
|
16
13
|
Requires-Dist: pyperclip
|
|
17
14
|
Requires-Dist: rich
|
|
18
15
|
Requires-Dist: setproctitle
|
|
19
|
-
Requires-Dist: sounddevice
|
|
20
16
|
Requires-Dist: typer
|
|
21
|
-
|
|
17
|
+
Provides-Extra: audio
|
|
18
|
+
Requires-Dist: sounddevice>=0.4.6; extra == 'audio'
|
|
19
|
+
Requires-Dist: wyoming>=1.5.2; extra == 'audio'
|
|
22
20
|
Provides-Extra: dev
|
|
23
|
-
Requires-Dist: markdown-code-runner; extra == 'dev'
|
|
21
|
+
Requires-Dist: markdown-code-runner>=2.7.0; extra == 'dev'
|
|
24
22
|
Requires-Dist: notebook; extra == 'dev'
|
|
25
23
|
Requires-Dist: pre-commit>=3.0.0; extra == 'dev'
|
|
26
24
|
Requires-Dist: pydantic-ai-slim[openai]; extra == 'dev'
|
|
@@ -32,6 +30,18 @@ Requires-Dist: pytest-timeout; extra == 'dev'
|
|
|
32
30
|
Requires-Dist: pytest>=7.0.0; extra == 'dev'
|
|
33
31
|
Requires-Dist: ruff; extra == 'dev'
|
|
34
32
|
Requires-Dist: versioningit; extra == 'dev'
|
|
33
|
+
Provides-Extra: faster-whisper
|
|
34
|
+
Requires-Dist: fastapi[standard]; extra == 'faster-whisper'
|
|
35
|
+
Requires-Dist: faster-whisper>=1.0.0; extra == 'faster-whisper'
|
|
36
|
+
Provides-Extra: kokoro
|
|
37
|
+
Requires-Dist: fastapi[standard]; extra == 'kokoro'
|
|
38
|
+
Requires-Dist: huggingface-hub>=0.20.0; extra == 'kokoro'
|
|
39
|
+
Requires-Dist: kokoro>=0.9.0; extra == 'kokoro'
|
|
40
|
+
Requires-Dist: pip; extra == 'kokoro'
|
|
41
|
+
Requires-Dist: soundfile>=0.12.0; extra == 'kokoro'
|
|
42
|
+
Requires-Dist: transformers>=4.40.0; extra == 'kokoro'
|
|
43
|
+
Provides-Extra: llm
|
|
44
|
+
Requires-Dist: pydantic-ai-slim[duckduckgo,google,openai,vertexai]>=0.1.1; extra == 'llm'
|
|
35
45
|
Provides-Extra: memory
|
|
36
46
|
Requires-Dist: chromadb>=0.4.22; extra == 'memory'
|
|
37
47
|
Requires-Dist: fastapi[standard]; extra == 'memory'
|
|
@@ -40,6 +50,12 @@ Requires-Dist: onnxruntime>=1.17.0; extra == 'memory'
|
|
|
40
50
|
Requires-Dist: pyyaml>=6.0.0; extra == 'memory'
|
|
41
51
|
Requires-Dist: transformers>=4.30.0; extra == 'memory'
|
|
42
52
|
Requires-Dist: watchfiles>=0.21.0; extra == 'memory'
|
|
53
|
+
Provides-Extra: mlx-whisper
|
|
54
|
+
Requires-Dist: fastapi[standard]; extra == 'mlx-whisper'
|
|
55
|
+
Requires-Dist: mlx-whisper>=0.4.0; extra == 'mlx-whisper'
|
|
56
|
+
Provides-Extra: piper
|
|
57
|
+
Requires-Dist: fastapi[standard]; extra == 'piper'
|
|
58
|
+
Requires-Dist: piper-tts>=1.2.0; extra == 'piper'
|
|
43
59
|
Provides-Extra: rag
|
|
44
60
|
Requires-Dist: chromadb>=0.4.22; extra == 'rag'
|
|
45
61
|
Requires-Dist: fastapi[standard]; extra == 'rag'
|
|
@@ -59,24 +75,8 @@ Requires-Dist: pytest-cov>=4.0.0; extra == 'test'
|
|
|
59
75
|
Requires-Dist: pytest-mock; extra == 'test'
|
|
60
76
|
Requires-Dist: pytest-timeout; extra == 'test'
|
|
61
77
|
Requires-Dist: pytest>=7.0.0; extra == 'test'
|
|
62
|
-
Provides-Extra: tts
|
|
63
|
-
Requires-Dist: fastapi[standard]; extra == 'tts'
|
|
64
|
-
Requires-Dist: piper-tts>=1.2.0; extra == 'tts'
|
|
65
|
-
Provides-Extra: tts-kokoro
|
|
66
|
-
Requires-Dist: fastapi[standard]; extra == 'tts-kokoro'
|
|
67
|
-
Requires-Dist: huggingface-hub>=0.20.0; extra == 'tts-kokoro'
|
|
68
|
-
Requires-Dist: kokoro>=0.9.0; extra == 'tts-kokoro'
|
|
69
|
-
Requires-Dist: pip; extra == 'tts-kokoro'
|
|
70
|
-
Requires-Dist: soundfile>=0.12.0; extra == 'tts-kokoro'
|
|
71
|
-
Requires-Dist: transformers>=4.40.0; extra == 'tts-kokoro'
|
|
72
78
|
Provides-Extra: vad
|
|
73
79
|
Requires-Dist: silero-vad>=5.1; extra == 'vad'
|
|
74
|
-
Provides-Extra: whisper
|
|
75
|
-
Requires-Dist: fastapi[standard]; extra == 'whisper'
|
|
76
|
-
Requires-Dist: faster-whisper>=1.0.0; extra == 'whisper'
|
|
77
|
-
Provides-Extra: whisper-mlx
|
|
78
|
-
Requires-Dist: fastapi[standard]; extra == 'whisper-mlx'
|
|
79
|
-
Requires-Dist: mlx-whisper>=0.4.0; (sys_platform == 'darwin' and platform_machine == 'arm64') and extra == 'whisper-mlx'
|
|
80
80
|
Description-Content-Type: text/markdown
|
|
81
81
|
|
|
82
82
|
# Agent CLI
|
|
@@ -130,7 +130,7 @@ Since then I have expanded the tool with many more features, all focused on loca
|
|
|
130
130
|
- **[`rag-proxy`](docs/commands/rag-proxy.md)**: RAG proxy server for chatting with your documents.
|
|
131
131
|
- **[`dev`](docs/commands/dev.md)**: Parallel development with git worktrees and AI coding agents.
|
|
132
132
|
- **[`server`](docs/commands/server/index.md)**: Local ASR and TTS servers with dual-protocol (Wyoming & OpenAI), TTL-based memory management, and multi-platform acceleration. Whisper uses MLX on Apple Silicon or Faster Whisper on Linux/CUDA. TTS supports Kokoro (GPU) or Piper (CPU).
|
|
133
|
-
- **[`transcribe-daemon`](docs/commands/transcribe-daemon.md)**: Continuous background transcription with VAD. Install with `uv tool install "agent-cli[vad]"`.
|
|
133
|
+
- **[`transcribe-daemon`](docs/commands/transcribe-daemon.md)**: Continuous background transcription with VAD. Install with `uv tool install "agent-cli[vad]" -p 3.13`.
|
|
134
134
|
|
|
135
135
|
## Quick Start
|
|
136
136
|
|
|
@@ -140,12 +140,16 @@ If you already have AI services running (or plan to use OpenAI), simply install:
|
|
|
140
140
|
|
|
141
141
|
```bash
|
|
142
142
|
# Using uv (recommended)
|
|
143
|
-
uv tool install agent-cli
|
|
143
|
+
uv tool install agent-cli -p 3.13
|
|
144
144
|
|
|
145
145
|
# Using pip
|
|
146
146
|
pip install agent-cli
|
|
147
147
|
```
|
|
148
148
|
|
|
149
|
+
> [!NOTE]
|
|
150
|
+
> The `-p 3.13` flag is required because some dependencies (like `onnxruntime`) don't support Python 3.14 yet.
|
|
151
|
+
> See [uv issue #8206](https://github.com/astral-sh/uv/issues/8206) for details.
|
|
152
|
+
|
|
149
153
|
Then use it:
|
|
150
154
|
```bash
|
|
151
155
|
agent-cli autocorrect "this has an eror"
|
|
@@ -179,12 +183,12 @@ agent-cli autocorrect "this has an eror"
|
|
|
179
183
|
|
|
180
184
|
> [!NOTE]
|
|
181
185
|
> `agent-cli` uses `sounddevice` for real-time microphone/voice features.
|
|
182
|
-
> On Linux only, you need to install the system-level PortAudio library (`sudo apt install portaudio19-dev` / your distro's equivalent on Linux) **before** you run `uv tool install agent-cli`.
|
|
186
|
+
> On Linux only, you need to install the system-level PortAudio library (`sudo apt install portaudio19-dev` / your distro's equivalent on Linux) **before** you run `uv tool install agent-cli -p 3.13`.
|
|
183
187
|
> On Windows and macOS, this is handled automatically.
|
|
184
188
|
|
|
185
189
|
```bash
|
|
186
190
|
# 1. Install agent-cli
|
|
187
|
-
uv tool install agent-cli
|
|
191
|
+
uv tool install agent-cli -p 3.13
|
|
188
192
|
|
|
189
193
|
# 2. Install all required services
|
|
190
194
|
agent-cli install-services
|
|
@@ -265,7 +269,7 @@ If you already have AI services set up or plan to use cloud services (OpenAI/Gem
|
|
|
265
269
|
|
|
266
270
|
```bash
|
|
267
271
|
# Using uv (recommended)
|
|
268
|
-
uv tool install agent-cli
|
|
272
|
+
uv tool install agent-cli -p 3.13
|
|
269
273
|
|
|
270
274
|
# Using pip
|
|
271
275
|
pip install agent-cli
|
|
@@ -829,7 +833,7 @@ the `[defaults]` section of your configuration file.
|
|
|
829
833
|
|
|
830
834
|
**Installation:** Requires the `vad` extra:
|
|
831
835
|
```bash
|
|
832
|
-
uv tool install "agent-cli[vad]"
|
|
836
|
+
uv tool install "agent-cli[vad]" -p 3.13
|
|
833
837
|
```
|
|
834
838
|
|
|
835
839
|
**How to Use It:**
|
|
@@ -1,43 +1,46 @@
|
|
|
1
1
|
agent_cli/__init__.py,sha256=-bo57j_5TsCug2tGHh7wClAGDhzN239639K40pgVh4g,187
|
|
2
2
|
agent_cli/__main__.py,sha256=2wx_SxA8KRdejM-hBFLN8JTR2rIgtwnDH03MPAbJH5U,106
|
|
3
|
+
agent_cli/_extras.json,sha256=CckrkVfTGKftzFSasCwnkqy9u6EJ1nmCTQYdB7pYW7U,699
|
|
3
4
|
agent_cli/_tools.py,sha256=u9Ww-k-sbwFnMTW8sreFGd71nJP6o5hKcM0Zd_D9GZk,12136
|
|
4
5
|
agent_cli/api.py,sha256=FQ_HATc7DaedbEFQ275Z18wV90tkDByD_9x_K0wdSLQ,456
|
|
5
6
|
agent_cli/cli.py,sha256=zCk7sVVZstTU3GHFXAavcXd8Kactav4x0PyVY_rX4SI,2739
|
|
6
7
|
agent_cli/config.py,sha256=dgwDV6chrQzGnVZIJ0OOg26jFKLCGIInC4Q9oXcj3rM,15413
|
|
7
8
|
agent_cli/config_cmd.py,sha256=Fb-KBjtveft3x3_xjqlqobBwZqtI6Umrd8YzlwTAnZ4,9554
|
|
8
9
|
agent_cli/constants.py,sha256=-Q17N6qKIGqPDsu3FxpIKP33G0Cs0RUJlHwYNHxVxek,843
|
|
9
|
-
agent_cli/docs_gen.py,sha256=
|
|
10
|
+
agent_cli/docs_gen.py,sha256=j6mBHwoPcQzMdgIWi_bB2A6yOyhvmW_cntRfwUg_8p8,13374
|
|
10
11
|
agent_cli/example-config.toml,sha256=xd9BXeOqdYx4xFJt58VBs2I49ESy6dF4-mWF_g8sM9o,7552
|
|
11
12
|
agent_cli/opts.py,sha256=qMK_mLxzGAbX7C2IYuCFvOkLgaxCCMO66I9ps8AdrYo,12114
|
|
12
13
|
agent_cli/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
13
14
|
agent_cli/_requirements/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
|
-
agent_cli/_requirements/
|
|
15
|
-
agent_cli/_requirements/
|
|
16
|
-
agent_cli/_requirements/
|
|
17
|
-
agent_cli/_requirements/
|
|
18
|
-
agent_cli/_requirements/
|
|
19
|
-
agent_cli/_requirements/
|
|
20
|
-
agent_cli/_requirements/
|
|
21
|
-
agent_cli/_requirements/
|
|
22
|
-
agent_cli/_requirements/
|
|
15
|
+
agent_cli/_requirements/audio.txt,sha256=IruUORYlMgsZp7VwgTsPMH280_om8wN8Ifs77gOFxCo,1162
|
|
16
|
+
agent_cli/_requirements/faster-whisper.txt,sha256=jq-_ZPb_MMf4F3XbavRF4lgtEij46BunMan4rRNW7Fc,4210
|
|
17
|
+
agent_cli/_requirements/kokoro.txt,sha256=cMPQvidD4bnK8aGl8V4ZYFqEu_VYX1l67YFqpfcvOhw,8868
|
|
18
|
+
agent_cli/_requirements/llm.txt,sha256=gpv8Y_iJxoY2aCTmZpWThi0rvERN30MtGGcETsCriOE,3474
|
|
19
|
+
agent_cli/_requirements/memory.txt,sha256=6Cybqu8UGcgtWXEYmKU0sxAtiIOW33g4DqoDe-pFQBg,7152
|
|
20
|
+
agent_cli/_requirements/mlx-whisper.txt,sha256=85RNbfuCwOknROjr6rCan-FlNwNbIsjhB6Aqmmn1SmQ,6090
|
|
21
|
+
agent_cli/_requirements/piper.txt,sha256=YBgPSTlbXW-r5VLd1gQ5LDxF6h-owHOdgjFcoTaU8w0,3340
|
|
22
|
+
agent_cli/_requirements/rag.txt,sha256=Zd5mgG7u8L4iptKj8yuywuHEgMZqE2qyijXtH2DGERE,8127
|
|
23
|
+
agent_cli/_requirements/server.txt,sha256=w79d1h7Ve5qgUlATMjGIcxcUYxKFFaYe2oL0aWsXLzw,2896
|
|
24
|
+
agent_cli/_requirements/speed.txt,sha256=0avanClTgurU-J-KRkJLTDmERePR80lJIydEkdEEx4k,1130
|
|
25
|
+
agent_cli/_requirements/vad.txt,sha256=X24VHAweTcn5QcHgyY7HFametXLWHUxx0Y2oOi2nntg,3683
|
|
23
26
|
agent_cli/agents/__init__.py,sha256=c1rnncDW5pBvP6BiLzFVpLWDNZzFRaUA7-a97avFVAs,321
|
|
24
27
|
agent_cli/agents/_voice_agent_common.py,sha256=PUAztW84Xf9U7d0C_K5cL7I8OANIE1H6M8dFD_cRqps,4360
|
|
25
|
-
agent_cli/agents/assistant.py,sha256=
|
|
26
|
-
agent_cli/agents/autocorrect.py,sha256=
|
|
27
|
-
agent_cli/agents/chat.py,sha256=
|
|
28
|
-
agent_cli/agents/rag_proxy.py,sha256=
|
|
29
|
-
agent_cli/agents/speak.py,sha256=
|
|
30
|
-
agent_cli/agents/transcribe.py,sha256=
|
|
31
|
-
agent_cli/agents/transcribe_daemon.py,sha256=
|
|
32
|
-
agent_cli/agents/voice_edit.py,sha256=
|
|
28
|
+
agent_cli/agents/assistant.py,sha256=dXExb-UrWdMiEcI1c6bXvMhii1iGg49Zw4On6-inQUE,14046
|
|
29
|
+
agent_cli/agents/autocorrect.py,sha256=kIkQNo6ldRre8y1KYMqBxlDLyyoc2l6Wa632CoYkZOQ,8964
|
|
30
|
+
agent_cli/agents/chat.py,sha256=7qwDBXFQvhqtlRA4IFXJS24hZ9PN6lb0g9boxwHUS1c,17257
|
|
31
|
+
agent_cli/agents/rag_proxy.py,sha256=GNhBoFp0C5kIGxfI6382SBlAQEgIWUahBHuZHS32DF4,4699
|
|
32
|
+
agent_cli/agents/speak.py,sha256=xG2ppthpdmpzsYkNeUynwDmWe8JTpJYhdKs3L1jR6eY,7101
|
|
33
|
+
agent_cli/agents/transcribe.py,sha256=0A1lt0kiDpzp8tfG11vxwzDzoXcDi7-nVmMbKbETYcU,24573
|
|
34
|
+
agent_cli/agents/transcribe_daemon.py,sha256=FPqcAfGNK_PyxfgQw1b-xph4JrFeCvKy8e9b1HIhRUU,17668
|
|
35
|
+
agent_cli/agents/voice_edit.py,sha256=bOZzeRici5GFq9qPUwHTQiW1TFhHcm_AcLG-EdKxwgk,11137
|
|
33
36
|
agent_cli/agents/memory/__init__.py,sha256=gW-0NGksjxTKkSjk4PzlXZIiAoF0sS2mFrRdeGVITf8,780
|
|
34
|
-
agent_cli/agents/memory/add.py,sha256=
|
|
35
|
-
agent_cli/agents/memory/proxy.py,sha256=
|
|
37
|
+
agent_cli/agents/memory/add.py,sha256=lk6q2SmuwNNFAoDnfOQxPpNHbbHjekGCyKaWUgC9x-8,6210
|
|
38
|
+
agent_cli/agents/memory/proxy.py,sha256=BRKMn1kxNnxGcy-zQnlhmDR6hs41Qec4125NCy5a3O8,6625
|
|
36
39
|
agent_cli/core/__init__.py,sha256=c_knH7u9QgjsfMIil9NP4bVizHawLUMYoQWU4H9vMlQ,46
|
|
37
40
|
agent_cli/core/audio.py,sha256=43FpYe2Wu_BYK9xJ_55V4xHjHJeFwQ5aM-CQzlTryt8,15168
|
|
38
41
|
agent_cli/core/audio_format.py,sha256=zk3qlYMAlKYPz1enrjihQQspl_C218v1Rbcm7Uktlew,8773
|
|
39
42
|
agent_cli/core/chroma.py,sha256=Vb_ny7SzAIL9SCEGlYgYOqsdG9BgusFGMj0RUzb6W90,2728
|
|
40
|
-
agent_cli/core/deps.py,sha256=
|
|
43
|
+
agent_cli/core/deps.py,sha256=duZEIAJwx_faJr0E2yGn-UJDb8t1uEBcx6MEYNK7TDc,4587
|
|
41
44
|
agent_cli/core/openai_proxy.py,sha256=f2kqxk6bAOeN7gOzU0JnyS-RYtXUcK5Gbsa_pBmlCv0,4470
|
|
42
45
|
agent_cli/core/process.py,sha256=Zay6beX4JUbkBHr6xbJxwVBjVFDABmRHQCXVPQH93r8,5916
|
|
43
46
|
agent_cli/core/reranker.py,sha256=Qv5ASGUdseLzI6eQRfNeQY-Lvv4SOgLOu56CpwmszDM,3779
|
|
@@ -74,7 +77,7 @@ agent_cli/dev/editors/sublime.py,sha256=owEfRSMuArSeFKqk-LE2JOXaZy5QlQfHQ-l0I4k2
|
|
|
74
77
|
agent_cli/dev/editors/vim.py,sha256=Fo-IQMPVbIiwBdOfmkFxR37f96QW6xc5LV3Pvr3u-b0,1378
|
|
75
78
|
agent_cli/dev/editors/vscode.py,sha256=GOrl4FwVdDyuSn7t4lglgnVt_T6NtpjLVh1OWBxDMwE,318
|
|
76
79
|
agent_cli/dev/editors/zed.py,sha256=lRMhdN_SKmHBA1ulx8x-p7Th_0EGSIv6ppAE84xobU4,515
|
|
77
|
-
agent_cli/dev/skill/SKILL.md,sha256=
|
|
80
|
+
agent_cli/dev/skill/SKILL.md,sha256=SLDavirkkPVAHxf1JmRxvJz4EUQI81Dv0fdvjDs7VJ8,4443
|
|
78
81
|
agent_cli/dev/skill/examples.md,sha256=ZzCyfudBk4lMR-sz8ER9l5vi6hI3HTeUlvQorRFVol4,16405
|
|
79
82
|
agent_cli/dev/terminals/__init__.py,sha256=yUTNtvs1Do2hvhx56XxyfI-5HA5mjiv0IbJuuaL9TeE,371
|
|
80
83
|
agent_cli/dev/terminals/apple_terminal.py,sha256=s7GdxXPgbpSLKK1DUwjNpshQpjR5Nt1QbL_cKPefIRI,2595
|
|
@@ -88,10 +91,10 @@ agent_cli/dev/terminals/warp.py,sha256=j-Jvz_BbWYC3QfLrvl4CbDh03c9OGRFmuCzjyB2ud
|
|
|
88
91
|
agent_cli/dev/terminals/zellij.py,sha256=GnQnopimb9XH67CZGHjnbVWpVSWhaLCATGJizCT5TkY,2321
|
|
89
92
|
agent_cli/install/__init__.py,sha256=JQPrOrtdNd1Y1NmQDkb3Nmm1qdyn3kPjhQwy9D8ryjI,124
|
|
90
93
|
agent_cli/install/common.py,sha256=WvnmcjnFTW0d1HZrKVGzj5Tg3q8Txk_ZOdc4a1MBFWI,3121
|
|
91
|
-
agent_cli/install/extras.py,sha256=
|
|
94
|
+
agent_cli/install/extras.py,sha256=ZknvNHXQDlg4K9Wn1Bs7tYQxx5T5wyQKi_Kea-aB1gU,5161
|
|
92
95
|
agent_cli/install/hotkeys.py,sha256=bwGoPeEKK6VI-IrKU8Q0RLMW9smkDNU7CdqD3Nbsd-w,1626
|
|
93
96
|
agent_cli/install/services.py,sha256=2s_7ThxaElKCuomBYTn4Z36TF_o_arNeyJ4f8Wh4jEI,2912
|
|
94
|
-
agent_cli/memory/__init__.py,sha256=
|
|
97
|
+
agent_cli/memory/__init__.py,sha256=8XNpVzP-qjF8o49A_eXsH_Rbp_FmxTIcknnvxq7vHms,162
|
|
95
98
|
agent_cli/memory/_files.py,sha256=Za4YeSK5f2NKVZf1zDZXo4Sf-gERaProeSAXlLt8e0c,7598
|
|
96
99
|
agent_cli/memory/_filters.py,sha256=VzuFyWTGqWKY0JYctfxF1JZFVYfVecW7mLDAM019mzU,2044
|
|
97
100
|
agent_cli/memory/_git.py,sha256=qWOJkwUrWE6TkVYdUW1vVA6VB5w00w0LKDfqHUwQrBY,4738
|
|
@@ -108,7 +111,7 @@ agent_cli/memory/client.py,sha256=XomHhP-hPSoosORkBKSY1dW3gjheFEVqAac0b-tAULo,99
|
|
|
108
111
|
agent_cli/memory/engine.py,sha256=rABVC86b5wU1QxY3BM43RhvfDOxoRT7Ddm98BN_qCL4,11656
|
|
109
112
|
agent_cli/memory/entities.py,sha256=_8wyJz--tNa66CEtSpl2TUN_zeHQvMzm42htnDaOr6g,1219
|
|
110
113
|
agent_cli/memory/models.py,sha256=KK0wToEf-tXssYVL0hYaJlcADlJ3G2lcSXwo1UmA0VU,2352
|
|
111
|
-
agent_cli/rag/__init__.py,sha256=
|
|
114
|
+
agent_cli/rag/__init__.py,sha256=nWNh4_zFTiweNQAiUzNVt1jq7myJxaeB5kXv1063GUM,54
|
|
112
115
|
agent_cli/rag/_indexer.py,sha256=tzce07xvCbfH2jA0F_sldPRe7VLDXVQ3PGZFRsAJN10,1998
|
|
113
116
|
agent_cli/rag/_indexing.py,sha256=z2z5BWtQVuviPOjUiu151gJ9MzJxaqRYKrSi4Jj06mA,7605
|
|
114
117
|
agent_cli/rag/_prompt.py,sha256=d8_jOhZGafMmjO7BlCl4H125bj4m-dNFWDOLz5_OPrw,954
|
|
@@ -136,6 +139,7 @@ agent_cli/scripts/setup-macos.sh,sha256=iKWhhONLGDTqYawSDqutnl0mfQomSVPPAsx09-0E
|
|
|
136
139
|
agent_cli/scripts/setup-windows.ps1,sha256=NhyxOuwCjjSw24q2QOqggATos_n06DDbfvMQWuAB3tM,2938
|
|
137
140
|
agent_cli/scripts/start-all-services-windows.ps1,sha256=uOODaPFzniEU7asDgMyf5MEOWcEFsGg_mCLLlDgKoa8,2643
|
|
138
141
|
agent_cli/scripts/start-all-services.sh,sha256=c6pjXoyoQkeF-cYpldeMMo38XxRMmS43FHG5w3ElLxg,7756
|
|
142
|
+
agent_cli/scripts/sync_extras.py,sha256=VpuhNg7iP3YT3l1jqoSBeWbzDEkeUEGGba7_lGUxBjA,4737
|
|
139
143
|
agent_cli/scripts/.runtime/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
140
144
|
agent_cli/scripts/linux-hotkeys/README.md,sha256=OW48Xyv096XkUosSJkzED_nnEEncSzhl87FNgEfq8wg,2037
|
|
141
145
|
agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh,sha256=sme-dil3EU4nkdRwxSvARr-hBN9UjrU1IFabLCrvwl8,1251
|
|
@@ -152,7 +156,7 @@ agent_cli/scripts/nvidia-asr-server/server.py,sha256=kPNQIVF3exblvqMtIVk38Y6sZy2
|
|
|
152
156
|
agent_cli/scripts/nvidia-asr-server/shell.nix,sha256=IT20j5YNj_wc7MdXi7ndogGodDNSGwyq8G0bNoZEpmg,1003
|
|
153
157
|
agent_cli/scripts/nvidia-asr-server/uv.lock,sha256=5WWaqWOuV_moMPC-LIZK-A-Y5oaHr1tUn_vbR-IupzY,728608
|
|
154
158
|
agent_cli/server/__init__.py,sha256=NZuJHlLHck9KWrepNZHrJONptYCQI9P-uTqknSFI5Ds,71
|
|
155
|
-
agent_cli/server/cli.py,sha256=
|
|
159
|
+
agent_cli/server/cli.py,sha256=ZpsDmf9Z18jk2N1bdJILN2urPXb8iLYzrlHF9sCxmuY,23021
|
|
156
160
|
agent_cli/server/common.py,sha256=fD2AZdM716TXcz1T4ZDPpPaKynVOEjbVC1LDDloDmDo,6463
|
|
157
161
|
agent_cli/server/model_manager.py,sha256=93l_eeZeqnPALyDIK24or61tvded9TbM8tnde0okVjY,9225
|
|
158
162
|
agent_cli/server/model_registry.py,sha256=KrRV1XxbFYuXu5rJlHFh6PTl_2BKiWnWsaNrf-0c6wQ,6988
|
|
@@ -179,13 +183,13 @@ agent_cli/server/whisper/backends/base.py,sha256=gQi5EyMCFS464mKXGIKbh1vgtBm99eN
|
|
|
179
183
|
agent_cli/server/whisper/backends/faster_whisper.py,sha256=-BogM_-_rhlXKUZuW1qUN8zw2gD0ut1bJozPDP19knA,6717
|
|
180
184
|
agent_cli/server/whisper/backends/mlx.py,sha256=wSkD9wL3K8PvQToJ5qkTj_HZQJD9Brs_bjNz-X0Sku8,9328
|
|
181
185
|
agent_cli/services/__init__.py,sha256=8REdXC5eXfhAJJ6j85tgCinbj89PLwv8A50dysA8VUc,10004
|
|
182
|
-
agent_cli/services/_wyoming_utils.py,sha256=
|
|
183
|
-
agent_cli/services/asr.py,sha256=
|
|
186
|
+
agent_cli/services/_wyoming_utils.py,sha256=pKPa4fOSdqcG3-kNHJOHHsMnZ1yZJZi6XohVwjAwabo,1971
|
|
187
|
+
agent_cli/services/asr.py,sha256=aRaCLVCygsJ15qyQEPECOZsdSrnlLPbyY4RwAqY0qIw,17258
|
|
184
188
|
agent_cli/services/llm.py,sha256=Kwdo6pbMYI9oykF-RBe1iaL3KsYrNWTLdRSioewmsGQ,7199
|
|
185
|
-
agent_cli/services/tts.py,sha256=
|
|
186
|
-
agent_cli/services/wake_word.py,sha256=
|
|
187
|
-
agent_cli-0.
|
|
188
|
-
agent_cli-0.
|
|
189
|
-
agent_cli-0.
|
|
190
|
-
agent_cli-0.
|
|
191
|
-
agent_cli-0.
|
|
189
|
+
agent_cli/services/tts.py,sha256=NX5Qnq7ddLI3mwm3nzhbR3zB1Os4Ip4sSVSjDZDTBcI,14855
|
|
190
|
+
agent_cli/services/wake_word.py,sha256=JFJ1SA22H4yko9DXiQ1t7fcoxeALLAe3iBrLs0z8rX4,4664
|
|
191
|
+
agent_cli-0.67.0.dist-info/METADATA,sha256=jgGyC23IhQdPxDeTSqmWDE7H_1UXvH5rK5nP9v1jkK8,155632
|
|
192
|
+
agent_cli-0.67.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
193
|
+
agent_cli-0.67.0.dist-info/entry_points.txt,sha256=FUv-fB2atLsPUk_RT4zqnZl1coz4_XHFwRALOKOF38s,97
|
|
194
|
+
agent_cli-0.67.0.dist-info/licenses/LICENSE,sha256=majJU6S9kC8R8bW39NVBHyv32Dq50FL6TDxECG2WVts,1068
|
|
195
|
+
agent_cli-0.67.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|