agentbnb 9.1.0 → 9.2.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.
Files changed (49) hide show
  1. package/README.md +29 -4
  2. package/dist/{card-VVT3XBOI.js → card-U2HQRPYN.js} +2 -1
  3. package/dist/{card-NQHAGTQQ.js → card-VVXNKHDX.js} +2 -1
  4. package/dist/{chunk-3Y76PHEY.js → chunk-53Q2HHHH.js} +154 -88
  5. package/dist/{chunk-5CC6O6SO.js → chunk-AA25Z6FW.js} +1 -1
  6. package/dist/{chunk-PIO2FMX4.js → chunk-B6AKTLXB.js} +5 -5
  7. package/dist/{chunk-VJ2Q33AP.js → chunk-BPPFY72X.js} +4 -0
  8. package/dist/{chunk-JKD6QRUD.js → chunk-C56X7EFJ.js} +4 -0
  9. package/dist/{chunk-PYZGF5QH.js → chunk-CMGJ52SX.js} +215 -98
  10. package/dist/{chunk-4DBSSFHG.js → chunk-EC6DIVE5.js} +3 -3
  11. package/dist/{chunk-4M6IAIVK.js → chunk-FK54LVDR.js} +2 -2
  12. package/dist/{chunk-JJHQAZWE.js → chunk-GGRH5PCD.js} +10 -10
  13. package/dist/chunk-GZUTU6IZ.js +153 -0
  14. package/dist/{chunk-W6LOCBWQ.js → chunk-IWAK4WHK.js} +1 -1
  15. package/dist/{chunk-ZYOMPJGG.js → chunk-KKFP5Y2Z.js} +2 -2
  16. package/dist/{chunk-XL5XD3IG.js → chunk-MPS4RE7T.js} +7 -7
  17. package/dist/{chunk-DBO2335D.js → chunk-MQIT2F5V.js} +8 -8
  18. package/dist/{chunk-GAZCZCAZ.js → chunk-RNALIVRR.js} +1 -1
  19. package/dist/{chunk-4UIUIHST.js → chunk-UPWAXWY2.js} +1 -1
  20. package/dist/{chunk-UXL7DV7P.js → chunk-V5TJXK3F.js} +3 -3
  21. package/dist/{chunk-AR7Z3EQB.js → chunk-WEZ7PSOE.js} +14 -14
  22. package/dist/{chunk-LENX5NUW.js → chunk-Z7XWQ63B.js} +55 -2
  23. package/dist/cli/index.js +76 -61
  24. package/dist/{client-XOSXFC7Q.js → client-KL67WZVJ.js} +2 -2
  25. package/dist/{conduct-VSSHJHVH.js → conduct-JRLLA4PB.js} +12 -11
  26. package/dist/{conduct-6C6JWZKZ.js → conduct-QLWXU2ZU.js} +12 -11
  27. package/dist/{conductor-mode-KKPSNN7V.js → conductor-mode-66IITI4I.js} +13 -12
  28. package/dist/{conductor-mode-NKHIZG4N.js → conductor-mode-PFO2VLH6.js} +14 -13
  29. package/dist/{credits-action-N3WB4WSI.js → credits-action-XERUEDF3.js} +6 -6
  30. package/dist/{did-action-3PNFYLX2.js → did-action-ODWTBVXL.js} +3 -3
  31. package/dist/{execute-QHP4KUV2.js → execute-NOQVN7ZG.js} +10 -9
  32. package/dist/{execute-IEQ3RV7I.js → execute-YBNCDAOX.js} +8 -7
  33. package/dist/index.js +350 -147
  34. package/dist/{openclaw-setup-PKGFB4IH.js → openclaw-setup-4RIZRMXA.js} +12 -11
  35. package/dist/{openclaw-skills-5VJDA6SX.js → openclaw-skills-TQ2JVBRM.js} +2 -2
  36. package/dist/provider-events-GTTJPYHS.js +13 -0
  37. package/dist/{publish-capability-CHMPZ6W3.js → publish-capability-2FMD3K6Z.js} +3 -2
  38. package/dist/{request-6TBVP3GR.js → request-EYN4CVXC.js} +12 -11
  39. package/dist/{serve-skill-BRUHUDRA.js → serve-skill-NWERGVH5.js} +13 -12
  40. package/dist/{server-N4BJW4TS.js → server-UPOPLZ24.js} +17 -16
  41. package/dist/{service-coordinator-M2CBDEUQ.js → service-coordinator-ZOZTW2U6.js} +419 -58
  42. package/dist/{session-action-67J57636.js → session-action-OSBZB4TX.js} +3 -3
  43. package/dist/signing-AQTKYJDB.js +16 -0
  44. package/dist/skills/agentbnb/bootstrap.js +426 -65
  45. package/dist/{store-A4YPEHDV.js → store-74EWU77V.js} +2 -1
  46. package/dist/{vc-action-TSAIABUM.js → vc-action-A6VBKERF.js} +3 -3
  47. package/package.json +3 -1
  48. package/dist/{chunk-YNBZLXYS.js → chunk-65GNX2KC.js} +0 -0
  49. package/dist/{daemon-OM2K3U7J.js → daemon-ETXXE4IS.js} +1 -1
@@ -6,12 +6,18 @@ import {
6
6
  resolveTargetCapability,
7
7
  searchCards,
8
8
  settleEscrow
9
- } from "./chunk-XL5XD3IG.js";
9
+ } from "./chunk-MPS4RE7T.js";
10
+ import {
11
+ resolveCanonicalIdentity
12
+ } from "./chunk-EE3V3DXK.js";
10
13
  import {
11
14
  requestCapability,
12
15
  requestCapabilityBatch,
13
16
  requestViaRelay
14
- } from "./chunk-W6LOCBWQ.js";
17
+ } from "./chunk-IWAK4WHK.js";
18
+ import {
19
+ AgentBnBError
20
+ } from "./chunk-UVCNMRPS.js";
15
21
  import {
16
22
  RelayClient
17
23
  } from "./chunk-WOVESOQ7.js";
@@ -21,12 +27,6 @@ import {
21
27
  import {
22
28
  findPeer
23
29
  } from "./chunk-HLUEOLSZ.js";
24
- import {
25
- resolveCanonicalIdentity
26
- } from "./chunk-EE3V3DXK.js";
27
- import {
28
- AgentBnBError
29
- } from "./chunk-UVCNMRPS.js";
30
30
 
31
31
  // src/conductor/decomposition-validator.ts
32
32
  function validateAndNormalizeSubtasks(raw, context) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  insertCard
3
- } from "./chunk-JKD6QRUD.js";
3
+ } from "./chunk-C56X7EFJ.js";
4
4
  import {
5
5
  CapabilityCardSchema
6
6
  } from "./chunk-UVCNMRPS.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  searchCards
3
- } from "./chunk-4DBSSFHG.js";
3
+ } from "./chunk-EC6DIVE5.js";
4
4
 
5
5
  // src/registry/pricing.ts
6
6
  function getPricingStats(db, query) {
@@ -3,20 +3,20 @@ import {
3
3
  } from "./chunk-3MJT4PZG.js";
4
4
  import {
5
5
  scorePeers
6
- } from "./chunk-JJHQAZWE.js";
6
+ } from "./chunk-GGRH5PCD.js";
7
7
  import {
8
8
  fetchRemoteCards
9
9
  } from "./chunk-ELFGYC22.js";
10
10
  import {
11
11
  searchCards
12
- } from "./chunk-4DBSSFHG.js";
12
+ } from "./chunk-EC6DIVE5.js";
13
13
  import {
14
14
  loadCoreConfig
15
15
  } from "./chunk-QXRNW4OJ.js";
16
16
  import {
17
17
  requestCapability,
18
18
  requestCapabilityBatch
19
- } from "./chunk-W6LOCBWQ.js";
19
+ } from "./chunk-IWAK4WHK.js";
20
20
 
21
21
  // src/conductor/decomposition-validator.ts
22
22
  function validateAndNormalizeSubtasks(raw, context) {
@@ -3,39 +3,34 @@ import {
3
3
  buildDraftCard,
4
4
  detectApiKeys,
5
5
  detectOpenPorts
6
- } from "./chunk-4UIUIHST.js";
6
+ } from "./chunk-UPWAXWY2.js";
7
+ import {
8
+ createLedger
9
+ } from "./chunk-Z7XWQ63B.js";
10
+ import {
11
+ loadOrRepairIdentity
12
+ } from "./chunk-AA25Z6FW.js";
7
13
  import {
8
14
  parseSoulMd
9
- } from "./chunk-GAZCZCAZ.js";
15
+ } from "./chunk-RNALIVRR.js";
10
16
  import {
11
17
  DEFAULT_BUDGET_CONFIG
12
18
  } from "./chunk-QG2LLVXP.js";
13
19
  import {
14
20
  DEFAULT_AUTONOMY_CONFIG
15
21
  } from "./chunk-G5WKW3ED.js";
16
- import {
17
- createLedger
18
- } from "./chunk-LENX5NUW.js";
19
- import {
20
- loadOrRepairIdentity
21
- } from "./chunk-5CC6O6SO.js";
22
22
  import {
23
23
  bootstrapAgent,
24
24
  getBalance,
25
25
  migrateOwner,
26
26
  openCreditDb
27
27
  } from "./chunk-D7NH6YLM.js";
28
- import {
29
- getConfigDir,
30
- loadConfig,
31
- saveConfig
32
- } from "./chunk-3XPBFF6H.js";
33
28
  import {
34
29
  attachCanonicalAgentId,
35
30
  insertCard,
36
31
  listCards,
37
32
  openDatabase
38
- } from "./chunk-JKD6QRUD.js";
33
+ } from "./chunk-C56X7EFJ.js";
39
34
  import {
40
35
  createAgentRecord,
41
36
  lookupAgent,
@@ -46,6 +41,11 @@ import {
46
41
  AgentBnBError,
47
42
  CapabilityCardV2Schema
48
43
  } from "./chunk-UVCNMRPS.js";
44
+ import {
45
+ getConfigDir,
46
+ loadConfig,
47
+ saveConfig
48
+ } from "./chunk-3XPBFF6H.js";
49
49
 
50
50
  // src/openclaw/soul-sync.ts
51
51
  import { randomUUID } from "crypto";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  deriveAgentId
3
- } from "./chunk-5CC6O6SO.js";
3
+ } from "./chunk-AA25Z6FW.js";
4
4
  import {
5
5
  bootstrapAgent,
6
6
  getBalance,
@@ -14,7 +14,7 @@ import {
14
14
  import {
15
15
  signEscrowReceipt,
16
16
  verifyEscrowReceipt
17
- } from "./chunk-YNBZLXYS.js";
17
+ } from "./chunk-65GNX2KC.js";
18
18
  import {
19
19
  lookupAgent
20
20
  } from "./chunk-J4RFJVXI.js";
@@ -230,6 +230,58 @@ function signRequest(method, path, body, privateKey, publicKeyHex, agentIdOverri
230
230
  "X-Agent-Timestamp": timestamp
231
231
  };
232
232
  }
233
+ async function tryVerifyIdentity(request, options = {}) {
234
+ const agentIdHeader = request.headers["x-agent-id"];
235
+ const publicKeyHeader = request.headers["x-agent-publickey"];
236
+ const signatureHeader = request.headers["x-agent-signature"];
237
+ const timestampHeader = request.headers["x-agent-timestamp"];
238
+ const agentId = agentIdHeader?.trim();
239
+ const publicKeyHex = publicKeyHeader?.trim();
240
+ const signature = signatureHeader?.trim();
241
+ const timestamp = timestampHeader?.trim();
242
+ if (!agentId || !publicKeyHex || !signature || !timestamp) {
243
+ return { valid: false, reason: "missing_headers" };
244
+ }
245
+ const requestTime = new Date(timestamp).getTime();
246
+ if (isNaN(requestTime) || Math.abs(Date.now() - requestTime) > MAX_REQUEST_AGE_MS) {
247
+ return { valid: false, reason: "expired" };
248
+ }
249
+ if (!/^[0-9a-fA-F]+$/.test(publicKeyHex) || publicKeyHex.length % 2 !== 0) {
250
+ return { valid: false, reason: "invalid_key" };
251
+ }
252
+ let expectedAgentId;
253
+ try {
254
+ expectedAgentId = deriveAgentId(publicKeyHex);
255
+ } catch {
256
+ return { valid: false, reason: "invalid_key" };
257
+ }
258
+ if (agentId !== expectedAgentId) {
259
+ return { valid: false, reason: "agent_id_mismatch" };
260
+ }
261
+ let publicKeyBuffer;
262
+ try {
263
+ publicKeyBuffer = Buffer.from(publicKeyHex, "hex");
264
+ } catch {
265
+ return { valid: false, reason: "invalid_key" };
266
+ }
267
+ const knownAgent = options.agentDb ? lookupAgent(options.agentDb, agentId) : null;
268
+ if (knownAgent && knownAgent.public_key.toLowerCase() !== publicKeyHex.toLowerCase()) {
269
+ return { valid: false, reason: "key_drift" };
270
+ }
271
+ const payload = buildIdentityPayload(
272
+ request.method,
273
+ request.url,
274
+ timestamp,
275
+ publicKeyHex,
276
+ agentId,
277
+ request.body
278
+ );
279
+ const valid = verifyEscrowReceipt(payload, signature, publicKeyBuffer);
280
+ if (!valid) {
281
+ return { valid: false, reason: "invalid_signature" };
282
+ }
283
+ return { valid: true, agentId, publicKey: publicKeyHex };
284
+ }
233
285
 
234
286
  // src/credit/registry-credit-ledger.ts
235
287
  var HTTP_TIMEOUT_MS = 1e4;
@@ -453,5 +505,6 @@ function createLedger(opts) {
453
505
 
454
506
  export {
455
507
  identityAuthPlugin,
508
+ tryVerifyIdentity,
456
509
  createLedger
457
510
  };
package/dist/cli/index.js CHANGED
@@ -2,6 +2,9 @@
2
2
  import {
3
3
  discoverLocalAgents
4
4
  } from "../chunk-TA73FIZU.js";
5
+ import {
6
+ syncCreditsFromRegistry
7
+ } from "../chunk-KKFP5Y2Z.js";
5
8
  import {
6
9
  resolveSelfCli
7
10
  } from "../chunk-7S4ZLFVI.js";
@@ -11,17 +14,28 @@ import {
11
14
  injectHeartbeatSection,
12
15
  performInit,
13
16
  publishFromSoulV2
14
- } from "../chunk-AR7Z3EQB.js";
17
+ } from "../chunk-WEZ7PSOE.js";
15
18
  import {
16
19
  getPricingStats
17
- } from "../chunk-4UIUIHST.js";
18
- import "../chunk-GAZCZCAZ.js";
20
+ } from "../chunk-UPWAXWY2.js";
21
+ import {
22
+ createLedger
23
+ } from "../chunk-Z7XWQ63B.js";
24
+ import {
25
+ ensureIdentity
26
+ } from "../chunk-AA25Z6FW.js";
27
+ import "../chunk-RNALIVRR.js";
19
28
  import "../chunk-RJNKX347.js";
20
29
  import {
21
30
  AutoRequestor,
22
31
  requestViaTemporaryRelay
23
- } from "../chunk-JJHQAZWE.js";
32
+ } from "../chunk-GGRH5PCD.js";
24
33
  import "../chunk-5PV5YCSN.js";
34
+ import "../chunk-FK54LVDR.js";
35
+ import {
36
+ fetchRemoteCards,
37
+ mergeResults
38
+ } from "../chunk-ELFGYC22.js";
25
39
  import {
26
40
  BudgetManager,
27
41
  DEFAULT_BUDGET_CONFIG
@@ -29,41 +43,40 @@ import {
29
43
  import {
30
44
  DEFAULT_AUTONOMY_CONFIG
31
45
  } from "../chunk-G5WKW3ED.js";
32
- import {
33
- syncCreditsFromRegistry
34
- } from "../chunk-ZYOMPJGG.js";
35
- import {
36
- createLedger
37
- } from "../chunk-LENX5NUW.js";
38
- import {
39
- ensureIdentity
40
- } from "../chunk-5CC6O6SO.js";
41
- import "../chunk-4M6IAIVK.js";
42
- import {
43
- fetchRemoteCards,
44
- mergeResults
45
- } from "../chunk-ELFGYC22.js";
46
46
  import {
47
47
  filterCards,
48
48
  searchCards
49
- } from "../chunk-4DBSSFHG.js";
49
+ } from "../chunk-EC6DIVE5.js";
50
50
  import {
51
51
  getBalance,
52
52
  getTransactions,
53
53
  openCreditDb
54
54
  } from "../chunk-D7NH6YLM.js";
55
+ import {
56
+ attachCanonicalAgentId,
57
+ deleteCard,
58
+ getCard,
59
+ insertCard,
60
+ listCards,
61
+ openDatabase
62
+ } from "../chunk-C56X7EFJ.js";
63
+ import "../chunk-GZUTU6IZ.js";
55
64
  import "../chunk-UPNREF4L.js";
56
65
  import "../chunk-Q5OFZ2JR.js";
57
66
  import "../chunk-QXRNW4OJ.js";
58
67
  import {
59
68
  requestCapability
60
- } from "../chunk-W6LOCBWQ.js";
69
+ } from "../chunk-IWAK4WHK.js";
61
70
  import {
62
71
  generateKeyPair,
63
72
  loadKeyPair,
64
73
  saveKeyPair
65
- } from "../chunk-YNBZLXYS.js";
74
+ } from "../chunk-65GNX2KC.js";
66
75
  import "../chunk-YDGXKH2T.js";
76
+ import "../chunk-J4RFJVXI.js";
77
+ import {
78
+ AnyCardSchema
79
+ } from "../chunk-UVCNMRPS.js";
67
80
  import {
68
81
  findPeer,
69
82
  loadPeers,
@@ -75,18 +88,6 @@ import {
75
88
  loadConfig,
76
89
  saveConfig
77
90
  } from "../chunk-3XPBFF6H.js";
78
- import {
79
- attachCanonicalAgentId,
80
- deleteCard,
81
- getCard,
82
- insertCard,
83
- listCards,
84
- openDatabase
85
- } from "../chunk-JKD6QRUD.js";
86
- import "../chunk-J4RFJVXI.js";
87
- import {
88
- AnyCardSchema
89
- } from "../chunk-UVCNMRPS.js";
90
91
  import "../chunk-4XTYT4JW.js";
91
92
  import "../chunk-3RG5ZIWI.js";
92
93
 
@@ -240,7 +241,7 @@ Skills: ${skills2.skillCount} skill(s) in ${skills2.path}`);
240
241
  if (!skipServe) {
241
242
  try {
242
243
  const { ProcessGuard } = await import("../process-guard-6324CZDC.js");
243
- const { ServiceCoordinator } = await import("../service-coordinator-M2CBDEUQ.js");
244
+ const { ServiceCoordinator } = await import("../service-coordinator-ZOZTW2U6.js");
244
245
  const guard = new ProcessGuard(join(initResult.configDir, ".pid"));
245
246
  const coordinator = new ServiceCoordinator(initResult.config, guard);
246
247
  const result = await coordinator.ensureRunning({
@@ -302,7 +303,7 @@ Skills: ${skills2.skillCount} skill(s) in ${skills2.path}`);
302
303
  }
303
304
 
304
305
  // src/cli/index.ts
305
- var VERSION = true ? "9.1.0" : "0.0.0-dev";
306
+ var VERSION = true ? "9.2.0" : "0.0.0-dev";
306
307
  function loadIdentityAuth(owner) {
307
308
  const configDir = getConfigDir();
308
309
  let keys;
@@ -516,7 +517,7 @@ program.command("publish-skills").description("Publish capabilities from skills.
516
517
  process.exit(1);
517
518
  }
518
519
  const { parseSkillsFile } = await import("../skill-config-VYNF7BCY.js");
519
- const { skillConfigToSkill } = await import("../publish-capability-CHMPZ6W3.js");
520
+ const { skillConfigToSkill } = await import("../publish-capability-2FMD3K6Z.js");
520
521
  const skillsPath = typeof opts.fromSkills === "string" ? opts.fromSkills : "./skills.yaml";
521
522
  let yamlContent;
522
523
  try {
@@ -1121,7 +1122,7 @@ Active Escrows (${heldEscrows.length}):`);
1121
1122
  });
1122
1123
  program.command("serve").description("Start the AgentBnB gateway server").option("--port <port>", "Port to listen on (overrides config)").option("--handler-url <url>", "Local capability handler URL", "http://localhost:8080").option("--skills-yaml <path>", "Path to skills.yaml (default: ~/.agentbnb/skills.yaml)").option("--registry-port <port>", "Public registry API port (0 to disable)", "7701").option("--registry <url>", "Connect to remote registry via WebSocket relay (e.g., hub.agentbnb.dev)").option("--conductor", "Enable Conductor orchestration mode").option("--announce", "Announce this gateway on the local network via mDNS").option("--no-relay", "Do not auto-connect to remote registry relay").option("--daemon", "Run in background as daemon").option("--status", "Show daemon status").option("--stop", "Stop the daemon").option("--restart", "Restart the daemon").option("--startup", "Register for auto-start on boot").action(async (opts) => {
1123
1124
  if (opts.status || opts.stop || opts.restart || opts.daemon || opts.startup) {
1124
- const { startDaemon, stopDaemon, restartDaemon, daemonStatus, registerStartup } = await import("../daemon-OM2K3U7J.js");
1125
+ const { startDaemon, stopDaemon, restartDaemon, daemonStatus, registerStartup } = await import("../daemon-ETXXE4IS.js");
1125
1126
  if (opts.status) {
1126
1127
  daemonStatus();
1127
1128
  return;
@@ -1158,7 +1159,7 @@ program.command("serve").description("Start the AgentBnB gateway server").option
1158
1159
  process.exit(1);
1159
1160
  }
1160
1161
  const { ProcessGuard } = await import("../process-guard-6324CZDC.js");
1161
- const { ServiceCoordinator } = await import("../service-coordinator-M2CBDEUQ.js");
1162
+ const { ServiceCoordinator } = await import("../service-coordinator-ZOZTW2U6.js");
1162
1163
  const port = opts.port ? parseInt(opts.port, 10) : config.gateway_port;
1163
1164
  const registryPort = parseInt(opts.registryPort, 10);
1164
1165
  if (!Number.isFinite(port) || !Number.isFinite(registryPort)) {
@@ -1228,7 +1229,7 @@ peersCommand.command("remove <name>").description("Remove a registered peer").ac
1228
1229
  });
1229
1230
  var configCmd = program.command("config").description("Get or set AgentBnB configuration values");
1230
1231
  configCmd.command("set <key> <value>").description("Set a configuration value").action((key, value) => {
1231
- const allowedKeys = ["registry", "tier1", "tier2", "reserve", "idle-threshold", "conductor-public", "telegram-notifications", "telegram-bot-token", "telegram-chat-id", "shared-skills", "provider-gate", "provider-accepting", "provider-daily-limit", "provider-whitelist", "provider-blacklist"];
1232
+ const allowedKeys = ["registry", "tier1", "tier2", "reserve", "idle-threshold", "conductor-public", "telegram-notifications", "telegram-bot-token", "telegram-chat-id", "shared-skills", "provider-gate", "provider-accepting", "provider-daily-limit", "provider-whitelist", "provider-blacklist", "notification-filters"];
1232
1233
  if (!allowedKeys.includes(key)) {
1233
1234
  console.error(`Unknown config key: ${key}. Valid keys: ${allowedKeys.join(", ")}`);
1234
1235
  process.exit(1);
@@ -1378,6 +1379,13 @@ configCmd.command("set <key> <value>").description("Set a configuration value").
1378
1379
  console.log(`Set provider-blacklist: ${display}`);
1379
1380
  return;
1380
1381
  }
1382
+ if (key === "notification-filters") {
1383
+ config.notification_filters = value.trim() === "" ? [] : value.split(",").map((s) => s.trim()).filter(Boolean);
1384
+ saveConfig(config);
1385
+ const display = config.notification_filters.length > 0 ? config.notification_filters.join(", ") : "(none \u2014 all events notified)";
1386
+ console.log(`Set notification-filters: ${display}`);
1387
+ return;
1388
+ }
1381
1389
  config[key] = value;
1382
1390
  saveConfig(config);
1383
1391
  console.log(`Set ${key} = ${value}`);
@@ -1510,7 +1518,14 @@ openclaw.command("sync").description("Read SOUL.md and publish/update a v2.0 cap
1510
1518
  resolvedSoulPath = opts.soulPath;
1511
1519
  } else {
1512
1520
  const { findSoulMd, getOpenClawWorkspaceDir } = await import("../scanner-EFU6NBEJ.js");
1513
- const found = findSoulMd(config.owner);
1521
+ const { basename: baseName, dirname: dirName } = await import("path");
1522
+ const agentbnbDir = process.env["AGENTBNB_DIR"];
1523
+ let derivedAgentName = null;
1524
+ if (agentbnbDir && agentbnbDir.includes(".openclaw/agents/")) {
1525
+ derivedAgentName = baseName(dirName(agentbnbDir));
1526
+ }
1527
+ const searchName = derivedAgentName ?? config.owner;
1528
+ const found = findSoulMd(searchName) ?? (searchName !== config.owner ? findSoulMd(config.owner) : null);
1514
1529
  if (found) {
1515
1530
  resolvedSoulPath = found;
1516
1531
  } else if (existsSync2("./SOUL.md")) {
@@ -1519,10 +1534,10 @@ openclaw.command("sync").description("Read SOUL.md and publish/update a v2.0 cap
1519
1534
  const { homedir: homedir2 } = await import("os");
1520
1535
  const home = homedir2();
1521
1536
  const workspaceDir = getOpenClawWorkspaceDir();
1522
- console.error(`No SOUL.md found for agent "${config.owner}".`);
1537
+ console.error(`No SOUL.md found for agent "${searchName}".`);
1523
1538
  console.error("Searched:");
1524
- console.error(` - ${join2(workspaceDir, "brains", config.owner, "SOUL.md")}`);
1525
- console.error(` - ${join2(home, ".openclaw", "agents", config.owner, "SOUL.md")}`);
1539
+ console.error(` - ${join2(workspaceDir, "brains", searchName, "SOUL.md")}`);
1540
+ console.error(` - ${join2(home, ".openclaw", "agents", searchName, "SOUL.md")}`);
1526
1541
  console.error(` - ${join2(workspaceDir, "SOUL.md")}`);
1527
1542
  console.error(` - ./SOUL.md`);
1528
1543
  console.error("");
@@ -1604,34 +1619,34 @@ openclaw.command("rules").description("Print HEARTBEAT.md rules block (or inject
1604
1619
  }
1605
1620
  });
1606
1621
  openclaw.command("setup").description("Interactive onboarding: connect an OpenClaw agent to AgentBnB").option("--agent <name>", "Agent name to set up (skip interactive selection)").option("--soul-path <path>", "Override SOUL.md path").option("-y, --yes", "Skip confirmation prompts").action(async (opts) => {
1607
- const { runOpenClawSetup } = await import("../openclaw-setup-PKGFB4IH.js");
1622
+ const { runOpenClawSetup } = await import("../openclaw-setup-4RIZRMXA.js");
1608
1623
  await runOpenClawSetup(opts);
1609
1624
  });
1610
1625
  var skills = openclaw.command("skills").description("Manage shared skills on AgentBnB");
1611
1626
  skills.command("list").description("List all shared skills with stats").action(async () => {
1612
- const { skillsList } = await import("../openclaw-skills-5VJDA6SX.js");
1627
+ const { skillsList } = await import("../openclaw-skills-TQ2JVBRM.js");
1613
1628
  await skillsList({});
1614
1629
  });
1615
1630
  skills.command("add").description("Add a skill to share (interactive or --manual)").option("--manual", "Non-interactive: use flags instead of prompts").option("--name <id>", "Skill ID").option("--type <type>", "Skill type (command|openclaw)").option("--price <n>", "Credits per call", parseFloat).option("--description <text>", "Skill description").action(
1616
1631
  async (opts) => {
1617
- const { skillsAdd } = await import("../openclaw-skills-5VJDA6SX.js");
1632
+ const { skillsAdd } = await import("../openclaw-skills-TQ2JVBRM.js");
1618
1633
  await skillsAdd(opts);
1619
1634
  }
1620
1635
  );
1621
1636
  skills.command("remove <skillId>").description("Remove a skill from AgentBnB").action(async (skillId) => {
1622
- const { skillsRemove } = await import("../openclaw-skills-5VJDA6SX.js");
1637
+ const { skillsRemove } = await import("../openclaw-skills-TQ2JVBRM.js");
1623
1638
  await skillsRemove(skillId);
1624
1639
  });
1625
1640
  skills.command("price <skillId> <price>").description("Update skill price").action(async (skillId, price) => {
1626
- const { skillsPrice } = await import("../openclaw-skills-5VJDA6SX.js");
1641
+ const { skillsPrice } = await import("../openclaw-skills-TQ2JVBRM.js");
1627
1642
  await skillsPrice(skillId, parseFloat(price));
1628
1643
  });
1629
1644
  skills.command("stats").description("Revenue and performance report").option("--days <n>", "Days to look back", parseInt, 7).action(async (opts) => {
1630
- const { skillsStats } = await import("../openclaw-skills-5VJDA6SX.js");
1645
+ const { skillsStats } = await import("../openclaw-skills-TQ2JVBRM.js");
1631
1646
  await skillsStats(opts);
1632
1647
  });
1633
1648
  program.command("conduct <task>").description("Orchestrate a complex task across the AgentBnB network").option("--plan-only", "Show execution plan without executing").option("--max-budget <credits>", "Maximum credits to spend", "100").option("--json", "Output as JSON").action(async (task, opts) => {
1634
- const { conductAction } = await import("../conduct-VSSHJHVH.js");
1649
+ const { conductAction } = await import("../conduct-JRLLA4PB.js");
1635
1650
  const result = await conductAction(task, opts);
1636
1651
  if (opts.json) {
1637
1652
  console.log(JSON.stringify(result, null, 2));
@@ -1749,7 +1764,7 @@ skill.command("wrap").description("Wrap a CLI command as a rentable AgentBnB ski
1749
1764
  });
1750
1765
  var did = program.command("did").description("Decentralized Identity commands");
1751
1766
  did.command("show").description("Display local agent DID identifiers").option("--json", "Output as JSON").action(async (opts) => {
1752
- const { didShow, didShowJson } = await import("../did-action-3PNFYLX2.js");
1767
+ const { didShow, didShowJson } = await import("../did-action-ODWTBVXL.js");
1753
1768
  if (opts.json) {
1754
1769
  await didShowJson();
1755
1770
  } else {
@@ -1758,45 +1773,45 @@ did.command("show").description("Display local agent DID identifiers").option("-
1758
1773
  });
1759
1774
  var vc = program.command("vc").description("Verifiable Credentials commands");
1760
1775
  vc.command("show").description("Display Verifiable Credentials for this agent").option("--json", "Output as JSON").action(async (opts) => {
1761
- const { vcShow } = await import("../vc-action-TSAIABUM.js");
1776
+ const { vcShow } = await import("../vc-action-A6VBKERF.js");
1762
1777
  await vcShow(opts);
1763
1778
  });
1764
1779
  var credits = program.command("credits").description("Credit balance and transaction management");
1765
1780
  credits.command("sync").description("Sync local credit balance from remote registry").action(async () => {
1766
- const { creditsSync } = await import("../credits-action-N3WB4WSI.js");
1781
+ const { creditsSync } = await import("../credits-action-XERUEDF3.js");
1767
1782
  await creditsSync();
1768
1783
  });
1769
1784
  credits.command("history").description("Show recent credit transactions").option("--limit <n>", "Number of transactions to show", "20").option("--json", "Output as JSON").action(async (opts) => {
1770
- const { creditsHistory } = await import("../credits-action-N3WB4WSI.js");
1785
+ const { creditsHistory } = await import("../credits-action-XERUEDF3.js");
1771
1786
  await creditsHistory(opts);
1772
1787
  });
1773
1788
  credits.command("grant <agent_id> <amount>").description("Admin: grant credits to an agent (requires ADMIN_TOKEN)").action(async (agentId, amount) => {
1774
- const { creditsGrant } = await import("../credits-action-N3WB4WSI.js");
1789
+ const { creditsGrant } = await import("../credits-action-XERUEDF3.js");
1775
1790
  await creditsGrant(agentId, amount);
1776
1791
  });
1777
1792
  var sessionCmd = program.command("session").description("Manage interactive agent-to-agent sessions");
1778
1793
  sessionCmd.command("open <card_id>").description("Open an interactive session with a provider agent").requiredOption("--skill <skill_id>", "Skill ID to use").requiredOption("--budget <credits>", "Maximum credits for this session", parseInt).requiredOption("--message <msg>", "Initial message to send").option("--pricing <model>", "Pricing model: per_message, per_minute, per_session", "per_message").action(async (cardId, opts) => {
1779
- const { sessionOpen } = await import("../session-action-67J57636.js");
1794
+ const { sessionOpen } = await import("../session-action-OSBZB4TX.js");
1780
1795
  await sessionOpen(cardId, opts);
1781
1796
  });
1782
1797
  sessionCmd.command("send <session_id> <message>").description("Send a message within an active session").action(async (sessionId, message) => {
1783
- const { sessionSend } = await import("../session-action-67J57636.js");
1798
+ const { sessionSend } = await import("../session-action-OSBZB4TX.js");
1784
1799
  await sessionSend(sessionId, message);
1785
1800
  });
1786
1801
  sessionCmd.command("end <session_id>").description("End an active session").option("--reason <reason>", "End reason: completed, cancelled", "completed").action(async (sessionId, opts) => {
1787
- const { sessionEnd } = await import("../session-action-67J57636.js");
1802
+ const { sessionEnd } = await import("../session-action-OSBZB4TX.js");
1788
1803
  await sessionEnd(sessionId, opts.reason);
1789
1804
  });
1790
1805
  sessionCmd.command("list").description("List active sessions").action(async () => {
1791
- const { sessionList } = await import("../session-action-67J57636.js");
1806
+ const { sessionList } = await import("../session-action-OSBZB4TX.js");
1792
1807
  await sessionList();
1793
1808
  });
1794
1809
  sessionCmd.command("status <session_id>").description("Show session details").action(async (sessionId) => {
1795
- const { sessionStatus } = await import("../session-action-67J57636.js");
1810
+ const { sessionStatus } = await import("../session-action-OSBZB4TX.js");
1796
1811
  await sessionStatus(sessionId);
1797
1812
  });
1798
1813
  program.command("mcp-server").description("Start an MCP (Model Context Protocol) server for IDE integration").action(async () => {
1799
- const { startMcpServer } = await import("../server-N4BJW4TS.js");
1814
+ const { startMcpServer } = await import("../server-UPOPLZ24.js");
1800
1815
  await startMcpServer();
1801
1816
  });
1802
1817
  await program.parseAsync(process.argv);
@@ -6,8 +6,8 @@ import {
6
6
  requestCapability,
7
7
  requestCapabilityBatch,
8
8
  requestViaRelay
9
- } from "./chunk-W6LOCBWQ.js";
10
- import "./chunk-YNBZLXYS.js";
9
+ } from "./chunk-IWAK4WHK.js";
10
+ import "./chunk-65GNX2KC.js";
11
11
  import "./chunk-UVCNMRPS.js";
12
12
  import "./chunk-3RG5ZIWI.js";
13
13
  export {
@@ -1,27 +1,28 @@
1
1
  import {
2
2
  conductAction
3
- } from "./chunk-PIO2FMX4.js";
4
- import "./chunk-UXL7DV7P.js";
3
+ } from "./chunk-B6AKTLXB.js";
4
+ import "./chunk-V5TJXK3F.js";
5
5
  import "./chunk-3MJT4PZG.js";
6
- import "./chunk-JJHQAZWE.js";
6
+ import "./chunk-GGRH5PCD.js";
7
7
  import "./chunk-5PV5YCSN.js";
8
+ import "./chunk-FK54LVDR.js";
9
+ import "./chunk-ELFGYC22.js";
8
10
  import "./chunk-QG2LLVXP.js";
9
11
  import "./chunk-G5WKW3ED.js";
10
- import "./chunk-4M6IAIVK.js";
11
- import "./chunk-ELFGYC22.js";
12
- import "./chunk-4DBSSFHG.js";
12
+ import "./chunk-EC6DIVE5.js";
13
13
  import "./chunk-D7NH6YLM.js";
14
+ import "./chunk-C56X7EFJ.js";
15
+ import "./chunk-GZUTU6IZ.js";
14
16
  import "./chunk-UPNREF4L.js";
15
17
  import "./chunk-Q5OFZ2JR.js";
16
18
  import "./chunk-QXRNW4OJ.js";
17
- import "./chunk-W6LOCBWQ.js";
18
- import "./chunk-YNBZLXYS.js";
19
+ import "./chunk-IWAK4WHK.js";
20
+ import "./chunk-65GNX2KC.js";
19
21
  import "./chunk-YDGXKH2T.js";
20
- import "./chunk-3YQ73ZM6.js";
21
- import "./chunk-3XPBFF6H.js";
22
- import "./chunk-JKD6QRUD.js";
23
22
  import "./chunk-J4RFJVXI.js";
24
23
  import "./chunk-UVCNMRPS.js";
24
+ import "./chunk-3YQ73ZM6.js";
25
+ import "./chunk-3XPBFF6H.js";
25
26
  import "./chunk-4XTYT4JW.js";
26
27
  import "./chunk-3RG5ZIWI.js";
27
28
  export {
@@ -1,27 +1,28 @@
1
1
  import {
2
2
  conductAction
3
- } from "./chunk-PIO2FMX4.js";
4
- import "./chunk-UXL7DV7P.js";
3
+ } from "./chunk-B6AKTLXB.js";
4
+ import "./chunk-V5TJXK3F.js";
5
5
  import "./chunk-3MJT4PZG.js";
6
- import "./chunk-JJHQAZWE.js";
6
+ import "./chunk-GGRH5PCD.js";
7
7
  import "./chunk-5PV5YCSN.js";
8
+ import "./chunk-FK54LVDR.js";
9
+ import "./chunk-ELFGYC22.js";
8
10
  import "./chunk-QG2LLVXP.js";
9
11
  import "./chunk-G5WKW3ED.js";
10
- import "./chunk-4M6IAIVK.js";
11
- import "./chunk-ELFGYC22.js";
12
- import "./chunk-4DBSSFHG.js";
12
+ import "./chunk-EC6DIVE5.js";
13
13
  import "./chunk-D7NH6YLM.js";
14
+ import "./chunk-C56X7EFJ.js";
15
+ import "./chunk-GZUTU6IZ.js";
14
16
  import "./chunk-UPNREF4L.js";
15
17
  import "./chunk-Q5OFZ2JR.js";
16
18
  import "./chunk-QXRNW4OJ.js";
17
- import "./chunk-W6LOCBWQ.js";
18
- import "./chunk-YNBZLXYS.js";
19
+ import "./chunk-IWAK4WHK.js";
20
+ import "./chunk-65GNX2KC.js";
19
21
  import "./chunk-YDGXKH2T.js";
20
- import "./chunk-3YQ73ZM6.js";
21
- import "./chunk-3XPBFF6H.js";
22
- import "./chunk-JKD6QRUD.js";
23
22
  import "./chunk-J4RFJVXI.js";
24
23
  import "./chunk-UVCNMRPS.js";
24
+ import "./chunk-3YQ73ZM6.js";
25
+ import "./chunk-3XPBFF6H.js";
25
26
  import "./chunk-4XTYT4JW.js";
26
27
  import "./chunk-3RG5ZIWI.js";
27
28