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.
- {github_agent-0.2.2 → github_agent-0.2.4}/PKG-INFO +4 -4
- {github_agent-0.2.2 → github_agent-0.2.4}/README.md +1 -1
- {github_agent-0.2.2 → github_agent-0.2.4}/github_agent/github_agent.py +1 -1
- {github_agent-0.2.2 → github_agent-0.2.4}/github_agent/utils.py +37 -15
- {github_agent-0.2.2 → github_agent-0.2.4}/github_agent.egg-info/PKG-INFO +4 -4
- github_agent-0.2.4/github_agent.egg-info/requires.txt +6 -0
- {github_agent-0.2.2 → github_agent-0.2.4}/pyproject.toml +3 -3
- github_agent-0.2.2/github_agent.egg-info/requires.txt +0 -6
- {github_agent-0.2.2 → github_agent-0.2.4}/LICENSE +0 -0
- {github_agent-0.2.2 → github_agent-0.2.4}/github_agent/__init__.py +0 -0
- {github_agent-0.2.2 → github_agent-0.2.4}/github_agent.egg-info/SOURCES.txt +0 -0
- {github_agent-0.2.2 → github_agent-0.2.4}/github_agent.egg-info/dependency_links.txt +0 -0
- {github_agent-0.2.2 → github_agent-0.2.4}/github_agent.egg-info/entry_points.txt +0 -0
- {github_agent-0.2.2 → github_agent-0.2.4}/github_agent.egg-info/top_level.txt +0 -0
- {github_agent-0.2.2 → github_agent-0.2.4}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: github-agent
|
|
3
|
-
Version: 0.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.
|
|
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
|

|
|
44
44
|

|
|
45
45
|
|
|
46
|
-
*Version: 0.2.
|
|
46
|
+
*Version: 0.2.4*
|
|
47
47
|
|
|
48
48
|
## Overview
|
|
49
49
|
|
|
@@ -258,7 +258,23 @@ def create_model(
|
|
|
258
258
|
api_key: Optional[str] = None,
|
|
259
259
|
ssl_verify: bool = True,
|
|
260
260
|
):
|
|
261
|
-
|
|
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("
|
|
271
|
-
base_url=target_base_url or os.environ.get("
|
|
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["
|
|
295
|
+
os.environ["OPENAI_BASE_URL"] = target_base_url
|
|
280
296
|
if target_api_key:
|
|
281
|
-
os.environ["
|
|
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["
|
|
299
|
-
os.environ["
|
|
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["
|
|
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("
|
|
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["
|
|
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["
|
|
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("
|
|
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["
|
|
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["
|
|
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.
|
|
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.
|
|
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
|

|
|
44
44
|

|
|
45
45
|
|
|
46
|
-
*Version: 0.2.
|
|
46
|
+
*Version: 0.2.4*
|
|
47
47
|
|
|
48
48
|
## Overview
|
|
49
49
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "github-agent"
|
|
7
|
-
version = "0.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.
|
|
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",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|