Skip to content

Conversation

@bokelley
Copy link
Contributor

@bokelley bokelley commented Jan 6, 2026

Summary

  • Adds typed extensions infrastructure enabling formal JSON schemas for vendor-agnostic extension data in ext.{namespace} fields
  • Implements auto-discovery of extensions during schema build with version filtering via valid_from/valid_until
  • Adds extensions_supported field to agent card for declaring typed extension support
  • Includes comprehensive test suite for extension infrastructure

Features

Extension Meta Schema (extension-meta.json)

  • Defines structure all extension files must follow
  • valid_from (required): Minimum AdCP version (e.g., "2.5")
  • valid_until (optional): Maximum AdCP version for deprecation

Auto-Discovery Build System

  • Extensions placed in /schemas/source/extensions/{namespace}.json are auto-discovered
  • Build script filters extensions by version compatibility for each release
  • Registry (extensions/index.json) is auto-generated with valid extensions

Agent Card Extension Support

  • New extensions_supported array field in adcp extension
  • Agents declare which typed extensions they support
  • Enables SDK code generation and schema validation

How It Works

  1. Create extension file at /schemas/source/extensions/{namespace}.json
  2. Follow the meta schema with valid_from specifying minimum AdCP version
  3. Build script discovers and includes in appropriate versioned builds
  4. Agents declare support via extensions_supported: ["namespace"]
  5. Clients can validate ext.{namespace} data against typed schemas

Test plan

  • npm run test:extension-schemas passes
  • Build script generates extension registry correctly
  • Extension meta schema validates extension structure
  • Agent card accepts extensions_supported field
  • Documentation is clear and accurate

🤖 Generated with Claude Code

@bokelley bokelley force-pushed the bokelley/typed-extensions branch from 093eaec to 8880f6d Compare January 6, 2026 14:18
Typed extensions provide formal JSON schemas for vendor-agnostic
extension data in `ext.{namespace}` fields. This enables SDK code
generation, schema validation, and cross-vendor interoperability.

**New features:**
- Extension meta schema defining valid_from/valid_until version bounds
- Auto-discovery of extensions during schema build
- Version-filtered extension registries per schema version
- New `extensions_supported` field in agent card adcp extension
- Comprehensive test suite for extension infrastructure

**How it works:**
1. Extensions are defined in `/schemas/source/extensions/{namespace}.json`
2. Build script auto-discovers extensions and filters by version compatibility
3. Each versioned build includes only compatible extensions in registry
4. Agents declare supported extensions via `extensions_supported` array

This is a MINOR release adding new optional capabilities without
breaking existing functionality.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
bokelley and others added 2 commits January 8, 2026 06:54
Updates documentation to be compliant with both protocol specs:

**A2A Agent Cards:**
- Changed from `extensions.adcp` object to proper A2A `extensions[]` array format
- Each extension now has uri, description, required, and params fields
- Extension URI: https://adcontextprotocol.org/extensions/adcp

**MCP Server Cards:**
- Added support for declaring AdCP via `_meta['adcontextprotocol.org']`
- Supports both `/.well-known/mcp.json` and `/.well-known/server.json`
- Uses reverse DNS namespacing per MCP server.json spec

**Extension Params Schema:**
- Updated description to clarify usage in both protocols
- Same params structure works for both A2A and MCP

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
The JSON schema validation test was failing because it tried to
validate against https://registry.modelcontextprotocol.io/server.schema.json
which is an external schema we don't have locally.

Removed the $schema field from MCP server card examples since they
reference an external MCP registry schema, not an AdCP schema.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Copy link
Collaborator

@BaiyuScope3 BaiyuScope3 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Addresses PR review feedback:

**Reserved Namespaces (@BaiyuScope3)**
- Added RESERVED_NAMESPACES list: adcp, core, protocol, schema, meta, ext, context
- Build script now validates and rejects reserved namespaces
- Documented in extensions reference

**Deprecation Policy (@BaiyuScope3)**
- Added "Extension Deprecation Policy" section with:
  - When extensions may be deprecated (superseded, promoted, low adoption, incompatible)
  - Standard deprecation process (valid_until + 1 minor, CHANGELOG, migration guide)
  - Emergency deprecation for security issues

**Tests**
- Added test verifying reserved namespaces are not used

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
@bokelley bokelley merged commit c94fe34 into 2.6.x Jan 9, 2026
7 checks passed
@bokelley bokelley deleted the bokelley/typed-extensions branch January 9, 2026 02:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants