agent-cli 0.71.0__py3-none-any.whl → 0.72.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 +2 -2
- agent_cli/_requirements/memory.txt +14 -1
- agent_cli/_requirements/rag.txt +14 -1
- agent_cli/_requirements/vad.txt +1 -85
- agent_cli/core/deps.py +6 -3
- agent_cli/core/vad.py +6 -24
- agent_cli/install/extras.py +5 -3
- {agent_cli-0.71.0.dist-info → agent_cli-0.72.0.dist-info}/METADATA +4 -2
- {agent_cli-0.71.0.dist-info → agent_cli-0.72.0.dist-info}/RECORD +12 -12
- {agent_cli-0.71.0.dist-info → agent_cli-0.72.0.dist-info}/WHEEL +0 -0
- {agent_cli-0.71.0.dist-info → agent_cli-0.72.0.dist-info}/entry_points.txt +0 -0
- {agent_cli-0.71.0.dist-info → agent_cli-0.72.0.dist-info}/licenses/LICENSE +0 -0
agent_cli/_extras.json
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
"wyoming": ["Wyoming protocol for ASR/TTS servers", ["wyoming"]],
|
|
3
3
|
"audio": ["Local audio recording/playback", ["numpy", "sounddevice", "wyoming"]],
|
|
4
4
|
"llm": ["LLM framework (pydantic-ai)", ["pydantic_ai"]],
|
|
5
|
-
"memory": ["Long-term memory proxy", ["chromadb", "yaml"]],
|
|
6
|
-
"rag": ["RAG proxy (ChromaDB, embeddings)", ["chromadb"]],
|
|
5
|
+
"memory": ["Long-term memory proxy", ["chromadb", "openai", "yaml"]],
|
|
6
|
+
"rag": ["RAG proxy (ChromaDB, embeddings)", ["chromadb", "openai"]],
|
|
7
7
|
"server": ["FastAPI server components", ["fastapi"]],
|
|
8
8
|
"speed": ["Audio speed adjustment (audiostretchy)", ["audiostretchy"]],
|
|
9
9
|
"piper": ["Local Piper TTS", ["piper"]],
|
|
@@ -7,6 +7,7 @@ annotated-types==0.7.0
|
|
|
7
7
|
anyio==4.12.1
|
|
8
8
|
# via
|
|
9
9
|
# httpx
|
|
10
|
+
# openai
|
|
10
11
|
# starlette
|
|
11
12
|
# watchfiles
|
|
12
13
|
attrs==25.4.0
|
|
@@ -45,7 +46,9 @@ colorama==0.4.6 ; os_name == 'nt' or sys_platform == 'win32'
|
|
|
45
46
|
coloredlogs==15.0.1
|
|
46
47
|
# via onnxruntime
|
|
47
48
|
distro==1.9.0
|
|
48
|
-
# via
|
|
49
|
+
# via
|
|
50
|
+
# openai
|
|
51
|
+
# posthog
|
|
49
52
|
dnspython==2.8.0
|
|
50
53
|
# via email-validator
|
|
51
54
|
dotenv==0.9.9
|
|
@@ -96,6 +99,7 @@ httpx==0.28.1
|
|
|
96
99
|
# chromadb
|
|
97
100
|
# fastapi
|
|
98
101
|
# fastapi-cloud-cli
|
|
102
|
+
# openai
|
|
99
103
|
huggingface-hub==0.36.0
|
|
100
104
|
# via
|
|
101
105
|
# agent-cli
|
|
@@ -115,6 +119,8 @@ importlib-resources==6.5.2
|
|
|
115
119
|
# via chromadb
|
|
116
120
|
jinja2==3.1.6
|
|
117
121
|
# via fastapi
|
|
122
|
+
jiter==0.12.0
|
|
123
|
+
# via openai
|
|
118
124
|
jsonschema==4.26.0
|
|
119
125
|
# via chromadb
|
|
120
126
|
jsonschema-specifications==2025.9.1
|
|
@@ -142,6 +148,8 @@ onnxruntime==1.20.1
|
|
|
142
148
|
# via
|
|
143
149
|
# agent-cli
|
|
144
150
|
# chromadb
|
|
151
|
+
openai==2.15.0
|
|
152
|
+
# via agent-cli
|
|
145
153
|
opentelemetry-api==1.39.1
|
|
146
154
|
# via
|
|
147
155
|
# chromadb
|
|
@@ -195,6 +203,7 @@ pydantic==2.12.5
|
|
|
195
203
|
# chromadb
|
|
196
204
|
# fastapi
|
|
197
205
|
# fastapi-cloud-cli
|
|
206
|
+
# openai
|
|
198
207
|
# pydantic-extra-types
|
|
199
208
|
# pydantic-settings
|
|
200
209
|
pydantic-core==2.41.5
|
|
@@ -281,6 +290,8 @@ six==1.17.0
|
|
|
281
290
|
# kubernetes
|
|
282
291
|
# posthog
|
|
283
292
|
# python-dateutil
|
|
293
|
+
sniffio==1.3.1
|
|
294
|
+
# via openai
|
|
284
295
|
starlette==0.50.0
|
|
285
296
|
# via fastapi
|
|
286
297
|
sympy==1.14.0
|
|
@@ -295,6 +306,7 @@ tqdm==4.67.1
|
|
|
295
306
|
# via
|
|
296
307
|
# chromadb
|
|
297
308
|
# huggingface-hub
|
|
309
|
+
# openai
|
|
298
310
|
# transformers
|
|
299
311
|
transformers==4.57.5
|
|
300
312
|
# via agent-cli
|
|
@@ -313,6 +325,7 @@ typing-extensions==4.15.0
|
|
|
313
325
|
# fastapi
|
|
314
326
|
# grpcio
|
|
315
327
|
# huggingface-hub
|
|
328
|
+
# openai
|
|
316
329
|
# opentelemetry-api
|
|
317
330
|
# opentelemetry-exporter-otlp-proto-grpc
|
|
318
331
|
# opentelemetry-sdk
|
agent_cli/_requirements/rag.txt
CHANGED
|
@@ -7,6 +7,7 @@ annotated-types==0.7.0
|
|
|
7
7
|
anyio==4.12.1
|
|
8
8
|
# via
|
|
9
9
|
# httpx
|
|
10
|
+
# openai
|
|
10
11
|
# starlette
|
|
11
12
|
# watchfiles
|
|
12
13
|
attrs==25.4.0
|
|
@@ -61,7 +62,9 @@ cryptography==46.0.3
|
|
|
61
62
|
defusedxml==0.7.1
|
|
62
63
|
# via markitdown
|
|
63
64
|
distro==1.9.0
|
|
64
|
-
# via
|
|
65
|
+
# via
|
|
66
|
+
# openai
|
|
67
|
+
# posthog
|
|
65
68
|
dnspython==2.8.0
|
|
66
69
|
# via email-validator
|
|
67
70
|
dotenv==0.9.9
|
|
@@ -112,6 +115,7 @@ httpx==0.28.1
|
|
|
112
115
|
# chromadb
|
|
113
116
|
# fastapi
|
|
114
117
|
# fastapi-cloud-cli
|
|
118
|
+
# openai
|
|
115
119
|
huggingface-hub==0.36.0
|
|
116
120
|
# via
|
|
117
121
|
# agent-cli
|
|
@@ -131,6 +135,8 @@ importlib-resources==6.5.2
|
|
|
131
135
|
# via chromadb
|
|
132
136
|
jinja2==3.1.6
|
|
133
137
|
# via fastapi
|
|
138
|
+
jiter==0.12.0
|
|
139
|
+
# via openai
|
|
134
140
|
jsonschema==4.26.0
|
|
135
141
|
# via chromadb
|
|
136
142
|
jsonschema-specifications==2025.9.1
|
|
@@ -173,6 +179,8 @@ onnxruntime==1.20.1
|
|
|
173
179
|
# chromadb
|
|
174
180
|
# magika
|
|
175
181
|
# markitdown
|
|
182
|
+
openai==2.15.0
|
|
183
|
+
# via agent-cli
|
|
176
184
|
opentelemetry-api==1.39.1
|
|
177
185
|
# via
|
|
178
186
|
# chromadb
|
|
@@ -232,6 +240,7 @@ pydantic==2.12.5
|
|
|
232
240
|
# chromadb
|
|
233
241
|
# fastapi
|
|
234
242
|
# fastapi-cloud-cli
|
|
243
|
+
# openai
|
|
235
244
|
# pydantic-extra-types
|
|
236
245
|
# pydantic-settings
|
|
237
246
|
pydantic-core==2.41.5
|
|
@@ -322,6 +331,8 @@ six==1.17.0
|
|
|
322
331
|
# markdownify
|
|
323
332
|
# posthog
|
|
324
333
|
# python-dateutil
|
|
334
|
+
sniffio==1.3.1
|
|
335
|
+
# via openai
|
|
325
336
|
soupsieve==2.8.1
|
|
326
337
|
# via beautifulsoup4
|
|
327
338
|
starlette==0.50.0
|
|
@@ -338,6 +349,7 @@ tqdm==4.67.1
|
|
|
338
349
|
# via
|
|
339
350
|
# chromadb
|
|
340
351
|
# huggingface-hub
|
|
352
|
+
# openai
|
|
341
353
|
# transformers
|
|
342
354
|
transformers==4.57.5
|
|
343
355
|
# via agent-cli
|
|
@@ -357,6 +369,7 @@ typing-extensions==4.15.0
|
|
|
357
369
|
# fastapi
|
|
358
370
|
# grpcio
|
|
359
371
|
# huggingface-hub
|
|
372
|
+
# openai
|
|
360
373
|
# opentelemetry-api
|
|
361
374
|
# opentelemetry-exporter-otlp-proto-grpc
|
|
362
375
|
# opentelemetry-sdk
|
agent_cli/_requirements/vad.txt
CHANGED
|
@@ -14,89 +14,22 @@ click==8.3.1
|
|
|
14
14
|
# typer-slim
|
|
15
15
|
colorama==0.4.6 ; sys_platform == 'win32'
|
|
16
16
|
# via click
|
|
17
|
-
coloredlogs==15.0.1
|
|
18
|
-
# via onnxruntime
|
|
19
17
|
dotenv==0.9.9
|
|
20
18
|
# via agent-cli
|
|
21
|
-
filelock==3.20.3
|
|
22
|
-
# via torch
|
|
23
|
-
flatbuffers==25.12.19
|
|
24
|
-
# via onnxruntime
|
|
25
|
-
fsspec==2026.1.0
|
|
26
|
-
# via torch
|
|
27
19
|
h11==0.16.0
|
|
28
20
|
# via httpcore
|
|
29
21
|
httpcore==1.0.9
|
|
30
22
|
# via httpx
|
|
31
23
|
httpx==0.28.1
|
|
32
24
|
# via agent-cli
|
|
33
|
-
humanfriendly==10.0
|
|
34
|
-
# via coloredlogs
|
|
35
25
|
idna==3.11
|
|
36
26
|
# via
|
|
37
27
|
# anyio
|
|
38
28
|
# httpx
|
|
39
|
-
jinja2==3.1.6
|
|
40
|
-
# via torch
|
|
41
29
|
markdown-it-py==4.0.0
|
|
42
30
|
# via rich
|
|
43
|
-
markupsafe==3.0.3
|
|
44
|
-
# via jinja2
|
|
45
31
|
mdurl==0.1.2
|
|
46
32
|
# via markdown-it-py
|
|
47
|
-
mpmath==1.3.0
|
|
48
|
-
# via sympy
|
|
49
|
-
networkx==3.6.1
|
|
50
|
-
# via torch
|
|
51
|
-
numpy==2.3.5
|
|
52
|
-
# via onnxruntime
|
|
53
|
-
nvidia-cublas-cu12==12.8.4.1 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
54
|
-
# via
|
|
55
|
-
# nvidia-cudnn-cu12
|
|
56
|
-
# nvidia-cusolver-cu12
|
|
57
|
-
# torch
|
|
58
|
-
nvidia-cuda-cupti-cu12==12.8.90 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
59
|
-
# via torch
|
|
60
|
-
nvidia-cuda-nvrtc-cu12==12.8.93 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
61
|
-
# via torch
|
|
62
|
-
nvidia-cuda-runtime-cu12==12.8.90 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
63
|
-
# via torch
|
|
64
|
-
nvidia-cudnn-cu12==9.10.2.21 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
65
|
-
# via torch
|
|
66
|
-
nvidia-cufft-cu12==11.3.3.83 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
67
|
-
# via torch
|
|
68
|
-
nvidia-cufile-cu12==1.13.1.3 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
69
|
-
# via torch
|
|
70
|
-
nvidia-curand-cu12==10.3.9.90 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
71
|
-
# via torch
|
|
72
|
-
nvidia-cusolver-cu12==11.7.3.90 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
73
|
-
# via torch
|
|
74
|
-
nvidia-cusparse-cu12==12.5.8.93 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
75
|
-
# via
|
|
76
|
-
# nvidia-cusolver-cu12
|
|
77
|
-
# torch
|
|
78
|
-
nvidia-cusparselt-cu12==0.7.1 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
79
|
-
# via torch
|
|
80
|
-
nvidia-nccl-cu12==2.27.5 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
81
|
-
# via torch
|
|
82
|
-
nvidia-nvjitlink-cu12==12.8.93 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
83
|
-
# via
|
|
84
|
-
# nvidia-cufft-cu12
|
|
85
|
-
# nvidia-cusolver-cu12
|
|
86
|
-
# nvidia-cusparse-cu12
|
|
87
|
-
# torch
|
|
88
|
-
nvidia-nvshmem-cu12==3.3.20 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
89
|
-
# via torch
|
|
90
|
-
nvidia-nvtx-cu12==12.8.90 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
91
|
-
# via torch
|
|
92
|
-
onnxruntime==1.20.1
|
|
93
|
-
# via silero-vad
|
|
94
|
-
packaging==25.0
|
|
95
|
-
# via
|
|
96
|
-
# onnxruntime
|
|
97
|
-
# silero-vad
|
|
98
|
-
protobuf==6.33.4
|
|
99
|
-
# via onnxruntime
|
|
100
33
|
psutil==7.2.1 ; sys_platform == 'win32'
|
|
101
34
|
# via agent-cli
|
|
102
35
|
pydantic==2.12.5
|
|
@@ -107,8 +40,6 @@ pygments==2.19.2
|
|
|
107
40
|
# via rich
|
|
108
41
|
pyperclip==1.11.0
|
|
109
42
|
# via agent-cli
|
|
110
|
-
pyreadline3==3.5.4 ; sys_platform == 'win32'
|
|
111
|
-
# via humanfriendly
|
|
112
43
|
python-dotenv==1.2.1
|
|
113
44
|
# via dotenv
|
|
114
45
|
rich==14.2.0
|
|
@@ -118,26 +49,12 @@ rich==14.2.0
|
|
|
118
49
|
# typer-slim
|
|
119
50
|
setproctitle==1.3.7
|
|
120
51
|
# via agent-cli
|
|
121
|
-
setuptools==80.9.0 ; python_full_version >= '3.12'
|
|
122
|
-
# via torch
|
|
123
52
|
shellingham==1.5.4
|
|
124
53
|
# via
|
|
125
54
|
# typer
|
|
126
55
|
# typer-slim
|
|
127
|
-
silero-vad==
|
|
56
|
+
silero-vad-lite==0.2.1
|
|
128
57
|
# via agent-cli
|
|
129
|
-
sympy==1.14.0
|
|
130
|
-
# via
|
|
131
|
-
# onnxruntime
|
|
132
|
-
# torch
|
|
133
|
-
torch==2.9.1
|
|
134
|
-
# via
|
|
135
|
-
# silero-vad
|
|
136
|
-
# torchaudio
|
|
137
|
-
torchaudio==2.9.1
|
|
138
|
-
# via silero-vad
|
|
139
|
-
triton==3.5.1 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
140
|
-
# via torch
|
|
141
58
|
typer==0.21.1
|
|
142
59
|
# via agent-cli
|
|
143
60
|
typer-slim==0.21.1
|
|
@@ -147,7 +64,6 @@ typing-extensions==4.15.0
|
|
|
147
64
|
# anyio
|
|
148
65
|
# pydantic
|
|
149
66
|
# pydantic-core
|
|
150
|
-
# torch
|
|
151
67
|
# typer
|
|
152
68
|
# typer-slim
|
|
153
69
|
# typing-inspection
|
agent_cli/core/deps.py
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
import functools
|
|
6
|
+
import importlib
|
|
6
7
|
import json
|
|
7
8
|
import os
|
|
8
9
|
from importlib.util import find_spec
|
|
@@ -12,7 +13,7 @@ from typing import TYPE_CHECKING, TypeVar
|
|
|
12
13
|
import typer
|
|
13
14
|
|
|
14
15
|
from agent_cli.config import load_config
|
|
15
|
-
from agent_cli.core.utils import
|
|
16
|
+
from agent_cli.core.utils import err_console, print_error_message
|
|
16
17
|
|
|
17
18
|
if TYPE_CHECKING:
|
|
18
19
|
from collections.abc import Callable
|
|
@@ -139,7 +140,7 @@ def _try_auto_install(missing: list[str]) -> bool:
|
|
|
139
140
|
else:
|
|
140
141
|
extras_to_install.append(extra)
|
|
141
142
|
|
|
142
|
-
|
|
143
|
+
err_console.print(
|
|
143
144
|
f"[yellow]Auto-installing missing extras: {', '.join(extras_to_install)}[/]",
|
|
144
145
|
)
|
|
145
146
|
return install_extras_programmatic(extras_to_install, quiet=True)
|
|
@@ -159,7 +160,9 @@ def _check_and_install_extras(extras: tuple[str, ...]) -> list[str]:
|
|
|
159
160
|
print_error_message("Auto-install failed.\n" + get_combined_install_hint(missing))
|
|
160
161
|
return missing
|
|
161
162
|
|
|
162
|
-
|
|
163
|
+
err_console.print("[green]Installation complete![/]")
|
|
164
|
+
# Invalidate import caches so find_spec() can see newly installed packages
|
|
165
|
+
importlib.invalidate_caches()
|
|
163
166
|
still_missing = [e for e in extras if not check_extra_installed(e)]
|
|
164
167
|
if still_missing:
|
|
165
168
|
print_error_message(
|
agent_cli/core/vad.py
CHANGED
|
@@ -3,38 +3,22 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
import logging
|
|
6
|
-
import urllib.request
|
|
7
6
|
from collections import deque
|
|
8
|
-
from pathlib import Path
|
|
9
7
|
|
|
10
8
|
from agent_cli import constants
|
|
11
9
|
|
|
12
10
|
try:
|
|
13
11
|
import numpy as np
|
|
14
|
-
import
|
|
12
|
+
from silero_vad_lite import SileroVAD
|
|
15
13
|
except ImportError as e:
|
|
16
14
|
msg = (
|
|
17
|
-
"silero-vad is required for the transcribe-daemon command. "
|
|
15
|
+
"silero-vad-lite is required for the transcribe-daemon command. "
|
|
18
16
|
"Install it with: `pip install agent-cli[vad]` or `uv sync --extra vad`."
|
|
19
17
|
)
|
|
20
18
|
raise ImportError(msg) from e
|
|
21
19
|
|
|
22
20
|
LOGGER = logging.getLogger(__name__)
|
|
23
21
|
|
|
24
|
-
_SILERO_VAD_ONNX_URL = (
|
|
25
|
-
"https://github.com/snakers4/silero-vad/raw/master/src/silero_vad/data/silero_vad.onnx"
|
|
26
|
-
)
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
def _get_model_path() -> Path:
|
|
30
|
-
"""Get the path to the Silero VAD ONNX model, downloading if needed."""
|
|
31
|
-
cache_dir = Path.home() / ".cache" / "silero-vad"
|
|
32
|
-
cache_dir.mkdir(parents=True, exist_ok=True)
|
|
33
|
-
model_path = cache_dir / "silero_vad.onnx"
|
|
34
|
-
if not model_path.exists():
|
|
35
|
-
urllib.request.urlretrieve(_SILERO_VAD_ONNX_URL, model_path) # noqa: S310
|
|
36
|
-
return model_path
|
|
37
|
-
|
|
38
22
|
|
|
39
23
|
class VoiceActivityDetector:
|
|
40
24
|
"""Silero VAD-based voice activity detection for audio segmentation.
|
|
@@ -56,8 +40,6 @@ class VoiceActivityDetector:
|
|
|
56
40
|
msg = f"Sample rate must be 8000 or 16000, got {sample_rate}"
|
|
57
41
|
raise ValueError(msg)
|
|
58
42
|
|
|
59
|
-
from silero_vad.utils_vad import OnnxWrapper # noqa: PLC0415
|
|
60
|
-
|
|
61
43
|
self.sample_rate = sample_rate
|
|
62
44
|
self.threshold = threshold
|
|
63
45
|
self.silence_threshold_ms = silence_threshold_ms
|
|
@@ -74,7 +56,7 @@ class VoiceActivityDetector:
|
|
|
74
56
|
)
|
|
75
57
|
|
|
76
58
|
# Model and state
|
|
77
|
-
self._model =
|
|
59
|
+
self._model = SileroVAD(sample_rate=sample_rate)
|
|
78
60
|
self._pre_speech_buffer: deque[bytes] = deque(maxlen=pre_speech_windows)
|
|
79
61
|
self._pending = bytearray()
|
|
80
62
|
self._audio_buffer = bytearray()
|
|
@@ -92,7 +74,7 @@ class VoiceActivityDetector:
|
|
|
92
74
|
|
|
93
75
|
def reset(self) -> None:
|
|
94
76
|
"""Reset VAD state for a new recording session."""
|
|
95
|
-
self._model.
|
|
77
|
+
self._model = SileroVAD(sample_rate=self.sample_rate)
|
|
96
78
|
self._pre_speech_buffer.clear()
|
|
97
79
|
self._pending.clear()
|
|
98
80
|
self._audio_buffer.clear()
|
|
@@ -103,7 +85,7 @@ class VoiceActivityDetector:
|
|
|
103
85
|
def _is_speech(self, window: bytes) -> bool:
|
|
104
86
|
"""Check if audio window contains speech."""
|
|
105
87
|
audio = np.frombuffer(window, dtype=np.int16).astype(np.float32) / 32768.0
|
|
106
|
-
prob =
|
|
88
|
+
prob = self._model.process(audio)
|
|
107
89
|
LOGGER.debug("Speech prob: %.3f, threshold: %.2f", prob, self.threshold)
|
|
108
90
|
return prob >= self.threshold
|
|
109
91
|
|
|
@@ -154,7 +136,7 @@ class VoiceActivityDetector:
|
|
|
154
136
|
self._silence_samples = 0
|
|
155
137
|
self._speech_samples = 0
|
|
156
138
|
self._audio_buffer.clear()
|
|
157
|
-
self._model.
|
|
139
|
+
self._model = SileroVAD(sample_rate=self.sample_rate)
|
|
158
140
|
else:
|
|
159
141
|
# Not speaking - maintain rolling pre-speech buffer (auto-limited by deque maxlen)
|
|
160
142
|
self._pre_speech_buffer.append(window)
|
agent_cli/install/extras.py
CHANGED
|
@@ -14,7 +14,7 @@ import typer
|
|
|
14
14
|
|
|
15
15
|
from agent_cli.cli import app
|
|
16
16
|
from agent_cli.core.deps import EXTRAS as _EXTRAS_META
|
|
17
|
-
from agent_cli.core.utils import console, print_error_message
|
|
17
|
+
from agent_cli.core.utils import console, err_console, print_error_message
|
|
18
18
|
|
|
19
19
|
# Extract descriptions from the centralized EXTRAS metadata
|
|
20
20
|
EXTRAS: dict[str, str] = {name: desc for name, (desc, _) in _EXTRAS_META.items()}
|
|
@@ -69,7 +69,8 @@ def _install_via_uv_tool(extras: list[str], *, quiet: bool = False) -> bool:
|
|
|
69
69
|
cmd = ["uv", "tool", "install", package_spec, "--force", "--python", python_version]
|
|
70
70
|
if quiet:
|
|
71
71
|
cmd.append("-q")
|
|
72
|
-
|
|
72
|
+
# Use stderr for status messages so they don't pollute stdout (e.g., for hotkey notifications)
|
|
73
|
+
err_console.print(f"Running: [cyan]{' '.join(cmd)}[/]")
|
|
73
74
|
result = subprocess.run(cmd, check=False)
|
|
74
75
|
return result.returncode == 0
|
|
75
76
|
|
|
@@ -118,7 +119,8 @@ def install_extras_programmatic(extras: list[str], *, quiet: bool = False) -> bo
|
|
|
118
119
|
valid = [e for e in extras if e in available]
|
|
119
120
|
invalid = [e for e in extras if e not in available]
|
|
120
121
|
if invalid:
|
|
121
|
-
|
|
122
|
+
# Use stderr so warning doesn't pollute stdout (e.g., for hotkey notifications)
|
|
123
|
+
err_console.print(f"[yellow]Unknown extras (skipped): {', '.join(invalid)}[/]")
|
|
122
124
|
return bool(valid) and _install_extras_impl(valid, quiet=quiet)
|
|
123
125
|
|
|
124
126
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.72.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>
|
|
@@ -51,6 +51,7 @@ Requires-Dist: chromadb>=0.4.22; extra == 'memory'
|
|
|
51
51
|
Requires-Dist: fastapi[standard]; extra == 'memory'
|
|
52
52
|
Requires-Dist: huggingface-hub>=0.20.0; extra == 'memory'
|
|
53
53
|
Requires-Dist: onnxruntime>=1.17.0; extra == 'memory'
|
|
54
|
+
Requires-Dist: openai>=1.0.0; extra == 'memory'
|
|
54
55
|
Requires-Dist: pyyaml>=6.0.0; extra == 'memory'
|
|
55
56
|
Requires-Dist: transformers>=4.30.0; extra == 'memory'
|
|
56
57
|
Requires-Dist: watchfiles>=0.21.0; extra == 'memory'
|
|
@@ -66,6 +67,7 @@ Requires-Dist: fastapi[standard]; extra == 'rag'
|
|
|
66
67
|
Requires-Dist: huggingface-hub>=0.20.0; extra == 'rag'
|
|
67
68
|
Requires-Dist: markitdown[docx,pdf,pptx]>=0.1.3; extra == 'rag'
|
|
68
69
|
Requires-Dist: onnxruntime>=1.17.0; extra == 'rag'
|
|
70
|
+
Requires-Dist: openai>=1.0.0; extra == 'rag'
|
|
69
71
|
Requires-Dist: transformers>=4.30.0; extra == 'rag'
|
|
70
72
|
Requires-Dist: watchfiles>=0.21.0; extra == 'rag'
|
|
71
73
|
Provides-Extra: server
|
|
@@ -79,7 +81,7 @@ Requires-Dist: pytest-mock; extra == 'test'
|
|
|
79
81
|
Requires-Dist: pytest-timeout; extra == 'test'
|
|
80
82
|
Requires-Dist: pytest>=7.0.0; extra == 'test'
|
|
81
83
|
Provides-Extra: vad
|
|
82
|
-
Requires-Dist: silero-vad>=
|
|
84
|
+
Requires-Dist: silero-vad-lite>=0.2.1; extra == 'vad'
|
|
83
85
|
Provides-Extra: wyoming
|
|
84
86
|
Requires-Dist: wyoming>=1.5.2; extra == 'wyoming'
|
|
85
87
|
Description-Content-Type: text/markdown
|
|
@@ -1,6 +1,6 @@
|
|
|
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=
|
|
3
|
+
agent_cli/_extras.json,sha256=vGp4FXpAHOnuXC29ZOjThoUQPR1eES0yNR6iAHMc45A,780
|
|
4
4
|
agent_cli/_tools.py,sha256=u9Ww-k-sbwFnMTW8sreFGd71nJP6o5hKcM0Zd_D9GZk,12136
|
|
5
5
|
agent_cli/api.py,sha256=FQ_HATc7DaedbEFQ275Z18wV90tkDByD_9x_K0wdSLQ,456
|
|
6
6
|
agent_cli/cli.py,sha256=O3b5Bgv6mjzSIMKikRfeUEg1SSVXhCskLatltbx0ERg,3923
|
|
@@ -16,13 +16,13 @@ agent_cli/_requirements/audio.txt,sha256=KAOtFaFClkj2EAesWI61LZ4N-T1WQvHtvf1sNtD
|
|
|
16
16
|
agent_cli/_requirements/faster-whisper.txt,sha256=V5O-Di0hA_0g3EyZaRlRlR6JVhJ2XuqXyzxMUmYDxMU,4333
|
|
17
17
|
agent_cli/_requirements/kokoro.txt,sha256=HJFVJga6O7Eiz-2oqY6GsnGB9jQu2PM_QdtEN4lKjSU,8932
|
|
18
18
|
agent_cli/_requirements/llm.txt,sha256=nApd9U7gPLTmUaCGZL_dkBN9BmHt3zOrt038XSS1NKc,3582
|
|
19
|
-
agent_cli/_requirements/memory.txt,sha256=
|
|
19
|
+
agent_cli/_requirements/memory.txt,sha256=tF-Cq1QFFh1ukaBFbQ614Yw532YjfNkHW9itAL5QMsM,7471
|
|
20
20
|
agent_cli/_requirements/mlx-whisper.txt,sha256=4KxYahgmWzCi3dD1R-P4kqRix0Yyewqo-tHl9QmZHj4,6749
|
|
21
21
|
agent_cli/_requirements/piper.txt,sha256=aoRGqt_7Kr9cNHk-H4q7SVoKmP4d0fhtvEXeUeIqwQI,3455
|
|
22
|
-
agent_cli/_requirements/rag.txt,sha256=
|
|
22
|
+
agent_cli/_requirements/rag.txt,sha256=z9XXu9LDqBeH2cOCcuh2uq5SxZ7lqfPr2NIKlIv3MlA,8446
|
|
23
23
|
agent_cli/_requirements/server.txt,sha256=v29ib07fYE5_lbL00ULOgS13XA5NAOnLq-lExJZ0zbw,3004
|
|
24
24
|
agent_cli/_requirements/speed.txt,sha256=KwBTrZFXWtgwJ5zrcNtm45zfqvNK0trcR1SbV-wDFp4,1464
|
|
25
|
-
agent_cli/_requirements/vad.txt,sha256=
|
|
25
|
+
agent_cli/_requirements/vad.txt,sha256=Jqw49D5xleqrFyv348GjqRmflewOOEYJklx7b9GbNpY,1359
|
|
26
26
|
agent_cli/_requirements/wyoming.txt,sha256=qsse6lSGYKxnzOYXpS6zIkZ7OG4-E4GH13gfBPuvoY0,1355
|
|
27
27
|
agent_cli/agents/__init__.py,sha256=c1rnncDW5pBvP6BiLzFVpLWDNZzFRaUA7-a97avFVAs,321
|
|
28
28
|
agent_cli/agents/_voice_agent_common.py,sha256=PUAztW84Xf9U7d0C_K5cL7I8OANIE1H6M8dFD_cRqps,4360
|
|
@@ -41,14 +41,14 @@ agent_cli/core/__init__.py,sha256=c_knH7u9QgjsfMIil9NP4bVizHawLUMYoQWU4H9vMlQ,46
|
|
|
41
41
|
agent_cli/core/audio.py,sha256=43FpYe2Wu_BYK9xJ_55V4xHjHJeFwQ5aM-CQzlTryt8,15168
|
|
42
42
|
agent_cli/core/audio_format.py,sha256=zk3qlYMAlKYPz1enrjihQQspl_C218v1Rbcm7Uktlew,8773
|
|
43
43
|
agent_cli/core/chroma.py,sha256=4gC9bT2q6i8zVSrHgEvaKLlBVmmlxlKnJrpQF08fLps,2791
|
|
44
|
-
agent_cli/core/deps.py,sha256=
|
|
44
|
+
agent_cli/core/deps.py,sha256=CwG-VzhRzk6bXWUvoFP1kQyq0BcjVWlABQc3M8VirRQ,6583
|
|
45
45
|
agent_cli/core/openai_proxy.py,sha256=VOqh40vyVrOa_u3CvXgolf0Bv-rALIXbKMQfjTBtH3I,4642
|
|
46
46
|
agent_cli/core/process.py,sha256=Ril7HqMJc-F1E-66pHrOi27gEZD3ZR_ZYhGnN61SVSs,5937
|
|
47
47
|
agent_cli/core/reranker.py,sha256=_RPjLKR5ej6L0Lb05tQFoVSyXOt1cXXn3ydEkCIXj2A,3851
|
|
48
48
|
agent_cli/core/sse.py,sha256=SddiWjHh7DENb1wmvf3wDvX-OhbaC61EceFwQxmDUEo,2232
|
|
49
49
|
agent_cli/core/transcription_logger.py,sha256=w8HbHDYFN_qZMfi6Wwpvw3THa-GxkVTzTPhZfE84o-Q,2082
|
|
50
50
|
agent_cli/core/utils.py,sha256=p3OJrNcU6iwqR0C7Q5Ab3_rwJBmP0EbIYT82a9scPSI,16896
|
|
51
|
-
agent_cli/core/vad.py,sha256=
|
|
51
|
+
agent_cli/core/vad.py,sha256=0QEFScwyKaX6G4tnVQoVMVBjXVRdCkFtp7XWRRXT0hY,5998
|
|
52
52
|
agent_cli/core/watch.py,sha256=PakxMyqJycN6bkE6fxeo0qe9zj5wjuRly3p7rN9UgjM,2000
|
|
53
53
|
agent_cli/dev/__init__.py,sha256=doTYiUFEBpnOxsQA69HQP9AA4QHBN0DjuHSTGRq5Xbg,551
|
|
54
54
|
agent_cli/dev/cli.py,sha256=BWugSTYGYG-bep8qJs9f5TYbYUV27o5cmonQ8Gm535o,58737
|
|
@@ -92,7 +92,7 @@ agent_cli/dev/terminals/warp.py,sha256=j-Jvz_BbWYC3QfLrvl4CbDh03c9OGRFmuCzjyB2ud
|
|
|
92
92
|
agent_cli/dev/terminals/zellij.py,sha256=GnQnopimb9XH67CZGHjnbVWpVSWhaLCATGJizCT5TkY,2321
|
|
93
93
|
agent_cli/install/__init__.py,sha256=JQPrOrtdNd1Y1NmQDkb3Nmm1qdyn3kPjhQwy9D8ryjI,124
|
|
94
94
|
agent_cli/install/common.py,sha256=WvnmcjnFTW0d1HZrKVGzj5Tg3q8Txk_ZOdc4a1MBFWI,3121
|
|
95
|
-
agent_cli/install/extras.py,sha256=
|
|
95
|
+
agent_cli/install/extras.py,sha256=70YwUV0KbW82q_2GUDq5-gN2aBUyjSC3s_M4x3C3k6k,7240
|
|
96
96
|
agent_cli/install/hotkeys.py,sha256=Y7jjtbyjVzIXL1_aczJmOyjL0ud2epbrFbzuWlObqZY,2324
|
|
97
97
|
agent_cli/install/services.py,sha256=mgFjNqvvZ9U2dJ_PcEVWcenlaOtdIZ5a-RyDofDqooY,4209
|
|
98
98
|
agent_cli/memory/__init__.py,sha256=8XNpVzP-qjF8o49A_eXsH_Rbp_FmxTIcknnvxq7vHms,162
|
|
@@ -189,8 +189,8 @@ agent_cli/services/asr.py,sha256=aRaCLVCygsJ15qyQEPECOZsdSrnlLPbyY4RwAqY0qIw,172
|
|
|
189
189
|
agent_cli/services/llm.py,sha256=i01utl1eYWlM13gvW2eR6ErL_ndH-g0d-BSleZra_7k,7229
|
|
190
190
|
agent_cli/services/tts.py,sha256=NX5Qnq7ddLI3mwm3nzhbR3zB1Os4Ip4sSVSjDZDTBcI,14855
|
|
191
191
|
agent_cli/services/wake_word.py,sha256=JFJ1SA22H4yko9DXiQ1t7fcoxeALLAe3iBrLs0z8rX4,4664
|
|
192
|
-
agent_cli-0.
|
|
193
|
-
agent_cli-0.
|
|
194
|
-
agent_cli-0.
|
|
195
|
-
agent_cli-0.
|
|
196
|
-
agent_cli-0.
|
|
192
|
+
agent_cli-0.72.0.dist-info/METADATA,sha256=XEYw-cwi3HxW0BzAWMckFTCzk28Lm7mUoUKq0K-Cup8,179670
|
|
193
|
+
agent_cli-0.72.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
194
|
+
agent_cli-0.72.0.dist-info/entry_points.txt,sha256=FUv-fB2atLsPUk_RT4zqnZl1coz4_XHFwRALOKOF38s,97
|
|
195
|
+
agent_cli-0.72.0.dist-info/licenses/LICENSE,sha256=majJU6S9kC8R8bW39NVBHyv32Dq50FL6TDxECG2WVts,1068
|
|
196
|
+
agent_cli-0.72.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|