@agnt-id/agent0
v0.1.2
Published
Bridge between .agnt names and ERC-8004 agent identities
Maintainers
Readme
@agnt-id/agent0
Bridge between .agnt names and ERC-8004 agent identities.
.agnt and ERC-8004 (Agent0) are complementary — Agent0 is an identity registry (like a tax ID), .agnt is a naming system (like a domain name). This package converts between the two formats in both directions.
Install
npm i @agnt-id/agent0Or install everything at once:
npm i @agnt-id/sdkQuick Start
.agnt → ERC-8004 Registration File
import { AgntClient } from "@agnt-id/resolve";
import { toRegistrationFile } from "@agnt-id/agent0";
const agnt = new AgntClient();
const resolved = await agnt.resolve("alice.agnt");
const file = toRegistrationFile(resolved, {
agentURI: "https://alice.example.com/.well-known/agent.json",
});
console.log(JSON.stringify(file, null, 2));
// {
// "type": "https://eips.ethereum.org/EIPS/eip-8004#registration-v1",
// "agentURI": "https://alice.example.com/.well-known/agent.json",
// "services": [{ "name": "a2a", "endpoint": "...", ... }],
// "registrations": [{ "agentId": "42", "agentRegistry": "eip155:1:0x..." }],
// ...
// }ERC-8004 → .agnt Records
import { fromRegistrationFile } from "@agnt-id/agent0";
const agntFields = fromRegistrationFile(registrationFile);
console.log(agntFields.a2a); // endpoint from services
console.log(agntFields.identity); // "eip155:1:0xRegistry:42"
console.log(agntFields.skills); // ["defi", "trading"]One-step resolve + convert
import { fromAgnt } from "@agnt-id/agent0";
// Requires @agnt-id/resolve as a peer dependency
const file = await fromAgnt("alice.agnt", {
agentURI: "https://alice.example.com/.well-known/agent.json",
});Parse Identity Links
import { parseIdentityLink, formatIdentityLink } from "@agnt-id/agent0";
const link = parseIdentityLink("eip155:1:0x275ceA...9cd2:42");
// { chainId: "1", registry: "0x275ceA...9cd2", agentId: "42" }
formatIdentityLink(link);
// "eip155:1:0x275ceA...9cd2:42"API
toRegistrationFile(agnt, options?): Agent0RegistrationFile
Convert a resolved .agnt name to an ERC-8004 registration file.
| Option | Type | Description |
|--------|------|-------------|
| agentURI | string | The agent's canonical URI |
| chainId | string | Chain ID override (default: from identity link or "1") |
fromRegistrationFile(file): Partial<AgntRecord>
Convert an ERC-8004 registration file to .agnt record fields.
fromAgnt(name, options?): Promise<Agent0RegistrationFile>
Resolve + convert in one call. Requires @agnt-id/resolve as a peer dependency.
parseIdentityLink(identity): AgntIdentityLink
Parse an identity string like eip155:1:0xAddr:42 into { chainId, registry, agentId }.
formatIdentityLink(link): string
Format an identity link back to its string representation.
Types
import type {
Agent0RegistrationFile,
Agent0Service,
Agent0Registration,
Agent0FeedbackFile,
AgntIdentityLink,
ToRegistrationFileOptions,
} from "@agnt-id/agent0";Links
License
MIT
