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,7 @@
1
+ /**
2
+ * L402 Directory Source Adapter
3
+ * Indexes Lightning 402 endpoints from known directories
4
+ */
5
+ import type { SourceAdapter } from "./types.js";
6
+ export declare const l402DirectoryAdapter: SourceAdapter;
7
+ //# sourceMappingURL=l402-directory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"l402-directory.d.ts","sourceRoot":"","sources":["../../src/sources/l402-directory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAqC,MAAM,YAAY,CAAC;AAWnF,eAAO,MAAM,oBAAoB,EAAE,aAkClC,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * L402 Directory Source Adapter
3
+ * Indexes Lightning 402 endpoints from known directories
4
+ */
5
+ // Known L402 services (from satring, l402.directory, and community)
6
+ const KNOWN_L402_SERVICES = [
7
+ { name: "Satring", url: "https://satring.com", description: "Curated L402 + x402 API directory. 36 endpoints across 4 providers", categories: ["directory", "tools"] },
8
+ { name: "Lightning Faucet L402", url: "https://lightningfaucet.com", description: "L402 API registry and testing tools", categories: ["tools", "testing"] },
9
+ { name: "Nostr NIP-68 Bridge", url: "https://l402.nostr.com", description: "L402 payments over Nostr relay network", categories: ["social", "payments"] },
10
+ { name: "Stacker News", url: "https://stacker.news", description: "Lightning-powered news with L402 API access", categories: ["content", "data"] },
11
+ { name: "Nodana", url: "https://nodana.io", description: "L402 agentic access for Bitcoin app deployment", categories: ["development", "compute"] },
12
+ ];
13
+ export const l402DirectoryAdapter = {
14
+ name: "l402-directory",
15
+ displayName: "L402 Lightning Directory",
16
+ async search(query, options) {
17
+ const lower = query.toLowerCase();
18
+ const filtered = query
19
+ ? KNOWN_L402_SERVICES.filter((s) => s.name.toLowerCase().includes(lower) ||
20
+ s.description.toLowerCase().includes(lower) ||
21
+ s.categories.some((c) => c.includes(lower)))
22
+ : KNOWN_L402_SERVICES;
23
+ return filtered.slice(0, options?.limit ?? 50).map((service) => ({
24
+ id: `l402-directory:${service.name.toLowerCase().replace(/\s+/g, "-")}`,
25
+ nativeId: service.name,
26
+ name: service.name,
27
+ description: service.description,
28
+ categories: service.categories,
29
+ capabilities: [service.description],
30
+ source: "l402-directory",
31
+ protocol: "l402",
32
+ endpoints: { l402: service.url, http: service.url },
33
+ pricing: { model: "per-call", currency: "BTC/sats" },
34
+ verified: true,
35
+ raw: service,
36
+ }));
37
+ },
38
+ async ping() {
39
+ return true; // Seed list always available
40
+ },
41
+ };
42
+ //# sourceMappingURL=l402-directory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"l402-directory.js","sourceRoot":"","sources":["../../src/sources/l402-directory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,oEAAoE;AACpE,MAAM,mBAAmB,GAAG;IAC1B,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,qBAAqB,EAAE,WAAW,EAAE,oEAAoE,EAAE,UAAU,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE;IACtK,EAAE,IAAI,EAAE,uBAAuB,EAAE,GAAG,EAAE,6BAA6B,EAAE,WAAW,EAAE,qCAAqC,EAAE,UAAU,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE;IAC3J,EAAE,IAAI,EAAE,qBAAqB,EAAE,GAAG,EAAE,wBAAwB,EAAE,WAAW,EAAE,wCAAwC,EAAE,UAAU,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE;IACzJ,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,sBAAsB,EAAE,WAAW,EAAE,6CAA6C,EAAE,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE;IAClJ,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,mBAAmB,EAAE,WAAW,EAAE,gDAAgD,EAAE,UAAU,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE;CACpJ,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAkB;IACjD,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,0BAA0B;IAEvC,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,OAA6B;QACvD,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,KAAK;YACpB,CAAC,CAAC,mBAAmB,CAAC,MAAM,CACxB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACpC,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAC3C,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAC9C;YACH,CAAC,CAAC,mBAAmB,CAAC;QAExB,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC/D,EAAE,EAAE,kBAAkB,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;YACvE,QAAQ,EAAE,OAAO,CAAC,IAAI;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,YAAY,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;YACnC,MAAM,EAAE,gBAAyB;YACjC,QAAQ,EAAE,MAAe;YACzB,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE;YACnD,OAAO,EAAE,EAAE,KAAK,EAAE,UAAmB,EAAE,QAAQ,EAAE,UAAU,EAAE;YAC7D,QAAQ,EAAE,IAAI;YACd,GAAG,EAAE,OAAO;SACb,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,IAAI;QACR,OAAO,IAAI,CAAC,CAAC,6BAA6B;IAC5C,CAAC;CACF,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * MCP Registry Source Adapter
3
+ * Crawls registry.modelcontextprotocol.io for MCP servers
4
+ * No auth required. Public REST API with cursor pagination.
5
+ */
6
+ import type { SourceAdapter } from "./types.js";
7
+ export declare const mcpRegistryAdapter: SourceAdapter;
8
+ //# sourceMappingURL=mcp-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-registry.d.ts","sourceRoot":"","sources":["../../src/sources/mcp-registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAqC,MAAM,YAAY,CAAC;AAcnF,eAAO,MAAM,kBAAkB,EAAE,aA2ChC,CAAC"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * MCP Registry Source Adapter
3
+ * Crawls registry.modelcontextprotocol.io for MCP servers
4
+ * No auth required. Public REST API with cursor pagination.
5
+ */
6
+ const BASE_URL = "https://registry.modelcontextprotocol.io";
7
+ export const mcpRegistryAdapter = {
8
+ name: "mcp-registry",
9
+ displayName: "MCP Registry (Anthropic)",
10
+ async search(query, options) {
11
+ const limit = options?.limit ?? 50;
12
+ const timeout = options?.timeout ?? 10000;
13
+ try {
14
+ const url = new URL("/v0.1/servers", BASE_URL);
15
+ url.searchParams.set("limit", String(Math.min(limit, 96)));
16
+ if (query)
17
+ url.searchParams.set("search", query);
18
+ url.searchParams.set("version", "latest");
19
+ const controller = new AbortController();
20
+ const timer = setTimeout(() => controller.abort(), timeout);
21
+ const res = await fetch(url.toString(), { signal: controller.signal });
22
+ clearTimeout(timer);
23
+ if (!res.ok)
24
+ return [];
25
+ const data = await res.json();
26
+ const rawServers = data.servers ?? data.data ?? [];
27
+ // MCP registry wraps in { server: {...} } objects
28
+ const servers = rawServers.map((item) => item.server ?? item);
29
+ return servers.slice(0, limit).map((server) => mapMcpServer(server));
30
+ }
31
+ catch {
32
+ return [];
33
+ }
34
+ },
35
+ async ping() {
36
+ try {
37
+ const res = await fetch(`${BASE_URL}/v0.1/servers?limit=1`, {
38
+ signal: AbortSignal.timeout(5000),
39
+ });
40
+ return res.ok;
41
+ }
42
+ catch {
43
+ return false;
44
+ }
45
+ },
46
+ };
47
+ function mapMcpServer(server) {
48
+ const remoteUrl = server.remotes?.[0]?.url;
49
+ const categories = extractCategories(server.description ?? server.name);
50
+ return {
51
+ id: `mcp-registry:${server.name}`,
52
+ nativeId: server.name,
53
+ name: server.name,
54
+ description: server.description ?? "",
55
+ categories,
56
+ capabilities: [server.description ?? server.name],
57
+ source: "mcp-registry",
58
+ protocol: "mcp",
59
+ endpoints: {
60
+ mcp: remoteUrl,
61
+ http: server.website ?? server.repo,
62
+ },
63
+ pricing: { model: "free" },
64
+ verified: !!server.repo,
65
+ raw: server,
66
+ };
67
+ }
68
+ function extractCategories(text) {
69
+ const lower = text.toLowerCase();
70
+ const cats = [];
71
+ const keywords = {
72
+ defi: "defi", yield: "defi", swap: "defi", token: "defi", blockchain: "defi",
73
+ data: "data", analytics: "data", database: "data", search: "data",
74
+ code: "development", github: "development", git: "development",
75
+ file: "tools", browser: "tools", web: "tools",
76
+ ai: "ai", llm: "ai", model: "ai",
77
+ image: "media", video: "media", audio: "media",
78
+ };
79
+ for (const [keyword, cat] of Object.entries(keywords)) {
80
+ if (lower.includes(keyword) && !cats.includes(cat))
81
+ cats.push(cat);
82
+ }
83
+ return cats.length > 0 ? cats : ["general"];
84
+ }
85
+ //# sourceMappingURL=mcp-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-registry.js","sourceRoot":"","sources":["../../src/sources/mcp-registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,QAAQ,GAAG,0CAA0C,CAAC;AAY5D,MAAM,CAAC,MAAM,kBAAkB,GAAkB;IAC/C,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,0BAA0B;IAEvC,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,OAA6B;QACvD,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,KAAK,CAAC;QAE1C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;YAC/C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3D,IAAI,KAAK;gBAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACjD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAE1C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;YAE5D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;YACvE,YAAY,CAAC,KAAK,CAAC,CAAC;YAEpB,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,OAAO,EAAE,CAAC;YAEvB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;YACnD,kDAAkD;YAClD,MAAM,OAAO,GAAgB,UAAU,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;YAEhF,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QACvE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,uBAAuB,EAAE;gBAC1D,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;aAClC,CAAC,CAAC;YACH,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF,CAAC;AAEF,SAAS,YAAY,CAAC,MAAiB;IACrC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;IAC3C,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;IAExE,OAAO;QACL,EAAE,EAAE,gBAAgB,MAAM,CAAC,IAAI,EAAE;QACjC,QAAQ,EAAE,MAAM,CAAC,IAAI;QACrB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;QACrC,UAAU;QACV,YAAY,EAAE,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC;QACjD,MAAM,EAAE,cAAc;QACtB,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE;YACT,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI;SACpC;QACD,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;QAC1B,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;QACvB,GAAG,EAAE,MAAM;KACZ,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAA2B;QACvC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;QAC5E,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;QACjE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa;QAC9D,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO;QAC7C,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI;QAChC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO;KAC/C,CAAC;IACF,KAAK,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtD,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Skills Source Adapter
3
+ * Searches skills.sh (Vercel) and ClawHub registries for agent skills
4
+ * 13,700+ capabilities indexed across both registries
5
+ */
6
+ import type { SourceAdapter } from "./types.js";
7
+ export declare const skillsAdapter: SourceAdapter;
8
+ //# sourceMappingURL=skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/sources/skills.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAqC,MAAM,YAAY,CAAC;AAKnF,eAAO,MAAM,aAAa,EAAE,aAyC3B,CAAC"}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Skills Source Adapter
3
+ * Searches skills.sh (Vercel) and ClawHub registries for agent skills
4
+ * 13,700+ capabilities indexed across both registries
5
+ */
6
+ const SKILLS_SH_API = "https://skills.sh";
7
+ const CLAWHUB_API = "https://clawhub.ai";
8
+ export const skillsAdapter = {
9
+ name: "skills-registry",
10
+ displayName: "Skills Registry (skills.sh + ClawHub)",
11
+ async search(query, options) {
12
+ const limit = options?.limit ?? 20;
13
+ const timeout = options?.timeout ?? 10000;
14
+ const results = [];
15
+ // Search skills.sh
16
+ try {
17
+ const skillsShResults = await searchSkillsSh(query, Math.ceil(limit / 2), timeout);
18
+ results.push(...skillsShResults);
19
+ }
20
+ catch {
21
+ // skills.sh might not have a public search API — fall back to known skills
22
+ }
23
+ // Search ClawHub
24
+ try {
25
+ const clawHubResults = await searchClawHub(query, Math.ceil(limit / 2), timeout);
26
+ results.push(...clawHubResults);
27
+ }
28
+ catch {
29
+ // ClawHub might be rate-limited
30
+ }
31
+ // If both APIs fail, return from seed list
32
+ if (results.length === 0) {
33
+ return searchSeedList(query, limit);
34
+ }
35
+ return results.slice(0, limit);
36
+ },
37
+ async ping() {
38
+ try {
39
+ const res = await fetch(SKILLS_SH_API, { signal: AbortSignal.timeout(3000) });
40
+ return res.ok;
41
+ }
42
+ catch {
43
+ return true; // Seed list always available
44
+ }
45
+ },
46
+ };
47
+ async function searchSkillsSh(query, limit, timeout) {
48
+ // skills.sh has a search page — try to query it
49
+ const res = await fetch(`${SKILLS_SH_API}/api/search?q=${encodeURIComponent(query)}&limit=${limit}`, {
50
+ signal: AbortSignal.timeout(timeout),
51
+ });
52
+ if (!res.ok) {
53
+ // Try the leaderboard endpoint
54
+ const lbRes = await fetch(`${SKILLS_SH_API}/api/leaderboard?limit=${limit}`, {
55
+ signal: AbortSignal.timeout(timeout),
56
+ });
57
+ if (!lbRes.ok)
58
+ return [];
59
+ const data = await lbRes.json();
60
+ const skills = Array.isArray(data) ? data : data.skills ?? data.data ?? [];
61
+ return skills
62
+ .filter((s) => matchesQuery(s, query))
63
+ .map((s) => mapSkill(s, "skills-sh"));
64
+ }
65
+ const data = await res.json();
66
+ const skills = Array.isArray(data) ? data : data.skills ?? data.results ?? [];
67
+ return skills.map((s) => mapSkill(s, "skills-sh"));
68
+ }
69
+ async function searchClawHub(query, limit, timeout) {
70
+ const res = await fetch(`${CLAWHUB_API}/api/skills/search?q=${encodeURIComponent(query)}&limit=${limit}`, {
71
+ signal: AbortSignal.timeout(timeout),
72
+ });
73
+ if (!res.ok)
74
+ return [];
75
+ const data = await res.json();
76
+ const skills = Array.isArray(data) ? data : data.skills ?? data.results ?? [];
77
+ return skills.map((s) => mapSkill(s, "clawhub"));
78
+ }
79
+ function mapSkill(skill, registry) {
80
+ const name = skill.name ?? skill.slug ?? skill.title ?? "Unknown Skill";
81
+ const description = skill.description ?? "";
82
+ const repo = skill.repo ?? skill.repository ?? skill.url ?? "";
83
+ const installs = skill.installs ?? skill.downloads ?? 0;
84
+ return {
85
+ id: `skills-registry:${registry}:${name.toLowerCase().replace(/\s+/g, "-")}`,
86
+ nativeId: skill.id ?? name,
87
+ name,
88
+ description,
89
+ categories: extractSkillCategories(name, description),
90
+ capabilities: [description, ...(skill.tags ?? [])],
91
+ source: "skills-registry",
92
+ protocol: "skill",
93
+ endpoints: {
94
+ http: repo || `https://skills.sh/${name}`,
95
+ },
96
+ pricing: { model: "free" },
97
+ verified: installs > 100,
98
+ lastSeen: Date.now(),
99
+ raw: { ...skill, registry },
100
+ };
101
+ }
102
+ // Seed list of well-known skills for when APIs are unavailable
103
+ const KNOWN_SKILLS = [
104
+ { name: "remotion-best-practices", description: "Video creation in React with Remotion", categories: ["media", "development"], registry: "skills-sh", installs: 145000 },
105
+ { name: "web-design-guidelines", description: "UI/UX design best practices for web development", categories: ["design", "development"], registry: "skills-sh", installs: 89000 },
106
+ { name: "react-best-practices", description: "React and Next.js performance optimization from Vercel", categories: ["development"], registry: "skills-sh", installs: 120000 },
107
+ { name: "solana-dev", description: "End-to-end Solana development playbook", categories: ["development", "defi"], registry: "skills-sh", installs: 50000 },
108
+ { name: "cairo-contracts", description: "Write Cairo smart contracts on Starknet", categories: ["development", "defi"], registry: "skills-sh", installs: 30000 },
109
+ { name: "x402-skill", description: "x402 HTTP payment protocol for monetizing APIs", categories: ["payments", "development"], registry: "skills-sh", installs: 25000 },
110
+ { name: "agent-browser", description: "Automate browser interactions, screenshots, form filling", categories: ["tools", "automation"], registry: "skills-sh", installs: 70000 },
111
+ { name: "implement-design", description: "Translate Figma designs into production-ready code", categories: ["design", "development"], registry: "skills-sh", installs: 60000 },
112
+ { name: "find-skills", description: "Discover and install new agent skills", categories: ["tools", "discovery"], registry: "skills-sh", installs: 200000 },
113
+ { name: "tailwind-v4-shadcn", description: "Set up Tailwind v4 with shadcn/ui", categories: ["development", "design"], registry: "skills-sh", installs: 45000 },
114
+ { name: "ethskills", description: "Learn Ethereum, Solidity, smart contracts, web3 development", categories: ["development", "defi"], registry: "skills-sh", installs: 8000 },
115
+ { name: "soul-markets", description: "Agent skill marketplace — monetize agent capabilities", categories: ["marketplace", "commerce"], registry: "clawhub", installs: 5000 },
116
+ { name: "a2a-market", description: "Buy and sell agent skills using USDC on Base via A2A", categories: ["marketplace", "commerce"], registry: "clawhub", installs: 3000 },
117
+ { name: "skillzmarket", description: "Discover and install skills from community marketplace", categories: ["marketplace", "discovery"], registry: "clawhub", installs: 4000 },
118
+ { name: "x402-agent-marketplace", description: "x402 agent marketplace for paid AI capabilities", categories: ["marketplace", "payments"], registry: "clawhub", installs: 2000 },
119
+ ];
120
+ function searchSeedList(query, limit) {
121
+ const lower = query.toLowerCase();
122
+ return KNOWN_SKILLS
123
+ .filter((s) => matchesQuery(s, query))
124
+ .slice(0, limit)
125
+ .map((s) => mapSkill({ ...s, installs: s.installs }, s.registry));
126
+ }
127
+ function matchesQuery(skill, query) {
128
+ if (!query)
129
+ return true;
130
+ const lower = query.toLowerCase();
131
+ const text = `${skill.name ?? ""} ${skill.description ?? ""} ${(skill.tags ?? []).join(" ")} ${(skill.categories ?? []).join(" ")}`.toLowerCase();
132
+ return lower.split(/\s+/).some((term) => text.includes(term));
133
+ }
134
+ function extractSkillCategories(name, description) {
135
+ const text = `${name} ${description}`.toLowerCase();
136
+ const cats = [];
137
+ if (text.match(/react|next|vue|svelte|frontend|css|tailwind|design/))
138
+ cats.push("development");
139
+ if (text.match(/defi|yield|swap|solidity|ethereum|solana|contract/))
140
+ cats.push("defi");
141
+ if (text.match(/image|video|audio|media|remotion|figma/))
142
+ cats.push("media");
143
+ if (text.match(/data|analytics|research|search/))
144
+ cats.push("data");
145
+ if (text.match(/browser|automat|tool|file/))
146
+ cats.push("tools");
147
+ if (text.match(/market|commerce|pay|x402|monetiz/))
148
+ cats.push("commerce");
149
+ if (text.match(/security|audit|test/))
150
+ cats.push("security");
151
+ return cats.length > 0 ? cats : ["general"];
152
+ }
153
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/sources/skills.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Kompass Universal Agent Discovery — Core Types
3
+ *
4
+ * UnifiedAgent is the normalized representation of an agent
5
+ * from ANY source (ACP, MCP, ERC-8004, x402, A2A, L402, etc.)
6
+ */
7
+ export type AgentSource = "kompass-registry" | "acp" | "mcp-registry" | "x402-ecosystem" | "erc8004" | "adp" | "a2a-wellknown" | "l402-directory" | "skills-registry";
8
+ export type AgentProtocol = "acp" | "mcp" | "x402" | "a2a" | "http" | "l402" | "onchain" | "skill";
9
+ export interface UnifiedAgent {
10
+ /** Globally unique ID: "${source}:${nativeId}" */
11
+ id: string;
12
+ /** ID within the source registry */
13
+ nativeId: string;
14
+ /** Agent name */
15
+ name: string;
16
+ /** Description of what this agent does */
17
+ description: string;
18
+ /** Capability categories (e.g., ["defi", "yield", "analytics"]) */
19
+ categories: string[];
20
+ /** Free-text capability descriptions for matching */
21
+ capabilities: string[];
22
+ /** Which source registry this came from */
23
+ source: AgentSource;
24
+ /** Which protocol to use for hiring/interacting */
25
+ protocol: AgentProtocol;
26
+ /** Protocol-specific endpoints */
27
+ endpoints: {
28
+ mcp?: string;
29
+ a2a?: string;
30
+ x402?: string;
31
+ http?: string;
32
+ l402?: string;
33
+ acp?: {
34
+ walletAddress: string;
35
+ entityAddress?: string;
36
+ };
37
+ };
38
+ /** Reputation/trust signals */
39
+ reputation?: {
40
+ score: number;
41
+ count: number;
42
+ source: string;
43
+ };
44
+ /** Pricing info */
45
+ pricing?: {
46
+ model: "free" | "per-call" | "subscription" | "escrow" | "unknown";
47
+ amount?: string;
48
+ currency?: string;
49
+ };
50
+ /** Identity verification status */
51
+ verified?: boolean;
52
+ /** Last time this agent was seen active */
53
+ lastSeen?: number;
54
+ /** Original raw data from source */
55
+ raw?: unknown;
56
+ }
57
+ export interface SourceSearchOptions {
58
+ limit?: number;
59
+ category?: string;
60
+ timeout?: number;
61
+ }
62
+ export interface SourceAdapter {
63
+ /** Unique name for this source */
64
+ name: AgentSource;
65
+ /** Human-readable display name */
66
+ displayName: string;
67
+ /** Search this source for agents matching the query */
68
+ search(query: string, options?: SourceSearchOptions): Promise<UnifiedAgent[]>;
69
+ /** Check if this source is reachable */
70
+ ping(): Promise<boolean>;
71
+ }
72
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sources/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,WAAW,GACnB,kBAAkB,GAClB,KAAK,GACL,cAAc,GACd,gBAAgB,GAChB,SAAS,GACT,KAAK,GACL,eAAe,GACf,gBAAgB,GAChB,iBAAiB,CAAC;AAEtB,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAEnG,MAAM,WAAW,YAAY;IAC3B,kDAAkD;IAClD,EAAE,EAAE,MAAM,CAAC;IACX,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,qDAAqD;IACrD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,2CAA2C;IAC3C,MAAM,EAAE,WAAW,CAAC;IACpB,mDAAmD;IACnD,QAAQ,EAAE,aAAa,CAAC;IACxB,kCAAkC;IAClC,SAAS,EAAE;QACT,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE;YAAE,aAAa,EAAE,MAAM,CAAC;YAAC,aAAa,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KACzD,CAAC;IACF,+BAA+B;IAC/B,UAAU,CAAC,EAAE;QACX,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,mBAAmB;IACnB,OAAO,CAAC,EAAE;QACR,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,cAAc,GAAG,QAAQ,GAAG,SAAS,CAAC;QACnE,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,mCAAmC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,kCAAkC;IAClC,IAAI,EAAE,WAAW,CAAC;IAClB,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9E,wCAAwC;IACxC,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1B"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Kompass Universal Agent Discovery — Core Types
3
+ *
4
+ * UnifiedAgent is the normalized representation of an agent
5
+ * from ANY source (ACP, MCP, ERC-8004, x402, A2A, L402, etc.)
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/sources/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * x402 Ecosystem Source Adapter
3
+ * Fetches known x402 endpoints from the x402.org ecosystem
4
+ */
5
+ import type { SourceAdapter } from "./types.js";
6
+ export declare const x402EcosystemAdapter: SourceAdapter;
7
+ //# sourceMappingURL=x402-ecosystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x402-ecosystem.d.ts","sourceRoot":"","sources":["../../src/sources/x402-ecosystem.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAqC,MAAM,YAAY,CAAC;AAkBnF,eAAO,MAAM,oBAAoB,EAAE,aA0ClC,CAAC"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * x402 Ecosystem Source Adapter
3
+ * Fetches known x402 endpoints from the x402.org ecosystem
4
+ */
5
+ // Seed list of known x402 services (from x402.org/ecosystem + x402scan)
6
+ const KNOWN_X402_SERVICES = [
7
+ { name: "OpenRouter", url: "https://openrouter.ai", description: "LLM API access with USDC payments", categories: ["ai", "llm"] },
8
+ { name: "Dexter AI", url: "https://dexterai.com", description: "x402 facilitator on Solana. 38M+ settlements", categories: ["defi", "trading"] },
9
+ { name: "AgentCash", url: "https://agentcash.dev", description: "One balance, every paid API. Multi-protocol agent wallet", categories: ["payments", "tools"] },
10
+ { name: "Allium", url: "https://allium.so", description: "Blockchain data APIs with x402 payments", categories: ["data", "analytics"] },
11
+ { name: "Kompass Data Provider", url: "http://localhost:4021", description: "DeFi yield data, token prices, risk scores via x402", categories: ["defi", "data"] },
12
+ { name: "Wurk", url: "https://wurk.fun", description: "Agent job board with x402 integration", categories: ["jobs", "tools"] },
13
+ { name: "Tavily", url: "https://tavily.com", description: "AI-powered web search API", categories: ["search", "data"] },
14
+ { name: "ASSAY", url: "https://assayaudit.com", description: "Agent evaluation and auditing service", categories: ["audit", "trust"] },
15
+ { name: "Zentiece", url: "https://zentiece.com", description: "Agent with x402 payments + ORBIT burns", categories: ["defi", "trading"] },
16
+ { name: "AlgoVoi", url: "https://algovoi.com", description: "x402 integration on Algorand", categories: ["defi", "tools"] },
17
+ { name: "LibertAI", url: "https://libertai.io", description: "Autonomous agents on Aleph Cloud with x402", categories: ["ai", "compute"] },
18
+ { name: "Handshake_58", url: "https://handshake58.com", description: "Streaming AI agent payment channels", categories: ["payments"] },
19
+ ];
20
+ export const x402EcosystemAdapter = {
21
+ name: "x402-ecosystem",
22
+ displayName: "x402 Ecosystem",
23
+ async search(query, options) {
24
+ // Also try to fetch from x402.org ecosystem page
25
+ let dynamicServices = [];
26
+ try {
27
+ const res = await fetch("https://www.x402.org/ecosystem", {
28
+ signal: AbortSignal.timeout(options?.timeout ?? 5000),
29
+ });
30
+ if (res.ok) {
31
+ const html = await res.text();
32
+ // Extract any JSON data from the page
33
+ const jsonMatch = html.match(/\[{.*"name".*}\]/s);
34
+ if (jsonMatch) {
35
+ dynamicServices = JSON.parse(jsonMatch[0]);
36
+ }
37
+ }
38
+ }
39
+ catch {
40
+ // Fall back to seed list
41
+ }
42
+ const allServices = [...KNOWN_X402_SERVICES, ...dynamicServices];
43
+ const lower = query.toLowerCase();
44
+ return allServices
45
+ .filter((s) => {
46
+ if (!query)
47
+ return true;
48
+ return (s.name.toLowerCase().includes(lower) ||
49
+ s.description.toLowerCase().includes(lower) ||
50
+ s.categories.some((c) => lower.includes(c)));
51
+ })
52
+ .slice(0, options?.limit ?? 50)
53
+ .map(mapX402Service);
54
+ },
55
+ async ping() {
56
+ return true; // Seed list always available
57
+ },
58
+ };
59
+ function mapX402Service(service) {
60
+ return {
61
+ id: `x402-ecosystem:${service.name.toLowerCase().replace(/\s+/g, "-")}`,
62
+ nativeId: service.name,
63
+ name: service.name,
64
+ description: service.description,
65
+ categories: service.categories,
66
+ capabilities: [service.description],
67
+ source: "x402-ecosystem",
68
+ protocol: "x402",
69
+ endpoints: {
70
+ x402: service.url,
71
+ http: service.url,
72
+ },
73
+ pricing: { model: "per-call", currency: "USDC" },
74
+ verified: true,
75
+ raw: service,
76
+ };
77
+ }
78
+ //# sourceMappingURL=x402-ecosystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x402-ecosystem.js","sourceRoot":"","sources":["../../src/sources/x402-ecosystem.ts"],"names":[],"mappings":"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"}