-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Overview
This issue documents the three-layer conceptual architecture for the Agent Resource Protocol (ARP), clarifying the relationship between ARP, ARL, and ARI.
Concept Hierarchy
ARP - Protocol Family
The umbrella term for the entire Agent Resource Protocol specification, encompassing multiple concrete forms.
ARL - Agent Resource Locator (Complete Form)
Format: `arp:{semantic}:{transport}://{location}`
Purpose: Fully specify semantic type, transport protocol, and resource location.
Examples:
- `arp:tool:https://cdn.com/tool.wasm\`
- `arp:dpml:arr://deepractice@assistant`
- `arp:prompt:file://./local/prompt.txt`
- `arp:data:git://github.com/org/repo#main`
Use Cases:
- Development (local file references)
- Direct CDN/HTTPS resources
- Explicit transport specification required
ARI - Agent Resource Identifier (Simplified Form)
Format: `arp:{semantic}://{org}@{name}`
Purpose: Reference resources by name only, with transport defaulting to registry resolution.
Examples:
- `arp:tool://myorg@web-search`
- `arp:prompt://deepractice@assistant`
- `arp:dpml://system@default`
Use Cases:
- Production deployments (managed through registry)
- Version-agnostic references
- Centralized resource management
Resolution Flow
```
ARI → (Registry Resolution) → ARL
arp:tool://myorg@web-search
↓ (Query registry)
arp:tool:https://cdn.myorg.com/tools/web-search.wasm
```
Interface Design
```typescript
// Base protocol interface
interface AgentResourceProtocol {
protocol: "arp"
semantic: string
}
// ARL - Complete locator form
interface AgentResourceLocator extends AgentResourceProtocol {
transport: string
location: string
}
// ARI - Identifier form
interface AgentResourceIdentifier extends AgentResourceProtocol {
org?: string
name: string
// transport implicitly defaults to registry
}
// Type guards
function isARL(arp: AgentResourceProtocol): arp is AgentResourceLocator {
return 'transport' in arp && 'location' in arp
}
function isARI(arp: AgentResourceProtocol): arp is AgentResourceIdentifier {
return 'name' in arp
}
```
Usage Scenarios
Development Workflow
```yaml
Development: Direct file reference (ARL)
dev:
- arp:tool:file://./dev/my-tool.js
- arp:prompt:file://./prompts/test.txt
Testing: CDN reference (ARL)
test:
- arp:tool:https://test-cdn.com/my-tool.wasm
Production: Registry reference (ARI)
prod:
- arp:tool://myorg@my-tool
- arp:prompt://myorg@production-prompt
```
Version Management
```yaml
ARL - Locked to specific location/version
resources:
- arp:tool:https://cdn.com/tool-v2.0.wasm
ARI - Version managed by registry
resources:
- arp:tool://myorg@tool # Registry resolves to latest compatible version
```
Benefits
-
Conceptual Clarity
- ARP = Protocol family
- ARL = Explicit, complete form
- ARI = Simplified, registry-managed form
-
Flexibility
- Choose ARL when you need explicit control
- Choose ARI when you want registry management
-
Smooth Transition
- Develop with ARL (file://)
- Test with ARL (https://)
- Deploy with ARI (registry)
Next Steps
- Implement parser to distinguish ARL vs ARI formats
- Define registry resolution API for ARI
- Update RFC to document ARL/ARI concepts
- Create examples for both forms
Related Issues
- ARP RFC v1.0.0 Draft Complete #6 ARP RFC v1.0.0 Draft