agentbnb 8.4.7 → 9.0.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 (63) hide show
  1. package/README.md +60 -17
  2. package/dist/{card-BN643ZOY.js → card-6KL6L4GF.js} +2 -2
  3. package/dist/{card-HYTD2BJQ.js → card-NKQFB3HD.js} +3 -3
  4. package/dist/{chunk-UNXCKETK.js → chunk-27VHBFUP.js} +11 -9
  5. package/dist/{chunk-CFHCG5FE.js → chunk-2GWOFP24.js} +1 -1
  6. package/dist/{chunk-PQIP7EXY.js → chunk-3466S65P.js} +6 -2
  7. package/dist/{chunk-SME5LJTE.js → chunk-4FK45WJI.js} +4 -4
  8. package/dist/chunk-5CC6O6SO.js +152 -0
  9. package/dist/{chunk-MZSVVG55.js → chunk-5PV5YCSN.js} +1 -1
  10. package/dist/{chunk-5SIGMKOD.js → chunk-77HAL2ZL.js} +14 -5
  11. package/dist/{chunk-EKLVNIIY.js → chunk-AZEGOADG.js} +5 -5
  12. package/dist/{chunk-NQANA6WH.js → chunk-BNS76U6K.js} +2 -2
  13. package/dist/{chunk-JDAFLPR7.js → chunk-BOBND3QV.js} +5 -5
  14. package/dist/{chunk-VRPLSK34.js → chunk-D4IJQ3TK.js} +1 -1
  15. package/dist/{chunk-4NFJ3VYZ.js → chunk-DYJ7YGBM.js} +6 -2
  16. package/dist/{chunk-PIPCGRCR.js → chunk-ELFGYC22.js} +1 -1
  17. package/dist/{chunk-WTHMHNKC.js → chunk-J4RFJVXI.js} +1 -1
  18. package/dist/{chunk-IMLFBU3H.js → chunk-LLL3KYEM.js} +8 -8
  19. package/dist/{chunk-VAAEBCMU.js → chunk-N3TXLBGK.js} +2 -2
  20. package/dist/{chunk-COA2D7QM.js → chunk-NLQCHO7N.js} +2 -2
  21. package/dist/{chunk-WK2QSO4E.js → chunk-NZTLBAML.js} +7 -141
  22. package/dist/{chunk-HU46M4JA.js → chunk-P3FDT7G5.js} +4 -4
  23. package/dist/{chunk-ZU2TP7CN.js → chunk-PG3CLSAH.js} +1 -1
  24. package/dist/chunk-PMVHKTFG.js +199 -0
  25. package/dist/{chunk-OPRCWXD5.js → chunk-SLZBE2I5.js} +198 -5
  26. package/dist/{chunk-AZKVGC5T.js → chunk-TLT6F35V.js} +1 -1
  27. package/dist/{chunk-2PP5MQPD.js → chunk-UIPGGNRC.js} +4 -4
  28. package/dist/{chunk-NX27AFPA.js → chunk-UR3MISL2.js} +1 -1
  29. package/dist/{chunk-I7KWA7OB.js → chunk-UVCNMRPS.js} +4 -0
  30. package/dist/{chunk-RF4A5X5U.js → chunk-W5J3PEQ6.js} +6 -4
  31. package/dist/{chunk-YKMBFQC2.js → chunk-W6LOCBWQ.js} +2 -2
  32. package/dist/{chunk-U6LP4KWN.js → chunk-YDGXKH2T.js} +1 -1
  33. package/dist/{chunk-GIEJVKZZ.js → chunk-YNBZLXYS.js} +1 -1
  34. package/dist/cli/index.js +75 -61
  35. package/dist/{client-UQBGCIPA.js → client-YB3IYO3S.js} +3 -3
  36. package/dist/conduct-4NPMP4GL.js +25 -0
  37. package/dist/{conduct-TE4YAXKR.js → conduct-5FTKINWU.js} +16 -16
  38. package/dist/{conductor-mode-2F5OP7Q4.js → conductor-mode-NRSVP2AU.js} +157 -7
  39. package/dist/{conductor-mode-TLIQMU4A.js → conductor-mode-ZWC5BZUL.js} +167 -15
  40. package/dist/did-action-MQLDT4RF.js +50 -0
  41. package/dist/{execute-VRTABQ6F.js → execute-DNRNU3HM.js} +5 -5
  42. package/dist/execute-JTPFFEH6.js +20 -0
  43. package/dist/index.d.ts +34 -0
  44. package/dist/index.js +405 -32
  45. package/dist/{openclaw-setup-5ZWWRVF3.js → openclaw-setup-HVEVSKXQ.js} +14 -13
  46. package/dist/{openclaw-skills-6ZWQJ5V6.js → openclaw-skills-QLC4D6DZ.js} +12 -2
  47. package/dist/{process-guard-TNSUNHSR.js → process-guard-QDBIOLY4.js} +1 -1
  48. package/dist/{publish-capability-GNH5FHKG.js → publish-capability-FOCHYNYE.js} +4 -4
  49. package/dist/{reliability-metrics-G7LPUYJD.js → reliability-metrics-JSOY3PNW.js} +1 -1
  50. package/dist/{reliability-metrics-RRUKJ4ME.js → reliability-metrics-KKUFFVB6.js} +3 -3
  51. package/dist/{request-XWEOIVB3.js → request-WX3VLXBT.js} +14 -14
  52. package/dist/{serve-skill-UD7TLSRN.js → serve-skill-C7JU24CF.js} +14 -13
  53. package/dist/{server-XWTGBJHV.js → server-Z6P3AHKN.js} +15 -13
  54. package/dist/{service-coordinator-RN7GOLLC.js → service-coordinator-PLUPMPSC.js} +181 -27
  55. package/dist/skills/agentbnb/bootstrap.js +170 -20
  56. package/dist/{store-4Z446745.js → store-S22F3I7G.js} +3 -3
  57. package/dist/vc-action-SUD7TMN2.js +75 -0
  58. package/dist/websocket-client-5CRE36Z5.js +7 -0
  59. package/dist/{websocket-client-SNDF3B6N.js → websocket-client-WHEHIYIZ.js} +1 -1
  60. package/package.json +1 -1
  61. package/dist/conduct-2RD45QKB.js +0 -25
  62. package/dist/execute-6EJSVBFB.js +0 -19
  63. package/dist/websocket-client-3U27WJUU.js +0 -7
@@ -2,10 +2,10 @@ import {
2
2
  requestCapability,
3
3
  requestCapabilityBatch,
4
4
  requestViaRelay
5
- } from "./chunk-YKMBFQC2.js";
5
+ } from "./chunk-W6LOCBWQ.js";
6
6
  import {
7
7
  RelayClient
8
- } from "./chunk-4NFJ3VYZ.js";
8
+ } from "./chunk-DYJ7YGBM.js";
9
9
  import {
10
10
  findPeer
11
11
  } from "./chunk-HLUEOLSZ.js";
@@ -17,13 +17,13 @@ import {
17
17
  resolveTargetCapability,
18
18
  searchCards,
19
19
  settleEscrow
20
- } from "./chunk-NQANA6WH.js";
20
+ } from "./chunk-BNS76U6K.js";
21
21
  import {
22
22
  resolveCanonicalIdentity
23
23
  } from "./chunk-EE3V3DXK.js";
24
24
  import {
25
25
  AgentBnBError
26
- } from "./chunk-I7KWA7OB.js";
26
+ } from "./chunk-UVCNMRPS.js";
27
27
 
28
28
  // src/conductor/decomposition-validator.ts
29
29
  function validateAndNormalizeSubtasks(raw, context) {
@@ -1281,6 +1281,196 @@ async function orchestrate(opts) {
1281
1281
  };
1282
1282
  }
1283
1283
 
1284
+ // src/auth/ucan.ts
1285
+ import { randomUUID as randomUUID5 } from "crypto";
1286
+ import { sign, verify, createPrivateKey, createPublicKey } from "crypto";
1287
+
1288
+ // src/auth/canonical-json.ts
1289
+ function escapeString(s) {
1290
+ let result = '"';
1291
+ for (let i = 0; i < s.length; i++) {
1292
+ const ch = s.charCodeAt(i);
1293
+ if (ch === 8) {
1294
+ result += "\\b";
1295
+ } else if (ch === 9) {
1296
+ result += "\\t";
1297
+ } else if (ch === 10) {
1298
+ result += "\\n";
1299
+ } else if (ch === 12) {
1300
+ result += "\\f";
1301
+ } else if (ch === 13) {
1302
+ result += "\\r";
1303
+ } else if (ch === 34) {
1304
+ result += '\\"';
1305
+ } else if (ch === 92) {
1306
+ result += "\\\\";
1307
+ } else if (ch < 32) {
1308
+ result += "\\u" + ch.toString(16).padStart(4, "0");
1309
+ } else {
1310
+ result += s[i];
1311
+ }
1312
+ }
1313
+ result += '"';
1314
+ return result;
1315
+ }
1316
+ function serializeNumber(n) {
1317
+ if (!Number.isFinite(n)) {
1318
+ throw new AgentBnBError(
1319
+ `Cannot canonicalize non-finite number: ${String(n)}`,
1320
+ "CANONICAL_JSON_ERROR"
1321
+ );
1322
+ }
1323
+ if (Object.is(n, -0)) {
1324
+ return "0";
1325
+ }
1326
+ return JSON.stringify(n);
1327
+ }
1328
+ function canonicalize(value) {
1329
+ return serializeValue(value);
1330
+ }
1331
+ function serializeValue(value) {
1332
+ if (value === null) {
1333
+ return "null";
1334
+ }
1335
+ switch (typeof value) {
1336
+ case "boolean":
1337
+ return value ? "true" : "false";
1338
+ case "number":
1339
+ return serializeNumber(value);
1340
+ case "string":
1341
+ return escapeString(value);
1342
+ case "bigint":
1343
+ throw new AgentBnBError(
1344
+ "Cannot canonicalize BigInt values",
1345
+ "CANONICAL_JSON_ERROR"
1346
+ );
1347
+ case "symbol":
1348
+ throw new AgentBnBError(
1349
+ "Cannot canonicalize Symbol values",
1350
+ "CANONICAL_JSON_ERROR"
1351
+ );
1352
+ case "function":
1353
+ throw new AgentBnBError(
1354
+ "Cannot canonicalize function values",
1355
+ "CANONICAL_JSON_ERROR"
1356
+ );
1357
+ case "undefined":
1358
+ throw new AgentBnBError(
1359
+ "Cannot canonicalize undefined at top level",
1360
+ "CANONICAL_JSON_ERROR"
1361
+ );
1362
+ case "object": {
1363
+ if (Array.isArray(value)) {
1364
+ return serializeArray(value);
1365
+ }
1366
+ return serializeObject(value);
1367
+ }
1368
+ default:
1369
+ throw new AgentBnBError(
1370
+ `Cannot canonicalize unknown type: ${typeof value}`,
1371
+ "CANONICAL_JSON_ERROR"
1372
+ );
1373
+ }
1374
+ }
1375
+ function serializeArray(arr) {
1376
+ const elements = arr.map((item) => serializeValue(item));
1377
+ return "[" + elements.join(",") + "]";
1378
+ }
1379
+ function serializeObject(obj) {
1380
+ const keys = Object.keys(obj).sort();
1381
+ const entries = [];
1382
+ for (const key of keys) {
1383
+ const val = obj[key];
1384
+ if (val === void 0) {
1385
+ continue;
1386
+ }
1387
+ entries.push(escapeString(key) + ":" + serializeValue(val));
1388
+ }
1389
+ return "{" + entries.join(",") + "}";
1390
+ }
1391
+
1392
+ // src/auth/ucan.ts
1393
+ var UCAN_HEADER = {
1394
+ alg: "EdDSA",
1395
+ typ: "JWT",
1396
+ ucv: "0.10.0"
1397
+ };
1398
+ function toBase64Url(data) {
1399
+ const buf = typeof data === "string" ? Buffer.from(data, "utf-8") : data;
1400
+ return buf.toString("base64url");
1401
+ }
1402
+ function fromBase64Url(encoded) {
1403
+ return Buffer.from(encoded, "base64url").toString("utf-8");
1404
+ }
1405
+ function createUCAN(opts) {
1406
+ const payload = {
1407
+ iss: opts.issuerDid,
1408
+ aud: opts.audienceDid,
1409
+ exp: opts.expiresAt,
1410
+ nnc: randomUUID5(),
1411
+ att: opts.attenuations,
1412
+ prf: opts.proofs ?? []
1413
+ };
1414
+ if (opts.notBefore !== void 0) {
1415
+ payload.nbf = opts.notBefore;
1416
+ }
1417
+ if (opts.facts !== void 0) {
1418
+ payload.fct = opts.facts;
1419
+ }
1420
+ const headerEncoded = toBase64Url(canonicalize(UCAN_HEADER));
1421
+ const payloadEncoded = toBase64Url(canonicalize(payload));
1422
+ const signingInput = `${headerEncoded}.${payloadEncoded}`;
1423
+ const keyObject = createPrivateKey({ key: opts.signerKey, format: "der", type: "pkcs8" });
1424
+ const sig = sign(null, Buffer.from(signingInput, "utf-8"), keyObject);
1425
+ const signatureEncoded = sig.toString("base64url");
1426
+ return `${signingInput}.${signatureEncoded}`;
1427
+ }
1428
+ function verifyUCAN(token, issuerPublicKey) {
1429
+ try {
1430
+ const parts = token.split(".");
1431
+ if (parts.length !== 3) {
1432
+ return { valid: false, reason: "Invalid token format: expected 3 parts" };
1433
+ }
1434
+ const signingInput = `${parts[0]}.${parts[1]}`;
1435
+ const signatureBuffer = Buffer.from(parts[2], "base64url");
1436
+ const keyObject = createPublicKey({ key: issuerPublicKey, format: "der", type: "spki" });
1437
+ const isValid = verify(null, Buffer.from(signingInput, "utf-8"), keyObject, signatureBuffer);
1438
+ if (!isValid) {
1439
+ return { valid: false, reason: "Signature verification failed" };
1440
+ }
1441
+ return { valid: true };
1442
+ } catch (err) {
1443
+ const message = err instanceof Error ? err.message : String(err);
1444
+ return { valid: false, reason: `Verification error: ${message}` };
1445
+ }
1446
+ }
1447
+ function decodeUCAN(token) {
1448
+ const parts = token.split(".");
1449
+ if (parts.length !== 3) {
1450
+ throw new AgentBnBError(
1451
+ `Invalid UCAN token format: expected 3 dot-separated parts, got ${parts.length}`,
1452
+ "UCAN_INVALID"
1453
+ );
1454
+ }
1455
+ let header;
1456
+ let payload;
1457
+ try {
1458
+ header = JSON.parse(fromBase64Url(parts[0]));
1459
+ } catch {
1460
+ throw new AgentBnBError("Invalid UCAN token: failed to decode header", "UCAN_INVALID");
1461
+ }
1462
+ try {
1463
+ payload = JSON.parse(fromBase64Url(parts[1]));
1464
+ } catch {
1465
+ throw new AgentBnBError("Invalid UCAN token: failed to decode payload", "UCAN_INVALID");
1466
+ }
1467
+ return {
1468
+ header,
1469
+ payload,
1470
+ signature: parts[2]
1471
+ };
1472
+ }
1473
+
1284
1474
  export {
1285
1475
  interpolateObject,
1286
1476
  validateAndNormalizeSubtasks,
@@ -1297,5 +1487,8 @@ export {
1297
1487
  BudgetController,
1298
1488
  DEFAULT_BUDGET_CONFIG,
1299
1489
  BudgetManager,
1300
- orchestrate
1490
+ orchestrate,
1491
+ createUCAN,
1492
+ verifyUCAN,
1493
+ decodeUCAN
1301
1494
  };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getBalance
3
- } from "./chunk-HU46M4JA.js";
3
+ } from "./chunk-P3FDT7G5.js";
4
4
 
5
5
  // src/credit/budget.ts
6
6
  var DEFAULT_BUDGET_CONFIG = {
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  fetchRemoteCards
3
- } from "./chunk-PIPCGRCR.js";
3
+ } from "./chunk-ELFGYC22.js";
4
4
  import {
5
5
  searchCards
6
- } from "./chunk-HU46M4JA.js";
6
+ } from "./chunk-P3FDT7G5.js";
7
7
  import {
8
8
  getCard
9
- } from "./chunk-COA2D7QM.js";
9
+ } from "./chunk-NLQCHO7N.js";
10
10
  import {
11
11
  resolveCanonicalIdentity
12
- } from "./chunk-WTHMHNKC.js";
12
+ } from "./chunk-J4RFJVXI.js";
13
13
 
14
14
  // src/gateway/resolve-target-capability.ts
15
15
  function canQueryLocalDb(db) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  RelayMessageSchema
3
- } from "./chunk-PQIP7EXY.js";
3
+ } from "./chunk-3466S65P.js";
4
4
 
5
5
  // src/relay/websocket-client.ts
6
6
  import WebSocket from "ws";
@@ -19,6 +19,8 @@ var CapabilityCardSchema = z.object({
19
19
  owner: z.string().min(1),
20
20
  /** V8: Cryptographic agent identity (Ed25519 public key hash). */
21
21
  agent_id: z.string().optional(),
22
+ /** W3C Decentralized Identifier (e.g. did:agentbnb:<agent_id>). */
23
+ did: z.string().optional(),
22
24
  name: z.string().min(1).max(100),
23
25
  description: z.string().max(500),
24
26
  level: z.union([z.literal(1), z.literal(2), z.literal(3)]),
@@ -163,6 +165,8 @@ var CapabilityCardV2Schema = z.object({
163
165
  owner: z.string().min(1),
164
166
  /** V8: Cryptographic agent identity (Ed25519 public key hash). */
165
167
  agent_id: z.string().optional(),
168
+ /** W3C Decentralized Identifier (e.g. did:agentbnb:<agent_id>). */
169
+ did: z.string().optional(),
166
170
  /** Agent display name — was 'name' in v1.0. */
167
171
  agent_name: z.string().min(1).max(100),
168
172
  /** Short one-liner shown in Hub v2 Identity Header. */
@@ -1,13 +1,15 @@
1
1
  import {
2
- createLedger,
2
+ createLedger
3
+ } from "./chunk-NZTLBAML.js";
4
+ import {
3
5
  loadOrRepairIdentity
4
- } from "./chunk-WK2QSO4E.js";
6
+ } from "./chunk-5CC6O6SO.js";
5
7
  import {
6
8
  getBalance
7
- } from "./chunk-HU46M4JA.js";
9
+ } from "./chunk-P3FDT7G5.js";
8
10
  import {
9
11
  canonicalizeCreditOwner
10
- } from "./chunk-U6LP4KWN.js";
12
+ } from "./chunk-YDGXKH2T.js";
11
13
  import {
12
14
  getConfigDir
13
15
  } from "./chunk-3XPBFF6H.js";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  signEscrowReceipt
3
- } from "./chunk-GIEJVKZZ.js";
3
+ } from "./chunk-YNBZLXYS.js";
4
4
  import {
5
5
  AgentBnBError
6
- } from "./chunk-I7KWA7OB.js";
6
+ } from "./chunk-UVCNMRPS.js";
7
7
 
8
8
  // src/gateway/client.ts
9
9
  import { randomUUID } from "crypto";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  ensureAgentsTable,
3
3
  resolveCanonicalIdentity
4
- } from "./chunk-WTHMHNKC.js";
4
+ } from "./chunk-J4RFJVXI.js";
5
5
 
6
6
  // src/credit/owner-normalization.ts
7
7
  var RESERVED_OWNERS = /* @__PURE__ */ new Set(["platform_treasury"]);
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  AgentBnBError
3
- } from "./chunk-I7KWA7OB.js";
3
+ } from "./chunk-UVCNMRPS.js";
4
4
 
5
5
  // src/credit/signing.ts
6
6
  import { generateKeyPairSync, sign, verify, createPublicKey, createPrivateKey } from "crypto";
package/dist/cli/index.js CHANGED
@@ -5,56 +5,58 @@ import {
5
5
  injectHeartbeatSection,
6
6
  performInit,
7
7
  publishFromSoulV2
8
- } from "../chunk-UNXCKETK.js";
8
+ } from "../chunk-27VHBFUP.js";
9
9
  import {
10
10
  AutoRequestor,
11
11
  requestViaTemporaryRelay
12
- } from "../chunk-IMLFBU3H.js";
12
+ } from "../chunk-LLL3KYEM.js";
13
13
  import {
14
14
  BudgetManager,
15
15
  DEFAULT_BUDGET_CONFIG
16
- } from "../chunk-AZKVGC5T.js";
16
+ } from "../chunk-TLT6F35V.js";
17
17
  import {
18
18
  discoverLocalAgents,
19
19
  resolveSelfCli
20
- } from "../chunk-VRPLSK34.js";
20
+ } from "../chunk-D4IJQ3TK.js";
21
21
  import {
22
22
  getPricingStats
23
- } from "../chunk-CFHCG5FE.js";
24
- import "../chunk-MZSVVG55.js";
23
+ } from "../chunk-2GWOFP24.js";
24
+ import "../chunk-5PV5YCSN.js";
25
25
  import {
26
26
  DEFAULT_AUTONOMY_CONFIG
27
27
  } from "../chunk-G5WKW3ED.js";
28
28
  import {
29
29
  syncCreditsFromRegistry
30
- } from "../chunk-RF4A5X5U.js";
30
+ } from "../chunk-W5J3PEQ6.js";
31
+ import {
32
+ createLedger
33
+ } from "../chunk-NZTLBAML.js";
31
34
  import {
32
- createLedger,
33
35
  ensureIdentity
34
- } from "../chunk-WK2QSO4E.js";
35
- import "../chunk-2PP5MQPD.js";
36
+ } from "../chunk-5CC6O6SO.js";
37
+ import "../chunk-UIPGGNRC.js";
36
38
  import {
37
39
  fetchRemoteCards,
38
40
  mergeResults
39
- } from "../chunk-PIPCGRCR.js";
41
+ } from "../chunk-ELFGYC22.js";
40
42
  import {
41
43
  filterCards,
42
44
  getBalance,
43
45
  getTransactions,
44
46
  openCreditDb,
45
47
  searchCards
46
- } from "../chunk-HU46M4JA.js";
47
- import "../chunk-NX27AFPA.js";
48
- import "../chunk-PQIP7EXY.js";
48
+ } from "../chunk-P3FDT7G5.js";
49
+ import "../chunk-UR3MISL2.js";
50
+ import "../chunk-3466S65P.js";
49
51
  import {
50
52
  requestCapability
51
- } from "../chunk-YKMBFQC2.js";
53
+ } from "../chunk-W6LOCBWQ.js";
52
54
  import {
53
55
  generateKeyPair,
54
56
  loadKeyPair,
55
57
  saveKeyPair
56
- } from "../chunk-GIEJVKZZ.js";
57
- import "../chunk-U6LP4KWN.js";
58
+ } from "../chunk-YNBZLXYS.js";
59
+ import "../chunk-YDGXKH2T.js";
58
60
  import {
59
61
  findPeer,
60
62
  loadPeers,
@@ -66,7 +68,7 @@ import {
66
68
  loadConfig,
67
69
  saveConfig
68
70
  } from "../chunk-3XPBFF6H.js";
69
- import "../chunk-VAAEBCMU.js";
71
+ import "../chunk-N3TXLBGK.js";
70
72
  import {
71
73
  attachCanonicalAgentId,
72
74
  deleteCard,
@@ -74,11 +76,11 @@ import {
74
76
  insertCard,
75
77
  listCards,
76
78
  openDatabase
77
- } from "../chunk-COA2D7QM.js";
78
- import "../chunk-WTHMHNKC.js";
79
+ } from "../chunk-NLQCHO7N.js";
80
+ import "../chunk-J4RFJVXI.js";
79
81
  import {
80
82
  AnyCardSchema
81
- } from "../chunk-I7KWA7OB.js";
83
+ } from "../chunk-UVCNMRPS.js";
82
84
 
83
85
  // src/cli/index.ts
84
86
  import { Command } from "commander";
@@ -229,8 +231,8 @@ Skills: ${skills2.skillCount} skill(s) in ${skills2.path}`);
229
231
  let daemonStatus = { running: false, reason: "skipped" };
230
232
  if (!skipServe) {
231
233
  try {
232
- const { ProcessGuard } = await import("../process-guard-TNSUNHSR.js");
233
- const { ServiceCoordinator } = await import("../service-coordinator-RN7GOLLC.js");
234
+ const { ProcessGuard } = await import("../process-guard-QDBIOLY4.js");
235
+ const { ServiceCoordinator } = await import("../service-coordinator-PLUPMPSC.js");
234
236
  const guard = new ProcessGuard(join(initResult.configDir, ".pid"));
235
237
  const coordinator = new ServiceCoordinator(initResult.config, guard);
236
238
  const result = await coordinator.ensureRunning({
@@ -292,7 +294,7 @@ Skills: ${skills2.skillCount} skill(s) in ${skills2.path}`);
292
294
  }
293
295
 
294
296
  // src/cli/index.ts
295
- var VERSION = true ? "8.4.7" : "0.0.0-dev";
297
+ var VERSION = true ? "9.0.0" : "0.0.0-dev";
296
298
  function loadIdentityAuth(owner) {
297
299
  const configDir = getConfigDir();
298
300
  let keys;
@@ -506,7 +508,7 @@ program.command("publish-skills").description("Publish capabilities from skills.
506
508
  process.exit(1);
507
509
  }
508
510
  const { parseSkillsFile } = await import("../skill-config-5O2VR546.js");
509
- const { skillConfigToSkill } = await import("../publish-capability-GNH5FHKG.js");
511
+ const { skillConfigToSkill } = await import("../publish-capability-FOCHYNYE.js");
510
512
  const skillsPath = typeof opts.fromSkills === "string" ? opts.fromSkills : "./skills.yaml";
511
513
  let yamlContent;
512
514
  try {
@@ -715,35 +717,33 @@ ${discovered.length} agent(s) found on local network`);
715
717
  return;
716
718
  }
717
719
  const col = (s, w) => (s ?? "").slice(0, w).padEnd(w);
718
- if (hasRemote) {
719
- console.log(
720
- col("ID", 16) + " " + col("Name", 28) + " " + col("Lvl", 3) + " " + col("Credits", 7) + " " + col("Online", 6) + " " + col("Source", 8)
721
- );
722
- console.log("-".repeat(80));
723
- for (const card of outputCards) {
724
- const shortId = card.id.slice(0, 8) + "...";
725
- const displayName = card.name ?? card.agent_name ?? "";
726
- const source = "source" in card ? card.source : "local";
727
- const sourceTag = source === "remote" ? "[remote]" : "[local]";
728
- console.log(
729
- col(shortId, 16) + " " + col(displayName, 28) + " " + col(String(card.level ?? ""), 3) + " " + col(String(card.pricing?.credits_per_call ?? ""), 7) + " " + col(card.availability?.online ? "yes" : "no", 6) + " " + col(sourceTag, 8)
730
- );
731
- }
732
- } else {
733
- console.log(
734
- col("ID", 16) + " " + col("Name", 32) + " " + col("Lvl", 3) + " " + col("Credits", 7) + " " + col("Online", 6)
735
- );
736
- console.log("-".repeat(72));
737
- for (const card of outputCards) {
738
- const shortId = card.id.slice(0, 8) + "...";
739
- const displayName = card.name ?? card.agent_name ?? "";
740
- console.log(
741
- col(shortId, 16) + " " + col(displayName, 32) + " " + col(String(card.level ?? ""), 3) + " " + col(String(card.pricing?.credits_per_call ?? ""), 7) + " " + col(card.availability?.online ? "yes" : "no", 6)
742
- );
720
+ let totalSkills = 0;
721
+ for (const card of outputCards) {
722
+ const shortId = card.id.slice(0, 8) + "...";
723
+ const displayName = card.name ?? card.agent_name ?? "";
724
+ const online = card.availability?.online ? "online" : "offline";
725
+ const source = "source" in card ? card.source : "local";
726
+ const tags = hasRemote ? `${source}, ${online}` : online;
727
+ console.log(`
728
+ ${displayName} (${shortId}) [${tags}]`);
729
+ const raw = card;
730
+ const skills2 = Array.isArray(raw["skills"]) ? raw["skills"] : [];
731
+ if (skills2.length > 0) {
732
+ console.log(" Skills:");
733
+ for (const skill of skills2) {
734
+ const price = String(skill.pricing?.credits_per_call ?? "?");
735
+ const desc = (skill.description ?? "").slice(0, 50);
736
+ console.log(` ${col(skill.id, 24)} ${col(price + " cr", 8)} ${desc}`);
737
+ }
738
+ totalSkills += skills2.length;
739
+ } else if (card.pricing?.credits_per_call != null) {
740
+ console.log(` ${card.pricing.credits_per_call} cr/call`);
741
+ totalSkills += 1;
743
742
  }
744
743
  }
744
+ const skillsSuffix = totalSkills > 0 ? `, ${totalSkills} skills total` : "";
745
745
  console.log(`
746
- ${outputCards.length} result(s)`);
746
+ ${outputCards.length} agent(s) found${skillsSuffix}`);
747
747
  });
748
748
  program.command("request [card-id]").description("Request a capability from another agent \u2014 direct (card-id) or auto (--query)").option("--params <json>", "Input parameters as JSON string", "{}").option("--peer <name>", "Peer name to send request to (resolves URL+token from peer registry)").option("--skill <id>", "Skill ID within a v2.0 card").option("--cost <credits>", "Credits to commit (required for cross-machine peer requests)").option("--query <text>", "Search query for capability gap (triggers auto-request flow)").option("--max-cost <credits>", "Maximum credits to spend on auto-request (default: 50)").option("--timeout <ms>", "Request timeout override in milliseconds").option("--no-receipt", "Skip signed escrow receipt (local-only mode)").option("--batch <file>", "Path to JSON file with batch request payload { requests, strategy, total_budget }").option("--json", "Output as JSON").action(async (cardId, opts) => {
749
749
  const config = loadConfig();
@@ -1117,8 +1117,8 @@ program.command("serve").description("Start the AgentBnB gateway server").option
1117
1117
  console.error("Error: not initialized. Run `agentbnb init` first.");
1118
1118
  process.exit(1);
1119
1119
  }
1120
- const { ProcessGuard } = await import("../process-guard-TNSUNHSR.js");
1121
- const { ServiceCoordinator } = await import("../service-coordinator-RN7GOLLC.js");
1120
+ const { ProcessGuard } = await import("../process-guard-QDBIOLY4.js");
1121
+ const { ServiceCoordinator } = await import("../service-coordinator-PLUPMPSC.js");
1122
1122
  const port = opts.port ? parseInt(opts.port, 10) : config.gateway_port;
1123
1123
  const registryPort = parseInt(opts.registryPort, 10);
1124
1124
  if (!Number.isFinite(port) || !Number.isFinite(registryPort)) {
@@ -1492,34 +1492,34 @@ openclaw.command("rules").description("Print HEARTBEAT.md rules block (or inject
1492
1492
  }
1493
1493
  });
1494
1494
  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) => {
1495
- const { runOpenClawSetup } = await import("../openclaw-setup-5ZWWRVF3.js");
1495
+ const { runOpenClawSetup } = await import("../openclaw-setup-HVEVSKXQ.js");
1496
1496
  await runOpenClawSetup(opts);
1497
1497
  });
1498
1498
  var skills = openclaw.command("skills").description("Manage shared skills on AgentBnB");
1499
1499
  skills.command("list").description("List all shared skills with stats").action(async () => {
1500
- const { skillsList } = await import("../openclaw-skills-6ZWQJ5V6.js");
1500
+ const { skillsList } = await import("../openclaw-skills-QLC4D6DZ.js");
1501
1501
  await skillsList({});
1502
1502
  });
1503
1503
  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(
1504
1504
  async (opts) => {
1505
- const { skillsAdd } = await import("../openclaw-skills-6ZWQJ5V6.js");
1505
+ const { skillsAdd } = await import("../openclaw-skills-QLC4D6DZ.js");
1506
1506
  await skillsAdd(opts);
1507
1507
  }
1508
1508
  );
1509
1509
  skills.command("remove <skillId>").description("Remove a skill from AgentBnB").action(async (skillId) => {
1510
- const { skillsRemove } = await import("../openclaw-skills-6ZWQJ5V6.js");
1510
+ const { skillsRemove } = await import("../openclaw-skills-QLC4D6DZ.js");
1511
1511
  await skillsRemove(skillId);
1512
1512
  });
1513
1513
  skills.command("price <skillId> <price>").description("Update skill price").action(async (skillId, price) => {
1514
- const { skillsPrice } = await import("../openclaw-skills-6ZWQJ5V6.js");
1514
+ const { skillsPrice } = await import("../openclaw-skills-QLC4D6DZ.js");
1515
1515
  await skillsPrice(skillId, parseFloat(price));
1516
1516
  });
1517
1517
  skills.command("stats").description("Revenue and performance report").option("--days <n>", "Days to look back", parseInt, 7).action(async (opts) => {
1518
- const { skillsStats } = await import("../openclaw-skills-6ZWQJ5V6.js");
1518
+ const { skillsStats } = await import("../openclaw-skills-QLC4D6DZ.js");
1519
1519
  await skillsStats(opts);
1520
1520
  });
1521
1521
  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) => {
1522
- const { conductAction } = await import("../conduct-2RD45QKB.js");
1522
+ const { conductAction } = await import("../conduct-4NPMP4GL.js");
1523
1523
  const result = await conductAction(task, opts);
1524
1524
  if (opts.json) {
1525
1525
  console.log(JSON.stringify(result, null, 2));
@@ -1630,8 +1630,22 @@ Feedback for skill: ${opts.skill} (${feedbacks.length} entries)
1630
1630
  }
1631
1631
  });
1632
1632
  program.command("quickstart").alias("qs").description("One-command setup: init + skills.yaml + MCP registration + serve daemon").option("--owner <name>", "Agent owner name").option("--port <port>", "Gateway port", "7700").option("--no-serve", "Skip starting background daemon").option("--no-mcp", "Skip MCP registration with Claude Code").option("--json", "Output as JSON").action(runQuickstart);
1633
+ var did = program.command("did").description("Decentralized Identity commands");
1634
+ did.command("show").description("Display local agent DID identifiers").option("--json", "Output as JSON").action(async (opts) => {
1635
+ const { didShow, didShowJson } = await import("../did-action-MQLDT4RF.js");
1636
+ if (opts.json) {
1637
+ await didShowJson();
1638
+ } else {
1639
+ await didShow();
1640
+ }
1641
+ });
1642
+ var vc = program.command("vc").description("Verifiable Credentials commands");
1643
+ vc.command("show").description("Display Verifiable Credentials for this agent").option("--json", "Output as JSON").action(async (opts) => {
1644
+ const { vcShow } = await import("../vc-action-SUD7TMN2.js");
1645
+ await vcShow(opts);
1646
+ });
1633
1647
  program.command("mcp-server").description("Start an MCP (Model Context Protocol) server for IDE integration").action(async () => {
1634
- const { startMcpServer } = await import("../server-XWTGBJHV.js");
1648
+ const { startMcpServer } = await import("../server-Z6P3AHKN.js");
1635
1649
  await startMcpServer();
1636
1650
  });
1637
1651
  await program.parseAsync(process.argv);
@@ -6,9 +6,9 @@ import {
6
6
  requestCapability,
7
7
  requestCapabilityBatch,
8
8
  requestViaRelay
9
- } from "./chunk-YKMBFQC2.js";
10
- import "./chunk-GIEJVKZZ.js";
11
- import "./chunk-I7KWA7OB.js";
9
+ } from "./chunk-W6LOCBWQ.js";
10
+ import "./chunk-YNBZLXYS.js";
11
+ import "./chunk-UVCNMRPS.js";
12
12
  export {
13
13
  REQUEST_TIMEOUT_EXPECTED_MULTIPLIER,
14
14
  REQUEST_TIMEOUT_FALLBACK_MS,
@@ -0,0 +1,25 @@
1
+ import {
2
+ conductAction
3
+ } from "./chunk-AZEGOADG.js";
4
+ import "./chunk-4FK45WJI.js";
5
+ import "./chunk-3MJT4PZG.js";
6
+ import "./chunk-LLL3KYEM.js";
7
+ import "./chunk-TLT6F35V.js";
8
+ import "./chunk-5PV5YCSN.js";
9
+ import "./chunk-G5WKW3ED.js";
10
+ import "./chunk-UIPGGNRC.js";
11
+ import "./chunk-ELFGYC22.js";
12
+ import "./chunk-P3FDT7G5.js";
13
+ import "./chunk-UR3MISL2.js";
14
+ import "./chunk-3466S65P.js";
15
+ import "./chunk-W6LOCBWQ.js";
16
+ import "./chunk-YNBZLXYS.js";
17
+ import "./chunk-YDGXKH2T.js";
18
+ import "./chunk-3YQ73ZM6.js";
19
+ import "./chunk-3XPBFF6H.js";
20
+ import "./chunk-NLQCHO7N.js";
21
+ import "./chunk-J4RFJVXI.js";
22
+ import "./chunk-UVCNMRPS.js";
23
+ export {
24
+ conductAction
25
+ };