github-agent 0.2.2__tar.gz → 0.2.4__tar.gz

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: github-agent
3
- Version: 0.2.2
3
+ Version: 0.2.4
4
4
  Summary: GitHub Agent for MCP
5
5
  Author-email: Audel Rouhi <knucklessg1@gmail.com>
6
6
  License: MIT
@@ -12,8 +12,8 @@ Classifier: Programming Language :: Python :: 3
12
12
  Requires-Python: >=3.10
13
13
  Description-Content-Type: text/markdown
14
14
  License-File: LICENSE
15
- Requires-Dist: pydantic-ai-slim[a2a,ag-ui,anthropic,fastmcp,google,huggingface,openai,web]>=1.32.0
16
- Requires-Dist: pydantic-ai-skills
15
+ Requires-Dist: pydantic-ai-slim[a2a,ag-ui,anthropic,fastmcp,google,groq,huggingface,mistral,openai,web]>=1.58.0
16
+ Requires-Dist: pydantic-ai-skills>=v0.4.0
17
17
  Requires-Dist: fastapi>=0.128.0
18
18
  Requires-Dist: fastmcp
19
19
  Requires-Dist: uvicorn
@@ -43,7 +43,7 @@ Dynamic: license-file
43
43
  ![PyPI - Wheel](https://img.shields.io/pypi/wheel/github-agent)
44
44
  ![PyPI - Implementation](https://img.shields.io/pypi/implementation/github-agent)
45
45
 
46
- *Version: 0.2.2*
46
+ *Version: 0.2.4*
47
47
 
48
48
  ## Overview
49
49
 
@@ -21,7 +21,7 @@
21
21
  ![PyPI - Wheel](https://img.shields.io/pypi/wheel/github-agent)
22
22
  ![PyPI - Implementation](https://img.shields.io/pypi/implementation/github-agent)
23
23
 
24
- *Version: 0.2.2*
24
+ *Version: 0.2.4*
25
25
 
26
26
  ## Overview
27
27
 
@@ -38,7 +38,7 @@ from pydantic import ValidationError
38
38
  from pydantic_ai.ui import SSE_CONTENT_TYPE
39
39
  from pydantic_ai.ui.ag_ui import AGUIAdapter
40
40
 
41
- __version__ = "0.2.2"
41
+ __version__ = "0.2.4"
42
42
 
43
43
  logging.basicConfig(
44
44
  level=logging.INFO,
@@ -258,7 +258,23 @@ def create_model(
258
258
  api_key: Optional[str] = None,
259
259
  ssl_verify: bool = True,
260
260
  ):
261
- http_client = get_http_client(ssl_verify=ssl_verify)
261
+ """
262
+ Create a Pydantic AI model with the specified provider and configuration.
263
+
264
+ Args:
265
+ provider: The model provider (openai, anthropic, google, groq, mistral, huggingface, ollama)
266
+ model_id: The specific model ID to use
267
+ base_url: Optional base URL for the API
268
+ api_key: Optional API key
269
+ ssl_verify: Whether to verify SSL certificates (default: True)
270
+
271
+ Returns:
272
+ A Pydantic AI Model instance
273
+ """
274
+ # Create a custom HTTP client if SSL verification is disabled
275
+ http_client = None
276
+ if not ssl_verify:
277
+ http_client = httpx.AsyncClient(verify=False)
262
278
 
263
279
  if provider == "openai":
264
280
  target_base_url = base_url
@@ -267,8 +283,8 @@ def create_model(
267
283
  # If we have a custom client or specific settings, we might want to use the explicit provider object
268
284
  if http_client and AsyncOpenAI and OpenAIProvider:
269
285
  client = AsyncOpenAI(
270
- api_key=target_api_key or os.environ.get("LLM_API_KEY"),
271
- base_url=target_base_url or os.environ.get("LLM_BASE_URL"),
286
+ api_key=target_api_key or os.environ.get("OPENAI_API_KEY"),
287
+ base_url=target_base_url or os.environ.get("OPENAI_BASE_URL"),
272
288
  http_client=http_client,
273
289
  )
274
290
  provider_instance = OpenAIProvider(openai_client=client)
@@ -276,9 +292,9 @@ def create_model(
276
292
 
277
293
  # Fallback to standard env vars
278
294
  if target_base_url:
279
- os.environ["LLM_BASE_URL"] = target_base_url
295
+ os.environ["OPENAI_BASE_URL"] = target_base_url
280
296
  if target_api_key:
281
- os.environ["LLM_API_KEY"] = target_api_key
297
+ os.environ["OPENAI_API_KEY"] = target_api_key
282
298
  return OpenAIChatModel(model_name=model_id, provider="openai")
283
299
 
284
300
  elif provider == "ollama":
@@ -295,18 +311,21 @@ def create_model(
295
311
  provider_instance = OpenAIProvider(openai_client=client)
296
312
  return OpenAIChatModel(model_name=model_id, provider=provider_instance)
297
313
 
298
- os.environ["LLM_BASE_URL"] = target_base_url
299
- os.environ["LLM_API_KEY"] = target_api_key
314
+ os.environ["OPENAI_BASE_URL"] = target_base_url
315
+ os.environ["OPENAI_API_KEY"] = target_api_key
300
316
  return OpenAIChatModel(model_name=model_id, provider="openai")
301
317
 
302
318
  elif provider == "anthropic":
303
319
  if api_key:
304
- os.environ["LLM_API_KEY"] = api_key
320
+ os.environ["ANTHROPIC_API_KEY"] = api_key
321
+
322
+ # AnthropicModel supports http_client directly via some paths,
323
+ # but pydantic-ai might prefer we pass the client to the provider or use a custom client
305
324
 
306
325
  try:
307
326
  if http_client and AsyncAnthropic and AnthropicProvider:
308
327
  client = AsyncAnthropic(
309
- api_key=api_key or os.environ.get("LLM_API_KEY"),
328
+ api_key=api_key or os.environ.get("ANTHROPIC_API_KEY"),
310
329
  http_client=http_client,
311
330
  )
312
331
  provider_instance = AnthropicProvider(anthropic_client=client)
@@ -317,18 +336,18 @@ def create_model(
317
336
  return AnthropicModel(model_name=model_id)
318
337
 
319
338
  elif provider == "google":
320
- # Google generic setup, skipping complex SSL for now as agreed
321
339
  if api_key:
322
- os.environ["LLM_API_KEY"] = api_key
340
+ os.environ["GEMINI_API_KEY"] = api_key
341
+ # Google SSL disable is tricky with genai, skipping for now unless specifically requested/researched
323
342
  return GoogleModel(model_name=model_id)
324
343
 
325
344
  elif provider == "groq":
326
345
  if api_key:
327
- os.environ["LLM_API_KEY"] = api_key
346
+ os.environ["GROQ_API_KEY"] = api_key
328
347
 
329
348
  if http_client and AsyncGroq and GroqProvider:
330
349
  client = AsyncGroq(
331
- api_key=api_key or os.environ.get("LLM_API_KEY"),
350
+ api_key=api_key or os.environ.get("GROQ_API_KEY"),
332
351
  http_client=http_client,
333
352
  )
334
353
  provider_instance = GroqProvider(groq_client=client)
@@ -338,18 +357,21 @@ def create_model(
338
357
 
339
358
  elif provider == "mistral":
340
359
  if api_key:
341
- os.environ["LLM_API_KEY"] = api_key
360
+ os.environ["MISTRAL_API_KEY"] = api_key
342
361
 
343
362
  if http_client and Mistral and MistralProvider:
344
363
  # Assuming mistral_client argument for MistralProvider
345
364
  # Ideally we would verify this, but we'll try standard pattern
346
365
  pass
366
+ # client = Mistral(...) - Mistral SDK might be different
367
+ # Skipping Mistral custom client for now to avoid breaking without verification
368
+ # If user needs Mistral SSL disable, we'll need to research Mistral SDK + Provider
347
369
 
348
370
  return MistralModel(model_name=model_id)
349
371
 
350
372
  elif provider == "huggingface":
351
373
  if api_key:
352
- os.environ["LLM_API_KEY"] = api_key
374
+ os.environ["HUGGING_FACE_API_KEY"] = api_key
353
375
  return HuggingFaceModel(model_name=model_id)
354
376
 
355
377
  return OpenAIChatModel(model_name=model_id, provider="openai")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: github-agent
3
- Version: 0.2.2
3
+ Version: 0.2.4
4
4
  Summary: GitHub Agent for MCP
5
5
  Author-email: Audel Rouhi <knucklessg1@gmail.com>
6
6
  License: MIT
@@ -12,8 +12,8 @@ Classifier: Programming Language :: Python :: 3
12
12
  Requires-Python: >=3.10
13
13
  Description-Content-Type: text/markdown
14
14
  License-File: LICENSE
15
- Requires-Dist: pydantic-ai-slim[a2a,ag-ui,anthropic,fastmcp,google,huggingface,openai,web]>=1.32.0
16
- Requires-Dist: pydantic-ai-skills
15
+ Requires-Dist: pydantic-ai-slim[a2a,ag-ui,anthropic,fastmcp,google,groq,huggingface,mistral,openai,web]>=1.58.0
16
+ Requires-Dist: pydantic-ai-skills>=v0.4.0
17
17
  Requires-Dist: fastapi>=0.128.0
18
18
  Requires-Dist: fastmcp
19
19
  Requires-Dist: uvicorn
@@ -43,7 +43,7 @@ Dynamic: license-file
43
43
  ![PyPI - Wheel](https://img.shields.io/pypi/wheel/github-agent)
44
44
  ![PyPI - Implementation](https://img.shields.io/pypi/implementation/github-agent)
45
45
 
46
- *Version: 0.2.2*
46
+ *Version: 0.2.4*
47
47
 
48
48
  ## Overview
49
49
 
@@ -0,0 +1,6 @@
1
+ pydantic-ai-slim[a2a,ag-ui,anthropic,fastmcp,google,groq,huggingface,mistral,openai,web]>=1.58.0
2
+ pydantic-ai-skills>=v0.4.0
3
+ fastapi>=0.128.0
4
+ fastmcp
5
+ uvicorn
6
+ fastapi
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "github-agent"
7
- version = "0.2.2"
7
+ version = "0.2.4"
8
8
  readme = "README.md"
9
9
  description = "GitHub Agent for MCP"
10
10
  requires-python = ">=3.10"
@@ -18,8 +18,8 @@ classifiers = [
18
18
  "Programming Language :: Python :: 3",
19
19
  ]
20
20
  dependencies = [
21
- "pydantic-ai-slim[fastmcp,openai,anthropic,google,huggingface,a2a,ag-ui,web]>=1.32.0",
22
- "pydantic-ai-skills",
21
+ "pydantic-ai-slim[fastmcp,openai,anthropic,groq,mistral,google,huggingface,a2a,ag-ui,web]>=1.58.0",
22
+ "pydantic-ai-skills>=v0.4.0",
23
23
  "fastapi>=0.128.0",
24
24
  "fastmcp",
25
25
  "uvicorn",
@@ -1,6 +0,0 @@
1
- pydantic-ai-slim[a2a,ag-ui,anthropic,fastmcp,google,huggingface,openai,web]>=1.32.0
2
- pydantic-ai-skills
3
- fastapi>=0.128.0
4
- fastmcp
5
- uvicorn
6
- fastapi
File without changes
File without changes