kompass-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.
Files changed (205) hide show
  1. package/dist/a2a/agent-card.d.ts +13 -0
  2. package/dist/a2a/agent-card.d.ts.map +1 -0
  3. package/dist/a2a/agent-card.js +52 -0
  4. package/dist/a2a/agent-card.js.map +1 -0
  5. package/dist/a2a/bridge.d.ts +52 -0
  6. package/dist/a2a/bridge.d.ts.map +1 -0
  7. package/dist/a2a/bridge.js +123 -0
  8. package/dist/a2a/bridge.js.map +1 -0
  9. package/dist/a2a/client.d.ts +34 -0
  10. package/dist/a2a/client.d.ts.map +1 -0
  11. package/dist/a2a/client.js +65 -0
  12. package/dist/a2a/client.js.map +1 -0
  13. package/dist/a2a/server.d.ts +17 -0
  14. package/dist/a2a/server.d.ts.map +1 -0
  15. package/dist/a2a/server.js +194 -0
  16. package/dist/a2a/server.js.map +1 -0
  17. package/dist/abi.d.ts +1068 -0
  18. package/dist/abi.d.ts.map +1 -0
  19. package/dist/abi.js +1372 -0
  20. package/dist/abi.js.map +1 -0
  21. package/dist/adapters/agentkit.d.ts +41 -0
  22. package/dist/adapters/agentkit.d.ts.map +1 -0
  23. package/dist/adapters/agentkit.js +67 -0
  24. package/dist/adapters/agentkit.js.map +1 -0
  25. package/dist/adapters/generic.d.ts +35 -0
  26. package/dist/adapters/generic.d.ts.map +1 -0
  27. package/dist/adapters/generic.js +47 -0
  28. package/dist/adapters/generic.js.map +1 -0
  29. package/dist/adapters/index.d.ts +5 -0
  30. package/dist/adapters/index.d.ts.map +1 -0
  31. package/dist/adapters/index.js +5 -0
  32. package/dist/adapters/index.js.map +1 -0
  33. package/dist/adapters/langchain.d.ts +26 -0
  34. package/dist/adapters/langchain.d.ts.map +1 -0
  35. package/dist/adapters/langchain.js +228 -0
  36. package/dist/adapters/langchain.js.map +1 -0
  37. package/dist/adapters/openclaw.d.ts +18 -0
  38. package/dist/adapters/openclaw.d.ts.map +1 -0
  39. package/dist/adapters/openclaw.js +168 -0
  40. package/dist/adapters/openclaw.js.map +1 -0
  41. package/dist/aggregator.d.ts +36 -0
  42. package/dist/aggregator.d.ts.map +1 -0
  43. package/dist/aggregator.js +168 -0
  44. package/dist/aggregator.js.map +1 -0
  45. package/dist/backends/acp.d.ts +29 -0
  46. package/dist/backends/acp.d.ts.map +1 -0
  47. package/dist/backends/acp.js +126 -0
  48. package/dist/backends/acp.js.map +1 -0
  49. package/dist/backends/types.d.ts +59 -0
  50. package/dist/backends/types.d.ts.map +1 -0
  51. package/dist/backends/types.js +2 -0
  52. package/dist/backends/types.js.map +1 -0
  53. package/dist/bridge.d.ts +35 -0
  54. package/dist/bridge.d.ts.map +1 -0
  55. package/dist/bridge.js +192 -0
  56. package/dist/bridge.js.map +1 -0
  57. package/dist/cli.d.ts +12 -0
  58. package/dist/cli.d.ts.map +1 -0
  59. package/dist/cli.js +331 -0
  60. package/dist/cli.js.map +1 -0
  61. package/dist/discover.d.ts +15 -0
  62. package/dist/discover.d.ts.map +1 -0
  63. package/dist/discover.js +163 -0
  64. package/dist/discover.js.map +1 -0
  65. package/dist/escrow.d.ts +45 -0
  66. package/dist/escrow.d.ts.map +1 -0
  67. package/dist/escrow.js +243 -0
  68. package/dist/escrow.js.map +1 -0
  69. package/dist/index.d.ts +63 -0
  70. package/dist/index.d.ts.map +1 -0
  71. package/dist/index.js +145 -0
  72. package/dist/index.js.map +1 -0
  73. package/dist/intents.d.ts +28 -0
  74. package/dist/intents.d.ts.map +1 -0
  75. package/dist/intents.js +111 -0
  76. package/dist/intents.js.map +1 -0
  77. package/dist/matching.d.ts +29 -0
  78. package/dist/matching.d.ts.map +1 -0
  79. package/dist/matching.js +147 -0
  80. package/dist/matching.js.map +1 -0
  81. package/dist/pipelineAbi.d.ts +113 -0
  82. package/dist/pipelineAbi.d.ts.map +1 -0
  83. package/dist/pipelineAbi.js +74 -0
  84. package/dist/pipelineAbi.js.map +1 -0
  85. package/dist/pipelines.d.ts +42 -0
  86. package/dist/pipelines.d.ts.map +1 -0
  87. package/dist/pipelines.js +185 -0
  88. package/dist/pipelines.js.map +1 -0
  89. package/dist/registry.d.ts +36 -0
  90. package/dist/registry.d.ts.map +1 -0
  91. package/dist/registry.js +187 -0
  92. package/dist/registry.js.map +1 -0
  93. package/dist/reputation.d.ts +10 -0
  94. package/dist/reputation.d.ts.map +1 -0
  95. package/dist/reputation.js +33 -0
  96. package/dist/reputation.js.map +1 -0
  97. package/dist/router.d.ts +72 -0
  98. package/dist/router.d.ts.map +1 -0
  99. package/dist/router.js +190 -0
  100. package/dist/router.js.map +1 -0
  101. package/dist/simple.d.ts +160 -0
  102. package/dist/simple.d.ts.map +1 -0
  103. package/dist/simple.js +237 -0
  104. package/dist/simple.js.map +1 -0
  105. package/dist/sources/a2a-wellknown.d.ts +8 -0
  106. package/dist/sources/a2a-wellknown.d.ts.map +1 -0
  107. package/dist/sources/a2a-wellknown.js +104 -0
  108. package/dist/sources/a2a-wellknown.js.map +1 -0
  109. package/dist/sources/acp.d.ts +7 -0
  110. package/dist/sources/acp.d.ts.map +1 -0
  111. package/dist/sources/acp.js +86 -0
  112. package/dist/sources/acp.js.map +1 -0
  113. package/dist/sources/adp.d.ts +7 -0
  114. package/dist/sources/adp.d.ts.map +1 -0
  115. package/dist/sources/adp.js +59 -0
  116. package/dist/sources/adp.js.map +1 -0
  117. package/dist/sources/erc8004.d.ts +7 -0
  118. package/dist/sources/erc8004.d.ts.map +1 -0
  119. package/dist/sources/erc8004.js +150 -0
  120. package/dist/sources/erc8004.js.map +1 -0
  121. package/dist/sources/index.d.ts +17 -0
  122. package/dist/sources/index.d.ts.map +1 -0
  123. package/dist/sources/index.js +35 -0
  124. package/dist/sources/index.js.map +1 -0
  125. package/dist/sources/kompass-registry.d.ts +8 -0
  126. package/dist/sources/kompass-registry.d.ts.map +1 -0
  127. package/dist/sources/kompass-registry.js +62 -0
  128. package/dist/sources/kompass-registry.js.map +1 -0
  129. package/dist/sources/l402-directory.d.ts +7 -0
  130. package/dist/sources/l402-directory.d.ts.map +1 -0
  131. package/dist/sources/l402-directory.js +42 -0
  132. package/dist/sources/l402-directory.js.map +1 -0
  133. package/dist/sources/mcp-registry.d.ts +8 -0
  134. package/dist/sources/mcp-registry.d.ts.map +1 -0
  135. package/dist/sources/mcp-registry.js +85 -0
  136. package/dist/sources/mcp-registry.js.map +1 -0
  137. package/dist/sources/skills.d.ts +8 -0
  138. package/dist/sources/skills.d.ts.map +1 -0
  139. package/dist/sources/skills.js +153 -0
  140. package/dist/sources/skills.js.map +1 -0
  141. package/dist/sources/types.d.ts +72 -0
  142. package/dist/sources/types.d.ts.map +1 -0
  143. package/dist/sources/types.js +8 -0
  144. package/dist/sources/types.js.map +1 -0
  145. package/dist/sources/x402-ecosystem.d.ts +7 -0
  146. package/dist/sources/x402-ecosystem.d.ts.map +1 -0
  147. package/dist/sources/x402-ecosystem.js +78 -0
  148. package/dist/sources/x402-ecosystem.js.map +1 -0
  149. package/dist/types.d.ts +133 -0
  150. package/dist/types.d.ts.map +1 -0
  151. package/dist/types.js +2 -0
  152. package/dist/types.js.map +1 -0
  153. package/dist/unified.d.ts +90 -0
  154. package/dist/unified.d.ts.map +1 -0
  155. package/dist/unified.js +107 -0
  156. package/dist/unified.js.map +1 -0
  157. package/dist/x402.d.ts +30 -0
  158. package/dist/x402.d.ts.map +1 -0
  159. package/dist/x402.js +79 -0
  160. package/dist/x402.js.map +1 -0
  161. package/package.json +61 -0
  162. package/scripts/bootstrap-agents.mjs +246 -0
  163. package/src/.gitkeep +0 -0
  164. package/src/a2a/agent-card.ts +66 -0
  165. package/src/a2a/bridge.ts +168 -0
  166. package/src/a2a/client.ts +92 -0
  167. package/src/a2a/server.ts +234 -0
  168. package/src/abi.ts +1373 -0
  169. package/src/adapters/agentkit.ts +83 -0
  170. package/src/adapters/generic.ts +62 -0
  171. package/src/adapters/index.ts +4 -0
  172. package/src/adapters/langchain.ts +282 -0
  173. package/src/adapters/openclaw.ts +203 -0
  174. package/src/aggregator.ts +203 -0
  175. package/src/backends/acp.ts +199 -0
  176. package/src/backends/types.ts +78 -0
  177. package/src/bridge.ts +263 -0
  178. package/src/cli.ts +397 -0
  179. package/src/discover.ts +187 -0
  180. package/src/escrow.ts +284 -0
  181. package/src/index.ts +245 -0
  182. package/src/intents.ts +166 -0
  183. package/src/matching.ts +192 -0
  184. package/src/pipelineAbi.ts +74 -0
  185. package/src/pipelines.ts +253 -0
  186. package/src/registry.ts +232 -0
  187. package/src/reputation.ts +43 -0
  188. package/src/router.ts +279 -0
  189. package/src/simple.ts +366 -0
  190. package/src/sources/a2a-wellknown.ts +120 -0
  191. package/src/sources/acp.ts +91 -0
  192. package/src/sources/adp.ts +64 -0
  193. package/src/sources/erc8004.ts +166 -0
  194. package/src/sources/index.ts +52 -0
  195. package/src/sources/kompass-registry.ts +67 -0
  196. package/src/sources/l402-directory.ts +51 -0
  197. package/src/sources/mcp-registry.ts +104 -0
  198. package/src/sources/skills.ts +161 -0
  199. package/src/sources/types.ts +82 -0
  200. package/src/sources/x402-ecosystem.ts +86 -0
  201. package/src/types.ts +147 -0
  202. package/src/unified.ts +155 -0
  203. package/src/x402.ts +122 -0
  204. package/tests/pipelineFlow.test.ts +239 -0
  205. package/tsconfig.json +20 -0
@@ -0,0 +1,168 @@
1
+ const bigintReplacer = (_k, v) => (typeof v === "bigint" ? v.toString() : v);
2
+ export const SKILL_MD = `---
3
+ name: kompass
4
+ version: 1.0.0
5
+ description: Discover, hire, and pay AI agents via decentralized escrow on Base
6
+ author: Kompass Protocol
7
+ tags: [defi, agents, escrow, reputation, base]
8
+ ---
9
+
10
+ # Kompass Protocol
11
+
12
+ Interact with the Kompass agentic commerce protocol on Base.
13
+ Discover agents, create escrow jobs, check reputation, and route DeFi intents.
14
+
15
+ ## Actions
16
+
17
+ ### discover
18
+ Find agents by category and reputation.
19
+ - category (string, optional): Filter category (e.g. "defi", "data")
20
+ - agentType (string, optional): "provider" | "evaluator" | "both"
21
+ - verifiedOnly (boolean, optional): Only return identity-verified agents
22
+
23
+ ### get_agent
24
+ Get a single agent's profile.
25
+ - address (string, required): Agent wallet address
26
+
27
+ ### create_job
28
+ Create an escrow job with a provider and evaluator.
29
+ - provider (string, required): Provider address
30
+ - evaluator (string, required): Evaluator address
31
+ - budget (string, required): Budget in USDC base units
32
+ - expiredAt (string, required): Expiry unix timestamp
33
+ - description (string, required): Job description
34
+
35
+ ### fund_job
36
+ Fund an existing job, locking USDC in escrow.
37
+ - jobId (string, required): Job ID
38
+
39
+ ### submit
40
+ Submit a deliverable for evaluation.
41
+ - jobId (string, required): Job ID
42
+ - deliverable (string, required): Deliverable hash (bytes32)
43
+
44
+ ### complete
45
+ Mark a job as complete, releasing payment (evaluator only).
46
+ - jobId (string, required): Job ID
47
+ - reason (string, optional): Attestation hash
48
+
49
+ ### get_reputation
50
+ Check an agent's onchain ERC-8004 reputation.
51
+ - agentId (string, required): ERC-8004 agent ID
52
+
53
+ ### route_yield_intent
54
+ Route a DeFi yield intent to specialist agents.
55
+ - amount (string, required): Capital in USDC base units
56
+ - riskTolerance (string, required): "conservative" | "balanced" | "aggressive"
57
+
58
+ ### register
59
+ Register your agent on Kompass. Sets ENS text records and calls registerAgent().
60
+ - ensNode (string, required): ENS namehash of your Basename (bytes32)
61
+ - agentType (string, required): "provider" | "evaluator" | "both"
62
+ - categories (string, required): Comma-separated categories
63
+ - description (string, required): What your agent does
64
+ - paymentMode (string, optional): "escrow" | "x402" | "hybrid"
65
+ - pricingRate (string, optional): Price in USDC base units
66
+
67
+ ### update_profile
68
+ Update your agent's profile. Only provided fields are changed.
69
+ - ensNode (string, required): Your ENS namehash
70
+ - categories (string, optional): Updated categories
71
+ - description (string, optional): Updated description
72
+
73
+ ### deregister
74
+ Remove your agent from discovery.
75
+
76
+ ### approve_usdc
77
+ Approve USDC spending for escrow. Required before fund_job.
78
+ - spender (string, required): Spender contract address
79
+ - amount (string, required): Amount in USDC base units
80
+
81
+ ### get_balance
82
+ Get your agent's USDC and ETH balance.
83
+ `;
84
+ export async function handleSkill(kompass, action, params) {
85
+ switch (action) {
86
+ case "discover": {
87
+ const results = await kompass.discover({
88
+ category: params.category,
89
+ agentType: params.agentType,
90
+ verifiedOnly: params.verifiedOnly === "true",
91
+ });
92
+ return JSON.stringify(results, bigintReplacer);
93
+ }
94
+ case "get_agent": {
95
+ const agent = await kompass.getAgent(params.address);
96
+ return JSON.stringify(agent, bigintReplacer);
97
+ }
98
+ case "create_job": {
99
+ const result = await kompass.createJob({
100
+ provider: params.provider,
101
+ evaluator: params.evaluator,
102
+ budget: BigInt(params.budget),
103
+ expiredAt: BigInt(params.expiredAt),
104
+ description: params.description,
105
+ });
106
+ return JSON.stringify(result, bigintReplacer);
107
+ }
108
+ case "fund_job": {
109
+ const result = await kompass.fund(BigInt(params.jobId));
110
+ return JSON.stringify(result, bigintReplacer);
111
+ }
112
+ case "submit": {
113
+ const result = await kompass.submit(BigInt(params.jobId), params.deliverable);
114
+ return JSON.stringify(result, bigintReplacer);
115
+ }
116
+ case "complete": {
117
+ const result = await kompass.complete(BigInt(params.jobId), params.reason);
118
+ return JSON.stringify(result, bigintReplacer);
119
+ }
120
+ case "get_reputation": {
121
+ const result = await kompass.getReputation(BigInt(params.agentId));
122
+ return JSON.stringify(result, bigintReplacer);
123
+ }
124
+ case "route_yield_intent": {
125
+ const route = await kompass.routeYieldIntent({
126
+ amount: BigInt(params.amount),
127
+ riskTolerance: params.riskTolerance,
128
+ chain: "Base",
129
+ stablecoin: "USDC",
130
+ });
131
+ return JSON.stringify(route, bigintReplacer);
132
+ }
133
+ case "register": {
134
+ const result = await kompass.register({
135
+ ensNode: params.ensNode,
136
+ agentType: params.agentType,
137
+ categories: params.categories,
138
+ description: params.description,
139
+ paymentMode: params.paymentMode,
140
+ pricingRate: params.pricingRate,
141
+ });
142
+ return JSON.stringify(result, bigintReplacer);
143
+ }
144
+ case "update_profile": {
145
+ const { ensNode, ...updates } = params;
146
+ const result = await kompass.updateProfile(ensNode, updates);
147
+ return JSON.stringify(result, bigintReplacer);
148
+ }
149
+ case "deregister": {
150
+ const result = await kompass.deregister();
151
+ return JSON.stringify(result, bigintReplacer);
152
+ }
153
+ case "approve_usdc": {
154
+ const amount = params.amount === "max"
155
+ ? BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")
156
+ : BigInt(params.amount);
157
+ const result = await kompass.approveToken(params.spender, amount);
158
+ return JSON.stringify(result, bigintReplacer);
159
+ }
160
+ case "get_balance": {
161
+ const result = await kompass.getBalance();
162
+ return JSON.stringify(result, bigintReplacer);
163
+ }
164
+ default:
165
+ return JSON.stringify({ error: `Unknown action: ${action}` });
166
+ }
167
+ }
168
+ //# sourceMappingURL=openclaw.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openclaw.js","sourceRoot":"","sources":["../../src/adapters/openclaw.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Kompass Aggregator
3
+ * Searches all source adapters in parallel, deduplicates, and ranks results.
4
+ */
5
+ import type { SourceAdapter, UnifiedAgent, SourceSearchOptions } from "./sources/types.js";
6
+ export interface AggregatorOptions extends SourceSearchOptions {
7
+ /** Only search these sources (by name) */
8
+ sources?: string[];
9
+ /** Minimum relevance score to include (0-100) */
10
+ minScore?: number;
11
+ }
12
+ export interface AggregatorResult {
13
+ agents: UnifiedAgent[];
14
+ sources: {
15
+ name: string;
16
+ count: number;
17
+ durationMs: number;
18
+ error?: string;
19
+ }[];
20
+ totalFound: number;
21
+ deduplicated: number;
22
+ queryTimeMs: number;
23
+ }
24
+ export declare class Aggregator {
25
+ private adapters;
26
+ constructor(adapters: SourceAdapter[]);
27
+ search(query: string, options?: AggregatorOptions): Promise<AggregatorResult>;
28
+ healthCheck(): Promise<{
29
+ name: string;
30
+ displayName: string;
31
+ healthy: boolean;
32
+ }[]>;
33
+ private deduplicate;
34
+ private scoreAndRank;
35
+ }
36
+ //# sourceMappingURL=aggregator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregator.d.ts","sourceRoot":"","sources":["../src/aggregator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE3F,MAAM,WAAW,iBAAkB,SAAQ,mBAAmB;IAC5D,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/E,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAkB;gBAEtB,QAAQ,EAAE,aAAa,EAAE;IAI/B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAoE7E,WAAW,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IAcvF,OAAO,CAAC,WAAW;IAiDnB,OAAO,CAAC,YAAY;CA0CrB"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * Kompass Aggregator
3
+ * Searches all source adapters in parallel, deduplicates, and ranks results.
4
+ */
5
+ export class Aggregator {
6
+ adapters;
7
+ constructor(adapters) {
8
+ this.adapters = adapters;
9
+ }
10
+ async search(query, options) {
11
+ const startTime = Date.now();
12
+ const limit = options?.limit ?? 50;
13
+ const timeout = options?.timeout ?? 15000;
14
+ // Filter adapters by source name if specified
15
+ const activeAdapters = options?.sources
16
+ ? this.adapters.filter((a) => options.sources.includes(a.name))
17
+ : this.adapters;
18
+ // Fan out to all sources in parallel
19
+ const promises = activeAdapters.map(async (adapter) => {
20
+ const adapterStart = Date.now();
21
+ try {
22
+ const results = await adapter.search(query, { limit, timeout });
23
+ return {
24
+ name: adapter.name,
25
+ displayName: adapter.displayName,
26
+ results,
27
+ durationMs: Date.now() - adapterStart,
28
+ error: undefined,
29
+ };
30
+ }
31
+ catch (err) {
32
+ return {
33
+ name: adapter.name,
34
+ displayName: adapter.displayName,
35
+ results: [],
36
+ durationMs: Date.now() - adapterStart,
37
+ error: err instanceof Error ? err.message : String(err),
38
+ };
39
+ }
40
+ });
41
+ const settled = await Promise.allSettled(promises);
42
+ const sourceResults = settled.map((s) => s.status === "fulfilled" ? s.value : { name: "unknown", displayName: "Unknown", results: [], durationMs: 0, error: "Promise rejected" });
43
+ // Flatten all results
44
+ const allAgents = sourceResults.flatMap((s) => s.results);
45
+ const totalFound = allAgents.length;
46
+ // Deduplicate
47
+ const deduped = this.deduplicate(allAgents);
48
+ const deduplicated = totalFound - deduped.length;
49
+ // Score and rank
50
+ const scored = this.scoreAndRank(deduped, query);
51
+ // Apply minimum score filter
52
+ const filtered = options?.minScore
53
+ ? scored.filter((a) => a._score >= options.minScore)
54
+ : scored;
55
+ return {
56
+ agents: filtered.slice(0, limit),
57
+ sources: sourceResults.map((s) => ({
58
+ name: s.name,
59
+ count: s.results.length,
60
+ durationMs: s.durationMs,
61
+ error: s.error,
62
+ })),
63
+ totalFound,
64
+ deduplicated,
65
+ queryTimeMs: Date.now() - startTime,
66
+ };
67
+ }
68
+ async healthCheck() {
69
+ const results = await Promise.allSettled(this.adapters.map(async (adapter) => ({
70
+ name: adapter.name,
71
+ displayName: adapter.displayName,
72
+ healthy: await adapter.ping(),
73
+ })));
74
+ return results.map((r) => r.status === "fulfilled" ? r.value : { name: "unknown", displayName: "Unknown", healthy: false });
75
+ }
76
+ deduplicate(agents) {
77
+ const seen = new Map();
78
+ for (const agent of agents) {
79
+ // Generate dedup keys from endpoints
80
+ const keys = [
81
+ agent.endpoints.mcp,
82
+ agent.endpoints.a2a,
83
+ agent.endpoints.x402,
84
+ agent.endpoints.http,
85
+ agent.endpoints.acp?.walletAddress,
86
+ ].filter(Boolean);
87
+ let existingKey;
88
+ for (const key of keys) {
89
+ if (seen.has(key)) {
90
+ existingKey = key;
91
+ break;
92
+ }
93
+ }
94
+ if (existingKey) {
95
+ // Merge: keep richer data
96
+ const existing = seen.get(existingKey);
97
+ existing.categories = [...new Set([...existing.categories, ...agent.categories])];
98
+ existing.capabilities = [...new Set([...existing.capabilities, ...agent.capabilities])];
99
+ if (!existing.reputation && agent.reputation)
100
+ existing.reputation = agent.reputation;
101
+ if (!existing.pricing && agent.pricing)
102
+ existing.pricing = agent.pricing;
103
+ if (agent.description.length > existing.description.length)
104
+ existing.description = agent.description;
105
+ }
106
+ else {
107
+ // New agent
108
+ for (const key of keys) {
109
+ if (key)
110
+ seen.set(key, agent);
111
+ }
112
+ // Also key by name for simple dedup
113
+ if (!seen.has(agent.name.toLowerCase())) {
114
+ seen.set(agent.name.toLowerCase(), agent);
115
+ }
116
+ }
117
+ }
118
+ // Return unique agents
119
+ const uniqueAgents = new Map();
120
+ for (const agent of seen.values()) {
121
+ uniqueAgents.set(agent.id, agent);
122
+ }
123
+ return Array.from(uniqueAgents.values());
124
+ }
125
+ scoreAndRank(agents, query) {
126
+ const queryLower = query.toLowerCase();
127
+ const queryTerms = queryLower.split(/\s+/).filter((t) => t.length > 2);
128
+ return agents
129
+ .map((agent) => {
130
+ let score = 0;
131
+ const searchText = `${agent.name} ${agent.description} ${agent.categories.join(" ")} ${agent.capabilities.join(" ")}`.toLowerCase();
132
+ // Term matching (BM25-lite)
133
+ for (const term of queryTerms) {
134
+ if (agent.name.toLowerCase().includes(term))
135
+ score += 10;
136
+ if (agent.description.toLowerCase().includes(term))
137
+ score += 5;
138
+ if (agent.categories.some((c) => c.includes(term)))
139
+ score += 8;
140
+ if (agent.capabilities.some((c) => c.toLowerCase().includes(term)))
141
+ score += 3;
142
+ }
143
+ // Reputation bonus
144
+ if (agent.reputation) {
145
+ score += Math.min(agent.reputation.score * 2, 20);
146
+ score += Math.min(agent.reputation.count, 10);
147
+ }
148
+ // Verified bonus
149
+ if (agent.verified)
150
+ score += 5;
151
+ // Has pricing info bonus (transparency)
152
+ if (agent.pricing && agent.pricing.model !== "unknown")
153
+ score += 3;
154
+ // Has multiple endpoints bonus (more interoperable)
155
+ const endpointCount = Object.values(agent.endpoints).filter(Boolean).length;
156
+ score += endpointCount * 2;
157
+ // Protocol diversity bonus
158
+ if (agent.protocol === "mcp")
159
+ score += 2; // MCP is most interoperable
160
+ if (agent.protocol === "a2a")
161
+ score += 2;
162
+ agent._score = score;
163
+ return agent;
164
+ })
165
+ .sort((a, b) => (b._score ?? 0) - (a._score ?? 0));
166
+ }
167
+ }
168
+ //# sourceMappingURL=aggregator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregator.js","sourceRoot":"","sources":["../src/aggregator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { Address } from "viem";
2
+ import type { EscrowBackend, AgentSearchResult, JobResult, BrowseOptions, IncomingJob } from "./types.js";
3
+ export interface AcpBackendConfig {
4
+ /** Private key for the agent wallet (whitelisted on ACP) */
5
+ privateKey: string;
6
+ /** Agent's wallet address on ACP */
7
+ walletAddress: Address;
8
+ /** Entity/session key address from ACP registration */
9
+ entityAddress: Address;
10
+ /** Network: "base-sepolia" or "base" */
11
+ network?: "base-sepolia" | "base";
12
+ /** Custom RPC URL */
13
+ rpcUrl?: string;
14
+ }
15
+ export declare class AcpEscrowBackend implements EscrowBackend {
16
+ private client;
17
+ private config;
18
+ private jobHandlers;
19
+ constructor(config: AcpBackendConfig);
20
+ name(): string;
21
+ init(): Promise<void>;
22
+ browseAgents(query: string, options?: BrowseOptions): Promise<AgentSearchResult[]>;
23
+ hireAgent(agent: AgentSearchResult, offeringId: string, requirements: Record<string, unknown>, _budget?: bigint): Promise<JobResult>;
24
+ waitForResult(jobId: string, timeoutMs?: number): Promise<JobResult>;
25
+ acceptJobs(capabilities: string[], handler: (job: IncomingJob) => Promise<unknown>): Promise<void>;
26
+ private handleIncomingJob;
27
+ private mapAcpAgent;
28
+ }
29
+ //# sourceMappingURL=acp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acp.d.ts","sourceRoot":"","sources":["../../src/backends/acp.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAO,MAAM,MAAM,CAAC;AACzC,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EAEjB,SAAS,EACT,aAAa,EACb,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,gBAAgB;IAC/B,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,aAAa,EAAE,OAAO,CAAC;IACvB,uDAAuD;IACvD,aAAa,EAAE,OAAO,CAAC;IACvB,wCAAwC;IACxC,OAAO,CAAC,EAAE,cAAc,GAAG,MAAM,CAAC;IAClC,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,gBAAiB,YAAW,aAAa;IACpD,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,WAAW,CAA6D;gBAEpE,MAAM,EAAE,gBAAgB;IAIpC,IAAI,IAAI,MAAM;IAIR,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBrB,YAAY,CAChB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAazB,SAAS,CACb,KAAK,EAAE,iBAAiB,EACxB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,SAAS,CAAC;IAef,aAAa,CACjB,KAAK,EAAE,MAAM,EACb,SAAS,SAAU,GAClB,OAAO,CAAC,SAAS,CAAC;IA+Bf,UAAU,CACd,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,GAC9C,OAAO,CAAC,IAAI,CAAC;YAQF,iBAAiB;IAyB/B,OAAO,CAAC,WAAW;CAyBpB"}
@@ -0,0 +1,126 @@
1
+ import AcpClient, { AcpContractClientV2, baseSepoliaAcpConfigV2, baseAcpConfigV2, } from "@virtuals-protocol/acp-node";
2
+ export class AcpEscrowBackend {
3
+ client;
4
+ config;
5
+ jobHandlers = new Map();
6
+ constructor(config) {
7
+ this.config = config;
8
+ }
9
+ name() {
10
+ return "virtuals-acp";
11
+ }
12
+ async init() {
13
+ const acpConfig = this.config.network === "base"
14
+ ? baseAcpConfigV2
15
+ : baseSepoliaAcpConfigV2;
16
+ const contractClient = await AcpContractClientV2.build(this.config.privateKey, this.config.entityAddress, this.config.walletAddress, this.config.rpcUrl, acpConfig);
17
+ this.client = new AcpClient({
18
+ acpContractClient: contractClient,
19
+ walletAddress: this.config.walletAddress,
20
+ entityAddress: this.config.entityAddress,
21
+ onNewTask: (job) => this.handleIncomingJob(job),
22
+ });
23
+ await this.client.init();
24
+ }
25
+ async browseAgents(query, options) {
26
+ const agents = await this.client.browseAgents({
27
+ keyword: query,
28
+ onlineStatus: options?.onlineOnly ? "online" : "all",
29
+ limit: options?.limit ?? 20,
30
+ sortBy: options?.sortBy === "successRate" ? "successRate" : undefined,
31
+ });
32
+ return (agents ?? []).map((agent) => this.mapAcpAgent(agent));
33
+ }
34
+ async hireAgent(agent, offeringId, requirements, _budget) {
35
+ const job = await this.client.initiateJob({
36
+ providerAddress: agent.address,
37
+ jobOfferingId: offeringId,
38
+ requirements,
39
+ skipEvaluation: true,
40
+ });
41
+ return {
42
+ jobId: job.id ?? String(job),
43
+ phase: "REQUEST",
44
+ deliverable: null,
45
+ };
46
+ }
47
+ async waitForResult(jobId, timeoutMs = 300_000) {
48
+ const start = Date.now();
49
+ const pollInterval = 5_000;
50
+ while (Date.now() - start < timeoutMs) {
51
+ const job = await this.client.getJobById(Number(jobId));
52
+ const phase = job?.phase ?? job?.status;
53
+ if (phase === "COMPLETED" || phase === "completed") {
54
+ return {
55
+ jobId,
56
+ phase: "COMPLETED",
57
+ deliverable: job?.deliverable ?? job?.result,
58
+ txHash: job?.txHash,
59
+ };
60
+ }
61
+ if (phase === "CANCELLED" || phase === "REJECTED" || phase === "EXPIRED") {
62
+ return {
63
+ jobId,
64
+ phase,
65
+ deliverable: null,
66
+ };
67
+ }
68
+ await new Promise((r) => setTimeout(r, pollInterval));
69
+ }
70
+ throw new Error(`Timeout waiting for job ${jobId} (${timeoutMs}ms)`);
71
+ }
72
+ async acceptJobs(capabilities, handler) {
73
+ for (const cap of capabilities) {
74
+ this.jobHandlers.set(cap, handler);
75
+ }
76
+ // The onNewTask callback set during init() will dispatch to handlers
77
+ console.log(`[ACP] Listening for jobs: ${capabilities.join(", ")}`);
78
+ }
79
+ async handleIncomingJob(acpJob) {
80
+ const job = {
81
+ jobId: acpJob.id,
82
+ description: acpJob.requirement?.description ?? "",
83
+ requirements: acpJob.requirement ?? {},
84
+ budget: BigInt(acpJob.price ?? 0),
85
+ clientAddress: acpJob.clientAddress,
86
+ };
87
+ // Find a matching handler
88
+ for (const [, handler] of this.jobHandlers) {
89
+ try {
90
+ const result = await handler(job);
91
+ // Deliver the result back through ACP
92
+ await acpJob.deliver?.({
93
+ content: typeof result === "string" ? result : JSON.stringify(result),
94
+ contentType: "application/json",
95
+ });
96
+ return;
97
+ }
98
+ catch (err) {
99
+ console.error(`[ACP] Handler failed for job ${job.jobId}:`, err);
100
+ }
101
+ }
102
+ }
103
+ mapAcpAgent(agent) {
104
+ const offerings = (agent.jobOfferings ?? []).map((o) => ({
105
+ id: o.id,
106
+ name: o.name ?? o.title ?? "Service",
107
+ description: o.description ?? "",
108
+ price: BigInt(o.price ?? 0),
109
+ currency: "USDC",
110
+ }));
111
+ return {
112
+ id: agent.id ?? agent.walletAddress,
113
+ name: agent.name ?? "Unknown Agent",
114
+ address: (agent.walletAddress ?? agent.contractAddress),
115
+ description: agent.description ?? "",
116
+ categories: agent.tags ?? agent.categories ?? [],
117
+ offerings,
118
+ metrics: {
119
+ successRate: agent.metrics?.successRate,
120
+ completedJobs: agent.metrics?.completedJobs,
121
+ },
122
+ source: "acp",
123
+ };
124
+ }
125
+ }
126
+ //# sourceMappingURL=acp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acp.js","sourceRoot":"","sources":["../../src/backends/acp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import type { Address } from "viem";
2
+ /**
3
+ * Abstraction over escrow backends (Kompass native or Virtuals ACP).
4
+ * The simplified SDK uses this interface so it can swap backends
5
+ * without changing any user-facing code.
6
+ */
7
+ export interface AgentSearchResult {
8
+ id: string;
9
+ name: string;
10
+ address: Address;
11
+ description: string;
12
+ categories: string[];
13
+ offerings: AgentOffering[];
14
+ metrics?: {
15
+ successRate?: number;
16
+ completedJobs?: number;
17
+ };
18
+ source: "acp" | "kompass";
19
+ }
20
+ export interface AgentOffering {
21
+ id: string;
22
+ name: string;
23
+ description: string;
24
+ price: bigint;
25
+ currency: string;
26
+ }
27
+ export interface JobResult {
28
+ jobId: string;
29
+ phase: string;
30
+ deliverable: unknown;
31
+ txHash?: string;
32
+ }
33
+ export interface EscrowBackend {
34
+ /** Initialize the backend (auth, websocket connections, etc.) */
35
+ init(): Promise<void>;
36
+ /** Search for agents that can do a task */
37
+ browseAgents(query: string, options?: BrowseOptions): Promise<AgentSearchResult[]>;
38
+ /** Create and fund a job with an agent */
39
+ hireAgent(agent: AgentSearchResult, offeringId: string, requirements: Record<string, unknown>, budget?: bigint): Promise<JobResult>;
40
+ /** Poll/wait for a job to complete */
41
+ waitForResult(jobId: string, timeoutMs?: number): Promise<JobResult>;
42
+ /** Register as a seller and listen for incoming jobs */
43
+ acceptJobs(capabilities: string[], handler: (job: IncomingJob) => Promise<unknown>): Promise<void>;
44
+ /** Get the backend name */
45
+ name(): string;
46
+ }
47
+ export interface BrowseOptions {
48
+ limit?: number;
49
+ sortBy?: "successRate" | "completedJobs" | "recent";
50
+ onlineOnly?: boolean;
51
+ }
52
+ export interface IncomingJob {
53
+ jobId: string;
54
+ description: string;
55
+ requirements: Record<string, unknown>;
56
+ budget: bigint;
57
+ clientAddress: Address;
58
+ }
59
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/backends/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAO,MAAM,MAAM,CAAC;AAEzC;;;;GAIG;AAEH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,iEAAiE;IACjE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB,2CAA2C;IAC3C,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAEnF,0CAA0C;IAC1C,SAAS,CACP,KAAK,EAAE,iBAAiB,EACxB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,SAAS,CAAC,CAAC;IAEtB,sCAAsC;IACtC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAErE,wDAAwD;IACxD,UAAU,CACR,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,GAC9C,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB,2BAA2B;IAC3B,IAAI,IAAI,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,aAAa,GAAG,eAAe,GAAG,QAAQ,CAAC;IACpD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;CACxB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/backends/types.ts"],"names":[],"mappings":""}