kompass-sdk 0.9.0 → 0.10.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.js +3 -1
- package/dist/sources/acp.js.map +1 -1
- package/dist/wallet/handlers/acp.d.ts.map +1 -1
- package/dist/wallet/handlers/acp.js +24 -10
- package/dist/wallet/handlers/acp.js.map +1 -1
- package/package.json +1 -1
- package/src/sources/acp.ts +3 -1
- package/src/wallet/handlers/acp.ts +25 -9
package/dist/sources/acp.js
CHANGED
|
@@ -50,9 +50,11 @@ function mapAcpAgent(agent) {
|
|
|
50
50
|
},
|
|
51
51
|
reputation: agent.metrics ? {
|
|
52
52
|
score: agent.metrics.successRate ?? 0,
|
|
53
|
-
count: agent.metrics.completedJobs ?? 0,
|
|
53
|
+
count: agent.metrics.completedJobs ?? agent.metrics.successfulJobCount ?? 0,
|
|
54
54
|
source: "acp",
|
|
55
55
|
} : undefined,
|
|
56
|
+
// Surface online status — skip offline agents in ranking
|
|
57
|
+
lastSeen: agent.metrics?.isOnline ? Date.now() : (agent.metrics?.minsFromLastOnlineTime ? Date.now() - agent.metrics.minsFromLastOnlineTime * 60000 : undefined),
|
|
56
58
|
pricing: topOffering ? {
|
|
57
59
|
model: "escrow",
|
|
58
60
|
amount: String(topOffering.price ?? "0"),
|
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;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,MAAM,YAAY,GAAG,mBAAmB,CAAC;AAEzC,MAAM,CAAC,MAAM,UAAU,GAAkB;IACvC,IAAI,EAAE,KAAK;IACX,WAAW,EAAE,0BAA0B;IAEvC,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,OAA6B;QACvD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,CACrB,MAAM,YAAY,uBAAuB,KAAK,sBAAsB,EACpE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAC1D,CAAC;YAEF,MAAM,MAAM,GAAU,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAChE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,QAAQ,CAAC,MAAM,YAAY,uCAAuC,EAAE;gBAClE,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF,CAAC;AAEF,SAAS,WAAW,CAAC,KAAU;IAC7B,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC;IACzD,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAEjC,OAAO;QACL,EAAE,EAAE,OAAO,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,aAAa,EAAE;QAC5C,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,aAAa,CAAC;QACjD,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,mBAAmB;QACvC,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC3F,UAAU,EAAE,oBAAoB,CAAC,KAAK,EAAE,SAAS,CAAC;QAClD,YAAY,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;QAC5E,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE;YACT,GAAG,EAAE;gBACH,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,eAAe;gBAC3D,aAAa,EAAE,KAAK,CAAC,aAAa;aACnC;SACF;QACD,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1B,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC;YACrC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"acp.js","sourceRoot":"","sources":["../../src/sources/acp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acp.d.ts","sourceRoot":"","sources":["../../../src/wallet/handlers/acp.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAS3D,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"acp.d.ts","sourceRoot":"","sources":["../../../src/wallet/handlers/acp.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAS3D,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAqIvF"}
|
|
@@ -21,16 +21,10 @@ export async function handleACPPayment(wallet, agent, task, budget) {
|
|
|
21
21
|
return { success: false, deliverable: { error: "No ACP wallet address for agent" } };
|
|
22
22
|
}
|
|
23
23
|
try {
|
|
24
|
-
//
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
await topupACPWallet(wallet, ACP_WALLET, topupAmount);
|
|
29
|
-
}
|
|
30
|
-
catch (topupErr) {
|
|
31
|
-
// Topup may fail if wallet is on different network or insufficient funds
|
|
32
|
-
console.log(`[Kompass] ACP topup skipped: ${topupErr instanceof Error ? topupErr.message : topupErr}`);
|
|
33
|
-
}
|
|
24
|
+
// NOTE: Don't topup before job creation.
|
|
25
|
+
// ACP payment only happens at TRANSACTION phase (after agent accepts).
|
|
26
|
+
// Job creation (REQUEST) and acceptance (NEGOTIATION) are FREE.
|
|
27
|
+
// We topup only after confirming an agent accepted.
|
|
34
28
|
// Use ACP CLI with execFile (not execSync) to avoid shell injection
|
|
35
29
|
// Arguments passed as array, not concatenated string
|
|
36
30
|
const requirements = JSON.stringify({ description: task });
|
|
@@ -49,6 +43,8 @@ export async function handleACPPayment(wallet, agent, task, budget) {
|
|
|
49
43
|
const jobData = JSON.parse(stdout.trim());
|
|
50
44
|
const jobId = jobData.data?.jobId ?? jobData.jobId ?? jobData.id;
|
|
51
45
|
console.log(`[Kompass] ACP job #${jobId} created with ${agent.name}. Polling for completion...`);
|
|
46
|
+
const jobPrice = offering.price ?? 0.05;
|
|
47
|
+
let topupDone = false;
|
|
52
48
|
// Poll for completion (max 2 minutes)
|
|
53
49
|
const maxWait = 120_000;
|
|
54
50
|
const pollInterval = 10_000;
|
|
@@ -62,11 +58,29 @@ export async function handleACPPayment(wallet, agent, task, budget) {
|
|
|
62
58
|
const statusData = JSON.parse(statusOut.trim());
|
|
63
59
|
finalPhase = statusData.phase ?? "unknown";
|
|
64
60
|
console.log(`[Kompass] Job #${jobId} phase: ${finalPhase}`);
|
|
61
|
+
// Agent accepted and wants payment — topup NOW (just-in-time)
|
|
62
|
+
if (finalPhase === "NEGOTIATION" && !topupDone) {
|
|
63
|
+
const paymentData = statusData.paymentRequestData?.budget;
|
|
64
|
+
const topupAmount = paymentData?.amount ? Math.max(paymentData.amount * 1.5, 0.05) : Math.max(jobPrice * 2, 0.05);
|
|
65
|
+
try {
|
|
66
|
+
await topupACPWallet(wallet, ACP_WALLET, topupAmount);
|
|
67
|
+
topupDone = true;
|
|
68
|
+
}
|
|
69
|
+
catch (topupErr) {
|
|
70
|
+
console.log(`[Kompass] ACP topup failed: ${topupErr instanceof Error ? topupErr.message : topupErr}`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
65
73
|
if (finalPhase === "COMPLETED") {
|
|
66
74
|
deliverable = statusData.deliverable;
|
|
67
75
|
break;
|
|
68
76
|
}
|
|
69
77
|
if (finalPhase === "REJECTED" || finalPhase === "EXPIRED" || finalPhase === "CANCELLED") {
|
|
78
|
+
// Extract rejection reason from memo history
|
|
79
|
+
const memos = statusData.memoHistory ?? [];
|
|
80
|
+
const rejectionMemo = memos.find((m) => m.status === "REJECTED" || m.nextPhase === "REJECTED");
|
|
81
|
+
if (rejectionMemo?.content) {
|
|
82
|
+
console.log(`[Kompass] Rejection reason: ${rejectionMemo.content.slice(0, 200)}`);
|
|
83
|
+
}
|
|
70
84
|
break;
|
|
71
85
|
}
|
|
72
86
|
}
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"acp.js","sourceRoot":"","sources":["../../../src/wallet/handlers/acp.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.10.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
|
@@ -60,9 +60,11 @@ function mapAcpAgent(agent: any): UnifiedAgent {
|
|
|
60
60
|
},
|
|
61
61
|
reputation: agent.metrics ? {
|
|
62
62
|
score: agent.metrics.successRate ?? 0,
|
|
63
|
-
count: agent.metrics.completedJobs ?? 0,
|
|
63
|
+
count: agent.metrics.completedJobs ?? agent.metrics.successfulJobCount ?? 0,
|
|
64
64
|
source: "acp",
|
|
65
65
|
} : undefined,
|
|
66
|
+
// Surface online status — skip offline agents in ranking
|
|
67
|
+
lastSeen: agent.metrics?.isOnline ? Date.now() : (agent.metrics?.minsFromLastOnlineTime ? Date.now() - agent.metrics.minsFromLastOnlineTime * 60000 : undefined),
|
|
66
68
|
pricing: topOffering ? {
|
|
67
69
|
model: "escrow",
|
|
68
70
|
amount: String(topOffering.price ?? "0"),
|
|
@@ -35,15 +35,10 @@ export async function handleACPPayment(
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
try {
|
|
38
|
-
//
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
await topupACPWallet(wallet, ACP_WALLET, topupAmount);
|
|
43
|
-
} catch (topupErr) {
|
|
44
|
-
// Topup may fail if wallet is on different network or insufficient funds
|
|
45
|
-
console.log(`[Kompass] ACP topup skipped: ${topupErr instanceof Error ? topupErr.message : topupErr}`);
|
|
46
|
-
}
|
|
38
|
+
// NOTE: Don't topup before job creation.
|
|
39
|
+
// ACP payment only happens at TRANSACTION phase (after agent accepts).
|
|
40
|
+
// Job creation (REQUEST) and acceptance (NEGOTIATION) are FREE.
|
|
41
|
+
// We topup only after confirming an agent accepted.
|
|
47
42
|
|
|
48
43
|
// Use ACP CLI with execFile (not execSync) to avoid shell injection
|
|
49
44
|
// Arguments passed as array, not concatenated string
|
|
@@ -71,6 +66,9 @@ export async function handleACPPayment(
|
|
|
71
66
|
|
|
72
67
|
console.log(`[Kompass] ACP job #${jobId} created with ${agent.name}. Polling for completion...`);
|
|
73
68
|
|
|
69
|
+
const jobPrice = offering.price ?? 0.05;
|
|
70
|
+
let topupDone = false;
|
|
71
|
+
|
|
74
72
|
// Poll for completion (max 2 minutes)
|
|
75
73
|
const maxWait = 120_000;
|
|
76
74
|
const pollInterval = 10_000;
|
|
@@ -92,11 +90,29 @@ export async function handleACPPayment(
|
|
|
92
90
|
finalPhase = statusData.phase ?? "unknown";
|
|
93
91
|
console.log(`[Kompass] Job #${jobId} phase: ${finalPhase}`);
|
|
94
92
|
|
|
93
|
+
// Agent accepted and wants payment — topup NOW (just-in-time)
|
|
94
|
+
if (finalPhase === "NEGOTIATION" && !topupDone) {
|
|
95
|
+
const paymentData = statusData.paymentRequestData?.budget;
|
|
96
|
+
const topupAmount = paymentData?.amount ? Math.max(paymentData.amount * 1.5, 0.05) : Math.max(jobPrice * 2, 0.05);
|
|
97
|
+
try {
|
|
98
|
+
await topupACPWallet(wallet, ACP_WALLET, topupAmount);
|
|
99
|
+
topupDone = true;
|
|
100
|
+
} catch (topupErr) {
|
|
101
|
+
console.log(`[Kompass] ACP topup failed: ${topupErr instanceof Error ? topupErr.message : topupErr}`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
95
105
|
if (finalPhase === "COMPLETED") {
|
|
96
106
|
deliverable = statusData.deliverable;
|
|
97
107
|
break;
|
|
98
108
|
}
|
|
99
109
|
if (finalPhase === "REJECTED" || finalPhase === "EXPIRED" || finalPhase === "CANCELLED") {
|
|
110
|
+
// Extract rejection reason from memo history
|
|
111
|
+
const memos = statusData.memoHistory ?? [];
|
|
112
|
+
const rejectionMemo = memos.find((m: any) => m.status === "REJECTED" || m.nextPhase === "REJECTED");
|
|
113
|
+
if (rejectionMemo?.content) {
|
|
114
|
+
console.log(`[Kompass] Rejection reason: ${rejectionMemo.content.slice(0, 200)}`);
|
|
115
|
+
}
|
|
100
116
|
break;
|
|
101
117
|
}
|
|
102
118
|
} catch {
|