agent0-sdk 0.2.1

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.
Files changed (79) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +234 -0
  3. package/dist/core/agent.d.ts +76 -0
  4. package/dist/core/agent.d.ts.map +1 -0
  5. package/dist/core/agent.js +477 -0
  6. package/dist/core/agent.js.map +1 -0
  7. package/dist/core/contracts.d.ts +688 -0
  8. package/dist/core/contracts.d.ts.map +1 -0
  9. package/dist/core/contracts.js +348 -0
  10. package/dist/core/contracts.js.map +1 -0
  11. package/dist/core/endpoint-crawler.d.ts +44 -0
  12. package/dist/core/endpoint-crawler.d.ts.map +1 -0
  13. package/dist/core/endpoint-crawler.js +280 -0
  14. package/dist/core/endpoint-crawler.js.map +1 -0
  15. package/dist/core/feedback-manager.d.ts +98 -0
  16. package/dist/core/feedback-manager.d.ts.map +1 -0
  17. package/dist/core/feedback-manager.js +543 -0
  18. package/dist/core/feedback-manager.js.map +1 -0
  19. package/dist/core/indexer.d.ts +37 -0
  20. package/dist/core/indexer.d.ts.map +1 -0
  21. package/dist/core/indexer.js +189 -0
  22. package/dist/core/indexer.js.map +1 -0
  23. package/dist/core/ipfs-client.d.ts +88 -0
  24. package/dist/core/ipfs-client.d.ts.map +1 -0
  25. package/dist/core/ipfs-client.js +334 -0
  26. package/dist/core/ipfs-client.js.map +1 -0
  27. package/dist/core/sdk.d.ts +177 -0
  28. package/dist/core/sdk.d.ts.map +1 -0
  29. package/dist/core/sdk.js +544 -0
  30. package/dist/core/sdk.js.map +1 -0
  31. package/dist/core/subgraph-client.d.ts +68 -0
  32. package/dist/core/subgraph-client.d.ts.map +1 -0
  33. package/dist/core/subgraph-client.js +635 -0
  34. package/dist/core/subgraph-client.js.map +1 -0
  35. package/dist/core/web3-client.d.ts +94 -0
  36. package/dist/core/web3-client.d.ts.map +1 -0
  37. package/dist/core/web3-client.js +197 -0
  38. package/dist/core/web3-client.js.map +1 -0
  39. package/dist/index.d.ts +20 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +20 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/models/enums.d.ts +22 -0
  44. package/dist/models/enums.d.ts.map +1 -0
  45. package/dist/models/enums.js +24 -0
  46. package/dist/models/enums.js.map +1 -0
  47. package/dist/models/generated/subgraph-types.d.ts +208 -0
  48. package/dist/models/generated/subgraph-types.d.ts.map +1 -0
  49. package/dist/models/generated/subgraph-types.js +2 -0
  50. package/dist/models/generated/subgraph-types.js.map +1 -0
  51. package/dist/models/index.d.ts +8 -0
  52. package/dist/models/index.d.ts.map +1 -0
  53. package/dist/models/index.js +8 -0
  54. package/dist/models/index.js.map +1 -0
  55. package/dist/models/interfaces.d.ts +125 -0
  56. package/dist/models/interfaces.d.ts.map +1 -0
  57. package/dist/models/interfaces.js +5 -0
  58. package/dist/models/interfaces.js.map +1 -0
  59. package/dist/models/types.d.ts +11 -0
  60. package/dist/models/types.d.ts.map +1 -0
  61. package/dist/models/types.js +5 -0
  62. package/dist/models/types.js.map +1 -0
  63. package/dist/utils/constants.d.ts +24 -0
  64. package/dist/utils/constants.d.ts.map +1 -0
  65. package/dist/utils/constants.js +28 -0
  66. package/dist/utils/constants.js.map +1 -0
  67. package/dist/utils/id-format.d.ts +30 -0
  68. package/dist/utils/id-format.d.ts.map +1 -0
  69. package/dist/utils/id-format.js +67 -0
  70. package/dist/utils/id-format.js.map +1 -0
  71. package/dist/utils/index.d.ts +7 -0
  72. package/dist/utils/index.d.ts.map +1 -0
  73. package/dist/utils/index.js +7 -0
  74. package/dist/utils/index.js.map +1 -0
  75. package/dist/utils/validation.d.ts +25 -0
  76. package/dist/utils/validation.d.ts.map +1 -0
  77. package/dist/utils/validation.js +61 -0
  78. package/dist/utils/validation.js.map +1 -0
  79. package/package.json +71 -0
@@ -0,0 +1,280 @@
1
+ /**
2
+ * Endpoint Crawler for MCP and A2A Servers
3
+ * Automatically fetches capabilities (tools, prompts, resources, skills) from endpoints
4
+ */
5
+ /**
6
+ * Helper to create JSON-RPC request
7
+ */
8
+ function createJsonRpcRequest(method, params, requestId = 1) {
9
+ return {
10
+ jsonrpc: '2.0',
11
+ method,
12
+ id: requestId,
13
+ params: params || {},
14
+ };
15
+ }
16
+ /**
17
+ * Crawls MCP and A2A endpoints to fetch capabilities
18
+ */
19
+ export class EndpointCrawler {
20
+ constructor(timeout = 5000) {
21
+ this.timeout = timeout;
22
+ }
23
+ /**
24
+ * Fetch MCP capabilities (tools, prompts, resources) from an MCP server
25
+ */
26
+ async fetchMcpCapabilities(endpoint) {
27
+ // Ensure endpoint is HTTP/HTTPS
28
+ if (!endpoint.startsWith('http://') && !endpoint.startsWith('https://')) {
29
+ // Invalid endpoint format - return null
30
+ return null;
31
+ }
32
+ // Try JSON-RPC approach first (for real MCP servers)
33
+ const capabilities = await this._fetchViaJsonRpc(endpoint);
34
+ if (capabilities) {
35
+ return capabilities;
36
+ }
37
+ // Fallback to static agentcard.json
38
+ try {
39
+ const agentcardUrl = `${endpoint}/agentcard.json`;
40
+ const response = await fetch(agentcardUrl, {
41
+ signal: AbortSignal.timeout(this.timeout),
42
+ redirect: 'follow',
43
+ });
44
+ if (response.ok) {
45
+ const data = await response.json();
46
+ // Extract capabilities from agentcard
47
+ const result = {
48
+ mcpTools: this._extractList(data, 'tools'),
49
+ mcpPrompts: this._extractList(data, 'prompts'),
50
+ mcpResources: this._extractList(data, 'resources'),
51
+ };
52
+ if (result.mcpTools?.length || result.mcpPrompts?.length || result.mcpResources?.length) {
53
+ return result;
54
+ }
55
+ }
56
+ }
57
+ catch (error) {
58
+ // Silently fail - soft failure pattern
59
+ }
60
+ return null;
61
+ }
62
+ /**
63
+ * Try to fetch capabilities via JSON-RPC
64
+ */
65
+ async _fetchViaJsonRpc(httpUrl) {
66
+ try {
67
+ // Make all JSON-RPC calls in parallel for better performance
68
+ const [tools, resources, prompts] = await Promise.all([
69
+ this._jsonRpcCall(httpUrl, 'tools/list'),
70
+ this._jsonRpcCall(httpUrl, 'resources/list'),
71
+ this._jsonRpcCall(httpUrl, 'prompts/list'),
72
+ ]);
73
+ const mcpTools = [];
74
+ const mcpResources = [];
75
+ const mcpPrompts = [];
76
+ // Extract names from tools
77
+ if (tools && typeof tools === 'object' && 'tools' in tools) {
78
+ const toolsArray = tools.tools;
79
+ if (Array.isArray(toolsArray)) {
80
+ for (const tool of toolsArray) {
81
+ if (tool && typeof tool === 'object' && 'name' in tool) {
82
+ mcpTools.push(tool.name);
83
+ }
84
+ }
85
+ }
86
+ }
87
+ // Extract names from resources
88
+ if (resources && typeof resources === 'object' && 'resources' in resources) {
89
+ const resourcesArray = resources.resources;
90
+ if (Array.isArray(resourcesArray)) {
91
+ for (const resource of resourcesArray) {
92
+ if (resource && typeof resource === 'object' && 'name' in resource) {
93
+ mcpResources.push(resource.name);
94
+ }
95
+ }
96
+ }
97
+ }
98
+ // Extract names from prompts
99
+ if (prompts && typeof prompts === 'object' && 'prompts' in prompts) {
100
+ const promptsArray = prompts.prompts;
101
+ if (Array.isArray(promptsArray)) {
102
+ for (const prompt of promptsArray) {
103
+ if (prompt && typeof prompt === 'object' && 'name' in prompt) {
104
+ mcpPrompts.push(prompt.name);
105
+ }
106
+ }
107
+ }
108
+ }
109
+ if (mcpTools.length || mcpResources.length || mcpPrompts.length) {
110
+ return {
111
+ mcpTools: mcpTools.length > 0 ? mcpTools : undefined,
112
+ mcpResources: mcpResources.length > 0 ? mcpResources : undefined,
113
+ mcpPrompts: mcpPrompts.length > 0 ? mcpPrompts : undefined,
114
+ };
115
+ }
116
+ }
117
+ catch (error) {
118
+ // JSON-RPC approach failed - continue to fallback
119
+ }
120
+ return null;
121
+ }
122
+ /**
123
+ * Make a JSON-RPC call and return the result
124
+ */
125
+ async _jsonRpcCall(url, method, params) {
126
+ try {
127
+ const payload = createJsonRpcRequest(method, params);
128
+ const response = await fetch(url, {
129
+ method: 'POST',
130
+ headers: {
131
+ 'Content-Type': 'application/json',
132
+ Accept: 'application/json, text/event-stream',
133
+ },
134
+ body: JSON.stringify(payload),
135
+ signal: AbortSignal.timeout(this.timeout),
136
+ });
137
+ if (!response.ok) {
138
+ return null;
139
+ }
140
+ // Check if response is SSE format
141
+ const contentType = response.headers.get('content-type') || '';
142
+ const text = await response.text();
143
+ if (contentType.includes('text/event-stream') || text.includes('event: message')) {
144
+ // Parse SSE format
145
+ const result = this._parseSseResponse(text);
146
+ if (result) {
147
+ return result;
148
+ }
149
+ }
150
+ // Regular JSON response
151
+ const result = JSON.parse(text);
152
+ if (result.result !== undefined) {
153
+ return result.result;
154
+ }
155
+ return result;
156
+ }
157
+ catch (error) {
158
+ // JSON-RPC call failed - continue to next method
159
+ return null;
160
+ }
161
+ }
162
+ /**
163
+ * Parse Server-Sent Events (SSE) format response
164
+ */
165
+ _parseSseResponse(sseText) {
166
+ try {
167
+ // Look for "data:" lines containing JSON
168
+ const lines = sseText.split('\n');
169
+ for (const line of lines) {
170
+ if (line.startsWith('data: ')) {
171
+ const jsonStr = line.slice(6); // Remove "data: " prefix
172
+ const data = JSON.parse(jsonStr);
173
+ if (data.result !== undefined) {
174
+ return data.result;
175
+ }
176
+ return data;
177
+ }
178
+ }
179
+ }
180
+ catch (error) {
181
+ // Failed to parse SSE response - continue
182
+ }
183
+ return null;
184
+ }
185
+ /**
186
+ * Fetch A2A capabilities (skills) from an A2A server
187
+ */
188
+ async fetchA2aCapabilities(endpoint) {
189
+ try {
190
+ // Ensure endpoint is HTTP/HTTPS
191
+ if (!endpoint.startsWith('http://') && !endpoint.startsWith('https://')) {
192
+ // Invalid endpoint format - skip
193
+ return null;
194
+ }
195
+ // Try multiple well-known paths for A2A agent cards
196
+ const agentcardUrls = [
197
+ `${endpoint}/agentcard.json`,
198
+ `${endpoint}/.well-known/agent.json`,
199
+ `${endpoint.replace(/\/$/, '')}/.well-known/agent.json`,
200
+ ];
201
+ for (const agentcardUrl of agentcardUrls) {
202
+ try {
203
+ const response = await fetch(agentcardUrl, {
204
+ signal: AbortSignal.timeout(this.timeout),
205
+ redirect: 'follow',
206
+ });
207
+ if (response.ok) {
208
+ const data = await response.json();
209
+ // Extract skills from agentcard
210
+ const skills = this._extractList(data, 'skills');
211
+ if (skills && skills.length > 0) {
212
+ return { a2aSkills: skills };
213
+ }
214
+ }
215
+ }
216
+ catch {
217
+ // Try next URL
218
+ continue;
219
+ }
220
+ }
221
+ }
222
+ catch (error) {
223
+ // Unexpected error - continue silently
224
+ }
225
+ return null;
226
+ }
227
+ /**
228
+ * Extract a list of strings from nested JSON data
229
+ */
230
+ _extractList(data, key) {
231
+ const result = [];
232
+ // Try top-level key
233
+ if (key in data && Array.isArray(data[key])) {
234
+ for (const item of data[key]) {
235
+ if (typeof item === 'string') {
236
+ result.push(item);
237
+ }
238
+ else if (item && typeof item === 'object') {
239
+ // For objects, try to extract name/id field
240
+ const nameFields = ['name', 'id', 'identifier', 'title'];
241
+ for (const nameField of nameFields) {
242
+ if (nameField in item && typeof item[nameField] === 'string') {
243
+ result.push(item[nameField]);
244
+ break;
245
+ }
246
+ }
247
+ }
248
+ }
249
+ }
250
+ // Try nested in 'capabilities' or 'abilities'
251
+ if (result.length === 0) {
252
+ const containerKeys = ['capabilities', 'abilities', 'features'];
253
+ for (const containerKey of containerKeys) {
254
+ if (containerKey in data && data[containerKey] && typeof data[containerKey] === 'object') {
255
+ if (key in data[containerKey] && Array.isArray(data[containerKey][key])) {
256
+ for (const item of data[containerKey][key]) {
257
+ if (typeof item === 'string') {
258
+ result.push(item);
259
+ }
260
+ else if (item && typeof item === 'object') {
261
+ const nameFields = ['name', 'id', 'identifier', 'title'];
262
+ for (const nameField of nameFields) {
263
+ if (nameField in item && typeof item[nameField] === 'string') {
264
+ result.push(item[nameField]);
265
+ break;
266
+ }
267
+ }
268
+ }
269
+ }
270
+ }
271
+ if (result.length > 0) {
272
+ break;
273
+ }
274
+ }
275
+ }
276
+ }
277
+ return result;
278
+ }
279
+ }
280
+ //# sourceMappingURL=endpoint-crawler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-crawler.js","sourceRoot":"","sources":["../../src/core/endpoint-crawler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Feedback management system for Agent0 SDK
3
+ */
4
+ import { ethers } from 'ethers';
5
+ import type { Feedback, SearchFeedbackParams } from '../models/interfaces';
6
+ import type { AgentId, Address, URI, IdemKey } from '../models/types';
7
+ import type { Web3Client } from './web3-client';
8
+ import type { IPFSClient } from './ipfs-client';
9
+ import type { SubgraphClient } from './subgraph-client';
10
+ export interface FeedbackAuth {
11
+ agentId: bigint;
12
+ clientAddress: Address;
13
+ indexLimit: bigint;
14
+ expiry: bigint;
15
+ chainId: bigint;
16
+ identityRegistry: Address;
17
+ signerAddress: Address;
18
+ }
19
+ /**
20
+ * Manages feedback operations for the Agent0 SDK
21
+ */
22
+ export declare class FeedbackManager {
23
+ private web3Client;
24
+ private ipfsClient?;
25
+ private reputationRegistry?;
26
+ private identityRegistry?;
27
+ private subgraphClient?;
28
+ constructor(web3Client: Web3Client, ipfsClient?: IPFSClient | undefined, reputationRegistry?: ethers.Contract | undefined, identityRegistry?: ethers.Contract | undefined, subgraphClient?: SubgraphClient | undefined);
29
+ /**
30
+ * Set reputation registry contract (for lazy initialization)
31
+ */
32
+ setReputationRegistry(registry: ethers.Contract): void;
33
+ /**
34
+ * Set identity registry contract (for lazy initialization)
35
+ */
36
+ setIdentityRegistry(registry: ethers.Contract): void;
37
+ /**
38
+ * Sign feedback authorization for a client
39
+ */
40
+ signFeedbackAuth(agentId: AgentId, clientAddress: Address, indexLimit?: number, expiryHours?: number): Promise<string>;
41
+ /**
42
+ * Prepare feedback file (local file/object) according to spec
43
+ */
44
+ prepareFeedback(agentId: AgentId, score?: number, // 0-100
45
+ tags?: string[], text?: string, capability?: string, name?: string, skill?: string, task?: string, context?: Record<string, unknown>, proofOfPayment?: Record<string, unknown>, extra?: Record<string, unknown>): Record<string, unknown>;
46
+ /**
47
+ * Give feedback (maps 8004 endpoint)
48
+ */
49
+ giveFeedback(agentId: AgentId, feedbackFile: Record<string, unknown>, idem?: IdemKey, feedbackAuth?: string): Promise<Feedback>;
50
+ /**
51
+ * Get single feedback with responses
52
+ * Currently only supports blockchain query - subgraph support coming soon
53
+ */
54
+ getFeedback(agentId: AgentId, clientAddress: Address, feedbackIndex: number): Promise<Feedback>;
55
+ /**
56
+ * Get feedback from blockchain
57
+ */
58
+ private _getFeedbackFromBlockchain;
59
+ /**
60
+ * Search feedback with filters
61
+ * Uses subgraph if available, otherwise returns empty array
62
+ */
63
+ searchFeedback(params: SearchFeedbackParams): Promise<Feedback[]>;
64
+ /**
65
+ * Map subgraph feedback data to Feedback model
66
+ */
67
+ private _mapSubgraphFeedbackToModel;
68
+ /**
69
+ * Convert hex bytes32 tags back to strings, or return plain strings as-is
70
+ * The subgraph now stores tags as human-readable strings (not hex),
71
+ * so this method handles both formats for backwards compatibility
72
+ */
73
+ private _hexBytes32ToTags;
74
+ /**
75
+ * Append response to feedback
76
+ */
77
+ appendResponse(agentId: AgentId, clientAddress: Address, feedbackIndex: number, responseUri: URI, responseHash: string): Promise<string>;
78
+ /**
79
+ * Revoke feedback
80
+ */
81
+ revokeFeedback(agentId: AgentId, feedbackIndex: number): Promise<string>;
82
+ /**
83
+ * Convert string to bytes32 for blockchain storage
84
+ */
85
+ private _stringToBytes32;
86
+ /**
87
+ * Convert bytes32 tags back to strings
88
+ */
89
+ private _bytes32ToTags;
90
+ /**
91
+ * Get reputation summary
92
+ */
93
+ getReputationSummary(agentId: AgentId, tag1?: string, tag2?: string): Promise<{
94
+ count: number;
95
+ averageScore: number;
96
+ }>;
97
+ }
98
+ //# sourceMappingURL=feedback-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback-manager.d.ts","sourceRoot":"","sources":["../../src/core/feedback-manager.ts"],"names":[],"mappings":"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"}