oceanbus 0.4.7 → 0.4.9

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 (82) hide show
  1. package/README.md +2 -2
  2. package/dist/agent/identity.d.ts +2 -0
  3. package/dist/agent/identity.d.ts.map +1 -1
  4. package/dist/agent/identity.js +10 -1
  5. package/dist/agent/identity.js.map +1 -1
  6. package/dist/cli/commands/add.d.ts +3 -0
  7. package/dist/cli/commands/add.d.ts.map +1 -0
  8. package/dist/cli/commands/add.js +55 -0
  9. package/dist/cli/commands/add.js.map +1 -0
  10. package/dist/cli/commands/contacts.d.ts +3 -0
  11. package/dist/cli/commands/contacts.d.ts.map +1 -0
  12. package/dist/cli/commands/contacts.js +30 -0
  13. package/dist/cli/commands/contacts.js.map +1 -0
  14. package/dist/cli/commands/key-new.js +1 -1
  15. package/dist/cli/commands/key-new.js.map +1 -1
  16. package/dist/cli/commands/key-revoke.js +1 -1
  17. package/dist/cli/commands/send.d.ts.map +1 -1
  18. package/dist/cli/commands/send.js +14 -3
  19. package/dist/cli/commands/send.js.map +1 -1
  20. package/dist/cli/commands/whoami.d.ts.map +1 -1
  21. package/dist/cli/commands/whoami.js +6 -1
  22. package/dist/cli/commands/whoami.js.map +1 -1
  23. package/dist/cli/contacts.d.ts +12 -0
  24. package/dist/cli/contacts.d.ts.map +1 -0
  25. package/dist/cli/contacts.js +64 -0
  26. package/dist/cli/contacts.js.map +1 -0
  27. package/dist/cli/index.d.ts.map +1 -1
  28. package/dist/cli/index.js +4 -0
  29. package/dist/cli/index.js.map +1 -1
  30. package/dist/client/http-client.d.ts +1 -0
  31. package/dist/client/http-client.d.ts.map +1 -1
  32. package/dist/client/http-client.js +9 -20
  33. package/dist/client/http-client.js.map +1 -1
  34. package/dist/client/retry.js +2 -2
  35. package/dist/client/retry.js.map +1 -1
  36. package/dist/config/defaults.d.ts.map +1 -1
  37. package/dist/config/defaults.js +2 -4
  38. package/dist/config/defaults.js.map +1 -1
  39. package/dist/config/loader.d.ts.map +1 -1
  40. package/dist/config/loader.js +4 -1
  41. package/dist/config/loader.js.map +1 -1
  42. package/dist/crypto/index.d.ts +1 -0
  43. package/dist/crypto/index.d.ts.map +1 -1
  44. package/dist/crypto/index.js +5 -1
  45. package/dist/crypto/index.js.map +1 -1
  46. package/dist/crypto/sha256.d.ts +15 -0
  47. package/dist/crypto/sha256.d.ts.map +1 -0
  48. package/dist/crypto/sha256.js +33 -0
  49. package/dist/crypto/sha256.js.map +1 -0
  50. package/dist/index.d.ts +40 -1
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +112 -10
  53. package/dist/index.js.map +1 -1
  54. package/dist/l1/base-client.d.ts +5 -0
  55. package/dist/l1/base-client.d.ts.map +1 -1
  56. package/dist/l1/base-client.js +18 -0
  57. package/dist/l1/base-client.js.map +1 -1
  58. package/dist/l1/reputation.d.ts +42 -2
  59. package/dist/l1/reputation.d.ts.map +1 -1
  60. package/dist/l1/reputation.js +78 -1
  61. package/dist/l1/reputation.js.map +1 -1
  62. package/dist/l1/yellow-pages.d.ts +13 -1
  63. package/dist/l1/yellow-pages.d.ts.map +1 -1
  64. package/dist/l1/yellow-pages.js +36 -5
  65. package/dist/l1/yellow-pages.js.map +1 -1
  66. package/dist/messaging/blocklist.d.ts.map +1 -1
  67. package/dist/messaging/blocklist.js +12 -3
  68. package/dist/messaging/blocklist.js.map +1 -1
  69. package/dist/messaging/idgen.js +2 -2
  70. package/dist/messaging/idgen.js.map +1 -1
  71. package/dist/roster/index.d.ts.map +1 -1
  72. package/dist/roster/index.js +3 -0
  73. package/dist/roster/index.js.map +1 -1
  74. package/dist/types/agent.d.ts +1 -0
  75. package/dist/types/agent.d.ts.map +1 -1
  76. package/dist/types/l1.d.ts +188 -0
  77. package/dist/types/l1.d.ts.map +1 -1
  78. package/dist/types/l1.js +2 -0
  79. package/dist/types/l1.js.map +1 -1
  80. package/dist/types/roster.d.ts +3 -0
  81. package/dist/types/roster.d.ts.map +1 -1
  82. package/package.json +1 -1
@@ -1,4 +1,5 @@
1
1
  export { generateKeypair, sign, verify, bufferToHex, hexToBuffer, keypairToHex, hexToKeypair, keypairToBase64url, base64urlToKeypair, } from './ed25519';
2
2
  export { canonicalize } from './canonical-json';
3
3
  export { computeHashcash, verifyHashcash } from './pow';
4
+ export { computeCardHash, verifyCardHash, isValidCardHash } from './sha256';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/crypto/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,IAAI,EACJ,MAAM,EACN,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/crypto/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,IAAI,EACJ,MAAM,EACN,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.verifyHashcash = exports.computeHashcash = exports.canonicalize = exports.base64urlToKeypair = exports.keypairToBase64url = exports.hexToKeypair = exports.keypairToHex = exports.hexToBuffer = exports.bufferToHex = exports.verify = exports.sign = exports.generateKeypair = void 0;
3
+ exports.isValidCardHash = exports.verifyCardHash = exports.computeCardHash = exports.verifyHashcash = exports.computeHashcash = exports.canonicalize = exports.base64urlToKeypair = exports.keypairToBase64url = exports.hexToKeypair = exports.keypairToHex = exports.hexToBuffer = exports.bufferToHex = exports.verify = exports.sign = exports.generateKeypair = void 0;
4
4
  var ed25519_1 = require("./ed25519");
5
5
  Object.defineProperty(exports, "generateKeypair", { enumerable: true, get: function () { return ed25519_1.generateKeypair; } });
6
6
  Object.defineProperty(exports, "sign", { enumerable: true, get: function () { return ed25519_1.sign; } });
@@ -16,4 +16,8 @@ Object.defineProperty(exports, "canonicalize", { enumerable: true, get: function
16
16
  var pow_1 = require("./pow");
17
17
  Object.defineProperty(exports, "computeHashcash", { enumerable: true, get: function () { return pow_1.computeHashcash; } });
18
18
  Object.defineProperty(exports, "verifyHashcash", { enumerable: true, get: function () { return pow_1.verifyHashcash; } });
19
+ var sha256_1 = require("./sha256");
20
+ Object.defineProperty(exports, "computeCardHash", { enumerable: true, get: function () { return sha256_1.computeCardHash; } });
21
+ Object.defineProperty(exports, "verifyCardHash", { enumerable: true, get: function () { return sha256_1.verifyCardHash; } });
22
+ Object.defineProperty(exports, "isValidCardHash", { enumerable: true, get: function () { return sha256_1.isValidCardHash; } });
19
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/crypto/index.ts"],"names":[],"mappings":";;;AAAA,qCAUmB;AATjB,0GAAA,eAAe,OAAA;AACf,+FAAA,IAAI,OAAA;AACJ,iGAAA,MAAM,OAAA;AACN,sGAAA,WAAW,OAAA;AACX,sGAAA,WAAW,OAAA;AACX,uGAAA,YAAY,OAAA;AACZ,uGAAA,YAAY,OAAA;AACZ,6GAAA,kBAAkB,OAAA;AAClB,6GAAA,kBAAkB,OAAA;AAGpB,mDAAgD;AAAvC,8GAAA,YAAY,OAAA;AACrB,6BAAwD;AAA/C,sGAAA,eAAe,OAAA;AAAE,qGAAA,cAAc,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/crypto/index.ts"],"names":[],"mappings":";;;AAAA,qCAUmB;AATjB,0GAAA,eAAe,OAAA;AACf,+FAAA,IAAI,OAAA;AACJ,iGAAA,MAAM,OAAA;AACN,sGAAA,WAAW,OAAA;AACX,sGAAA,WAAW,OAAA;AACX,uGAAA,YAAY,OAAA;AACZ,uGAAA,YAAY,OAAA;AACZ,6GAAA,kBAAkB,OAAA;AAClB,6GAAA,kBAAkB,OAAA;AAGpB,mDAAgD;AAAvC,8GAAA,YAAY,OAAA;AACrB,6BAAwD;AAA/C,sGAAA,eAAe,OAAA;AAAE,qGAAA,cAAc,OAAA;AACxC,mCAA4E;AAAnE,yGAAA,eAAe,OAAA;AAAE,wGAAA,cAAc,OAAA;AAAE,yGAAA,eAAe,OAAA"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Compute the SHA-256 based card hash for an AgentCard.
3
+ * Uses canonical JSON serialization for deterministic output.
4
+ * Format: "sha256:{64 lowercase hex chars}"
5
+ */
6
+ export declare function computeCardHash(agentCard: Record<string, unknown>): string;
7
+ /**
8
+ * Verify that an AgentCard matches an expected card hash.
9
+ */
10
+ export declare function verifyCardHash(agentCard: Record<string, unknown>, expectedHash: string): boolean;
11
+ /**
12
+ * Validate card_hash format: must be "sha256:{64 lowercase hex chars}".
13
+ */
14
+ export declare function isValidCardHash(hash: unknown): hash is string;
15
+ //# sourceMappingURL=sha256.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sha256.d.ts","sourceRoot":"","sources":["../../src/crypto/sha256.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAO1E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,YAAY,EAAE,MAAM,GACnB,OAAO,CAET;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,MAAM,CAE7D"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.computeCardHash = computeCardHash;
4
+ exports.verifyCardHash = verifyCardHash;
5
+ exports.isValidCardHash = isValidCardHash;
6
+ const sha256_1 = require("@noble/hashes/sha256");
7
+ const canonical_json_1 = require("./canonical-json");
8
+ /**
9
+ * Compute the SHA-256 based card hash for an AgentCard.
10
+ * Uses canonical JSON serialization for deterministic output.
11
+ * Format: "sha256:{64 lowercase hex chars}"
12
+ */
13
+ function computeCardHash(agentCard) {
14
+ const canonical = (0, canonical_json_1.canonicalize)(agentCard);
15
+ const hashBytes = (0, sha256_1.sha256)(canonical);
16
+ const hex = Array.from(hashBytes)
17
+ .map((b) => b.toString(16).padStart(2, '0'))
18
+ .join('');
19
+ return `sha256:${hex}`;
20
+ }
21
+ /**
22
+ * Verify that an AgentCard matches an expected card hash.
23
+ */
24
+ function verifyCardHash(agentCard, expectedHash) {
25
+ return computeCardHash(agentCard) === expectedHash;
26
+ }
27
+ /**
28
+ * Validate card_hash format: must be "sha256:{64 lowercase hex chars}".
29
+ */
30
+ function isValidCardHash(hash) {
31
+ return typeof hash === 'string' && /^sha256:[a-f0-9]{64}$/.test(hash);
32
+ }
33
+ //# sourceMappingURL=sha256.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sha256.js","sourceRoot":"","sources":["../../src/crypto/sha256.ts"],"names":[],"mappings":";;AAQA,0CAOC;AAKD,wCAKC;AAKD,0CAEC;AAhCD,iDAA8C;AAC9C,qDAAgD;AAEhD;;;;GAIG;AACH,SAAgB,eAAe,CAAC,SAAkC;IAChE,MAAM,SAAS,GAAG,IAAA,6BAAY,EAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;SAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAC3C,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,UAAU,GAAG,EAAE,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAC5B,SAAkC,EAClC,YAAoB;IAEpB,OAAO,eAAe,CAAC,SAAS,CAAC,KAAK,YAAY,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,IAAa;IAC3C,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxE,CAAC"}
package/dist/index.d.ts CHANGED
@@ -11,6 +11,7 @@ import type { Message } from './types/messaging';
11
11
  import type { ListenOptions, SendOptions } from './types/messaging';
12
12
  import { RosterService } from './roster/index';
13
13
  import type { Ed25519KeyPair, Certificate, CertVerifyResult, TrustAnchor } from './types/crypto';
14
+ import type { AgentCard, AgentCardHandler } from './types/l1';
14
15
  import { YellowPagesClient } from './l1/yellow-pages';
15
16
  import type { PayloadSigner } from './l1/yellow-pages';
16
17
  import { CAClient } from './l1/ca';
@@ -28,6 +29,7 @@ export declare class OceanBus {
28
29
  private keyStore;
29
30
  private cursor;
30
31
  private l1Dispatcher;
32
+ private agentCardHandler;
31
33
  crypto: {
32
34
  generateKeypair: () => Promise<Ed25519KeyPair>;
33
35
  sign: (keypair: Ed25519KeyPair, payload: Record<string, unknown>) => Promise<string>;
@@ -71,6 +73,21 @@ export declare class OceanBus {
71
73
  api_key: string;
72
74
  }>;
73
75
  revokeApiKey(keyId: string): Promise<void>;
76
+ /**
77
+ * Register a handler that auto-responds to AgentCard requests.
78
+ * Other agents can then call ob.getAgentCard(yourOpenid) to retrieve your AgentCard.
79
+ */
80
+ serveAgentCard(handler: AgentCardHandler): void;
81
+ /**
82
+ * Request another agent's full AgentCard via direct OceanBus message.
83
+ * The target agent must have registered a handler via serveAgentCard().
84
+ */
85
+ getAgentCard(targetOpenid: string): Promise<AgentCard>;
86
+ /**
87
+ * Local-only AgentCard verification — pure SHA-256 comparison.
88
+ * No network call.
89
+ */
90
+ verifyCardLocal(card: AgentCard, expectedHash: string): boolean;
74
91
  /**
75
92
  * One-step publish to Yellow Pages.
76
93
  * Handles key generation, signing, identity, and heartbeat internally.
@@ -78,12 +95,20 @@ export declare class OceanBus {
78
95
  * @example
79
96
  * await ob.publish({
80
97
  * tags: ['insurance', 'health', 'Beijing'],
81
- * description: '小王 — 10年健康险专家,免费咨询'
98
+ * description: '小王 — 10年健康险专家,免费咨询',
99
+ * summary: '10年健康险专家,免费咨询',
100
+ * card: myAgentCard, // SDK auto-computes card_hash
101
+ * a2a_compatible: true,
82
102
  * });
83
103
  */
84
104
  publish(options: {
85
105
  tags: string[];
86
106
  description: string;
107
+ summary?: string;
108
+ card?: AgentCard;
109
+ card_hash?: string;
110
+ a2a_compatible?: boolean;
111
+ a2a_endpoint?: string;
87
112
  autoHeartbeat?: boolean;
88
113
  }): Promise<{
89
114
  code: number;
@@ -97,6 +122,19 @@ export declare class OceanBus {
97
122
  unpublish(): Promise<{
98
123
  code: number;
99
124
  }>;
125
+ /**
126
+ * Record a verifiable fact about an agent (trade, report, or service).
127
+ * Requires setIdentity on the reputation client.
128
+ */
129
+ recordReputationFact(params: {
130
+ subjectOpenid: string;
131
+ factType: 'trade' | 'report' | 'service';
132
+ factSubtype: string;
133
+ factData?: Record<string, unknown>;
134
+ proof?: Record<string, unknown>;
135
+ }): Promise<{
136
+ code: number;
137
+ }>;
100
138
  send(toOpenid: string, content: string, opts?: SendOptions): Promise<void>;
101
139
  sendJson(toOpenid: string, data: object, opts?: SendOptions): Promise<void>;
102
140
  sync(sinceSeq?: number, limit?: number): Promise<Message[]>;
@@ -116,4 +154,5 @@ export * from './types';
116
154
  export * from './client/errors';
117
155
  export { RosterService } from './roster/index';
118
156
  export { RosterStore } from './roster/store';
157
+ export { computeCardHash, verifyCardHash, isValidCardHash } from './crypto/sha256';
119
158
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.RosterStore = exports.RosterService = exports.OceanBus = void 0;
17
+ exports.isValidCardHash = exports.verifyCardHash = exports.computeCardHash = exports.RosterStore = exports.RosterService = exports.OceanBus = void 0;
18
18
  exports.createOceanBus = createOceanBus;
19
19
  const http_client_1 = require("./client/http-client");
20
20
  const store_1 = require("./agent/store");
@@ -31,6 +31,7 @@ const index_1 = require("./roster/index");
31
31
  // Crypto
32
32
  const ed25519_1 = require("./crypto/ed25519");
33
33
  const canonical_json_1 = require("./crypto/canonical-json");
34
+ const sha256_1 = require("./crypto/sha256");
34
35
  // L1
35
36
  const dispatcher_1 = require("./l1/dispatcher");
36
37
  const yellow_pages_1 = require("./l1/yellow-pages");
@@ -51,6 +52,7 @@ class OceanBus {
51
52
  keyStore;
52
53
  cursor;
53
54
  l1Dispatcher = null;
55
+ agentCardHandler = null;
54
56
  // Crypto
55
57
  crypto;
56
58
  // L1
@@ -128,31 +130,35 @@ class OceanBus {
128
130
  await ob.cursor.load();
129
131
  // Set up shared L1 dispatcher — one polling engine for all L1 requests
130
132
  ob.l1Dispatcher = new dispatcher_1.L1Dispatcher(ob.mailbox, config.l1.requestTimeoutMs, config.l1.requestPollIntervalMs);
131
- // Validate Yellow Pages config
133
+ // L1 clients initialized lazily when OpenIDs are configured
132
134
  const ypOpenid = config.l1.ypOpenids[0];
133
- if (!ypOpenid) {
134
- throw new errors_1.OceanBusError('Yellow Pages OpenID is not configured. Set config.l1.ypOpenids to the YP agent OpenID.');
135
- }
136
- // Initialize L1 clients
137
135
  const transport = {
138
136
  send: (to, content, cid) => ob.messaging.send(to, content, cid),
139
137
  sendJson: (to, data, cid) => ob.messaging.sendJson(to, data, cid),
140
138
  };
141
139
  ob.l1 = {
142
- yellowPages: new yellow_pages_1.YellowPagesClient(transport, ypOpenid, ob.l1Dispatcher, config.l1.requestTimeoutMs, config.l1.heartbeatIntervalMs),
140
+ yellowPages: new yellow_pages_1.YellowPagesClient(transport, ypOpenid || '', ob.l1Dispatcher, config.l1.requestTimeoutMs, config.l1.heartbeatIntervalMs),
143
141
  ca: new ca_1.CAClient(transport, config.l1.trustedCAs[0]?.ca_openid || '', config.l1.trustedCAs, ob.l1Dispatcher, config.l1.requestTimeoutMs),
144
- reputation: new reputation_1.ReputationClient(transport, config.l1.repOpenid, ob.l1Dispatcher, config.l1.requestTimeoutMs),
142
+ reputation: new reputation_1.ReputationClient(transport, config.l1.repOpenid || '', ob.l1Dispatcher, config.l1.requestTimeoutMs),
145
143
  };
146
144
  return ob;
147
145
  }
148
146
  // Identity convenience methods
149
147
  async register() {
150
148
  const data = await this.identity.register();
149
+ // Fetch and persist OpenID immediately
150
+ try {
151
+ await this.identity.whoami();
152
+ }
153
+ catch { }
151
154
  await this.keyStore.save(this.identity.toState());
152
155
  return data;
153
156
  }
154
157
  async whoami() {
155
158
  const data = await this.identity.whoami();
159
+ // Persist newly fetched OpenID
160
+ if (data.my_openid)
161
+ await this.keyStore.save(this.identity.toState());
156
162
  return { agent_id: this.identity.getAgentId(), openid: data.my_openid };
157
163
  }
158
164
  async getOpenId() {
@@ -172,6 +178,47 @@ class OceanBus {
172
178
  async revokeApiKey(keyId) {
173
179
  return this.keys.revokeApiKey(keyId);
174
180
  }
181
+ // AgentCard
182
+ /**
183
+ * Register a handler that auto-responds to AgentCard requests.
184
+ * Other agents can then call ob.getAgentCard(yourOpenid) to retrieve your AgentCard.
185
+ */
186
+ serveAgentCard(handler) {
187
+ this.agentCardHandler = handler;
188
+ }
189
+ /**
190
+ * Request another agent's full AgentCard via direct OceanBus message.
191
+ * The target agent must have registered a handler via serveAgentCard().
192
+ */
193
+ async getAgentCard(targetOpenid) {
194
+ if (!this.l1Dispatcher)
195
+ throw new errors_1.OceanBusError('Not ready — start listening first');
196
+ const requestId = `ac_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;
197
+ const responsePromise = this.l1Dispatcher.register(requestId, 30000);
198
+ try {
199
+ await this.messaging.sendJson(targetOpenid, {
200
+ action: 'get_agent_card',
201
+ request_id: requestId,
202
+ requester_openid: await this.getOpenId(),
203
+ });
204
+ }
205
+ catch (e) {
206
+ this.l1Dispatcher.cancel(requestId);
207
+ throw e;
208
+ }
209
+ const response = await responsePromise;
210
+ if (response.code !== 0) {
211
+ throw new errors_1.OceanBusError(`AgentCard request failed: ${response.msg || 'unknown error'}`);
212
+ }
213
+ return response.data.card;
214
+ }
215
+ /**
216
+ * Local-only AgentCard verification — pure SHA-256 comparison.
217
+ * No network call.
218
+ */
219
+ verifyCardLocal(card, expectedHash) {
220
+ return (0, sha256_1.verifyCardHash)(card, expectedHash);
221
+ }
175
222
  // Yellow Pages convenience methods
176
223
  /**
177
224
  * One-step publish to Yellow Pages.
@@ -180,14 +227,30 @@ class OceanBus {
180
227
  * @example
181
228
  * await ob.publish({
182
229
  * tags: ['insurance', 'health', 'Beijing'],
183
- * description: '小王 — 10年健康险专家,免费咨询'
230
+ * description: '小王 — 10年健康险专家,免费咨询',
231
+ * summary: '10年健康险专家,免费咨询',
232
+ * card: myAgentCard, // SDK auto-computes card_hash
233
+ * a2a_compatible: true,
184
234
  * });
185
235
  */
186
236
  async publish(options) {
187
237
  const key = await this.createServiceKey();
188
238
  const openid = await this.getOpenId();
189
239
  this.l1.yellowPages.setIdentity(openid, key.signer, key.publicKey);
190
- return this.l1.yellowPages.publish(options);
240
+ // Auto-compute card_hash from card if provided
241
+ let cardHash = options.card_hash;
242
+ if (!cardHash && options.card) {
243
+ cardHash = (0, sha256_1.computeCardHash)(options.card);
244
+ }
245
+ return this.l1.yellowPages.publish({
246
+ tags: options.tags,
247
+ description: options.description,
248
+ summary: options.summary,
249
+ card_hash: cardHash,
250
+ a2a_compatible: options.a2a_compatible,
251
+ a2a_endpoint: options.a2a_endpoint,
252
+ autoHeartbeat: options.autoHeartbeat,
253
+ });
191
254
  }
192
255
  /**
193
256
  * One-step unpublish from Yellow Pages.
@@ -196,6 +259,14 @@ class OceanBus {
196
259
  async unpublish() {
197
260
  return this.l1.yellowPages.unpublish();
198
261
  }
262
+ // Reputation convenience methods
263
+ /**
264
+ * Record a verifiable fact about an agent (trade, report, or service).
265
+ * Requires setIdentity on the reputation client.
266
+ */
267
+ async recordReputationFact(params) {
268
+ return this.l1.reputation.recordFact(params);
269
+ }
199
270
  // Messaging convenience methods
200
271
  async send(toOpenid, content, opts) {
201
272
  return this.messaging.send(toOpenid, content, opts?.clientMsgId);
@@ -213,6 +284,32 @@ class OceanBus {
213
284
  // Let L1Dispatcher share the unified poller instead of spinning up its own
214
285
  this.l1Dispatcher?.setUseExternalPoller(true);
215
286
  this.poller = new poller_1.AutoPollEngine(this.mailbox, async (msg) => {
287
+ // Route 0: AgentCard requests — auto-respond if handler registered
288
+ if (this.agentCardHandler && msg.content) {
289
+ try {
290
+ const parsed = JSON.parse(msg.content);
291
+ if (parsed.action === 'get_agent_card' && parsed.request_id) {
292
+ try {
293
+ const card = await this.agentCardHandler(parsed.requester_openid || msg.from_openid);
294
+ const cardHash = (0, sha256_1.computeCardHash)(card);
295
+ await this.messaging.sendJson(msg.from_openid, {
296
+ request_id: parsed.request_id,
297
+ code: 0,
298
+ data: { card, card_hash: cardHash },
299
+ });
300
+ }
301
+ catch (e) {
302
+ await this.messaging.sendJson(msg.from_openid, {
303
+ request_id: parsed.request_id,
304
+ code: -1,
305
+ msg: `AgentCard handler error: ${e.message}`,
306
+ });
307
+ }
308
+ return; // consumed
309
+ }
310
+ }
311
+ catch { /* not JSON or not a card request — fall through */ }
312
+ }
216
313
  // Route 1: L1 request/response matching (dispatcher consumes the message)
217
314
  if (this.l1Dispatcher && this.l1Dispatcher.tryDispatch(msg))
218
315
  return;
@@ -295,4 +392,9 @@ var index_2 = require("./roster/index");
295
392
  Object.defineProperty(exports, "RosterService", { enumerable: true, get: function () { return index_2.RosterService; } });
296
393
  var store_2 = require("./roster/store");
297
394
  Object.defineProperty(exports, "RosterStore", { enumerable: true, get: function () { return store_2.RosterStore; } });
395
+ // Re-export AgentCard utilities
396
+ var sha256_2 = require("./crypto/sha256");
397
+ Object.defineProperty(exports, "computeCardHash", { enumerable: true, get: function () { return sha256_2.computeCardHash; } });
398
+ Object.defineProperty(exports, "verifyCardHash", { enumerable: true, get: function () { return sha256_2.verifyCardHash; } });
399
+ Object.defineProperty(exports, "isValidCardHash", { enumerable: true, get: function () { return sha256_2.isValidCardHash; } });
298
400
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -13,5 +13,10 @@ export declare class L1Client {
13
13
  setDispatcher(dispatcher: L1Dispatcher): void;
14
14
  protected buildRequest(action: string, extra?: Record<string, unknown>): L1Request;
15
15
  sendAction(request: L1Request): Promise<L1Response>;
16
+ /**
17
+ * Send an L1 request to an arbitrary Agent (not just the service this client is bound to).
18
+ * Used for Agent-to-Agent direct requests (e.g., getAgentCard).
19
+ */
20
+ sendActionTo(destinationOpenid: string, request: L1Request): Promise<L1Response>;
16
21
  }
17
22
  //# sourceMappingURL=base-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-client.d.ts","sourceRoot":"","sources":["../../src/l1/base-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7E,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/E;AAED,qBAAa,QAAQ;IACnB,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC;IAC9B,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC;IACnC,OAAO,CAAC,UAAU,CAAsB;gBAGtC,MAAM,EAAE,WAAW,EACnB,aAAa,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,YAAY,EACzB,gBAAgB,GAAE,MAAc;IAQlC,aAAa,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI;IAI7C,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,SAAS;IAQhF,UAAU,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;CAmB1D"}
1
+ {"version":3,"file":"base-client.d.ts","sourceRoot":"","sources":["../../src/l1/base-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7E,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/E;AAED,qBAAa,QAAQ;IACnB,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC;IAC9B,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC;IACnC,OAAO,CAAC,UAAU,CAAsB;gBAGtC,MAAM,EAAE,WAAW,EACnB,aAAa,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,YAAY,EACzB,gBAAgB,GAAE,MAAc;IAQlC,aAAa,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI;IAI7C,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,SAAS;IAQhF,UAAU,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;IAoBzD;;;OAGG;IACG,YAAY,CAAC,iBAAiB,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;CAgBvF"}
@@ -41,6 +41,24 @@ class L1Client {
41
41
  // Wait for the shared dispatcher to match the response
42
42
  return responsePromise;
43
43
  }
44
+ /**
45
+ * Send an L1 request to an arbitrary Agent (not just the service this client is bound to).
46
+ * Used for Agent-to-Agent direct requests (e.g., getAgentCard).
47
+ */
48
+ async sendActionTo(destinationOpenid, request) {
49
+ if (!this.dispatcher) {
50
+ throw new errors_1.OceanBusError('L1 dispatcher not configured');
51
+ }
52
+ const responsePromise = this.dispatcher.register(request.request_id, this.requestTimeoutMs);
53
+ try {
54
+ await this.sendFn.sendJson(destinationOpenid, request);
55
+ }
56
+ catch (e) {
57
+ this.dispatcher.cancel(request.request_id);
58
+ throw e;
59
+ }
60
+ return responsePromise;
61
+ }
44
62
  }
45
63
  exports.L1Client = L1Client;
46
64
  //# sourceMappingURL=base-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-client.js","sourceRoot":"","sources":["../../src/l1/base-client.ts"],"names":[],"mappings":";;;AACA,8CAAuD;AACvD,6CAAiD;AAQjD,MAAa,QAAQ;IACT,MAAM,CAAc;IACpB,aAAa,CAAS;IACtB,gBAAgB,CAAS;IAC3B,UAAU,CAAsB;IAExC,YACE,MAAmB,EACnB,aAAqB,EACrB,UAAyB,EACzB,mBAA2B,KAAK;QAEhC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,IAAI,CAAC;QACrC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;IAED,aAAa,CAAC,UAAwB;QACpC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAES,YAAY,CAAC,MAAc,EAAE,QAAiC,EAAE;QACxE,OAAO;YACL,MAAM;YACN,UAAU,EAAE,IAAA,yBAAiB,GAAE;YAC/B,GAAG,KAAK;SACT,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAkB;QACjC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,sBAAa,CAAC,8BAA8B,CAAC,CAAC;QAC1D,CAAC;QAED,0DAA0D;QAC1D,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAE5F,8EAA8E;QAC9E,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC3C,MAAM,CAAC,CAAC;QACV,CAAC;QAED,uDAAuD;QACvD,OAAO,eAAe,CAAC;IACzB,CAAC;CACF;AAjDD,4BAiDC"}
1
+ {"version":3,"file":"base-client.js","sourceRoot":"","sources":["../../src/l1/base-client.ts"],"names":[],"mappings":";;;AACA,8CAAuD;AACvD,6CAAiD;AAQjD,MAAa,QAAQ;IACT,MAAM,CAAc;IACpB,aAAa,CAAS;IACtB,gBAAgB,CAAS;IAC3B,UAAU,CAAsB;IAExC,YACE,MAAmB,EACnB,aAAqB,EACrB,UAAyB,EACzB,mBAA2B,KAAK;QAEhC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,IAAI,CAAC;QACrC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;IAED,aAAa,CAAC,UAAwB;QACpC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAES,YAAY,CAAC,MAAc,EAAE,QAAiC,EAAE;QACxE,OAAO;YACL,MAAM;YACN,UAAU,EAAE,IAAA,yBAAiB,GAAE;YAC/B,GAAG,KAAK;SACT,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAkB;QACjC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,sBAAa,CAAC,8BAA8B,CAAC,CAAC;QAC1D,CAAC;QAED,0DAA0D;QAC1D,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAE5F,8EAA8E;QAC9E,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC3C,MAAM,CAAC,CAAC;QACV,CAAC;QAED,uDAAuD;QACvD,OAAO,eAAe,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,iBAAyB,EAAE,OAAkB;QAC9D,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,sBAAa,CAAC,8BAA8B,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAE5F,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC3C,MAAM,CAAC,CAAC;QACV,CAAC;QAED,OAAO,eAAe,CAAC;IACzB,CAAC;CACF;AAtED,4BAsEC"}
@@ -1,6 +1,6 @@
1
1
  import { L1Client, L1Transport } from './base-client';
2
2
  import type { L1Dispatcher } from './dispatcher';
3
- import type { ReputationResult } from '../types/l1';
3
+ import type { ReputationResult, PaymentQueryResult } from '../types/l1';
4
4
  import type { L1Response } from '../types/l1';
5
5
  export type PayloadSigner = (payload: Record<string, unknown>) => Promise<string>;
6
6
  export declare class ReputationClient extends L1Client {
@@ -15,9 +15,49 @@ export declare class ReputationClient extends L1Client {
15
15
  tag(targetOpenid: string, label: string, evidence?: Record<string, unknown>, openid?: string, signer?: PayloadSigner, publicKey?: string): Promise<L1Response>;
16
16
  /** untag:撤销自己打过的标签 */
17
17
  untag(targetOpenid: string, label: string, openid?: string, signer?: PayloadSigner, publicKey?: string): Promise<L1Response>;
18
- /** queryReputation:查询声誉——返回标签计数 + Agent 基本数据 */
18
+ /** recordFact:记录客观事实(由 L1 服务或系统调用)。提供 clientFactId 可防重复记录。 */
19
+ recordFact(params: {
20
+ subjectOpenid: string;
21
+ factType: 'trade' | 'report' | 'service';
22
+ factSubtype: string;
23
+ factData?: Record<string, unknown>;
24
+ proof?: Record<string, unknown>;
25
+ clientFactId?: string;
26
+ }, openid?: string, signer?: PayloadSigner, publicKey?: string): Promise<L1Response>;
27
+ /** queryReputation:查询声誉——返回 5 类事实 + 标签计数 + Agent 基本数据 */
19
28
  queryReputation(openids: string[]): Promise<L1Response<{
20
29
  results: ReputationResult[];
21
30
  }>>;
31
+ /** claimPayment:付款方声明支付 */
32
+ claimPayment(params: {
33
+ payeeOpenid: string;
34
+ amount: number;
35
+ currency: string;
36
+ chain?: string;
37
+ txHash?: string;
38
+ evidence?: string;
39
+ description?: string;
40
+ claimId?: string;
41
+ }, openid?: string, signer?: PayloadSigner, publicKey?: string): Promise<L1Response<{
42
+ claim_id: string;
43
+ status: string;
44
+ }>>;
45
+ /** confirmPayment:收款方确认/否认支付 */
46
+ confirmPayment(params: {
47
+ claimId: string;
48
+ agreed: boolean;
49
+ disputeReason?: string;
50
+ }, openid?: string, signer?: PayloadSigner, publicKey?: string): Promise<L1Response<{
51
+ claim_id: string;
52
+ status: string;
53
+ }>>;
54
+ /** queryPayments:查询支付记录 */
55
+ queryPayments(params: {
56
+ openid: string;
57
+ role?: 'payer' | 'payee';
58
+ status?: string;
59
+ limit?: number;
60
+ cursor?: string | null;
61
+ }): Promise<L1Response<PaymentQueryResult>>;
22
62
  }
23
63
  //# sourceMappingURL=reputation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reputation.d.ts","sourceRoot":"","sources":["../../src/l1/reputation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAIV,gBAAgB,EACjB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAElF,qBAAa,gBAAiB,SAAQ,QAAQ;IAC5C,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,gBAAgB,CAAuB;gBAG7C,MAAM,EAAE,WAAW,EACnB,aAAa,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,YAAY,EACzB,gBAAgB,GAAE,MAAc;IAKlC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAM5E,aAAa,IAAI,IAAI;IAMrB,OAAO,CAAC,eAAe;IAUvB,yBAAyB;IACnB,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAepK,sBAAsB;IAChB,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAclI,gDAAgD;IAC1C,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,gBAAgB,EAAE,CAAA;KAAE,CAAC,CAAC;CAQ/F"}
1
+ {"version":3,"file":"reputation.d.ts","sourceRoot":"","sources":["../../src/l1/reputation.ts"],"names":[],"mappings":"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"}