dockerhub-api 1.3.1__tar.gz → 1.3.3__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.
- {dockerhub_api-1.3.1/dockerhub_api.egg-info → dockerhub_api-1.3.3}/PKG-INFO +4 -4
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/README.md +1 -1
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/connectors/tool_schema_fingerprints.json +1 -1
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/kg_ingest.py +1 -1
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/mcp_server.py +1 -1
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/ontology/certification.json +3 -3
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3/dockerhub_api.egg-info}/PKG-INFO +4 -4
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api.egg-info/SOURCES.txt +2 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api.egg-info/entry_points.txt +3 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api.egg-info/requires.txt +2 -2
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/pyproject.toml +7 -3
- dockerhub_api-1.3.3/tests/test_default_content_surfaces.py +43 -0
- dockerhub_api-1.3.3/tests/test_fleet_name.py +53 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/LICENSE +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/MANIFEST.in +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/__init__.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/__main__.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/api/__init__.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/api/api_client_access_tokens.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/api/api_client_audit_logs.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/api/api_client_auth.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/api/api_client_base.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/api/api_client_groups.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/api/api_client_org_access_tokens.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/api/api_client_orgs.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/api/api_client_registry.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/api/api_client_registry_base.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/api/api_client_repositories.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/api/api_client_scim.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/api/api_client_scout.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/api_client.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/auth.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/connectors/__init__.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/connectors/mcp_source_presets.json +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/dockerhub_input_models.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/dockerhub_response_models.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/mcp/__init__.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/mcp/mcp_admin.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/mcp/mcp_audit.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/mcp/mcp_auth.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/mcp/mcp_kg.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/mcp/mcp_org.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/mcp/mcp_registry.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/mcp/mcp_repos.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/mcp/mcp_scim.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/mcp/mcp_scout.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/mcp/mcp_teams.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/mcp_config.json +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/ontology/__init__.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/ontology/dockerhub.ttl +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/ontology/fixtures/records.json +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/ontology/mappings/source.yaml +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/ontology/migrations/manifest.json +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/ontology/shapes/connector.shacl.ttl +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/prompts/__init__.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/skills/__init__.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/skills/dockerhub-api-operations/SKILL.md +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/skills/dockerhub-api-operations/agents/openai.yaml +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/skills/dockerhub-api-operations/references/catalog.md +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/skills/dockerhub-image-registry-scout/SKILL.md +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/skills/dockerhub-image-registry-scout/WORKFLOW.md +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/skills/dockerhub-org-administration/SKILL.md +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/skills/dockerhub-org-administration/WORKFLOW.md +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/skills/dockerhub-repository-management/SKILL.md +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/skills/dockerhub-repository-management/WORKFLOW.md +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api.egg-info/dependency_links.txt +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api.egg-info/top_level.txt +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/requirements.txt +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/setup.cfg +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/tests/test_api_audit.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/tests/test_api_org.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/tests/test_api_registry.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/tests/test_api_repositories.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/tests/test_api_scim.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/tests/test_api_scout.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/tests/test_api_teams.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/tests/test_api_tokens.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/tests/test_api_wrapper.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/tests/test_auth.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/tests/test_dockerhub_a2a_validation.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/tests/test_dockerhub_mcp_validation.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/tests/test_identity_namespace_scoping.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/tests/test_init_dynamics.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/tests/test_kg_ingest.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/tests/test_models.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/tests/test_rate_limit.py +0 -0
- {dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/tests/test_startup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dockerhub-api
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.3
|
|
4
4
|
Summary: Docker Hub API + MCP Server
|
|
5
5
|
Author-email: Project Maintainers <maintainers@users.noreply.github.com>
|
|
6
6
|
License: MIT
|
|
@@ -12,11 +12,11 @@ Classifier: Programming Language :: Python :: 3
|
|
|
12
12
|
Requires-Python: <3.15,>=3.12
|
|
13
13
|
Description-Content-Type: text/markdown
|
|
14
14
|
License-File: LICENSE
|
|
15
|
-
Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.
|
|
15
|
+
Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.18
|
|
16
16
|
Requires-Dist: httpx>=0.28.1
|
|
17
17
|
Requires-Dist: python-dotenv>=1.2.4
|
|
18
18
|
Provides-Extra: mcp
|
|
19
|
-
Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.
|
|
19
|
+
Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.18; extra == "mcp"
|
|
20
20
|
Provides-Extra: all
|
|
21
21
|
Requires-Dist: dockerhub-api[mcp]>=1.0.1; extra == "all"
|
|
22
22
|
Provides-Extra: test
|
|
@@ -41,7 +41,7 @@ Dynamic: license-file
|
|
|
41
41
|

|
|
42
42
|

|
|
43
43
|
|
|
44
|
-
*Version: 1.3.
|
|
44
|
+
*Version: 1.3.3*
|
|
45
45
|
|
|
46
46
|
> **Documentation** — Installation, deployment, usage across the API, CLI, and MCP
|
|
47
47
|
> Docker Hub platform are maintained in [docs/](docs/index.md).
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|

|
|
14
14
|

|
|
15
15
|
|
|
16
|
-
*Version: 1.3.
|
|
16
|
+
*Version: 1.3.3*
|
|
17
17
|
|
|
18
18
|
> **Documentation** — Installation, deployment, usage across the API, CLI, and MCP
|
|
19
19
|
> Docker Hub platform are maintained in [docs/](docs/index.md).
|
{dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/connectors/tool_schema_fingerprints.json
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"algorithm": "agent-connector-sdk:mcp-tool-contract-compat:v2",
|
|
3
|
-
"connector": "dockerhub-
|
|
3
|
+
"connector": "dockerhub-mcp",
|
|
4
4
|
"schema_version": "1",
|
|
5
5
|
"tools": {
|
|
6
6
|
"dockerhub_get_repositories": "c6fb6018860f39159633a23ca0b19a3555daa371598111e280e753ef80ca0595"
|
|
@@ -25,7 +25,7 @@ from agent_connector_sdk.ingest import (
|
|
|
25
25
|
current_ingest,
|
|
26
26
|
)
|
|
27
27
|
|
|
28
|
-
_BINDING = IngestBinding(connector="dockerhub-
|
|
28
|
+
_BINDING = IngestBinding(connector="dockerhub-mcp", stream="dockerhub")
|
|
29
29
|
|
|
30
30
|
_ENTITY_RESERVED_KEYS = frozenset({"id", "node_type"})
|
|
31
31
|
_RELATIONSHIP_RESERVED_KEYS = frozenset({"source", "target", "relationship"})
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"api_version": "arbora.io/v1",
|
|
3
3
|
"artifacts": {
|
|
4
|
-
"connector_manifest.yml": "
|
|
4
|
+
"connector_manifest.yml": "1d2826d511f1b9ad3c921d7cca5d094285890c92bdd61cf4d27fc33853301e7d",
|
|
5
5
|
"dockerhub_api/connectors/mcp_source_presets.json": "96b893636a49ece1a5f32decb9aea8e3740178cb5e4a19753748b4d18e7ca678",
|
|
6
|
-
"dockerhub_api/connectors/tool_schema_fingerprints.json": "
|
|
6
|
+
"dockerhub_api/connectors/tool_schema_fingerprints.json": "60f37329f11dc900fa385099069f005c7fc8f4b8afcb0ac05d48794b1c62324a",
|
|
7
7
|
"dockerhub_api/ontology/dockerhub.ttl": "bd3f4498e3e9463ee4395a5da1d6afcbfc081a1437e1be52437ab4d52e18d55a",
|
|
8
8
|
"dockerhub_api/ontology/fixtures/records.json": "cdf24bdcd53b75daef789c05f93d55ced4ce4a138360a2ff9f1e34c55f8f6da8",
|
|
9
9
|
"dockerhub_api/ontology/mappings/source.yaml": "72d333a63cb808bbc9a2f031834fa4c75919b11a8171ad5b347fad61247fa016",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"bundle_schema": "2",
|
|
23
23
|
"epistemic_graph": ">=2.27.0,<3"
|
|
24
24
|
},
|
|
25
|
-
"connector": "dockerhub-
|
|
25
|
+
"connector": "dockerhub-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: dockerhub-api
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.3
|
|
4
4
|
Summary: Docker Hub API + MCP Server
|
|
5
5
|
Author-email: Project Maintainers <maintainers@users.noreply.github.com>
|
|
6
6
|
License: MIT
|
|
@@ -12,11 +12,11 @@ Classifier: Programming Language :: Python :: 3
|
|
|
12
12
|
Requires-Python: <3.15,>=3.12
|
|
13
13
|
Description-Content-Type: text/markdown
|
|
14
14
|
License-File: LICENSE
|
|
15
|
-
Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.
|
|
15
|
+
Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.18
|
|
16
16
|
Requires-Dist: httpx>=0.28.1
|
|
17
17
|
Requires-Dist: python-dotenv>=1.2.4
|
|
18
18
|
Provides-Extra: mcp
|
|
19
|
-
Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.
|
|
19
|
+
Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.18; extra == "mcp"
|
|
20
20
|
Provides-Extra: all
|
|
21
21
|
Requires-Dist: dockerhub-api[mcp]>=1.0.1; extra == "all"
|
|
22
22
|
Provides-Extra: test
|
|
@@ -41,7 +41,7 @@ Dynamic: license-file
|
|
|
41
41
|

|
|
42
42
|

|
|
43
43
|
|
|
44
|
-
*Version: 1.3.
|
|
44
|
+
*Version: 1.3.3*
|
|
45
45
|
|
|
46
46
|
> **Documentation** — Installation, deployment, usage across the API, CLI, and MCP
|
|
47
47
|
> Docker Hub platform are maintained in [docs/](docs/index.md).
|
|
@@ -73,8 +73,10 @@ tests/test_api_teams.py
|
|
|
73
73
|
tests/test_api_tokens.py
|
|
74
74
|
tests/test_api_wrapper.py
|
|
75
75
|
tests/test_auth.py
|
|
76
|
+
tests/test_default_content_surfaces.py
|
|
76
77
|
tests/test_dockerhub_a2a_validation.py
|
|
77
78
|
tests/test_dockerhub_mcp_validation.py
|
|
79
|
+
tests/test_fleet_name.py
|
|
78
80
|
tests/test_identity_namespace_scoping.py
|
|
79
81
|
tests/test_init_dynamics.py
|
|
80
82
|
tests/test_kg_ingest.py
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
agent-connector-sdk[mcp]<1.0.0,>=0.3.
|
|
1
|
+
agent-connector-sdk[mcp]<1.0.0,>=0.3.18
|
|
2
2
|
httpx>=0.28.1
|
|
3
3
|
python-dotenv>=1.2.4
|
|
4
4
|
|
|
@@ -6,7 +6,7 @@ python-dotenv>=1.2.4
|
|
|
6
6
|
dockerhub-api[mcp]>=1.0.1
|
|
7
7
|
|
|
8
8
|
[mcp]
|
|
9
|
-
agent-connector-sdk[mcp]<1.0.0,>=0.3.
|
|
9
|
+
agent-connector-sdk[mcp]<1.0.0,>=0.3.18
|
|
10
10
|
|
|
11
11
|
[test]
|
|
12
12
|
pytest-xdist>=3.8.0
|
|
@@ -4,12 +4,12 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "dockerhub-api"
|
|
7
|
-
version = "1.3.
|
|
7
|
+
version = "1.3.3"
|
|
8
8
|
description = "Docker Hub API + MCP Server"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
classifiers = [ "Development Status :: 5 - Production/Stable", "License :: OSI Approved :: MIT License", "Environment :: Console", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3",]
|
|
11
11
|
requires-python = ">=3.12, <3.15"
|
|
12
|
-
dependencies = [ "agent-connector-sdk[mcp]>=0.3.
|
|
12
|
+
dependencies = [ "agent-connector-sdk[mcp]>=0.3.18,<1.0.0", "httpx>=0.28.1", "python-dotenv>=1.2.4",]
|
|
13
13
|
[[project.authors]]
|
|
14
14
|
name = "Project Maintainers"
|
|
15
15
|
email = "maintainers@users.noreply.github.com"
|
|
@@ -18,7 +18,7 @@ email = "maintainers@users.noreply.github.com"
|
|
|
18
18
|
text = "MIT"
|
|
19
19
|
|
|
20
20
|
[project.optional-dependencies]
|
|
21
|
-
mcp = [ "agent-connector-sdk[mcp]>=0.3.
|
|
21
|
+
mcp = [ "agent-connector-sdk[mcp]>=0.3.18,<1.0.0",]
|
|
22
22
|
all = [ "dockerhub-api[mcp]>=1.0.1",]
|
|
23
23
|
test = [
|
|
24
24
|
"pytest-xdist>=3.8.0", "pytest>=9.1.1", "pytest-asyncio>=1.4.0", "pytest-cov>=7.1.0",]
|
|
@@ -35,6 +35,10 @@ dockerhub-api = "dockerhub_api.ontology"
|
|
|
35
35
|
[project.entry-points."agent_connector_sdk.source_connector_providers"]
|
|
36
36
|
dockerhub-api = "dockerhub_api.connectors"
|
|
37
37
|
|
|
38
|
+
# The one declared connector identity: the fleet name (SDK-CONNECTOR-CONTROL-R071).
|
|
39
|
+
[project.entry-points."agent_connector_sdk.connector"]
|
|
40
|
+
dockerhub-mcp = "dockerhub_api"
|
|
41
|
+
|
|
38
42
|
[tool.uv.workspace]
|
|
39
43
|
members = ["."]
|
|
40
44
|
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"""CONN-DOCKERHUB-API-CONNECTOR-CONTENT-R001: the server lists its packaged skills, ontology and prompts by default."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import asyncio
|
|
6
|
+
import importlib
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
|
|
9
|
+
import pytest
|
|
10
|
+
from fastmcp import Client
|
|
11
|
+
|
|
12
|
+
PACKAGE = "dockerhub_api"
|
|
13
|
+
ROOT = Path(list(importlib.import_module(PACKAGE).__path__)[0])
|
|
14
|
+
|
|
15
|
+
pytestmark = pytest.mark.spec("CONN-DOCKERHUB-API-CONNECTOR-CONTENT-R001")
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def _server():
|
|
19
|
+
namespace = {"__name__": PACKAGE + ".mcp_server"}
|
|
20
|
+
exec(
|
|
21
|
+
"from agent_connector_sdk.mcp.server import create_mcp_server\n"
|
|
22
|
+
"result = create_mcp_server('dockerhub-mcp', version='0', command_args=[])",
|
|
23
|
+
namespace,
|
|
24
|
+
)
|
|
25
|
+
return namespace["result"][1]
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
async def _listings():
|
|
29
|
+
async with Client(_server()) as client:
|
|
30
|
+
resources = {str(r.uri) for r in await client.list_resources()}
|
|
31
|
+
prompts = {p.name for p in await client.list_prompts()}
|
|
32
|
+
return resources, prompts
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def test_default_content_surfaces() -> None:
|
|
36
|
+
resources, prompts = asyncio.run(_listings())
|
|
37
|
+
if list(ROOT.glob("skills/*/SKILL.md")):
|
|
38
|
+
assert any(u.startswith("skill://") for u in resources)
|
|
39
|
+
if list(ROOT.glob("ontology/*.ttl")):
|
|
40
|
+
assert any(u.startswith("ontology://dockerhub-mcp/") for u in resources)
|
|
41
|
+
for path in ROOT.glob("prompts/*.json"):
|
|
42
|
+
if not path.name.startswith("_"):
|
|
43
|
+
assert path.stem in prompts
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"""CONN-DOCKERHUB-API-CONNECTOR-IDENTITY-R001: the connector is filed under its fleet name, dockerhub-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 / "dockerhub_api"
|
|
15
|
+
FLEET = "dockerhub-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-DOCKERHUB-API-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: "dockerhub_api"
|
|
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
|
|
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
|
{dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/api/api_client_org_access_tokens.py
RENAMED
|
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
|
{dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/connectors/mcp_source_presets.json
RENAMED
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/ontology/shapes/connector.shacl.ttl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dockerhub_api-1.3.1 → dockerhub_api-1.3.3}/dockerhub_api/skills/dockerhub-api-operations/SKILL.md
RENAMED
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|