Skip to content

Commit 755071a

Browse files
authored
Merge pull request #184 from adcontextprotocol/bokelley/issue-180
feat: bundle-based schema sync + Sigstore verify + 4.0.0b1 on latest
2 parents d0c3015 + 8b49e1a commit 755071a

966 files changed

Lines changed: 320155 additions & 31066 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,10 +111,13 @@ jobs:
111111
run: |
112112
VERSION=$(cat src/adcp/ADCP_VERSION)
113113
echo "ADCP_VERSION=$VERSION"
114-
# Check if version contains pre-release identifiers (alpha, beta, rc)
115-
if echo "$VERSION" | grep -qE '(alpha|beta|rc)'; then
114+
# Skip regeneration + drift check for pre-release tags (alpha/beta/rc)
115+
# and for `latest`, which is a moving dev snapshot — the committed
116+
# generated types are frozen against the bundle we last synced, and
117+
# CI's fresh sync against today's `latest.tgz` is expected to drift.
118+
if echo "$VERSION" | grep -qE '(alpha|beta|rc)' || [ "$VERSION" = "latest" ]; then
116119
echo "is_prerelease=true" >> $GITHUB_OUTPUT
117-
echo "Pre-release version detected - will skip schema sync (may not be publicly accessible)"
120+
echo "Pre-release / latest version detected - will skip schema sync"
118121
else
119122
echo "is_prerelease=false" >> $GITHUB_OUTPUT
120123
echo "Stable version - will sync schemas from upstream"

pyproject.toml

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "adcp"
7-
version = "3.12.0"
7+
version = "4.0.0b1"
88
description = "Official Python client for the Ad Context Protocol (AdCP)"
99
authors = [
1010
{name = "AdCP Community", email = "maintainers@adcontextprotocol.org"}
@@ -14,7 +14,7 @@ requires-python = ">=3.10"
1414
license = {text = "Apache-2.0"}
1515
keywords = ["adcp", "mcp", "a2a", "protocol", "advertising"]
1616
classifiers = [
17-
"Development Status :: 3 - Alpha",
17+
"Development Status :: 4 - Beta",
1818
"Intended Audience :: Developers",
1919
"License :: OSI Approved :: Apache Software License",
2020
"Programming Language :: Python :: 3",
@@ -45,7 +45,10 @@ dev = [
4545
"mypy>=1.0.0",
4646
"black>=23.0.0",
4747
"ruff>=0.1.0",
48-
"datamodel-code-generator[http]>=0.35.0",
48+
# Pin to exact version: codegen's variant numbering (e.g. CreateMediaBuyResponse1 vs
49+
# CreateMediaBuyResponse) shifts between versions, producing diff churn and breaking
50+
# generated-code imports that reference specific suffixes.
51+
"datamodel-code-generator[http]==0.56.1",
4952
]
5053
docs = [
5154
"pdoc3>=0.10.0",
@@ -150,6 +153,6 @@ skips = ["B101"] # Allow assert in code (we're not using -O optimization)
150153

151154
[dependency-groups]
152155
dev = [
153-
"datamodel-code-generator>=0.35.0",
156+
"datamodel-code-generator==0.56.1",
154157
"pre-commit>=4.4.0",
155158
]

schemas/cache/.hashes.json

Lines changed: 0 additions & 3 deletions
This file was deleted.
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
{
2+
"$schema": "http://json-schema.org/draft-07/schema#",
3+
"title": "A2UI Bound Value",
4+
"description": "A value that can be a literal or bound to a path in the data model",
5+
"oneOf": [
6+
{
7+
"type": "object",
8+
"description": "Literal string value",
9+
"properties": {
10+
"literalString": {
11+
"type": "string",
12+
"description": "Static string value"
13+
}
14+
},
15+
"required": [
16+
"literalString"
17+
],
18+
"additionalProperties": false
19+
},
20+
{
21+
"type": "object",
22+
"description": "Literal number value",
23+
"properties": {
24+
"literalNumber": {
25+
"type": "number",
26+
"description": "Static number value"
27+
}
28+
},
29+
"required": [
30+
"literalNumber"
31+
],
32+
"additionalProperties": false
33+
},
34+
{
35+
"type": "object",
36+
"description": "Literal boolean value",
37+
"properties": {
38+
"literalBoolean": {
39+
"type": "boolean",
40+
"description": "Static boolean value"
41+
}
42+
},
43+
"required": [
44+
"literalBoolean"
45+
],
46+
"additionalProperties": false
47+
},
48+
{
49+
"type": "object",
50+
"description": "Path to data model value",
51+
"properties": {
52+
"path": {
53+
"type": "string",
54+
"description": "JSON pointer path to value in data model (e.g., '/products/0/title')"
55+
}
56+
},
57+
"required": [
58+
"path"
59+
],
60+
"additionalProperties": false
61+
},
62+
{
63+
"type": "object",
64+
"description": "Literal with path binding (sets default and binds)",
65+
"properties": {
66+
"literalString": {
67+
"type": "string"
68+
},
69+
"path": {
70+
"type": "string"
71+
}
72+
},
73+
"required": [
74+
"literalString",
75+
"path"
76+
],
77+
"additionalProperties": false
78+
}
79+
]
80+
}

0 commit comments

Comments
 (0)