Skip to content
Closed
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
4 changes: 2 additions & 2 deletions adr/0009-urn-nid-length-air.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ The Agentic Resource Discovery (ARD) specification initially utilized the `urn:a
We are changing the primary URN namespace identifier (NID) from `ai` to `air` to ensure the NID is at least three characters long.

The new pattern will be:
`urn:air:<publisher>:<namespace>:<agent-name>`
`urn:ai:<publisher>:<namespace>:<agent-name>`

This change also aligns with the latest agreed alignments across with ai-catalog.

## Consequences
- All schema references, OpenAPI documents, CDDL specifications, and mock data have been updated to use `urn:air:` instead of `urn:ai:`.
- All schema references, OpenAPI documents, CDDL specifications, and mock data have been updated to use `urn:ai:` instead of `urn:ai:`.
- This ensures full compliance with standard URN parsers and avoids short-identifier constraint issues.
- Implementers must update their identifier schemas to use the `air` NID.
2 changes: 1 addition & 1 deletion conformance/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ When checking a capability manifest (`ai-catalog.json`), the tool executes the f
* **JSON Structural Integrity**: Parses the manifest payload to ensure it is valid, uncorrupted JSON.
* **JSON Schema Draft 2020-12 Conformance**: If the Python `jsonschema` library is installed (`pip install jsonschema`), the tool automatically runs a strict schema-level validation using the official [ai-catalog.schema.json](../spec/schemas/ai-catalog.schema.json) file.
* **Strict URN Pattern Matching**: Enforces that each entry's `identifier` adheres strictly to the domain-anchored URN namespace format defined in the spec:
`urn:air:<publisher>:<namespace>:<agent-name>` (RFC 8141).
`urn:ai:<publisher>:<namespace>:<agent-name>` (RFC 8141).
* **Value-or-Reference Delivery**: Enforces the mutual exclusivity constraint of the specification. Each entry **MUST** contain precisely one of either `"url"` (remote reference) or `"data"` (embedded payload), and will fail if both or neither are provided.
* **Ecosystem Attributes Validation**:
* Checks that `"representativeQueries"` contains between **2 to 5** natural-language queries to ensure high-performance semantic vector embeddings.
Expand Down
8 changes: 4 additions & 4 deletions conformance/bin/conformance-test
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ import json
import urllib.request
import urllib.error

# Strict URN Regex matching urn:air:<publisher>:<namespace>:<agent-name>
URN_REGEX = re.compile(r"^urn:air:([a-zA-Z0-9.-]+)(?::([a-zA-Z0-9._:-]+))?:([a-zA-Z0-9._-]+)$")
# Strict URN Regex matching urn:ai:<publisher>:<namespace>:<agent-name>
URN_REGEX = re.compile(r"^urn:ai:([a-zA-Z0-9.-]+)(?::([a-zA-Z0-9._:-]+))?:([a-zA-Z0-9._-]+)$")

# Colors for beautiful CLI output
COLOR_RESET = "\033[0m"
Expand Down Expand Up @@ -125,7 +125,7 @@ class ConformanceTester:
# URN pattern checks
match = URN_REGEX.match(ident)
if not match:
self.add_error(f"[{label}] Identifier '{ident}' does not match RFC 8141 URN pattern 'urn:air:<publisher>:<namespace>:<agent-name>'.")
self.add_error(f"[{label}] Identifier '{ident}' does not match RFC 8141 URN pattern 'urn:ai:<publisher>:<namespace>:<agent-name>'.")
else:
publisher, namespace, name = match.groups()
print_success(f"[{label}] Valid URN format. Publisher: '{publisher}', Name: '{name}'.")
Expand All @@ -145,7 +145,7 @@ class ConformanceTester:
"application/mcp-server-card+json",
"application/agent-skills+zip",
"application/agent-skills+gzip",
"text/markdown; profile=\"urn:air:agent-skills\"",
"text/markdown; profile=\"urn:ai:agent-skills\"",
"application/ai-registry",
"application/ai-registry+json"
]
Expand Down
8 changes: 4 additions & 4 deletions conformance/examples/ai-catalog.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
},
"entries": [
{
"identifier": "urn:air:acme.com:agent:assistant",
"identifier": "urn:ai:acme.com:agent:assistant",
"displayName": "Corporate Assistant (A2A)",
"type": "application/a2a-agent-card+json",
"url": "https://api.acme.com/agents/assistant.json",
Expand All @@ -17,7 +17,7 @@
]
},
{
"identifier": "urn:air:acme.com:server:weather",
"identifier": "urn:ai:acme.com:server:weather",
"displayName": "Weather Data Node",
"type": "application/mcp-server-card+json",
"url": "https://api.acme.com/mcp/weather.json",
Expand All @@ -29,14 +29,14 @@
]
},
{
"identifier": "urn:air:acme.com:catalog:engineering",
"identifier": "urn:ai:acme.com:catalog:engineering",
"displayName": "Engineering Sub-Catalog Reference",
"type": "application/ai-catalog+json",
"url": "https://acme.com/catalogs/engineering.json",
"description": "Nested catalog containing CI/CD and internal deployment agents."
},
{
"identifier": "urn:air:acme.com:tool:unit-converter",
"identifier": "urn:ai:acme.com:tool:unit-converter",
"displayName": "Unit Converter",
"type": "application/mcp-server-card+json",
"url": "https://api.acme.com/mcp/unit-converter.json"
Expand Down
8 changes: 4 additions & 4 deletions conformance/examples/registry-server.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
# Mock catalog database seeded from spec/examples/ai-catalog.json
MOCK_CATALOG_ENTRIES = [
{
"identifier": "urn:air:acme.com:agent:assistant",
"identifier": "urn:ai:acme.com:agent:assistant",
"displayName": "Corporate Assistant (A2A)",
"type": "application/a2a-agent-card+json",
"url": "https://api.acme.com/agents/assistant.json",
Expand All @@ -28,7 +28,7 @@
]
},
{
"identifier": "urn:air:acme.com:server:weather",
"identifier": "urn:ai:acme.com:server:weather",
"displayName": "Weather Data Node",
"type": "application/mcp-server-card+json",
"url": "https://api.acme.com/mcp/weather.json",
Expand All @@ -40,14 +40,14 @@
]
},
{
"identifier": "urn:air:acme.com:catalog:engineering",
"identifier": "urn:ai:acme.com:catalog:engineering",
"displayName": "Engineering Sub-Catalog Reference",
"type": "application/ai-catalog+json",
"url": "https://acme.com/catalogs/engineering.json",
"description": "Nested catalog containing CI/CD and internal deployment agents."
},
{
"identifier": "urn:air:acme.com:tool:unit-converter",
"identifier": "urn:ai:acme.com:tool:unit-converter",
"displayName": "Unit Converter",
"type": "application/mcp-server-card+json",
"url": "https://api.acme.com/mcp/unit-converter.json"
Expand Down
Loading