github-agent 2.4.8__py3-none-any.whl → 2.4.9__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.8"
1
+ __version__ = "2.4.9"
@@ -0,0 +1,224 @@
1
+ """Data sources of this connector, declared by tool name (generated by connector-ontology-map migrate).
2
+
3
+ Served live as ``connector://resources``. Regenerate by editing the declarations, not the tools.
4
+ """
5
+
6
+ # ruff: noqa: E501
7
+ from __future__ import annotations
8
+
9
+ from agent_connector_sdk.ingest.live_declaration import source_meta
10
+ from agent_connector_sdk.ingest.sources import IngestSourceDeclaration, IngestSourceSpec
11
+
12
+ CONNECTOR = "github-mcp"
13
+
14
+ SOURCES = (
15
+ source_meta(
16
+ tool="github_get_repositories",
17
+ source_id="github-repositories",
18
+ record_type="repository",
19
+ id_field="id",
20
+ cursor_field="updated_at",
21
+ page_param="page",
22
+ page_size_param="per_page",
23
+ pagination="page",
24
+ preset={
25
+ "doc_type": "repository",
26
+ "page_kind": "page",
27
+ },
28
+ records_path="data",
29
+ server="github-mcp",
30
+ text_field="description",
31
+ title_field="full_name",
32
+ ),
33
+ source_meta(
34
+ tool="github_search_issues",
35
+ source_id="issues",
36
+ record_type="Issue",
37
+ id_field="id",
38
+ arguments={
39
+ "max_pages": 1,
40
+ "per_page": 50,
41
+ "q": "is:issue is:open involves:@me",
42
+ },
43
+ cursor_field="updated_at",
44
+ description="Open GitHub issues involving the authenticated user (first 50).",
45
+ records_path="data.items",
46
+ text_field="body",
47
+ title_field="title",
48
+ ),
49
+ )
50
+
51
+ SCHEMA_MAPPINGS = {
52
+ "CheckRun": {
53
+ "fields": {
54
+ "completedAt": "xsd:dateTime",
55
+ "conclusion": "xsd:string",
56
+ "defaultBranch": "xsd:string",
57
+ "durationSeconds": "xsd:integer",
58
+ "event": "xsd:string",
59
+ "fullName": "xsd:string",
60
+ "headBranch": "xsd:string",
61
+ "headSha": "xsd:string",
62
+ "htmlUrl": "xsd:string",
63
+ "isDraft": "xsd:boolean",
64
+ "isPrivate": "xsd:boolean",
65
+ "number": "xsd:integer",
66
+ "runStartedAt": "xsd:dateTime",
67
+ "runStatus": "xsd:string",
68
+ "runUpdatedAt": "xsd:dateTime",
69
+ "sha": "xsd:string",
70
+ "startedAt": "xsd:dateTime",
71
+ "state": "xsd:string",
72
+ "status": "xsd:string",
73
+ "tagName": "xsd:string",
74
+ },
75
+ "ontology_class": "PipelineRun",
76
+ },
77
+ "Issue": {
78
+ "fields": {
79
+ "completedAt": "xsd:dateTime",
80
+ "conclusion": "xsd:string",
81
+ "defaultBranch": "xsd:string",
82
+ "durationSeconds": "xsd:integer",
83
+ "event": "xsd:string",
84
+ "fullName": "xsd:string",
85
+ "headBranch": "xsd:string",
86
+ "headSha": "xsd:string",
87
+ "htmlUrl": "xsd:string",
88
+ "isDraft": "xsd:boolean",
89
+ "isPrivate": "xsd:boolean",
90
+ "number": "xsd:integer",
91
+ "runStartedAt": "xsd:dateTime",
92
+ "runStatus": "xsd:string",
93
+ "runUpdatedAt": "xsd:dateTime",
94
+ "sha": "xsd:string",
95
+ "startedAt": "xsd:dateTime",
96
+ "state": "xsd:string",
97
+ "status": "xsd:string",
98
+ "tagName": "xsd:string",
99
+ },
100
+ "ontology_class": "WorkItem",
101
+ },
102
+ "Organization": {
103
+ "fields": {
104
+ "completedAt": "xsd:dateTime",
105
+ "conclusion": "xsd:string",
106
+ "defaultBranch": "xsd:string",
107
+ "durationSeconds": "xsd:integer",
108
+ "event": "xsd:string",
109
+ "fullName": "xsd:string",
110
+ "headBranch": "xsd:string",
111
+ "headSha": "xsd:string",
112
+ "htmlUrl": "xsd:string",
113
+ "isDraft": "xsd:boolean",
114
+ "isPrivate": "xsd:boolean",
115
+ "number": "xsd:integer",
116
+ "runStartedAt": "xsd:dateTime",
117
+ "runStatus": "xsd:string",
118
+ "runUpdatedAt": "xsd:dateTime",
119
+ "sha": "xsd:string",
120
+ "startedAt": "xsd:dateTime",
121
+ "state": "xsd:string",
122
+ "status": "xsd:string",
123
+ "tagName": "xsd:string",
124
+ },
125
+ "ontology_class": "Organization",
126
+ },
127
+ "Workflow": {
128
+ "fields": {
129
+ "completedAt": "xsd:dateTime",
130
+ "conclusion": "xsd:string",
131
+ "defaultBranch": "xsd:string",
132
+ "durationSeconds": "xsd:integer",
133
+ "event": "xsd:string",
134
+ "fullName": "xsd:string",
135
+ "headBranch": "xsd:string",
136
+ "headSha": "xsd:string",
137
+ "htmlUrl": "xsd:string",
138
+ "isDraft": "xsd:boolean",
139
+ "isPrivate": "xsd:boolean",
140
+ "number": "xsd:integer",
141
+ "runStartedAt": "xsd:dateTime",
142
+ "runStatus": "xsd:string",
143
+ "runUpdatedAt": "xsd:dateTime",
144
+ "sha": "xsd:string",
145
+ "startedAt": "xsd:dateTime",
146
+ "state": "xsd:string",
147
+ "status": "xsd:string",
148
+ "tagName": "xsd:string",
149
+ },
150
+ "ontology_class": "Action",
151
+ },
152
+ "WorkflowRun": {
153
+ "fields": {
154
+ "completedAt": "xsd:dateTime",
155
+ "conclusion": "xsd:string",
156
+ "defaultBranch": "xsd:string",
157
+ "durationSeconds": "xsd:integer",
158
+ "event": "xsd:string",
159
+ "fullName": "xsd:string",
160
+ "headBranch": "xsd:string",
161
+ "headSha": "xsd:string",
162
+ "htmlUrl": "xsd:string",
163
+ "isDraft": "xsd:boolean",
164
+ "isPrivate": "xsd:boolean",
165
+ "number": "xsd:integer",
166
+ "runStartedAt": "xsd:dateTime",
167
+ "runStatus": "xsd:string",
168
+ "runUpdatedAt": "xsd:dateTime",
169
+ "sha": "xsd:string",
170
+ "startedAt": "xsd:dateTime",
171
+ "state": "xsd:string",
172
+ "status": "xsd:string",
173
+ "tagName": "xsd:string",
174
+ },
175
+ "ontology_class": "PipelineRun",
176
+ },
177
+ }
178
+
179
+ RESOURCES = (
180
+ {
181
+ "id_prefix": "checkrun",
182
+ "label": "Check Run",
183
+ "name": "CheckRun",
184
+ },
185
+ {
186
+ "id_prefix": "issue",
187
+ "label": "Issue",
188
+ "name": "Issue",
189
+ },
190
+ {
191
+ "id_prefix": "organization",
192
+ "label": "Organization",
193
+ "name": "Organization",
194
+ },
195
+ {
196
+ "id_prefix": "workflow",
197
+ "label": "Workflow",
198
+ "name": "Workflow",
199
+ },
200
+ {
201
+ "id_prefix": "workflowrun",
202
+ "label": "Workflow Run",
203
+ "name": "WorkflowRun",
204
+ },
205
+ )
206
+
207
+
208
+ def declaration() -> IngestSourceDeclaration:
209
+ """The declaration the server assembles from this module."""
210
+ specs = []
211
+ for item in SOURCES:
212
+ for entry in item["connector_sources"]:
213
+ body = {k: v for k, v in entry.items() if k not in ("tool", "mapping")}
214
+ specs.append(
215
+ IngestSourceSpec.model_validate({**body, "tools": (entry["tool"],)})
216
+ )
217
+ return IngestSourceDeclaration.model_validate(
218
+ {
219
+ "connector": CONNECTOR,
220
+ "sources": specs,
221
+ "schema_mappings": SCHEMA_MAPPINGS,
222
+ "resources": RESOURCES,
223
+ }
224
+ )
@@ -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.8"
42
+ __version__ = "2.4.9"
43
43
  logger = get_logger("GithubMCPServer")
44
44
  logger.setLevel(logging.INFO)
45
45
 
@@ -1,9 +1,6 @@
1
1
  {
2
2
  "api_version": "arbora.io/v1",
3
3
  "artifacts": {
4
- "connector_manifest.yml": "8c377374f2ab87e99a765d3340b269b312ae6aa971c91ebe874b3dbf8f76b358",
5
- "github_agent/connectors/mcp_source_presets.json": "312ec35c48d40253afcd8dba445afee9f41b5ac910e11a435d7c02ee63b5967f",
6
- "github_agent/connectors/tool_schema_fingerprints.json": "36982e09c3dba96cc187fc6cd99431deb4899b24399e3b8dc206f228cb980ce7",
7
4
  "github_agent/ontology/fixtures/records.json": "12f5b54b0ae98770f279f99e136788d063340042a9d6ff4bac0c22a886d2dc7b",
8
5
  "github_agent/ontology/github.ttl": "ad0ad6d295143b38725866b5b5c59a824f10bfc4219794ac2d9a2274f11bbdb5",
9
6
  "github_agent/ontology/mappings/source.yaml": "7ff7a37550f825a61fe6d0f9529206f4efe2727431e32b8ab95a39a32bdced43",
@@ -16,18 +16,16 @@
16
16
  # Shared concepts owned by the epistemic-graph ontology and referenced here, never redeclared:
17
17
  # Repository, PullRequest, Release, Branch, Commit, PipelineRun. Only the GitHub-specific subclasses and properties are declared in this pack.
18
18
 
19
- :Organization a owl:Class ;
20
- rdfs:label "Organization" ;
21
- rdfs:comment "A GitHub organization that owns repositories and members (github_orgs)." .
19
+ :Organization a owl:Class .
20
+
22
21
 
23
22
  :Issue a owl:Class ;
24
23
  rdfs:subClassOf :WorkItem ;
25
24
  rdfs:label "Issue" ;
26
25
  rdfs:comment "A tracked work item, bug, or discussion in a repository (github_issues)." .
27
26
 
28
- :Workflow a owl:Class ;
29
- rdfs:label "Workflow" ;
30
- rdfs:comment "A GitHub Actions CI/CD workflow definition (github_actions)." .
27
+ :Workflow a owl:Class .
28
+
31
29
 
32
30
  :WorkflowRun a owl:Class ;
33
31
  rdfs:subClassOf :PipelineRun ;
@@ -220,5 +218,4 @@
220
218
  rdfs:comment """GitHub source-control, code-review and CI/CD model — organizations,
221
219
  repositories, pull requests, issues, releases, branches, commits, workflows and
222
220
  workflow runs, with their review and delivery relationships — federated into the
223
- agent-connector-sdk knowledge-graph hub. Reuses the shared :Person and :Document classes.""" ;
224
- owl:imports <http://knuckles.team/kg> .
221
+ agent-connector-sdk knowledge-graph hub. Reuses the shared :Person and :Document classes.""" .
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: github-agent
3
- Version: 2.4.8
3
+ Version: 2.4.9
4
4
  Summary: GitHub Agent for MCP
5
5
  Author-email: Project Maintainers <maintainers@users.noreply.github.com>
6
6
  License: MIT
@@ -13,7 +13,7 @@ Requires-Python: >=3.12
13
13
  Description-Content-Type: text/markdown
14
14
  License-File: LICENSE
15
15
  Requires-Dist: requests>=2.34.2
16
- Requires-Dist: agent-connector-sdk[graphql,mcp]<1.0.0,>=0.3.18
16
+ Requires-Dist: agent-connector-sdk[graphql,mcp]<1.0.0,>=0.4.1
17
17
  Provides-Extra: mcp
18
18
  Provides-Extra: all
19
19
  Provides-Extra: test
@@ -44,7 +44,7 @@ Dynamic: license-file
44
44
  ![PyPI - Wheel](https://img.shields.io/pypi/wheel/github-agent)
45
45
  ![PyPI - Implementation](https://img.shields.io/pypi/implementation/github-agent)
46
46
 
47
- *Version: 2.4.8*
47
+ *Version: 2.4.9*
48
48
 
49
49
  > **Documentation** — Installation, deployment, and usage across the MCP, API, and
50
50
  > [official documentation](https://knuckles-team.github.io/github-agent/).
@@ -1,14 +1,15 @@
1
- github_agent/__init__.py,sha256=glMuOQomGqPeJvn8UHzLa83MujqjNX2vpagybeMit4A,22
1
+ github_agent/__init__.py,sha256=jexP_bn42GgaPCRDRYZqRI6UFG4hFgjug7OJbg8uE0Y,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
5
+ github_agent/connector_sources.py,sha256=h-LaeTkVwdsHz2HvAZpZv8YsZ52WiTAUvsypx5ycv2k,7065
5
6
  github_agent/github_gql.py,sha256=8LxyFlUdtJArPO3s-YgZSL5WqnjGLp3ZuvGgVbPtVHM,4322
6
7
  github_agent/github_http.py,sha256=v-H9Nny1Q45yQH-1vsDpog4GOvAUSI786XFkctmXdik,4362
7
8
  github_agent/github_input_models.py,sha256=yqqPGHb206th736MZvbnxq9F1JRsBUBODNeNVc08F3A,15568
8
9
  github_agent/github_response_models.py,sha256=mllSt0frBgzklUtfuHywJ2Ald3m99So948Xikt3H2Tc,8859
9
10
  github_agent/kg_ingest.py,sha256=iH_NKpd8a6GtNxfZTp8Oah8VZkcXjI74KDf8P9NbtjA,17978
10
11
  github_agent/mcp_config.json,sha256=2OOXrwO1sDLyHQqpZwhvDHizPIe3by6YmK4KFE333gI,23
11
- github_agent/mcp_server.py,sha256=XZEV8zYUZAJk34_rtFHTKnWMGqwbYRHgd3ZMuAM59dI,126620
12
+ github_agent/mcp_server.py,sha256=9q2xUhXq8FXz5jebd4gv575ZnCjuPVWiRb815rdwamU,126620
12
13
  github_agent/api/__init__.py,sha256=ntaEPqk-dsAV3HyyDLc2hYpc9nTTyG5CKI-SVDDjc24,27
13
14
  github_agent/api/api_client_base.py,sha256=tMXKrZIXg6aQ6OK4kNKBDcNc8BrM0Vml_66SwA5ZgEw,7485
14
15
  github_agent/api/api_client_branches.py,sha256=bCmqGUWQ27GFTGxcFkQ7D-ZEltKp6APVsk_Fw9wzdjY,3940
@@ -25,8 +26,6 @@ github_agent/api/api_client_repos.py,sha256=f-gc9xPDp4bp6CYlkaszt7MGhsW21dCw4FD2
25
26
  github_agent/api/api_client_search.py,sha256=zWFexkXZYFzDvWackxM33uWdEDYsA54lWlOSf6atLVE,2232
26
27
  github_agent/api/api_client_workflows.py,sha256=Y6iHgLujZksI9jAZb1tkFnEv3f-l4bd-fiUtSu3vVw4,5799
27
28
  github_agent/connectors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
- github_agent/connectors/mcp_source_presets.json,sha256=MS7DXEjUAlOvzY26RFr-6fQbWskQ4RpDXXwC7mO1ln8,699
29
- github_agent/connectors/tool_schema_fingerprints.json,sha256=NpguCcPbqWzBh_xs2ZQx3rSJmyQ5njuNwgbyKMuYDOc,239
30
29
  github_agent/mcp/__init__.py,sha256=mO-LvCC1TIs-T9f7oDToOq7LsZUMx04Aa3h0LjIi6eA,1290
31
30
  github_agent/mcp/mcp_action.py,sha256=oz3CcAMw8Uc_MC7us_pUn4nbwdNqR_ePIjDzckID5Wo,9583
32
31
  github_agent/mcp/mcp_branch.py,sha256=lACUOIPRPiLD9lv4DzKJ2n9IvOsq97mHk8lxTat1zWk,4785
@@ -41,9 +40,8 @@ github_agent/mcp/mcp_release.py,sha256=WnuZ2wjcTBVl8Jzog_4a9HjbxDAh6aXdN-mdzDUZt
41
40
  github_agent/mcp/mcp_repo.py,sha256=ny5GdawCFZxlbjpOc3ttnn-NIs9QDQLAxRdAWEWLUdc,18344
42
41
  github_agent/mcp/mcp_search.py,sha256=3ZBGNKkVu5oBXgN9MBWd-ve4NDCzcwP9sY22bp4hqKs,2963
43
42
  github_agent/ontology/__init__.py,sha256=-qc7ZPSgdaCLrD1AH_7TFXWikEpSH9rVmBciCC9gtCY,552
44
- github_agent/ontology/certification.json,sha256=nUT_C-AtTjtb4bDAs3cDT2vlk7kK_8RPFfbyIWXCMw0,1664
45
- github_agent/ontology/github.ttl,sha256=v5lzPQkPBvjuzXYdg1rMHcsARExIsTdkshebvfnhyp8,8573
46
- github_agent/ontology/ingest_sources.json,sha256=70glHq2q8MEQCxD22r2VPyz_7mubibf1iygCf-sSdMs,572
43
+ github_agent/ontology/certification.json,sha256=XZL5DREc91-25s-Su4l3U44ZCNbFpNCcAmIwBUb-SDE,1314
44
+ github_agent/ontology/github.ttl,sha256=QXyEj4T4aEgpCs_2PxxoR7Gi7AvA-09OVmdIhQFPZko,8296
47
45
  github_agent/ontology/fixtures/records.json,sha256=EvW1Swrph3DyefmeE2eI0GM0AEKp1v9LrAwiqIbS3Hs,543
48
46
  github_agent/ontology/mappings/source.yaml,sha256=f_ejdVD4JaYf5tD5UpIG9O_icnQx4yuKuVo5oyvc7UM,533
49
47
  github_agent/ontology/migrations/manifest.json,sha256=rfFgIlAt0DHdMDpSq656Bnfs4RNeHgXCHbokya5Rk1w,118
@@ -93,7 +91,7 @@ github_agent/skills/github-triage-resolver/WORKFLOW.md,sha256=orvcRmaV-qb_JKoGSw
93
91
  github_agent/skills/github-triage-resolver/references/resolution-rules.md,sha256=lGPvfLCSHpNIeh2rKWcH2k_2lla3ovgBxzwvtMmyQ-0,4133
94
92
  github_agent/skills/github-triage-resolver/scripts/classify_safe.py,sha256=8BhcDF9Q8rjJIEVOmdyO-dO-eHBjW7T-bzaYC16uY5I,9556
95
93
  github_agent/skills/github-triage-resolver/scripts/gh_write.py,sha256=SL5oA1A3lFRLepNri4CzEcuEsg9D5WKJ1000fCRKBEM,4125
96
- github_agent-2.4.8.dist-info/licenses/LICENSE,sha256=5ALbh4fIALWVsUhO7q1nFT1bQb-CL9sWKf7p3GgLEG8,1070
94
+ github_agent-2.4.9.dist-info/licenses/LICENSE,sha256=5ALbh4fIALWVsUhO7q1nFT1bQb-CL9sWKf7p3GgLEG8,1070
97
95
  scripts/security_sanitizer.py,sha256=gE65xtYMGx43oYUnK0kozBm73Hx97mCdrQUM7GGzIbk,9449
98
96
  scripts/verify_api_integration.py,sha256=3AK8HKW52o1yxCDaEUtXngnh7CjYw6NiG9Eb3EIoXNE,10256
99
97
  tests/conftest.py,sha256=kgpOLUp_q8IZaI6Xd7F1tbFuio81-_l5Gd4jaGiMrnY,3636
@@ -102,21 +100,21 @@ tests/test_api_client_endpoints.py,sha256=Hbw0vssQU5Up-KvJmUDLDCP4t2u8pU-xPfWAhF
102
100
  tests/test_api_validation.py,sha256=CRZq7kfc1U8CLZJRTGusBhTN2Tlfc1FIeDqIm895XoI,3301
103
101
  tests/test_auth_client_edge_cases.py,sha256=QjQAtjd7vDDsSSvIZuUXbd9Z58te8Xp9giPFmwJTBsA,6470
104
102
  tests/test_comment_crud.py,sha256=mHA0scds_0W0oND-VI0QMvNaYarYkHjiXd4H9-9d5kE,27341
105
- tests/test_cq_paths.py,sha256=f4pf4NcI_SFL_7EVkK93ZMaF7W-0vQ9CTxGE9FS6Wkk,1524
103
+ tests/test_cq_paths.py,sha256=h7wYUuXGohZuVFfJaWwnzpm6X8r-FN1kkv-EEdE9ZlY,1483
106
104
  tests/test_default_content_surfaces.py,sha256=UQdDIHHd-X4lvsj2ti2QnNwtsQAayL7b003dQ8UXqMo,1403
107
- tests/test_fleet_name.py,sha256=qCLzYTPuiaS3y0I0NLuMRloXlf_o0sue0aVH-Sn-tYQ,1893
105
+ tests/test_fleet_name.py,sha256=-FVvDZoJAhlKoueMRXQDrvv24YVbLrsIU8UKvAs4Evc,1419
108
106
  tests/test_github_agent_api_brute_force_coverage.py,sha256=5jWW6oVU7cmXL2sS3OZ-3gbYGhyjlYPIWqH2rsdF2fw,7347
109
107
  tests/test_github_agent_brute_force_coverage.py,sha256=Z_voXtChOYRqaNEmNzMfzvwQMj2xFBn1m8mXx5ubUe8,4849
110
108
  tests/test_github_gql.py,sha256=M55X5V2orZ1kVek16s1zaMJIUb6FhlfbC8k0cKkD07Y,2709
111
109
  tests/test_github_http.py,sha256=uuSMrot71Kj8WQf-QyazO4rWzpWSucRTQ1tt5wRvC_E,9563
112
110
  tests/test_hardening.py,sha256=sdlKmtk7B5yncc-r1LuFgoJfro6wNlCqY0xI73IVC4M,3710
113
- tests/test_ingest_sources.py,sha256=hzY7vDW5Q1P-Qc_X6PAFAnXik_0BIP1DrNLVPhe_9DQ,1391
111
+ tests/test_ingest_sources.py,sha256=5PKbXdHkwKsXpKCvKv4exUm1gKOr1gQrVIpzSF-d0s8,1266
114
112
  tests/test_init_dynamics.py,sha256=fPE_4M-bONKiqvtWLn12A0q18CUlzQhdx1UoXYkbbPk,1839
115
113
  tests/test_kg_ingest.py,sha256=TeHjWz74LiuSxpI7N6HHrdj0H1mRsJHceQDNYvre4To,9462
116
114
  tests/test_mcp_coverage.py,sha256=W_7fbCWoFd4mDwKvah2DmQRcy0fD7tI4ykFTne69tNM,43550
117
115
  tests/test_mcp_package_dispatch.py,sha256=mzrC-jGl3DlrQx9z5uIxy1m0x9qsxfMo6eJImx844WY,22993
118
116
  tests/test_model_fields.py,sha256=GvVFFedjdL0KBl328-NZ0SM6olv7muiglsMh0Vd59As,3388
119
- tests/test_ontology_parent_link.py,sha256=-NrJYBVmYF9OswmRXDgvSYDhqGVZcDfQenxKUilUSsw,4210
117
+ tests/test_ontology_parent_link.py,sha256=1VZrOLDQAmpXT9Sv1Bc4Q9EA2uC5q6WW1N3pvujcJZU,4062
120
118
  tests/test_org_crud.py,sha256=7WMb8eCWSsl_rCILBmsJ4OFnmwtb_GXmebf51O8xsxI,19938
121
119
  tests/test_pages.py,sha256=CGlxgPVrhvPnnXuFZwzF4VqsV4ygBDY8w8Cqr6KqJmI,18726
122
120
  tests/test_repo_secrets_characterization.py,sha256=-9NkJlROsKIYKcNEZpVYy7tkJg-lB0_8We1RvOW1EaY,6043
@@ -128,8 +126,8 @@ tests/test_skill_org_remediation_classify_fix_risk.py,sha256=0Y8289lhxtJ3pxYUHzO
128
126
  tests/test_skill_pr_review_sweep_summarize_prs.py,sha256=NrNaucQvM7K-k1WBcOBKtTGjxJbW16VgTHbC7dSsjm4,3821
129
127
  tests/test_skill_triage_resolver_classify_safe.py,sha256=B-aDeVmsKTsxYO8TwMEx-cmpVSmZdlKXw5993Da2ubc,9489
130
128
  tests/test_startup.py,sha256=Ix_g69k0tsZbY0-Vkeh8ADWojUdbYwTwwmnM4_hVuCc,1245
131
- github_agent-2.4.8.dist-info/METADATA,sha256=uAvn9bQvqFs6_Ma0RpcJHxA-HIq4rvhXUpkDIp61gNk,34508
132
- github_agent-2.4.8.dist-info/WHEEL,sha256=mOdXR9C3wMVov7cSY8PY-XCzo3SmmWCHvGQr5csJoao,91
133
- github_agent-2.4.8.dist-info/entry_points.txt,sha256=Wi6GhziOqmJl-22qTYkjfVuIHEHKRrBvyyloc7NqV80,367
134
- github_agent-2.4.8.dist-info/top_level.txt,sha256=53Ecr8n7o_EMIqZClc11PBU07uQIggYZOk5WnvBbeOQ,50
135
- github_agent-2.4.8.dist-info/RECORD,,
129
+ github_agent-2.4.9.dist-info/METADATA,sha256=rHQFAA_etcbB8b2qyW5IQ2ZWjf5VhU2RSNUownTfNfM,34507
130
+ github_agent-2.4.9.dist-info/WHEEL,sha256=mOdXR9C3wMVov7cSY8PY-XCzo3SmmWCHvGQr5csJoao,91
131
+ github_agent-2.4.9.dist-info/entry_points.txt,sha256=TLa0Bf2U8AHvECm7mFzxWL10h3iPwvEOixb4tSAvUdI,278
132
+ github_agent-2.4.9.dist-info/top_level.txt,sha256=53Ecr8n7o_EMIqZClc11PBU07uQIggYZOk5WnvBbeOQ,50
133
+ github_agent-2.4.9.dist-info/RECORD,,
@@ -7,8 +7,5 @@ github-agent = github_agent.ontology
7
7
  [agent_connector_sdk.skill_providers]
8
8
  github-agent = github_agent.skills
9
9
 
10
- [agent_connector_sdk.source_connector_providers]
11
- github-agent = github_agent.connectors
12
-
13
10
  [console_scripts]
14
11
  github-mcp = github_agent.mcp_server:mcp_server
tests/test_cq_paths.py CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ from github_agent.connector_sources import declaration as declared_sources
5
6
  import re
6
7
  from pathlib import Path
7
8
 
8
9
  import pytest
9
- import yaml
10
10
 
11
11
  import github_agent
12
12
 
@@ -39,12 +39,9 @@ def test_check_run_extends_pipeline_run() -> None:
39
39
 
40
40
 
41
41
  def test_no_mapping_has_a_null_ontology_class() -> None:
42
- manifest = yaml.safe_load(
43
- (PACKAGE.parent / "connector_manifest.yml").read_text("utf-8")
44
- )
45
42
  unmapped = [
46
43
  name
47
- for name, mapping in manifest["schema_mappings"].items()
48
- if not mapping["ontology_class"]
44
+ for name, mapping in declared_sources().schema_mappings.items()
45
+ if not mapping.ontology_class
49
46
  ]
50
47
  assert unmapped == []
tests/test_fleet_name.py CHANGED
@@ -2,9 +2,8 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ from agent_connector_sdk.connector_identity import connector_name
5
6
  import ast
6
- import json
7
- import re
8
7
  import tomllib
9
8
  from pathlib import Path
10
9
 
@@ -38,16 +37,6 @@ def test_connector_name_is_the_fleet_name() -> None:
38
37
  assert pyproject["project"]["entry-points"]["agent_connector_sdk.connector"] == {
39
38
  FLEET: "github_agent"
40
39
  }
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
- )
40
+ assert connector_name("github_agent") == FLEET
52
41
  for module in sorted(PACKAGE.glob("*.py")):
53
42
  assert all(name == FLEET for name in _call_connectors(module)), module.name
@@ -5,8 +5,7 @@ from __future__ import annotations
5
5
  from pathlib import Path
6
6
 
7
7
  import pytest
8
- import yaml
9
- from agent_connector_sdk.ingest.sources import load_ingest_sources
8
+ from github_agent.connector_sources import declaration as declared_sources
10
9
  from agent_connector_sdk.mcp.method_tools import operation_annotations, operation_verb
11
10
  from agent_connector_sdk.mcp.tool_surface import operation_prefix
12
11
 
@@ -17,7 +16,7 @@ from github_agent.api_client import Api
17
16
  @pytest.mark.spec("CONN-GITHUB-AGENT-CONNECTOR-CONTENT-R003")
18
17
  def test_declares_ingestible_sources() -> None:
19
18
  package_root = Path(github_agent.__file__).parent
20
- declaration = load_ingest_sources(package_root)
19
+ declaration = declared_sources()
21
20
  assert declaration is not None
22
21
  assert declaration.connector == "github-mcp"
23
22
  source = declaration.source("issues")
@@ -25,10 +24,7 @@ def test_declares_ingestible_sources() -> None:
25
24
  prefix = operation_prefix("github-agent")
26
25
  assert source.tools == (f"{prefix}_search_issues",)
27
26
  # The engine admits a record only under the pack mapping of its type.
28
- manifest = yaml.safe_load(
29
- (package_root.parent / "connector_manifest.yml").read_text("utf-8")
30
- )
31
- assert source.record_type in manifest["schema_mappings"]
27
+ assert source.record_type in declared_sources().schema_mappings
32
28
  method = getattr(Api, "search_issues")
33
29
  annotations = operation_annotations("search_issues", operation_verb(method))
34
30
  assert annotations.read_only_hint is True
@@ -103,6 +103,4 @@ def test_ontology_joins_the_parent_graph(path: Path) -> None:
103
103
  declared = {s for s, p, o in triples if p == RDF_TYPE and o == OWL + "Class"}
104
104
  if not declared:
105
105
  pytest.skip("declares no classes")
106
- imports = {o for s, p, o in triples if p == OWL + "imports"}
107
- assert any(i == PARENT_IRI or i.startswith(PARENT_IRI + "/") for i in imports)
108
106
  assert _orphans(triples) == PENDING_NEW_PARENT & declared
@@ -1,17 +0,0 @@
1
- {
2
- "_comment": "Tier-1 mcp_tool source presets for github-agent (AU-KG.ingest.mcp-tool-connector). Syncs GitHub repositories into the KG as repository documents via the github-agent MCP server. Contributed presets win over the central MCP_TOOL_PRESETS. Extend with pull-request / issue presets as needed.",
3
- "github-repositories": {
4
- "server": "github-mcp",
5
- "tool": "github_get_repositories",
6
- "records_path": "data",
7
- "id_field": "id",
8
- "title_field": "full_name",
9
- "text_field": "description",
10
- "updated_field": "updated_at",
11
- "pagination": "page",
12
- "page_kind": "page",
13
- "page_param": "page",
14
- "page_size_param": "per_page",
15
- "doc_type": "repository"
16
- }
17
- }
@@ -1,8 +0,0 @@
1
- {
2
- "algorithm": "agent-connector-sdk:mcp-tool-contract-compat:v2",
3
- "connector": "github-mcp",
4
- "schema_version": "1",
5
- "tools": {
6
- "github_get_repositories": "ec6c06fe206534df752bc4035d4cf81c952d448441a7e9271b800175357c3360"
7
- }
8
- }
@@ -1,24 +0,0 @@
1
- {
2
- "connector": "github-mcp",
3
- "sources": [
4
- {
5
- "source_id": "issues",
6
- "record_type": "Issue",
7
- "tools": [
8
- "github_search_issues"
9
- ],
10
- "records_path": "data.items",
11
- "id_field": "id",
12
- "title_field": "title",
13
- "text_field": "body",
14
- "cursor_field": "updated_at",
15
- "incremental": false,
16
- "arguments": {
17
- "q": "is:issue is:open involves:@me",
18
- "per_page": 50,
19
- "max_pages": 1
20
- },
21
- "description": "Open GitHub issues involving the authenticated user (first 50)."
22
- }
23
- ]
24
- }