github-agent 2.4.0__py3-none-any.whl → 2.4.2__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.
github_agent/__init__.py CHANGED
@@ -1 +1 @@
1
- __version__ = "2.4.0"
1
+ __version__ = "2.4.2"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "algorithm": "agent-connector-sdk:mcp-tool-contract-compat:v2",
3
- "connector": "github-agent",
3
+ "connector": "github-mcp",
4
4
  "schema_version": "1",
5
5
  "tools": {
6
6
  "github_get_repositories": "ec6c06fe206534df752bc4035d4cf81c952d448441a7e9271b800175357c3360"
github_agent/kg_ingest.py CHANGED
@@ -35,8 +35,8 @@ from agent_connector_sdk.ingest import (
35
35
 
36
36
  logger = logging.getLogger("github_agent.kg")
37
37
 
38
- _ENTITY_BINDING = IngestBinding(connector="github-agent", stream="github")
39
- _DOCUMENT_BINDING = IngestBinding(connector="github-agent", stream="github-documents")
38
+ _ENTITY_BINDING = IngestBinding(connector="github-mcp", stream="github")
39
+ _DOCUMENT_BINDING = IngestBinding(connector="github-mcp", stream="github-documents")
40
40
 
41
41
 
42
42
  def _to_entity(record: dict[str, Any]) -> Entity:
@@ -39,7 +39,7 @@ from github_agent.auth import (
39
39
  )
40
40
  from github_agent.github_response_models import PagesAlreadyEnabled, PagesNotEnabled
41
41
 
42
- __version__ = "2.4.0"
42
+ __version__ = "2.4.2"
43
43
  logger = get_logger("GithubMCPServer")
44
44
  logger.setLevel(logging.INFO)
45
45
 
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "api_version": "arbora.io/v1",
3
3
  "artifacts": {
4
- "connector_manifest.yml": "412bbd8242cdac75754d89b9cc1fa81cec7c2f70e2b29f822eca336b1f725f25",
4
+ "connector_manifest.yml": "8c377374f2ab87e99a765d3340b269b312ae6aa971c91ebe874b3dbf8f76b358",
5
5
  "github_agent/connectors/mcp_source_presets.json": "312ec35c48d40253afcd8dba445afee9f41b5ac910e11a435d7c02ee63b5967f",
6
- "github_agent/connectors/tool_schema_fingerprints.json": "c80f708a9aac0ec9dd4352be0db40295f203f734b88193ce7f03b6c41f07be6e",
6
+ "github_agent/connectors/tool_schema_fingerprints.json": "36982e09c3dba96cc187fc6cd99431deb4899b24399e3b8dc206f228cb980ce7",
7
7
  "github_agent/ontology/fixtures/records.json": "12f5b54b0ae98770f279f99e136788d063340042a9d6ff4bac0c22a886d2dc7b",
8
8
  "github_agent/ontology/github.ttl": "ad0ad6d295143b38725866b5b5c59a824f10bfc4219794ac2d9a2274f11bbdb5",
9
9
  "github_agent/ontology/mappings/source.yaml": "7ff7a37550f825a61fe6d0f9529206f4efe2727431e32b8ab95a39a32bdced43",
@@ -22,7 +22,7 @@
22
22
  "bundle_schema": "2",
23
23
  "epistemic_graph": ">=2.27.0,<3"
24
24
  },
25
- "connector": "github-agent",
25
+ "connector": "github-mcp",
26
26
  "kind": "ConnectorSourceAttestation",
27
27
  "live_certified": false,
28
28
  "mode": "offline-source",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: github-agent
3
- Version: 2.4.0
3
+ Version: 2.4.2
4
4
  Summary: GitHub Agent for MCP
5
5
  Author-email: Project Maintainers <maintainers@users.noreply.github.com>
6
6
  License: MIT
@@ -14,7 +14,7 @@ Description-Content-Type: text/markdown
14
14
  License-File: LICENSE
15
15
  Requires-Dist: gql[requests]>=4.4.0
16
16
  Requires-Dist: requests>=2.34.2
17
- Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.0
17
+ Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.11
18
18
  Provides-Extra: mcp
19
19
  Provides-Extra: all
20
20
  Provides-Extra: test
@@ -45,7 +45,7 @@ Dynamic: license-file
45
45
  ![PyPI - Wheel](https://img.shields.io/pypi/wheel/github-agent)
46
46
  ![PyPI - Implementation](https://img.shields.io/pypi/implementation/github-agent)
47
47
 
48
- *Version: 2.4.0*
48
+ *Version: 2.4.2*
49
49
 
50
50
  > **Documentation** — Installation, deployment, and usage across the MCP, API, and
51
51
  > [official documentation](https://knuckles-team.github.io/github-agent/).
@@ -1,4 +1,4 @@
1
- github_agent/__init__.py,sha256=yLaFvd-K80rs_ClRVYULStijkok4RfYSaanIt_E-aKM,22
1
+ github_agent/__init__.py,sha256=mbr1x0lgwkkOTfP8_pmHp21dDLicZtB6g0722CdAIlc,22
2
2
  github_agent/__main__.py,sha256=O4Xg__fMvKfUsA6m61pLV56jlYY6EORiLhgDLlp0vJ8,92
3
3
  github_agent/api_client.py,sha256=O69YfkXBKyVd59EC8szaMlw3_ZxwEEvsLSvhWlfYnvk,1581
4
4
  github_agent/auth.py,sha256=isNd6DYbl_syB_wIbC399d_-157jqH1jqJfDmBn8h-0,4671
@@ -6,9 +6,9 @@ github_agent/github_gql.py,sha256=GdkazLUDRwu5AKv2cikT8evpQAGHD1nBZ4f4BtJ2f84,53
6
6
  github_agent/github_http.py,sha256=O6VJMG3f-o-rMdOglvYnSBnfrGdHOSx0XiIOHYBKyso,4203
7
7
  github_agent/github_input_models.py,sha256=yqqPGHb206th736MZvbnxq9F1JRsBUBODNeNVc08F3A,15568
8
8
  github_agent/github_response_models.py,sha256=mllSt0frBgzklUtfuHywJ2Ald3m99So948Xikt3H2Tc,8859
9
- github_agent/kg_ingest.py,sha256=tMCy8jz8bAEEld_AhTSifdgvSsnBTrp_9DKSmworsuQ,17982
9
+ github_agent/kg_ingest.py,sha256=iH_NKpd8a6GtNxfZTp8Oah8VZkcXjI74KDf8P9NbtjA,17978
10
10
  github_agent/mcp_config.json,sha256=2OOXrwO1sDLyHQqpZwhvDHizPIe3by6YmK4KFE333gI,23
11
- github_agent/mcp_server.py,sha256=QhaJuYIYBVCAWNFZ9jum0ejPERQgg3PdlLqHSm-oKcI,126620
11
+ github_agent/mcp_server.py,sha256=Pby9Cq3fvNbb0g8x6ndM6X1iWfis3MJAw8wmHloS9A4,126620
12
12
  github_agent/api/__init__.py,sha256=ntaEPqk-dsAV3HyyDLc2hYpc9nTTyG5CKI-SVDDjc24,27
13
13
  github_agent/api/api_client_base.py,sha256=tMXKrZIXg6aQ6OK4kNKBDcNc8BrM0Vml_66SwA5ZgEw,7485
14
14
  github_agent/api/api_client_branches.py,sha256=bCmqGUWQ27GFTGxcFkQ7D-ZEltKp6APVsk_Fw9wzdjY,3940
@@ -26,7 +26,7 @@ github_agent/api/api_client_search.py,sha256=zWFexkXZYFzDvWackxM33uWdEDYsA54lWlO
26
26
  github_agent/api/api_client_workflows.py,sha256=Y6iHgLujZksI9jAZb1tkFnEv3f-l4bd-fiUtSu3vVw4,5799
27
27
  github_agent/connectors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
28
  github_agent/connectors/mcp_source_presets.json,sha256=MS7DXEjUAlOvzY26RFr-6fQbWskQ4RpDXXwC7mO1ln8,699
29
- github_agent/connectors/tool_schema_fingerprints.json,sha256=yA9wipqsDsndQ1K-DbQClfID9zS4gZPOfwO2xB8Hvm4,241
29
+ github_agent/connectors/tool_schema_fingerprints.json,sha256=NpguCcPbqWzBh_xs2ZQx3rSJmyQ5njuNwgbyKMuYDOc,239
30
30
  github_agent/mcp/__init__.py,sha256=mO-LvCC1TIs-T9f7oDToOq7LsZUMx04Aa3h0LjIi6eA,1290
31
31
  github_agent/mcp/mcp_action.py,sha256=oz3CcAMw8Uc_MC7us_pUn4nbwdNqR_ePIjDzckID5Wo,9583
32
32
  github_agent/mcp/mcp_branch.py,sha256=lACUOIPRPiLD9lv4DzKJ2n9IvOsq97mHk8lxTat1zWk,4785
@@ -41,7 +41,7 @@ github_agent/mcp/mcp_release.py,sha256=WnuZ2wjcTBVl8Jzog_4a9HjbxDAh6aXdN-mdzDUZt
41
41
  github_agent/mcp/mcp_repo.py,sha256=ny5GdawCFZxlbjpOc3ttnn-NIs9QDQLAxRdAWEWLUdc,18344
42
42
  github_agent/mcp/mcp_search.py,sha256=3ZBGNKkVu5oBXgN9MBWd-ve4NDCzcwP9sY22bp4hqKs,2963
43
43
  github_agent/ontology/__init__.py,sha256=-qc7ZPSgdaCLrD1AH_7TFXWikEpSH9rVmBciCC9gtCY,552
44
- github_agent/ontology/certification.json,sha256=Fisfx2auUAisXHeN8AiNxMj9LHZOoGhqve5baWnSc9I,1666
44
+ github_agent/ontology/certification.json,sha256=nUT_C-AtTjtb4bDAs3cDT2vlk7kK_8RPFfbyIWXCMw0,1664
45
45
  github_agent/ontology/github.ttl,sha256=socWm6ST7jnTqZFxurxYdNIY1Ivx6JaW7MiJiX3-onk,9154
46
46
  github_agent/ontology/fixtures/records.json,sha256=EvW1Swrph3DyefmeE2eI0GM0AEKp1v9LrAwiqIbS3Hs,543
47
47
  github_agent/ontology/mappings/source.yaml,sha256=f_ejdVD4JaYf5tD5UpIG9O_icnQx4yuKuVo5oyvc7UM,533
@@ -92,7 +92,7 @@ github_agent/skills/github-triage-resolver/WORKFLOW.md,sha256=orvcRmaV-qb_JKoGSw
92
92
  github_agent/skills/github-triage-resolver/references/resolution-rules.md,sha256=lGPvfLCSHpNIeh2rKWcH2k_2lla3ovgBxzwvtMmyQ-0,4133
93
93
  github_agent/skills/github-triage-resolver/scripts/classify_safe.py,sha256=8BhcDF9Q8rjJIEVOmdyO-dO-eHBjW7T-bzaYC16uY5I,9556
94
94
  github_agent/skills/github-triage-resolver/scripts/gh_write.py,sha256=SL5oA1A3lFRLepNri4CzEcuEsg9D5WKJ1000fCRKBEM,4125
95
- github_agent-2.4.0.dist-info/licenses/LICENSE,sha256=5ALbh4fIALWVsUhO7q1nFT1bQb-CL9sWKf7p3GgLEG8,1070
95
+ github_agent-2.4.2.dist-info/licenses/LICENSE,sha256=5ALbh4fIALWVsUhO7q1nFT1bQb-CL9sWKf7p3GgLEG8,1070
96
96
  scripts/security_sanitizer.py,sha256=gE65xtYMGx43oYUnK0kozBm73Hx97mCdrQUM7GGzIbk,9449
97
97
  scripts/verify_api_integration.py,sha256=3AK8HKW52o1yxCDaEUtXngnh7CjYw6NiG9Eb3EIoXNE,10256
98
98
  tests/conftest.py,sha256=kgpOLUp_q8IZaI6Xd7F1tbFuio81-_l5Gd4jaGiMrnY,3636
@@ -101,13 +101,14 @@ tests/test_api_client_endpoints.py,sha256=Hbw0vssQU5Up-KvJmUDLDCP4t2u8pU-xPfWAhF
101
101
  tests/test_api_validation.py,sha256=CRZq7kfc1U8CLZJRTGusBhTN2Tlfc1FIeDqIm895XoI,3301
102
102
  tests/test_auth_client_edge_cases.py,sha256=QjQAtjd7vDDsSSvIZuUXbd9Z58te8Xp9giPFmwJTBsA,6470
103
103
  tests/test_comment_crud.py,sha256=mHA0scds_0W0oND-VI0QMvNaYarYkHjiXd4H9-9d5kE,27341
104
+ tests/test_fleet_name.py,sha256=qCLzYTPuiaS3y0I0NLuMRloXlf_o0sue0aVH-Sn-tYQ,1893
104
105
  tests/test_github_agent_api_brute_force_coverage.py,sha256=5jWW6oVU7cmXL2sS3OZ-3gbYGhyjlYPIWqH2rsdF2fw,7347
105
106
  tests/test_github_agent_brute_force_coverage.py,sha256=Z_voXtChOYRqaNEmNzMfzvwQMj2xFBn1m8mXx5ubUe8,4849
106
107
  tests/test_github_gql.py,sha256=mpn814s9UhN4jnlp1TB8XE3OZ04adR9nhfPM9j0Gpyc,1892
107
108
  tests/test_github_http.py,sha256=HcWWZsQ7ATdcWpQCTJdNDJkiwiwgujO4JgjNE1Ls64U,6977
108
109
  tests/test_hardening.py,sha256=sdlKmtk7B5yncc-r1LuFgoJfro6wNlCqY0xI73IVC4M,3710
109
110
  tests/test_init_dynamics.py,sha256=fPE_4M-bONKiqvtWLn12A0q18CUlzQhdx1UoXYkbbPk,1839
110
- tests/test_kg_ingest.py,sha256=DrTfBlHncZLyrhAWcYyWiVxVOiqI9r8f8gG2CtBJFns,9432
111
+ tests/test_kg_ingest.py,sha256=TeHjWz74LiuSxpI7N6HHrdj0H1mRsJHceQDNYvre4To,9462
111
112
  tests/test_mcp_coverage.py,sha256=W_7fbCWoFd4mDwKvah2DmQRcy0fD7tI4ykFTne69tNM,43550
112
113
  tests/test_mcp_package_dispatch.py,sha256=mzrC-jGl3DlrQx9z5uIxy1m0x9qsxfMo6eJImx844WY,22993
113
114
  tests/test_model_fields.py,sha256=GvVFFedjdL0KBl328-NZ0SM6olv7muiglsMh0Vd59As,3388
@@ -122,8 +123,8 @@ tests/test_skill_org_remediation_classify_fix_risk.py,sha256=0Y8289lhxtJ3pxYUHzO
122
123
  tests/test_skill_pr_review_sweep_summarize_prs.py,sha256=NrNaucQvM7K-k1WBcOBKtTGjxJbW16VgTHbC7dSsjm4,3821
123
124
  tests/test_skill_triage_resolver_classify_safe.py,sha256=B-aDeVmsKTsxYO8TwMEx-cmpVSmZdlKXw5993Da2ubc,9489
124
125
  tests/test_startup.py,sha256=Ix_g69k0tsZbY0-Vkeh8ADWojUdbYwTwwmnM4_hVuCc,1245
125
- github_agent-2.4.0.dist-info/METADATA,sha256=jEkDUGpzEfBzovgUCRTqyyoo40fsKSiTesubU-GEHqk,34535
126
- github_agent-2.4.0.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
127
- github_agent-2.4.0.dist-info/entry_points.txt,sha256=HGhTmPWGQVM2uJ-RfkiYdIYasr4coyzet1qKhR4AcOg,308
128
- github_agent-2.4.0.dist-info/top_level.txt,sha256=53Ecr8n7o_EMIqZClc11PBU07uQIggYZOk5WnvBbeOQ,50
129
- github_agent-2.4.0.dist-info/RECORD,,
126
+ github_agent-2.4.2.dist-info/METADATA,sha256=ndyRNAwv-Ni3rAICI9ghfNU3CQ0ItGzeC52p7GoOa4M,34536
127
+ github_agent-2.4.2.dist-info/WHEEL,sha256=mOdXR9C3wMVov7cSY8PY-XCzo3SmmWCHvGQr5csJoao,91
128
+ github_agent-2.4.2.dist-info/entry_points.txt,sha256=Wi6GhziOqmJl-22qTYkjfVuIHEHKRrBvyyloc7NqV80,367
129
+ github_agent-2.4.2.dist-info/top_level.txt,sha256=53Ecr8n7o_EMIqZClc11PBU07uQIggYZOk5WnvBbeOQ,50
130
+ github_agent-2.4.2.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (84.0.0)
2
+ Generator: setuptools (84.2.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,3 +1,6 @@
1
+ [agent_connector_sdk.connector]
2
+ github-mcp = github_agent
3
+
1
4
  [agent_connector_sdk.ontology_providers]
2
5
  github-agent = github_agent.ontology
3
6
 
@@ -0,0 +1,53 @@
1
+ """CONN-GITHUB-AGENT-CONNECTOR-IDENTITY-R001: the connector is filed under its fleet name, github-mcp."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import ast
6
+ import json
7
+ import re
8
+ import tomllib
9
+ from pathlib import Path
10
+
11
+ import pytest
12
+
13
+ ROOT = Path(__file__).resolve().parents[1]
14
+ PACKAGE = ROOT / "github_agent"
15
+ FLEET = "github-mcp"
16
+
17
+
18
+ def _call_connectors(path: Path) -> list[str]:
19
+ names = []
20
+ for node in ast.walk(ast.parse(path.read_text(encoding="utf-8"))):
21
+ if isinstance(node, ast.Call) and getattr(
22
+ node.func, "id", getattr(node.func, "attr", "")
23
+ ) in {
24
+ "IngestBinding",
25
+ "ConnectorContent",
26
+ }:
27
+ names += [
28
+ str(k.value.value)
29
+ for k in node.keywords
30
+ if k.arg == "connector" and isinstance(k.value, ast.Constant)
31
+ ]
32
+ return names
33
+
34
+
35
+ @pytest.mark.spec("CONN-GITHUB-AGENT-CONNECTOR-IDENTITY-R001")
36
+ def test_connector_name_is_the_fleet_name() -> None:
37
+ pyproject = tomllib.loads((ROOT / "pyproject.toml").read_text(encoding="utf-8"))
38
+ assert pyproject["project"]["entry-points"]["agent_connector_sdk.connector"] == {
39
+ FLEET: "github_agent"
40
+ }
41
+ manifest_path = PACKAGE / "connector_manifest.yml"
42
+ if not manifest_path.is_file():
43
+ manifest_path = ROOT / "connector_manifest.yml"
44
+ manifest = manifest_path.read_text(encoding="utf-8")
45
+ match = re.search(r'^\s*"?connector"?\s*:\s*"?([^"\s,]+)', manifest, re.MULTILINE)
46
+ assert match is not None and match.group(1) == FLEET
47
+ fingerprints = PACKAGE / "connectors" / "tool_schema_fingerprints.json"
48
+ if fingerprints.is_file():
49
+ assert (
50
+ json.loads(fingerprints.read_text(encoding="utf-8"))["connector"] == FLEET
51
+ )
52
+ for module in sorted(PACKAGE.glob("*.py")):
53
+ assert all(name == FLEET for name in _call_connectors(module)), module.name
tests/test_kg_ingest.py CHANGED
@@ -29,6 +29,7 @@ class _FakeTransport:
29
29
  self.requests: list[Any] = []
30
30
 
31
31
  async def source_status(self, connector: str, stream: str) -> Any:
32
+ del connector, stream
32
33
  return SimpleNamespace(accepted_checkpoint=None)
33
34
 
34
35
  async def submit(self, request: Any) -> Any: