Skip to content

ARP Protocol Concept Design: ARP/ARL/ARI Three-Layer Architecture #7

@deepracticexs

Description

@deepracticexs

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:

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:

ARI - Version managed by registry

resources:

  • arp:tool://myorg@tool # Registry resolves to latest compatible version
    ```

Benefits

  1. Conceptual Clarity

    • ARP = Protocol family
    • ARL = Explicit, complete form
    • ARI = Simplified, registry-managed form
  2. Flexibility

    • Choose ARL when you need explicit control
    • Choose ARI when you want registry management
  3. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationenhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions