agent-cli 0.66.2__py3-none-any.whl → 0.67.1__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 +71 -0
- agent_cli/_requirements/{whisper.txt → faster-whisper.txt} +5 -113
- agent_cli/_requirements/{tts-kokoro.txt → kokoro.txt} +5 -108
- agent_cli/_requirements/llm.txt +176 -0
- agent_cli/_requirements/memory.txt +7 -98
- agent_cli/_requirements/{whisper-mlx.txt → mlx-whisper.txt} +62 -125
- agent_cli/_requirements/{tts.txt → piper.txt} +6 -124
- agent_cli/_requirements/rag.txt +10 -97
- agent_cli/_requirements/server.txt +4 -122
- agent_cli/_requirements/speed.txt +7 -131
- agent_cli/_requirements/vad.txt +6 -130
- 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.1.dist-info}/METADATA +35 -30
- {agent_cli-0.66.2.dist-info → agent_cli-0.67.1.dist-info}/RECORD +39 -35
- {agent_cli-0.66.2.dist-info → agent_cli-0.67.1.dist-info}/WHEEL +0 -0
- {agent_cli-0.66.2.dist-info → agent_cli-0.67.1.dist-info}/entry_points.txt +0 -0
- {agent_cli-0.66.2.dist-info → agent_cli-0.67.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -3,191 +3,67 @@
|
|
|
3
3
|
annotated-types==0.7.0
|
|
4
4
|
# via pydantic
|
|
5
5
|
anyio==4.12.1
|
|
6
|
-
# via
|
|
7
|
-
# google-genai
|
|
8
|
-
# httpx
|
|
9
|
-
# openai
|
|
6
|
+
# via httpx
|
|
10
7
|
audiostretchy==1.3.5
|
|
11
8
|
# via agent-cli
|
|
12
|
-
brotli==1.2.0 ; platform_python_implementation == 'CPython'
|
|
13
|
-
# via httpx
|
|
14
|
-
brotlicffi==1.2.0.0 ; platform_python_implementation != 'CPython'
|
|
15
|
-
# via httpx
|
|
16
9
|
certifi==2026.1.4
|
|
17
10
|
# via
|
|
18
11
|
# httpcore
|
|
19
12
|
# httpx
|
|
20
|
-
# requests
|
|
21
|
-
cffi==2.0.0
|
|
22
|
-
# via
|
|
23
|
-
# brotlicffi
|
|
24
|
-
# sounddevice
|
|
25
|
-
charset-normalizer==3.4.4
|
|
26
|
-
# via requests
|
|
27
13
|
click==8.3.1
|
|
28
|
-
# via
|
|
29
|
-
|
|
30
|
-
#
|
|
31
|
-
colorama==0.4.6
|
|
32
|
-
# via
|
|
33
|
-
# click
|
|
34
|
-
# griffe
|
|
35
|
-
# tqdm
|
|
36
|
-
ddgs==9.10.0
|
|
37
|
-
# via pydantic-ai-slim
|
|
38
|
-
distro==1.9.0
|
|
39
|
-
# via
|
|
40
|
-
# google-genai
|
|
41
|
-
# openai
|
|
14
|
+
# via typer
|
|
15
|
+
colorama==0.4.6 ; sys_platform == 'win32'
|
|
16
|
+
# via click
|
|
42
17
|
dotenv==0.9.9
|
|
43
18
|
# via agent-cli
|
|
44
|
-
fake-useragent==2.2.0
|
|
45
|
-
# via ddgs
|
|
46
19
|
fire==0.7.1
|
|
47
20
|
# via audiostretchy
|
|
48
|
-
genai-prices==0.0.51
|
|
49
|
-
# via pydantic-ai-slim
|
|
50
|
-
google-auth==2.47.0
|
|
51
|
-
# via
|
|
52
|
-
# google-genai
|
|
53
|
-
# pydantic-ai-slim
|
|
54
|
-
google-genai==1.58.0
|
|
55
|
-
# via agent-cli
|
|
56
|
-
griffe==1.15.0
|
|
57
|
-
# via pydantic-ai-slim
|
|
58
21
|
h11==0.16.0
|
|
59
22
|
# via httpcore
|
|
60
|
-
h2==4.3.0
|
|
61
|
-
# via httpx
|
|
62
|
-
hpack==4.1.0
|
|
63
|
-
# via h2
|
|
64
23
|
httpcore==1.0.9
|
|
65
24
|
# via httpx
|
|
66
25
|
httpx==0.28.1
|
|
67
|
-
# via
|
|
68
|
-
# agent-cli
|
|
69
|
-
# ddgs
|
|
70
|
-
# genai-prices
|
|
71
|
-
# google-genai
|
|
72
|
-
# openai
|
|
73
|
-
# pydantic-ai-slim
|
|
74
|
-
# pydantic-graph
|
|
75
|
-
hyperframe==6.1.0
|
|
76
|
-
# via h2
|
|
26
|
+
# via agent-cli
|
|
77
27
|
idna==3.11
|
|
78
28
|
# via
|
|
79
29
|
# anyio
|
|
80
30
|
# httpx
|
|
81
|
-
# requests
|
|
82
|
-
importlib-metadata==8.7.1
|
|
83
|
-
# via opentelemetry-api
|
|
84
|
-
jiter==0.12.0
|
|
85
|
-
# via openai
|
|
86
|
-
logfire-api==4.18.0
|
|
87
|
-
# via pydantic-graph
|
|
88
|
-
lxml==6.0.2
|
|
89
|
-
# via ddgs
|
|
90
31
|
markdown-it-py==4.0.0
|
|
91
32
|
# via rich
|
|
92
33
|
mdurl==0.1.2
|
|
93
34
|
# via markdown-it-py
|
|
94
35
|
numpy==2.3.5
|
|
95
|
-
# via
|
|
96
|
-
# agent-cli
|
|
97
|
-
# audiostretchy
|
|
98
|
-
openai==2.15.0
|
|
99
|
-
# via
|
|
100
|
-
# agent-cli
|
|
101
|
-
# pydantic-ai-slim
|
|
102
|
-
opentelemetry-api==1.39.1
|
|
103
|
-
# via pydantic-ai-slim
|
|
104
|
-
primp==0.15.0
|
|
105
|
-
# via ddgs
|
|
36
|
+
# via audiostretchy
|
|
106
37
|
psutil==7.2.1 ; sys_platform == 'win32'
|
|
107
38
|
# via agent-cli
|
|
108
|
-
pyasn1==0.6.1
|
|
109
|
-
# via
|
|
110
|
-
# pyasn1-modules
|
|
111
|
-
# rsa
|
|
112
|
-
pyasn1-modules==0.4.2
|
|
113
|
-
# via google-auth
|
|
114
|
-
pycparser==2.23 ; implementation_name != 'PyPy'
|
|
115
|
-
# via cffi
|
|
116
39
|
pydantic==2.12.5
|
|
117
|
-
# via
|
|
118
|
-
# genai-prices
|
|
119
|
-
# google-genai
|
|
120
|
-
# openai
|
|
121
|
-
# pydantic-ai-slim
|
|
122
|
-
# pydantic-graph
|
|
123
|
-
pydantic-ai-slim==1.42.0
|
|
124
40
|
# via agent-cli
|
|
125
41
|
pydantic-core==2.41.5
|
|
126
42
|
# via pydantic
|
|
127
|
-
pydantic-graph==1.42.0
|
|
128
|
-
# via pydantic-ai-slim
|
|
129
43
|
pygments==2.19.2
|
|
130
44
|
# via rich
|
|
131
45
|
pyperclip==1.11.0
|
|
132
46
|
# via agent-cli
|
|
133
47
|
python-dotenv==1.2.1
|
|
134
48
|
# via dotenv
|
|
135
|
-
regex==2026.1.15
|
|
136
|
-
# via tiktoken
|
|
137
|
-
requests==2.32.5
|
|
138
|
-
# via
|
|
139
|
-
# google-auth
|
|
140
|
-
# google-genai
|
|
141
|
-
# pydantic-ai-slim
|
|
142
|
-
# tiktoken
|
|
143
49
|
rich==14.2.0
|
|
144
50
|
# via
|
|
145
51
|
# agent-cli
|
|
146
52
|
# typer
|
|
147
|
-
rsa==4.9.1
|
|
148
|
-
# via google-auth
|
|
149
53
|
setproctitle==1.3.7
|
|
150
54
|
# via agent-cli
|
|
151
55
|
shellingham==1.5.4
|
|
152
56
|
# via typer
|
|
153
|
-
sniffio==1.3.1
|
|
154
|
-
# via
|
|
155
|
-
# google-genai
|
|
156
|
-
# openai
|
|
157
|
-
socksio==1.0.0
|
|
158
|
-
# via httpx
|
|
159
|
-
sounddevice==0.5.3
|
|
160
|
-
# via agent-cli
|
|
161
|
-
tenacity==9.1.2
|
|
162
|
-
# via google-genai
|
|
163
57
|
termcolor==3.3.0
|
|
164
58
|
# via fire
|
|
165
|
-
tiktoken==0.12.0
|
|
166
|
-
# via pydantic-ai-slim
|
|
167
|
-
tqdm==4.67.1
|
|
168
|
-
# via openai
|
|
169
59
|
typer==0.21.1
|
|
170
60
|
# via agent-cli
|
|
171
61
|
typing-extensions==4.15.0
|
|
172
62
|
# via
|
|
173
63
|
# anyio
|
|
174
|
-
# google-genai
|
|
175
|
-
# openai
|
|
176
|
-
# opentelemetry-api
|
|
177
64
|
# pydantic
|
|
178
65
|
# pydantic-core
|
|
179
66
|
# typer
|
|
180
67
|
# typing-inspection
|
|
181
68
|
typing-inspection==0.4.2
|
|
182
|
-
# via
|
|
183
|
-
# pydantic
|
|
184
|
-
# pydantic-ai-slim
|
|
185
|
-
# pydantic-graph
|
|
186
|
-
urllib3==2.3.0
|
|
187
|
-
# via requests
|
|
188
|
-
websockets==15.0.1
|
|
189
|
-
# via google-genai
|
|
190
|
-
wyoming==1.8.0
|
|
191
|
-
# via agent-cli
|
|
192
|
-
zipp==3.23.0
|
|
193
|
-
# via importlib-metadata
|
|
69
|
+
# via pydantic
|
agent_cli/_requirements/vad.txt
CHANGED
|
@@ -3,98 +3,39 @@
|
|
|
3
3
|
annotated-types==0.7.0
|
|
4
4
|
# via pydantic
|
|
5
5
|
anyio==4.12.1
|
|
6
|
-
# via
|
|
7
|
-
# google-genai
|
|
8
|
-
# httpx
|
|
9
|
-
# openai
|
|
10
|
-
brotli==1.2.0 ; platform_python_implementation == 'CPython'
|
|
11
|
-
# via httpx
|
|
12
|
-
brotlicffi==1.2.0.0 ; platform_python_implementation != 'CPython'
|
|
13
6
|
# via httpx
|
|
14
7
|
certifi==2026.1.4
|
|
15
8
|
# via
|
|
16
9
|
# httpcore
|
|
17
10
|
# httpx
|
|
18
|
-
# requests
|
|
19
|
-
cffi==2.0.0
|
|
20
|
-
# via
|
|
21
|
-
# brotlicffi
|
|
22
|
-
# sounddevice
|
|
23
|
-
charset-normalizer==3.4.4
|
|
24
|
-
# via requests
|
|
25
11
|
click==8.3.1
|
|
26
|
-
# via
|
|
27
|
-
|
|
28
|
-
#
|
|
29
|
-
colorama==0.4.6
|
|
30
|
-
# via
|
|
31
|
-
# click
|
|
32
|
-
# griffe
|
|
33
|
-
# tqdm
|
|
12
|
+
# via typer
|
|
13
|
+
colorama==0.4.6 ; sys_platform == 'win32'
|
|
14
|
+
# via click
|
|
34
15
|
coloredlogs==15.0.1
|
|
35
16
|
# via onnxruntime
|
|
36
|
-
ddgs==9.10.0
|
|
37
|
-
# via pydantic-ai-slim
|
|
38
|
-
distro==1.9.0
|
|
39
|
-
# via
|
|
40
|
-
# google-genai
|
|
41
|
-
# openai
|
|
42
17
|
dotenv==0.9.9
|
|
43
18
|
# via agent-cli
|
|
44
|
-
fake-useragent==2.2.0
|
|
45
|
-
# via ddgs
|
|
46
19
|
filelock==3.20.3
|
|
47
20
|
# via torch
|
|
48
21
|
flatbuffers==25.12.19
|
|
49
22
|
# via onnxruntime
|
|
50
23
|
fsspec==2026.1.0
|
|
51
24
|
# via torch
|
|
52
|
-
genai-prices==0.0.51
|
|
53
|
-
# via pydantic-ai-slim
|
|
54
|
-
google-auth==2.47.0
|
|
55
|
-
# via
|
|
56
|
-
# google-genai
|
|
57
|
-
# pydantic-ai-slim
|
|
58
|
-
google-genai==1.58.0
|
|
59
|
-
# via agent-cli
|
|
60
|
-
griffe==1.15.0
|
|
61
|
-
# via pydantic-ai-slim
|
|
62
25
|
h11==0.16.0
|
|
63
26
|
# via httpcore
|
|
64
|
-
h2==4.3.0
|
|
65
|
-
# via httpx
|
|
66
|
-
hpack==4.1.0
|
|
67
|
-
# via h2
|
|
68
27
|
httpcore==1.0.9
|
|
69
28
|
# via httpx
|
|
70
29
|
httpx==0.28.1
|
|
71
|
-
# via
|
|
72
|
-
# agent-cli
|
|
73
|
-
# ddgs
|
|
74
|
-
# genai-prices
|
|
75
|
-
# google-genai
|
|
76
|
-
# openai
|
|
77
|
-
# pydantic-ai-slim
|
|
78
|
-
# pydantic-graph
|
|
30
|
+
# via agent-cli
|
|
79
31
|
humanfriendly==10.0
|
|
80
32
|
# via coloredlogs
|
|
81
|
-
hyperframe==6.1.0
|
|
82
|
-
# via h2
|
|
83
33
|
idna==3.11
|
|
84
34
|
# via
|
|
85
35
|
# anyio
|
|
86
36
|
# httpx
|
|
87
|
-
# requests
|
|
88
|
-
importlib-metadata==8.7.1
|
|
89
|
-
# via opentelemetry-api
|
|
90
37
|
jinja2==3.1.6
|
|
91
38
|
# via torch
|
|
92
|
-
jiter==0.12.0
|
|
93
|
-
# via openai
|
|
94
|
-
logfire-api==4.18.0
|
|
95
|
-
# via pydantic-graph
|
|
96
|
-
lxml==6.0.2
|
|
97
|
-
# via ddgs
|
|
98
39
|
markdown-it-py==4.0.0
|
|
99
40
|
# via rich
|
|
100
41
|
markupsafe==3.0.3
|
|
@@ -106,9 +47,7 @@ mpmath==1.3.0
|
|
|
106
47
|
networkx==3.6.1
|
|
107
48
|
# via torch
|
|
108
49
|
numpy==2.3.5
|
|
109
|
-
# via
|
|
110
|
-
# agent-cli
|
|
111
|
-
# onnxruntime
|
|
50
|
+
# via onnxruntime
|
|
112
51
|
nvidia-cublas-cu12==12.8.4.1 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
113
52
|
# via
|
|
114
53
|
# nvidia-cudnn-cu12
|
|
@@ -150,43 +89,18 @@ nvidia-nvtx-cu12==12.8.90 ; platform_machine == 'x86_64' and sys_platform == 'li
|
|
|
150
89
|
# via torch
|
|
151
90
|
onnxruntime==1.20.1
|
|
152
91
|
# via silero-vad
|
|
153
|
-
openai==2.15.0
|
|
154
|
-
# via
|
|
155
|
-
# agent-cli
|
|
156
|
-
# pydantic-ai-slim
|
|
157
|
-
opentelemetry-api==1.39.1
|
|
158
|
-
# via pydantic-ai-slim
|
|
159
92
|
packaging==25.0
|
|
160
93
|
# via
|
|
161
94
|
# onnxruntime
|
|
162
95
|
# silero-vad
|
|
163
|
-
primp==0.15.0
|
|
164
|
-
# via ddgs
|
|
165
96
|
protobuf==6.33.4
|
|
166
97
|
# via onnxruntime
|
|
167
98
|
psutil==7.2.1 ; sys_platform == 'win32'
|
|
168
99
|
# via agent-cli
|
|
169
|
-
pyasn1==0.6.1
|
|
170
|
-
# via
|
|
171
|
-
# pyasn1-modules
|
|
172
|
-
# rsa
|
|
173
|
-
pyasn1-modules==0.4.2
|
|
174
|
-
# via google-auth
|
|
175
|
-
pycparser==2.23 ; implementation_name != 'PyPy'
|
|
176
|
-
# via cffi
|
|
177
100
|
pydantic==2.12.5
|
|
178
|
-
# via
|
|
179
|
-
# genai-prices
|
|
180
|
-
# google-genai
|
|
181
|
-
# openai
|
|
182
|
-
# pydantic-ai-slim
|
|
183
|
-
# pydantic-graph
|
|
184
|
-
pydantic-ai-slim==1.42.0
|
|
185
101
|
# via agent-cli
|
|
186
102
|
pydantic-core==2.41.5
|
|
187
103
|
# via pydantic
|
|
188
|
-
pydantic-graph==1.42.0
|
|
189
|
-
# via pydantic-ai-slim
|
|
190
104
|
pygments==2.19.2
|
|
191
105
|
# via rich
|
|
192
106
|
pyperclip==1.11.0
|
|
@@ -195,20 +109,10 @@ pyreadline3==3.5.4 ; sys_platform == 'win32'
|
|
|
195
109
|
# via humanfriendly
|
|
196
110
|
python-dotenv==1.2.1
|
|
197
111
|
# via dotenv
|
|
198
|
-
regex==2026.1.15
|
|
199
|
-
# via tiktoken
|
|
200
|
-
requests==2.32.5
|
|
201
|
-
# via
|
|
202
|
-
# google-auth
|
|
203
|
-
# google-genai
|
|
204
|
-
# pydantic-ai-slim
|
|
205
|
-
# tiktoken
|
|
206
112
|
rich==14.2.0
|
|
207
113
|
# via
|
|
208
114
|
# agent-cli
|
|
209
115
|
# typer
|
|
210
|
-
rsa==4.9.1
|
|
211
|
-
# via google-auth
|
|
212
116
|
setproctitle==1.3.7
|
|
213
117
|
# via agent-cli
|
|
214
118
|
setuptools==80.9.0 ; python_full_version >= '3.12'
|
|
@@ -217,30 +121,16 @@ shellingham==1.5.4
|
|
|
217
121
|
# via typer
|
|
218
122
|
silero-vad==6.2.0
|
|
219
123
|
# via agent-cli
|
|
220
|
-
sniffio==1.3.1
|
|
221
|
-
# via
|
|
222
|
-
# google-genai
|
|
223
|
-
# openai
|
|
224
|
-
socksio==1.0.0
|
|
225
|
-
# via httpx
|
|
226
|
-
sounddevice==0.5.3
|
|
227
|
-
# via agent-cli
|
|
228
124
|
sympy==1.14.0
|
|
229
125
|
# via
|
|
230
126
|
# onnxruntime
|
|
231
127
|
# torch
|
|
232
|
-
tenacity==9.1.2
|
|
233
|
-
# via google-genai
|
|
234
|
-
tiktoken==0.12.0
|
|
235
|
-
# via pydantic-ai-slim
|
|
236
128
|
torch==2.9.1
|
|
237
129
|
# via
|
|
238
130
|
# silero-vad
|
|
239
131
|
# torchaudio
|
|
240
132
|
torchaudio==2.9.1
|
|
241
133
|
# via silero-vad
|
|
242
|
-
tqdm==4.67.1
|
|
243
|
-
# via openai
|
|
244
134
|
triton==3.5.1 ; platform_machine == 'x86_64' and sys_platform == 'linux'
|
|
245
135
|
# via torch
|
|
246
136
|
typer==0.21.1
|
|
@@ -248,24 +138,10 @@ typer==0.21.1
|
|
|
248
138
|
typing-extensions==4.15.0
|
|
249
139
|
# via
|
|
250
140
|
# anyio
|
|
251
|
-
# google-genai
|
|
252
|
-
# openai
|
|
253
|
-
# opentelemetry-api
|
|
254
141
|
# pydantic
|
|
255
142
|
# pydantic-core
|
|
256
143
|
# torch
|
|
257
144
|
# typer
|
|
258
145
|
# typing-inspection
|
|
259
146
|
typing-inspection==0.4.2
|
|
260
|
-
# via
|
|
261
|
-
# pydantic
|
|
262
|
-
# pydantic-ai-slim
|
|
263
|
-
# pydantic-graph
|
|
264
|
-
urllib3==2.3.0
|
|
265
|
-
# via requests
|
|
266
|
-
websockets==15.0.1
|
|
267
|
-
# via google-genai
|
|
268
|
-
wyoming==1.8.0
|
|
269
|
-
# via agent-cli
|
|
270
|
-
zipp==3.23.0
|
|
271
|
-
# via importlib-metadata
|
|
147
|
+
# via pydantic
|
agent_cli/agents/assistant.py
CHANGED
|
@@ -41,6 +41,7 @@ from agent_cli.agents._voice_agent_common import (
|
|
|
41
41
|
from agent_cli.cli import app
|
|
42
42
|
from agent_cli.core import audio, process
|
|
43
43
|
from agent_cli.core.audio import setup_devices
|
|
44
|
+
from agent_cli.core.deps import requires_extras
|
|
44
45
|
from agent_cli.core.utils import (
|
|
45
46
|
InteractiveStopEvent,
|
|
46
47
|
maybe_live,
|
|
@@ -254,6 +255,7 @@ async def _async_main(
|
|
|
254
255
|
|
|
255
256
|
|
|
256
257
|
@app.command("assistant", rich_help_panel="Voice Commands")
|
|
258
|
+
@requires_extras("audio", "llm")
|
|
257
259
|
def assistant(
|
|
258
260
|
*,
|
|
259
261
|
# --- Provider Selection ---
|
agent_cli/agents/autocorrect.py
CHANGED
|
@@ -14,6 +14,7 @@ import typer
|
|
|
14
14
|
|
|
15
15
|
from agent_cli import config, opts
|
|
16
16
|
from agent_cli.cli import app
|
|
17
|
+
from agent_cli.core.deps import requires_extras
|
|
17
18
|
from agent_cli.core.utils import (
|
|
18
19
|
console,
|
|
19
20
|
create_status,
|
|
@@ -209,6 +210,7 @@ async def _async_autocorrect(
|
|
|
209
210
|
|
|
210
211
|
|
|
211
212
|
@app.command("autocorrect", rich_help_panel="Text Commands")
|
|
213
|
+
@requires_extras("llm")
|
|
212
214
|
def autocorrect(
|
|
213
215
|
*,
|
|
214
216
|
text: str | None = typer.Argument(
|
agent_cli/agents/chat.py
CHANGED
|
@@ -29,6 +29,7 @@ from agent_cli._tools import tools
|
|
|
29
29
|
from agent_cli.cli import app
|
|
30
30
|
from agent_cli.core import process
|
|
31
31
|
from agent_cli.core.audio import setup_devices
|
|
32
|
+
from agent_cli.core.deps import requires_extras
|
|
32
33
|
from agent_cli.core.utils import (
|
|
33
34
|
InteractiveStopEvent,
|
|
34
35
|
console,
|
|
@@ -374,6 +375,7 @@ async def _async_main(
|
|
|
374
375
|
|
|
375
376
|
|
|
376
377
|
@app.command("chat", rich_help_panel="Voice Commands")
|
|
378
|
+
@requires_extras("audio", "llm")
|
|
377
379
|
def chat(
|
|
378
380
|
*,
|
|
379
381
|
# --- Provider Selection ---
|
agent_cli/agents/memory/add.py
CHANGED
|
@@ -13,6 +13,7 @@ import typer
|
|
|
13
13
|
|
|
14
14
|
from agent_cli import opts
|
|
15
15
|
from agent_cli.agents.memory import memory_app
|
|
16
|
+
from agent_cli.core.deps import requires_extras
|
|
16
17
|
from agent_cli.core.utils import console, print_command_line_args
|
|
17
18
|
|
|
18
19
|
if TYPE_CHECKING:
|
|
@@ -110,6 +111,7 @@ def _write_memories(
|
|
|
110
111
|
|
|
111
112
|
|
|
112
113
|
@memory_app.command("add")
|
|
114
|
+
@requires_extras("memory")
|
|
113
115
|
def add(
|
|
114
116
|
memories: list[str] = typer.Argument( # noqa: B008
|
|
115
117
|
None,
|
agent_cli/agents/memory/proxy.py
CHANGED
|
@@ -10,10 +10,12 @@ from rich.logging import RichHandler
|
|
|
10
10
|
|
|
11
11
|
from agent_cli import constants, opts
|
|
12
12
|
from agent_cli.agents.memory import memory_app
|
|
13
|
+
from agent_cli.core.deps import requires_extras
|
|
13
14
|
from agent_cli.core.utils import console, print_command_line_args, print_error_message
|
|
14
15
|
|
|
15
16
|
|
|
16
17
|
@memory_app.command("proxy")
|
|
18
|
+
@requires_extras("memory")
|
|
17
19
|
def proxy(
|
|
18
20
|
memory_path: Path = typer.Option( # noqa: B008
|
|
19
21
|
"./memory_db",
|
agent_cli/agents/rag_proxy.py
CHANGED
|
@@ -10,6 +10,7 @@ from rich.logging import RichHandler
|
|
|
10
10
|
|
|
11
11
|
from agent_cli import constants, opts
|
|
12
12
|
from agent_cli.cli import app
|
|
13
|
+
from agent_cli.core.deps import requires_extras
|
|
13
14
|
from agent_cli.core.utils import (
|
|
14
15
|
console,
|
|
15
16
|
print_command_line_args,
|
|
@@ -18,6 +19,7 @@ from agent_cli.core.utils import (
|
|
|
18
19
|
|
|
19
20
|
|
|
20
21
|
@app.command("rag-proxy", rich_help_panel="Servers")
|
|
22
|
+
@requires_extras("rag")
|
|
21
23
|
def rag_proxy(
|
|
22
24
|
docs_folder: Path = typer.Option( # noqa: B008
|
|
23
25
|
"./rag_docs",
|
agent_cli/agents/speak.py
CHANGED
|
@@ -14,6 +14,7 @@ from agent_cli import config, opts
|
|
|
14
14
|
from agent_cli.cli import app
|
|
15
15
|
from agent_cli.core import process
|
|
16
16
|
from agent_cli.core.audio import setup_devices
|
|
17
|
+
from agent_cli.core.deps import requires_extras
|
|
17
18
|
from agent_cli.core.utils import (
|
|
18
19
|
enable_json_mode,
|
|
19
20
|
get_clipboard_text,
|
|
@@ -80,6 +81,7 @@ async def _async_main(
|
|
|
80
81
|
|
|
81
82
|
|
|
82
83
|
@app.command("speak", rich_help_panel="Text Commands")
|
|
84
|
+
@requires_extras("audio")
|
|
83
85
|
def speak(
|
|
84
86
|
*,
|
|
85
87
|
text: str | None = typer.Argument(
|
agent_cli/agents/transcribe.py
CHANGED
|
@@ -19,6 +19,7 @@ from agent_cli import config, opts
|
|
|
19
19
|
from agent_cli.cli import app
|
|
20
20
|
from agent_cli.core import process
|
|
21
21
|
from agent_cli.core.audio import setup_devices
|
|
22
|
+
from agent_cli.core.deps import requires_extras
|
|
22
23
|
from agent_cli.core.utils import (
|
|
23
24
|
enable_json_mode,
|
|
24
25
|
format_short_timedelta,
|
|
@@ -461,6 +462,7 @@ async def _async_main( # noqa: PLR0912, PLR0915, C901
|
|
|
461
462
|
|
|
462
463
|
|
|
463
464
|
@app.command("transcribe", rich_help_panel="Voice Commands")
|
|
465
|
+
@requires_extras("audio", "llm")
|
|
464
466
|
def transcribe( # noqa: PLR0912
|
|
465
467
|
*,
|
|
466
468
|
extra_instructions: str | None = typer.Option(
|
|
@@ -25,6 +25,7 @@ from agent_cli.cli import app
|
|
|
25
25
|
from agent_cli.core import process
|
|
26
26
|
from agent_cli.core.audio import open_audio_stream, setup_devices, setup_input_stream
|
|
27
27
|
from agent_cli.core.audio_format import check_ffmpeg_available, save_audio_as_mp3
|
|
28
|
+
from agent_cli.core.deps import requires_extras
|
|
28
29
|
from agent_cli.core.utils import (
|
|
29
30
|
console,
|
|
30
31
|
print_command_line_args,
|
|
@@ -287,6 +288,7 @@ async def _daemon_loop(cfg: DaemonConfig) -> None: # noqa: PLR0912, PLR0915
|
|
|
287
288
|
|
|
288
289
|
|
|
289
290
|
@app.command("transcribe-daemon", rich_help_panel="Voice Commands")
|
|
291
|
+
@requires_extras("audio", "vad", "llm")
|
|
290
292
|
def transcribe_daemon( # noqa: PLR0912
|
|
291
293
|
*,
|
|
292
294
|
# Daemon-specific options
|
agent_cli/agents/voice_edit.py
CHANGED
|
@@ -47,6 +47,7 @@ from agent_cli.agents._voice_agent_common import (
|
|
|
47
47
|
from agent_cli.cli import app
|
|
48
48
|
from agent_cli.core import process
|
|
49
49
|
from agent_cli.core.audio import setup_devices
|
|
50
|
+
from agent_cli.core.deps import requires_extras
|
|
50
51
|
from agent_cli.core.utils import (
|
|
51
52
|
enable_json_mode,
|
|
52
53
|
get_clipboard_text,
|
|
@@ -173,6 +174,7 @@ async def _async_main(
|
|
|
173
174
|
|
|
174
175
|
|
|
175
176
|
@app.command("voice-edit", rich_help_panel="Voice Commands")
|
|
177
|
+
@requires_extras("audio", "llm")
|
|
176
178
|
def voice_edit(
|
|
177
179
|
*,
|
|
178
180
|
# --- Provider Selection ---
|