kompass-sdk 0.14.0 → 0.15.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/cli.js +0 -0
- package/dist/matching.d.ts.map +1 -1
- package/dist/matching.js +8 -0
- package/dist/matching.js.map +1 -1
- package/dist/sources/acp.js +1 -1
- package/dist/sources/acp.js.map +1 -1
- package/dist/sources/bankr.d.ts +8 -0
- package/dist/sources/bankr.d.ts.map +1 -0
- package/dist/sources/bankr.js +79 -0
- package/dist/sources/bankr.js.map +1 -0
- package/dist/sources/index.d.ts.map +1 -1
- package/dist/sources/index.js +4 -0
- package/dist/sources/index.js.map +1 -1
- package/dist/sources/locus.d.ts +12 -0
- package/dist/sources/locus.d.ts.map +1 -0
- package/dist/sources/locus.js +134 -0
- package/dist/sources/locus.js.map +1 -0
- package/dist/sources/openserv.d.ts +8 -0
- package/dist/sources/openserv.d.ts.map +1 -0
- package/dist/sources/openserv.js +76 -0
- package/dist/sources/openserv.js.map +1 -0
- package/dist/sources/types.d.ts +1 -1
- package/dist/sources/types.d.ts.map +1 -1
- package/dist/wallet/bridge.d.ts +1 -0
- package/dist/wallet/bridge.d.ts.map +1 -1
- package/dist/wallet/bridge.js +31 -5
- package/dist/wallet/bridge.js.map +1 -1
- package/dist/wallet/handlers/acp.d.ts.map +1 -1
- package/dist/wallet/handlers/acp.js +59 -3
- package/dist/wallet/handlers/acp.js.map +1 -1
- package/dist/wallet/handlers/bankr.d.ts +13 -0
- package/dist/wallet/handlers/bankr.d.ts.map +1 -0
- package/dist/wallet/handlers/bankr.js +88 -0
- package/dist/wallet/handlers/bankr.js.map +1 -0
- package/dist/wallet/handlers/locus.d.ts +21 -0
- package/dist/wallet/handlers/locus.d.ts.map +1 -0
- package/dist/wallet/handlers/locus.js +144 -0
- package/dist/wallet/handlers/locus.js.map +1 -0
- package/dist/wallet/payment-router.d.ts.map +1 -1
- package/dist/wallet/payment-router.js +12 -0
- package/dist/wallet/payment-router.js.map +1 -1
- package/package.json +1 -1
- package/src/matching.ts +9 -0
- package/src/sources/acp.ts +1 -1
- package/src/sources/bankr.ts +87 -0
- package/src/sources/index.ts +4 -0
- package/src/sources/locus.ts +156 -0
- package/src/sources/types.ts +3 -1
- package/src/wallet/bridge.ts +33 -6
- package/src/wallet/handlers/acp.ts +69 -3
- package/src/wallet/handlers/bankr.ts +108 -0
- package/src/wallet/handlers/locus.ts +170 -0
- package/src/wallet/payment-router.ts +14 -0
|
@@ -25,9 +25,10 @@ export async function handleACPPayment(wallet, agent, task, budget) {
|
|
|
25
25
|
// ACP payment only happens at TRANSACTION phase (after agent accepts).
|
|
26
26
|
// Job creation (REQUEST) and acceptance (NEGOTIATION) are FREE.
|
|
27
27
|
// We topup only after confirming an agent accepted.
|
|
28
|
-
//
|
|
29
|
-
//
|
|
30
|
-
|
|
28
|
+
// Format requirements to match offering's expected schema.
|
|
29
|
+
// If the offering has a requirement template/schema, try to conform to it.
|
|
30
|
+
// Otherwise fall back to {description: task}.
|
|
31
|
+
const requirements = JSON.stringify(formatRequirements(task, offering));
|
|
31
32
|
const { stdout } = await execFileAsync("npx", [
|
|
32
33
|
"acp", "job", "create",
|
|
33
34
|
walletAddress,
|
|
@@ -124,4 +125,59 @@ export async function handleACPPayment(wallet, agent, task, budget) {
|
|
|
124
125
|
};
|
|
125
126
|
}
|
|
126
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* Format task requirements to match the offering's expected schema.
|
|
130
|
+
*
|
|
131
|
+
* ACP agents reject jobs when requirements don't match their offering's
|
|
132
|
+
* expected input format. This function:
|
|
133
|
+
* 1. Checks if the offering has a requirement schema/template
|
|
134
|
+
* 2. Tries to extract relevant fields from the natural language task
|
|
135
|
+
* 3. Falls back to {description: task} if no schema exists
|
|
136
|
+
*/
|
|
137
|
+
function formatRequirements(task, offering) {
|
|
138
|
+
const schema = offering.requirement ?? offering.requirementSchema ?? offering.inputSchema;
|
|
139
|
+
// No schema defined — send description (most flexible)
|
|
140
|
+
if (!schema || typeof schema === "string") {
|
|
141
|
+
return { description: task };
|
|
142
|
+
}
|
|
143
|
+
// Schema is an object — try to populate its fields from the task
|
|
144
|
+
if (typeof schema === "object") {
|
|
145
|
+
const formatted = {};
|
|
146
|
+
const taskLower = task.toLowerCase();
|
|
147
|
+
for (const [key, spec] of Object.entries(schema)) {
|
|
148
|
+
const keyLower = key.toLowerCase();
|
|
149
|
+
// Try to extract Ethereum addresses for address-type fields
|
|
150
|
+
if (keyLower.includes("address") || keyLower.includes("token") || keyLower.includes("contract")) {
|
|
151
|
+
const addrMatch = task.match(/0x[a-fA-F0-9]{40}/);
|
|
152
|
+
if (addrMatch) {
|
|
153
|
+
formatted[key] = addrMatch[0];
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// Try to extract chain/network
|
|
158
|
+
if (keyLower.includes("chain") || keyLower.includes("network")) {
|
|
159
|
+
const chains = ["base", "ethereum", "polygon", "arbitrum", "optimism", "bsc"];
|
|
160
|
+
const found = chains.find((c) => taskLower.includes(c));
|
|
161
|
+
formatted[key] = found ?? "base";
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
// Try to extract numeric amounts
|
|
165
|
+
if (keyLower.includes("amount") || keyLower.includes("quantity") || keyLower.includes("limit")) {
|
|
166
|
+
const numMatch = task.match(/\d+\.?\d*/);
|
|
167
|
+
if (numMatch) {
|
|
168
|
+
formatted[key] = parseFloat(numMatch[0]);
|
|
169
|
+
continue;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
// For any other field, use the task description as the value
|
|
173
|
+
if (typeof spec === "string") {
|
|
174
|
+
formatted[key] = task; // Use full task as the value
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
// Always include description for context
|
|
178
|
+
formatted.description = task;
|
|
179
|
+
return formatted;
|
|
180
|
+
}
|
|
181
|
+
return { description: task };
|
|
182
|
+
}
|
|
127
183
|
//# sourceMappingURL=acp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acp.js","sourceRoot":"","sources":["../../../src/wallet/handlers/acp.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAGjC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE1C,6CAA6C;AAC7C,MAAM,UAAU,GAAG,4CAAuD,CAAC;AAE3E,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAqB,EACrB,KAAmB,EACnB,IAAY,EACZ,MAAe;IAEf,MAAM,QAAQ,GAAI,KAAK,CAAC,GAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAK,KAAK,CAAC,GAAW,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;IACxF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,gCAAgC,EAAE,EAAE,CAAC;IACtF,CAAC;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,aAAa,CAAC;IACzD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,iCAAiC,EAAE,EAAE,CAAC;IACvF,CAAC;IAED,IAAI,CAAC;QACH,yCAAyC;QACzC,uEAAuE;QACvE,gEAAgE;QAChE,oDAAoD;QAEpD,
|
|
1
|
+
{"version":3,"file":"acp.js","sourceRoot":"","sources":["../../../src/wallet/handlers/acp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bankr Payment Handler
|
|
3
|
+
* Routes trading tasks through Bankr's LLM Gateway
|
|
4
|
+
* POST prompt → poll for result
|
|
5
|
+
*/
|
|
6
|
+
import type { KompassWallet } from "../index.js";
|
|
7
|
+
import type { UnifiedAgent } from "../../sources/types.js";
|
|
8
|
+
export declare function handleBankrPayment(wallet: KompassWallet, agent: UnifiedAgent, task: string): Promise<{
|
|
9
|
+
success: boolean;
|
|
10
|
+
deliverable?: unknown;
|
|
11
|
+
jobId?: string;
|
|
12
|
+
}>;
|
|
13
|
+
//# sourceMappingURL=bankr.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bankr.d.ts","sourceRoot":"","sources":["../../../src/wallet/handlers/bankr.ts"],"names":[],"mappings":"AAAA;;;;GAIG;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,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA4FtE"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bankr Payment Handler
|
|
3
|
+
* Routes trading tasks through Bankr's LLM Gateway
|
|
4
|
+
* POST prompt → poll for result
|
|
5
|
+
*/
|
|
6
|
+
const BANKR_API = "https://api.bankr.bot";
|
|
7
|
+
export async function handleBankrPayment(wallet, agent, task) {
|
|
8
|
+
const apiKey = process.env.BANKR_API_KEY;
|
|
9
|
+
if (!apiKey) {
|
|
10
|
+
return {
|
|
11
|
+
success: false,
|
|
12
|
+
deliverable: {
|
|
13
|
+
error: "BANKR_API_KEY not configured. Set the BANKR_API_KEY environment variable.",
|
|
14
|
+
hint: "Get an API key from https://bankr.bot",
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
const headers = {
|
|
19
|
+
"Content-Type": "application/json",
|
|
20
|
+
"X-API-Key": apiKey,
|
|
21
|
+
};
|
|
22
|
+
try {
|
|
23
|
+
// Step 1: Submit prompt
|
|
24
|
+
const submitRes = await fetch(`${BANKR_API}/agent/prompt`, {
|
|
25
|
+
method: "POST",
|
|
26
|
+
headers,
|
|
27
|
+
body: JSON.stringify({ prompt: task }),
|
|
28
|
+
signal: AbortSignal.timeout(30000),
|
|
29
|
+
});
|
|
30
|
+
if (!submitRes.ok) {
|
|
31
|
+
const errBody = await submitRes.text().catch(() => "");
|
|
32
|
+
return {
|
|
33
|
+
success: false,
|
|
34
|
+
deliverable: { error: `Bankr API error: ${submitRes.status}`, details: errBody },
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
const submitData = await submitRes.json();
|
|
38
|
+
const jobId = submitData.jobId ?? submitData.job_id ?? submitData.id;
|
|
39
|
+
// If the response is immediate (no job polling needed)
|
|
40
|
+
if (!jobId || submitData.result || submitData.response) {
|
|
41
|
+
return {
|
|
42
|
+
success: true,
|
|
43
|
+
deliverable: submitData.result ?? submitData.response ?? submitData,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
// Step 2: Poll for result
|
|
47
|
+
const maxAttempts = 30;
|
|
48
|
+
const pollInterval = 2000;
|
|
49
|
+
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
50
|
+
await new Promise((resolve) => setTimeout(resolve, pollInterval));
|
|
51
|
+
const pollRes = await fetch(`${BANKR_API}/agent/job/${jobId}`, {
|
|
52
|
+
headers,
|
|
53
|
+
signal: AbortSignal.timeout(10000),
|
|
54
|
+
});
|
|
55
|
+
if (!pollRes.ok)
|
|
56
|
+
continue;
|
|
57
|
+
const pollData = await pollRes.json();
|
|
58
|
+
const status = pollData.status?.toLowerCase();
|
|
59
|
+
if (status === "completed" || status === "done" || status === "success") {
|
|
60
|
+
return {
|
|
61
|
+
success: true,
|
|
62
|
+
deliverable: pollData.result ?? pollData.response ?? pollData,
|
|
63
|
+
jobId,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
if (status === "failed" || status === "error") {
|
|
67
|
+
return {
|
|
68
|
+
success: false,
|
|
69
|
+
deliverable: { error: pollData.error ?? "Job failed", details: pollData },
|
|
70
|
+
jobId,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
// Still pending, continue polling
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
success: false,
|
|
77
|
+
deliverable: { error: "Job timed out after polling", jobId },
|
|
78
|
+
jobId,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
return {
|
|
83
|
+
success: false,
|
|
84
|
+
deliverable: { error: err instanceof Error ? err.message : String(err) },
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=bankr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bankr.js","sourceRoot":"","sources":["../../../src/wallet/handlers/bankr.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Locus Payment Handler
|
|
3
|
+
* Calls Locus wrapped APIs — pay-per-use via USDC on Base.
|
|
4
|
+
* No upstream API keys needed — Locus proxies the call and charges the wallet.
|
|
5
|
+
*
|
|
6
|
+
* Flow:
|
|
7
|
+
* 1. Get or create Locus API key (self-register if needed)
|
|
8
|
+
* 2. Wait for wallet deployment
|
|
9
|
+
* 3. Call the wrapped API endpoint
|
|
10
|
+
* 4. Locus charges USDC from wallet, returns response
|
|
11
|
+
*
|
|
12
|
+
* Docs: https://beta.paywithlocus.com/skill.md
|
|
13
|
+
*/
|
|
14
|
+
import type { KompassWallet } from "../index.js";
|
|
15
|
+
import type { UnifiedAgent } from "../../sources/types.js";
|
|
16
|
+
export declare function handleLocusPayment(wallet: KompassWallet, agent: UnifiedAgent, task: string): Promise<{
|
|
17
|
+
success: boolean;
|
|
18
|
+
deliverable?: unknown;
|
|
19
|
+
txHash?: string;
|
|
20
|
+
}>;
|
|
21
|
+
//# sourceMappingURL=locus.d.ts.map
|
|
@@ -0,0 +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,CAkJvE"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Locus Payment Handler
|
|
3
|
+
* Calls Locus wrapped APIs — pay-per-use via USDC on Base.
|
|
4
|
+
* No upstream API keys needed — Locus proxies the call and charges the wallet.
|
|
5
|
+
*
|
|
6
|
+
* Flow:
|
|
7
|
+
* 1. Get or create Locus API key (self-register if needed)
|
|
8
|
+
* 2. Wait for wallet deployment
|
|
9
|
+
* 3. Call the wrapped API endpoint
|
|
10
|
+
* 4. Locus charges USDC from wallet, returns response
|
|
11
|
+
*
|
|
12
|
+
* Docs: https://beta.paywithlocus.com/skill.md
|
|
13
|
+
*/
|
|
14
|
+
const LOCUS_API = "https://beta-api.paywithlocus.com/api";
|
|
15
|
+
export async function handleLocusPayment(wallet, agent, task) {
|
|
16
|
+
let apiKey = process.env.LOCUS_API_KEY;
|
|
17
|
+
try {
|
|
18
|
+
// Step 1: Self-register if no API key
|
|
19
|
+
if (!apiKey) {
|
|
20
|
+
const walletAddress = wallet.getAddress();
|
|
21
|
+
const registerRes = await fetch(`${LOCUS_API}/register`, {
|
|
22
|
+
method: "POST",
|
|
23
|
+
headers: { "Content-Type": "application/json" },
|
|
24
|
+
body: JSON.stringify({
|
|
25
|
+
wallet_address: walletAddress,
|
|
26
|
+
agent_name: "kompass-agent",
|
|
27
|
+
}),
|
|
28
|
+
signal: AbortSignal.timeout(15000),
|
|
29
|
+
});
|
|
30
|
+
if (!registerRes.ok) {
|
|
31
|
+
const errBody = await registerRes.text().catch(() => "");
|
|
32
|
+
return {
|
|
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
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
const registerData = await registerRes.json();
|
|
42
|
+
apiKey = registerData.data?.apiKey;
|
|
43
|
+
if (!apiKey) {
|
|
44
|
+
return {
|
|
45
|
+
success: false,
|
|
46
|
+
deliverable: { error: "Locus registration did not return an API key" },
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
// Wait for wallet deployment
|
|
50
|
+
for (let i = 0; i < 10; i++) {
|
|
51
|
+
const statusRes = await fetch(`${LOCUS_API}/status`, {
|
|
52
|
+
headers: { "Authorization": `Bearer ${apiKey}` },
|
|
53
|
+
signal: AbortSignal.timeout(5000),
|
|
54
|
+
}).catch(() => null);
|
|
55
|
+
if (statusRes?.ok) {
|
|
56
|
+
const statusData = await statusRes.json();
|
|
57
|
+
if (statusData.data?.walletStatus === "deployed")
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
await new Promise((r) => setTimeout(r, 3000));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const headers = {
|
|
64
|
+
"Content-Type": "application/json",
|
|
65
|
+
"Authorization": `Bearer ${apiKey}`,
|
|
66
|
+
};
|
|
67
|
+
// Step 2: Determine if this is a wrapped API call or a direct payment
|
|
68
|
+
const rawData = agent.raw;
|
|
69
|
+
const isWrappedApi = rawData?.type === "locus-wrapped-api";
|
|
70
|
+
if (isWrappedApi) {
|
|
71
|
+
// Call the wrapped API directly
|
|
72
|
+
// The endpoint URL is like: /api/wrapped/{provider}/{endpoint}
|
|
73
|
+
// We need to figure out the best endpoint for the task
|
|
74
|
+
const provider = rawData.provider;
|
|
75
|
+
const availableEndpoints = rawData.endpoints || [];
|
|
76
|
+
// Pick the first/most relevant endpoint
|
|
77
|
+
// For now use the first endpoint — the provider slug is already in the URL
|
|
78
|
+
const endpoint = availableEndpoints[0]?.toLowerCase().replace(/\s+/g, "-") || "search";
|
|
79
|
+
const callUrl = `${LOCUS_API}/wrapped/${provider}/${endpoint}`;
|
|
80
|
+
const callRes = await fetch(callUrl, {
|
|
81
|
+
method: "POST",
|
|
82
|
+
headers,
|
|
83
|
+
body: JSON.stringify({ query: task, prompt: task, q: task }),
|
|
84
|
+
signal: AbortSignal.timeout(30000),
|
|
85
|
+
});
|
|
86
|
+
if (!callRes.ok) {
|
|
87
|
+
const errBody = await callRes.text().catch(() => "");
|
|
88
|
+
return {
|
|
89
|
+
success: false,
|
|
90
|
+
deliverable: {
|
|
91
|
+
error: `Locus wrapped API call failed: ${callRes.status}`,
|
|
92
|
+
provider,
|
|
93
|
+
endpoint,
|
|
94
|
+
details: errBody,
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
const result = await callRes.json();
|
|
99
|
+
return {
|
|
100
|
+
success: true,
|
|
101
|
+
deliverable: result,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
// Step 3: Direct USDC payment to agent address
|
|
105
|
+
const toAddress = agent.endpoints.acp?.walletAddress ?? agent.endpoints.http;
|
|
106
|
+
const amount = agent.pricing?.amount ?? "0.01";
|
|
107
|
+
if (!toAddress || !toAddress.startsWith("0x")) {
|
|
108
|
+
return {
|
|
109
|
+
success: false,
|
|
110
|
+
deliverable: { error: "No valid target address for Locus payment" },
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
const sendRes = await fetch(`${LOCUS_API}/pay/send`, {
|
|
114
|
+
method: "POST",
|
|
115
|
+
headers,
|
|
116
|
+
body: JSON.stringify({
|
|
117
|
+
to_address: toAddress,
|
|
118
|
+
amount: parseFloat(amount),
|
|
119
|
+
memo: `Kompass task: ${task.slice(0, 100)}`,
|
|
120
|
+
}),
|
|
121
|
+
signal: AbortSignal.timeout(30000),
|
|
122
|
+
});
|
|
123
|
+
if (!sendRes.ok) {
|
|
124
|
+
const errBody = await sendRes.text().catch(() => "");
|
|
125
|
+
return {
|
|
126
|
+
success: false,
|
|
127
|
+
deliverable: { error: `Locus payment failed: ${sendRes.status}`, details: errBody },
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
const sendData = await sendRes.json();
|
|
131
|
+
return {
|
|
132
|
+
success: true,
|
|
133
|
+
deliverable: sendData,
|
|
134
|
+
txHash: sendData.data?.tx_hash ?? sendData.data?.transaction_id,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
catch (err) {
|
|
138
|
+
return {
|
|
139
|
+
success: false,
|
|
140
|
+
deliverable: { error: err instanceof Error ? err.message : String(err) },
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=locus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locus.js","sourceRoot":"","sources":["../../../src/wallet/handlers/locus.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payment-router.d.ts","sourceRoot":"","sources":["../../src/wallet/payment-router.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAiB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"payment-router.d.ts","sourceRoot":"","sources":["../../src/wallet/payment-router.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAiB,MAAM,qBAAqB,CAAC;AAWvE,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7C,OAAO,CAAC,aAAa,CAAC,CA4FxB"}
|
|
@@ -8,6 +8,8 @@ import { handleL402Payment } from "./handlers/l402.js";
|
|
|
8
8
|
import { handleMPPPayment } from "./handlers/mpp.js";
|
|
9
9
|
import { handleNanopayment } from "./handlers/nanopayments.js";
|
|
10
10
|
import { handleFreePayment } from "./handlers/free.js";
|
|
11
|
+
import { handleBankrPayment } from "./handlers/bankr.js";
|
|
12
|
+
import { handleLocusPayment } from "./handlers/locus.js";
|
|
11
13
|
import { ensureSufficientBalance } from "./bridge.js";
|
|
12
14
|
export async function routePayment(wallet, agent, task, options) {
|
|
13
15
|
const protocol = determinePaymentProtocol(agent);
|
|
@@ -47,6 +49,14 @@ export async function routePayment(wallet, agent, task, options) {
|
|
|
47
49
|
const result = await handleNanopayment(wallet, agent, task);
|
|
48
50
|
return { ...result, protocol: "circle-nanopayments", costUSDC: parseFloat(agent.pricing?.amount ?? "0") };
|
|
49
51
|
}
|
|
52
|
+
case "bankr": {
|
|
53
|
+
const result = await handleBankrPayment(wallet, agent, task);
|
|
54
|
+
return { ...result, protocol: "bankr", costUSDC: parseFloat(agent.pricing?.amount ?? "0") };
|
|
55
|
+
}
|
|
56
|
+
case "locus": {
|
|
57
|
+
const result = await handleLocusPayment(wallet, agent, task);
|
|
58
|
+
return { ...result, protocol: "locus", costUSDC: parseFloat(agent.pricing?.amount ?? "0") };
|
|
59
|
+
}
|
|
50
60
|
case "free":
|
|
51
61
|
case "mcp": {
|
|
52
62
|
// MCP servers and free tools — try to execute directly
|
|
@@ -106,6 +116,8 @@ function determinePaymentProtocol(agent) {
|
|
|
106
116
|
case "l402-directory": return "l402";
|
|
107
117
|
case "mcp-registry": return "free";
|
|
108
118
|
case "skills-registry": return "free";
|
|
119
|
+
case "bankr": return "bankr";
|
|
120
|
+
case "locus": return "locus";
|
|
109
121
|
default: return agent.protocol === "onchain" ? "acp" : "free";
|
|
110
122
|
}
|
|
111
123
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payment-router.js","sourceRoot":"","sources":["../../src/wallet/payment-router.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"payment-router.js","sourceRoot":"","sources":["../../src/wallet/payment-router.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kompass-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.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/matching.ts
CHANGED
|
@@ -147,6 +147,15 @@ function multiCriteriaScore(agent: UnifiedAgent): number {
|
|
|
147
147
|
const endpointCount = Object.values(agent.endpoints).filter(Boolean).length;
|
|
148
148
|
score += endpointCount * 2;
|
|
149
149
|
|
|
150
|
+
// MCP servers with remote endpoints are directly callable — boost them
|
|
151
|
+
// They don't have reputation data so they'd otherwise rank too low
|
|
152
|
+
if (agent.protocol === "mcp" && agent.endpoints.mcp) {
|
|
153
|
+
score += 8; // Callable remote MCP server bonus
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// Free tools get a small accessibility bonus (no wallet needed)
|
|
157
|
+
if (agent.pricing?.model === "free") score += 3;
|
|
158
|
+
|
|
150
159
|
// Recency
|
|
151
160
|
if (agent.lastSeen) {
|
|
152
161
|
const hoursSince = (Date.now() - agent.lastSeen) / (1000 * 60 * 60);
|
package/src/sources/acp.ts
CHANGED
|
@@ -49,7 +49,7 @@ function mapAcpAgent(agent: any): UnifiedAgent {
|
|
|
49
49
|
name: agent.name ?? "Unknown ACP Agent",
|
|
50
50
|
description: agent.description ?? offerings.map((o: any) => o.description).join(". ") ?? "",
|
|
51
51
|
categories: extractAcpCategories(agent, offerings),
|
|
52
|
-
capabilities: offerings.map((o: any) => `${o.name}: ${o.description ?? ""}`),
|
|
52
|
+
capabilities: offerings.map((o: any) => `${o.name}: ${o.description ?? ""}${o.requirement ? ` [expects: ${typeof o.requirement === 'object' ? Object.keys(o.requirement).join(', ') : o.requirement}]` : ""}`),
|
|
53
53
|
source: "acp",
|
|
54
54
|
protocol: "acp",
|
|
55
55
|
endpoints: {
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bankr Source Adapter
|
|
3
|
+
* Searches Bankr LLM Gateway for trading/DeFi agent services
|
|
4
|
+
* API at https://api.bankr.bot
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { SourceAdapter, UnifiedAgent, SourceSearchOptions } from "./types.js";
|
|
8
|
+
|
|
9
|
+
const BANKR_API = "https://api.bankr.bot";
|
|
10
|
+
|
|
11
|
+
export const bankrAdapter: SourceAdapter = {
|
|
12
|
+
name: "bankr",
|
|
13
|
+
displayName: "Bankr Trading Gateway",
|
|
14
|
+
|
|
15
|
+
async search(query: string, options?: SourceSearchOptions): Promise<UnifiedAgent[]> {
|
|
16
|
+
const limit = options?.limit ?? 20;
|
|
17
|
+
const timeout = options?.timeout ?? 10000;
|
|
18
|
+
|
|
19
|
+
try {
|
|
20
|
+
const apiKey = process.env.BANKR_API_KEY;
|
|
21
|
+
if (!apiKey) return [];
|
|
22
|
+
|
|
23
|
+
const headers: Record<string, string> = {
|
|
24
|
+
"Content-Type": "application/json",
|
|
25
|
+
"X-API-Key": apiKey,
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
const url = new URL(`${BANKR_API}/agents`);
|
|
29
|
+
if (query) url.searchParams.set("q", query);
|
|
30
|
+
url.searchParams.set("limit", String(limit));
|
|
31
|
+
|
|
32
|
+
const res = await fetch(url.toString(), {
|
|
33
|
+
headers,
|
|
34
|
+
signal: AbortSignal.timeout(timeout),
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
if (!res.ok) return [];
|
|
38
|
+
|
|
39
|
+
const data = await res.json();
|
|
40
|
+
const agents = data.agents ?? data.data ?? data.results ?? data;
|
|
41
|
+
|
|
42
|
+
if (!Array.isArray(agents)) return [];
|
|
43
|
+
|
|
44
|
+
return agents.slice(0, limit).map(mapBankrAgent);
|
|
45
|
+
} catch {
|
|
46
|
+
return [];
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
|
|
50
|
+
async ping(): Promise<boolean> {
|
|
51
|
+
try {
|
|
52
|
+
const res = await fetch(`${BANKR_API}/agent/prompt`, {
|
|
53
|
+
method: "POST",
|
|
54
|
+
headers: { "Content-Type": "application/json" },
|
|
55
|
+
body: JSON.stringify({ prompt: "ping" }),
|
|
56
|
+
signal: AbortSignal.timeout(5000),
|
|
57
|
+
});
|
|
58
|
+
// 401 means the API is alive, just needs auth
|
|
59
|
+
return res.status === 401 || res.ok;
|
|
60
|
+
} catch {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
function mapBankrAgent(agent: any): UnifiedAgent {
|
|
67
|
+
return {
|
|
68
|
+
id: `bankr:${agent.id ?? agent.name ?? agent.slug}`,
|
|
69
|
+
nativeId: agent.id ?? agent.slug ?? "",
|
|
70
|
+
name: agent.name ?? "Bankr Agent",
|
|
71
|
+
description: agent.description ?? "",
|
|
72
|
+
categories: agent.categories ?? ["defi", "trading"],
|
|
73
|
+
capabilities: agent.capabilities ?? [agent.description ?? ""].filter(Boolean),
|
|
74
|
+
source: "bankr",
|
|
75
|
+
protocol: "http",
|
|
76
|
+
endpoints: {
|
|
77
|
+
http: agent.endpoint ?? `${BANKR_API}/agent/prompt`,
|
|
78
|
+
},
|
|
79
|
+
pricing: {
|
|
80
|
+
model: agent.pricing?.model ?? "per-call",
|
|
81
|
+
amount: agent.pricing?.amount ?? "0.01",
|
|
82
|
+
currency: agent.pricing?.currency ?? "USDC",
|
|
83
|
+
},
|
|
84
|
+
verified: agent.verified ?? true,
|
|
85
|
+
raw: agent,
|
|
86
|
+
};
|
|
87
|
+
}
|
package/src/sources/index.ts
CHANGED
|
@@ -14,6 +14,8 @@ import { a2aWellknownAdapter } from "./a2a-wellknown.js";
|
|
|
14
14
|
import { l402DirectoryAdapter } from "./l402-directory.js";
|
|
15
15
|
import { adpAdapter } from "./adp.js";
|
|
16
16
|
import { skillsAdapter } from "./skills.js";
|
|
17
|
+
import { bankrAdapter } from "./bankr.js";
|
|
18
|
+
import { locusAdapter } from "./locus.js";
|
|
17
19
|
|
|
18
20
|
export interface SourceRegistryConfig {
|
|
19
21
|
/** Kompass SDK config (for kompass-registry adapter) */
|
|
@@ -34,6 +36,8 @@ export function createAllSources(config?: SourceRegistryConfig): SourceAdapter[]
|
|
|
34
36
|
l402DirectoryAdapter,
|
|
35
37
|
adpAdapter,
|
|
36
38
|
skillsAdapter,
|
|
39
|
+
bankrAdapter,
|
|
40
|
+
locusAdapter,
|
|
37
41
|
];
|
|
38
42
|
|
|
39
43
|
// Add Kompass registry if config provided
|