@agentdomain/sdk 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -0
- package/dist/index.d.ts +243 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +953 -0
- package/dist/index.js.map +1 -0
- package/package.json +37 -0
package/README.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# @agentdomain/sdk
|
|
2
|
+
|
|
3
|
+
TypeScript SDK for AgentDomain, the autonomous identity stack for AI agents.
|
|
4
|
+
|
|
5
|
+
AgentDomain provides domain, DNS, SSL, email, Basename, ENS, x402 USDC checkout, AgentID NFT, renewal controls, and per-agent service plans.
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @agentdomain/sdk viem
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
import { AgentDomain } from '@agentdomain/sdk';
|
|
13
|
+
|
|
14
|
+
const ad = new AgentDomain({
|
|
15
|
+
apiUrl: 'https://agentdomain.app/api/v1',
|
|
16
|
+
walletClient,
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
const quote = await ad.quote({
|
|
20
|
+
preferredName: 'research-agent',
|
|
21
|
+
tld: 'xyz',
|
|
22
|
+
registerBasename: true,
|
|
23
|
+
registerEns: false,
|
|
24
|
+
emailEnabled: true,
|
|
25
|
+
});
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
The SDK handles x402 payment challenges for registration, RenewalVault funding, and service-plan purchases when a `walletClient` is provided.
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import { type Address, type Hex, type WalletClient, type PublicClient, type Transport, type Chain, type Account } from 'viem';
|
|
2
|
+
import type { DnsRecord, RegistrationParams, RegistrationResult, EmailMessage, RenewalPriceSnapshot, ServicePlanEntitlement, ServicePlanInterval, ServicePlanKey } from '@agentdomain/shared';
|
|
3
|
+
export interface AgentDomainOptions {
|
|
4
|
+
apiUrl?: string;
|
|
5
|
+
apiKey?: string;
|
|
6
|
+
walletClient?: WalletClient<Transport, Chain, Account>;
|
|
7
|
+
publicClient?: PublicClient<Transport, Chain>;
|
|
8
|
+
network?: 'base' | 'base-sepolia';
|
|
9
|
+
renewalVaultAddress?: Address;
|
|
10
|
+
}
|
|
11
|
+
export interface AvailabilityResult {
|
|
12
|
+
available: boolean;
|
|
13
|
+
domain?: string;
|
|
14
|
+
reason?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface QuoteResult {
|
|
17
|
+
domain: string;
|
|
18
|
+
basename?: string;
|
|
19
|
+
ensName?: string;
|
|
20
|
+
years: number;
|
|
21
|
+
domainCostUsdc: string;
|
|
22
|
+
basenameCostUsdc: string;
|
|
23
|
+
ensCostUsdc: string;
|
|
24
|
+
serviceFeeUsdc: string;
|
|
25
|
+
emailFeeUsdc: string;
|
|
26
|
+
sslCertificationFeeUsdc: string;
|
|
27
|
+
providerCostUsdc?: string;
|
|
28
|
+
treasuryFeeUsdc?: string;
|
|
29
|
+
totalUsdc: string;
|
|
30
|
+
discountApplied: boolean;
|
|
31
|
+
discountPercent: number;
|
|
32
|
+
}
|
|
33
|
+
export type RegisterArgs = Omit<RegistrationParams, 'wallet' | 'tld' | 'registerBasename' | 'registerEns' | 'emailEnabled' | 'years' | 'autoRenew'> & {
|
|
34
|
+
wallet?: Address;
|
|
35
|
+
tld?: RegistrationParams['tld'];
|
|
36
|
+
registerBasename?: boolean;
|
|
37
|
+
registerEns?: boolean;
|
|
38
|
+
emailEnabled?: boolean;
|
|
39
|
+
years?: number;
|
|
40
|
+
autoRenew?: boolean;
|
|
41
|
+
};
|
|
42
|
+
export interface AgentRow {
|
|
43
|
+
id: string;
|
|
44
|
+
domain: string;
|
|
45
|
+
basename?: string;
|
|
46
|
+
ensName?: string;
|
|
47
|
+
status: string;
|
|
48
|
+
walletAddress: Address;
|
|
49
|
+
ownerAddress: Address;
|
|
50
|
+
}
|
|
51
|
+
export interface EmailResult {
|
|
52
|
+
id: string;
|
|
53
|
+
status: string;
|
|
54
|
+
}
|
|
55
|
+
export interface EmailListResult {
|
|
56
|
+
inbox: unknown;
|
|
57
|
+
messages: EmailMessage[];
|
|
58
|
+
}
|
|
59
|
+
export interface VaultFundResult {
|
|
60
|
+
success: boolean;
|
|
61
|
+
depositTxHash: string;
|
|
62
|
+
autoRenewEnabled: boolean;
|
|
63
|
+
autoRenewTxHash: string | null;
|
|
64
|
+
vaultBalance: string;
|
|
65
|
+
agentId: string;
|
|
66
|
+
domain: string;
|
|
67
|
+
}
|
|
68
|
+
export interface VaultWithdrawResult {
|
|
69
|
+
chainId: number;
|
|
70
|
+
to: Address;
|
|
71
|
+
data: Hex;
|
|
72
|
+
value: '0';
|
|
73
|
+
functionName: 'withdraw';
|
|
74
|
+
args: {
|
|
75
|
+
tokenId: string;
|
|
76
|
+
amount: string;
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
export interface RenewalStatus {
|
|
80
|
+
agentId: string;
|
|
81
|
+
domain: string;
|
|
82
|
+
tokenId: string | null;
|
|
83
|
+
autoRenewEnabled: boolean;
|
|
84
|
+
vaultBalanceUsdc: string;
|
|
85
|
+
vaultBalanceAtomic: string;
|
|
86
|
+
vaultBalance: string;
|
|
87
|
+
pendingRenewalAmountUsdc?: string;
|
|
88
|
+
pendingRenewalAmountAtomic?: string;
|
|
89
|
+
renewalFeeUsdc: string;
|
|
90
|
+
renewalFeeAtomic: string;
|
|
91
|
+
nextRenewalAmountUsdc: string;
|
|
92
|
+
nextRenewalAmountAtomic: string;
|
|
93
|
+
shortfallUsdc: string;
|
|
94
|
+
shortfallAtomic: string;
|
|
95
|
+
requiredAmount: string;
|
|
96
|
+
hasEnoughBalanceForNextRenewal: boolean;
|
|
97
|
+
isFunded: boolean;
|
|
98
|
+
estimatedYearsCovered: number;
|
|
99
|
+
expiresAt: string | null;
|
|
100
|
+
renewableFrom: string | null;
|
|
101
|
+
daysUntilExpiry: number | null;
|
|
102
|
+
renewalWindowDays: number;
|
|
103
|
+
renewalDurationDays: number;
|
|
104
|
+
isRenewableNow: boolean;
|
|
105
|
+
status: string;
|
|
106
|
+
message: string;
|
|
107
|
+
warning?: string | null;
|
|
108
|
+
warnings?: string[];
|
|
109
|
+
renewalBreakdown?: {
|
|
110
|
+
years: number;
|
|
111
|
+
domainRenewalCostUsdc: string;
|
|
112
|
+
domainRenewalCostAtomic: string;
|
|
113
|
+
sslCertificationFeeUsdc: string;
|
|
114
|
+
sslCertificationFeeAtomic: string;
|
|
115
|
+
emailFeeUsdc: string;
|
|
116
|
+
emailFeeAtomic: string;
|
|
117
|
+
totalUsdc: string;
|
|
118
|
+
totalAtomic: string;
|
|
119
|
+
};
|
|
120
|
+
renewalSnapshot?: RenewalPriceSnapshot | null;
|
|
121
|
+
ownerAddress: string;
|
|
122
|
+
}
|
|
123
|
+
export interface AutoRenewResult {
|
|
124
|
+
agentId: string;
|
|
125
|
+
tokenId: string;
|
|
126
|
+
enabled: boolean;
|
|
127
|
+
changed: boolean;
|
|
128
|
+
txHash: Hex | null;
|
|
129
|
+
}
|
|
130
|
+
export interface SslReconfigureResult {
|
|
131
|
+
ok: true;
|
|
132
|
+
agentId: string;
|
|
133
|
+
domain: string;
|
|
134
|
+
cloudflareCustomHostnameId: string;
|
|
135
|
+
hostnameStatus: string;
|
|
136
|
+
sslStatus: string;
|
|
137
|
+
validationRecordsCount: number;
|
|
138
|
+
recordsCount: number;
|
|
139
|
+
}
|
|
140
|
+
export interface ServicePlanStatusResult {
|
|
141
|
+
agentId: string;
|
|
142
|
+
domain: string;
|
|
143
|
+
entitlement: ServicePlanEntitlement;
|
|
144
|
+
subscription: unknown | null;
|
|
145
|
+
purchases: unknown[];
|
|
146
|
+
catalog: Record<string, unknown>;
|
|
147
|
+
}
|
|
148
|
+
export interface ServicePlanPurchaseResult {
|
|
149
|
+
success: true;
|
|
150
|
+
agentId: string;
|
|
151
|
+
domain: string;
|
|
152
|
+
paymentTxHash: string | null;
|
|
153
|
+
amountUsdc: string;
|
|
154
|
+
subscription: unknown;
|
|
155
|
+
purchase: unknown;
|
|
156
|
+
entitlement: ServicePlanEntitlement;
|
|
157
|
+
}
|
|
158
|
+
export declare class AgentDomain {
|
|
159
|
+
private apiUrl;
|
|
160
|
+
private apiKey?;
|
|
161
|
+
private renewalVaultAddress?;
|
|
162
|
+
readonly walletClient?: WalletClient<Transport, Chain, Account>;
|
|
163
|
+
readonly publicClient?: PublicClient<Transport, Chain>;
|
|
164
|
+
readonly network: 'base' | 'base-sepolia';
|
|
165
|
+
constructor(opts?: AgentDomainOptions);
|
|
166
|
+
checkAvailability(name: string, opts: {
|
|
167
|
+
tld: string;
|
|
168
|
+
}): Promise<AvailabilityResult>;
|
|
169
|
+
quote(args: {
|
|
170
|
+
preferredName: string;
|
|
171
|
+
tld: string;
|
|
172
|
+
registerBasename?: boolean;
|
|
173
|
+
basenameLabel?: string;
|
|
174
|
+
registerEns?: boolean;
|
|
175
|
+
ensLabel?: string;
|
|
176
|
+
emailEnabled?: boolean;
|
|
177
|
+
years?: number;
|
|
178
|
+
discountCode?: string;
|
|
179
|
+
}): Promise<QuoteResult>;
|
|
180
|
+
register(args: RegisterArgs): Promise<RegistrationResult>;
|
|
181
|
+
private buildX402Payment;
|
|
182
|
+
private buildEip3009Authorization;
|
|
183
|
+
getAgentsByWallet(wallet: Address): Promise<AgentRow[]>;
|
|
184
|
+
getAgent(wallet: Address): Promise<AgentRow | null>;
|
|
185
|
+
search(args: {
|
|
186
|
+
q?: string;
|
|
187
|
+
framework?: string;
|
|
188
|
+
capability?: string;
|
|
189
|
+
limit?: number;
|
|
190
|
+
}): Promise<{
|
|
191
|
+
items: AgentRow[];
|
|
192
|
+
total: number;
|
|
193
|
+
}>;
|
|
194
|
+
sendEmail(agentId: string, args: {
|
|
195
|
+
to: string | string[];
|
|
196
|
+
subject: string;
|
|
197
|
+
text: string;
|
|
198
|
+
replyTo?: string;
|
|
199
|
+
}): Promise<EmailResult>;
|
|
200
|
+
listEmail(agentId: string, args?: {
|
|
201
|
+
limit?: number;
|
|
202
|
+
unreadOnly?: boolean;
|
|
203
|
+
}): Promise<EmailListResult>;
|
|
204
|
+
listDnsRecords(agentId: string): Promise<DnsRecord[]>;
|
|
205
|
+
createDnsRecord(agentId: string, record: Omit<DnsRecord, 'id'>): Promise<DnsRecord>;
|
|
206
|
+
updateDnsRecord(agentId: string, recordId: string, record: Partial<DnsRecord>): Promise<DnsRecord>;
|
|
207
|
+
deleteDnsRecord(agentId: string, recordId: string): Promise<{
|
|
208
|
+
success: boolean;
|
|
209
|
+
}>;
|
|
210
|
+
fundRenewalVault(agentId: string, amountUsdc: string): Promise<VaultFundResult>;
|
|
211
|
+
getRenewalStatus(agentId: string): Promise<RenewalStatus>;
|
|
212
|
+
setAutoRenew(agentId: string, enabled: boolean, opts?: {
|
|
213
|
+
renewalVaultAddress?: Address;
|
|
214
|
+
waitForReceipt?: boolean;
|
|
215
|
+
}): Promise<AutoRenewResult>;
|
|
216
|
+
withdrawFromVault(agentId: string, amountUsdc: string): Promise<VaultWithdrawResult>;
|
|
217
|
+
reconfigureSsl(agentId: string): Promise<SslReconfigureResult>;
|
|
218
|
+
getServicePlan(agentId: string): Promise<ServicePlanStatusResult>;
|
|
219
|
+
purchaseServicePlan(args: {
|
|
220
|
+
agentId: string;
|
|
221
|
+
plan: Exclude<ServicePlanKey, 'included'>;
|
|
222
|
+
interval: ServicePlanInterval;
|
|
223
|
+
autoRenew?: boolean;
|
|
224
|
+
prepayPeriods?: number;
|
|
225
|
+
}): Promise<ServicePlanPurchaseResult>;
|
|
226
|
+
private authHeaders;
|
|
227
|
+
}
|
|
228
|
+
export declare function createOpenAITools(): Array<{
|
|
229
|
+
type: 'function';
|
|
230
|
+
function: {
|
|
231
|
+
name: string;
|
|
232
|
+
description: string;
|
|
233
|
+
parameters: Record<string, unknown>;
|
|
234
|
+
};
|
|
235
|
+
}>;
|
|
236
|
+
export declare function createAnthropicTools(): Array<{
|
|
237
|
+
name: string;
|
|
238
|
+
description: string;
|
|
239
|
+
input_schema: Record<string, unknown>;
|
|
240
|
+
}>;
|
|
241
|
+
export declare function runAgentDomainTool(ad: AgentDomain, name: string, args: Record<string, unknown>): Promise<unknown>;
|
|
242
|
+
export declare function formatAgentDomainToolResult(result: unknown): string;
|
|
243
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,953 @@
|
|
|
1
|
+
import { keccak256, toHex, getAddress, } from 'viem';
|
|
2
|
+
import { base, baseSepolia } from 'viem/chains';
|
|
3
|
+
import { AGENTDOMAIN_API_BASE_URL, X402_PAYMENT_HEADER, X402_PAYMENT_REQUIRED_HEADER, } from '@agentdomain/shared/constants';
|
|
4
|
+
const EIP3009_TYPES = {
|
|
5
|
+
TransferWithAuthorization: [
|
|
6
|
+
{ name: 'from', type: 'address' },
|
|
7
|
+
{ name: 'to', type: 'address' },
|
|
8
|
+
{ name: 'value', type: 'uint256' },
|
|
9
|
+
{ name: 'validAfter', type: 'uint256' },
|
|
10
|
+
{ name: 'validBefore', type: 'uint256' },
|
|
11
|
+
{ name: 'nonce', type: 'bytes32' },
|
|
12
|
+
],
|
|
13
|
+
};
|
|
14
|
+
const RENEWAL_VAULT_ABI = [
|
|
15
|
+
{
|
|
16
|
+
type: 'function',
|
|
17
|
+
name: 'setAutoRenew',
|
|
18
|
+
stateMutability: 'nonpayable',
|
|
19
|
+
inputs: [
|
|
20
|
+
{ name: 'tokenId', type: 'uint256' },
|
|
21
|
+
{ name: 'enabled', type: 'bool' },
|
|
22
|
+
],
|
|
23
|
+
outputs: [],
|
|
24
|
+
},
|
|
25
|
+
];
|
|
26
|
+
export class AgentDomain {
|
|
27
|
+
apiUrl;
|
|
28
|
+
apiKey;
|
|
29
|
+
renewalVaultAddress;
|
|
30
|
+
walletClient;
|
|
31
|
+
publicClient;
|
|
32
|
+
network;
|
|
33
|
+
constructor(opts) {
|
|
34
|
+
this.apiUrl = opts?.apiUrl ?? AGENTDOMAIN_API_BASE_URL;
|
|
35
|
+
this.apiKey = opts?.apiKey;
|
|
36
|
+
this.walletClient = opts?.walletClient;
|
|
37
|
+
this.publicClient = opts?.publicClient;
|
|
38
|
+
this.network = opts?.network ?? 'base';
|
|
39
|
+
this.renewalVaultAddress = opts?.renewalVaultAddress;
|
|
40
|
+
}
|
|
41
|
+
async checkAvailability(name, opts) {
|
|
42
|
+
const url = `${this.apiUrl}/domains/availability?name=${encodeURIComponent(name)}&tld=${encodeURIComponent(opts.tld)}`;
|
|
43
|
+
const res = await fetch(url);
|
|
44
|
+
if (!res.ok)
|
|
45
|
+
throw new Error(await responseError(res));
|
|
46
|
+
return res.json();
|
|
47
|
+
}
|
|
48
|
+
async quote(args) {
|
|
49
|
+
const params = new URLSearchParams();
|
|
50
|
+
params.set('preferredName', args.preferredName);
|
|
51
|
+
params.set('tld', args.tld);
|
|
52
|
+
if (args.registerBasename !== undefined)
|
|
53
|
+
params.set('registerBasename', String(args.registerBasename));
|
|
54
|
+
if (args.basenameLabel)
|
|
55
|
+
params.set('basenameLabel', args.basenameLabel);
|
|
56
|
+
if (args.registerEns !== undefined)
|
|
57
|
+
params.set('registerEns', String(args.registerEns));
|
|
58
|
+
if (args.ensLabel)
|
|
59
|
+
params.set('ensLabel', args.ensLabel);
|
|
60
|
+
if (args.emailEnabled !== undefined)
|
|
61
|
+
params.set('emailEnabled', String(args.emailEnabled));
|
|
62
|
+
if (args.years)
|
|
63
|
+
params.set('years', String(args.years));
|
|
64
|
+
if (args.discountCode)
|
|
65
|
+
params.set('discountCode', args.discountCode);
|
|
66
|
+
const url = `${this.apiUrl}/agents/quote?${params.toString()}`;
|
|
67
|
+
const res = await fetch(url);
|
|
68
|
+
if (!res.ok)
|
|
69
|
+
throw new Error(await responseError(res));
|
|
70
|
+
return res.json();
|
|
71
|
+
}
|
|
72
|
+
async register(args) {
|
|
73
|
+
const walletAddress = (args.wallet || this.walletClient?.account?.address);
|
|
74
|
+
if (!walletAddress) {
|
|
75
|
+
throw new Error('Registration requires a wallet address. Pass args.wallet or provide a walletClient with an account.');
|
|
76
|
+
}
|
|
77
|
+
const url = `${this.apiUrl}/agents/register`;
|
|
78
|
+
const body = JSON.stringify({
|
|
79
|
+
...args,
|
|
80
|
+
wallet: walletAddress,
|
|
81
|
+
tld: args.tld ?? 'xyz',
|
|
82
|
+
registerBasename: args.registerBasename ?? true,
|
|
83
|
+
registerEns: args.registerEns ?? false,
|
|
84
|
+
emailEnabled: args.emailEnabled ?? false,
|
|
85
|
+
years: args.years ?? 1,
|
|
86
|
+
autoRenew: args.autoRenew ?? false,
|
|
87
|
+
});
|
|
88
|
+
let res = await fetch(url, {
|
|
89
|
+
method: 'POST',
|
|
90
|
+
headers: await this.authHeaders({ 'Content-Type': 'application/json' }),
|
|
91
|
+
body,
|
|
92
|
+
});
|
|
93
|
+
if (res.status === 402) {
|
|
94
|
+
if (!this.walletClient || !walletAddress) {
|
|
95
|
+
throw new Error('Registration requires x402 payment. Provide a walletClient in AgentDomain constructor so the SDK can sign the USDC authorization.');
|
|
96
|
+
}
|
|
97
|
+
const paymentRequiredHeader = res.headers.get(X402_PAYMENT_REQUIRED_HEADER);
|
|
98
|
+
if (!paymentRequiredHeader) {
|
|
99
|
+
throw new Error('Payment required but server returned no X-Payment-Required header');
|
|
100
|
+
}
|
|
101
|
+
let requirement;
|
|
102
|
+
try {
|
|
103
|
+
requirement = JSON.parse(paymentRequiredHeader);
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
throw new Error('Failed to parse X-Payment-Required header');
|
|
107
|
+
}
|
|
108
|
+
const paymentPayload = await this.buildX402Payment(requirement, walletAddress);
|
|
109
|
+
const paymentHeader = base64Encode(JSON.stringify(paymentPayload));
|
|
110
|
+
res = await fetch(url, {
|
|
111
|
+
method: 'POST',
|
|
112
|
+
headers: await this.authHeaders({
|
|
113
|
+
'Content-Type': 'application/json',
|
|
114
|
+
[X402_PAYMENT_HEADER]: paymentHeader,
|
|
115
|
+
}),
|
|
116
|
+
body,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
if (!res.ok) {
|
|
120
|
+
let detail = '';
|
|
121
|
+
try {
|
|
122
|
+
const errBody = await res.json();
|
|
123
|
+
detail = `: ${errBody.message ?? JSON.stringify(errBody)}`;
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
// ignore
|
|
127
|
+
}
|
|
128
|
+
throw new Error(`HTTP ${res.status}${detail}`);
|
|
129
|
+
}
|
|
130
|
+
return res.json();
|
|
131
|
+
}
|
|
132
|
+
async buildX402Payment(requirement, from) {
|
|
133
|
+
const authorization = await this.buildEip3009Authorization(requirement, from);
|
|
134
|
+
return {
|
|
135
|
+
x402Version: 1,
|
|
136
|
+
scheme: 'exact',
|
|
137
|
+
network: this.network === 'base-sepolia' ? 'base-sepolia' : 'base',
|
|
138
|
+
payload: {
|
|
139
|
+
signature: authorization.signature,
|
|
140
|
+
authorization: authorization.authorization,
|
|
141
|
+
},
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
async buildEip3009Authorization(requirement, from) {
|
|
145
|
+
const chain = this.network === 'base-sepolia' ? baseSepolia : base;
|
|
146
|
+
const now = BigInt(Math.floor(Date.now() / 1000));
|
|
147
|
+
const validBefore = now + BigInt(requirement.maxTimeoutSeconds || 300);
|
|
148
|
+
const nonce = keccak256(toHex(`${from}:${Date.now()}:${Math.floor(Math.random() * 1e15)}`));
|
|
149
|
+
const message = {
|
|
150
|
+
from,
|
|
151
|
+
to: requirement.payTo,
|
|
152
|
+
value: BigInt(requirement.maxAmountRequired),
|
|
153
|
+
validAfter: 0n,
|
|
154
|
+
validBefore,
|
|
155
|
+
nonce,
|
|
156
|
+
};
|
|
157
|
+
const signature = await this.walletClient.signTypedData({
|
|
158
|
+
domain: {
|
|
159
|
+
name: 'USD Coin',
|
|
160
|
+
version: '2',
|
|
161
|
+
chainId: requirement.chainId ?? chain.id,
|
|
162
|
+
verifyingContract: requirement.asset,
|
|
163
|
+
},
|
|
164
|
+
types: EIP3009_TYPES,
|
|
165
|
+
primaryType: 'TransferWithAuthorization',
|
|
166
|
+
message,
|
|
167
|
+
});
|
|
168
|
+
return {
|
|
169
|
+
signature,
|
|
170
|
+
authorization: {
|
|
171
|
+
from,
|
|
172
|
+
to: requirement.payTo,
|
|
173
|
+
value: requirement.maxAmountRequired,
|
|
174
|
+
validAfter: '0',
|
|
175
|
+
validBefore: validBefore.toString(),
|
|
176
|
+
nonce,
|
|
177
|
+
},
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
async getAgentsByWallet(wallet) {
|
|
181
|
+
const url = `${this.apiUrl}/agents/by-wallet/${wallet}`;
|
|
182
|
+
const res = await fetch(url);
|
|
183
|
+
if (!res.ok)
|
|
184
|
+
throw new Error(await responseError(res));
|
|
185
|
+
const data = await res.json();
|
|
186
|
+
return Array.isArray(data) ? data : data.agent ? [data.agent] : [];
|
|
187
|
+
}
|
|
188
|
+
async getAgent(wallet) {
|
|
189
|
+
const agents = await this.getAgentsByWallet(wallet);
|
|
190
|
+
return agents[0] ?? null;
|
|
191
|
+
}
|
|
192
|
+
async search(args) {
|
|
193
|
+
const params = new URLSearchParams();
|
|
194
|
+
if (args.q)
|
|
195
|
+
params.set('q', args.q);
|
|
196
|
+
if (args.framework)
|
|
197
|
+
params.set('framework', args.framework);
|
|
198
|
+
if (args.capability)
|
|
199
|
+
params.set('capability', args.capability);
|
|
200
|
+
if (args.limit)
|
|
201
|
+
params.set('limit', String(args.limit));
|
|
202
|
+
const url = `${this.apiUrl}/agents/search?${params.toString()}`;
|
|
203
|
+
const res = await fetch(url);
|
|
204
|
+
if (!res.ok)
|
|
205
|
+
throw new Error(await responseError(res));
|
|
206
|
+
return res.json();
|
|
207
|
+
}
|
|
208
|
+
async sendEmail(agentId, args) {
|
|
209
|
+
const url = `${this.apiUrl}/agents/${agentId}/email/send`;
|
|
210
|
+
const res = await fetch(url, {
|
|
211
|
+
method: 'POST',
|
|
212
|
+
headers: await this.authHeaders({ 'Content-Type': 'application/json' }),
|
|
213
|
+
body: JSON.stringify(args),
|
|
214
|
+
});
|
|
215
|
+
if (!res.ok)
|
|
216
|
+
throw new Error(await responseError(res));
|
|
217
|
+
return res.json();
|
|
218
|
+
}
|
|
219
|
+
async listEmail(agentId, args = {}) {
|
|
220
|
+
const params = new URLSearchParams();
|
|
221
|
+
if (args.limit)
|
|
222
|
+
params.set('limit', String(args.limit));
|
|
223
|
+
if (args.unreadOnly)
|
|
224
|
+
params.set('unreadOnly', 'true');
|
|
225
|
+
const url = `${this.apiUrl}/agents/${agentId}/email?${params.toString()}`;
|
|
226
|
+
const res = await fetch(url, { headers: await this.authHeaders() });
|
|
227
|
+
if (!res.ok)
|
|
228
|
+
throw new Error(await responseError(res));
|
|
229
|
+
return res.json();
|
|
230
|
+
}
|
|
231
|
+
async listDnsRecords(agentId) {
|
|
232
|
+
const res = await fetch(`${this.apiUrl}/agents/${agentId}/dns`, {
|
|
233
|
+
headers: await this.authHeaders(),
|
|
234
|
+
});
|
|
235
|
+
if (!res.ok)
|
|
236
|
+
throw new Error(await responseError(res));
|
|
237
|
+
return res.json();
|
|
238
|
+
}
|
|
239
|
+
async createDnsRecord(agentId, record) {
|
|
240
|
+
const res = await fetch(`${this.apiUrl}/agents/${agentId}/dns`, {
|
|
241
|
+
method: 'POST',
|
|
242
|
+
headers: await this.authHeaders({ 'Content-Type': 'application/json' }),
|
|
243
|
+
body: JSON.stringify(record),
|
|
244
|
+
});
|
|
245
|
+
if (!res.ok)
|
|
246
|
+
throw new Error(await responseError(res));
|
|
247
|
+
return res.json();
|
|
248
|
+
}
|
|
249
|
+
async updateDnsRecord(agentId, recordId, record) {
|
|
250
|
+
const res = await fetch(`${this.apiUrl}/agents/${agentId}/dns/${recordId}`, {
|
|
251
|
+
method: 'PATCH',
|
|
252
|
+
headers: await this.authHeaders({ 'Content-Type': 'application/json' }),
|
|
253
|
+
body: JSON.stringify(record),
|
|
254
|
+
});
|
|
255
|
+
if (!res.ok)
|
|
256
|
+
throw new Error(await responseError(res));
|
|
257
|
+
return res.json();
|
|
258
|
+
}
|
|
259
|
+
async deleteDnsRecord(agentId, recordId) {
|
|
260
|
+
const res = await fetch(`${this.apiUrl}/agents/${agentId}/dns/${recordId}`, {
|
|
261
|
+
method: 'DELETE',
|
|
262
|
+
headers: await this.authHeaders(),
|
|
263
|
+
});
|
|
264
|
+
if (!res.ok)
|
|
265
|
+
throw new Error(await responseError(res));
|
|
266
|
+
return res.json();
|
|
267
|
+
}
|
|
268
|
+
async fundRenewalVault(agentId, amountUsdc) {
|
|
269
|
+
const walletAddress = this.walletClient?.account?.address;
|
|
270
|
+
if (!this.walletClient || !walletAddress) {
|
|
271
|
+
throw new Error('Funding the renewal vault requires a walletClient so the SDK can sign a USDC authorization.');
|
|
272
|
+
}
|
|
273
|
+
const url = `${this.apiUrl}/agents/${agentId}/renewal/fund`;
|
|
274
|
+
let res = await fetch(url, {
|
|
275
|
+
method: 'POST',
|
|
276
|
+
headers: await this.authHeaders({ 'Content-Type': 'application/json' }),
|
|
277
|
+
body: JSON.stringify({ amount: amountUsdc }),
|
|
278
|
+
});
|
|
279
|
+
if (res.status === 402) {
|
|
280
|
+
const challenge = (await res.json());
|
|
281
|
+
const authorization = await this.buildEip3009Authorization(challenge, walletAddress);
|
|
282
|
+
res = await fetch(url, {
|
|
283
|
+
method: 'POST',
|
|
284
|
+
headers: await this.authHeaders({ 'Content-Type': 'application/json' }),
|
|
285
|
+
body: JSON.stringify({
|
|
286
|
+
amount: amountUsdc,
|
|
287
|
+
signature: authorization.signature,
|
|
288
|
+
authorization: authorization.authorization,
|
|
289
|
+
}),
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
if (!res.ok)
|
|
293
|
+
throw new Error(await responseError(res));
|
|
294
|
+
return res.json();
|
|
295
|
+
}
|
|
296
|
+
async getRenewalStatus(agentId) {
|
|
297
|
+
const url = `${this.apiUrl}/agents/${agentId}/renewal/status`;
|
|
298
|
+
const res = await fetch(url, { headers: await this.authHeaders() });
|
|
299
|
+
if (!res.ok)
|
|
300
|
+
throw new Error(await responseError(res));
|
|
301
|
+
return res.json();
|
|
302
|
+
}
|
|
303
|
+
async setAutoRenew(agentId, enabled, opts = {}) {
|
|
304
|
+
const walletAddress = this.walletClient?.account?.address;
|
|
305
|
+
if (!this.walletClient || !walletAddress) {
|
|
306
|
+
throw new Error('Auto-renew requires a walletClient for the AgentID NFT owner wallet. Any wallet can fund RenewalVault, but only the owner wallet can change auto-renew.');
|
|
307
|
+
}
|
|
308
|
+
const renewalVaultAddress = opts.renewalVaultAddress ?? this.renewalVaultAddress;
|
|
309
|
+
if (!renewalVaultAddress) {
|
|
310
|
+
throw new Error('renewalVaultAddress is required to enable auto-renew. Pass it to the AgentDomain constructor or setAutoRenew options.');
|
|
311
|
+
}
|
|
312
|
+
const status = await this.getRenewalStatus(agentId);
|
|
313
|
+
if (!status.tokenId) {
|
|
314
|
+
throw new Error('Auto-renew cannot be changed before the AgentID NFT is minted.');
|
|
315
|
+
}
|
|
316
|
+
if (status.ownerAddress && !sameAddress(walletAddress, status.ownerAddress)) {
|
|
317
|
+
throw new Error(`Auto-renew can only be changed by the AgentID NFT owner wallet (${status.ownerAddress}).`);
|
|
318
|
+
}
|
|
319
|
+
if (status.autoRenewEnabled === enabled) {
|
|
320
|
+
return {
|
|
321
|
+
agentId,
|
|
322
|
+
tokenId: status.tokenId,
|
|
323
|
+
enabled,
|
|
324
|
+
changed: false,
|
|
325
|
+
txHash: null,
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
if (opts.waitForReceipt && !this.publicClient) {
|
|
329
|
+
throw new Error('waitForReceipt requires a publicClient in the AgentDomain constructor.');
|
|
330
|
+
}
|
|
331
|
+
const chain = this.network === 'base-sepolia' ? baseSepolia : base;
|
|
332
|
+
const txHash = (await this.walletClient.writeContract({
|
|
333
|
+
address: renewalVaultAddress,
|
|
334
|
+
abi: RENEWAL_VAULT_ABI,
|
|
335
|
+
functionName: 'setAutoRenew',
|
|
336
|
+
args: [BigInt(status.tokenId), enabled],
|
|
337
|
+
account: this.walletClient.account,
|
|
338
|
+
chain,
|
|
339
|
+
}));
|
|
340
|
+
if (opts.waitForReceipt) {
|
|
341
|
+
await this.publicClient.waitForTransactionReceipt({ hash: txHash });
|
|
342
|
+
}
|
|
343
|
+
return {
|
|
344
|
+
agentId,
|
|
345
|
+
tokenId: status.tokenId,
|
|
346
|
+
enabled,
|
|
347
|
+
changed: true,
|
|
348
|
+
txHash,
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
async withdrawFromVault(agentId, amountUsdc) {
|
|
352
|
+
const url = `${this.apiUrl}/agents/${agentId}/renewal/withdraw`;
|
|
353
|
+
const res = await fetch(url, {
|
|
354
|
+
method: 'POST',
|
|
355
|
+
headers: await this.authHeaders({ 'Content-Type': 'application/json' }),
|
|
356
|
+
body: JSON.stringify({ amount: amountUsdc }),
|
|
357
|
+
});
|
|
358
|
+
if (!res.ok)
|
|
359
|
+
throw new Error(await responseError(res));
|
|
360
|
+
return res.json();
|
|
361
|
+
}
|
|
362
|
+
async reconfigureSsl(agentId) {
|
|
363
|
+
const url = `${this.apiUrl}/agents/${agentId}/ssl`;
|
|
364
|
+
const res = await fetch(url, {
|
|
365
|
+
method: 'POST',
|
|
366
|
+
headers: await this.authHeaders(),
|
|
367
|
+
});
|
|
368
|
+
if (!res.ok)
|
|
369
|
+
throw new Error(await responseError(res));
|
|
370
|
+
return res.json();
|
|
371
|
+
}
|
|
372
|
+
async getServicePlan(agentId) {
|
|
373
|
+
const url = `${this.apiUrl}/agents/${agentId}/plan`;
|
|
374
|
+
const res = await fetch(url, { headers: await this.authHeaders() });
|
|
375
|
+
if (!res.ok)
|
|
376
|
+
throw new Error(await responseError(res));
|
|
377
|
+
return res.json();
|
|
378
|
+
}
|
|
379
|
+
async purchaseServicePlan(args) {
|
|
380
|
+
const walletAddress = this.walletClient?.account?.address;
|
|
381
|
+
if (!this.walletClient || !walletAddress) {
|
|
382
|
+
throw new Error('Service plan purchase requires a walletClient so the SDK can sign the USDC x402 payment.');
|
|
383
|
+
}
|
|
384
|
+
const url = `${this.apiUrl}/agents/${args.agentId}/plan`;
|
|
385
|
+
const body = JSON.stringify({
|
|
386
|
+
plan: args.plan,
|
|
387
|
+
interval: args.interval,
|
|
388
|
+
autoRenew: args.autoRenew ?? false,
|
|
389
|
+
prepayPeriods: args.prepayPeriods ?? 1,
|
|
390
|
+
});
|
|
391
|
+
let res = await fetch(url, {
|
|
392
|
+
method: 'POST',
|
|
393
|
+
headers: await this.authHeaders({ 'Content-Type': 'application/json' }),
|
|
394
|
+
body,
|
|
395
|
+
});
|
|
396
|
+
if (res.status === 402) {
|
|
397
|
+
const paymentRequiredHeader = res.headers.get(X402_PAYMENT_REQUIRED_HEADER);
|
|
398
|
+
if (!paymentRequiredHeader) {
|
|
399
|
+
throw new Error('Payment required but server returned no X-Payment-Required header');
|
|
400
|
+
}
|
|
401
|
+
let requirement;
|
|
402
|
+
try {
|
|
403
|
+
requirement = JSON.parse(paymentRequiredHeader);
|
|
404
|
+
}
|
|
405
|
+
catch {
|
|
406
|
+
throw new Error('Failed to parse X-Payment-Required header');
|
|
407
|
+
}
|
|
408
|
+
const paymentPayload = await this.buildX402Payment(requirement, walletAddress);
|
|
409
|
+
const paymentHeader = base64Encode(JSON.stringify(paymentPayload));
|
|
410
|
+
res = await fetch(url, {
|
|
411
|
+
method: 'POST',
|
|
412
|
+
headers: await this.authHeaders({
|
|
413
|
+
'Content-Type': 'application/json',
|
|
414
|
+
[X402_PAYMENT_HEADER]: paymentHeader,
|
|
415
|
+
}),
|
|
416
|
+
body,
|
|
417
|
+
});
|
|
418
|
+
}
|
|
419
|
+
if (!res.ok)
|
|
420
|
+
throw new Error(await responseError(res));
|
|
421
|
+
return res.json();
|
|
422
|
+
}
|
|
423
|
+
async authHeaders(extra) {
|
|
424
|
+
const headers = { ...(extra ?? {}) };
|
|
425
|
+
if (this.apiKey && !headers.Authorization) {
|
|
426
|
+
headers.Authorization = `Bearer ${this.apiKey}`;
|
|
427
|
+
return headers;
|
|
428
|
+
}
|
|
429
|
+
if (!headers['X-Agent-Signature'] && this.walletClient?.account) {
|
|
430
|
+
try {
|
|
431
|
+
const timestamp = Date.now();
|
|
432
|
+
const message = `agentdomain.app api auth ${timestamp}`;
|
|
433
|
+
const signature = await this.walletClient.signMessage({
|
|
434
|
+
account: this.walletClient.account,
|
|
435
|
+
message,
|
|
436
|
+
});
|
|
437
|
+
headers['X-Agent-Signature'] =
|
|
438
|
+
`${this.walletClient.account.address}:${timestamp}:${signature}`;
|
|
439
|
+
}
|
|
440
|
+
catch {
|
|
441
|
+
// Some browser wallet clients may not expose signMessage here. The
|
|
442
|
+
// request can still proceed and let the API return the auth challenge.
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
return headers;
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
export function createOpenAITools() {
|
|
449
|
+
return [
|
|
450
|
+
{
|
|
451
|
+
type: 'function',
|
|
452
|
+
function: {
|
|
453
|
+
name: 'check_domain_availability',
|
|
454
|
+
description: 'Check if a domain name is available for registration',
|
|
455
|
+
parameters: {
|
|
456
|
+
type: 'object',
|
|
457
|
+
properties: {
|
|
458
|
+
name: { type: 'string', description: 'Domain name to check' },
|
|
459
|
+
tld: { type: 'string', description: 'TLD (e.g. xyz, com, ai)', default: 'xyz' },
|
|
460
|
+
},
|
|
461
|
+
required: ['name'],
|
|
462
|
+
},
|
|
463
|
+
},
|
|
464
|
+
},
|
|
465
|
+
{
|
|
466
|
+
type: 'function',
|
|
467
|
+
function: {
|
|
468
|
+
name: 'quote_registration',
|
|
469
|
+
description: 'Get pricing quote for registering an AI agent identity. Domain, DNS, SSL certification, and service fee are mandatory. Basename, ENS, and email are optional.',
|
|
470
|
+
parameters: {
|
|
471
|
+
type: 'object',
|
|
472
|
+
properties: {
|
|
473
|
+
preferredName: { type: 'string', description: 'Preferred domain name' },
|
|
474
|
+
tld: { type: 'string', description: 'TLD', default: 'xyz' },
|
|
475
|
+
registerBasename: {
|
|
476
|
+
type: 'boolean',
|
|
477
|
+
description: 'Also register Basename. Set false to skip Basename cost.',
|
|
478
|
+
default: true,
|
|
479
|
+
},
|
|
480
|
+
basenameLabel: {
|
|
481
|
+
type: 'string',
|
|
482
|
+
description: 'Optional alternate Basename label. Omit to use preferredName.',
|
|
483
|
+
},
|
|
484
|
+
registerEns: {
|
|
485
|
+
type: 'boolean',
|
|
486
|
+
description: 'Also register ENS name. Set false to skip ENS cost.',
|
|
487
|
+
default: false,
|
|
488
|
+
},
|
|
489
|
+
ensLabel: {
|
|
490
|
+
type: 'string',
|
|
491
|
+
description: 'Optional alternate ENS label. Omit to use preferredName.',
|
|
492
|
+
},
|
|
493
|
+
emailEnabled: {
|
|
494
|
+
type: 'boolean',
|
|
495
|
+
description: 'Add an email inbox. Set false to skip email cost.',
|
|
496
|
+
default: false,
|
|
497
|
+
},
|
|
498
|
+
years: { type: 'number', description: 'Registration years', default: 1 },
|
|
499
|
+
discountCode: { type: 'string', description: 'Optional service-fee discount code' },
|
|
500
|
+
},
|
|
501
|
+
required: ['preferredName'],
|
|
502
|
+
},
|
|
503
|
+
},
|
|
504
|
+
},
|
|
505
|
+
{
|
|
506
|
+
type: 'function',
|
|
507
|
+
function: {
|
|
508
|
+
name: 'register_agent_identity',
|
|
509
|
+
description: 'Register a new AI agent identity. Domain, DNS, SSL certification, and service fee are mandatory. Basename, ENS, and email are optional.',
|
|
510
|
+
parameters: {
|
|
511
|
+
type: 'object',
|
|
512
|
+
properties: {
|
|
513
|
+
preferredName: { type: 'string', description: 'Domain name' },
|
|
514
|
+
tld: { type: 'string', description: 'TLD', default: 'xyz' },
|
|
515
|
+
registerBasename: {
|
|
516
|
+
type: 'boolean',
|
|
517
|
+
description: 'Register Basename. Set false to skip Basename cost.',
|
|
518
|
+
default: true,
|
|
519
|
+
},
|
|
520
|
+
basenameLabel: {
|
|
521
|
+
type: 'string',
|
|
522
|
+
description: 'Optional alternate Basename label. Omit to use preferredName.',
|
|
523
|
+
},
|
|
524
|
+
registerEns: {
|
|
525
|
+
type: 'boolean',
|
|
526
|
+
description: 'Register ENS. Set false to skip ENS cost.',
|
|
527
|
+
default: false,
|
|
528
|
+
},
|
|
529
|
+
ensLabel: {
|
|
530
|
+
type: 'string',
|
|
531
|
+
description: 'Optional alternate ENS label. Omit to use preferredName.',
|
|
532
|
+
},
|
|
533
|
+
ownerAddress: {
|
|
534
|
+
type: 'string',
|
|
535
|
+
description: 'Optional EVM address that receives the AgentID NFT. Omit to use the paying wallet.',
|
|
536
|
+
},
|
|
537
|
+
emailEnabled: {
|
|
538
|
+
type: 'boolean',
|
|
539
|
+
description: 'Add an email inbox. Set false to skip email cost.',
|
|
540
|
+
default: false,
|
|
541
|
+
},
|
|
542
|
+
dnsTarget: {
|
|
543
|
+
type: 'string',
|
|
544
|
+
description: 'Optional initial endpoint URL or IP to point the domain at.',
|
|
545
|
+
},
|
|
546
|
+
years: { type: 'number', description: 'Registration years', default: 1 },
|
|
547
|
+
discountCode: { type: 'string', description: 'Optional service-fee discount code' },
|
|
548
|
+
},
|
|
549
|
+
required: ['preferredName'],
|
|
550
|
+
},
|
|
551
|
+
},
|
|
552
|
+
},
|
|
553
|
+
{
|
|
554
|
+
type: 'function',
|
|
555
|
+
function: {
|
|
556
|
+
name: 'search_agents',
|
|
557
|
+
description: 'Search for registered AI agents',
|
|
558
|
+
parameters: {
|
|
559
|
+
type: 'object',
|
|
560
|
+
properties: {
|
|
561
|
+
q: { type: 'string', description: 'Search query' },
|
|
562
|
+
framework: { type: 'string', description: 'Filter by framework' },
|
|
563
|
+
limit: { type: 'number', description: 'Max results', default: 20 },
|
|
564
|
+
},
|
|
565
|
+
},
|
|
566
|
+
},
|
|
567
|
+
},
|
|
568
|
+
{
|
|
569
|
+
type: 'function',
|
|
570
|
+
function: {
|
|
571
|
+
name: 'get_renewal_status',
|
|
572
|
+
description: 'Get renewal vault status for an agent, including exact next renewal amount, purchase snapshot, vault balance, shortfall, renewal date, and auto-renew state',
|
|
573
|
+
parameters: {
|
|
574
|
+
type: 'object',
|
|
575
|
+
properties: {
|
|
576
|
+
agentId: { type: 'string', description: 'AgentDomain agent ID (UUID)' },
|
|
577
|
+
},
|
|
578
|
+
required: ['agentId'],
|
|
579
|
+
},
|
|
580
|
+
},
|
|
581
|
+
},
|
|
582
|
+
{
|
|
583
|
+
type: 'function',
|
|
584
|
+
function: {
|
|
585
|
+
name: 'fund_renewal_vault',
|
|
586
|
+
description: 'Deposit USDC from the connected wallet into one AgentID renewal vault. Anyone can fund; only the owner can withdraw or enable auto-renew. Call get_renewal_status first and normally use its shortfallUsdc value.',
|
|
587
|
+
parameters: {
|
|
588
|
+
type: 'object',
|
|
589
|
+
properties: {
|
|
590
|
+
agentId: { type: 'string', description: 'AgentDomain agent ID (UUID)' },
|
|
591
|
+
amountUsdc: {
|
|
592
|
+
type: 'string',
|
|
593
|
+
description: 'USDC amount to deposit, with up to 6 decimals.',
|
|
594
|
+
},
|
|
595
|
+
},
|
|
596
|
+
required: ['agentId', 'amountUsdc'],
|
|
597
|
+
},
|
|
598
|
+
},
|
|
599
|
+
},
|
|
600
|
+
{
|
|
601
|
+
type: 'function',
|
|
602
|
+
function: {
|
|
603
|
+
name: 'enable_auto_renew',
|
|
604
|
+
description: 'Enable RenewalVault auto-renew for an agent. Requires the walletClient to be the AgentID NFT owner wallet.',
|
|
605
|
+
parameters: {
|
|
606
|
+
type: 'object',
|
|
607
|
+
properties: {
|
|
608
|
+
agentId: { type: 'string', description: 'AgentDomain agent ID (UUID)' },
|
|
609
|
+
},
|
|
610
|
+
required: ['agentId'],
|
|
611
|
+
},
|
|
612
|
+
},
|
|
613
|
+
},
|
|
614
|
+
{
|
|
615
|
+
type: 'function',
|
|
616
|
+
function: {
|
|
617
|
+
name: 'reconfigure_ssl',
|
|
618
|
+
description: 'Rebuild the Cloudflare SaaS SSL hostname and sync the required Spaceship DNS validation records for an existing agent. Use this if SSL is pending, failed, or needs a refresh.',
|
|
619
|
+
parameters: {
|
|
620
|
+
type: 'object',
|
|
621
|
+
properties: {
|
|
622
|
+
agentId: { type: 'string', description: 'AgentDomain agent ID (UUID)' },
|
|
623
|
+
},
|
|
624
|
+
required: ['agentId'],
|
|
625
|
+
},
|
|
626
|
+
},
|
|
627
|
+
},
|
|
628
|
+
];
|
|
629
|
+
}
|
|
630
|
+
export function createAnthropicTools() {
|
|
631
|
+
return [
|
|
632
|
+
{
|
|
633
|
+
name: 'check_domain_availability',
|
|
634
|
+
description: 'Check if a domain name is available for registration',
|
|
635
|
+
input_schema: {
|
|
636
|
+
type: 'object',
|
|
637
|
+
properties: {
|
|
638
|
+
name: { type: 'string', description: 'Domain name to check' },
|
|
639
|
+
tld: { type: 'string', description: 'TLD (e.g. xyz, com, ai)', default: 'xyz' },
|
|
640
|
+
},
|
|
641
|
+
required: ['name'],
|
|
642
|
+
},
|
|
643
|
+
},
|
|
644
|
+
{
|
|
645
|
+
name: 'quote_registration',
|
|
646
|
+
description: 'Get pricing quote for registering an AI agent identity. Domain, DNS, SSL certification, and service fee are mandatory. Basename, ENS, and email are optional.',
|
|
647
|
+
input_schema: {
|
|
648
|
+
type: 'object',
|
|
649
|
+
properties: {
|
|
650
|
+
preferredName: { type: 'string', description: 'Preferred domain name' },
|
|
651
|
+
tld: { type: 'string', description: 'TLD', default: 'xyz' },
|
|
652
|
+
registerBasename: {
|
|
653
|
+
type: 'boolean',
|
|
654
|
+
description: 'Also register Basename. Set false to skip Basename cost.',
|
|
655
|
+
default: true,
|
|
656
|
+
},
|
|
657
|
+
basenameLabel: {
|
|
658
|
+
type: 'string',
|
|
659
|
+
description: 'Optional alternate Basename label. Omit to use preferredName.',
|
|
660
|
+
},
|
|
661
|
+
registerEns: {
|
|
662
|
+
type: 'boolean',
|
|
663
|
+
description: 'Also register ENS name. Set false to skip ENS cost.',
|
|
664
|
+
default: false,
|
|
665
|
+
},
|
|
666
|
+
ensLabel: {
|
|
667
|
+
type: 'string',
|
|
668
|
+
description: 'Optional alternate ENS label. Omit to use preferredName.',
|
|
669
|
+
},
|
|
670
|
+
emailEnabled: {
|
|
671
|
+
type: 'boolean',
|
|
672
|
+
description: 'Add an email inbox. Set false to skip email cost.',
|
|
673
|
+
default: false,
|
|
674
|
+
},
|
|
675
|
+
years: { type: 'number', description: 'Registration years', default: 1 },
|
|
676
|
+
discountCode: { type: 'string', description: 'Optional service-fee discount code' },
|
|
677
|
+
},
|
|
678
|
+
required: ['preferredName'],
|
|
679
|
+
},
|
|
680
|
+
},
|
|
681
|
+
{
|
|
682
|
+
name: 'register_agent_identity',
|
|
683
|
+
description: 'Register a new AI agent identity. Domain, DNS, SSL certification, and service fee are mandatory. Basename, ENS, and email are optional.',
|
|
684
|
+
input_schema: {
|
|
685
|
+
type: 'object',
|
|
686
|
+
properties: {
|
|
687
|
+
preferredName: { type: 'string', description: 'Domain name' },
|
|
688
|
+
tld: { type: 'string', description: 'TLD', default: 'xyz' },
|
|
689
|
+
registerBasename: {
|
|
690
|
+
type: 'boolean',
|
|
691
|
+
description: 'Register Basename. Set false to skip Basename cost.',
|
|
692
|
+
default: true,
|
|
693
|
+
},
|
|
694
|
+
basenameLabel: {
|
|
695
|
+
type: 'string',
|
|
696
|
+
description: 'Optional alternate Basename label. Omit to use preferredName.',
|
|
697
|
+
},
|
|
698
|
+
registerEns: {
|
|
699
|
+
type: 'boolean',
|
|
700
|
+
description: 'Register ENS. Set false to skip ENS cost.',
|
|
701
|
+
default: false,
|
|
702
|
+
},
|
|
703
|
+
ensLabel: {
|
|
704
|
+
type: 'string',
|
|
705
|
+
description: 'Optional alternate ENS label. Omit to use preferredName.',
|
|
706
|
+
},
|
|
707
|
+
ownerAddress: {
|
|
708
|
+
type: 'string',
|
|
709
|
+
description: 'Optional EVM address that receives the AgentID NFT. Omit to use the paying wallet.',
|
|
710
|
+
},
|
|
711
|
+
emailEnabled: {
|
|
712
|
+
type: 'boolean',
|
|
713
|
+
description: 'Add an email inbox. Set false to skip email cost.',
|
|
714
|
+
default: false,
|
|
715
|
+
},
|
|
716
|
+
dnsTarget: {
|
|
717
|
+
type: 'string',
|
|
718
|
+
description: 'Optional initial endpoint URL or IP to point the domain at.',
|
|
719
|
+
},
|
|
720
|
+
years: { type: 'number', description: 'Registration years', default: 1 },
|
|
721
|
+
discountCode: { type: 'string', description: 'Optional service-fee discount code' },
|
|
722
|
+
},
|
|
723
|
+
required: ['preferredName'],
|
|
724
|
+
},
|
|
725
|
+
},
|
|
726
|
+
{
|
|
727
|
+
name: 'search_agents',
|
|
728
|
+
description: 'Search for registered AI agents',
|
|
729
|
+
input_schema: {
|
|
730
|
+
type: 'object',
|
|
731
|
+
properties: {
|
|
732
|
+
q: { type: 'string', description: 'Search query' },
|
|
733
|
+
framework: { type: 'string', description: 'Filter by framework' },
|
|
734
|
+
limit: { type: 'number', description: 'Max results', default: 20 },
|
|
735
|
+
},
|
|
736
|
+
},
|
|
737
|
+
},
|
|
738
|
+
{
|
|
739
|
+
name: 'get_renewal_status',
|
|
740
|
+
description: 'Get renewal vault status for an agent, including exact next renewal amount, purchase snapshot, vault balance, shortfall, renewal date, and auto-renew state',
|
|
741
|
+
input_schema: {
|
|
742
|
+
type: 'object',
|
|
743
|
+
properties: {
|
|
744
|
+
agentId: { type: 'string', description: 'AgentDomain agent ID (UUID)' },
|
|
745
|
+
},
|
|
746
|
+
required: ['agentId'],
|
|
747
|
+
},
|
|
748
|
+
},
|
|
749
|
+
{
|
|
750
|
+
name: 'fund_renewal_vault',
|
|
751
|
+
description: 'Deposit USDC from the connected wallet into one AgentID renewal vault. Anyone can fund; only the owner can withdraw or enable auto-renew. Call get_renewal_status first and normally use its shortfallUsdc value.',
|
|
752
|
+
input_schema: {
|
|
753
|
+
type: 'object',
|
|
754
|
+
properties: {
|
|
755
|
+
agentId: { type: 'string', description: 'AgentDomain agent ID (UUID)' },
|
|
756
|
+
amountUsdc: {
|
|
757
|
+
type: 'string',
|
|
758
|
+
description: 'USDC amount to deposit, with up to 6 decimals.',
|
|
759
|
+
},
|
|
760
|
+
},
|
|
761
|
+
required: ['agentId', 'amountUsdc'],
|
|
762
|
+
},
|
|
763
|
+
},
|
|
764
|
+
{
|
|
765
|
+
name: 'enable_auto_renew',
|
|
766
|
+
description: 'Enable RenewalVault auto-renew for an agent. Requires the walletClient to be the AgentID NFT owner wallet.',
|
|
767
|
+
input_schema: {
|
|
768
|
+
type: 'object',
|
|
769
|
+
properties: {
|
|
770
|
+
agentId: { type: 'string', description: 'AgentDomain agent ID (UUID)' },
|
|
771
|
+
},
|
|
772
|
+
required: ['agentId'],
|
|
773
|
+
},
|
|
774
|
+
},
|
|
775
|
+
{
|
|
776
|
+
name: 'reconfigure_ssl',
|
|
777
|
+
description: 'Rebuild the Cloudflare SaaS SSL hostname and sync the required Spaceship DNS validation records for an existing agent. Use this if SSL is pending, failed, or needs a refresh.',
|
|
778
|
+
input_schema: {
|
|
779
|
+
type: 'object',
|
|
780
|
+
properties: {
|
|
781
|
+
agentId: { type: 'string', description: 'AgentDomain agent ID (UUID)' },
|
|
782
|
+
},
|
|
783
|
+
required: ['agentId'],
|
|
784
|
+
},
|
|
785
|
+
},
|
|
786
|
+
];
|
|
787
|
+
}
|
|
788
|
+
export async function runAgentDomainTool(ad, name, args) {
|
|
789
|
+
switch (name) {
|
|
790
|
+
case 'check_domain_availability':
|
|
791
|
+
return ad.checkAvailability(args.name, { tld: args.tld ?? 'xyz' });
|
|
792
|
+
case 'quote_registration':
|
|
793
|
+
return ad.quote({
|
|
794
|
+
preferredName: args.preferredName,
|
|
795
|
+
tld: args.tld ?? 'xyz',
|
|
796
|
+
registerBasename: args.registerBasename ?? true,
|
|
797
|
+
basenameLabel: args.basenameLabel,
|
|
798
|
+
registerEns: args.registerEns ?? false,
|
|
799
|
+
ensLabel: args.ensLabel,
|
|
800
|
+
emailEnabled: args.emailEnabled ?? false,
|
|
801
|
+
years: args.years ?? 1,
|
|
802
|
+
discountCode: args.discountCode,
|
|
803
|
+
});
|
|
804
|
+
case 'register_agent_identity':
|
|
805
|
+
return ad.register({
|
|
806
|
+
preferredName: args.preferredName,
|
|
807
|
+
tld: (args.tld ?? 'xyz'),
|
|
808
|
+
registerBasename: args.registerBasename ?? true,
|
|
809
|
+
basenameLabel: args.basenameLabel,
|
|
810
|
+
registerEns: args.registerEns ?? false,
|
|
811
|
+
ensLabel: args.ensLabel,
|
|
812
|
+
emailEnabled: args.emailEnabled ?? false,
|
|
813
|
+
years: args.years ?? 1,
|
|
814
|
+
autoRenew: args.autoRenew ?? false,
|
|
815
|
+
discountCode: args.discountCode,
|
|
816
|
+
dnsTarget: args.dnsTarget,
|
|
817
|
+
ownerAddress: args.ownerAddress,
|
|
818
|
+
wallet: args.wallet,
|
|
819
|
+
});
|
|
820
|
+
case 'search_agents':
|
|
821
|
+
return ad.search({
|
|
822
|
+
q: args.q,
|
|
823
|
+
framework: args.framework,
|
|
824
|
+
capability: args.capability,
|
|
825
|
+
limit: args.limit ?? 20,
|
|
826
|
+
});
|
|
827
|
+
case 'send_agent_email':
|
|
828
|
+
return ad.sendEmail(args.agentId, {
|
|
829
|
+
to: args.to,
|
|
830
|
+
subject: args.subject,
|
|
831
|
+
text: args.text,
|
|
832
|
+
replyTo: args.replyTo,
|
|
833
|
+
});
|
|
834
|
+
case 'list_agent_email':
|
|
835
|
+
return ad.listEmail(args.agentId, { limit: args.limit ?? 20 });
|
|
836
|
+
case 'list_dns_records':
|
|
837
|
+
return ad.listDnsRecords(args.agentId);
|
|
838
|
+
case 'create_dns_record':
|
|
839
|
+
return ad.createDnsRecord(args.agentId, readDnsRecordArgs(args));
|
|
840
|
+
case 'update_dns_record':
|
|
841
|
+
return ad.updateDnsRecord(args.agentId, args.recordId, readDnsRecordArgs(args));
|
|
842
|
+
case 'delete_dns_record':
|
|
843
|
+
return ad.deleteDnsRecord(args.agentId, args.recordId);
|
|
844
|
+
case 'get_renewal_status':
|
|
845
|
+
return ad.getRenewalStatus(args.agentId);
|
|
846
|
+
case 'fund_renewal_vault':
|
|
847
|
+
return ad.fundRenewalVault(args.agentId, args.amountUsdc);
|
|
848
|
+
case 'withdraw_renewal_vault':
|
|
849
|
+
return ad.withdrawFromVault(args.agentId, args.amountUsdc);
|
|
850
|
+
case 'enable_auto_renew':
|
|
851
|
+
return ad.setAutoRenew(args.agentId, true);
|
|
852
|
+
case 'reconfigure_ssl':
|
|
853
|
+
return ad.reconfigureSsl(args.agentId);
|
|
854
|
+
case 'get_service_plan':
|
|
855
|
+
return ad.getServicePlan(args.agentId);
|
|
856
|
+
case 'purchase_service_plan':
|
|
857
|
+
return ad.purchaseServicePlan({
|
|
858
|
+
agentId: args.agentId,
|
|
859
|
+
plan: args.plan,
|
|
860
|
+
interval: args.interval,
|
|
861
|
+
autoRenew: args.autoRenew ?? false,
|
|
862
|
+
prepayPeriods: args.prepayPeriods ?? 1,
|
|
863
|
+
});
|
|
864
|
+
default:
|
|
865
|
+
throw new Error(`Unknown tool: ${name}`);
|
|
866
|
+
}
|
|
867
|
+
}
|
|
868
|
+
function readDnsRecordArgs(args) {
|
|
869
|
+
const record = args.record && typeof args.record === 'object'
|
|
870
|
+
? args.record
|
|
871
|
+
: args;
|
|
872
|
+
return {
|
|
873
|
+
type: record.type,
|
|
874
|
+
name: record.name,
|
|
875
|
+
value: record.value,
|
|
876
|
+
ttl: record.ttl,
|
|
877
|
+
priority: record.priority,
|
|
878
|
+
};
|
|
879
|
+
}
|
|
880
|
+
export function formatAgentDomainToolResult(result) {
|
|
881
|
+
return typeof result === 'string' ? result : JSON.stringify(result, null, 2);
|
|
882
|
+
}
|
|
883
|
+
function base64Encode(value) {
|
|
884
|
+
if (typeof btoa === 'function') {
|
|
885
|
+
return btoa(unescape(encodeURIComponent(value)));
|
|
886
|
+
}
|
|
887
|
+
const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
|
|
888
|
+
const bytes = new TextEncoder().encode(value);
|
|
889
|
+
let output = '';
|
|
890
|
+
for (let i = 0; i < bytes.length; i += 3) {
|
|
891
|
+
const a = bytes[i] ?? 0;
|
|
892
|
+
const b = bytes[i + 1] ?? 0;
|
|
893
|
+
const c = bytes[i + 2] ?? 0;
|
|
894
|
+
const triplet = (a << 16) | (b << 8) | c;
|
|
895
|
+
output += alphabet[(triplet >> 18) & 63];
|
|
896
|
+
output += alphabet[(triplet >> 12) & 63];
|
|
897
|
+
output += i + 1 < bytes.length ? alphabet[(triplet >> 6) & 63] : '=';
|
|
898
|
+
output += i + 2 < bytes.length ? alphabet[triplet & 63] : '=';
|
|
899
|
+
}
|
|
900
|
+
return output;
|
|
901
|
+
}
|
|
902
|
+
async function responseError(res) {
|
|
903
|
+
try {
|
|
904
|
+
const body = (await res.json());
|
|
905
|
+
const detail = body.message ?? body.error;
|
|
906
|
+
const code = body.code ?? body.error;
|
|
907
|
+
const retryAfter = body.details && typeof body.details === 'object'
|
|
908
|
+
? body.details.retryAfterSeconds
|
|
909
|
+
: undefined;
|
|
910
|
+
const detailsMessage = detailsToMessage(body.details);
|
|
911
|
+
const parts = [`HTTP ${res.status}`];
|
|
912
|
+
if (code)
|
|
913
|
+
parts.push(`[${code}]`);
|
|
914
|
+
if (detail)
|
|
915
|
+
parts.push(`: ${detail}`);
|
|
916
|
+
if (detailsMessage && detailsMessage !== detail)
|
|
917
|
+
parts.push(`: ${detailsMessage}`);
|
|
918
|
+
if (retryAfter)
|
|
919
|
+
parts.push(`(retry after ${retryAfter}s)`);
|
|
920
|
+
return parts.join('');
|
|
921
|
+
}
|
|
922
|
+
catch {
|
|
923
|
+
return `HTTP ${res.status}`;
|
|
924
|
+
}
|
|
925
|
+
}
|
|
926
|
+
function detailsToMessage(details) {
|
|
927
|
+
if (!details)
|
|
928
|
+
return null;
|
|
929
|
+
if (typeof details === 'string')
|
|
930
|
+
return details;
|
|
931
|
+
if (typeof details !== 'object')
|
|
932
|
+
return String(details);
|
|
933
|
+
const record = details;
|
|
934
|
+
if (typeof record.message === 'string')
|
|
935
|
+
return record.message;
|
|
936
|
+
if (typeof record.error === 'string')
|
|
937
|
+
return record.error;
|
|
938
|
+
try {
|
|
939
|
+
return JSON.stringify(details);
|
|
940
|
+
}
|
|
941
|
+
catch {
|
|
942
|
+
return null;
|
|
943
|
+
}
|
|
944
|
+
}
|
|
945
|
+
function sameAddress(a, b) {
|
|
946
|
+
try {
|
|
947
|
+
return getAddress(a) === getAddress(b);
|
|
948
|
+
}
|
|
949
|
+
catch {
|
|
950
|
+
return a.toLowerCase() === b.toLowerCase();
|
|
951
|
+
}
|
|
952
|
+
}
|
|
953
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@agentdomain/sdk",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "AgentDomain SDK for AI agents - domain registration, management, and x402 payments",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist",
|
|
17
|
+
"README.md",
|
|
18
|
+
"package.json"
|
|
19
|
+
],
|
|
20
|
+
"publishConfig": {
|
|
21
|
+
"access": "public"
|
|
22
|
+
},
|
|
23
|
+
"scripts": {
|
|
24
|
+
"build": "tsc",
|
|
25
|
+
"prepublishOnly": "pnpm run build",
|
|
26
|
+
"typecheck": "tsc --noEmit",
|
|
27
|
+
"lint": "echo ok"
|
|
28
|
+
},
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"@agentdomain/shared": "workspace:^",
|
|
31
|
+
"viem": "^2.21.55",
|
|
32
|
+
"zod": "^3.24.1"
|
|
33
|
+
},
|
|
34
|
+
"devDependencies": {
|
|
35
|
+
"typescript": "^5.7.2"
|
|
36
|
+
}
|
|
37
|
+
}
|