github-agent 0.8.0__tar.gz → 0.9.0__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.8.0 → github_agent-0.9.0}/PKG-INFO +3 -3
- {github_agent-0.8.0 → github_agent-0.9.0}/README.md +1 -1
- {github_agent-0.8.0 → github_agent-0.9.0}/github_agent/agent_server.py +1 -1
- {github_agent-0.8.0 → github_agent-0.9.0}/github_agent.egg-info/PKG-INFO +3 -3
- {github_agent-0.8.0 → github_agent-0.9.0}/github_agent.egg-info/SOURCES.txt +1 -0
- github_agent-0.9.0/github_agent.egg-info/requires.txt +5 -0
- {github_agent-0.8.0 → github_agent-0.9.0}/github_agent.egg-info/top_level.txt +1 -0
- {github_agent-0.8.0 → github_agent-0.9.0}/pyproject.toml +2 -2
- github_agent-0.9.0/tests/test_concept_parity.py +79 -0
- github_agent-0.8.0/github_agent.egg-info/requires.txt +0 -5
- {github_agent-0.8.0 → github_agent-0.9.0}/LICENSE +0 -0
- {github_agent-0.8.0 → github_agent-0.9.0}/github_agent/__init__.py +0 -0
- {github_agent-0.8.0 → github_agent-0.9.0}/github_agent/__main__.py +0 -0
- {github_agent-0.8.0 → github_agent-0.9.0}/github_agent/api_client.py +0 -0
- {github_agent-0.8.0 → github_agent-0.9.0}/github_agent/auth.py +0 -0
- {github_agent-0.8.0 → github_agent-0.9.0}/github_agent/github_input_models.py +0 -0
- {github_agent-0.8.0 → github_agent-0.9.0}/github_agent/github_response_models.py +0 -0
- {github_agent-0.8.0 → github_agent-0.9.0}/github_agent/mcp_config.json +0 -0
- {github_agent-0.8.0 → github_agent-0.9.0}/github_agent/mcp_server.py +0 -0
- {github_agent-0.8.0 → github_agent-0.9.0}/github_agent.egg-info/dependency_links.txt +0 -0
- {github_agent-0.8.0 → github_agent-0.9.0}/github_agent.egg-info/entry_points.txt +0 -0
- {github_agent-0.8.0 → github_agent-0.9.0}/scripts/validate_a2a_agent.py +0 -0
- {github_agent-0.8.0 → github_agent-0.9.0}/setup.cfg +0 -0
- {github_agent-0.8.0 → github_agent-0.9.0}/tests/test_github_agent_api_brute_force_coverage.py +0 -0
- {github_agent-0.8.0 → github_agent-0.9.0}/tests/test_github_agent_brute_force_coverage.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: github-agent
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.9.0
|
|
4
4
|
Summary: GitHub Agent for MCP
|
|
5
5
|
Author-email: Audel Rouhi <knucklessg1@gmail.com>
|
|
6
6
|
License: MIT
|
|
@@ -12,7 +12,7 @@ Classifier: Programming Language :: Python :: 3
|
|
|
12
12
|
Requires-Python: <3.14,>=3.11
|
|
13
13
|
Description-Content-Type: text/markdown
|
|
14
14
|
License-File: LICENSE
|
|
15
|
-
Requires-Dist: agent-utilities[agent,logfire]>=0.
|
|
15
|
+
Requires-Dist: agent-utilities[agent,logfire]>=0.9.0
|
|
16
16
|
Provides-Extra: test
|
|
17
17
|
Requires-Dist: pytest; extra == "test"
|
|
18
18
|
Requires-Dist: pytest-asyncio; extra == "test"
|
|
@@ -41,7 +41,7 @@ Dynamic: license-file
|
|
|
41
41
|

|
|
42
42
|

|
|
43
43
|
|
|
44
|
-
*Version: 0.
|
|
44
|
+
*Version: 0.9.0*
|
|
45
45
|
|
|
46
46
|
## Overview
|
|
47
47
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: github-agent
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.9.0
|
|
4
4
|
Summary: GitHub Agent for MCP
|
|
5
5
|
Author-email: Audel Rouhi <knucklessg1@gmail.com>
|
|
6
6
|
License: MIT
|
|
@@ -12,7 +12,7 @@ Classifier: Programming Language :: Python :: 3
|
|
|
12
12
|
Requires-Python: <3.14,>=3.11
|
|
13
13
|
Description-Content-Type: text/markdown
|
|
14
14
|
License-File: LICENSE
|
|
15
|
-
Requires-Dist: agent-utilities[agent,logfire]>=0.
|
|
15
|
+
Requires-Dist: agent-utilities[agent,logfire]>=0.9.0
|
|
16
16
|
Provides-Extra: test
|
|
17
17
|
Requires-Dist: pytest; extra == "test"
|
|
18
18
|
Requires-Dist: pytest-asyncio; extra == "test"
|
|
@@ -41,7 +41,7 @@ Dynamic: license-file
|
|
|
41
41
|

|
|
42
42
|

|
|
43
43
|
|
|
44
|
-
*Version: 0.
|
|
44
|
+
*Version: 0.9.0*
|
|
45
45
|
|
|
46
46
|
## Overview
|
|
47
47
|
|
|
@@ -17,5 +17,6 @@ github_agent.egg-info/entry_points.txt
|
|
|
17
17
|
github_agent.egg-info/requires.txt
|
|
18
18
|
github_agent.egg-info/top_level.txt
|
|
19
19
|
scripts/validate_a2a_agent.py
|
|
20
|
+
tests/test_concept_parity.py
|
|
20
21
|
tests/test_github_agent_api_brute_force_coverage.py
|
|
21
22
|
tests/test_github_agent_brute_force_coverage.py
|
|
@@ -4,12 +4,12 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "github-agent"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.9.0"
|
|
8
8
|
readme = "README.md"
|
|
9
9
|
description = "GitHub Agent for MCP"
|
|
10
10
|
requires-python = ">=3.11, <3.14"
|
|
11
11
|
classifiers = [ "Development Status :: 5 - Production/Stable", "License :: Public Domain", "Environment :: Console", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3",]
|
|
12
|
-
dependencies = [ "agent-utilities[agent,logfire]>=0.
|
|
12
|
+
dependencies = [ "agent-utilities[agent,logfire]>=0.9.0",]
|
|
13
13
|
[[project.authors]]
|
|
14
14
|
name = "Audel Rouhi"
|
|
15
15
|
email = "knucklessg1@gmail.com"
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import re
|
|
3
|
+
|
|
4
|
+
import pytest
|
|
5
|
+
|
|
6
|
+
# Paths
|
|
7
|
+
ROOT_DIR = '/home/apps/workspace/agent-packages/agents/github-agent'
|
|
8
|
+
WORKSPACE_DIR = '/home/apps/workspace/agent-packages'
|
|
9
|
+
MASTER_OVERVIEW_PATH = os.path.join(WORKSPACE_DIR, 'agent-utilities', 'docs', 'overview.md')
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def extract_concepts_from_overview(filepath):
|
|
13
|
+
"""Extracts concepts from the markdown table in the master overview.md"""
|
|
14
|
+
if not os.path.exists(filepath):
|
|
15
|
+
return set()
|
|
16
|
+
|
|
17
|
+
concepts = set()
|
|
18
|
+
with open(filepath, 'r', encoding='utf-8') as f:
|
|
19
|
+
for line in f:
|
|
20
|
+
if not line.strip().startswith('|'):
|
|
21
|
+
continue
|
|
22
|
+
if 'Pillar | Sub-Concept' in line or '|---|' in line:
|
|
23
|
+
continue
|
|
24
|
+
|
|
25
|
+
parts = [p.strip() for p in line.split('|')]
|
|
26
|
+
if len(parts) >= 5:
|
|
27
|
+
raw_id = parts[1].replace('*', '').strip()
|
|
28
|
+
if re.match(r'^[A-Z]+-\d+(?:\.\d+)?$', raw_id):
|
|
29
|
+
concepts.add(raw_id)
|
|
30
|
+
return concepts
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def extract_concepts_from_codebase(directory):
|
|
34
|
+
"""Recursively scans source files in the project for CONCEPT:ID tags."""
|
|
35
|
+
found_concepts = set()
|
|
36
|
+
for root, _, files in os.walk(directory):
|
|
37
|
+
if 'node_modules' in root or '.venv' in root or '.git' in root or '__pycache__' in root:
|
|
38
|
+
continue
|
|
39
|
+
|
|
40
|
+
for file in files:
|
|
41
|
+
if file.endswith(('.py', '.ts', '.tsx', '.md')):
|
|
42
|
+
filepath = os.path.join(root, file)
|
|
43
|
+
try:
|
|
44
|
+
with open(filepath, 'r', encoding='utf-8') as f:
|
|
45
|
+
content = f.read()
|
|
46
|
+
matches = re.findall(r'CONCEPT:([A-Z]+-\d+(?:\.\d+)?)', content)
|
|
47
|
+
found_concepts.update(matches)
|
|
48
|
+
except Exception:
|
|
49
|
+
pass
|
|
50
|
+
return found_concepts
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def test_concept_parity():
|
|
54
|
+
"""
|
|
55
|
+
Enforces that all concepts documented or used in github-agent
|
|
56
|
+
exist in the master agent-utilities registry.
|
|
57
|
+
"""
|
|
58
|
+
master_concepts = extract_concepts_from_overview(MASTER_OVERVIEW_PATH)
|
|
59
|
+
|
|
60
|
+
# Extract concepts from this project
|
|
61
|
+
local_codebase_concepts = extract_concepts_from_codebase(ROOT_DIR)
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
# Only enforce parity for agent-utilities 5-Pillar concepts
|
|
65
|
+
# Project-specific concepts (SX-*, AU-*, CE-*, TP-*, CA-*, etc.) are excluded
|
|
66
|
+
agent_utilities_pillars = ('ORCH-', 'KG-', 'AHE-', 'ECO-', 'OS-')
|
|
67
|
+
local_codebase_concepts = {c for c in local_codebase_concepts if c.startswith(agent_utilities_pillars)}
|
|
68
|
+
|
|
69
|
+
# Ignore legacy KG-00x concepts
|
|
70
|
+
local_codebase_concepts = {c for c in local_codebase_concepts if not c.startswith('KG-00')}
|
|
71
|
+
|
|
72
|
+
# Ensure every concept used locally is registered in the master overview.md
|
|
73
|
+
unregistered_concepts = local_codebase_concepts - master_concepts
|
|
74
|
+
|
|
75
|
+
assert not unregistered_concepts, (
|
|
76
|
+
f"The following concepts are used in github-agent but are NOT registered "
|
|
77
|
+
f"in the master agent-utilities/docs/overview.md registry: {unregistered_concepts}. "
|
|
78
|
+
f"Please register them first."
|
|
79
|
+
)
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{github_agent-0.8.0 → github_agent-0.9.0}/tests/test_github_agent_api_brute_force_coverage.py
RENAMED
|
File without changes
|
|
File without changes
|