agent0-sdk 1.6.0 → 1.7.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 +16 -19
- package/dist/core/a2a-client.d.ts +109 -0
- package/dist/core/a2a-client.d.ts.map +1 -0
- package/dist/core/a2a-client.js +792 -0
- package/dist/core/a2a-client.js.map +1 -0
- package/dist/core/a2a-summary-client.d.ts +28 -0
- package/dist/core/a2a-summary-client.d.ts.map +1 -0
- package/dist/core/a2a-summary-client.js +79 -0
- package/dist/core/a2a-summary-client.js.map +1 -0
- package/dist/core/agent.d.ts +65 -3
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +242 -7
- package/dist/core/agent.js.map +1 -1
- package/dist/core/contracts.d.ts +5 -0
- package/dist/core/contracts.d.ts.map +1 -1
- package/dist/core/contracts.js +11 -0
- package/dist/core/contracts.js.map +1 -1
- package/dist/core/endpoint-crawler.d.ts +10 -0
- package/dist/core/endpoint-crawler.d.ts.map +1 -1
- package/dist/core/endpoint-crawler.js +59 -4
- package/dist/core/endpoint-crawler.js.map +1 -1
- package/dist/core/sdk.d.ts +56 -2
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +148 -16
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/viem-chain-client.d.ts.map +1 -1
- package/dist/core/viem-chain-client.js +5 -4
- package/dist/core/viem-chain-client.js.map +1 -1
- package/dist/core/x402-payment.d.ts +28 -0
- package/dist/core/x402-payment.d.ts.map +1 -0
- package/dist/core/x402-payment.js +242 -0
- package/dist/core/x402-payment.js.map +1 -0
- package/dist/core/x402-request.d.ts +33 -0
- package/dist/core/x402-request.d.ts.map +1 -0
- package/dist/core/x402-request.js +195 -0
- package/dist/core/x402-request.js.map +1 -0
- package/dist/core/x402-types.d.ts +147 -0
- package/dist/core/x402-types.d.ts.map +1 -0
- package/dist/core/x402-types.js +190 -0
- package/dist/core/x402-types.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/models/a2a.d.ts +176 -0
- package/dist/models/a2a.d.ts.map +1 -0
- package/dist/models/a2a.js +5 -0
- package/dist/models/a2a.js.map +1 -0
- package/dist/models/index.d.ts +1 -0
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +1 -0
- package/dist/models/index.js.map +1 -1
- package/package.json +9 -1
package/README.md
CHANGED
|
@@ -14,23 +14,16 @@ Agent0 SDK enables you to:
|
|
|
14
14
|
- **Cross-chain registration** - One-line registration with IPFS nodes, Pinata, Filecoin, or HTTP URIs
|
|
15
15
|
- **Public indexing** - Subgraph indexing both on-chain and IPFS data for fast search and retrieval
|
|
16
16
|
|
|
17
|
-
## Release (1.
|
|
17
|
+
## Release (1.7.0)
|
|
18
18
|
|
|
19
|
-
This release
|
|
19
|
+
This release adds two major new capabilities to the TypeScript SDK: **x402 payment-required HTTP** and **A2A (Agent-to-Agent)** messaging/task support.
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
- **x402 request flows**: `sdk.request()` / `sdk.fetchWithX402()` now return `{ x402Required: true, x402Payment }` on HTTP 402 instead of throwing, so callers can inspect payment requirements and continue with `x402Payment.pay()` or `x402Payment.payFirst()`.
|
|
22
|
+
- **A2A client flows**: `Agent.messageA2A()`, `Agent.listTasks()`, `Agent.loadTask()`, and `sdk.createA2AClient(...)` let you talk to A2A endpoints from either a loaded `Agent` or an `AgentSummary`.
|
|
23
|
+
- **Cross-chain/RPC improvements**: built-in default RPCs plus `overrideRpcUrls` support x402 payments and agent loading across multiple chains from one SDK instance.
|
|
24
|
+
- **Examples, tests, and docs**: the release ships with a full `examples/x402-a2a-demo.ts`, extensive unit/integration/Anvil coverage, and updated public docs.
|
|
22
25
|
|
|
23
|
-
|
|
24
|
-
- **New: `ipfs: 'helia'` (embedded)** runs an in-process Helia node (no external daemon) for `add/get/pin/unpin` operations.
|
|
25
|
-
|
|
26
|
-
It also adds **fully on-chain agent registration files** per [ERC-8004](https://eips.ethereum.org/EIPS/eip-8004), via `data:application/json;base64,...` `agentURI` (ERC-721 `tokenURI`):
|
|
27
|
-
|
|
28
|
-
- **Read support**: `SDK.loadAgent()` auto-detects and decodes ERC-8004 JSON base64 `data:` URIs (tolerant of optional params like `;charset=utf-8`).
|
|
29
|
-
- **Write support**: new `Agent.registerOnChain()` publishes the registration file fully on-chain by encoding it into a `data:` URI and writing it via `register(...)` / `setAgentURI(...)`.
|
|
30
|
-
- **Safety**: `loadAgent()` enforces a max decoded size for `data:` URIs (default **256 KiB**). Override with `registrationDataUriMaxBytes` in `SDKConfig`.
|
|
31
|
-
- **Backwards compatible**: `registerIPFS()` and `registerHTTP()` continue to work unchanged.
|
|
32
|
-
|
|
33
|
-
For breaking changes and migration notes, see `release_notes/RELEASE_NOTES_1.6.0.md` (and prior notes in `release_notes/`).
|
|
26
|
+
For detailed changes, migration notes, and testing guidance, see `release_notes/RELEASE_NOTES_1.7.0.md` (and prior notes in `release_notes/`).
|
|
34
27
|
|
|
35
28
|
**Bug reports & feedback:** GitHub: [Report issues](https://github.com/agent0lab/agent0-ts/issues) | Telegram: [Agent0 channel](https://t.me/agent0kitchen) | Email: team@ag0.xyz
|
|
36
29
|
|
|
@@ -53,7 +46,7 @@ npm install agent0-sdk
|
|
|
53
46
|
To install a specific version explicitly:
|
|
54
47
|
|
|
55
48
|
```bash
|
|
56
|
-
npm install agent0-sdk@1.
|
|
49
|
+
npm install agent0-sdk@1.7.0
|
|
57
50
|
```
|
|
58
51
|
|
|
59
52
|
**Note:** This package is an ESM (ECMAScript Module) package. Use `import` statements in your code:
|
|
@@ -83,7 +76,7 @@ import { SDK } from 'agent0-sdk';
|
|
|
83
76
|
// Initialize SDK with IPFS and subgraph
|
|
84
77
|
const sdk = new SDK({
|
|
85
78
|
chainId: 11155111, // Ethereum Sepolia testnet (use 1 for Ethereum Mainnet)
|
|
86
|
-
rpcUrl: process.env.RPC_URL
|
|
79
|
+
rpcUrl: process.env.RPC_URL, // Optional for supported chains (built-in default RPC is used if omitted)
|
|
87
80
|
privateKey: process.env.PRIVATE_KEY ?? process.env.AGENT_PRIVATE_KEY, // Optional: for write operations
|
|
88
81
|
ipfs: 'pinata', // Options: 'pinata', 'filecoinPin', 'node' (Kubo daemon), 'helia' (embedded)
|
|
89
82
|
pinataJwt: process.env.PINATA_JWT // For Pinata
|
|
@@ -93,7 +86,7 @@ const sdk = new SDK({
|
|
|
93
86
|
|
|
94
87
|
### 1b. Initialize SDK (browser-side with ERC-6963 wallets)
|
|
95
88
|
|
|
96
|
-
In the browser you typically keep **reads on your `rpcUrl
|
|
89
|
+
In the browser you typically keep **reads on your RPC** (default or `rpcUrl`) and use a wallet (EIP-1193) for **writes**.
|
|
97
90
|
|
|
98
91
|
```typescript
|
|
99
92
|
import { SDK } from 'agent0-sdk';
|
|
@@ -395,14 +388,18 @@ const allChainsReputation = await sdk.searchAgents(
|
|
|
395
388
|
// Pagination has been removed; multi-chain results are returned as a flat list.
|
|
396
389
|
```
|
|
397
390
|
|
|
391
|
+
### RPC URL defaults and overrides
|
|
392
|
+
|
|
393
|
+
The SDK ships with **built-in default free RPC URLs** for supported chains (Ethereum, Base, Polygon mainnets and Sepolia testnets). Override order: **defaults** → **`rpcUrl`** (for the primary chain) → **`overrideRpcUrls`** (per-chain overrides, e.g. for x402 payments on other chains). You can omit `rpcUrl` when using a supported chain; pass `rpcUrl` and/or `overrideRpcUrls` to override.
|
|
394
|
+
|
|
398
395
|
### Default Chain Behavior
|
|
399
396
|
|
|
400
397
|
When you initialize the SDK, you specify a default chain. Agent IDs without a `chainId:` prefix use the default chain:
|
|
401
398
|
|
|
402
399
|
```typescript
|
|
403
400
|
const sdk = new SDK({
|
|
404
|
-
chainId: 11155111, // Default chain
|
|
405
|
-
rpcUrl: 'https://eth-sepolia.g.alchemy.com/v2/YOUR_KEY'
|
|
401
|
+
chainId: 11155111, // Default chain; rpcUrl optional (built-in default used)
|
|
402
|
+
rpcUrl: 'https://eth-sepolia.g.alchemy.com/v2/YOUR_KEY' // optional override
|
|
406
403
|
});
|
|
407
404
|
|
|
408
405
|
// Uses default chain (11155111)
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2A (Agent-to-Agent) HTTP client: message:send, task query/cancel, response parsing.
|
|
3
|
+
* Used by Agent.messageA2A(); protocol details live here for testability and reuse.
|
|
4
|
+
* When x402Deps is provided, 402 is returned as x402Required + x402Payment.pay() instead of throwing.
|
|
5
|
+
*/
|
|
6
|
+
import type { Part, MessageResponse, TaskResponse, AgentTask, MessageA2AOptions, TaskSummary, ListTasksOptions, CredentialObject, AgentCardAuth } from '../models/a2a.js';
|
|
7
|
+
import { type X402RequestDeps } from './x402-request.js';
|
|
8
|
+
import type { X402RequiredResponse } from './x402-types.js';
|
|
9
|
+
/** Result of sendMessage or task.message() when 402 is supported (x402Deps provided). */
|
|
10
|
+
export type A2AMessageResult = MessageResponse | TaskResponse | X402RequiredResponse<MessageResponse | TaskResponse>;
|
|
11
|
+
/** Normalized A2A interface from agent card (v1 supportedInterfaces or 0.3 url + additionalInterfaces). */
|
|
12
|
+
export type NormalizedInterface = {
|
|
13
|
+
url: string;
|
|
14
|
+
binding: 'HTTP+JSON' | 'JSONRPC' | 'GRPC' | 'AUTO';
|
|
15
|
+
version: string | undefined;
|
|
16
|
+
tenant?: string;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Normalize agent card (v1 or 0.3 style) to a list of interfaces. Doc §6.1.
|
|
20
|
+
*/
|
|
21
|
+
export declare function normalizeInterfaces(card: Record<string, unknown> | null | undefined): NormalizedInterface[];
|
|
22
|
+
/**
|
|
23
|
+
* Pick the best interface from the list that the client supports. Prefers HTTP+JSON then JSON-RPC. Doc §6.1.
|
|
24
|
+
* AUTO is always allowed so interfaces with no protocolBinding are picked and sendMessage will try both bindings.
|
|
25
|
+
*/
|
|
26
|
+
export declare function pickInterface(interfaces: NormalizedInterface[], preferredBindings: readonly NormalizedInterface['binding'][]): NormalizedInterface | null;
|
|
27
|
+
/**
|
|
28
|
+
* Resolved A2A interface from an endpoint URL (agent card fetch + pickInterface + auth from card).
|
|
29
|
+
* Used by A2AClientFromSummary and by tests.
|
|
30
|
+
*/
|
|
31
|
+
export interface ResolvedA2A {
|
|
32
|
+
baseUrl: string;
|
|
33
|
+
a2aVersion: string;
|
|
34
|
+
binding: NormalizedInterface['binding'];
|
|
35
|
+
tenant?: string;
|
|
36
|
+
auth?: AgentCardAuth;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Resolve A2A interface from an endpoint URL: fetch agent card, pick interface, extract auth from card.
|
|
40
|
+
* Discovery: if URL looks like a card path, fetch it; else try /.well-known/agent-card.json and agent.json.
|
|
41
|
+
*/
|
|
42
|
+
export declare function resolveA2aFromEndpointUrl(url: string): Promise<ResolvedA2A>;
|
|
43
|
+
export interface A2AAuth {
|
|
44
|
+
headers: Record<string, string>;
|
|
45
|
+
queryParams: Record<string, string>;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Apply credential to request using AgentCard securitySchemes and security (spec §2.5, OpenAPI 3 style).
|
|
49
|
+
* Walks security[] in order and uses the first scheme for which the credential object has a string value (first-match).
|
|
50
|
+
* Credential object keys must match scheme names (e.g. apiKey, bearerAuth). String credential normalizes to { apiKey }.
|
|
51
|
+
* Supported: apiKey (in: header|query|cookie + name), http (bearer → Authorization: Bearer; basic → Authorization: Basic base64(user:password)).
|
|
52
|
+
*/
|
|
53
|
+
export declare function applyCredential(credential: string | CredentialObject, auth: AgentCardAuth): A2AAuth;
|
|
54
|
+
type CreateTaskHandleFn = (baseUrl: string, a2aVersion: string, taskId: string, contextId: string, x402Deps?: X402RequestDeps, auth?: A2AAuth, tenant?: string) => AgentTask;
|
|
55
|
+
/**
|
|
56
|
+
* Parse JSON response from POST /message:send into MessageResponse or TaskResponse.
|
|
57
|
+
*/
|
|
58
|
+
export declare function parseMessageSendResponse(data: Record<string, unknown>, createTaskHandle: CreateTaskHandleFn, baseUrl: string, a2aVersion: string, x402Deps?: X402RequestDeps, auth?: A2AAuth): MessageResponse | TaskResponse;
|
|
59
|
+
/**
|
|
60
|
+
* POST to /message:send, handle 402/!ok, parse JSON into MessageResponse | TaskResponse.
|
|
61
|
+
* Path order from version (+ optional tenant). On 404 try next path once.
|
|
62
|
+
*/
|
|
63
|
+
export declare function postAndParseMessageSend(baseUrl: string, a2aVersion: string, body: Record<string, unknown>, createTaskHandle: CreateTaskHandleFn, auth?: A2AAuth, tenant?: string): Promise<MessageResponse | TaskResponse>;
|
|
64
|
+
/**
|
|
65
|
+
* Build an AgentTask handle that can query, message, and cancel.
|
|
66
|
+
* When x402Deps is provided, task methods use requestWithX402 and may return 402 + pay().
|
|
67
|
+
*/
|
|
68
|
+
export declare function createTaskHandle(baseUrl: string, a2aVersion: string, taskId: string, contextId: string, x402Deps?: X402RequestDeps, auth?: A2AAuth, tenant?: string): AgentTask;
|
|
69
|
+
export interface ListTasksParams {
|
|
70
|
+
baseUrl: string;
|
|
71
|
+
a2aVersion: string;
|
|
72
|
+
options?: ListTasksOptions;
|
|
73
|
+
auth?: AgentCardAuth;
|
|
74
|
+
/** Optional tenant from agent card for path prefix (e.g. /tenants/{tenant}/tasks). */
|
|
75
|
+
tenant?: string;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Fetch a single task by ID (GET /tasks/:id). Used by loadTask to get contextId and build AgentTask.
|
|
79
|
+
* When x402Deps provided, 402 returns x402Required + pay() instead of throwing.
|
|
80
|
+
* Optional payment sends with first request (spec §4.2).
|
|
81
|
+
*/
|
|
82
|
+
export declare function getTask(baseUrl: string, a2aVersion: string, taskId: string, auth?: A2AAuth, x402Deps?: X402RequestDeps, payment?: string, tenant?: string): Promise<TaskSummary | X402RequiredResponse<TaskSummary>>;
|
|
83
|
+
/**
|
|
84
|
+
* List tasks (GET /tasks with optional filter, historyLength). Fetches all pages internally.
|
|
85
|
+
* When x402Deps provided, 402 on the first request returns x402Required + pay().
|
|
86
|
+
*/
|
|
87
|
+
export declare function listTasks(params: ListTasksParams, x402Deps?: X402RequestDeps): Promise<TaskSummary[] | X402RequiredResponse<TaskSummary[]>>;
|
|
88
|
+
export interface SendMessageParams {
|
|
89
|
+
baseUrl: string;
|
|
90
|
+
a2aVersion: string;
|
|
91
|
+
content: string | {
|
|
92
|
+
parts: Part[];
|
|
93
|
+
};
|
|
94
|
+
options?: MessageA2AOptions;
|
|
95
|
+
/** From AgentCard: where and how to send credential (per §2.5). */
|
|
96
|
+
auth?: AgentCardAuth;
|
|
97
|
+
/** Optional tenant from agent card for path prefix. */
|
|
98
|
+
tenant?: string;
|
|
99
|
+
/** When JSONRPC, use JSON-RPC binding; when AUTO (or unspecified in card), try HTTP+JSON then JSON-RPC. */
|
|
100
|
+
binding?: 'HTTP+JSON' | 'JSONRPC' | 'GRPC' | 'AUTO';
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Send a message to the A2A endpoint. Returns MessageResponse or TaskResponse per spec §2.1.
|
|
104
|
+
* When x402Deps is provided, 402 is returned as x402Required + x402Payment.pay() instead of throwing.
|
|
105
|
+
* When binding is AUTO (card did not declare protocolBinding), tries HTTP+JSON first, then JSON-RPC on binding mismatch.
|
|
106
|
+
*/
|
|
107
|
+
export declare function sendMessage(params: SendMessageParams, x402Deps?: X402RequestDeps): Promise<MessageResponse | TaskResponse | X402RequiredResponse<MessageResponse | TaskResponse>>;
|
|
108
|
+
export {};
|
|
109
|
+
//# sourceMappingURL=a2a-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2a-client.d.ts","sourceRoot":"","sources":["../../src/core/a2a-client.ts"],"names":[],"mappings":"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"}
|