Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions docs/root-redirects/bindings/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=https://a2a-protocol.org/latest/topics/custom-protocol-bindings/">
<link rel="canonical" href="https://a2a-protocol.org/latest/topics/custom-protocol-bindings/">
<title>Redirecting to A2A Custom Protocol Bindings</title>
</head>
<body>
<p>Redirecting to <a href="https://a2a-protocol.org/latest/topics/custom-protocol-bindings/">A2A Custom Protocol Bindings</a>.</p>
</body>
</html>
12 changes: 12 additions & 0 deletions docs/root-redirects/extensions/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=https://a2a-protocol.org/latest/topics/extensions/">
<link rel="canonical" href="https://a2a-protocol.org/latest/topics/extensions/">
<title>Redirecting to A2A Extensions</title>
</head>
<body>
<p>Redirecting to <a href="https://a2a-protocol.org/latest/topics/extensions/">A2A Extensions</a>.</p>
</body>
</html>
9 changes: 9 additions & 0 deletions docs/topics/custom-protocol-bindings.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,15 @@ the `a2aproject` organization with the `cpb-` repository prefix (experimental
bindings use `experimental-cpb-`). A2A SDKs SHOULD implement official custom
protocol bindings.

!!! note "URI Namespaces"
The `https://a2a-protocol.org/bindings/` prefix is a canonical namespace
for globally unique binding identifiers used in Agent Cards. Individual URIs
under this prefix, such as
`https://a2a-protocol.org/bindings/{name}/v1` identify a specific binding
and version. These URIs are identifiers, HTTP access is not expected. See
[URI namespaces](extension-and-binding-governance.md#uri-namespaces) in the
governance documentation for details.

For the full governance process—including tiers, lifecycle, SDK support, and
legal requirements—see the
[Extension and Protocol Binding Governance](extension-and-binding-governance.md)
Expand Down
13 changes: 13 additions & 0 deletions docs/topics/extension-and-binding-governance.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,19 @@ Both extensions and custom protocol bindings use a two-tier system within the
| Experimental repo prefix | `experimental-ext-{name}` | `experimental-cpb-{name}` |
| Official URI prefix | `https://a2a-protocol.org/extensions/` | `https://a2a-protocol.org/bindings/` |

### URI namespaces

The official URI prefixes are canonical namespace identifiers used to
assign globally unique URIs to extensions and custom protocol bindings. Agents
and clients reference these URIs in Agent Cards, headers, and protocol messages
to declare and negotiate support.

Individual URIs under a prefix identify a specific artifact and, where applicable,
its version—for example, `https://a2a-protocol.org/extensions/{name}/v1` or
`https://a2a-protocol.org/bindings/{name}/v1`.

These URIs are identifiers, HTTP access is not expected.

### Official

Official artifacts are developed and maintained under the `a2aproject` GitHub
Expand Down
9 changes: 9 additions & 0 deletions docs/topics/extensions.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,15 @@ proposed, developed, promoted, and maintained. Official extensions use the
`a2aproject` organization with the `ext-` repository prefix (experimental
extensions use `experimental-ext-`).

!!! note "URI Namespaces"
The `https://a2a-protocol.org/extensions/` prefix is a canonical namespace
for globally unique extension identifiers used in Agent Cards and protocol
messages. Individual URIs under this prefix, such as
`https://a2a-protocol.org/extensions/{name}/v1` identify a specific
extension and version. These URIs are identifiers, HTTP access is not
expected. See [URI namespaces](extension-and-binding-governance.md#uri-namespaces)
in the governance documentation for details.

For the full governance process—including tiers, lifecycle, SDK support, and
legal requirements—see the
[Extension and Protocol Binding Governance](extension-and-binding-governance.md)
Expand Down
3 changes: 3 additions & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,9 @@ plugins:
"specification/topics/push_notifications.md": "topics/streaming-and-async.md"
"topics/index.md": "topics/what-is-a2a.md"
"topics/roadmap.md": "roadmap.md"
# Official extension and binding URI namespaces
"extensions/index.md": "topics/extensions.md"
"bindings/index.md": "topics/custom-protocol-bindings.md"
# Tutorial
"tutorials/python/index.md": "tutorials/python/1-introduction.md"
"tutorials/python/1_introduction.md": "tutorials/python/1-introduction.md"
Expand Down
17 changes: 17 additions & 0 deletions scripts/deploy_root_files.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ set -e
# --- Configuration ---
# List of files to copy from the source directory to the root of the gh-pages branch.
FILES_TO_DEPLOY=("404.html" "robots.txt" "llms.txt" "llms-full.txt")
# Directories to copy under the gh-pages root (e.g. root-redirects/extensions -> extensions/).
DIRS_TO_DEPLOY=("root-redirects/extensions" "root-redirects/bindings")
# The source directory in the main branch where these files are located.
SOURCE_DIR="docs"

Expand All @@ -29,6 +31,7 @@ GH_TOKEN=$2

echo "Deploying root-level site files for repository: $REPO_NAME"
echo "Files to deploy: ${FILES_TO_DEPLOY[*]}"
echo "Directories to deploy: ${DIRS_TO_DEPLOY[*]}"

# --- Deployment Logic ---
# Clone the gh-pages branch using the provided token for authentication.
Expand All @@ -51,6 +54,20 @@ for file in "${FILES_TO_DEPLOY[@]}"; do
fi
done

# Copy redirect directories to the gh-pages root (e.g. docs/root-redirects/extensions -> extensions/).
for dir in "${DIRS_TO_DEPLOY[@]}"; do
SOURCE_DIR_PATH="../${SOURCE_DIR}/${dir}"
TARGET_DIR="${dir#root-redirects/}"
if [ -d "$SOURCE_DIR_PATH" ]; then
echo "Copying ${dir} to ${TARGET_DIR}/..."
mkdir -p "./${TARGET_DIR}"
cp -R "${SOURCE_DIR_PATH}/." "./${TARGET_DIR}/"
git add "./${TARGET_DIR}"
else
echo "Warning: Source directory not found, skipping: $SOURCE_DIR_PATH"
fi
done

# Commit and push only if any of the files have actually changed
if git diff --staged --quiet; then
echo "Root files are up-to-date. No new commit needed."
Expand Down
Loading