agent-cli 0.70.2__py3-none-any.whl → 0.70.3__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/opts.py +3 -0
- agent_cli/server/proxy/api.py +29 -18
- {agent_cli-0.70.2.dist-info → agent_cli-0.70.3.dist-info}/METADATA +16 -1
- {agent_cli-0.70.2.dist-info → agent_cli-0.70.3.dist-info}/RECORD +7 -7
- {agent_cli-0.70.2.dist-info → agent_cli-0.70.3.dist-info}/WHEEL +0 -0
- {agent_cli-0.70.2.dist-info → agent_cli-0.70.3.dist-info}/entry_points.txt +0 -0
- {agent_cli-0.70.2.dist-info → agent_cli-0.70.3.dist-info}/licenses/LICENSE +0 -0
agent_cli/opts.py
CHANGED
|
@@ -26,6 +26,7 @@ LLM_PROVIDER: str = typer.Option(
|
|
|
26
26
|
ASR_PROVIDER: str = typer.Option(
|
|
27
27
|
"wyoming",
|
|
28
28
|
"--asr-provider",
|
|
29
|
+
envvar="ASR_PROVIDER",
|
|
29
30
|
help="The ASR provider to use ('wyoming', 'openai', 'gemini').",
|
|
30
31
|
rich_help_panel="Provider Selection",
|
|
31
32
|
)
|
|
@@ -124,12 +125,14 @@ LIST_DEVICES: bool = typer.Option(
|
|
|
124
125
|
ASR_WYOMING_IP: str = typer.Option(
|
|
125
126
|
"localhost",
|
|
126
127
|
"--asr-wyoming-ip",
|
|
128
|
+
envvar="ASR_WYOMING_IP",
|
|
127
129
|
help="Wyoming ASR server IP address.",
|
|
128
130
|
rich_help_panel="Audio Input: Wyoming",
|
|
129
131
|
)
|
|
130
132
|
ASR_WYOMING_PORT: int = typer.Option(
|
|
131
133
|
10300,
|
|
132
134
|
"--asr-wyoming-port",
|
|
135
|
+
envvar="ASR_WYOMING_PORT",
|
|
133
136
|
help="Wyoming ASR server port.",
|
|
134
137
|
rich_help_panel="Audio Input: Wyoming",
|
|
135
138
|
)
|
agent_cli/server/proxy/api.py
CHANGED
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
import logging
|
|
6
|
+
import os
|
|
6
7
|
from pathlib import Path
|
|
7
|
-
from typing import Annotated, Any
|
|
8
|
+
from typing import TYPE_CHECKING, Annotated, Any
|
|
8
9
|
|
|
9
10
|
from fastapi import Depends, FastAPI, File, Form, HTTPException, Request, UploadFile
|
|
10
11
|
from pydantic import BaseModel
|
|
@@ -26,6 +27,9 @@ from agent_cli.server.common import log_requests_middleware
|
|
|
26
27
|
from agent_cli.services import asr
|
|
27
28
|
from agent_cli.services.llm import process_and_update_clipboard
|
|
28
29
|
|
|
30
|
+
if TYPE_CHECKING:
|
|
31
|
+
from typer.models import OptionInfo
|
|
32
|
+
|
|
29
33
|
# Configure logging
|
|
30
34
|
logging.basicConfig(level=logging.INFO)
|
|
31
35
|
LOGGER = logging.getLogger(__name__)
|
|
@@ -153,6 +157,13 @@ def _validate_audio_file(audio: UploadFile) -> None:
|
|
|
153
157
|
)
|
|
154
158
|
|
|
155
159
|
|
|
160
|
+
def _cfg(key: str, defaults: dict[str, Any], opt: OptionInfo) -> Any:
|
|
161
|
+
"""Get config with priority: env var > config file > option default."""
|
|
162
|
+
if opt.envvar and (env_val := os.environ.get(opt.envvar)):
|
|
163
|
+
return int(env_val) if isinstance(opt.default, int) else env_val
|
|
164
|
+
return defaults.get(key, opt.default)
|
|
165
|
+
|
|
166
|
+
|
|
156
167
|
def _load_transcription_configs() -> tuple[
|
|
157
168
|
config.ProviderSelection,
|
|
158
169
|
config.WyomingASR,
|
|
@@ -163,41 +174,41 @@ def _load_transcription_configs() -> tuple[
|
|
|
163
174
|
config.GeminiLLM,
|
|
164
175
|
dict[str, Any],
|
|
165
176
|
]:
|
|
166
|
-
"""Load
|
|
177
|
+
"""Load config objects. Priority: env var > config file > default."""
|
|
167
178
|
loaded_config = config.load_config()
|
|
168
179
|
wildcard_config = loaded_config.get("defaults", {})
|
|
169
180
|
command_config = loaded_config.get("transcribe", {})
|
|
170
181
|
defaults = {**wildcard_config, **command_config}
|
|
171
182
|
|
|
172
183
|
provider_cfg = config.ProviderSelection(
|
|
173
|
-
asr_provider=
|
|
174
|
-
llm_provider=
|
|
175
|
-
tts_provider=opts.TTS_PROVIDER
|
|
184
|
+
asr_provider=_cfg("asr_provider", defaults, opts.ASR_PROVIDER),
|
|
185
|
+
llm_provider=_cfg("llm_provider", defaults, opts.LLM_PROVIDER),
|
|
186
|
+
tts_provider=_cfg("tts_provider", defaults, opts.TTS_PROVIDER),
|
|
176
187
|
)
|
|
177
188
|
wyoming_asr_cfg = config.WyomingASR(
|
|
178
|
-
asr_wyoming_ip=
|
|
179
|
-
asr_wyoming_port=
|
|
189
|
+
asr_wyoming_ip=_cfg("asr_wyoming_ip", defaults, opts.ASR_WYOMING_IP),
|
|
190
|
+
asr_wyoming_port=_cfg("asr_wyoming_port", defaults, opts.ASR_WYOMING_PORT),
|
|
180
191
|
)
|
|
181
192
|
openai_asr_cfg = config.OpenAIASR(
|
|
182
|
-
asr_openai_model=
|
|
183
|
-
openai_api_key=
|
|
193
|
+
asr_openai_model=_cfg("asr_openai_model", defaults, opts.ASR_OPENAI_MODEL),
|
|
194
|
+
openai_api_key=_cfg("openai_api_key", defaults, opts.OPENAI_API_KEY),
|
|
184
195
|
)
|
|
185
196
|
gemini_asr_cfg = config.GeminiASR(
|
|
186
|
-
asr_gemini_model=
|
|
187
|
-
gemini_api_key=
|
|
197
|
+
asr_gemini_model=_cfg("asr_gemini_model", defaults, opts.ASR_GEMINI_MODEL),
|
|
198
|
+
gemini_api_key=_cfg("gemini_api_key", defaults, opts.GEMINI_API_KEY),
|
|
188
199
|
)
|
|
189
200
|
ollama_cfg = config.Ollama(
|
|
190
|
-
llm_ollama_model=
|
|
191
|
-
llm_ollama_host=
|
|
201
|
+
llm_ollama_model=_cfg("llm_ollama_model", defaults, opts.LLM_OLLAMA_MODEL),
|
|
202
|
+
llm_ollama_host=_cfg("llm_ollama_host", defaults, opts.LLM_OLLAMA_HOST),
|
|
192
203
|
)
|
|
193
204
|
openai_llm_cfg = config.OpenAILLM(
|
|
194
|
-
llm_openai_model=
|
|
195
|
-
openai_api_key=
|
|
196
|
-
openai_base_url=
|
|
205
|
+
llm_openai_model=_cfg("llm_openai_model", defaults, opts.LLM_OPENAI_MODEL),
|
|
206
|
+
openai_api_key=_cfg("openai_api_key", defaults, opts.OPENAI_API_KEY),
|
|
207
|
+
openai_base_url=_cfg("openai_base_url", defaults, opts.OPENAI_BASE_URL),
|
|
197
208
|
)
|
|
198
209
|
gemini_llm_cfg = config.GeminiLLM(
|
|
199
|
-
llm_gemini_model=
|
|
200
|
-
gemini_api_key=
|
|
210
|
+
llm_gemini_model=_cfg("llm_gemini_model", defaults, opts.LLM_GEMINI_MODEL),
|
|
211
|
+
gemini_api_key=_cfg("gemini_api_key", defaults, opts.GEMINI_API_KEY),
|
|
201
212
|
)
|
|
202
213
|
|
|
203
214
|
return (
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-cli
|
|
3
|
-
Version: 0.70.
|
|
3
|
+
Version: 0.70.3
|
|
4
4
|
Summary: A suite of AI-powered command-line tools for text correction, audio transcription, and voice assistance.
|
|
5
5
|
Project-URL: Homepage, https://github.com/basnijholt/agent-cli
|
|
6
6
|
Author-email: Bas Nijholt <bas@nijho.lt>
|
|
@@ -750,6 +750,7 @@ the `[defaults]` section of your configuration file.
|
|
|
750
750
|
╰────────────────────────────────────────────────────────────────────────────────────────╯
|
|
751
751
|
╭─ Provider Selection ───────────────────────────────────────────────────────────────────╮
|
|
752
752
|
│ --asr-provider TEXT The ASR provider to use ('wyoming', 'openai', 'gemini'). │
|
|
753
|
+
│ [env var: ASR_PROVIDER] │
|
|
753
754
|
│ [default: wyoming] │
|
|
754
755
|
│ --llm-provider TEXT The LLM provider to use ('ollama', 'openai', 'gemini'). │
|
|
755
756
|
│ [default: ollama] │
|
|
@@ -762,8 +763,10 @@ the `[defaults]` section of your configuration file.
|
|
|
762
763
|
╰────────────────────────────────────────────────────────────────────────────────────────╯
|
|
763
764
|
╭─ Audio Input: Wyoming ─────────────────────────────────────────────────────────────────╮
|
|
764
765
|
│ --asr-wyoming-ip TEXT Wyoming ASR server IP address. │
|
|
766
|
+
│ [env var: ASR_WYOMING_IP] │
|
|
765
767
|
│ [default: localhost] │
|
|
766
768
|
│ --asr-wyoming-port INTEGER Wyoming ASR server port. │
|
|
769
|
+
│ [env var: ASR_WYOMING_PORT] │
|
|
767
770
|
│ [default: 10300] │
|
|
768
771
|
╰────────────────────────────────────────────────────────────────────────────────────────╯
|
|
769
772
|
╭─ Audio Input: OpenAI-compatible ───────────────────────────────────────────────────────╮
|
|
@@ -924,6 +927,7 @@ uv tool install "agent-cli[vad]" -p 3.13
|
|
|
924
927
|
╰────────────────────────────────────────────────────────────────────────────────────────╯
|
|
925
928
|
╭─ Provider Selection ───────────────────────────────────────────────────────────────────╮
|
|
926
929
|
│ --asr-provider TEXT The ASR provider to use ('wyoming', 'openai', 'gemini'). │
|
|
930
|
+
│ [env var: ASR_PROVIDER] │
|
|
927
931
|
│ [default: wyoming] │
|
|
928
932
|
│ --llm-provider TEXT The LLM provider to use ('ollama', 'openai', 'gemini'). │
|
|
929
933
|
│ [default: ollama] │
|
|
@@ -936,8 +940,10 @@ uv tool install "agent-cli[vad]" -p 3.13
|
|
|
936
940
|
╰────────────────────────────────────────────────────────────────────────────────────────╯
|
|
937
941
|
╭─ Audio Input: Wyoming ─────────────────────────────────────────────────────────────────╮
|
|
938
942
|
│ --asr-wyoming-ip TEXT Wyoming ASR server IP address. │
|
|
943
|
+
│ [env var: ASR_WYOMING_IP] │
|
|
939
944
|
│ [default: localhost] │
|
|
940
945
|
│ --asr-wyoming-port INTEGER Wyoming ASR server port. │
|
|
946
|
+
│ [env var: ASR_WYOMING_PORT] │
|
|
941
947
|
│ [default: 10300] │
|
|
942
948
|
╰────────────────────────────────────────────────────────────────────────────────────────╯
|
|
943
949
|
╭─ Audio Input: OpenAI-compatible ───────────────────────────────────────────────────────╮
|
|
@@ -1170,6 +1176,7 @@ uv tool install "agent-cli[vad]" -p 3.13
|
|
|
1170
1176
|
╰────────────────────────────────────────────────────────────────────────────────────────╯
|
|
1171
1177
|
╭─ Provider Selection ───────────────────────────────────────────────────────────────────╮
|
|
1172
1178
|
│ --asr-provider TEXT The ASR provider to use ('wyoming', 'openai', 'gemini'). │
|
|
1179
|
+
│ [env var: ASR_PROVIDER] │
|
|
1173
1180
|
│ [default: wyoming] │
|
|
1174
1181
|
│ --llm-provider TEXT The LLM provider to use ('ollama', 'openai', 'gemini'). │
|
|
1175
1182
|
│ [default: ollama] │
|
|
@@ -1185,8 +1192,10 @@ uv tool install "agent-cli[vad]" -p 3.13
|
|
|
1185
1192
|
╰────────────────────────────────────────────────────────────────────────────────────────╯
|
|
1186
1193
|
╭─ Audio Input: Wyoming ─────────────────────────────────────────────────────────────────╮
|
|
1187
1194
|
│ --asr-wyoming-ip TEXT Wyoming ASR server IP address. │
|
|
1195
|
+
│ [env var: ASR_WYOMING_IP] │
|
|
1188
1196
|
│ [default: localhost] │
|
|
1189
1197
|
│ --asr-wyoming-port INTEGER Wyoming ASR server port. │
|
|
1198
|
+
│ [env var: ASR_WYOMING_PORT] │
|
|
1190
1199
|
│ [default: 10300] │
|
|
1191
1200
|
╰────────────────────────────────────────────────────────────────────────────────────────╯
|
|
1192
1201
|
╭─ Audio Input: OpenAI-compatible ───────────────────────────────────────────────────────╮
|
|
@@ -1335,6 +1344,7 @@ uv tool install "agent-cli[vad]" -p 3.13
|
|
|
1335
1344
|
╰────────────────────────────────────────────────────────────────────────────────────────╯
|
|
1336
1345
|
╭─ Provider Selection ───────────────────────────────────────────────────────────────────╮
|
|
1337
1346
|
│ --asr-provider TEXT The ASR provider to use ('wyoming', 'openai', 'gemini'). │
|
|
1347
|
+
│ [env var: ASR_PROVIDER] │
|
|
1338
1348
|
│ [default: wyoming] │
|
|
1339
1349
|
│ --llm-provider TEXT The LLM provider to use ('ollama', 'openai', 'gemini'). │
|
|
1340
1350
|
│ [default: ollama] │
|
|
@@ -1359,8 +1369,10 @@ uv tool install "agent-cli[vad]" -p 3.13
|
|
|
1359
1369
|
╰────────────────────────────────────────────────────────────────────────────────────────╯
|
|
1360
1370
|
╭─ Audio Input: Wyoming ─────────────────────────────────────────────────────────────────╮
|
|
1361
1371
|
│ --asr-wyoming-ip TEXT Wyoming ASR server IP address. │
|
|
1372
|
+
│ [env var: ASR_WYOMING_IP] │
|
|
1362
1373
|
│ [default: localhost] │
|
|
1363
1374
|
│ --asr-wyoming-port INTEGER Wyoming ASR server port. │
|
|
1375
|
+
│ [env var: ASR_WYOMING_PORT] │
|
|
1364
1376
|
│ [default: 10300] │
|
|
1365
1377
|
╰────────────────────────────────────────────────────────────────────────────────────────╯
|
|
1366
1378
|
╭─ Audio Input: OpenAI-compatible ───────────────────────────────────────────────────────╮
|
|
@@ -1514,6 +1526,7 @@ uv tool install "agent-cli[vad]" -p 3.13
|
|
|
1514
1526
|
╰────────────────────────────────────────────────────────────────────────────────────────╯
|
|
1515
1527
|
╭─ Provider Selection ───────────────────────────────────────────────────────────────────╮
|
|
1516
1528
|
│ --asr-provider TEXT The ASR provider to use ('wyoming', 'openai', 'gemini'). │
|
|
1529
|
+
│ [env var: ASR_PROVIDER] │
|
|
1517
1530
|
│ [default: wyoming] │
|
|
1518
1531
|
│ --llm-provider TEXT The LLM provider to use ('ollama', 'openai', 'gemini'). │
|
|
1519
1532
|
│ [default: ollama] │
|
|
@@ -1529,8 +1542,10 @@ uv tool install "agent-cli[vad]" -p 3.13
|
|
|
1529
1542
|
╰────────────────────────────────────────────────────────────────────────────────────────╯
|
|
1530
1543
|
╭─ Audio Input: Wyoming ─────────────────────────────────────────────────────────────────╮
|
|
1531
1544
|
│ --asr-wyoming-ip TEXT Wyoming ASR server IP address. │
|
|
1545
|
+
│ [env var: ASR_WYOMING_IP] │
|
|
1532
1546
|
│ [default: localhost] │
|
|
1533
1547
|
│ --asr-wyoming-port INTEGER Wyoming ASR server port. │
|
|
1548
|
+
│ [env var: ASR_WYOMING_PORT] │
|
|
1534
1549
|
│ [default: 10300] │
|
|
1535
1550
|
╰────────────────────────────────────────────────────────────────────────────────────────╯
|
|
1536
1551
|
╭─ Audio Input: OpenAI-compatible ───────────────────────────────────────────────────────╮
|
|
@@ -9,7 +9,7 @@ agent_cli/config_cmd.py,sha256=CiHk1WxtvT21QeMuklTTMCmAdNwjeYENO_w_Qbiys54,9579
|
|
|
9
9
|
agent_cli/constants.py,sha256=-Q17N6qKIGqPDsu3FxpIKP33G0Cs0RUJlHwYNHxVxek,843
|
|
10
10
|
agent_cli/docs_gen.py,sha256=j6mBHwoPcQzMdgIWi_bB2A6yOyhvmW_cntRfwUg_8p8,13374
|
|
11
11
|
agent_cli/example-config.toml,sha256=xd9BXeOqdYx4xFJt58VBs2I49ESy6dF4-mWF_g8sM9o,7552
|
|
12
|
-
agent_cli/opts.py,sha256=
|
|
12
|
+
agent_cli/opts.py,sha256=Sa9sclTRhCr9ad1YcbV-qz7BTtlUmp0uwfAD1fZ3xng,12201
|
|
13
13
|
agent_cli/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
14
|
agent_cli/_requirements/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
15
|
agent_cli/_requirements/audio.txt,sha256=KAOtFaFClkj2EAesWI61LZ4N-T1WQvHtvf1sNtDxVgQ,1522
|
|
@@ -162,7 +162,7 @@ agent_cli/server/model_manager.py,sha256=93l_eeZeqnPALyDIK24or61tvded9TbM8tnde0o
|
|
|
162
162
|
agent_cli/server/model_registry.py,sha256=KrRV1XxbFYuXu5rJlHFh6PTl_2BKiWnWsaNrf-0c6wQ,6988
|
|
163
163
|
agent_cli/server/streaming.py,sha256=nX_kMNQBxdzvPKUcFQWth7dDBYALRGy_j9mDunKXaJE,2191
|
|
164
164
|
agent_cli/server/proxy/__init__.py,sha256=fOq5bs5B9XKfr7XbdZ825RIxheAJA0VKmKantykjTE4,83
|
|
165
|
-
agent_cli/server/proxy/api.py,sha256=
|
|
165
|
+
agent_cli/server/proxy/api.py,sha256=ZsfG7fEF15JE5cVFp2K8Ivadbdxw2q9LHGsTdi4EU2w,13650
|
|
166
166
|
agent_cli/server/tts/__init__.py,sha256=o1TlYmsGeqo-LDZg86KEhLJYWzN7jtMNGS5S8HFUSkw,93
|
|
167
167
|
agent_cli/server/tts/api.py,sha256=GLOJEC4yMlWjz6AjrWBdZLs368DddP27PMvgqVlVCFc,10598
|
|
168
168
|
agent_cli/server/tts/model_manager.py,sha256=TlBc0Q1iitDfNi8uYXyb1CaJr8Kt62SDyFIsCyVm7DY,6116
|
|
@@ -188,8 +188,8 @@ agent_cli/services/asr.py,sha256=aRaCLVCygsJ15qyQEPECOZsdSrnlLPbyY4RwAqY0qIw,172
|
|
|
188
188
|
agent_cli/services/llm.py,sha256=i01utl1eYWlM13gvW2eR6ErL_ndH-g0d-BSleZra_7k,7229
|
|
189
189
|
agent_cli/services/tts.py,sha256=NX5Qnq7ddLI3mwm3nzhbR3zB1Os4Ip4sSVSjDZDTBcI,14855
|
|
190
190
|
agent_cli/services/wake_word.py,sha256=JFJ1SA22H4yko9DXiQ1t7fcoxeALLAe3iBrLs0z8rX4,4664
|
|
191
|
-
agent_cli-0.70.
|
|
192
|
-
agent_cli-0.70.
|
|
193
|
-
agent_cli-0.70.
|
|
194
|
-
agent_cli-0.70.
|
|
195
|
-
agent_cli-0.70.
|
|
191
|
+
agent_cli-0.70.3.dist-info/METADATA,sha256=ZRTUfqIxUcFdkbEMuk7-R_-z6cIZQF3y53D8q8u75u0,157557
|
|
192
|
+
agent_cli-0.70.3.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
193
|
+
agent_cli-0.70.3.dist-info/entry_points.txt,sha256=FUv-fB2atLsPUk_RT4zqnZl1coz4_XHFwRALOKOF38s,97
|
|
194
|
+
agent_cli-0.70.3.dist-info/licenses/LICENSE,sha256=majJU6S9kC8R8bW39NVBHyv32Dq50FL6TDxECG2WVts,1068
|
|
195
|
+
agent_cli-0.70.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|