kompass-sdk 0.16.0 → 0.18.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.
- package/dist/sources/acp.d.ts.map +1 -1
- package/dist/sources/acp.js +19 -4
- package/dist/sources/acp.js.map +1 -1
- package/dist/wallet/handlers/bankr.js +2 -2
- package/dist/wallet/handlers/locus.d.ts.map +1 -1
- package/dist/wallet/handlers/locus.js +20 -13
- package/dist/wallet/handlers/locus.js.map +1 -1
- package/dist/wallet/handlers/x402.d.ts +1 -1
- package/dist/wallet/handlers/x402.d.ts.map +1 -1
- package/dist/wallet/handlers/x402.js +17 -11
- package/dist/wallet/handlers/x402.js.map +1 -1
- package/package.json +1 -1
- package/src/sources/acp.ts +21 -3
- package/src/wallet/handlers/bankr.ts +2 -2
- package/src/wallet/handlers/locus.ts +21 -14
- package/src/wallet/handlers/x402.ts +20 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acp.d.ts","sourceRoot":"","sources":["../../src/sources/acp.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAqC,MAAM,YAAY,CAAC;AAInF,eAAO,MAAM,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"acp.d.ts","sourceRoot":"","sources":["../../src/sources/acp.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAqC,MAAM,YAAY,CAAC;AAInF,eAAO,MAAM,UAAU,EAAE,aA0DxB,CAAC"}
|
package/dist/sources/acp.js
CHANGED
|
@@ -10,10 +10,9 @@ export const acpAdapter = {
|
|
|
10
10
|
const limit = options?.limit ?? 20;
|
|
11
11
|
const timeout = options?.timeout ?? 15000;
|
|
12
12
|
try {
|
|
13
|
+
// ACP API doesn't support search — fetch all and filter client-side
|
|
13
14
|
const url = new URL(ACP_API);
|
|
14
|
-
|
|
15
|
-
url.searchParams.set("q", query);
|
|
16
|
-
url.searchParams.set("limit", String(limit));
|
|
15
|
+
url.searchParams.set("limit", "100");
|
|
17
16
|
const res = await fetch(url.toString(), {
|
|
18
17
|
signal: AbortSignal.timeout(timeout),
|
|
19
18
|
});
|
|
@@ -23,7 +22,23 @@ export const acpAdapter = {
|
|
|
23
22
|
const agents = json.data ?? json.results ?? json;
|
|
24
23
|
if (!Array.isArray(agents))
|
|
25
24
|
return [];
|
|
26
|
-
return agents
|
|
25
|
+
// Only return agents with offerings (can actually be hired)
|
|
26
|
+
const withOfferings = agents.filter((a) => {
|
|
27
|
+
const offerings = a.jobs ?? a.jobOfferings ?? a.offerings ?? [];
|
|
28
|
+
return offerings.length > 0;
|
|
29
|
+
});
|
|
30
|
+
// Client-side text matching if query provided
|
|
31
|
+
let filtered = withOfferings;
|
|
32
|
+
if (query) {
|
|
33
|
+
const lower = query.toLowerCase();
|
|
34
|
+
const terms = lower.split(/\s+/).filter(t => t.length > 2);
|
|
35
|
+
filtered = withOfferings.filter((a) => {
|
|
36
|
+
const text = `${a.name} ${a.description ?? ""} ${(a.jobs ?? a.offerings ?? []).map((o) => `${o.name} ${o.description ?? ""}`).join(" ")}`.toLowerCase();
|
|
37
|
+
return terms.some(t => text.includes(t));
|
|
38
|
+
});
|
|
39
|
+
// No matches — return empty, don't pollute results with irrelevant agents
|
|
40
|
+
}
|
|
41
|
+
return filtered.slice(0, limit).map(mapAcpAgent);
|
|
27
42
|
}
|
|
28
43
|
catch {
|
|
29
44
|
return [];
|
package/dist/sources/acp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acp.js","sourceRoot":"","sources":["../../src/sources/acp.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,OAAO,GAAG,qCAAqC,CAAC;AAEtD,MAAM,CAAC,MAAM,UAAU,GAAkB;IACvC,IAAI,EAAE,KAAK;IACX,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,OAAO,CAAC,CAAC;YAC7B,
|
|
1
|
+
{"version":3,"file":"acp.js","sourceRoot":"","sources":["../../src/sources/acp.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,8 +44,8 @@ export async function handleBankrPayment(wallet, agent, task) {
|
|
|
44
44
|
};
|
|
45
45
|
}
|
|
46
46
|
// Step 2: Poll for result
|
|
47
|
-
const maxAttempts =
|
|
48
|
-
const pollInterval =
|
|
47
|
+
const maxAttempts = 60;
|
|
48
|
+
const pollInterval = 3000;
|
|
49
49
|
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
50
50
|
await new Promise((resolve) => setTimeout(resolve, pollInterval));
|
|
51
51
|
const pollRes = await fetch(`${BANKR_API}/agent/job/${jobId}`, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locus.d.ts","sourceRoot":"","sources":["../../../src/wallet/handlers/locus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAI3D,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"locus.d.ts","sourceRoot":"","sources":["../../../src/wallet/handlers/locus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAI3D,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAwJvE"}
|
|
@@ -15,9 +15,10 @@ const LOCUS_API = "https://beta-api.paywithlocus.com/api";
|
|
|
15
15
|
export async function handleLocusPayment(wallet, agent, task) {
|
|
16
16
|
let apiKey = process.env.LOCUS_API_KEY;
|
|
17
17
|
try {
|
|
18
|
-
// Step 1:
|
|
18
|
+
// Step 1: Get or create Locus API key + fund from Kompass wallet
|
|
19
19
|
if (!apiKey) {
|
|
20
20
|
const walletAddress = wallet.getAddress();
|
|
21
|
+
// Self-register with Locus
|
|
21
22
|
const registerRes = await fetch(`${LOCUS_API}/register`, {
|
|
22
23
|
method: "POST",
|
|
23
24
|
headers: { "Content-Type": "application/json" },
|
|
@@ -28,25 +29,18 @@ export async function handleLocusPayment(wallet, agent, task) {
|
|
|
28
29
|
signal: AbortSignal.timeout(15000),
|
|
29
30
|
});
|
|
30
31
|
if (!registerRes.ok) {
|
|
31
|
-
const errBody = await registerRes.text().catch(() => "");
|
|
32
32
|
return {
|
|
33
33
|
success: false,
|
|
34
|
-
deliverable: {
|
|
35
|
-
error: `Locus registration failed: ${registerRes.status}`,
|
|
36
|
-
details: errBody,
|
|
37
|
-
hint: "Set LOCUS_API_KEY env var or fund a Locus wallet at paywithlocus.com",
|
|
38
|
-
},
|
|
34
|
+
deliverable: { error: "Locus registration failed. Set LOCUS_API_KEY env var." },
|
|
39
35
|
};
|
|
40
36
|
}
|
|
41
37
|
const registerData = await registerRes.json();
|
|
42
38
|
apiKey = registerData.data?.apiKey;
|
|
39
|
+
const locusWalletAddress = registerData.data?.ownerAddress;
|
|
43
40
|
if (!apiKey) {
|
|
44
|
-
return {
|
|
45
|
-
success: false,
|
|
46
|
-
deliverable: { error: "Locus registration did not return an API key" },
|
|
47
|
-
};
|
|
41
|
+
return { success: false, deliverable: { error: "Locus registration did not return an API key" } };
|
|
48
42
|
}
|
|
49
|
-
// Wait for wallet deployment
|
|
43
|
+
// Wait for Locus wallet deployment
|
|
50
44
|
for (let i = 0; i < 10; i++) {
|
|
51
45
|
const statusRes = await fetch(`${LOCUS_API}/status`, {
|
|
52
46
|
headers: { "Authorization": `Bearer ${apiKey}` },
|
|
@@ -54,8 +48,21 @@ export async function handleLocusPayment(wallet, agent, task) {
|
|
|
54
48
|
}).catch(() => null);
|
|
55
49
|
if (statusRes?.ok) {
|
|
56
50
|
const statusData = await statusRes.json();
|
|
57
|
-
if (statusData.data?.walletStatus === "deployed")
|
|
51
|
+
if (statusData.data?.walletStatus === "deployed") {
|
|
52
|
+
// Fund Locus wallet from Kompass wallet (just-in-time)
|
|
53
|
+
const locusAddr = statusData.data?.walletAddress;
|
|
54
|
+
if (locusAddr) {
|
|
55
|
+
try {
|
|
56
|
+
const { topupACPWallet } = await import("../bridge.js");
|
|
57
|
+
await topupACPWallet(wallet, locusAddr, 0.10); // Fund $0.10
|
|
58
|
+
console.log(`[Kompass] Funded Locus wallet ${locusAddr.slice(0, 10)}... with $0.10 USDC`);
|
|
59
|
+
}
|
|
60
|
+
catch (fundErr) {
|
|
61
|
+
console.log(`[Kompass] Locus funding failed: ${fundErr instanceof Error ? fundErr.message : fundErr}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
58
64
|
break;
|
|
65
|
+
}
|
|
59
66
|
}
|
|
60
67
|
await new Promise((r) => setTimeout(r, 3000));
|
|
61
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locus.js","sourceRoot":"","sources":["../../../src/wallet/handlers/locus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,MAAM,SAAS,GAAG,uCAAuC,CAAC;AAE1D,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAqB,EACrB,KAAmB,EACnB,IAAY;IAEZ,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAEvC,IAAI,CAAC;QACH,
|
|
1
|
+
{"version":3,"file":"locus.js","sourceRoot":"","sources":["../../../src/wallet/handlers/locus.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* x402 Payment Handler
|
|
3
3
|
* HTTP 402 + ERC-3009 transferWithAuthorization
|
|
4
|
-
* Uses
|
|
4
|
+
* Uses x402Client with registerExactEvmScheme for v1+v2 support
|
|
5
5
|
*/
|
|
6
6
|
import type { KompassWallet } from "../index.js";
|
|
7
7
|
import type { UnifiedAgent } from "../../sources/types.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x402.d.ts","sourceRoot":"","sources":["../../../src/wallet/handlers/x402.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"x402.d.ts","sourceRoot":"","sources":["../../../src/wallet/handlers/x402.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAyCvE"}
|
|
@@ -1,26 +1,32 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* x402 Payment Handler
|
|
3
3
|
* HTTP 402 + ERC-3009 transferWithAuthorization
|
|
4
|
-
* Uses
|
|
4
|
+
* Uses x402Client with registerExactEvmScheme for v1+v2 support
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
|
|
7
|
+
import { registerExactEvmScheme } from "@x402/evm/exact/client";
|
|
8
8
|
export async function handleX402Payment(wallet, agent, task) {
|
|
9
9
|
const endpoint = agent.endpoints.x402 ?? agent.endpoints.http;
|
|
10
10
|
if (!endpoint) {
|
|
11
11
|
return { success: false, deliverable: { error: "No x402 endpoint" } };
|
|
12
12
|
}
|
|
13
|
-
const signer = toClientEvmSigner(wallet.getAccount());
|
|
14
|
-
const paidFetch = wrapFetchWithPaymentFromConfig(fetch, {
|
|
15
|
-
schemes: [{ network: "eip155:*", client: new ExactEvmScheme(signer) }],
|
|
16
|
-
});
|
|
17
13
|
try {
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
14
|
+
const account = wallet.getAccount();
|
|
15
|
+
const client = new x402Client();
|
|
16
|
+
registerExactEvmScheme(client, { signer: account });
|
|
17
|
+
const paidFetch = wrapFetchWithPayment(fetch, client);
|
|
18
|
+
// Try GET first (most x402 endpoints are GET), fall back to POST
|
|
19
|
+
let res = await paidFetch(endpoint, {
|
|
22
20
|
signal: AbortSignal.timeout(30000),
|
|
23
21
|
});
|
|
22
|
+
if (res.status === 404 || res.status === 405) {
|
|
23
|
+
res = await paidFetch(endpoint, {
|
|
24
|
+
method: "POST",
|
|
25
|
+
headers: { "Content-Type": "application/json" },
|
|
26
|
+
body: JSON.stringify({ task }),
|
|
27
|
+
signal: AbortSignal.timeout(30000),
|
|
28
|
+
});
|
|
29
|
+
}
|
|
24
30
|
const paymentHeader = res.headers.get("PAYMENT-RESPONSE") ?? res.headers.get("payment-response");
|
|
25
31
|
const data = await res.json().catch(() => null);
|
|
26
32
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x402.js","sourceRoot":"","sources":["../../../src/wallet/handlers/x402.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"x402.js","sourceRoot":"","sources":["../../../src/wallet/handlers/x402.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAIhE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAqB,EACrB,KAAmB,EACnB,IAAY;IAEZ,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;IAC9D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE,CAAC;IACxE,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAChC,sBAAsB,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QAEpD,MAAM,SAAS,GAAG,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAEtD,iEAAiE;QACjE,IAAI,GAAG,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE;YAClC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;SACnC,CAAC,CAAC;QAEH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC7C,GAAG,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE;gBAC9B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC;gBAC9B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;aACnC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACjG,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAEhD,OAAO;YACL,OAAO,EAAE,GAAG,CAAC,EAAE;YACf,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS;SACjE,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SACzE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,MAAc;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACxC,OAAO,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,gBAAgB,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kompass-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.18.0",
|
|
4
4
|
"description": "Get any job done. Universal agent capability discovery + coordination across ACP, MCP, x402, A2A, skills, L402, and ERC-8004.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
package/src/sources/acp.ts
CHANGED
|
@@ -16,9 +16,9 @@ export const acpAdapter: SourceAdapter = {
|
|
|
16
16
|
const timeout = options?.timeout ?? 15000;
|
|
17
17
|
|
|
18
18
|
try {
|
|
19
|
+
// ACP API doesn't support search — fetch all and filter client-side
|
|
19
20
|
const url = new URL(ACP_API);
|
|
20
|
-
|
|
21
|
-
url.searchParams.set("limit", String(limit));
|
|
21
|
+
url.searchParams.set("limit", "100");
|
|
22
22
|
|
|
23
23
|
const res = await fetch(url.toString(), {
|
|
24
24
|
signal: AbortSignal.timeout(timeout),
|
|
@@ -31,7 +31,25 @@ export const acpAdapter: SourceAdapter = {
|
|
|
31
31
|
|
|
32
32
|
if (!Array.isArray(agents)) return [];
|
|
33
33
|
|
|
34
|
-
return agents
|
|
34
|
+
// Only return agents with offerings (can actually be hired)
|
|
35
|
+
const withOfferings = agents.filter((a: any) => {
|
|
36
|
+
const offerings = a.jobs ?? a.jobOfferings ?? a.offerings ?? [];
|
|
37
|
+
return offerings.length > 0;
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
// Client-side text matching if query provided
|
|
41
|
+
let filtered = withOfferings;
|
|
42
|
+
if (query) {
|
|
43
|
+
const lower = query.toLowerCase();
|
|
44
|
+
const terms = lower.split(/\s+/).filter(t => t.length > 2);
|
|
45
|
+
filtered = withOfferings.filter((a: any) => {
|
|
46
|
+
const text = `${a.name} ${a.description ?? ""} ${(a.jobs ?? a.offerings ?? []).map((o: any) => `${o.name} ${o.description ?? ""}`).join(" ")}`.toLowerCase();
|
|
47
|
+
return terms.some(t => text.includes(t));
|
|
48
|
+
});
|
|
49
|
+
// No matches — return empty, don't pollute results with irrelevant agents
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return filtered.slice(0, limit).map(mapAcpAgent);
|
|
35
53
|
} catch {
|
|
36
54
|
return [];
|
|
37
55
|
}
|
|
@@ -59,8 +59,8 @@ export async function handleBankrPayment(
|
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
// Step 2: Poll for result
|
|
62
|
-
const maxAttempts =
|
|
63
|
-
const pollInterval =
|
|
62
|
+
const maxAttempts = 60;
|
|
63
|
+
const pollInterval = 3000;
|
|
64
64
|
|
|
65
65
|
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
66
66
|
await new Promise((resolve) => setTimeout(resolve, pollInterval));
|
|
@@ -25,9 +25,11 @@ export async function handleLocusPayment(
|
|
|
25
25
|
let apiKey = process.env.LOCUS_API_KEY;
|
|
26
26
|
|
|
27
27
|
try {
|
|
28
|
-
// Step 1:
|
|
28
|
+
// Step 1: Get or create Locus API key + fund from Kompass wallet
|
|
29
29
|
if (!apiKey) {
|
|
30
30
|
const walletAddress = wallet.getAddress();
|
|
31
|
+
|
|
32
|
+
// Self-register with Locus
|
|
31
33
|
const registerRes = await fetch(`${LOCUS_API}/register`, {
|
|
32
34
|
method: "POST",
|
|
33
35
|
headers: { "Content-Type": "application/json" },
|
|
@@ -39,37 +41,42 @@ export async function handleLocusPayment(
|
|
|
39
41
|
});
|
|
40
42
|
|
|
41
43
|
if (!registerRes.ok) {
|
|
42
|
-
const errBody = await registerRes.text().catch(() => "");
|
|
43
44
|
return {
|
|
44
45
|
success: false,
|
|
45
|
-
deliverable: {
|
|
46
|
-
error: `Locus registration failed: ${registerRes.status}`,
|
|
47
|
-
details: errBody,
|
|
48
|
-
hint: "Set LOCUS_API_KEY env var or fund a Locus wallet at paywithlocus.com",
|
|
49
|
-
},
|
|
46
|
+
deliverable: { error: "Locus registration failed. Set LOCUS_API_KEY env var." },
|
|
50
47
|
};
|
|
51
48
|
}
|
|
52
49
|
|
|
53
50
|
const registerData = await registerRes.json();
|
|
54
51
|
apiKey = registerData.data?.apiKey;
|
|
52
|
+
const locusWalletAddress = registerData.data?.ownerAddress;
|
|
55
53
|
|
|
56
54
|
if (!apiKey) {
|
|
57
|
-
return {
|
|
58
|
-
success: false,
|
|
59
|
-
deliverable: { error: "Locus registration did not return an API key" },
|
|
60
|
-
};
|
|
55
|
+
return { success: false, deliverable: { error: "Locus registration did not return an API key" } };
|
|
61
56
|
}
|
|
62
57
|
|
|
63
|
-
// Wait for wallet deployment
|
|
58
|
+
// Wait for Locus wallet deployment
|
|
64
59
|
for (let i = 0; i < 10; i++) {
|
|
65
60
|
const statusRes = await fetch(`${LOCUS_API}/status`, {
|
|
66
61
|
headers: { "Authorization": `Bearer ${apiKey}` },
|
|
67
62
|
signal: AbortSignal.timeout(5000),
|
|
68
63
|
}).catch(() => null);
|
|
69
|
-
|
|
70
64
|
if (statusRes?.ok) {
|
|
71
65
|
const statusData = await statusRes.json();
|
|
72
|
-
if (statusData.data?.walletStatus === "deployed")
|
|
66
|
+
if (statusData.data?.walletStatus === "deployed") {
|
|
67
|
+
// Fund Locus wallet from Kompass wallet (just-in-time)
|
|
68
|
+
const locusAddr = statusData.data?.walletAddress;
|
|
69
|
+
if (locusAddr) {
|
|
70
|
+
try {
|
|
71
|
+
const { topupACPWallet } = await import("../bridge.js");
|
|
72
|
+
await topupACPWallet(wallet, locusAddr as any, 0.10); // Fund $0.10
|
|
73
|
+
console.log(`[Kompass] Funded Locus wallet ${locusAddr.slice(0, 10)}... with $0.10 USDC`);
|
|
74
|
+
} catch (fundErr) {
|
|
75
|
+
console.log(`[Kompass] Locus funding failed: ${fundErr instanceof Error ? fundErr.message : fundErr}`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
73
80
|
}
|
|
74
81
|
await new Promise((r) => setTimeout(r, 3000));
|
|
75
82
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* x402 Payment Handler
|
|
3
3
|
* HTTP 402 + ERC-3009 transferWithAuthorization
|
|
4
|
-
* Uses
|
|
4
|
+
* Uses x402Client with registerExactEvmScheme for v1+v2 support
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
|
|
8
|
+
import { registerExactEvmScheme } from "@x402/evm/exact/client";
|
|
9
9
|
import type { KompassWallet } from "../index.js";
|
|
10
10
|
import type { UnifiedAgent } from "../../sources/types.js";
|
|
11
11
|
|
|
@@ -19,19 +19,27 @@ export async function handleX402Payment(
|
|
|
19
19
|
return { success: false, deliverable: { error: "No x402 endpoint" } };
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
const signer = toClientEvmSigner(wallet.getAccount());
|
|
23
|
-
const paidFetch = wrapFetchWithPaymentFromConfig(fetch, {
|
|
24
|
-
schemes: [{ network: "eip155:*", client: new ExactEvmScheme(signer) }],
|
|
25
|
-
});
|
|
26
|
-
|
|
27
22
|
try {
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
23
|
+
const account = wallet.getAccount();
|
|
24
|
+
const client = new x402Client();
|
|
25
|
+
registerExactEvmScheme(client, { signer: account });
|
|
26
|
+
|
|
27
|
+
const paidFetch = wrapFetchWithPayment(fetch, client);
|
|
28
|
+
|
|
29
|
+
// Try GET first (most x402 endpoints are GET), fall back to POST
|
|
30
|
+
let res = await paidFetch(endpoint, {
|
|
32
31
|
signal: AbortSignal.timeout(30000),
|
|
33
32
|
});
|
|
34
33
|
|
|
34
|
+
if (res.status === 404 || res.status === 405) {
|
|
35
|
+
res = await paidFetch(endpoint, {
|
|
36
|
+
method: "POST",
|
|
37
|
+
headers: { "Content-Type": "application/json" },
|
|
38
|
+
body: JSON.stringify({ task }),
|
|
39
|
+
signal: AbortSignal.timeout(30000),
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
|
|
35
43
|
const paymentHeader = res.headers.get("PAYMENT-RESPONSE") ?? res.headers.get("payment-response");
|
|
36
44
|
const data = await res.json().catch(() => null);
|
|
37
45
|
|