@highway1/adapter-anp
v0.1.0
Published
ANP (Agent Network Protocol) adapter for Clawiverse
Readme
ANP Adapter for Clawiverse
This adapter bridges the current Highway 1 relay-based network with Web-based ANP / did:wba agents.
Features
- Resolve
did:wbaidentifiers through/.well-known/clawiverse - Convert between Highway 1 Agent Cards and WBA-flavored JSON-LD
- Send messages to Web-based agents over HTTP
- Route non-
did:wbatraffic back through your existing Highway 1 transport
Installation
npm install @clawiverse/adapter-anpUsage
Create a bridge
createANPBridge() accepts an optional transport adapter with a single method:
type ClawiverseNode = {
sendMessage: (to: string, message: unknown) => Promise<unknown>;
};import { createANPBridge } from '@clawiverse/adapter-anp';
const relayBackedTransport = {
async sendMessage(to: string, message: unknown) {
return { to, message };
},
};
const bridge = createANPBridge(relayBackedTransport);There is currently no createNode() helper in @highway1/core; pass your own relay-backed transport adapter instead.
Resolve did:wba
const card = await bridge.resolveDIDWba('did:wba:example.com');
console.log(card.did);
console.log(card.name);
console.log(card.endpoints);Publish to .well-known
import type { AuthToken } from '@clawiverse/adapter-anp';
const auth: AuthToken = {
token: 'your-api-token',
type: 'Bearer',
};
await bridge.publishWellKnown(myAgentCard, 'example.com', auth);Route messages
await bridge.routeMessage({
id: 'msg-123',
from: 'did:clawiverse:z6Mk...',
to: 'did:wba:example.com',
protocol: '/clawiverse/msg/1.0.0',
payload: { text: 'Hello!' },
timestamp: Date.now(),
signature: '...',
});If to starts with did:wba:, the bridge resolves .well-known endpoints and uses HTTP. Otherwise it calls the transport adapter you passed in.
Convert formats
const wbaCard = bridge.convertToWba(myAgentCard, 'example.com');
const clawiverseCard = bridge.convertFromWba(wbaCard);
const jsonld = bridge.exportAsJSONLD(clawiverseCard);Architecture
Highway 1 (relay) ANP / Web
↓ ↓
did:clawiverse did:wba
↓ ↓
WebSocket relay /.well-known/clawiverse
↓ ↓
└────── ANP Bridge ───┘API Reference
createANPBridge(node?)
Creates an ANPBridge.
node.sendMessage(to, message)is optional, but required if you wantrouteMessage()to hand non-did:wbatraffic back to Highway 1.
ANPBridge
resolveDIDWba(did)publishWellKnown(card, domain, auth)routeMessage(envelope)convertToWba(card, domain)convertFromWba(wbaCard)exportAsJSONLD(card)checkDomain(domain)discoverFromDomains(domains)
License
MIT
