kompass-sdk 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,7 @@
1
1
  /**
2
- * ERC-8004 On-Chain Source Adapter
3
- * Indexes agent identities from the ERC-8004 Identity Registry on Base
2
+ * ERC-8004 Source Adapter
3
+ * Searches 8004scan.io API for registered AI agents
4
+ * Real data — agent identity, reputation, supported protocols
4
5
  */
5
6
  import type { SourceAdapter } from "./types.js";
6
7
  export declare function createErc8004Adapter(network?: "base" | "base-sepolia"): SourceAdapter;
@@ -1 +1 @@
1
- {"version":3,"file":"erc8004.d.ts","sourceRoot":"","sources":["../../src/sources/erc8004.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAqC,MAAM,YAAY,CAAC;AAsBnF,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,MAAM,GAAG,cAA+B,GAAG,aAAa,CAyFrG"}
1
+ {"version":3,"file":"erc8004.d.ts","sourceRoot":"","sources":["../../src/sources/erc8004.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAqC,MAAM,YAAY,CAAC;AAInF,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,MAAM,GAAG,cAAuB,GAAG,aAAa,CAkD7F"}
@@ -1,90 +1,40 @@
1
1
  /**
2
- * ERC-8004 On-Chain Source Adapter
3
- * Indexes agent identities from the ERC-8004 Identity Registry on Base
2
+ * ERC-8004 Source Adapter
3
+ * Searches 8004scan.io API for registered AI agents
4
+ * Real data — agent identity, reputation, supported protocols
4
5
  */
5
- import { createPublicClient, http, parseAbiItem } from "viem";
6
- import { base, baseSepolia } from "viem/chains";
7
- // ERC-8004 Identity Registry addresses
8
- const REGISTRY_ADDRESSES = {
9
- "base": "0x8004A818BFB912233c491871b3d84c89A494BD9e",
10
- "base-sepolia": "0x8004A818BFB912233c491871b3d84c89A494BD9e",
11
- };
12
- const TRANSFER_EVENT = parseAbiItem("event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)");
13
- const TOKEN_URI_ABI = [
14
- {
15
- type: "function",
16
- name: "tokenURI",
17
- inputs: [{ name: "tokenId", type: "uint256" }],
18
- outputs: [{ name: "", type: "string" }],
19
- stateMutability: "view",
20
- },
21
- ];
22
- export function createErc8004Adapter(network = "base-sepolia") {
23
- const chain = network === "base" ? base : baseSepolia;
24
- const registryAddress = REGISTRY_ADDRESSES[network];
25
- const client = createPublicClient({
26
- chain,
27
- transport: http(),
28
- });
6
+ const SCAN_API = "https://www.8004scan.io/api/v1";
7
+ export function createErc8004Adapter(network = "base") {
29
8
  return {
30
9
  name: "erc8004",
31
- displayName: "ERC-8004 Identity Registry",
10
+ displayName: "ERC-8004 Identity Registry (8004scan)",
32
11
  async search(query, options) {
33
12
  const limit = options?.limit ?? 20;
13
+ const timeout = options?.timeout ?? 10000;
34
14
  try {
35
- // Get recent Transfer events (minting = from 0x0)
36
- const logs = await client.getLogs({
37
- address: registryAddress,
38
- event: TRANSFER_EVENT,
39
- args: { from: "0x0000000000000000000000000000000000000000" },
40
- fromBlock: "earliest",
41
- toBlock: "latest",
15
+ // Search across all chains on 8004scan
16
+ const url = new URL(`${SCAN_API}/agents`);
17
+ if (query)
18
+ url.searchParams.set("search", query);
19
+ url.searchParams.set("limit", String(limit));
20
+ const res = await fetch(url.toString(), {
21
+ signal: AbortSignal.timeout(timeout),
42
22
  });
43
- const agents = [];
44
- // Process most recent first
45
- const recentLogs = logs.slice(-limit * 2).reverse();
46
- for (const log of recentLogs) {
47
- if (agents.length >= limit)
48
- break;
49
- const tokenId = log.args.tokenId;
50
- const owner = log.args.to;
51
- try {
52
- // Fetch tokenURI for agent metadata
53
- const uri = await client.readContract({
54
- address: registryAddress,
55
- abi: TOKEN_URI_ABI,
56
- functionName: "tokenURI",
57
- args: [tokenId],
58
- });
59
- // Resolve URI to JSON
60
- let metadata = {};
61
- if (uri.startsWith("http") || uri.startsWith("ipfs")) {
62
- const fetchUrl = uri.startsWith("ipfs://")
63
- ? `https://ipfs.io/ipfs/${uri.slice(7)}`
64
- : uri;
65
- const res = await fetch(fetchUrl, { signal: AbortSignal.timeout(3000) });
66
- if (res.ok)
67
- metadata = await res.json();
68
- }
69
- else if (uri.startsWith("data:")) {
70
- const json = uri.split(",")[1];
71
- metadata = JSON.parse(atob(json));
72
- }
73
- const agent = mapErc8004Agent(tokenId, owner, metadata, network);
74
- // Filter by query
75
- if (query) {
76
- const searchText = `${agent.name} ${agent.description} ${agent.categories.join(" ")}`.toLowerCase();
77
- if (!searchText.includes(query.toLowerCase()))
78
- continue;
79
- }
80
- agents.push(agent);
81
- }
82
- catch {
83
- // Skip agents with unresolvable metadata
84
- continue;
85
- }
86
- }
87
- return agents;
23
+ if (!res.ok)
24
+ return [];
25
+ const data = await res.json();
26
+ const agents = data.items ?? data.agents ?? data.data ?? [];
27
+ if (!Array.isArray(agents))
28
+ return [];
29
+ return agents
30
+ .filter((a) => {
31
+ if (!query)
32
+ return true;
33
+ const text = `${a.name ?? ""} ${a.description ?? ""}`.toLowerCase();
34
+ return query.toLowerCase().split(/\s+/).some((t) => text.includes(t));
35
+ })
36
+ .slice(0, limit)
37
+ .map(mapErc8004Agent);
88
38
  }
89
39
  catch {
90
40
  return [];
@@ -92,8 +42,10 @@ export function createErc8004Adapter(network = "base-sepolia") {
92
42
  },
93
43
  async ping() {
94
44
  try {
95
- await client.getBlockNumber();
96
- return true;
45
+ const res = await fetch(`${SCAN_API}/agents?limit=1`, {
46
+ signal: AbortSignal.timeout(5000),
47
+ });
48
+ return res.ok;
97
49
  }
98
50
  catch {
99
51
  return false;
@@ -101,50 +53,52 @@ export function createErc8004Adapter(network = "base-sepolia") {
101
53
  },
102
54
  };
103
55
  }
104
- function mapErc8004Agent(tokenId, owner, metadata, network) {
105
- const services = metadata.services ?? [];
56
+ function mapErc8004Agent(agent) {
57
+ const protocols = agent.supported_protocols ?? [];
58
+ const protocol = protocols.includes("A2A") ? "a2a"
59
+ : protocols.includes("MCP") ? "mcp"
60
+ : protocols.includes("x402") || agent.x402_supported ? "x402"
61
+ : "onchain";
106
62
  const endpoints = {};
107
- for (const svc of services) {
108
- if (svc.protocol === "mcp")
109
- endpoints.mcp = svc.endpoint;
110
- if (svc.protocol === "a2a")
111
- endpoints.a2a = svc.endpoint;
112
- if (svc.protocol === "x402")
113
- endpoints.x402 = svc.endpoint;
114
- if (svc.protocol === "http")
115
- endpoints.http = svc.endpoint;
116
- }
63
+ if (protocols.includes("MCP"))
64
+ endpoints.mcp = agent.mcp_endpoint;
65
+ if (protocols.includes("A2A"))
66
+ endpoints.a2a = agent.a2a_endpoint;
67
+ if (agent.x402_supported)
68
+ endpoints.x402 = agent.x402_endpoint;
117
69
  return {
118
- id: `erc8004:${network}:${tokenId}`,
119
- nativeId: tokenId.toString(),
120
- name: metadata.name ?? `Agent #${tokenId}`,
121
- description: metadata.description ?? "",
122
- categories: metadata.categories ?? extractFromDescription(metadata.description ?? ""),
123
- capabilities: services.map((s) => `${s.protocol}: ${s.endpoint}`),
70
+ id: `erc8004:${agent.agent_id ?? agent.token_id}`,
71
+ nativeId: agent.token_id?.toString() ?? agent.agent_id ?? "",
72
+ name: agent.name ?? `Agent #${agent.token_id}`,
73
+ ensName: agent.owner_ens ?? undefined,
74
+ description: agent.description ?? "",
75
+ categories: extractCategories(agent.name ?? "", agent.description ?? ""),
76
+ capabilities: protocols.map((p) => `Supports ${p}`),
124
77
  source: "erc8004",
125
- protocol: endpoints.a2a ? "a2a" : endpoints.mcp ? "mcp" : endpoints.x402 ? "x402" : "onchain",
78
+ protocol,
126
79
  endpoints,
127
80
  reputation: {
128
- score: 0,
129
- count: 0,
130
- source: "erc8004",
81
+ score: agent.total_score ?? 0,
82
+ count: agent.star_count ?? 0,
83
+ source: "8004scan",
131
84
  },
132
- verified: true,
133
- lastSeen: Date.now(),
134
- raw: { tokenId: tokenId.toString(), owner, metadata, network },
85
+ verified: agent.is_verified ?? false,
86
+ raw: agent,
135
87
  };
136
88
  }
137
- function extractFromDescription(text) {
138
- const lower = text.toLowerCase();
89
+ function extractCategories(name, description) {
90
+ const text = `${name} ${description}`.toLowerCase();
139
91
  const cats = [];
140
- if (lower.match(/defi|yield|swap|pool/))
92
+ if (text.match(/defi|yield|swap|pool|trading/))
141
93
  cats.push("defi");
142
- if (lower.match(/data|analyt/))
94
+ if (text.match(/data|analyt|research/))
143
95
  cats.push("data");
144
- if (lower.match(/trade|trading/))
145
- cats.push("trading");
146
- if (lower.match(/research/))
147
- cats.push("research");
96
+ if (text.match(/code|develop|build/))
97
+ cats.push("development");
98
+ if (text.match(/ai|model|inference/))
99
+ cats.push("ai");
100
+ if (text.match(/security|audit/))
101
+ cats.push("security");
148
102
  return cats.length > 0 ? cats : ["general"];
149
103
  }
150
104
  //# sourceMappingURL=erc8004.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"erc8004.js","sourceRoot":"","sources":["../../src/sources/erc8004.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"erc8004.js","sourceRoot":"","sources":["../../src/sources/erc8004.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  /**
2
- * L402 Directory Source Adapter
3
- * Indexes Lightning 402 endpoints from known directories
2
+ * L402 Lightning Directory Source Adapter
3
+ * Searches 402index.io filtered to L402 (Lightning) protocol
4
+ * Real data — not hardcoded seed list
4
5
  */
5
6
  import type { SourceAdapter } from "./types.js";
6
7
  export declare const l402DirectoryAdapter: SourceAdapter;
@@ -1 +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"}
1
+ {"version":3,"file":"l402-directory.d.ts","sourceRoot":"","sources":["../../src/sources/l402-directory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAqC,MAAM,YAAY,CAAC;AAInF,eAAO,MAAM,oBAAoB,EAAE,aA4DlC,CAAC"}
@@ -1,42 +1,67 @@
1
1
  /**
2
- * L402 Directory Source Adapter
3
- * Indexes Lightning 402 endpoints from known directories
2
+ * L402 Lightning Directory Source Adapter
3
+ * Searches 402index.io filtered to L402 (Lightning) protocol
4
+ * Real data — not hardcoded seed list
4
5
  */
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
- ];
6
+ const INDEX_API = "https://402index.io/api/v1/services";
13
7
  export const l402DirectoryAdapter = {
14
8
  name: "l402-directory",
15
- displayName: "L402 Lightning Directory",
9
+ displayName: "L402 Lightning Directory (402index)",
16
10
  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
- }));
11
+ const limit = options?.limit ?? 20;
12
+ const timeout = options?.timeout ?? 10000;
13
+ try {
14
+ const url = new URL(INDEX_API);
15
+ if (query)
16
+ url.searchParams.set("q", query);
17
+ url.searchParams.set("protocol", "L402");
18
+ url.searchParams.set("limit", String(limit));
19
+ url.searchParams.set("health", "healthy");
20
+ url.searchParams.set("sort", "reliability");
21
+ const res = await fetch(url.toString(), { signal: AbortSignal.timeout(timeout) });
22
+ if (!res.ok)
23
+ return [];
24
+ const data = await res.json();
25
+ const services = data.services ?? data.data ?? [];
26
+ if (!Array.isArray(services))
27
+ return [];
28
+ return services.slice(0, limit).map((s) => ({
29
+ id: `l402-directory:${s.id ?? s.url}`,
30
+ nativeId: s.id ?? s.name,
31
+ name: (s.name ?? "L402 Service").replace(/^\s+/g, "").split("\n")[0].trim().slice(0, 100),
32
+ description: (s.description ?? "").replace(/^\s+|\s+$/g, "").replace(/\s+/g, " ").slice(0, 300),
33
+ categories: s.category ? s.category.split("/").map((c) => c.trim()) : ["general"],
34
+ capabilities: [s.description ?? s.name ?? ""],
35
+ source: "l402-directory",
36
+ protocol: "l402",
37
+ endpoints: { l402: s.url, http: s.url },
38
+ pricing: {
39
+ model: "per-call",
40
+ amount: s.price_sats ? `${s.price_sats} sats` : s.price_usd ? String(s.price_usd) : undefined,
41
+ currency: "sats",
42
+ },
43
+ reputation: s.reliability_score ? {
44
+ score: s.reliability_score,
45
+ count: s.uptime_30d ? Math.round(s.uptime_30d * 100) : 0,
46
+ source: "402index",
47
+ } : undefined,
48
+ verified: s.health_status === "healthy",
49
+ lastSeen: s.last_checked ? new Date(s.last_checked).getTime() : undefined,
50
+ raw: s,
51
+ }));
52
+ }
53
+ catch {
54
+ return [];
55
+ }
37
56
  },
38
57
  async ping() {
39
- return true; // Seed list always available
58
+ try {
59
+ const res = await fetch(`${INDEX_API}?protocol=L402&limit=1`, { signal: AbortSignal.timeout(5000) });
60
+ return res.ok;
61
+ }
62
+ catch {
63
+ return false;
64
+ }
40
65
  },
41
66
  };
42
67
  //# sourceMappingURL=l402-directory.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"l402-directory.js","sourceRoot":"","sources":["../../src/sources/l402-directory.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,10 @@
1
1
  /**
2
2
  * Skills Source Adapter
3
- * Searches skills.sh (Vercel) and ClawHub registries for agent skills
4
- * 13,700+ capabilities indexed across both registries
3
+ * Searches REAL APIs:
4
+ * - skills.sh (Vercel) /api/search?q=
5
+ * - ClawHub (OpenClaw) — /api/search?q= (vector search)
6
+ *
7
+ * No hardcoded seed lists. All real data.
5
8
  */
6
9
  import type { SourceAdapter } from "./types.js";
7
10
  export declare const skillsAdapter: SourceAdapter;
@@ -1 +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"}
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/sources/skills.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAqC,MAAM,YAAY,CAAC;AAKnF,eAAO,MAAM,aAAa,EAAE,aA6B3B,CAAC"}