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 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Agent0 SDK Models
3
+ * Re-exports all types, interfaces, and enums
4
+ */
5
+ export * from './types';
6
+ export * from './enums';
7
+ export * from './interfaces';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Core interfaces for Agent0 SDK
3
+ */
4
+ import type { AgentId, Address, URI, Timestamp } from './types';
5
+ import type { EndpointType, TrustModel } from './enums';
6
+ /**
7
+ * Represents an agent endpoint
8
+ */
9
+ export interface Endpoint {
10
+ type: EndpointType;
11
+ value: string;
12
+ meta?: Record<string, any>;
13
+ }
14
+ /**
15
+ * Agent registration file structure
16
+ */
17
+ export interface RegistrationFile {
18
+ agentId?: AgentId;
19
+ agentURI?: URI;
20
+ name: string;
21
+ description: string;
22
+ image?: URI;
23
+ walletAddress?: Address;
24
+ walletChainId?: number;
25
+ endpoints: Endpoint[];
26
+ trustModels: (TrustModel | string)[];
27
+ owners: Address[];
28
+ operators: Address[];
29
+ active: boolean;
30
+ x402support: boolean;
31
+ metadata: Record<string, any>;
32
+ updatedAt: Timestamp;
33
+ }
34
+ /**
35
+ * Summary information for agent discovery and search
36
+ */
37
+ export interface AgentSummary {
38
+ chainId: number;
39
+ agentId: AgentId;
40
+ name: string;
41
+ image?: URI;
42
+ description: string;
43
+ owners: Address[];
44
+ operators: Address[];
45
+ mcp: boolean;
46
+ a2a: boolean;
47
+ ens?: string;
48
+ did?: string;
49
+ walletAddress?: Address;
50
+ supportedTrusts: string[];
51
+ a2aSkills: string[];
52
+ mcpTools: string[];
53
+ mcpPrompts: string[];
54
+ mcpResources: string[];
55
+ active: boolean;
56
+ x402support: boolean;
57
+ extras: Record<string, any>;
58
+ }
59
+ /**
60
+ * Feedback data structure
61
+ */
62
+ export interface Feedback {
63
+ id: FeedbackIdTuple;
64
+ agentId: AgentId;
65
+ reviewer: Address;
66
+ score?: number;
67
+ tags: string[];
68
+ text?: string;
69
+ context?: Record<string, any>;
70
+ proofOfPayment?: Record<string, any>;
71
+ fileURI?: URI;
72
+ createdAt: Timestamp;
73
+ answers: Array<Record<string, any>>;
74
+ isRevoked: boolean;
75
+ capability?: string;
76
+ name?: string;
77
+ skill?: string;
78
+ task?: string;
79
+ }
80
+ /**
81
+ * Feedback ID tuple: [agentId, clientAddress, feedbackIndex]
82
+ */
83
+ export type FeedbackIdTuple = [AgentId, Address, number];
84
+ /**
85
+ * Feedback ID string format: "agentId:clientAddress:feedbackIndex"
86
+ */
87
+ export type FeedbackId = string;
88
+ /**
89
+ * Parameters for agent search
90
+ */
91
+ export interface SearchParams {
92
+ chains?: number[];
93
+ name?: string;
94
+ description?: string;
95
+ owners?: Address[];
96
+ operators?: Address[];
97
+ mcp?: boolean;
98
+ a2a?: boolean;
99
+ ens?: string;
100
+ did?: string;
101
+ walletAddress?: Address;
102
+ supportedTrust?: string[];
103
+ a2aSkills?: string[];
104
+ mcpTools?: string[];
105
+ mcpPrompts?: string[];
106
+ mcpResources?: string[];
107
+ active?: boolean;
108
+ x402support?: boolean;
109
+ }
110
+ /**
111
+ * Parameters for feedback search
112
+ */
113
+ export interface SearchFeedbackParams {
114
+ agents?: AgentId[];
115
+ tags?: string[];
116
+ reviewers?: Address[];
117
+ capabilities?: string[];
118
+ skills?: string[];
119
+ tasks?: string[];
120
+ names?: string[];
121
+ minScore?: number;
122
+ maxScore?: number;
123
+ includeRevoked?: boolean;
124
+ }
125
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/models/interfaces.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,WAAW,EAAE,CAAC,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC;IACrC,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,SAAS,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,eAAe,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IACpC,SAAS,EAAE,OAAO,CAAC;IAGnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;IACtB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Core interfaces for Agent0 SDK
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/models/interfaces.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Type aliases for Agent0 SDK
3
+ */
4
+ export type AgentId = string;
5
+ export type ChainId = number;
6
+ export type Address = string;
7
+ export type URI = string;
8
+ export type CID = string;
9
+ export type Timestamp = number;
10
+ export type IdemKey = string;
11
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/models/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAG7B,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAG7B,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAG7B,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC;AAGzB,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC;AAGzB,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAG/B,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Type aliases for Agent0 SDK
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/models/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Shared constants for Agent0 SDK
3
+ */
4
+ /**
5
+ * IPFS gateway URLs for fallback retrieval
6
+ */
7
+ export declare const IPFS_GATEWAYS: readonly ["https://gateway.pinata.cloud/ipfs/", "https://ipfs.io/ipfs/", "https://dweb.link/ipfs/"];
8
+ /**
9
+ * Timeout values in milliseconds
10
+ */
11
+ export declare const TIMEOUTS: {
12
+ readonly IPFS_GATEWAY: 10000;
13
+ readonly PINATA_UPLOAD: 80000;
14
+ readonly TRANSACTION_WAIT: 30000;
15
+ readonly ENDPOINT_CRAWLER_DEFAULT: 5000;
16
+ };
17
+ /**
18
+ * Default values
19
+ */
20
+ export declare const DEFAULTS: {
21
+ readonly FEEDBACK_EXPIRY_HOURS: 24;
22
+ readonly SEARCH_PAGE_SIZE: 50;
23
+ };
24
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,eAAO,MAAM,aAAa,qGAIhB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;CAKX,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,QAAQ;;;CAGX,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Shared constants for Agent0 SDK
3
+ */
4
+ /**
5
+ * IPFS gateway URLs for fallback retrieval
6
+ */
7
+ export const IPFS_GATEWAYS = [
8
+ 'https://gateway.pinata.cloud/ipfs/',
9
+ 'https://ipfs.io/ipfs/',
10
+ 'https://dweb.link/ipfs/',
11
+ ];
12
+ /**
13
+ * Timeout values in milliseconds
14
+ */
15
+ export const TIMEOUTS = {
16
+ IPFS_GATEWAY: 10000, // 10 seconds
17
+ PINATA_UPLOAD: 80000, // 80 seconds
18
+ TRANSACTION_WAIT: 30000, // 30 seconds
19
+ ENDPOINT_CRAWLER_DEFAULT: 5000, // 5 seconds
20
+ };
21
+ /**
22
+ * Default values
23
+ */
24
+ export const DEFAULTS = {
25
+ FEEDBACK_EXPIRY_HOURS: 24,
26
+ SEARCH_PAGE_SIZE: 50,
27
+ };
28
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,oCAAoC;IACpC,uBAAuB;IACvB,yBAAyB;CACjB,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,YAAY,EAAE,KAAK,EAAE,aAAa;IAClC,aAAa,EAAE,KAAK,EAAE,aAAa;IACnC,gBAAgB,EAAE,KAAK,EAAE,aAAa;IACtC,wBAAwB,EAAE,IAAI,EAAE,YAAY;CACpC,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,qBAAqB,EAAE,EAAE;IACzB,gBAAgB,EAAE,EAAE;CACZ,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Utility functions for parsing and formatting Agent IDs and Feedback IDs
3
+ */
4
+ /**
5
+ * Parse an AgentId string into chainId and tokenId
6
+ * Format: "chainId:tokenId" or just "tokenId" (when chain is implicit)
7
+ */
8
+ export declare function parseAgentId(agentId: string | null | undefined): {
9
+ chainId: number;
10
+ tokenId: number;
11
+ };
12
+ /**
13
+ * Format chainId and tokenId into AgentId string
14
+ */
15
+ export declare function formatAgentId(chainId: number, tokenId: number): string;
16
+ /**
17
+ * Parse a FeedbackId string into its components
18
+ * Format: "agentId:clientAddress:feedbackIndex"
19
+ * Note: agentId may contain colons (e.g., "11155111:123"), so we split from the right
20
+ */
21
+ export declare function parseFeedbackId(feedbackId: string): {
22
+ agentId: string;
23
+ clientAddress: string;
24
+ feedbackIndex: number;
25
+ };
26
+ /**
27
+ * Format feedback ID components into FeedbackId string
28
+ */
29
+ export declare function formatFeedbackId(agentId: string, clientAddress: string, feedbackIndex: number): string;
30
+ //# sourceMappingURL=id-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id-format.d.ts","sourceRoot":"","sources":["../../src/utils/id-format.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAoBrG;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB,CAyBA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACpB,MAAM,CAKR"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Utility functions for parsing and formatting Agent IDs and Feedback IDs
3
+ */
4
+ import { normalizeAddress } from './validation';
5
+ /**
6
+ * Parse an AgentId string into chainId and tokenId
7
+ * Format: "chainId:tokenId" or just "tokenId" (when chain is implicit)
8
+ */
9
+ export function parseAgentId(agentId) {
10
+ if (!agentId || typeof agentId !== 'string') {
11
+ throw new Error(`Invalid AgentId: ${agentId}. Expected a non-empty string in format "chainId:tokenId"`);
12
+ }
13
+ if (agentId.includes(':')) {
14
+ const [chainId, tokenId] = agentId.split(':');
15
+ const parsedChainId = parseInt(chainId, 10);
16
+ const parsedTokenId = parseInt(tokenId, 10);
17
+ if (isNaN(parsedChainId) || isNaN(parsedTokenId)) {
18
+ throw new Error(`Invalid AgentId format: ${agentId}. ChainId and tokenId must be valid numbers`);
19
+ }
20
+ return {
21
+ chainId: parsedChainId,
22
+ tokenId: parsedTokenId,
23
+ };
24
+ }
25
+ throw new Error(`Invalid AgentId format: ${agentId}. Expected "chainId:tokenId"`);
26
+ }
27
+ /**
28
+ * Format chainId and tokenId into AgentId string
29
+ */
30
+ export function formatAgentId(chainId, tokenId) {
31
+ return `${chainId}:${tokenId}`;
32
+ }
33
+ /**
34
+ * Parse a FeedbackId string into its components
35
+ * Format: "agentId:clientAddress:feedbackIndex"
36
+ * Note: agentId may contain colons (e.g., "11155111:123"), so we split from the right
37
+ */
38
+ export function parseFeedbackId(feedbackId) {
39
+ const lastColonIndex = feedbackId.lastIndexOf(':');
40
+ const secondLastColonIndex = feedbackId.lastIndexOf(':', lastColonIndex - 1);
41
+ if (lastColonIndex === -1 || secondLastColonIndex === -1) {
42
+ throw new Error(`Invalid feedback ID format: ${feedbackId}`);
43
+ }
44
+ const agentId = feedbackId.slice(0, secondLastColonIndex);
45
+ const clientAddress = feedbackId.slice(secondLastColonIndex + 1, lastColonIndex);
46
+ const feedbackIndexStr = feedbackId.slice(lastColonIndex + 1);
47
+ const feedbackIndex = parseInt(feedbackIndexStr, 10);
48
+ if (isNaN(feedbackIndex)) {
49
+ throw new Error(`Invalid feedback index: ${feedbackIndexStr}`);
50
+ }
51
+ // Normalize address to lowercase for consistency
52
+ const normalizedAddress = normalizeAddress(clientAddress);
53
+ return {
54
+ agentId,
55
+ clientAddress: normalizedAddress,
56
+ feedbackIndex,
57
+ };
58
+ }
59
+ /**
60
+ * Format feedback ID components into FeedbackId string
61
+ */
62
+ export function formatFeedbackId(agentId, clientAddress, feedbackIndex) {
63
+ // Normalize address to lowercase
64
+ const normalizedAddress = normalizeAddress(clientAddress);
65
+ return `${agentId}:${normalizedAddress}:${feedbackIndex}`;
66
+ }
67
+ //# sourceMappingURL=id-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id-format.js","sourceRoot":"","sources":["../../src/utils/id-format.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,OAAkC;IAC7D,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,2DAA2D,CAAC,CAAC;IAC1G,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9C,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC5C,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAE5C,IAAI,KAAK,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,6CAA6C,CAAC,CAAC;QACnG,CAAC;QAED,OAAO;YACL,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE,aAAa;SACvB,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,8BAA8B,CAAC,CAAC;AACpF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,OAAe;IAC5D,OAAO,GAAG,OAAO,IAAI,OAAO,EAAE,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkB;IAKhD,MAAM,cAAc,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACnD,MAAM,oBAAoB,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC;IAE7E,IAAI,cAAc,KAAK,CAAC,CAAC,IAAI,oBAAoB,KAAK,CAAC,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,+BAA+B,UAAU,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC;IAC1D,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,oBAAoB,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC;IACjF,MAAM,gBAAgB,GAAG,UAAU,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;IAE9D,MAAM,aAAa,GAAG,QAAQ,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IACrD,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,2BAA2B,gBAAgB,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,iDAAiD;IACjD,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAE1D,OAAO;QACL,OAAO;QACP,aAAa,EAAE,iBAAiB;QAChC,aAAa;KACd,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAe,EACf,aAAqB,EACrB,aAAqB;IAErB,iCAAiC;IACjC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAE1D,OAAO,GAAG,OAAO,IAAI,iBAAiB,IAAI,aAAa,EAAE,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Utility functions
3
+ */
4
+ export * from './id-format';
5
+ export * from './validation';
6
+ export * from './constants';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Utility functions
3
+ */
4
+ export * from './id-format';
5
+ export * from './validation';
6
+ export * from './constants';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Validation utilities
3
+ */
4
+ /**
5
+ * Validate Ethereum address format
6
+ */
7
+ export declare function isValidAddress(address: string): boolean;
8
+ /**
9
+ * Validate AgentId format
10
+ * Format: "chainId:tokenId" where both are positive integers
11
+ */
12
+ export declare function isValidAgentId(agentId: string): boolean;
13
+ /**
14
+ * Validate URI format (basic validation)
15
+ */
16
+ export declare function isValidURI(uri: string): boolean;
17
+ /**
18
+ * Validate feedback score (0-100)
19
+ */
20
+ export declare function isValidScore(score: number): boolean;
21
+ /**
22
+ * Normalize address to lowercase for consistent storage and comparison
23
+ */
24
+ export declare function normalizeAddress(address: string): string;
25
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAMvD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAWvD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAW/C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKxD"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Validation utilities
3
+ */
4
+ /**
5
+ * Validate Ethereum address format
6
+ */
7
+ export function isValidAddress(address) {
8
+ if (!address || typeof address !== 'string') {
9
+ return false;
10
+ }
11
+ // Ethereum address: 0x followed by 40 hex characters
12
+ return /^0x[a-fA-F0-9]{40}$/.test(address);
13
+ }
14
+ /**
15
+ * Validate AgentId format
16
+ * Format: "chainId:tokenId" where both are positive integers
17
+ */
18
+ export function isValidAgentId(agentId) {
19
+ if (!agentId || typeof agentId !== 'string') {
20
+ return false;
21
+ }
22
+ const parts = agentId.split(':');
23
+ if (parts.length !== 2) {
24
+ return false;
25
+ }
26
+ const chainId = parseInt(parts[0], 10);
27
+ const tokenId = parseInt(parts[1], 10);
28
+ return !isNaN(chainId) && !isNaN(tokenId) && chainId > 0 && tokenId >= 0;
29
+ }
30
+ /**
31
+ * Validate URI format (basic validation)
32
+ */
33
+ export function isValidURI(uri) {
34
+ if (!uri || typeof uri !== 'string') {
35
+ return false;
36
+ }
37
+ try {
38
+ const url = new URL(uri);
39
+ return url.protocol === 'http:' || url.protocol === 'https:' || uri.startsWith('ipfs://');
40
+ }
41
+ catch {
42
+ // If URL parsing fails, it might still be a valid IPFS URI
43
+ return uri.startsWith('ipfs://') || uri.startsWith('/ipfs/');
44
+ }
45
+ }
46
+ /**
47
+ * Validate feedback score (0-100)
48
+ */
49
+ export function isValidScore(score) {
50
+ return Number.isInteger(score) && score >= 0 && score <= 100;
51
+ }
52
+ /**
53
+ * Normalize address to lowercase for consistent storage and comparison
54
+ */
55
+ export function normalizeAddress(address) {
56
+ if (address.startsWith('0x') || address.startsWith('0X')) {
57
+ return '0x' + address.slice(2).toLowerCase();
58
+ }
59
+ return address.toLowerCase();
60
+ }
61
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,qDAAqD;IACrD,OAAO,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACvC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACzB,OAAO,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC5F,CAAC;IAAC,MAAM,CAAC;QACP,2DAA2D;QAC3D,OAAO,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACzD,OAAO,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC/C,CAAC;IACD,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC;AAC/B,CAAC"}
package/package.json ADDED
@@ -0,0 +1,71 @@
1
+ {
2
+ "name": "agent0-sdk",
3
+ "version": "0.2.1",
4
+ "description": "TypeScript SDK for agent portability, discovery and trust based on ERC-8004",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "codegen": "graphql-codegen --config codegen.yml",
9
+ "prebuild": "npm run codegen",
10
+ "build": "tsc",
11
+ "build:watch": "tsc --watch",
12
+ "test": "jest",
13
+ "test:watch": "jest --watch",
14
+ "test:coverage": "jest --coverage",
15
+ "lint": "eslint src",
16
+ "format": "prettier --write src",
17
+ "clean": "rm -rf dist"
18
+ },
19
+ "keywords": [
20
+ "erc-8004",
21
+ "agent",
22
+ "blockchain",
23
+ "ethereum",
24
+ "ipfs",
25
+ "reputation"
26
+ ],
27
+ "author": "Marco De Rossi <marco.derossi@consensys.net>",
28
+ "license": "MIT",
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "https://github.com/agent0lab/agent0-ts"
32
+ },
33
+ "homepage": "https://sdk.ag0.xyz",
34
+ "bugs": {
35
+ "url": "https://github.com/agent0lab/agent0-ts/issues"
36
+ },
37
+ "files": [
38
+ "dist/**/*",
39
+ "README.md",
40
+ "LICENSE",
41
+ "package.json"
42
+ ],
43
+ "publishConfig": {
44
+ "access": "public"
45
+ },
46
+ "dependencies": {
47
+ "dotenv": "^16.3.1",
48
+ "ethers": "^6.9.0",
49
+ "graphql-request": "^6.1.0",
50
+ "ipfs-http-client": "^60.0.1"
51
+ },
52
+ "devDependencies": {
53
+ "@graphql-codegen/cli": "^6.0.1",
54
+ "@graphql-codegen/introspection": "^5.0.0",
55
+ "@graphql-codegen/typescript": "^5.0.2",
56
+ "@graphql-codegen/typescript-operations": "^5.0.2",
57
+ "@types/jest": "^29.5.11",
58
+ "@types/node": "^20.10.6",
59
+ "@typescript-eslint/eslint-plugin": "^6.17.0",
60
+ "@typescript-eslint/parser": "^6.17.0",
61
+ "eslint": "^8.56.0",
62
+ "jest": "^29.7.0",
63
+ "prettier": "^3.1.1",
64
+ "ts-jest": "^29.1.1",
65
+ "tsx": "^4.7.0",
66
+ "typescript": "^5.3.3"
67
+ },
68
+ "engines": {
69
+ "node": ">=18.0.0"
70
+ }
71
+ }