github-agent 0.2.10__tar.gz → 0.2.12__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.10 → github_agent-0.2.12}/PKG-INFO +2 -2
- {github_agent-0.2.10 → github_agent-0.2.12}/README.md +1 -1
- {github_agent-0.2.10 → github_agent-0.2.12}/github_agent/github_agent.py +51 -39
- {github_agent-0.2.10 → github_agent-0.2.12}/github_agent.egg-info/PKG-INFO +2 -2
- {github_agent-0.2.10 → github_agent-0.2.12}/pyproject.toml +1 -1
- {github_agent-0.2.10 → github_agent-0.2.12}/LICENSE +0 -0
- {github_agent-0.2.10 → github_agent-0.2.12}/github_agent/__init__.py +0 -0
- {github_agent-0.2.10 → github_agent-0.2.12}/github_agent/utils.py +0 -0
- {github_agent-0.2.10 → github_agent-0.2.12}/github_agent.egg-info/SOURCES.txt +0 -0
- {github_agent-0.2.10 → github_agent-0.2.12}/github_agent.egg-info/dependency_links.txt +0 -0
- {github_agent-0.2.10 → github_agent-0.2.12}/github_agent.egg-info/entry_points.txt +0 -0
- {github_agent-0.2.10 → github_agent-0.2.12}/github_agent.egg-info/requires.txt +0 -0
- {github_agent-0.2.10 → github_agent-0.2.12}/github_agent.egg-info/top_level.txt +0 -0
- {github_agent-0.2.10 → github_agent-0.2.12}/scripts/validate_a2a_agent.py +0 -0
- {github_agent-0.2.10 → github_agent-0.2.12}/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.12
|
|
4
4
|
Summary: GitHub Agent for MCP
|
|
5
5
|
Author-email: Audel Rouhi <knucklessg1@gmail.com>
|
|
6
6
|
License: MIT
|
|
@@ -43,7 +43,7 @@ Dynamic: license-file
|
|
|
43
43
|

|
|
44
44
|

|
|
45
45
|
|
|
46
|
-
*Version: 0.2.
|
|
46
|
+
*Version: 0.2.12*
|
|
47
47
|
|
|
48
48
|
## Overview
|
|
49
49
|
|
|
@@ -39,7 +39,7 @@ from pydantic import ValidationError
|
|
|
39
39
|
from pydantic_ai.ui import SSE_CONTENT_TYPE
|
|
40
40
|
from pydantic_ai.ui.ag_ui import AGUIAdapter
|
|
41
41
|
|
|
42
|
-
__version__ = "0.2.
|
|
42
|
+
__version__ = "0.2.12"
|
|
43
43
|
|
|
44
44
|
logging.basicConfig(
|
|
45
45
|
level=logging.INFO,
|
|
@@ -60,7 +60,7 @@ DEFAULT_LLM_BASE_URL = os.getenv("LLM_BASE_URL", "http://host.docker.internal:12
|
|
|
60
60
|
DEFAULT_LLM_API_KEY = os.getenv("LLM_API_KEY", "ollama")
|
|
61
61
|
DEFAULT_MCP_URL = os.getenv("MCP_URL", None)
|
|
62
62
|
DEFAULT_MCP_CONFIG = os.getenv("MCP_CONFIG", get_mcp_config_path())
|
|
63
|
-
|
|
63
|
+
DEFAULT_CUSTOM_SKILLS_DIRECTORY = os.getenv("CUSTOM_SKILLS_DIRECTORY", None)
|
|
64
64
|
DEFAULT_ENABLE_WEB_UI = to_boolean(os.getenv("ENABLE_WEB_UI", "False"))
|
|
65
65
|
DEFAULT_SSL_VERIFY = to_boolean(os.getenv("SSL_VERIFY", "True"))
|
|
66
66
|
|
|
@@ -269,7 +269,7 @@ def create_agent(
|
|
|
269
269
|
api_key: Optional[str] = DEFAULT_LLM_API_KEY,
|
|
270
270
|
mcp_url: str = DEFAULT_MCP_URL,
|
|
271
271
|
mcp_config: str = DEFAULT_MCP_CONFIG,
|
|
272
|
-
|
|
272
|
+
custom_skills_directory: Optional[str] = DEFAULT_CUSTOM_SKILLS_DIRECTORY,
|
|
273
273
|
ssl_verify: bool = DEFAULT_SSL_VERIFY,
|
|
274
274
|
) -> Agent:
|
|
275
275
|
"""
|
|
@@ -328,8 +328,7 @@ def create_agent(
|
|
|
328
328
|
agent_toolsets.extend(mcp_toolset)
|
|
329
329
|
logger.info(f"Connected to MCP Config JSON: {mcp_toolset}")
|
|
330
330
|
|
|
331
|
-
|
|
332
|
-
agent_toolsets.append(SkillsToolset(directories=[str(skills_directory)]))
|
|
331
|
+
# Skills are loaded per-agent based on tags
|
|
333
332
|
|
|
334
333
|
agent_defs = {
|
|
335
334
|
"person": (CONTEXT_AGENT_PROMPT, "GitHub_Context_Agent"),
|
|
@@ -379,6 +378,26 @@ def create_agent(
|
|
|
379
378
|
else:
|
|
380
379
|
pass
|
|
381
380
|
|
|
381
|
+
# Load specific skills for this tag
|
|
382
|
+
skill_dir_name = f"github-{tag.replace('_', '-')}"
|
|
383
|
+
|
|
384
|
+
# Check custom skills directory
|
|
385
|
+
if custom_skills_directory:
|
|
386
|
+
skill_dir_path = os.path.join(custom_skills_directory, skill_dir_name)
|
|
387
|
+
if os.path.exists(skill_dir_path):
|
|
388
|
+
tag_toolsets.append(SkillsToolset(directories=[skill_dir_path]))
|
|
389
|
+
logger.info(
|
|
390
|
+
f"Loaded specialized skills for {tag} from {skill_dir_path}"
|
|
391
|
+
)
|
|
392
|
+
|
|
393
|
+
# Check default skills directory
|
|
394
|
+
default_skill_path = os.path.join(get_skills_path(), skill_dir_name)
|
|
395
|
+
if os.path.exists(default_skill_path):
|
|
396
|
+
tag_toolsets.append(SkillsToolset(directories=[default_skill_path]))
|
|
397
|
+
logger.info(
|
|
398
|
+
f"Loaded specialized skills for {tag} from {default_skill_path}"
|
|
399
|
+
)
|
|
400
|
+
|
|
382
401
|
# Collect tool names for logging
|
|
383
402
|
all_tool_names = []
|
|
384
403
|
for ts in tag_toolsets:
|
|
@@ -698,7 +717,7 @@ def create_agent_server(
|
|
|
698
717
|
api_key: Optional[str] = DEFAULT_LLM_API_KEY,
|
|
699
718
|
mcp_url: str = DEFAULT_MCP_URL,
|
|
700
719
|
mcp_config: str = DEFAULT_MCP_CONFIG,
|
|
701
|
-
|
|
720
|
+
custom_skills_directory: Optional[str] = DEFAULT_CUSTOM_SKILLS_DIRECTORY,
|
|
702
721
|
debug: Optional[bool] = DEFAULT_DEBUG,
|
|
703
722
|
host: Optional[str] = DEFAULT_HOST,
|
|
704
723
|
port: Optional[int] = DEFAULT_PORT,
|
|
@@ -720,14 +739,30 @@ def create_agent_server(
|
|
|
720
739
|
api_key=api_key,
|
|
721
740
|
mcp_url=mcp_url,
|
|
722
741
|
mcp_config=mcp_config,
|
|
723
|
-
|
|
742
|
+
custom_skills_directory=custom_skills_directory,
|
|
724
743
|
ssl_verify=ssl_verify,
|
|
725
744
|
)
|
|
726
745
|
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
746
|
+
# Always load default skills
|
|
747
|
+
|
|
748
|
+
skills = load_skills_from_directory(get_skills_path())
|
|
749
|
+
|
|
750
|
+
logger.info(f"Loaded {len(skills)} default skills from {get_skills_path()}")
|
|
751
|
+
|
|
752
|
+
# Load custom skills if provided
|
|
753
|
+
|
|
754
|
+
if custom_skills_directory and os.path.exists(custom_skills_directory):
|
|
755
|
+
|
|
756
|
+
custom_skills = load_skills_from_directory(custom_skills_directory)
|
|
757
|
+
|
|
758
|
+
skills.extend(custom_skills)
|
|
759
|
+
|
|
760
|
+
logger.info(
|
|
761
|
+
f"Loaded {len(custom_skills)} custom skills from {custom_skills_directory}"
|
|
762
|
+
)
|
|
763
|
+
|
|
764
|
+
if not skills:
|
|
765
|
+
|
|
731
766
|
skills = [
|
|
732
767
|
Skill(
|
|
733
768
|
id="github_agent",
|
|
@@ -844,9 +879,9 @@ def agent_server():
|
|
|
844
879
|
"--mcp-config", default=DEFAULT_MCP_CONFIG, help="MCP Server Config"
|
|
845
880
|
)
|
|
846
881
|
parser.add_argument(
|
|
847
|
-
"--skills-directory",
|
|
848
|
-
default=
|
|
849
|
-
help="Directory containing agent skills",
|
|
882
|
+
"--custom-skills-directory",
|
|
883
|
+
default=DEFAULT_CUSTOM_SKILLS_DIRECTORY,
|
|
884
|
+
help="Directory containing additional custom agent skills",
|
|
850
885
|
)
|
|
851
886
|
parser.add_argument(
|
|
852
887
|
"--web",
|
|
@@ -866,7 +901,7 @@ def agent_server():
|
|
|
866
901
|
|
|
867
902
|
if hasattr(args, "help") and args.help:
|
|
868
903
|
|
|
869
|
-
|
|
904
|
+
parser.print_help()
|
|
870
905
|
|
|
871
906
|
sys.exit(0)
|
|
872
907
|
|
|
@@ -894,7 +929,7 @@ def agent_server():
|
|
|
894
929
|
api_key=args.api_key,
|
|
895
930
|
mcp_url=args.mcp_url,
|
|
896
931
|
mcp_config=args.mcp_config,
|
|
897
|
-
|
|
932
|
+
custom_skills_directory=args.custom_skills_directory,
|
|
898
933
|
debug=args.debug,
|
|
899
934
|
host=args.host,
|
|
900
935
|
port=args.port,
|
|
@@ -903,28 +938,5 @@ def agent_server():
|
|
|
903
938
|
)
|
|
904
939
|
|
|
905
940
|
|
|
906
|
-
def usage():
|
|
907
|
-
print(
|
|
908
|
-
f"Github Agent ({__version__}): CLI Tool\n\n"
|
|
909
|
-
"Usage:\n"
|
|
910
|
-
"--host [ Host to bind the server to ]\n"
|
|
911
|
-
"--port [ Port to bind the server to ]\n"
|
|
912
|
-
"--debug [ Debug mode ]\n"
|
|
913
|
-
"--reload [ Enable auto-reload ]\n"
|
|
914
|
-
"--provider [ LLM Provider ]\n"
|
|
915
|
-
"--model-id [ LLM Model ID ]\n"
|
|
916
|
-
"--base-url [ LLM Base URL (for OpenAI compatible providers) ]\n"
|
|
917
|
-
"--api-key [ LLM API Key ]\n"
|
|
918
|
-
"--mcp-url [ MCP Server URL ]\n"
|
|
919
|
-
"--mcp-config [ MCP Server Config ]\n"
|
|
920
|
-
"--skills-directory [ Directory containing agent skills ]\n"
|
|
921
|
-
"--web [ Enable Pydantic AI Web UI ]\n"
|
|
922
|
-
"\n"
|
|
923
|
-
"Examples:\n"
|
|
924
|
-
" [Simple] github-agent \n"
|
|
925
|
-
' [Complex] github-agent --host "value" --port "value" --debug "value" --reload --provider "value" --model-id "value" --base-url "value" --api-key "value" --mcp-url "value" --mcp-config "value" --skills-directory "value" --web\n'
|
|
926
|
-
)
|
|
927
|
-
|
|
928
|
-
|
|
929
941
|
if __name__ == "__main__":
|
|
930
942
|
agent_server()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: github-agent
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.12
|
|
4
4
|
Summary: GitHub Agent for MCP
|
|
5
5
|
Author-email: Audel Rouhi <knucklessg1@gmail.com>
|
|
6
6
|
License: MIT
|
|
@@ -43,7 +43,7 @@ Dynamic: license-file
|
|
|
43
43
|

|
|
44
44
|

|
|
45
45
|
|
|
46
|
-
*Version: 0.2.
|
|
46
|
+
*Version: 0.2.12*
|
|
47
47
|
|
|
48
48
|
## Overview
|
|
49
49
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|