agent0-sdk 0.3.0-rc.1 → 1.0.2
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 +95 -56
- package/dist/core/agent.d.ts +37 -2
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +362 -24
- package/dist/core/agent.js.map +1 -1
- package/dist/core/contracts.d.ts +335 -60
- package/dist/core/contracts.d.ts.map +1 -1
- package/dist/core/contracts.js +174 -59
- package/dist/core/contracts.js.map +1 -1
- package/dist/core/endpoint-crawler.d.ts +7 -0
- package/dist/core/endpoint-crawler.d.ts.map +1 -1
- package/dist/core/endpoint-crawler.js +43 -4
- package/dist/core/endpoint-crawler.js.map +1 -1
- package/dist/core/feedback-manager.d.ts +9 -29
- package/dist/core/feedback-manager.d.ts.map +1 -1
- package/dist/core/feedback-manager.js +140 -223
- package/dist/core/feedback-manager.js.map +1 -1
- package/dist/core/indexer.d.ts.map +1 -1
- package/dist/core/indexer.js +4 -2
- package/dist/core/indexer.js.map +1 -1
- package/dist/core/ipfs-client.d.ts +3 -3
- package/dist/core/ipfs-client.d.ts.map +1 -1
- package/dist/core/ipfs-client.js +31 -14
- package/dist/core/ipfs-client.js.map +1 -1
- package/dist/core/oasf-validator.d.ts +16 -0
- package/dist/core/oasf-validator.d.ts.map +1 -0
- package/dist/core/oasf-validator.js +26 -0
- package/dist/core/oasf-validator.js.map +1 -0
- package/dist/core/sdk.d.ts +9 -11
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +37 -37
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/subgraph-client.d.ts +1 -1
- package/dist/core/subgraph-client.d.ts.map +1 -1
- package/dist/core/subgraph-client.js +74 -14
- package/dist/core/subgraph-client.js.map +1 -1
- package/dist/core/web3-client.d.ts +98 -6
- package/dist/core/web3-client.d.ts.map +1 -1
- package/dist/core/web3-client.js +119 -11
- package/dist/core/web3-client.js.map +1 -1
- package/dist/models/enums.d.ts +2 -1
- package/dist/models/enums.d.ts.map +1 -1
- package/dist/models/enums.js +1 -0
- package/dist/models/enums.js.map +1 -1
- package/dist/models/generated/subgraph-types.d.ts +11 -3
- package/dist/models/generated/subgraph-types.d.ts.map +1 -1
- package/dist/models/interfaces.d.ts +65 -0
- package/dist/models/interfaces.d.ts.map +1 -1
- package/dist/taxonomies/generated/all_domains.d.ts +9 -0
- package/dist/taxonomies/generated/all_domains.d.ts.map +1 -0
- package/dist/taxonomies/generated/all_domains.js +1574 -0
- package/dist/taxonomies/generated/all_domains.js.map +1 -0
- package/dist/taxonomies/generated/all_skills.d.ts +9 -0
- package/dist/taxonomies/generated/all_skills.d.ts.map +1 -0
- package/dist/taxonomies/generated/all_skills.js +1039 -0
- package/dist/taxonomies/generated/all_skills.js.map +1 -0
- package/package.json +7 -4
package/README.md
CHANGED
|
@@ -4,10 +4,11 @@ Agent0 is the TypeScript SDK for agentic economies. It enables agents to registe
|
|
|
4
4
|
|
|
5
5
|
## What Does Agent0 SDK Do?
|
|
6
6
|
|
|
7
|
-
Agent0 SDK
|
|
7
|
+
Agent0 SDK v1.0.2 enables you to:
|
|
8
8
|
|
|
9
9
|
- **Create and manage agent identities** - Register your AI agent on-chain with a unique identity, configure presentation fields (name, description, image), set wallet addresses, and manage trust models with x402 support
|
|
10
10
|
- **Advertise agent capabilities** - Publish MCP and A2A endpoints, with automated extraction of MCP tools and A2A skills from endpoints
|
|
11
|
+
- **OASF taxonomies** - Advertise standardized skills and domains using the Open Agentic Schema Framework (OASF) taxonomies for better discovery and interoperability
|
|
11
12
|
- **Enable permissionless discovery** - Make your agent discoverable by other agents and platforms using rich search by attributes, capabilities, skills, tools, tasks, and x402 support
|
|
12
13
|
- **Build reputation** - Give and receive feedback, retrieve feedback history, and search agents by reputation with cryptographic authentication
|
|
13
14
|
- **Cross-chain registration** - One-line registration with IPFS nodes, Pinata, Filecoin, or HTTP URIs
|
|
@@ -15,15 +16,17 @@ Agent0 SDK v0.21 enables you to:
|
|
|
15
16
|
|
|
16
17
|
## ⚠️ Alpha Release
|
|
17
18
|
|
|
18
|
-
Agent0 SDK
|
|
19
|
+
Agent0 SDK v1.0.2 is in **alpha** with bugs and is not production ready. We're actively testing and improving it.
|
|
19
20
|
|
|
20
|
-
|
|
21
|
+
For breaking changes and migration notes, see `release_notes/RELEASE_NOTES_1.0.2.md`.
|
|
22
|
+
|
|
23
|
+
**Bug reports & feedback:** GitHub: [Report issues](https://github.com/agent0lab/agent0-ts/issues) | Telegram: [Agent0 channel](https://t.me/agent0kitchen) | Email: team@ag0.xyz
|
|
21
24
|
|
|
22
25
|
## Installation
|
|
23
26
|
|
|
24
27
|
### Prerequisites
|
|
25
28
|
|
|
26
|
-
- Node.js
|
|
29
|
+
- Node.js 22 or higher
|
|
27
30
|
- npm or yarn package manager
|
|
28
31
|
- Private key for signing transactions (or run in read-only mode)
|
|
29
32
|
- Access to an Ethereum RPC endpoint (e.g., Alchemy, Infura)
|
|
@@ -63,7 +66,7 @@ import { SDK } from 'agent0-sdk';
|
|
|
63
66
|
const sdk = new SDK({
|
|
64
67
|
chainId: 11155111, // Ethereum Sepolia testnet
|
|
65
68
|
rpcUrl: process.env.RPC_URL!,
|
|
66
|
-
signer: process.env.PRIVATE_KEY, // Optional: for write operations
|
|
69
|
+
signer: process.env.PRIVATE_KEY ?? process.env.AGENT_PRIVATE_KEY, // Optional: for write operations
|
|
67
70
|
ipfs: 'pinata', // Options: 'pinata', 'filecoinPin', 'node'
|
|
68
71
|
pinataJwt: process.env.PINATA_JWT // For Pinata
|
|
69
72
|
// Subgraph URL auto-defaults from DEFAULT_SUBGRAPH_URLS
|
|
@@ -85,8 +88,15 @@ await agent.setMCP('https://mcp.example.com/'); // Extracts tools, prompts, reso
|
|
|
85
88
|
await agent.setA2A('https://a2a.example.com/agent-card.json'); // Extracts skills
|
|
86
89
|
agent.setENS('myagent.eth');
|
|
87
90
|
|
|
88
|
-
//
|
|
89
|
-
agent.
|
|
91
|
+
// Add OASF skills and domains (standardized taxonomies)
|
|
92
|
+
agent.addSkill('data_engineering/data_transformation_pipeline', true);
|
|
93
|
+
agent.addSkill('natural_language_processing/natural_language_generation/summarization', true);
|
|
94
|
+
agent.addDomain('finance_and_business/investment_services', true);
|
|
95
|
+
agent.addDomain('technology/data_science/data_science', true);
|
|
96
|
+
|
|
97
|
+
// Optionally set a dedicated agent wallet on-chain (requires new wallet signature).
|
|
98
|
+
// If you want agentWallet = owner wallet, you can skip this (contract sets initial value to owner).
|
|
99
|
+
// await agent.setAgentWallet('0x...', { newWalletSigner: process.env.NEW_WALLET_PRIVATE_KEY });
|
|
90
100
|
agent.setTrust(true, true, false); // reputation, cryptoEconomic, teeAttestation
|
|
91
101
|
|
|
92
102
|
// Add metadata and set status
|
|
@@ -167,26 +177,15 @@ const allResults = await sdk.searchAgents({
|
|
|
167
177
|
|
|
168
178
|
// Search agents by reputation across chains
|
|
169
179
|
const reputationResults = await sdk.searchAgentsByReputation(
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
undefined, // reviewers
|
|
173
|
-
undefined, // capabilities
|
|
174
|
-
undefined, // skills
|
|
175
|
-
undefined, // tasks
|
|
176
|
-
undefined, // names
|
|
177
|
-
80, // minAverageScore
|
|
178
|
-
false, // includeRevoked
|
|
179
|
-
20, // pageSize
|
|
180
|
-
undefined, // cursor
|
|
181
|
-
undefined, // sort
|
|
182
|
-
[11155111, 84532] // chains
|
|
180
|
+
{ minAverageScore: 80 },
|
|
181
|
+
{ includeRevoked: false, pageSize: 20, chains: [11155111, 84532] }
|
|
183
182
|
);
|
|
184
183
|
|
|
185
184
|
// Get agent from specific chain
|
|
186
185
|
const agent = await sdk.getAgent('84532:123'); // Base Sepolia
|
|
187
186
|
|
|
188
187
|
// Search feedback for agent on specific chain
|
|
189
|
-
const feedbacks = await sdk.searchFeedback('84532:123'); // Base Sepolia
|
|
188
|
+
const feedbacks = await sdk.searchFeedback({ agentId: '84532:123' }); // Base Sepolia
|
|
190
189
|
|
|
191
190
|
// Get reputation summary for agent on specific chain
|
|
192
191
|
const summary = await sdk.getReputationSummary('84532:123'); // Base Sepolia
|
|
@@ -195,28 +194,28 @@ const summary = await sdk.getReputationSummary('84532:123'); // Base Sepolia
|
|
|
195
194
|
### 5. Give and Retrieve Feedback
|
|
196
195
|
|
|
197
196
|
```typescript
|
|
198
|
-
//
|
|
199
|
-
const feedbackFile = sdk.
|
|
197
|
+
// Optional: prepare an OFF-CHAIN feedback file (only needed for rich fields)
|
|
198
|
+
const feedbackFile = sdk.prepareFeedbackFile({
|
|
199
|
+
capability: 'tools',
|
|
200
|
+
name: 'code_generation',
|
|
201
|
+
skill: 'python',
|
|
202
|
+
context: { sessionId: 'abc' },
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
// Give feedback (on-chain fields are passed directly)
|
|
206
|
+
const feedback = await sdk.giveFeedback(
|
|
200
207
|
'11155111:123',
|
|
201
|
-
85, // 0-100
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
'
|
|
205
|
-
|
|
206
|
-
'python' // Optional: skill (A2A skill)
|
|
208
|
+
85, // score (0-100)
|
|
209
|
+
'data_analyst', // tag1 (optional)
|
|
210
|
+
'finance', // tag2 (optional)
|
|
211
|
+
'https://api.example.com/feedback', // endpoint (optional on-chain)
|
|
212
|
+
feedbackFile // optional off-chain file
|
|
207
213
|
);
|
|
208
214
|
|
|
209
|
-
// Give feedback
|
|
210
|
-
const feedback = await sdk.giveFeedback('11155111:123', feedbackFile);
|
|
211
|
-
|
|
212
215
|
// Search feedback
|
|
213
216
|
const feedbackResults = await sdk.searchFeedback(
|
|
214
|
-
'11155111:123',
|
|
215
|
-
|
|
216
|
-
['tools'], // capabilities
|
|
217
|
-
undefined, // skills
|
|
218
|
-
80, // minScore
|
|
219
|
-
100 // maxScore
|
|
217
|
+
{ agentId: '11155111:123', capabilities: ['tools'] },
|
|
218
|
+
{ minScore: 80, maxScore: 100 }
|
|
220
219
|
);
|
|
221
220
|
|
|
222
221
|
// Get reputation summary
|
|
@@ -276,8 +275,8 @@ Use `chainId:agentId` format to specify which chain an agent is on:
|
|
|
276
275
|
const agent = await sdk.getAgent('84532:1234'); // Base Sepolia
|
|
277
276
|
|
|
278
277
|
// Search feedback for agent on specific chain
|
|
279
|
-
const feedbacks = await sdk.searchFeedback('84532:1234'); // Base Sepolia
|
|
280
|
-
const feedbacksDefault = await sdk.searchFeedback('1234'); //
|
|
278
|
+
const feedbacks = await sdk.searchFeedback({ agentId: '84532:1234' }); // Base Sepolia
|
|
279
|
+
const feedbacksDefault = await sdk.searchFeedback({ agentId: '11155111:1234' }); // Default chain
|
|
281
280
|
|
|
282
281
|
// Get reputation summary for agent on specific chain
|
|
283
282
|
const summary = await sdk.getReputationSummary('84532:1234'); // Base Sepolia
|
|
@@ -303,26 +302,14 @@ const allChainsResult = await sdk.searchAgents({
|
|
|
303
302
|
|
|
304
303
|
// Multi-chain reputation search
|
|
305
304
|
const reputationResult = await sdk.searchAgentsByReputation(
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
undefined, // reviewers
|
|
309
|
-
undefined, // capabilities
|
|
310
|
-
undefined, // skills
|
|
311
|
-
undefined, // tasks
|
|
312
|
-
undefined, // names
|
|
313
|
-
80, // minAverageScore
|
|
314
|
-
false, // includeRevoked
|
|
315
|
-
20, // pageSize
|
|
316
|
-
undefined, // cursor
|
|
317
|
-
undefined, // sort
|
|
318
|
-
[11155111, 84532] // Multiple chains
|
|
305
|
+
{ minAverageScore: 80 },
|
|
306
|
+
{ includeRevoked: false, pageSize: 20, chains: [11155111, 84532] }
|
|
319
307
|
);
|
|
320
308
|
|
|
321
309
|
// Search all chains for agents with reputation
|
|
322
310
|
const allChainsReputation = await sdk.searchAgentsByReputation(
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
'all' // All configured chains
|
|
311
|
+
{ minAverageScore: 80 },
|
|
312
|
+
{ includeRevoked: false, pageSize: 20, chains: 'all' }
|
|
326
313
|
);
|
|
327
314
|
|
|
328
315
|
// Access metadata about queried chains
|
|
@@ -352,6 +339,58 @@ const agent = await sdk.getAgent('1234'); // Equivalent to "11155111:1234"
|
|
|
352
339
|
const agent = await sdk.getAgent('84532:1234'); // Base Sepolia
|
|
353
340
|
```
|
|
354
341
|
|
|
342
|
+
## OASF Taxonomies
|
|
343
|
+
|
|
344
|
+
The SDK includes support for the **Open Agentic Schema Framework (OASF)** taxonomies, enabling agents to advertise standardized skills and domains. This improves discoverability and interoperability across agent platforms.
|
|
345
|
+
|
|
346
|
+
### Adding Skills and Domains
|
|
347
|
+
|
|
348
|
+
```typescript
|
|
349
|
+
// Add OASF skills (with optional validation)
|
|
350
|
+
agent.addSkill('advanced_reasoning_planning/strategic_planning', true);
|
|
351
|
+
agent.addSkill('data_engineering/data_transformation_pipeline', true);
|
|
352
|
+
|
|
353
|
+
// Add OASF domains (with optional validation)
|
|
354
|
+
agent.addDomain('finance_and_business/investment_services', true);
|
|
355
|
+
agent.addDomain('technology/data_science/data_visualization', true);
|
|
356
|
+
|
|
357
|
+
// Remove skills/domains
|
|
358
|
+
agent.removeSkill('old_skill');
|
|
359
|
+
agent.removeDomain('old_domain');
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
### OASF in Registration Files
|
|
363
|
+
|
|
364
|
+
OASF skills and domains appear in your agent's registration file:
|
|
365
|
+
|
|
366
|
+
```json
|
|
367
|
+
{
|
|
368
|
+
"endpoints": [
|
|
369
|
+
{
|
|
370
|
+
"name": "OASF",
|
|
371
|
+
"endpoint": "https://github.com/agntcy/oasf/",
|
|
372
|
+
"version": "v0.8.0",
|
|
373
|
+
"skills": [
|
|
374
|
+
"advanced_reasoning_planning/strategic_planning",
|
|
375
|
+
"data_engineering/data_transformation_pipeline"
|
|
376
|
+
],
|
|
377
|
+
"domains": [
|
|
378
|
+
"finance_and_business/investment_services",
|
|
379
|
+
"technology/data_science/data_science"
|
|
380
|
+
]
|
|
381
|
+
}
|
|
382
|
+
]
|
|
383
|
+
}
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
### Taxonomy Files
|
|
387
|
+
|
|
388
|
+
The SDK includes complete OASF v0.8.0 taxonomy files:
|
|
389
|
+
- **Skills**: `src/taxonomies/all_skills.json` (136 skills)
|
|
390
|
+
- **Domains**: `src/taxonomies/all_domains.json` (204 domains)
|
|
391
|
+
|
|
392
|
+
Browse these files to find appropriate skill and domain slugs. For more information, see the [OASF specification](https://github.com/agntcy/oasf) and `release_notes/RELEASE_NOTES_0.31.md`.
|
|
393
|
+
|
|
355
394
|
## 🚀 Coming Soon
|
|
356
395
|
|
|
357
396
|
- Support for validations
|
package/dist/core/agent.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Agent class for managing individual agents
|
|
3
3
|
*/
|
|
4
|
+
import { ethers } from 'ethers';
|
|
4
5
|
import type { RegistrationFile } from '../models/interfaces.js';
|
|
5
6
|
import type { AgentId, Address, URI } from '../models/types.js';
|
|
7
|
+
import { EndpointType } from '../models/enums.js';
|
|
6
8
|
import type { SDK } from './sdk.js';
|
|
7
9
|
/**
|
|
8
10
|
* Agent class for managing individual agents
|
|
@@ -31,7 +33,40 @@ export declare class Agent {
|
|
|
31
33
|
setMCP(endpoint: string, version?: string, autoFetch?: boolean): Promise<this>;
|
|
32
34
|
setA2A(agentcard: string, version?: string, autoFetch?: boolean): Promise<this>;
|
|
33
35
|
setENS(name: string, version?: string): this;
|
|
34
|
-
|
|
36
|
+
/**
|
|
37
|
+
* Remove endpoint(s) with wildcard semantics (parity with Python SDK).
|
|
38
|
+
*
|
|
39
|
+
* - If no args are provided, removes all endpoints.
|
|
40
|
+
* - If only `type` is provided, removes all endpoints of that type.
|
|
41
|
+
* - If only `value` is provided, removes all endpoints with that value.
|
|
42
|
+
* - If both are provided, removes endpoints that match both.
|
|
43
|
+
*/
|
|
44
|
+
removeEndpoint(): this;
|
|
45
|
+
removeEndpoint(opts: {
|
|
46
|
+
type?: EndpointType;
|
|
47
|
+
value?: string;
|
|
48
|
+
}): this;
|
|
49
|
+
removeEndpoint(type?: EndpointType, value?: string): this;
|
|
50
|
+
/**
|
|
51
|
+
* Remove all endpoints.
|
|
52
|
+
*/
|
|
53
|
+
removeEndpoints(): this;
|
|
54
|
+
private _getOrCreateOasfEndpoint;
|
|
55
|
+
addSkill(slug: string, validateOASF?: boolean): this;
|
|
56
|
+
removeSkill(slug: string): this;
|
|
57
|
+
addDomain(slug: string, validateOASF?: boolean): this;
|
|
58
|
+
removeDomain(slug: string): this;
|
|
59
|
+
/**
|
|
60
|
+
* Set agent wallet on-chain with EIP-712 signature verification (ERC-8004 Jan 2026).
|
|
61
|
+
*
|
|
62
|
+
* This is a clean breaking API: it is on-chain only.
|
|
63
|
+
* If the agent is not registered yet, this throws.
|
|
64
|
+
*/
|
|
65
|
+
setAgentWallet(newWallet: Address, opts?: {
|
|
66
|
+
deadline?: number;
|
|
67
|
+
newWalletSigner?: string | ethers.Signer;
|
|
68
|
+
signature?: string | Uint8Array;
|
|
69
|
+
}): Promise<string>;
|
|
35
70
|
setActive(active: boolean): this;
|
|
36
71
|
setX402Support(x402Support: boolean): this;
|
|
37
72
|
setTrust(reputation?: boolean, cryptoEconomic?: boolean, teeAttestation?: boolean): this;
|
|
@@ -54,7 +89,7 @@ export declare class Agent {
|
|
|
54
89
|
/**
|
|
55
90
|
* Set agent URI (for updates)
|
|
56
91
|
*/
|
|
57
|
-
|
|
92
|
+
setAgentURI(agentURI: string): Promise<void>;
|
|
58
93
|
/**
|
|
59
94
|
* Transfer agent ownership
|
|
60
95
|
*/
|
package/dist/core/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"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"}
|