agent-cli 0.72.7__py3-none-any.whl → 0.73.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.
@@ -23,6 +23,7 @@ def proxy(
23
23
  rich_help_panel="Memory Configuration",
24
24
  ),
25
25
  openai_base_url: str | None = opts.OPENAI_BASE_URL,
26
+ embedding_base_url: str | None = opts.EMBEDDING_BASE_URL,
26
27
  embedding_model: str = opts.EMBEDDING_MODEL,
27
28
  openai_api_key: str | None = opts.OPENAI_API_KEY,
28
29
  default_top_k: int = typer.Option(
@@ -135,12 +136,15 @@ def proxy(
135
136
  entries_dir, _ = ensure_store_dirs(memory_path)
136
137
  if openai_base_url is None:
137
138
  openai_base_url = constants.DEFAULT_OPENAI_BASE_URL
139
+ effective_embedding_url = embedding_base_url or openai_base_url
138
140
 
139
141
  console.print(f"[bold green]Starting Memory Proxy on {host}:{port}[/bold green]")
140
142
  console.print(f" 💾 Memory store: [blue]{memory_path}[/blue]")
141
143
  console.print(f" 📁 Entries: [blue]{entries_dir}[/blue]")
142
144
  console.print(f" 🤖 Backend: [blue]{openai_base_url}[/blue]")
143
- console.print(f" 🧠 Embeddings: Using [blue]{embedding_model}[/blue]")
145
+ console.print(
146
+ f" 🧠 Embeddings: [blue]{embedding_model}[/blue] via [blue]{effective_embedding_url}[/blue]",
147
+ )
144
148
  console.print(f" 🔍 Memory top_k: [blue]{default_top_k}[/blue] entries per query")
145
149
  console.print(f" 🧹 Max entries per conversation: [blue]{max_entries}[/blue]")
146
150
  console.print(
@@ -154,6 +158,7 @@ def proxy(
154
158
  fastapi_app = create_app(
155
159
  memory_path,
156
160
  openai_base_url,
161
+ embedding_base_url=effective_embedding_url,
157
162
  embedding_model=embedding_model,
158
163
  embedding_api_key=openai_api_key,
159
164
  chat_api_key=openai_api_key,
@@ -32,6 +32,7 @@ def rag_proxy(
32
32
  rich_help_panel="RAG Configuration",
33
33
  ),
34
34
  openai_base_url: str | None = opts.OPENAI_BASE_URL,
35
+ embedding_base_url: str | None = opts.EMBEDDING_BASE_URL,
35
36
  embedding_model: str = opts.EMBEDDING_MODEL,
36
37
  openai_api_key: str | None = opts.OPENAI_API_KEY,
37
38
  limit: int = typer.Option(
@@ -138,22 +139,26 @@ def rag_proxy(
138
139
 
139
140
  if openai_base_url is None:
140
141
  openai_base_url = constants.DEFAULT_OPENAI_BASE_URL
142
+ effective_embedding_url = embedding_base_url or openai_base_url
141
143
 
142
144
  console.print(f"[bold green]Starting RAG Proxy on {host}:{port}[/bold green]")
143
145
  console.print(f" 📂 Docs: [blue]{docs_folder}[/blue]")
144
146
  console.print(f" 💾 DB: [blue]{chroma_path}[/blue]")
145
147
  console.print(f" 🤖 Backend: [blue]{openai_base_url}[/blue]")
146
- console.print(f" 🧠 Embeddings: Using [blue]{embedding_model}[/blue]")
148
+ console.print(
149
+ f" 🧠 Embeddings: [blue]{embedding_model}[/blue] via [blue]{effective_embedding_url}[/blue]",
150
+ )
147
151
  console.print(f" 🔍 Limit: [blue]{limit}[/blue] chunks per query")
148
152
 
149
153
  fastapi_app = create_app(
150
154
  docs_folder,
151
155
  chroma_path,
152
156
  openai_base_url,
153
- embedding_model,
154
- openai_api_key,
155
- openai_api_key,
156
- limit,
157
+ embedding_base_url=effective_embedding_url,
158
+ embedding_model=embedding_model,
159
+ embedding_api_key=openai_api_key,
160
+ chat_api_key=openai_api_key,
161
+ limit=limit,
157
162
  enable_rag_tools=enable_rag_tools,
158
163
  )
159
164
 
agent_cli/memory/api.py CHANGED
@@ -22,6 +22,7 @@ LOGGER = logging.getLogger(__name__)
22
22
  def create_app(
23
23
  memory_path: Path,
24
24
  openai_base_url: str,
25
+ embedding_base_url: str | None = None,
25
26
  embedding_model: str = DEFAULT_OPENAI_EMBEDDING_MODEL,
26
27
  embedding_api_key: str | None = None,
27
28
  chat_api_key: str | None = None,
@@ -39,6 +40,7 @@ def create_app(
39
40
  client = MemoryClient(
40
41
  memory_path=memory_path,
41
42
  openai_base_url=openai_base_url,
43
+ embedding_base_url=embedding_base_url,
42
44
  embedding_model=embedding_model,
43
45
  embedding_api_key=embedding_api_key,
44
46
  chat_api_key=chat_api_key,
@@ -41,6 +41,7 @@ class MemoryClient:
41
41
  self,
42
42
  memory_path: Path,
43
43
  openai_base_url: str,
44
+ embedding_base_url: str | None = None,
44
45
  embedding_model: str = DEFAULT_OPENAI_EMBEDDING_MODEL,
45
46
  embedding_api_key: str | None = None,
46
47
  chat_api_key: str | None = None,
@@ -74,7 +75,7 @@ class MemoryClient:
74
75
  self.collection: Collection = init_memory_collection(
75
76
  self.memory_path,
76
77
  embedding_model=embedding_model,
77
- openai_base_url=self.openai_base_url,
78
+ openai_base_url=embedding_base_url or self.openai_base_url,
78
79
  openai_api_key=embedding_api_key,
79
80
  )
80
81
 
agent_cli/opts.py CHANGED
@@ -109,6 +109,14 @@ EMBEDDING_MODEL: str = typer.Option(
109
109
  help="Embedding model to use for vectorization.",
110
110
  rich_help_panel="LLM Configuration",
111
111
  )
112
+ EMBEDDING_BASE_URL: str | None = typer.Option(
113
+ None,
114
+ "--embedding-base-url",
115
+ envvar="EMBEDDING_BASE_URL",
116
+ help="Base URL for embedding API. Falls back to `--openai-base-url` if not set. "
117
+ "Useful when using different providers for chat vs embeddings.",
118
+ rich_help_panel="LLM Configuration",
119
+ )
112
120
 
113
121
  # --- ASR (Audio) Configuration ---
114
122
  # General ASR
agent_cli/rag/api.py CHANGED
@@ -32,6 +32,7 @@ def create_app(
32
32
  docs_folder: Path,
33
33
  chroma_path: Path,
34
34
  openai_base_url: str,
35
+ embedding_base_url: str | None = None,
35
36
  embedding_model: str = DEFAULT_OPENAI_EMBEDDING_MODEL,
36
37
  embedding_api_key: str | None = None,
37
38
  chat_api_key: str | None = None,
@@ -47,7 +48,7 @@ def create_app(
47
48
  chroma_path,
48
49
  name="docs",
49
50
  embedding_model=embedding_model,
50
- openai_base_url=openai_base_url,
51
+ openai_base_url=embedding_base_url or openai_base_url,
51
52
  openai_api_key=embedding_api_key,
52
53
  )
53
54
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-cli
3
- Version: 0.72.7
3
+ Version: 0.73.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>
@@ -2066,8 +2066,12 @@ uv tool install "agent-cli[vad]" -p 3.13
2066
2066
  │ [env var: OPENAI_API_KEY] │
2067
2067
  ╰────────────────────────────────────────────────────────────────────────────────────────╯
2068
2068
  ╭─ LLM Configuration ────────────────────────────────────────────────────────────────────╮
2069
- │ --embedding-model TEXT Embedding model to use for vectorization.
2070
- [default: text-embedding-3-small]
2069
+ │ --embedding-base-url TEXT Base URL for embedding API. Falls back to
2070
+ --openai-base-url if not set. Useful when using
2071
+ │ different providers for chat vs embeddings. │
2072
+ │ [env var: EMBEDDING_BASE_URL] │
2073
+ │ --embedding-model TEXT Embedding model to use for vectorization. │
2074
+ │ [default: text-embedding-3-small] │
2071
2075
  ╰────────────────────────────────────────────────────────────────────────────────────────╯
2072
2076
  ╭─ Server Configuration ─────────────────────────────────────────────────────────────────╮
2073
2077
  │ --host TEXT Host/IP to bind API servers to. │
@@ -2229,8 +2233,12 @@ The `memory proxy` command is the core feature—a middleware server that gives
2229
2233
  │ [env var: OPENAI_API_KEY] │
2230
2234
  ╰────────────────────────────────────────────────────────────────────────────────────────╯
2231
2235
  ╭─ LLM Configuration ────────────────────────────────────────────────────────────────────╮
2232
- │ --embedding-model TEXT Embedding model to use for vectorization.
2233
- [default: text-embedding-3-small]
2236
+ │ --embedding-base-url TEXT Base URL for embedding API. Falls back to
2237
+ --openai-base-url if not set. Useful when using
2238
+ │ different providers for chat vs embeddings. │
2239
+ │ [env var: EMBEDDING_BASE_URL] │
2240
+ │ --embedding-model TEXT Embedding model to use for vectorization. │
2241
+ │ [default: text-embedding-3-small] │
2234
2242
  ╰────────────────────────────────────────────────────────────────────────────────────────╯
2235
2243
  ╭─ Server Configuration ─────────────────────────────────────────────────────────────────╮
2236
2244
  │ --host TEXT Host/IP to bind API servers to. │
@@ -9,7 +9,7 @@ agent_cli/config_cmd.py,sha256=PkFY-U09LRIFYrHL_kG4_Ge6DjCWFe3GkO_uiIBMTgI,10359
9
9
  agent_cli/constants.py,sha256=-Q17N6qKIGqPDsu3FxpIKP33G0Cs0RUJlHwYNHxVxek,843
10
10
  agent_cli/docs_gen.py,sha256=ZX2GYHNumpLhdAEc_4Hy6xeAahAzsEVVnsXUojMYVNY,13885
11
11
  agent_cli/example-config.toml,sha256=xd9BXeOqdYx4xFJt58VBs2I49ESy6dF4-mWF_g8sM9o,7552
12
- agent_cli/opts.py,sha256=BzPIZrGkaoHXw83imRbxKNZJVwJzbpVGcmrpQavTesk,13089
12
+ agent_cli/opts.py,sha256=XgVFv-ip5lkFJNyBGHewCBQc4YaLJUSijIsP1qiqcts,13405
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
@@ -29,14 +29,14 @@ agent_cli/agents/_voice_agent_common.py,sha256=PUAztW84Xf9U7d0C_K5cL7I8OANIE1H6M
29
29
  agent_cli/agents/assistant.py,sha256=oUu6Z3mRQnO_PKzby71iB282UN-yRmKGiPa-OzkHmRg,13794
30
30
  agent_cli/agents/autocorrect.py,sha256=nJnNC9uKBZcbQ4roiC-BiJKTomiSdfe8mNa8p3yACps,9715
31
31
  agent_cli/agents/chat.py,sha256=DhG7qAYqlwj_UDaMREucFhvUqNuWNLFGpR_NRp7nuek,18703
32
- agent_cli/agents/rag_proxy.py,sha256=0-CEgthAqQ3bQ4NISiS0fPjjkAW44KNylChenXSjW5A,6273
32
+ agent_cli/agents/rag_proxy.py,sha256=0EeCbMqnFAGuCKe1wtjaYJsfbMlUfFxN0-uekYzLWpg,6560
33
33
  agent_cli/agents/speak.py,sha256=XcBK_y1LMdNPdgfs9V57FNSZMgtjWFogIPsUx0g4SX0,7640
34
34
  agent_cli/agents/transcribe.py,sha256=4KrMsNty4O2sRtmhqsHzH5AYXoMeTrbFq0mPrV_qGqE,25322
35
35
  agent_cli/agents/transcribe_daemon.py,sha256=kJhmp7143fj3mhwz-l-a-LKvxZkhcGMHHcn8Cvq-Ec4,18926
36
36
  agent_cli/agents/voice_edit.py,sha256=OiYgBJ9GhtbeE7uLfaGHLWHXe7TKNd9Oo6kfvsROJ3M,11405
37
37
  agent_cli/agents/memory/__init__.py,sha256=3IFV1fSD0u38E54f_0oPZoPbM0LXaH-A3bDSnBL9FJs,1470
38
38
  agent_cli/agents/memory/add.py,sha256=i_F78rnE8ftJ1DY1yX4BpClV8H9Rz9-aFh6lzI6a_zE,6349
39
- agent_cli/agents/memory/proxy.py,sha256=NlEAg6sgr0SBRObfOmqV2PSONA6rcOTBua2rTSPny6U,6975
39
+ agent_cli/agents/memory/proxy.py,sha256=rSesjHTx366Q9fEXB-DanRpFOJnua3tkQwXkJeMmRgs,7209
40
40
  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
@@ -107,8 +107,8 @@ agent_cli/memory/_retrieval.py,sha256=K_2TUcgzfntBARPyf0K6VR3NIgHHJrqGFMP_53Nae_
107
107
  agent_cli/memory/_store.py,sha256=m9mD1GxjdTXpnyL-X-MIU4cj28unqxJ_azV3kwM8blM,5086
108
108
  agent_cli/memory/_streaming.py,sha256=P1JnkDNTJJj-lXawmXhBZnIia3ZZmKo-N6mUsLYFVgs,1400
109
109
  agent_cli/memory/_tasks.py,sha256=XgEkN_3NCVQDWafZ_rqazpAE68yQ87x-amnQKMkfPXg,1469
110
- agent_cli/memory/api.py,sha256=riaGTOIw7g3KuDNcPtDy9wO44-D1wDtVadRj3RTT10k,3595
111
- agent_cli/memory/client.py,sha256=XomHhP-hPSoosORkBKSY1dW3gjheFEVqAac0b-tAULo,9994
110
+ agent_cli/memory/api.py,sha256=h7sxbNsq72ewOTnv4XcHaMBGY5NgEMAB5e_OmtMzxy0,3685
111
+ agent_cli/memory/client.py,sha256=szkI8G8CHfHOgH9LwDEQQmZZNsUi_a3DdHX23h_yn2U,10063
112
112
  agent_cli/memory/engine.py,sha256=rABVC86b5wU1QxY3BM43RhvfDOxoRT7Ddm98BN_qCL4,11656
113
113
  agent_cli/memory/entities.py,sha256=_8wyJz--tNa66CEtSpl2TUN_zeHQvMzm42htnDaOr6g,1219
114
114
  agent_cli/memory/models.py,sha256=KK0wToEf-tXssYVL0hYaJlcADlJ3G2lcSXwo1UmA0VU,2352
@@ -119,7 +119,7 @@ agent_cli/rag/_prompt.py,sha256=d8_jOhZGafMmjO7BlCl4H125bj4m-dNFWDOLz5_OPrw,954
119
119
  agent_cli/rag/_retriever.py,sha256=bzMzZR43P5cROgnWwOh_BrMFsMP5tDm21ToFVZwb0gk,4505
120
120
  agent_cli/rag/_store.py,sha256=HksCLnbHp19dnY5ZWglm86azBjjuiWqvZvRPG-oJ8SY,1381
121
121
  agent_cli/rag/_utils.py,sha256=OKZvn8UFb3TsB4b0eIWU6Md5xDiaG-g659zMjVUu8oI,5923
122
- agent_cli/rag/api.py,sha256=Q_aaRdNxh9avNGvXWEJ5qH-vMTagN7m-iJdTZSeSink,5564
122
+ agent_cli/rag/api.py,sha256=s0jsCrACkuWfTiGzznlacxyTGGu9Fa6LVmrIf23JBbQ,5629
123
123
  agent_cli/rag/client.py,sha256=mFiZ4yjI75Vsehie6alsV1My50uIsp-G07Qz6SaNrZw,8913
124
124
  agent_cli/rag/engine.py,sha256=XySDer0fNTsEUjbUby5yf7JqB7uCE7tw2A6tYJixHnI,9800
125
125
  agent_cli/rag/models.py,sha256=uECWoeBChlkAK7uTM-pUnPGaaMO4EYJ3pJcAf8uh1vI,1043
@@ -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.72.7.dist-info/METADATA,sha256=F1HKnb3c-lJozyL0wkUqxhOFQvNlCTEwO3ZtM3IcPLo,179913
193
- agent_cli-0.72.7.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
194
- agent_cli-0.72.7.dist-info/entry_points.txt,sha256=FUv-fB2atLsPUk_RT4zqnZl1coz4_XHFwRALOKOF38s,97
195
- agent_cli-0.72.7.dist-info/licenses/LICENSE,sha256=majJU6S9kC8R8bW39NVBHyv32Dq50FL6TDxECG2WVts,1068
196
- agent_cli-0.72.7.dist-info/RECORD,,
192
+ agent_cli-0.73.0.dist-info/METADATA,sha256=ybJ--hEZOx6RMgWCcWysDtu-eiMsRMq5H74VsaTYrMQ,180673
193
+ agent_cli-0.73.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
194
+ agent_cli-0.73.0.dist-info/entry_points.txt,sha256=FUv-fB2atLsPUk_RT4zqnZl1coz4_XHFwRALOKOF38s,97
195
+ agent_cli-0.73.0.dist-info/licenses/LICENSE,sha256=majJU6S9kC8R8bW39NVBHyv32Dq50FL6TDxECG2WVts,1068
196
+ agent_cli-0.73.0.dist-info/RECORD,,