agentbnb 9.2.0 → 9.2.2

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 (51) hide show
  1. package/README.md +22 -0
  2. package/dist/{card-VVXNKHDX.js → card-L3ZPPBVI.js} +2 -2
  3. package/dist/{chunk-Z7XWQ63B.js → chunk-2KSRFDKF.js} +1 -1
  4. package/dist/{chunk-WEZ7PSOE.js → chunk-563ZZUOA.js} +56 -22
  5. package/dist/chunk-5FXLZ5FX.js +16 -0
  6. package/dist/{chunk-ELFGYC22.js → chunk-7YJOBVWN.js} +3 -0
  7. package/dist/{chunk-V5TJXK3F.js → chunk-COOBXNXU.js} +5 -5
  8. package/dist/{chunk-EC6DIVE5.js → chunk-CPSV5WR2.js} +1 -1
  9. package/dist/{process-guard-6324CZDC.js → chunk-DG4FQ4MD.js} +1 -1
  10. package/dist/{chunk-MPS4RE7T.js → chunk-DT2IEL5U.js} +11 -0
  11. package/dist/chunk-EMVVFP2L.js +54 -0
  12. package/dist/{chunk-FK54LVDR.js → chunk-FVLHEI3Y.js} +5 -5
  13. package/dist/chunk-GIK2AZQH.js +23 -0
  14. package/dist/{chunk-B6AKTLXB.js → chunk-NISX3N7K.js} +16 -7
  15. package/dist/{chunk-CMGJ52SX.js → chunk-NLGLGR2K.js} +1 -1
  16. package/dist/{chunk-RNALIVRR.js → chunk-OFIRWD6B.js} +1 -1
  17. package/dist/{chunk-GGRH5PCD.js → chunk-OI46BKQF.js} +9 -9
  18. package/dist/{chunk-MQIT2F5V.js → chunk-OTAZIF65.js} +1 -1
  19. package/dist/{chunk-KKFP5Y2Z.js → chunk-OXU4QJSZ.js} +2 -2
  20. package/dist/{chunk-53Q2HHHH.js → chunk-PFAEZI32.js} +9 -9
  21. package/dist/{chunk-D7NH6YLM.js → chunk-UJXDBOKV.js} +12 -1
  22. package/dist/{chunk-UPWAXWY2.js → chunk-VDYHCI5F.js} +22 -1
  23. package/dist/{chunk-QG2LLVXP.js → chunk-WA23XRTN.js} +1 -1
  24. package/dist/cli/index.js +787 -97
  25. package/dist/{conduct-QLWXU2ZU.js → conduct-65BGO2EU.js} +13 -11
  26. package/dist/{conduct-JRLLA4PB.js → conduct-AALDEKTH.js} +13 -11
  27. package/dist/{conductor-mode-PFO2VLH6.js → conductor-mode-6S6ADNLW.js} +15 -15
  28. package/dist/{conductor-mode-66IITI4I.js → conductor-mode-HJHU4XLT.js} +2 -2
  29. package/dist/{credits-action-XERUEDF3.js → credits-action-CLLPNRDT.js} +15 -6
  30. package/dist/{execute-NOQVN7ZG.js → execute-R5STYWLD.js} +10 -10
  31. package/dist/{execute-YBNCDAOX.js → execute-YMPHTJPN.js} +2 -2
  32. package/dist/{openclaw-setup-4RIZRMXA.js → openclaw-setup-HUOBTGN4.js} +14 -12
  33. package/dist/{openclaw-skills-TQ2JVBRM.js → openclaw-skills-74372B6I.js} +2 -2
  34. package/dist/process-guard-IUMZ2GSD.js +8 -0
  35. package/dist/{publish-capability-2FMD3K6Z.js → publish-capability-OYXXXYAU.js} +3 -3
  36. package/dist/remote-registry-5TM7DMCO.js +16 -0
  37. package/dist/{request-EYN4CVXC.js → request-NEA66RCW.js} +63 -21
  38. package/dist/{serve-skill-NWERGVH5.js → serve-skill-VKNRBVWE.js} +16 -15
  39. package/dist/{server-UPOPLZ24.js → server-4TACULIV.js} +21 -17
  40. package/dist/{service-coordinator-ZOZTW2U6.js → service-coordinator-RE2KPWO4.js} +91 -31
  41. package/dist/{session-action-OSBZB4TX.js → session-action-UBWJTQVQ.js} +17 -2
  42. package/dist/skills/agentbnb/bootstrap.js +213 -24
  43. package/dist/{store-74EWU77V.js → store-GJJFFEQZ.js} +2 -2
  44. package/dist/{vc-action-A6VBKERF.js → vc-action-72TQVMY2.js} +13 -3
  45. package/openclaw.plugin.json +36 -5
  46. package/package.json +12 -18
  47. package/skills/agentbnb/SKILL.md +106 -75
  48. package/skills/agentbnb/install.sh +0 -0
  49. package/dist/{chunk-C56X7EFJ.js → chunk-QE42IJC4.js} +3 -3
  50. package/dist/{daemon-ETXXE4IS.js → daemon-OM2K3U7J.js} +1 -1
  51. package/dist/{did-action-ODWTBVXL.js → did-action-ERXWCVEJ.js} +1 -1
@@ -1,17 +1,19 @@
1
1
  import {
2
2
  conductAction
3
- } from "./chunk-B6AKTLXB.js";
4
- import "./chunk-V5TJXK3F.js";
3
+ } from "./chunk-NISX3N7K.js";
4
+ import "./chunk-COOBXNXU.js";
5
5
  import "./chunk-3MJT4PZG.js";
6
- import "./chunk-GGRH5PCD.js";
6
+ import "./chunk-GIK2AZQH.js";
7
+ import "./chunk-5FXLZ5FX.js";
8
+ import "./chunk-OI46BKQF.js";
7
9
  import "./chunk-5PV5YCSN.js";
8
- import "./chunk-FK54LVDR.js";
9
- import "./chunk-ELFGYC22.js";
10
- import "./chunk-QG2LLVXP.js";
10
+ import "./chunk-FVLHEI3Y.js";
11
+ import "./chunk-WA23XRTN.js";
11
12
  import "./chunk-G5WKW3ED.js";
12
- import "./chunk-EC6DIVE5.js";
13
- import "./chunk-D7NH6YLM.js";
14
- import "./chunk-C56X7EFJ.js";
13
+ import "./chunk-CPSV5WR2.js";
14
+ import "./chunk-UJXDBOKV.js";
15
+ import "./chunk-QE42IJC4.js";
16
+ import "./chunk-4XTYT4JW.js";
15
17
  import "./chunk-GZUTU6IZ.js";
16
18
  import "./chunk-UPNREF4L.js";
17
19
  import "./chunk-Q5OFZ2JR.js";
@@ -20,10 +22,10 @@ import "./chunk-IWAK4WHK.js";
20
22
  import "./chunk-65GNX2KC.js";
21
23
  import "./chunk-YDGXKH2T.js";
22
24
  import "./chunk-J4RFJVXI.js";
23
- import "./chunk-UVCNMRPS.js";
24
25
  import "./chunk-3YQ73ZM6.js";
25
26
  import "./chunk-3XPBFF6H.js";
26
- import "./chunk-4XTYT4JW.js";
27
+ import "./chunk-7YJOBVWN.js";
28
+ import "./chunk-UVCNMRPS.js";
27
29
  import "./chunk-3RG5ZIWI.js";
28
30
 
29
31
  // src/mcp/tools/conduct.ts
@@ -1,17 +1,19 @@
1
1
  import {
2
2
  conductAction
3
- } from "./chunk-B6AKTLXB.js";
4
- import "./chunk-V5TJXK3F.js";
3
+ } from "./chunk-NISX3N7K.js";
4
+ import "./chunk-COOBXNXU.js";
5
5
  import "./chunk-3MJT4PZG.js";
6
- import "./chunk-GGRH5PCD.js";
6
+ import "./chunk-GIK2AZQH.js";
7
+ import "./chunk-5FXLZ5FX.js";
8
+ import "./chunk-OI46BKQF.js";
7
9
  import "./chunk-5PV5YCSN.js";
8
- import "./chunk-FK54LVDR.js";
9
- import "./chunk-ELFGYC22.js";
10
- import "./chunk-QG2LLVXP.js";
10
+ import "./chunk-FVLHEI3Y.js";
11
+ import "./chunk-WA23XRTN.js";
11
12
  import "./chunk-G5WKW3ED.js";
12
- import "./chunk-EC6DIVE5.js";
13
- import "./chunk-D7NH6YLM.js";
14
- import "./chunk-C56X7EFJ.js";
13
+ import "./chunk-CPSV5WR2.js";
14
+ import "./chunk-UJXDBOKV.js";
15
+ import "./chunk-QE42IJC4.js";
16
+ import "./chunk-4XTYT4JW.js";
15
17
  import "./chunk-GZUTU6IZ.js";
16
18
  import "./chunk-UPNREF4L.js";
17
19
  import "./chunk-Q5OFZ2JR.js";
@@ -20,10 +22,10 @@ import "./chunk-IWAK4WHK.js";
20
22
  import "./chunk-65GNX2KC.js";
21
23
  import "./chunk-YDGXKH2T.js";
22
24
  import "./chunk-J4RFJVXI.js";
23
- import "./chunk-UVCNMRPS.js";
24
25
  import "./chunk-3YQ73ZM6.js";
25
26
  import "./chunk-3XPBFF6H.js";
26
- import "./chunk-4XTYT4JW.js";
27
+ import "./chunk-7YJOBVWN.js";
28
+ import "./chunk-UVCNMRPS.js";
27
29
  import "./chunk-3RG5ZIWI.js";
28
30
  export {
29
31
  conductAction
@@ -1,29 +1,29 @@
1
- import {
2
- createUCAN,
3
- decodeUCAN
4
- } from "./chunk-PMVHKTFG.js";
5
1
  import {
6
2
  BudgetController,
7
3
  decompose,
8
4
  matchSubTasks,
9
5
  orchestrate,
10
6
  validateAndNormalizeSubtasks
11
- } from "./chunk-V5TJXK3F.js";
7
+ } from "./chunk-COOBXNXU.js";
8
+ import {
9
+ createUCAN,
10
+ decodeUCAN
11
+ } from "./chunk-PMVHKTFG.js";
12
12
  import "./chunk-3MJT4PZG.js";
13
- import "./chunk-GGRH5PCD.js";
13
+ import "./chunk-OI46BKQF.js";
14
14
  import "./chunk-5PV5YCSN.js";
15
- import "./chunk-FK54LVDR.js";
16
- import "./chunk-ELFGYC22.js";
15
+ import "./chunk-FVLHEI3Y.js";
17
16
  import {
18
17
  BudgetManager
19
- } from "./chunk-QG2LLVXP.js";
18
+ } from "./chunk-WA23XRTN.js";
20
19
  import "./chunk-G5WKW3ED.js";
21
- import "./chunk-EC6DIVE5.js";
22
- import "./chunk-D7NH6YLM.js";
20
+ import "./chunk-CPSV5WR2.js";
21
+ import "./chunk-UJXDBOKV.js";
23
22
  import {
24
23
  getCardsByCapabilityType,
25
24
  getCardsBySkillCapability
26
- } from "./chunk-C56X7EFJ.js";
25
+ } from "./chunk-QE42IJC4.js";
26
+ import "./chunk-4XTYT4JW.js";
27
27
  import "./chunk-GZUTU6IZ.js";
28
28
  import "./chunk-UPNREF4L.js";
29
29
  import "./chunk-Q5OFZ2JR.js";
@@ -34,12 +34,12 @@ import {
34
34
  import "./chunk-65GNX2KC.js";
35
35
  import "./chunk-YDGXKH2T.js";
36
36
  import "./chunk-J4RFJVXI.js";
37
+ import "./chunk-3YQ73ZM6.js";
38
+ import "./chunk-3XPBFF6H.js";
39
+ import "./chunk-7YJOBVWN.js";
37
40
  import {
38
41
  AgentBnBError
39
42
  } from "./chunk-UVCNMRPS.js";
40
- import "./chunk-3YQ73ZM6.js";
41
- import "./chunk-3XPBFF6H.js";
42
- import "./chunk-4XTYT4JW.js";
43
43
  import "./chunk-3RG5ZIWI.js";
44
44
 
45
45
  // src/conductor/team-formation.ts
@@ -7,8 +7,8 @@ import {
7
7
  matchSubTasks,
8
8
  orchestrate,
9
9
  validateAndNormalizeSubtasks
10
- } from "./chunk-MQIT2F5V.js";
11
- import "./chunk-MPS4RE7T.js";
10
+ } from "./chunk-OTAZIF65.js";
11
+ import "./chunk-DT2IEL5U.js";
12
12
  import {
13
13
  getCardsByCapabilityType,
14
14
  getCardsBySkillCapability
@@ -1,22 +1,25 @@
1
1
  import {
2
2
  syncCreditsFromRegistry
3
- } from "./chunk-KKFP5Y2Z.js";
4
- import "./chunk-Z7XWQ63B.js";
3
+ } from "./chunk-OXU4QJSZ.js";
4
+ import {
5
+ shouldSkipNetwork
6
+ } from "./chunk-5FXLZ5FX.js";
7
+ import "./chunk-2KSRFDKF.js";
5
8
  import "./chunk-AA25Z6FW.js";
6
9
  import {
7
10
  getBalance,
8
11
  getTransactions,
9
12
  openCreditDb
10
- } from "./chunk-D7NH6YLM.js";
13
+ } from "./chunk-UJXDBOKV.js";
11
14
  import "./chunk-QXRNW4OJ.js";
12
15
  import "./chunk-65GNX2KC.js";
13
16
  import "./chunk-YDGXKH2T.js";
14
17
  import "./chunk-J4RFJVXI.js";
15
- import "./chunk-UVCNMRPS.js";
16
18
  import {
17
19
  getConfigDir,
18
20
  loadConfig
19
21
  } from "./chunk-3XPBFF6H.js";
22
+ import "./chunk-UVCNMRPS.js";
20
23
  import "./chunk-3RG5ZIWI.js";
21
24
 
22
25
  // src/cli/credits-action.ts
@@ -31,6 +34,10 @@ async function creditsSync() {
31
34
  console.error("Error: no registry configured. Run `agentbnb config set registry <url>`");
32
35
  process.exit(1);
33
36
  }
37
+ if (shouldSkipNetwork()) {
38
+ console.log("Credits sync: skipped (offline or test mode)");
39
+ return;
40
+ }
34
41
  const creditDbPath = join(getConfigDir(), "credit.db");
35
42
  const db = openCreditDb(creditDbPath);
36
43
  try {
@@ -113,10 +120,12 @@ async function creditsGrant(agentId, amount) {
113
120
  "Content-Type": "application/json",
114
121
  "Authorization": `Bearer ${adminToken}`
115
122
  },
116
- body: JSON.stringify({ agent_id: agentId, amount: credits })
123
+ body: JSON.stringify({ agent_id: agentId, amount: credits }),
124
+ signal: AbortSignal.timeout(1e4)
117
125
  });
118
126
  } catch (err) {
119
- console.error("Error: failed to connect to registry \u2014", err.message);
127
+ const msg = err instanceof Error ? err.message : String(err);
128
+ console.error(`Error: failed to connect to registry \u2014 ${msg}`);
120
129
  process.exit(1);
121
130
  }
122
131
  if (!res.ok) {
@@ -1,23 +1,23 @@
1
1
  import {
2
2
  executeCapabilityBatch,
3
3
  executeCapabilityRequest
4
- } from "./chunk-53Q2HHHH.js";
5
- import "./chunk-KKFP5Y2Z.js";
6
- import "./chunk-Z7XWQ63B.js";
4
+ } from "./chunk-PFAEZI32.js";
5
+ import "./chunk-OXU4QJSZ.js";
6
+ import "./chunk-2KSRFDKF.js";
7
7
  import "./chunk-AA25Z6FW.js";
8
- import "./chunk-FK54LVDR.js";
9
- import "./chunk-ELFGYC22.js";
10
- import "./chunk-EC6DIVE5.js";
11
- import "./chunk-D7NH6YLM.js";
12
- import "./chunk-C56X7EFJ.js";
8
+ import "./chunk-FVLHEI3Y.js";
9
+ import "./chunk-CPSV5WR2.js";
10
+ import "./chunk-UJXDBOKV.js";
11
+ import "./chunk-QE42IJC4.js";
12
+ import "./chunk-4XTYT4JW.js";
13
13
  import "./chunk-GZUTU6IZ.js";
14
14
  import "./chunk-QXRNW4OJ.js";
15
15
  import "./chunk-65GNX2KC.js";
16
16
  import "./chunk-YDGXKH2T.js";
17
17
  import "./chunk-J4RFJVXI.js";
18
- import "./chunk-UVCNMRPS.js";
19
18
  import "./chunk-3XPBFF6H.js";
20
- import "./chunk-4XTYT4JW.js";
19
+ import "./chunk-7YJOBVWN.js";
20
+ import "./chunk-UVCNMRPS.js";
21
21
  import "./chunk-3RG5ZIWI.js";
22
22
  export {
23
23
  executeCapabilityBatch,
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  executeCapabilityBatch,
3
3
  executeCapabilityRequest
4
- } from "./chunk-CMGJ52SX.js";
5
- import "./chunk-MPS4RE7T.js";
4
+ } from "./chunk-NLGLGR2K.js";
5
+ import "./chunk-DT2IEL5U.js";
6
6
  import "./chunk-BPPFY72X.js";
7
7
  import "./chunk-4XTYT4JW.js";
8
8
  import "./chunk-GZUTU6IZ.js";
@@ -5,34 +5,36 @@ import {
5
5
  import {
6
6
  performInit,
7
7
  publishFromSoulV2
8
- } from "./chunk-WEZ7PSOE.js";
8
+ } from "./chunk-563ZZUOA.js";
9
9
  import {
10
10
  getPricingStats
11
- } from "./chunk-UPWAXWY2.js";
12
- import "./chunk-Z7XWQ63B.js";
11
+ } from "./chunk-VDYHCI5F.js";
12
+ import "./chunk-GIK2AZQH.js";
13
+ import "./chunk-5FXLZ5FX.js";
14
+ import "./chunk-2KSRFDKF.js";
13
15
  import "./chunk-AA25Z6FW.js";
14
16
  import {
15
17
  parseSoulMd
16
- } from "./chunk-RNALIVRR.js";
18
+ } from "./chunk-OFIRWD6B.js";
17
19
  import {
18
20
  findSoulMd,
19
21
  getOpenClawWorkspaceDir,
20
22
  inferBrainDir,
21
23
  scanAgents
22
24
  } from "./chunk-RJNKX347.js";
23
- import "./chunk-QG2LLVXP.js";
25
+ import "./chunk-WA23XRTN.js";
24
26
  import "./chunk-G5WKW3ED.js";
25
- import "./chunk-EC6DIVE5.js";
26
- import "./chunk-D7NH6YLM.js";
27
- import "./chunk-C56X7EFJ.js";
27
+ import "./chunk-CPSV5WR2.js";
28
+ import "./chunk-UJXDBOKV.js";
29
+ import "./chunk-QE42IJC4.js";
30
+ import "./chunk-4XTYT4JW.js";
28
31
  import "./chunk-GZUTU6IZ.js";
29
32
  import "./chunk-QXRNW4OJ.js";
30
33
  import "./chunk-65GNX2KC.js";
31
34
  import "./chunk-YDGXKH2T.js";
32
35
  import "./chunk-J4RFJVXI.js";
33
- import "./chunk-UVCNMRPS.js";
34
36
  import "./chunk-3XPBFF6H.js";
35
- import "./chunk-4XTYT4JW.js";
37
+ import "./chunk-UVCNMRPS.js";
36
38
  import "./chunk-3RG5ZIWI.js";
37
39
 
38
40
  // src/cli/openclaw-setup.ts
@@ -248,7 +250,7 @@ Reading ${agentName}/SOUL.md...`);
248
250
  const { loadConfig: loadConfig2 } = await import("./config-ZFWBAGDU.js");
249
251
  const cfg2 = loadConfig2();
250
252
  if (cfg2) {
251
- const db2 = (await import("./store-74EWU77V.js")).openDatabase(cfg2.db_path);
253
+ const db2 = (await import("./store-GJJFFEQZ.js")).openDatabase(cfg2.db_path);
252
254
  try {
253
255
  for (const cap of parsed.capabilities) {
254
256
  const stats = getPricingStats(db2, cap.name);
@@ -301,7 +303,7 @@ Share ${parsed.capabilities.length} skill(s) on the AgentBnB network? [Y/n]: `);
301
303
  console.error("Error: config not found after init.");
302
304
  process.exit(1);
303
305
  }
304
- const db = (await import("./store-74EWU77V.js")).openDatabase(cfg.db_path);
306
+ const db = (await import("./store-GJJFFEQZ.js")).openDatabase(cfg.db_path);
305
307
  try {
306
308
  const card = publishFromSoulV2(db, soulContent, cfg.owner, void 0);
307
309
  console.log(` \u2713 Published capability card (${card.skills.length} skill(s))`);
@@ -78,7 +78,7 @@ async function skillsList(opts) {
78
78
  const config = loadConfig();
79
79
  if (config) {
80
80
  try {
81
- const { openDatabase } = await import("./store-74EWU77V.js");
81
+ const { openDatabase } = await import("./store-GJJFFEQZ.js");
82
82
  const db = openDatabase(config.db_path);
83
83
  try {
84
84
  const rows = db.prepare(
@@ -357,7 +357,7 @@ async function skillsStats(opts) {
357
357
  const config = loadConfig();
358
358
  if (config) {
359
359
  try {
360
- const { openDatabase } = await import("./store-74EWU77V.js");
360
+ const { openDatabase } = await import("./store-GJJFFEQZ.js");
361
361
  const db = openDatabase(config.db_path);
362
362
  try {
363
363
  rows = db.prepare(
@@ -0,0 +1,8 @@
1
+ import {
2
+ ProcessGuard
3
+ } from "./chunk-DG4FQ4MD.js";
4
+ import "./chunk-UVCNMRPS.js";
5
+ import "./chunk-3RG5ZIWI.js";
6
+ export {
7
+ ProcessGuard
8
+ };
@@ -2,12 +2,12 @@ import {
2
2
  parseSoulMd,
3
3
  publishFromSoul,
4
4
  skillConfigToSkill
5
- } from "./chunk-RNALIVRR.js";
6
- import "./chunk-C56X7EFJ.js";
5
+ } from "./chunk-OFIRWD6B.js";
6
+ import "./chunk-QE42IJC4.js";
7
+ import "./chunk-4XTYT4JW.js";
7
8
  import "./chunk-GZUTU6IZ.js";
8
9
  import "./chunk-J4RFJVXI.js";
9
10
  import "./chunk-UVCNMRPS.js";
10
- import "./chunk-4XTYT4JW.js";
11
11
  import "./chunk-3RG5ZIWI.js";
12
12
  export {
13
13
  parseSoulMd,
@@ -0,0 +1,16 @@
1
+ import {
2
+ RegistryAuthError,
3
+ RegistryConnectionError,
4
+ RegistryTimeoutError,
5
+ fetchRemoteCards,
6
+ mergeResults
7
+ } from "./chunk-7YJOBVWN.js";
8
+ import "./chunk-UVCNMRPS.js";
9
+ import "./chunk-3RG5ZIWI.js";
10
+ export {
11
+ RegistryAuthError,
12
+ RegistryConnectionError,
13
+ RegistryTimeoutError,
14
+ fetchRemoteCards,
15
+ mergeResults
16
+ };
@@ -1,24 +1,30 @@
1
+ import {
2
+ DEFAULT_CONSUMER_AUTONOMY,
3
+ checkConsumerBudget,
4
+ createSessionState,
5
+ recordConsumerSpend
6
+ } from "./chunk-EMVVFP2L.js";
1
7
  import {
2
8
  AutoRequestor,
3
9
  requestViaTemporaryRelay
4
- } from "./chunk-GGRH5PCD.js";
10
+ } from "./chunk-OI46BKQF.js";
5
11
  import "./chunk-5PV5YCSN.js";
6
- import "./chunk-FK54LVDR.js";
7
- import "./chunk-ELFGYC22.js";
12
+ import "./chunk-FVLHEI3Y.js";
8
13
  import {
9
14
  BudgetManager,
10
15
  DEFAULT_BUDGET_CONFIG
11
- } from "./chunk-QG2LLVXP.js";
16
+ } from "./chunk-WA23XRTN.js";
12
17
  import {
13
18
  DEFAULT_AUTONOMY_CONFIG
14
19
  } from "./chunk-G5WKW3ED.js";
15
- import "./chunk-EC6DIVE5.js";
20
+ import "./chunk-CPSV5WR2.js";
16
21
  import {
17
22
  openCreditDb
18
- } from "./chunk-D7NH6YLM.js";
23
+ } from "./chunk-UJXDBOKV.js";
19
24
  import {
20
25
  openDatabase
21
- } from "./chunk-C56X7EFJ.js";
26
+ } from "./chunk-QE42IJC4.js";
27
+ import "./chunk-4XTYT4JW.js";
22
28
  import "./chunk-GZUTU6IZ.js";
23
29
  import "./chunk-UPNREF4L.js";
24
30
  import "./chunk-Q5OFZ2JR.js";
@@ -31,10 +37,10 @@ import {
31
37
  } from "./chunk-65GNX2KC.js";
32
38
  import "./chunk-YDGXKH2T.js";
33
39
  import "./chunk-J4RFJVXI.js";
34
- import "./chunk-UVCNMRPS.js";
35
40
  import "./chunk-3YQ73ZM6.js";
36
41
  import "./chunk-3XPBFF6H.js";
37
- import "./chunk-4XTYT4JW.js";
42
+ import "./chunk-7YJOBVWN.js";
43
+ import "./chunk-UVCNMRPS.js";
38
44
  import "./chunk-3RG5ZIWI.js";
39
45
 
40
46
  // src/mcp/tools/request.ts
@@ -76,7 +82,17 @@ function deriveTimeoutHintFromCard(remoteCard, skillId) {
76
82
  async function handleRequest(args, ctx) {
77
83
  try {
78
84
  const maxCost = args.max_cost ?? 50;
85
+ const consumerConfig = ctx.config.consumer_autonomy ?? DEFAULT_CONSUMER_AUTONOMY;
86
+ if (!ctx.consumerSession) {
87
+ ctx.consumerSession = createSessionState();
88
+ }
79
89
  if (args.query) {
90
+ const budgetCheck = checkConsumerBudget(consumerConfig, ctx.consumerSession, maxCost);
91
+ if (!budgetCheck.allowed) {
92
+ return {
93
+ content: [{ type: "text", text: JSON.stringify({ success: false, error: budgetCheck.error, budget_exceeded: true }) }]
94
+ };
95
+ }
80
96
  const registryDb = openDatabase(ctx.config.db_path);
81
97
  const creditDb = openCreditDb(ctx.config.credit_db_path);
82
98
  registryDb.pragma("busy_timeout = 5000");
@@ -100,8 +116,12 @@ async function handleRequest(args, ctx) {
100
116
  maxCostCredits: maxCost,
101
117
  params: args.params
102
118
  });
119
+ const creditsUsed = typeof result?.creditsSpent === "number" ? result.creditsSpent : 0;
120
+ recordConsumerSpend(ctx.consumerSession, creditsUsed);
121
+ const response = { success: true, ...result };
122
+ if (budgetCheck.warning) response.spend_warning = budgetCheck.warning;
103
123
  return {
104
- content: [{ type: "text", text: JSON.stringify({ success: true, ...result }, null, 2) }]
124
+ content: [{ type: "text", text: JSON.stringify(response, null, 2) }]
105
125
  };
106
126
  } finally {
107
127
  registryDb.close();
@@ -168,17 +188,23 @@ async function handleRequest(args, ctx) {
168
188
  const targetAgentId = typeof remoteCard["agent_id"] === "string" ? remoteCard["agent_id"] : void 0;
169
189
  const gatewayUrl = remoteCard["gateway_url"];
170
190
  const timeoutHint = deriveTimeoutHintFromCard(remoteCard, args.skill_id);
191
+ let remoteCost = 0;
192
+ const remoteSkills = remoteCard["skills"];
193
+ if (Array.isArray(remoteSkills)) {
194
+ const matchedSkill = args.skill_id ? remoteSkills.find((s) => s.id === args.skill_id) : remoteSkills[0];
195
+ remoteCost = matchedSkill?.pricing?.credits_per_call ?? 0;
196
+ } else {
197
+ const remotePricing = remoteCard["pricing"];
198
+ remoteCost = remotePricing?.credits_per_call ?? 0;
199
+ }
171
200
  if (gatewayUrl) {
172
- let remoteCost = 0;
173
- const remoteSkills = remoteCard["skills"];
174
- if (Array.isArray(remoteSkills)) {
175
- const matchedSkill = args.skill_id ? remoteSkills.find((s) => s.id === args.skill_id) : remoteSkills[0];
176
- remoteCost = matchedSkill?.pricing?.credits_per_call ?? 0;
177
- } else {
178
- const remotePricing = remoteCard["pricing"];
179
- remoteCost = remotePricing?.credits_per_call ?? 0;
180
- }
181
201
  if (remoteCost > 0) {
202
+ const budgetCheck = checkConsumerBudget(consumerConfig, ctx.consumerSession, remoteCost);
203
+ if (!budgetCheck.allowed) {
204
+ return {
205
+ content: [{ type: "text", text: JSON.stringify({ success: false, error: budgetCheck.error, budget_exceeded: true }) }]
206
+ };
207
+ }
182
208
  if (!targetOwner) {
183
209
  return {
184
210
  content: [{ type: "text", text: JSON.stringify({ success: false, error: "Paid remote request requires a target owner for relay routing" }) }]
@@ -195,8 +221,11 @@ async function handleRequest(args, ctx) {
195
221
  params: { ...args.params ?? {}, ...args.skill_id ? { skill_id: args.skill_id } : {}, requester: ctx.config.owner },
196
222
  timeoutMs: args.timeout_ms
197
223
  });
224
+ recordConsumerSpend(ctx.consumerSession, remoteCost);
225
+ const response = { success: true, result, creditsSpent: remoteCost };
226
+ if (budgetCheck.warning) response.spend_warning = budgetCheck.warning;
198
227
  return {
199
- content: [{ type: "text", text: JSON.stringify({ success: true, result }, null, 2) }]
228
+ content: [{ type: "text", text: JSON.stringify(response, null, 2) }]
200
229
  };
201
230
  } else {
202
231
  const result = await requestCapability({
@@ -214,6 +243,14 @@ async function handleRequest(args, ctx) {
214
243
  }
215
244
  }
216
245
  if (targetOwner) {
246
+ if (remoteCost > 0) {
247
+ const budgetCheck = checkConsumerBudget(consumerConfig, ctx.consumerSession, remoteCost);
248
+ if (!budgetCheck.allowed) {
249
+ return {
250
+ content: [{ type: "text", text: JSON.stringify({ success: false, error: budgetCheck.error, budget_exceeded: true }) }]
251
+ };
252
+ }
253
+ }
217
254
  const result = await requestViaTemporaryRelay({
218
255
  registryUrl: ctx.config.registry,
219
256
  owner: ctx.config.owner,
@@ -225,8 +262,13 @@ async function handleRequest(args, ctx) {
225
262
  params: { ...args.params ?? {}, ...args.skill_id ? { skill_id: args.skill_id } : {} },
226
263
  timeoutMs: args.timeout_ms
227
264
  });
265
+ if (remoteCost > 0) {
266
+ recordConsumerSpend(ctx.consumerSession, remoteCost);
267
+ }
268
+ const response = { success: true, result };
269
+ if (remoteCost > 0) response.creditsSpent = remoteCost;
228
270
  return {
229
- content: [{ type: "text", text: JSON.stringify({ success: true, result }, null, 2) }]
271
+ content: [{ type: "text", text: JSON.stringify(response, null, 2) }]
230
272
  };
231
273
  }
232
274
  return {
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  executeCapabilityRequest
3
- } from "./chunk-53Q2HHHH.js";
4
- import "./chunk-KKFP5Y2Z.js";
5
- import "./chunk-Z7XWQ63B.js";
3
+ } from "./chunk-PFAEZI32.js";
4
+ import "./chunk-OXU4QJSZ.js";
5
+ import "./chunk-2KSRFDKF.js";
6
6
  import "./chunk-AA25Z6FW.js";
7
- import "./chunk-FK54LVDR.js";
8
- import "./chunk-ELFGYC22.js";
9
- import "./chunk-EC6DIVE5.js";
7
+ import "./chunk-FVLHEI3Y.js";
8
+ import "./chunk-CPSV5WR2.js";
10
9
  import {
11
10
  openCreditDb
12
- } from "./chunk-D7NH6YLM.js";
11
+ } from "./chunk-UJXDBOKV.js";
13
12
  import {
14
13
  listCards,
15
14
  openDatabase
16
- } from "./chunk-C56X7EFJ.js";
15
+ } from "./chunk-QE42IJC4.js";
16
+ import "./chunk-4XTYT4JW.js";
17
17
  import "./chunk-GZUTU6IZ.js";
18
18
  import {
19
19
  RelayClient
@@ -23,9 +23,9 @@ import "./chunk-QXRNW4OJ.js";
23
23
  import "./chunk-65GNX2KC.js";
24
24
  import "./chunk-YDGXKH2T.js";
25
25
  import "./chunk-J4RFJVXI.js";
26
- import "./chunk-UVCNMRPS.js";
27
26
  import "./chunk-3XPBFF6H.js";
28
- import "./chunk-4XTYT4JW.js";
27
+ import "./chunk-7YJOBVWN.js";
28
+ import "./chunk-UVCNMRPS.js";
29
29
  import "./chunk-3RG5ZIWI.js";
30
30
 
31
31
  // src/mcp/tools/serve-skill.ts
@@ -67,11 +67,12 @@ async function handleServeSkill(args, ctx) {
67
67
  const result = await executeCapabilityRequest({
68
68
  registryDb,
69
69
  creditDb,
70
- cardId: req.params?.card_id ?? card.id,
71
- skillId: req.params?.skill_id,
72
- params: req.params?.params ?? {},
73
- requester: req.params?.requester ?? "unknown",
74
- handlerUrl
70
+ cardId: req.card_id ?? card.id,
71
+ skillId: req.skill_id,
72
+ params: req.params,
73
+ requester: req.requester ?? req.from_owner ?? "unknown",
74
+ handlerUrl,
75
+ relayAuthorized: true
75
76
  });
76
77
  if (result.success) {
77
78
  return { result: result.result };