dockerhub-api 1.3.6__tar.gz → 1.3.7__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.6 → dockerhub_api-1.3.7}/PKG-INFO +1 -1
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/ontology/certification.json +1 -1
- dockerhub_api-1.3.7/dockerhub_api/skills/dockerhub-api-development/SKILL.md +110 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api.egg-info/PKG-INFO +1 -1
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api.egg-info/SOURCES.txt +1 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/pyproject.toml +1 -1
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/tests/test_init_dynamics.py +0 -2
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/tests/test_startup.py +0 -2
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/LICENSE +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/README.md +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/__init__.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/__main__.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/api/__init__.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/api/api_client_access_tokens.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/api/api_client_audit_logs.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/api/api_client_auth.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/api/api_client_base.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/api/api_client_groups.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/api/api_client_org_access_tokens.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/api/api_client_orgs.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/api/api_client_registry.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/api/api_client_registry_base.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/api/api_client_repositories.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/api/api_client_scim.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/api/api_client_scout.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/api_client.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/auth.py +1 -1
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/connector_sources.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/dockerhub_input_models.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/dockerhub_response_models.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/kg_ingest.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/mcp/__init__.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/mcp/mcp_admin.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/mcp/mcp_audit.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/mcp/mcp_auth.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/mcp/mcp_kg.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/mcp/mcp_org.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/mcp/mcp_registry.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/mcp/mcp_repos.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/mcp/mcp_scim.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/mcp/mcp_scout.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/mcp/mcp_teams.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/mcp_config.json +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/mcp_server.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/ontology/__init__.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/ontology/dockerhub.ttl +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/ontology/fixtures/records.json +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/ontology/mappings/source.yaml +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/ontology/migrations/manifest.json +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/ontology/shapes/connector.shacl.ttl +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/skills/dockerhub-api-operations/SKILL.md +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/skills/dockerhub-api-operations/agents/openai.yaml +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/skills/dockerhub-api-operations/references/catalog.md +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/skills/dockerhub-image-registry-scout/SKILL.md +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/skills/dockerhub-image-registry-scout/WORKFLOW.md +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/skills/dockerhub-org-administration/SKILL.md +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/skills/dockerhub-org-administration/WORKFLOW.md +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/skills/dockerhub-repository-management/SKILL.md +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/skills/dockerhub-repository-management/WORKFLOW.md +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api.egg-info/dependency_links.txt +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api.egg-info/entry_points.txt +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api.egg-info/requires.txt +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api.egg-info/top_level.txt +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/setup.cfg +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/tests/test_api_audit.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/tests/test_api_org.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/tests/test_api_registry.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/tests/test_api_repositories.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/tests/test_api_scim.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/tests/test_api_scout.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/tests/test_api_teams.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/tests/test_api_tokens.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/tests/test_api_wrapper.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/tests/test_auth.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/tests/test_dockerhub_a2a_validation.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/tests/test_dockerhub_mcp_validation.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/tests/test_fleet_name.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/tests/test_identity_namespace_scoping.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/tests/test_kg_ingest.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/tests/test_models.py +0 -0
- {dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/tests/test_rate_limit.py +0 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dockerhub-api-development
|
|
3
|
+
skill_type: skill
|
|
4
|
+
description: >-
|
|
5
|
+
Develop, test, and publish the dockerhub-api connector without breaking its
|
|
6
|
+
typed Docker Hub API contract, packaged content, spec delivery dashboard, or
|
|
7
|
+
governed Pages workflow. Use when changing connector code, docs, skills,
|
|
8
|
+
workflows, or repository-owned specs.
|
|
9
|
+
license: MIT
|
|
10
|
+
tags: [dockerhub, connector, development, testing, pages, specs]
|
|
11
|
+
metadata:
|
|
12
|
+
author: Genius
|
|
13
|
+
version: '0.1.0'
|
|
14
|
+
---
|
|
15
|
+
# Docker Hub API Development
|
|
16
|
+
|
|
17
|
+
Use this skill for changes inside the dockerhub-api package. The connector
|
|
18
|
+
exposes Docker Hub management, registry, Scout, and knowledge-graph operations
|
|
19
|
+
through typed HTTP clients, action-routed MCP tools, an A2A agent, and packaged
|
|
20
|
+
resource content. Keep those surfaces aligned when a change crosses a boundary.
|
|
21
|
+
|
|
22
|
+
## Repository map
|
|
23
|
+
|
|
24
|
+
- dockerhub_api/api/ contains domain client mixins composed into the Api facade.
|
|
25
|
+
- dockerhub_api/auth.py owns JWT minting, caching, refresh, and client setup.
|
|
26
|
+
- dockerhub_api/mcp/ registers domain tools and keeps actions routed through the
|
|
27
|
+
corresponding client method.
|
|
28
|
+
- dockerhub_api/skills/, prompts/, ontology/, and connectors/ are packaged
|
|
29
|
+
resources exposed by the connector entry point.
|
|
30
|
+
- specs/connector-content/ and specs/connector-identity/ are the source
|
|
31
|
+
specifications; their status.json files are generated evidence, never hand
|
|
32
|
+
edited.
|
|
33
|
+
|
|
34
|
+
## Before editing
|
|
35
|
+
|
|
36
|
+
1. Work from a real worktree based on the repository's current origin/main.
|
|
37
|
+
2. Find the owning row under specs/ before adding behavior, and preserve the
|
|
38
|
+
existing CONCEPT: registry when a domain capability is involved.
|
|
39
|
+
3. Trace a changed action from its Pydantic input model through the MCP router,
|
|
40
|
+
client mixin, auth lifecycle, and response envelope. Do not duplicate an
|
|
41
|
+
existing HTTP path.
|
|
42
|
+
4. Keep credentials and external Docker Hub calls out of tests; extend the
|
|
43
|
+
existing MockHub transport and assert the request and redacted result.
|
|
44
|
+
|
|
45
|
+
## Implementation contract
|
|
46
|
+
|
|
47
|
+
- Preserve the dockerhub-mcp connector name and the uniform
|
|
48
|
+
status_code/data/rate_limit response envelope.
|
|
49
|
+
- Keep destructive operations behind DockerHubApiBase._guard_destructive and
|
|
50
|
+
never persist or return bearer tokens except the documented one-time create
|
|
51
|
+
response.
|
|
52
|
+
- Use Pydantic input and response models, action-routed tools, and the shared
|
|
53
|
+
agent-utilities server/agent factories.
|
|
54
|
+
- Add or update a focused test when behavior changes. Cover invalid action or
|
|
55
|
+
parameters and the successful response shape.
|
|
56
|
+
- Keep all package resources under the existing package-data globs so an sdist
|
|
57
|
+
and wheel expose the same skills, prompts, ontology, agent data, and
|
|
58
|
+
connector manifest.
|
|
59
|
+
|
|
60
|
+
## Rapid delivery: the 5-minute contract
|
|
61
|
+
|
|
62
|
+
Specs are already designed. Deliver one small, reviewable change at a time.
|
|
63
|
+
|
|
64
|
+
- Start with one owning requirement and state its proof before editing.
|
|
65
|
+
- Keep a slice to one connector concern: source code, one test seam, one
|
|
66
|
+
workflow/configuration repair, or one substantive skill.
|
|
67
|
+
- Run the smallest relevant tests first, then the repository pre-commit suite
|
|
68
|
+
on the candidate worktree. Fix warnings and failures rather than bypassing a
|
|
69
|
+
hook.
|
|
70
|
+
- Record the exact source and test commands in the commit or review handoff.
|
|
71
|
+
- Never claim a Pages or spec row from a YAML marker alone: the dashboard config,
|
|
72
|
+
generated status records, successful exact-source workflow, and published
|
|
73
|
+
page must agree.
|
|
74
|
+
- Commit only reviewed paths with an explicit path list. Never stage a whole
|
|
75
|
+
shared checkout, credentials, caches, generated logs, or temporary output.
|
|
76
|
+
|
|
77
|
+
## Spec delivery and Pages
|
|
78
|
+
|
|
79
|
+
The canonical Pages caller is .github/workflows/pages.yml. This repository uses
|
|
80
|
+
the docs/ content source, so the caller must pass content_source: docs, enable
|
|
81
|
+
spec_dashboard_enabled, and point spec_dashboard_config at
|
|
82
|
+
.github/spec-dashboard.json. The push path set must include specs/**, the
|
|
83
|
+
dashboard config, and the Pages workflow itself in addition to documentation
|
|
84
|
+
paths. Keep the config versioned and bounded to specs/*/status.json; the
|
|
85
|
+
central renderer owns the HTML layout.
|
|
86
|
+
|
|
87
|
+
Regenerate status evidence with the pipeline hook when a spec changes, inspect
|
|
88
|
+
the resulting diff, and verify that no status row was advanced without a real
|
|
89
|
+
implementation or test receipt. The Pages proof is complete only after the
|
|
90
|
+
published run uses the candidate commit and /spec-delivery/ serves the
|
|
91
|
+
candidate snapshot.
|
|
92
|
+
|
|
93
|
+
## Verification
|
|
94
|
+
|
|
95
|
+
From the repository root:
|
|
96
|
+
|
|
97
|
+
pre-commit run --all-files
|
|
98
|
+
python -m pytest tests -q
|
|
99
|
+
|
|
100
|
+
Prefer focused tests for the touched module while iterating. For Pages changes,
|
|
101
|
+
also run the central dashboard renderer against a task-local output directory
|
|
102
|
+
and verify the config parses, status files are discovered, and the result
|
|
103
|
+
contains the connector content and identity records.
|
|
104
|
+
|
|
105
|
+
## Safety
|
|
106
|
+
|
|
107
|
+
Never commit .env files, tokens, raw Docker Hub identifiers, or generated site
|
|
108
|
+
output. Never make live Docker Hub calls from tests. Preserve destructive
|
|
109
|
+
gating and secret redaction. If a dependency or packaged metadata change is
|
|
110
|
+
necessary, update the lockfile in the same slice and explain why in the review.
|
|
@@ -48,6 +48,7 @@ dockerhub_api/ontology/fixtures/records.json
|
|
|
48
48
|
dockerhub_api/ontology/mappings/source.yaml
|
|
49
49
|
dockerhub_api/ontology/migrations/manifest.json
|
|
50
50
|
dockerhub_api/ontology/shapes/connector.shacl.ttl
|
|
51
|
+
dockerhub_api/skills/dockerhub-api-development/SKILL.md
|
|
51
52
|
dockerhub_api/skills/dockerhub-api-operations/SKILL.md
|
|
52
53
|
dockerhub_api/skills/dockerhub-api-operations/agents/openai.yaml
|
|
53
54
|
dockerhub_api/skills/dockerhub-api-operations/references/catalog.md
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "dockerhub-api"
|
|
7
|
-
version = "1.3.
|
|
7
|
+
version = "1.3.7"
|
|
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",]
|
|
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.6 → dockerhub_api-1.3.7}/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
|
|
@@ -66,8 +66,8 @@ def _entitled(namespace: str, names: list[str]) -> list[str]:
|
|
|
66
66
|
fails closed — only the "nothing to check" case degrades.
|
|
67
67
|
"""
|
|
68
68
|
try:
|
|
69
|
-
from agent_connector_sdk.identity import IdentityRequiredError
|
|
70
69
|
from agent_connector_sdk.entitlements import identity_scoped_resources
|
|
70
|
+
from agent_connector_sdk.identity import IdentityRequiredError
|
|
71
71
|
except Exception:
|
|
72
72
|
return list(names)
|
|
73
73
|
try:
|
|
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
|
{dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/dockerhub_api/ontology/shapes/connector.shacl.ttl
RENAMED
|
File without changes
|
{dockerhub_api-1.3.6 → dockerhub_api-1.3.7}/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
|