@hashgraphonline/standards-agent-kit 0.2.137 → 0.2.139

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 (195) hide show
  1. package/dist/cjs/builders/hcs10/hcs10-builder.d.ts +1 -0
  2. package/dist/cjs/builders/hcs2/hcs2-builder.d.ts +8 -7
  3. package/dist/cjs/builders/hcs6/hcs6-builder.d.ts +5 -4
  4. package/dist/cjs/index.d.ts +4 -0
  5. package/dist/cjs/signing/bytes-registry.d.ts +17 -0
  6. package/dist/cjs/signing/signer-provider.d.ts +45 -0
  7. package/dist/cjs/standards-agent-kit.cjs +1 -1
  8. package/dist/cjs/standards-agent-kit.cjs.map +1 -1
  9. package/dist/cjs/tools/hcs10/InitiateConnectionTool.d.ts +4 -4
  10. package/dist/cjs/tools/hcs2/CreateRegistryTool.d.ts +2 -2
  11. package/dist/cjs/tools/hcs2/DeleteEntryTool.d.ts +2 -2
  12. package/dist/cjs/tools/hcs2/UpdateEntryTool.d.ts +2 -2
  13. package/dist/cjs/tools/hcs6/RegisterDynamicHashinalTool.d.ts +10 -10
  14. package/dist/cjs/tools/hcs6/UpdateDynamicHashinalTool.d.ts +8 -8
  15. package/dist/cjs/tools/inscriber/InscribeFromBufferTool.d.ts +5 -4
  16. package/dist/cjs/tools/inscriber/InscribeFromFileTool.d.ts +2 -2
  17. package/dist/cjs/tools/inscriber/InscribeFromUrlTool.d.ts +4 -4
  18. package/dist/cjs/tools/inscriber/InscribeHashinalTool.d.ts +4 -4
  19. package/dist/cjs/types/tx-results.d.ts +15 -0
  20. package/dist/cjs/utils/CodedError.d.ts +4 -0
  21. package/dist/cjs/validation/hip412-schemas.d.ts +2 -2
  22. package/dist/es/builders/hcs10/hcs10-builder.d.ts +1 -0
  23. package/dist/es/builders/hcs2/hcs2-builder.d.ts +8 -7
  24. package/dist/es/builders/hcs6/hcs6-builder.d.ts +5 -4
  25. package/dist/es/index.d.ts +4 -0
  26. package/dist/es/signing/bytes-registry.d.ts +17 -0
  27. package/dist/es/signing/signer-provider.d.ts +45 -0
  28. package/dist/es/standards-agent-kit.es.js +46 -42
  29. package/dist/es/standards-agent-kit.es.js.map +1 -1
  30. package/dist/es/standards-agent-kit.es10.js +24 -83
  31. package/dist/es/standards-agent-kit.es10.js.map +1 -1
  32. package/dist/es/standards-agent-kit.es11.js +224 -20
  33. package/dist/es/standards-agent-kit.es11.js.map +1 -1
  34. package/dist/es/standards-agent-kit.es12.js +78 -27
  35. package/dist/es/standards-agent-kit.es12.js.map +1 -1
  36. package/dist/es/standards-agent-kit.es13.js +26 -36
  37. package/dist/es/standards-agent-kit.es13.js.map +1 -1
  38. package/dist/es/standards-agent-kit.es14.js +17 -39
  39. package/dist/es/standards-agent-kit.es14.js.map +1 -1
  40. package/dist/es/standards-agent-kit.es15.js +36 -58
  41. package/dist/es/standards-agent-kit.es15.js.map +1 -1
  42. package/dist/es/standards-agent-kit.es16.js +45 -18
  43. package/dist/es/standards-agent-kit.es16.js.map +1 -1
  44. package/dist/es/standards-agent-kit.es17.js +53 -16
  45. package/dist/es/standards-agent-kit.es17.js.map +1 -1
  46. package/dist/es/standards-agent-kit.es18.js +18 -28
  47. package/dist/es/standards-agent-kit.es18.js.map +1 -1
  48. package/dist/es/standards-agent-kit.es19.js +26 -12
  49. package/dist/es/standards-agent-kit.es19.js.map +1 -1
  50. package/dist/es/standards-agent-kit.es20.js +38 -136
  51. package/dist/es/standards-agent-kit.es20.js.map +1 -1
  52. package/dist/es/standards-agent-kit.es21.js +13 -24
  53. package/dist/es/standards-agent-kit.es21.js.map +1 -1
  54. package/dist/es/standards-agent-kit.es22.js +136 -39
  55. package/dist/es/standards-agent-kit.es22.js.map +1 -1
  56. package/dist/es/standards-agent-kit.es23.js +25 -41
  57. package/dist/es/standards-agent-kit.es23.js.map +1 -1
  58. package/dist/es/standards-agent-kit.es24.js +49 -31
  59. package/dist/es/standards-agent-kit.es24.js.map +1 -1
  60. package/dist/es/standards-agent-kit.es25.js +34 -18
  61. package/dist/es/standards-agent-kit.es25.js.map +1 -1
  62. package/dist/es/standards-agent-kit.es26.js +35 -19
  63. package/dist/es/standards-agent-kit.es26.js.map +1 -1
  64. package/dist/es/standards-agent-kit.es27.js +45 -32
  65. package/dist/es/standards-agent-kit.es27.js.map +1 -1
  66. package/dist/es/standards-agent-kit.es28.js +54 -25
  67. package/dist/es/standards-agent-kit.es28.js.map +1 -1
  68. package/dist/es/standards-agent-kit.es29.js +35 -23
  69. package/dist/es/standards-agent-kit.es29.js.map +1 -1
  70. package/dist/es/standards-agent-kit.es3.js +41 -1549
  71. package/dist/es/standards-agent-kit.es3.js.map +1 -1
  72. package/dist/es/standards-agent-kit.es30.js +23 -39
  73. package/dist/es/standards-agent-kit.es30.js.map +1 -1
  74. package/dist/es/standards-agent-kit.es31.js +30 -28
  75. package/dist/es/standards-agent-kit.es31.js.map +1 -1
  76. package/dist/es/standards-agent-kit.es32.js +45 -32
  77. package/dist/es/standards-agent-kit.es32.js.map +1 -1
  78. package/dist/es/standards-agent-kit.es33.js +50 -89
  79. package/dist/es/standards-agent-kit.es33.js.map +1 -1
  80. package/dist/es/standards-agent-kit.es34.js +35 -234
  81. package/dist/es/standards-agent-kit.es34.js.map +1 -1
  82. package/dist/es/standards-agent-kit.es35.js +87 -213
  83. package/dist/es/standards-agent-kit.es35.js.map +1 -1
  84. package/dist/es/standards-agent-kit.es36.js +185 -129
  85. package/dist/es/standards-agent-kit.es36.js.map +1 -1
  86. package/dist/es/standards-agent-kit.es37.js +167 -563
  87. package/dist/es/standards-agent-kit.es37.js.map +1 -1
  88. package/dist/es/standards-agent-kit.es38.js +244 -30
  89. package/dist/es/standards-agent-kit.es38.js.map +1 -1
  90. package/dist/es/standards-agent-kit.es39.js +483 -206
  91. package/dist/es/standards-agent-kit.es39.js.map +1 -1
  92. package/dist/es/standards-agent-kit.es4.js +359 -81
  93. package/dist/es/standards-agent-kit.es4.js.map +1 -1
  94. package/dist/es/standards-agent-kit.es40.js +39 -135
  95. package/dist/es/standards-agent-kit.es40.js.map +1 -1
  96. package/dist/es/standards-agent-kit.es41.js +244 -28
  97. package/dist/es/standards-agent-kit.es41.js.map +1 -1
  98. package/dist/es/standards-agent-kit.es42.js +132 -418
  99. package/dist/es/standards-agent-kit.es42.js.map +1 -1
  100. package/dist/es/standards-agent-kit.es43.js +28 -184
  101. package/dist/es/standards-agent-kit.es43.js.map +1 -1
  102. package/dist/es/standards-agent-kit.es44.js +423 -3
  103. package/dist/es/standards-agent-kit.es44.js.map +1 -1
  104. package/dist/es/standards-agent-kit.es45.js +185 -24
  105. package/dist/es/standards-agent-kit.es45.js.map +1 -1
  106. package/dist/es/standards-agent-kit.es46.js +3 -3
  107. package/dist/es/standards-agent-kit.es46.js.map +1 -1
  108. package/dist/es/standards-agent-kit.es47.js +24 -20
  109. package/dist/es/standards-agent-kit.es47.js.map +1 -1
  110. package/dist/es/standards-agent-kit.es48.js +6 -52
  111. package/dist/es/standards-agent-kit.es48.js.map +1 -1
  112. package/dist/es/standards-agent-kit.es49.js +4 -3
  113. package/dist/es/standards-agent-kit.es49.js.map +1 -1
  114. package/dist/es/standards-agent-kit.es5.js +1747 -73
  115. package/dist/es/standards-agent-kit.es5.js.map +1 -1
  116. package/dist/es/standards-agent-kit.es50.js +3 -39
  117. package/dist/es/standards-agent-kit.es50.js.map +1 -1
  118. package/dist/es/standards-agent-kit.es51.js +18 -16
  119. package/dist/es/standards-agent-kit.es51.js.map +1 -1
  120. package/dist/es/standards-agent-kit.es52.js +48 -68
  121. package/dist/es/standards-agent-kit.es52.js.map +1 -1
  122. package/dist/es/standards-agent-kit.es53.js +6 -0
  123. package/dist/es/standards-agent-kit.es53.js.map +1 -0
  124. package/dist/es/standards-agent-kit.es54.js +43 -0
  125. package/dist/es/standards-agent-kit.es54.js.map +1 -0
  126. package/dist/es/standards-agent-kit.es55.js +22 -0
  127. package/dist/es/standards-agent-kit.es55.js.map +1 -0
  128. package/dist/es/standards-agent-kit.es56.js +77 -0
  129. package/dist/es/standards-agent-kit.es56.js.map +1 -0
  130. package/dist/es/standards-agent-kit.es6.js +332 -173
  131. package/dist/es/standards-agent-kit.es6.js.map +1 -1
  132. package/dist/es/standards-agent-kit.es7.js +142 -293
  133. package/dist/es/standards-agent-kit.es7.js.map +1 -1
  134. package/dist/es/standards-agent-kit.es8.js +201 -21
  135. package/dist/es/standards-agent-kit.es8.js.map +1 -1
  136. package/dist/es/standards-agent-kit.es9.js +301 -213
  137. package/dist/es/standards-agent-kit.es9.js.map +1 -1
  138. package/dist/es/tools/hcs10/InitiateConnectionTool.d.ts +4 -4
  139. package/dist/es/tools/hcs2/CreateRegistryTool.d.ts +2 -2
  140. package/dist/es/tools/hcs2/DeleteEntryTool.d.ts +2 -2
  141. package/dist/es/tools/hcs2/UpdateEntryTool.d.ts +2 -2
  142. package/dist/es/tools/hcs6/RegisterDynamicHashinalTool.d.ts +10 -10
  143. package/dist/es/tools/hcs6/UpdateDynamicHashinalTool.d.ts +8 -8
  144. package/dist/es/tools/inscriber/InscribeFromBufferTool.d.ts +5 -4
  145. package/dist/es/tools/inscriber/InscribeFromFileTool.d.ts +2 -2
  146. package/dist/es/tools/inscriber/InscribeFromUrlTool.d.ts +4 -4
  147. package/dist/es/tools/inscriber/InscribeHashinalTool.d.ts +4 -4
  148. package/dist/es/types/tx-results.d.ts +15 -0
  149. package/dist/es/utils/CodedError.d.ts +4 -0
  150. package/dist/es/validation/hip412-schemas.d.ts +2 -2
  151. package/dist/umd/builders/hcs10/hcs10-builder.d.ts +1 -0
  152. package/dist/umd/builders/hcs2/hcs2-builder.d.ts +8 -7
  153. package/dist/umd/builders/hcs6/hcs6-builder.d.ts +5 -4
  154. package/dist/umd/index.d.ts +4 -0
  155. package/dist/umd/signing/bytes-registry.d.ts +17 -0
  156. package/dist/umd/signing/signer-provider.d.ts +45 -0
  157. package/dist/umd/standards-agent-kit.umd.js +1 -1
  158. package/dist/umd/standards-agent-kit.umd.js.map +1 -1
  159. package/dist/umd/tools/hcs10/InitiateConnectionTool.d.ts +4 -4
  160. package/dist/umd/tools/hcs2/CreateRegistryTool.d.ts +2 -2
  161. package/dist/umd/tools/hcs2/DeleteEntryTool.d.ts +2 -2
  162. package/dist/umd/tools/hcs2/UpdateEntryTool.d.ts +2 -2
  163. package/dist/umd/tools/hcs6/RegisterDynamicHashinalTool.d.ts +10 -10
  164. package/dist/umd/tools/hcs6/UpdateDynamicHashinalTool.d.ts +8 -8
  165. package/dist/umd/tools/inscriber/InscribeFromBufferTool.d.ts +5 -4
  166. package/dist/umd/tools/inscriber/InscribeFromFileTool.d.ts +2 -2
  167. package/dist/umd/tools/inscriber/InscribeFromUrlTool.d.ts +4 -4
  168. package/dist/umd/tools/inscriber/InscribeHashinalTool.d.ts +4 -4
  169. package/dist/umd/types/tx-results.d.ts +15 -0
  170. package/dist/umd/utils/CodedError.d.ts +4 -0
  171. package/dist/umd/validation/hip412-schemas.d.ts +2 -2
  172. package/package.json +3 -3
  173. package/src/builders/hcs10/hcs10-builder.ts +239 -10
  174. package/src/builders/hcs2/hcs2-builder.ts +302 -9
  175. package/src/builders/hcs6/hcs6-builder.ts +79 -4
  176. package/src/hcs10/HCS10Client.ts +1 -1
  177. package/src/index.ts +5 -1
  178. package/src/lib/zod-render/schema-extension.ts +0 -1
  179. package/src/signing/bytes-registry.ts +501 -0
  180. package/src/signing/signer-provider.ts +120 -0
  181. package/src/tools/hcs2/CreateRegistryTool.ts +30 -5
  182. package/src/tools/hcs2/DeleteEntryTool.ts +16 -2
  183. package/src/tools/hcs2/MigrateRegistryTool.ts +16 -2
  184. package/src/tools/hcs2/QueryRegistryTool.ts +11 -2
  185. package/src/tools/hcs2/RegisterEntryTool.ts +17 -3
  186. package/src/tools/hcs2/UpdateEntryTool.ts +16 -2
  187. package/src/tools/hcs6/CreateDynamicRegistryTool.ts +17 -3
  188. package/src/tools/hcs6/RegisterDynamicHashinalTool.ts +17 -3
  189. package/src/tools/hcs6/UpdateDynamicHashinalTool.ts +17 -3
  190. package/src/tools/inscriber/InscribeFromBufferTool.ts +90 -2
  191. package/src/tools/inscriber/InscribeHashinalTool.ts +25 -134
  192. package/src/types/tx-results.ts +18 -0
  193. package/src/utils/CodedError.ts +8 -0
  194. package/src/utils/Encryption.ts +0 -2
  195. package/src/utils/ensure-agent-has-hbar.ts +4 -5
@@ -1,212 +1,371 @@
1
1
  import { BaseServiceBuilder } from "hedera-agent-kit";
2
- import { inscribe, inscribeWithSigner, getTopicId, retrieveInscription } from "@hashgraphonline/standards-sdk";
3
- const _InscriberBuilder = class _InscriberBuilder extends BaseServiceBuilder {
2
+ import { HederaMirrorNode, HCS2Client } from "@hashgraphonline/standards-sdk";
3
+ import { SignerProviderRegistry } from "./standards-agent-kit.es3.js";
4
+ import { CodedError } from "./standards-agent-kit.es48.js";
5
+ class HCS2Builder extends BaseServiceBuilder {
4
6
  constructor(hederaKit) {
5
7
  super(hederaKit);
6
8
  }
7
- getOperationalMode() {
8
- return this.hederaKit.operationalMode;
9
- }
10
- static setSignerProvider(provider) {
11
- _InscriberBuilder.signerProvider = provider;
12
- }
13
- static setWalletInfoResolver(resolver) {
14
- _InscriberBuilder.walletInfoResolver = resolver;
15
- }
16
- static setStartInscriptionDelegate(delegate) {
17
- _InscriberBuilder.startInscriptionDelegate = delegate;
18
- }
19
- static setWalletExecutor(executor) {
20
- _InscriberBuilder.walletExecutor = executor;
9
+ /**
10
+ * Get or create HCS-2 client
11
+ */
12
+ async getHCS2Client() {
13
+ if (!this.hcs2Client) {
14
+ const operatorId = this.hederaKit.signer.getAccountId().toString();
15
+ const operatorPrivateKey = this.hederaKit.signer?.getOperatorPrivateKey() ? this.hederaKit.signer.getOperatorPrivateKey().toStringRaw() : "";
16
+ const network = this.hederaKit.client.network;
17
+ const networkType = network.toString().includes("mainnet") ? "mainnet" : "testnet";
18
+ let keyTypeHint;
19
+ try {
20
+ const mirror = new HederaMirrorNode(networkType);
21
+ const info = await mirror.requestAccount(operatorId);
22
+ const t = info?.key?._type;
23
+ if (t) {
24
+ const upper = t.toUpperCase();
25
+ if (upper.includes("ED25519")) keyTypeHint = "ed25519";
26
+ else if (upper.includes("ECDSA")) keyTypeHint = "ecdsa";
27
+ }
28
+ } catch {
29
+ }
30
+ const config = {
31
+ network: networkType,
32
+ operatorId,
33
+ operatorKey: operatorPrivateKey,
34
+ ...keyTypeHint ? { keyType: keyTypeHint } : {}
35
+ };
36
+ this.hcs2Client = new HCS2Client(config);
37
+ }
38
+ return this.hcs2Client;
21
39
  }
22
40
  /**
23
- * Control fallback behavior. When true, wallet must be available for execution paths.
41
+ * Create a new HCS-2 registry
42
+ * Note: This executes the transaction directly via HCS2Client
24
43
  */
25
- static setPreferWalletOnly(flag) {
26
- _InscriberBuilder.preferWalletOnly = !!flag;
44
+ async createRegistry(options = {}) {
45
+ const exec = SignerProviderRegistry.walletExecutor;
46
+ const preferWallet = SignerProviderRegistry.preferWalletOnly;
47
+ const hasPrivateKey = !!(this.hederaKit?.signer?.getOperatorPrivateKey && this.hederaKit.signer.getOperatorPrivateKey());
48
+ if (exec) {
49
+ const start = SignerProviderRegistry.startHCSDelegate;
50
+ if (start) {
51
+ try {
52
+ const request = { options };
53
+ const network = this.hederaKit.client.network.toString().includes("mainnet") ? "mainnet" : "testnet";
54
+ const { transactionBytes } = await start("hcs2.createRegistry", request, network);
55
+ if (transactionBytes) {
56
+ return { success: true, transactionBytes };
57
+ }
58
+ } catch (err) {
59
+ if (preferWallet) {
60
+ throw new CodedError("wallet_submit_failed", `wallet_submit_failed: ${err instanceof Error ? err.message : String(err)}`);
61
+ }
62
+ }
63
+ }
64
+ if (preferWallet) {
65
+ throw new CodedError("wallet_unavailable", "WalletExecutor not configured for hcs2.createRegistry");
66
+ }
67
+ }
68
+ if (!hasPrivateKey) {
69
+ throw new CodedError("wallet_unavailable", "No wallet executor and no operator private key available for server execution");
70
+ }
71
+ const client = await this.getHCS2Client();
72
+ return await client.createRegistry(options);
27
73
  }
28
- async getSigner() {
29
- const provider = _InscriberBuilder.signerProvider;
30
- if (!provider) return null;
74
+ /**
75
+ * Register a new entry in an HCS-2 registry
76
+ */
77
+ async registerEntry(registryTopicId, options) {
78
+ const exec = SignerProviderRegistry.walletExecutor;
79
+ const preferWallet = SignerProviderRegistry.preferWalletOnly;
80
+ const network = this.hederaKit.client.network.toString().includes("mainnet") ? "mainnet" : "testnet";
81
+ const hasPrivateKey = !!(this.hederaKit?.signer?.getOperatorPrivateKey && this.hederaKit.signer.getOperatorPrivateKey());
31
82
  try {
32
- const maybe = provider();
33
- return maybe && typeof maybe.then === "function" ? await maybe : maybe;
83
+ const { ByteBuildRegistry } = await import("./standards-agent-kit.es4.js");
84
+ if (ByteBuildRegistry.has("hcs2.registerEntry")) {
85
+ const built = await ByteBuildRegistry.build("hcs2.registerEntry", this.hederaKit, { registryTopicId, options });
86
+ if (built && built.transactionBytes) {
87
+ if (exec) {
88
+ return { success: true, transactionBytes: built.transactionBytes };
89
+ }
90
+ if (!hasPrivateKey) {
91
+ return { success: true, transactionBytes: built.transactionBytes };
92
+ }
93
+ }
94
+ }
34
95
  } catch {
35
- return null;
36
96
  }
97
+ const start = SignerProviderRegistry.startHCSDelegate;
98
+ if (start) {
99
+ try {
100
+ const request = {
101
+ registryTopicId,
102
+ options
103
+ };
104
+ const { transactionBytes } = await start("hcs2.registerEntry", request, network);
105
+ if (transactionBytes) {
106
+ if (exec) {
107
+ return { success: true, transactionBytes };
108
+ }
109
+ if (!hasPrivateKey) {
110
+ return { success: true, transactionBytes };
111
+ }
112
+ }
113
+ } catch (err) {
114
+ if (preferWallet) {
115
+ const msg = `wallet_submit_failed: ${err instanceof Error ? err.message : String(err)}`;
116
+ throw new CodedError("wallet_submit_failed", msg);
117
+ }
118
+ }
119
+ }
120
+ if (preferWallet) {
121
+ throw new CodedError("wallet_unavailable", "WalletExecutor not configured for hcs2.registerEntry");
122
+ }
123
+ if (!hasPrivateKey) {
124
+ throw new CodedError("wallet_unavailable", "No wallet executor and no operator private key available for server execution");
125
+ }
126
+ const client = await this.getHCS2Client();
127
+ return await client.registerEntry(registryTopicId, options);
37
128
  }
38
129
  /**
39
- * Get or create Inscription SDK - temporarily returns null since we don't have the actual SDK
130
+ * Update an existing entry in an HCS-2 registry
40
131
  */
41
- async getInscriptionSDK(_options) {
42
- return null;
132
+ async updateEntry(registryTopicId, options) {
133
+ const exec = SignerProviderRegistry.walletExecutor;
134
+ const preferWallet = SignerProviderRegistry.preferWalletOnly;
135
+ const network = this.hederaKit.client.network.toString().includes("mainnet") ? "mainnet" : "testnet";
136
+ const hasPrivateKey = !!(this.hederaKit?.signer?.getOperatorPrivateKey && this.hederaKit.signer.getOperatorPrivateKey());
137
+ try {
138
+ const { ByteBuildRegistry } = await import("./standards-agent-kit.es4.js");
139
+ if (ByteBuildRegistry.has("hcs2.updateEntry")) {
140
+ const built = await ByteBuildRegistry.build("hcs2.updateEntry", this.hederaKit, { registryTopicId, options });
141
+ if (built && built.transactionBytes) {
142
+ if (exec) {
143
+ return { success: true, transactionBytes: built.transactionBytes };
144
+ }
145
+ if (!hasPrivateKey) {
146
+ return { success: true, transactionBytes: built.transactionBytes };
147
+ }
148
+ }
149
+ }
150
+ } catch {
151
+ }
152
+ const start = SignerProviderRegistry.startHCSDelegate;
153
+ if (start) {
154
+ try {
155
+ const request = {
156
+ registryTopicId,
157
+ options
158
+ };
159
+ const { transactionBytes } = await start("hcs2.updateEntry", request, network);
160
+ if (transactionBytes) {
161
+ if (exec) {
162
+ return { success: true, transactionBytes };
163
+ }
164
+ if (!hasPrivateKey) {
165
+ return { success: true, transactionBytes };
166
+ }
167
+ }
168
+ } catch (err) {
169
+ if (preferWallet) {
170
+ const msg = `wallet_submit_failed: ${err instanceof Error ? err.message : String(err)}`;
171
+ throw new CodedError("wallet_submit_failed", msg);
172
+ }
173
+ }
174
+ }
175
+ if (preferWallet) {
176
+ throw new CodedError("wallet_unavailable", "WalletExecutor not configured for hcs2.updateEntry");
177
+ }
178
+ if (!hasPrivateKey) {
179
+ throw new CodedError("wallet_unavailable", "No wallet executor and no operator private key available for server execution");
180
+ }
181
+ const client = await this.getHCS2Client();
182
+ return await client.updateEntry(registryTopicId, options);
43
183
  }
44
184
  /**
45
- * Inscribe content using server-side authentication
185
+ * Delete an entry from an HCS-2 registry
46
186
  */
47
- async inscribe(input, options) {
48
- const operatorId = this.hederaKit.signer.getAccountId().toString();
49
- const operatorPrivateKey = this.hederaKit.signer?.getOperatorPrivateKey() ? this.hederaKit.signer.getOperatorPrivateKey().toStringRaw() : "";
50
- const network = this.hederaKit.client.network;
51
- const networkType = network.toString().includes("mainnet") ? "mainnet" : "testnet";
52
- const clientConfig = {
53
- accountId: operatorId,
54
- privateKey: operatorPrivateKey,
55
- network: networkType
56
- };
57
- return await inscribe(input, clientConfig, options);
187
+ async deleteEntry(registryTopicId, options) {
188
+ const exec = SignerProviderRegistry.walletExecutor;
189
+ const preferWallet = SignerProviderRegistry.preferWalletOnly;
190
+ const network = this.hederaKit.client.network.toString().includes("mainnet") ? "mainnet" : "testnet";
191
+ const hasPrivateKey = !!(this.hederaKit?.signer?.getOperatorPrivateKey && this.hederaKit.signer.getOperatorPrivateKey());
192
+ try {
193
+ const { ByteBuildRegistry } = await import("./standards-agent-kit.es4.js");
194
+ if (ByteBuildRegistry.has("hcs2.deleteEntry")) {
195
+ const built = await ByteBuildRegistry.build("hcs2.deleteEntry", this.hederaKit, { registryTopicId, options });
196
+ if (built && built.transactionBytes) {
197
+ if (exec) {
198
+ return { success: true, transactionBytes: built.transactionBytes };
199
+ }
200
+ if (!hasPrivateKey) {
201
+ return { success: true, transactionBytes: built.transactionBytes };
202
+ }
203
+ }
204
+ }
205
+ } catch {
206
+ }
207
+ const start = SignerProviderRegistry.startHCSDelegate;
208
+ if (start) {
209
+ try {
210
+ const request = {
211
+ registryTopicId,
212
+ options
213
+ };
214
+ const { transactionBytes } = await start("hcs2.deleteEntry", request, network);
215
+ if (transactionBytes) {
216
+ if (exec) {
217
+ return { success: true, transactionBytes };
218
+ }
219
+ if (!hasPrivateKey) {
220
+ return { success: true, transactionBytes };
221
+ }
222
+ }
223
+ } catch (err) {
224
+ if (preferWallet) {
225
+ const msg = `wallet_submit_failed: ${err instanceof Error ? err.message : String(err)}`;
226
+ throw new CodedError("wallet_submit_failed", msg);
227
+ }
228
+ }
229
+ }
230
+ if (preferWallet) {
231
+ throw new CodedError("wallet_unavailable", "WalletExecutor not configured for hcs2.deleteEntry");
232
+ }
233
+ if (!hasPrivateKey) {
234
+ throw new CodedError("wallet_unavailable", "No wallet executor and no operator private key available for server execution");
235
+ }
236
+ const client = await this.getHCS2Client();
237
+ return await client.deleteEntry(registryTopicId, options);
58
238
  }
59
239
  /**
60
- * Inscribe content using a DApp signer
240
+ * Migrate an HCS-2 registry to a new topic
61
241
  */
62
- async inscribeWithSigner(input, signer, options) {
63
- return await inscribeWithSigner(
64
- input,
65
- signer,
66
- options
67
- );
68
- }
69
- async inscribeAuto(input, options) {
70
- const signer = await this.getSigner();
71
- if (signer) {
72
- return this.inscribeWithSigner(input, signer, options);
73
- }
74
- const infoMaybe = _InscriberBuilder.walletInfoResolver ? await _InscriberBuilder.walletInfoResolver() : null;
75
- if (_InscriberBuilder.preferWalletOnly && !infoMaybe) {
76
- const err = new Error("Wallet unavailable: connect a wallet or switch to autonomous mode");
77
- err.code = "wallet_unavailable";
78
- throw err;
79
- }
80
- if (infoMaybe && _InscriberBuilder.startInscriptionDelegate && _InscriberBuilder.walletExecutor) {
81
- const holderId = infoMaybe.accountId;
82
- const network = infoMaybe.network;
83
- const ext = options;
84
- const baseRequest = {
85
- holderId,
86
- metadata: ext.metadata || {},
87
- tags: options.tags || [],
88
- mode: options.mode || "file"
89
- };
90
- if (typeof ext.fileStandard !== "undefined") {
91
- baseRequest.fileStandard = ext.fileStandard;
92
- }
93
- if (typeof ext.chunkSize !== "undefined") {
94
- baseRequest.chunkSize = ext.chunkSize;
95
- }
96
- let request = { ...baseRequest };
97
- switch (input.type) {
98
- case "url":
99
- request = { ...baseRequest, file: { type: "url", url: input.url } };
100
- break;
101
- case "file":
102
- request = { ...baseRequest, file: { type: "path", path: input.path } };
103
- break;
104
- case "buffer":
105
- request = {
106
- ...baseRequest,
107
- file: {
108
- type: "base64",
109
- base64: Buffer.from(input.buffer).toString("base64"),
110
- fileName: input.fileName,
111
- mimeType: input.mimeType
112
- }
113
- };
114
- break;
242
+ async migrateRegistry(registryTopicId, options) {
243
+ const exec = SignerProviderRegistry.walletExecutor;
244
+ const preferWallet = SignerProviderRegistry.preferWalletOnly;
245
+ const hasPrivateKey = !!(this.hederaKit?.signer?.getOperatorPrivateKey && this.hederaKit.signer.getOperatorPrivateKey());
246
+ try {
247
+ const { ByteBuildRegistry } = await import("./standards-agent-kit.es4.js");
248
+ if (ByteBuildRegistry.has("hcs2.migrateRegistry")) {
249
+ const built = await ByteBuildRegistry.build("hcs2.migrateRegistry", this.hederaKit, { registryTopicId, options });
250
+ if (built && built.transactionBytes) {
251
+ if (exec) {
252
+ return { success: true, transactionBytes: built.transactionBytes };
253
+ }
254
+ if (!hasPrivateKey) {
255
+ return { success: true, transactionBytes: built.transactionBytes };
256
+ }
257
+ }
115
258
  }
116
- if (options.mode === "hashinal") {
117
- request.metadataObject = ext.metadata;
118
- request.creator = ext.metadata?.creator || holderId;
119
- request.description = ext.metadata?.description;
120
- if (typeof ext.jsonFileURL === "string" && ext.jsonFileURL.length > 0) {
121
- request.jsonFileURL = ext.jsonFileURL;
259
+ } catch {
260
+ }
261
+ const start = SignerProviderRegistry.startHCSDelegate;
262
+ if (start) {
263
+ try {
264
+ const request = { registryTopicId, options };
265
+ const network = this.hederaKit.client.network.toString().includes("mainnet") ? "mainnet" : "testnet";
266
+ const { transactionBytes } = await start("hcs2.migrateRegistry", request, network);
267
+ if (transactionBytes) {
268
+ if (exec) {
269
+ return { success: true, transactionBytes };
270
+ }
271
+ if (!hasPrivateKey) {
272
+ return { success: true, transactionBytes };
273
+ }
274
+ }
275
+ } catch (err) {
276
+ if (preferWallet) {
277
+ const msg = `wallet_submit_failed: ${err instanceof Error ? err.message : String(err)}`;
278
+ throw new CodedError("wallet_submit_failed", msg);
122
279
  }
123
280
  }
124
- const start = await _InscriberBuilder.startInscriptionDelegate(
125
- request,
126
- network
127
- );
128
- if (!start || !start.transactionBytes) {
129
- throw new Error("Failed to start inscription (no transaction bytes)");
281
+ }
282
+ if (preferWallet) {
283
+ throw new CodedError("wallet_unavailable", "WalletExecutor not configured for hcs2.migrateRegistry");
284
+ }
285
+ if (!hasPrivateKey) {
286
+ throw new CodedError("wallet_unavailable", "No wallet executor and no operator private key available for server execution");
287
+ }
288
+ const client = await this.getHCS2Client();
289
+ return await client.migrateRegistry(registryTopicId, options);
290
+ }
291
+ /**
292
+ * Query entries from an HCS-2 registry
293
+ */
294
+ async getRegistry(topicId, options = {}) {
295
+ const client = await this.getHCS2Client();
296
+ return await client.getRegistry(topicId, options);
297
+ }
298
+ /**
299
+ * Submit a raw message to an HCS-2 topic
300
+ */
301
+ async submitMessage(topicId, payload) {
302
+ const exec = SignerProviderRegistry.walletExecutor;
303
+ const preferWallet = SignerProviderRegistry.preferWalletOnly;
304
+ const network = this.hederaKit.client.network.toString().includes("mainnet") ? "mainnet" : "testnet";
305
+ const hasPrivateKey = !!(this.hederaKit?.signer?.getOperatorPrivateKey && this.hederaKit.signer.getOperatorPrivateKey());
306
+ try {
307
+ const { ByteBuildRegistry } = await import("./standards-agent-kit.es4.js");
308
+ if (ByteBuildRegistry.has("hcs2.submitMessage")) {
309
+ const built = await ByteBuildRegistry.build("hcs2.submitMessage", this.hederaKit, { topicId, payload });
310
+ if (built && built.transactionBytes) {
311
+ if (exec) {
312
+ return { success: true, transactionBytes: built.transactionBytes };
313
+ }
314
+ if (!hasPrivateKey) {
315
+ return { success: true, transactionBytes: built.transactionBytes };
316
+ }
317
+ }
130
318
  }
131
- const exec = await _InscriberBuilder.walletExecutor(
132
- start.transactionBytes,
133
- network
134
- );
135
- const transactionId = exec?.transactionId || "";
136
- const shouldWait = options.quoteOnly ? false : options.waitForConfirmation ?? true;
137
- if (shouldWait) {
138
- const maxAttempts = options.waitMaxAttempts ?? 60;
139
- const intervalMs = options.waitIntervalMs ?? 5e3;
140
- for (let attempt = 0; attempt < maxAttempts; attempt++) {
141
- try {
142
- const retrieved = await this.retrieveInscription(
143
- transactionId,
144
- options
145
- );
146
- const topicIdFromInscription = getTopicId(retrieved);
147
- const topicId = topicIdFromInscription ?? start.topic_id;
148
- const status = retrieved.status;
149
- const isDone = status === "completed" || !!topicId;
150
- if (isDone) {
151
- const resultConfirmed = {
152
- quote: false,
153
- confirmed: true,
154
- result: {
155
- jobId: start.tx_id || "",
156
- transactionId,
157
- topicId
158
- },
159
- inscription: retrieved
160
- };
161
- return resultConfirmed;
162
- }
163
- } catch {
164
- }
165
- await new Promise((resolve) => setTimeout(resolve, intervalMs));
319
+ } catch {
320
+ }
321
+ const start = SignerProviderRegistry.startHCSDelegate;
322
+ if (start) {
323
+ try {
324
+ const request = { topicId, payload };
325
+ const { transactionBytes } = await start("hcs2.submitMessage", request, network);
326
+ if (transactionBytes) {
327
+ if (exec) {
328
+ return { success: true, transactionBytes };
329
+ }
330
+ if (!hasPrivateKey) {
331
+ return { success: true, transactionBytes };
332
+ }
333
+ }
334
+ } catch (err) {
335
+ if (preferWallet) {
336
+ const msg = `wallet_submit_failed: ${err instanceof Error ? err.message : String(err)}`;
337
+ throw new CodedError("wallet_submit_failed", msg);
166
338
  }
167
339
  }
168
- const partial = {
169
- quote: false,
170
- confirmed: false,
171
- result: {
172
- jobId: start.tx_id || "",
173
- transactionId,
174
- status: start.status,
175
- completed: start.completed
176
- },
177
- inscription: start.topic_id ? { topic_id: start.topic_id } : void 0
178
- };
179
- return partial;
180
340
  }
181
- if (_InscriberBuilder.preferWalletOnly) {
182
- const err = new Error("Wallet unavailable: connect a wallet or switch to autonomous mode");
183
- err.code = "wallet_unavailable";
184
- throw err;
341
+ if (preferWallet) {
342
+ throw new CodedError("wallet_unavailable", "WalletExecutor not configured for hcs2.submitMessage");
185
343
  }
186
- return this.inscribe(input, options);
344
+ if (!hasPrivateKey) {
345
+ throw new CodedError("wallet_unavailable", "No wallet executor and no operator private key available for server execution");
346
+ }
347
+ const client = await this.getHCS2Client();
348
+ await client.submitMessage(topicId, payload);
349
+ return { success: true };
187
350
  }
188
351
  /**
189
- * Retrieve an existing inscription
352
+ * Get topic info from mirror node
190
353
  */
191
- async retrieveInscription(transactionId, options) {
192
- const operatorId = this.hederaKit.signer.getAccountId().toString();
193
- const operatorPrivateKey = this.hederaKit.signer?.getOperatorPrivateKey() ? this.hederaKit.signer.getOperatorPrivateKey().toStringRaw() : "";
194
- return await retrieveInscription(transactionId, {
195
- ...options,
196
- accountId: operatorId,
197
- privateKey: operatorPrivateKey
198
- });
354
+ async getTopicInfo(topicId) {
355
+ const client = await this.getHCS2Client();
356
+ return await client.getTopicInfo(topicId);
199
357
  }
200
358
  /**
201
- * Close the inscription SDK
359
+ * Close the HCS-2 client
202
360
  */
203
361
  async close() {
204
- this.inscriptionSDK = void 0;
362
+ if (this.hcs2Client) {
363
+ this.hcs2Client.close();
364
+ this.hcs2Client = void 0;
365
+ }
205
366
  }
206
- };
207
- _InscriberBuilder.preferWalletOnly = false;
208
- let InscriberBuilder = _InscriberBuilder;
367
+ }
209
368
  export {
210
- InscriberBuilder
369
+ HCS2Builder
211
370
  };
212
371
  //# sourceMappingURL=standards-agent-kit.es6.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-agent-kit.es6.js","sources":["../../src/builders/inscriber/inscriber-builder.ts"],"sourcesContent":["import { BaseServiceBuilder } from 'hedera-agent-kit';\nimport type { HederaAgentKit } from 'hedera-agent-kit';\nimport {\n inscribe,\n inscribeWithSigner,\n retrieveInscription,\n InscriptionInput,\n InscriptionOptions,\n InscriptionResponse,\n RetrievedInscriptionResult,\n HederaClientConfig,\n NetworkType,\n getTopicId,\n} from '@hashgraphonline/standards-sdk';\nimport { InscriptionSDK } from '@kiloscribe/inscription-sdk';\nimport type { AgentOperationalMode } from 'hedera-agent-kit';\n\n/**\n * Type definition for DAppSigner interface compatible with inscription SDK\n */\ninterface DAppSigner {\n getAccountId(): { toString(): string };\n [key: string]: unknown;\n}\n\n/**\n * Builder for Inscription operations\n */\nexport class InscriberBuilder extends BaseServiceBuilder {\n protected inscriptionSDK?: InscriptionSDK;\n private static signerProvider?: () => Promise<DAppSigner | null> | DAppSigner | null;\n private static walletInfoResolver?: () => Promise<{ accountId: string; network: 'mainnet' | 'testnet' } | null> | { accountId: string; network: 'mainnet' | 'testnet' } | null;\n private static startInscriptionDelegate?: (\n request: Record<string, unknown>,\n network: 'mainnet' | 'testnet'\n ) => Promise<{\n transactionBytes: string;\n tx_id?: string;\n topic_id?: string;\n status?: string;\n completed?: boolean;\n }>;\n private static walletExecutor?: (\n base64: string,\n network: 'mainnet' | 'testnet'\n ) => Promise<{ transactionId: string }>;\n /** When true, do not allow server fallback; require a wallet path in Provide Bytes */\n private static preferWalletOnly = false;\n\n constructor(hederaKit: HederaAgentKit) {\n super(hederaKit);\n }\n\n public getOperationalMode(): AgentOperationalMode {\n return this.hederaKit.operationalMode as AgentOperationalMode;\n }\n\n static setSignerProvider(\n provider: () => Promise<DAppSigner | null> | DAppSigner | null\n ): void {\n InscriberBuilder.signerProvider = provider;\n }\n\n static setWalletInfoResolver(\n resolver: () => Promise<{ accountId: string; network: 'mainnet' | 'testnet' } | null> | { accountId: string; network: 'mainnet' | 'testnet' } | null\n ): void {\n InscriberBuilder.walletInfoResolver = resolver;\n }\n\n static setStartInscriptionDelegate(\n delegate: (\n request: Record<string, unknown>,\n network: 'mainnet' | 'testnet'\n ) => Promise<{ transactionBytes: string; tx_id?: string; topic_id?: string; status?: string; completed?: boolean }>\n ): void {\n InscriberBuilder.startInscriptionDelegate = delegate;\n }\n\n static setWalletExecutor(\n executor: (base64: string, network: 'mainnet' | 'testnet') => Promise<{ transactionId: string }>\n ): void {\n InscriberBuilder.walletExecutor = executor;\n }\n\n /**\n * Control fallback behavior. When true, wallet must be available for execution paths.\n */\n static setPreferWalletOnly(flag: boolean): void {\n InscriberBuilder.preferWalletOnly = !!flag;\n }\n\n async getSigner(): Promise<DAppSigner | null> {\n const provider = InscriberBuilder.signerProvider;\n if (!provider) return null;\n try {\n const maybe = provider();\n return (maybe && typeof (maybe as Promise<unknown>).then === 'function')\n ? await (maybe as Promise<DAppSigner | null>)\n : (maybe as DAppSigner | null);\n } catch {\n return null;\n }\n }\n\n /**\n * Get or create Inscription SDK - temporarily returns null since we don't have the actual SDK\n */\n protected async getInscriptionSDK(\n _options: InscriptionOptions\n ): Promise<InscriptionSDK | null> {\n return null;\n }\n\n /**\n * Inscribe content using server-side authentication\n */\n async inscribe(\n input: InscriptionInput,\n options: InscriptionOptions\n ): Promise<InscriptionResponse> {\n const operatorId = this.hederaKit.signer.getAccountId().toString();\n const operatorPrivateKey = this.hederaKit.signer?.getOperatorPrivateKey()\n ? this.hederaKit.signer.getOperatorPrivateKey().toStringRaw()\n : '';\n\n const network = this.hederaKit.client.network;\n const networkType: NetworkType = network.toString().includes('mainnet')\n ? 'mainnet'\n : 'testnet';\n\n const clientConfig: HederaClientConfig = {\n accountId: operatorId,\n privateKey: operatorPrivateKey,\n network: networkType,\n };\n\n return await inscribe(input, clientConfig, options);\n }\n\n /**\n * Inscribe content using a DApp signer\n */\n async inscribeWithSigner(\n input: InscriptionInput,\n signer: DAppSigner,\n options: InscriptionOptions\n ): Promise<InscriptionResponse> {\n return await inscribeWithSigner(\n input,\n signer as unknown as Parameters<typeof inscribeWithSigner>[1],\n options\n );\n }\n\n async inscribeAuto(\n input: InscriptionInput,\n options: InscriptionOptions\n ): Promise<InscriptionResponse> {\n const signer = await this.getSigner();\n if (signer) {\n return this.inscribeWithSigner(input, signer, options);\n }\n\n type WalletInfo = { accountId: string; network: 'mainnet' | 'testnet' };\n type WalletStartResponse = {\n transactionBytes: string;\n tx_id?: string;\n topic_id?: string;\n status?: string;\n completed?: boolean;\n };\n type WalletExecutorResponse = { transactionId: string };\n\n const infoMaybe: WalletInfo | null = InscriberBuilder.walletInfoResolver\n ? await InscriberBuilder.walletInfoResolver()\n : null;\n\n if (InscriberBuilder.preferWalletOnly && !infoMaybe) {\n const err = new Error('Wallet unavailable: connect a wallet or switch to autonomous mode');\n (err as unknown as { code: string }).code = 'wallet_unavailable';\n throw err;\n }\n\n if (\n infoMaybe &&\n InscriberBuilder.startInscriptionDelegate &&\n InscriberBuilder.walletExecutor\n ) {\n const holderId = infoMaybe.accountId;\n const network: 'mainnet' | 'testnet' = infoMaybe.network;\n\n type InscriptionOptionsExt = InscriptionOptions & {\n fileStandard?: string;\n chunkSize?: number;\n jsonFileURL?: string;\n metadata?: Record<string, unknown> & { creator?: string; description?: string };\n };\n const ext = options as InscriptionOptionsExt;\n\n const baseRequest: Record<string, unknown> = {\n holderId,\n metadata: ext.metadata || {},\n tags: options.tags || [],\n mode: options.mode || 'file',\n };\n if (typeof ext.fileStandard !== 'undefined') {\n (baseRequest as { fileStandard?: string }).fileStandard = ext.fileStandard;\n }\n if (typeof ext.chunkSize !== 'undefined') {\n (baseRequest as { chunkSize?: number }).chunkSize = ext.chunkSize;\n }\n\n let request: Record<string, unknown> = { ...baseRequest };\n switch (input.type) {\n case 'url':\n request = { ...baseRequest, file: { type: 'url', url: input.url } };\n break;\n case 'file':\n request = { ...baseRequest, file: { type: 'path', path: input.path } };\n break;\n case 'buffer':\n request = {\n ...baseRequest,\n file: {\n type: 'base64',\n base64: Buffer.from(input.buffer).toString('base64'),\n fileName: input.fileName,\n mimeType: input.mimeType,\n },\n };\n break;\n }\n\n if (options.mode === 'hashinal') {\n (request as { metadataObject?: unknown }).metadataObject = ext.metadata;\n (request as { creator?: string }).creator = ext.metadata?.creator || holderId;\n (request as { description?: string }).description = ext.metadata?.description;\n if (typeof ext.jsonFileURL === 'string' && ext.jsonFileURL.length > 0) {\n (request as { jsonFileURL?: string }).jsonFileURL = ext.jsonFileURL;\n }\n }\n\n const start: WalletStartResponse = await InscriberBuilder.startInscriptionDelegate(\n request,\n network\n );\n if (!start || !start.transactionBytes) {\n throw new Error('Failed to start inscription (no transaction bytes)');\n }\n\n const exec: WalletExecutorResponse = await InscriberBuilder.walletExecutor(\n start.transactionBytes,\n network\n );\n const transactionId = exec?.transactionId || '';\n\n const shouldWait = options.quoteOnly ? false : options.waitForConfirmation ?? true;\n if (shouldWait) {\n const maxAttempts = (options as { waitMaxAttempts?: number }).waitMaxAttempts ?? 60;\n const intervalMs = (options as { waitIntervalMs?: number }).waitIntervalMs ?? 5000;\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n try {\n const retrieved: RetrievedInscriptionResult = await this.retrieveInscription(\n transactionId,\n options\n );\n const topicIdFromInscription: string | undefined = getTopicId(retrieved as unknown);\n const topicId: string | undefined = topicIdFromInscription ?? start.topic_id;\n const status: string | undefined = (retrieved as { status?: string }).status;\n const isDone = status === 'completed' || !!topicId;\n if (isDone) {\n const resultConfirmed: InscriptionResponse = {\n quote: false,\n confirmed: true,\n result: {\n jobId: start.tx_id || '',\n transactionId,\n topicId,\n },\n inscription: retrieved,\n } as unknown as InscriptionResponse;\n return resultConfirmed;\n }\n } catch {\n }\n await new Promise((resolve) => setTimeout(resolve, intervalMs));\n }\n }\n\n const partial: InscriptionResponse = {\n quote: false,\n confirmed: false,\n result: {\n jobId: start.tx_id || '',\n transactionId,\n status: start.status,\n completed: start.completed,\n },\n inscription: start.topic_id ? { topic_id: start.topic_id } : undefined,\n } as unknown as InscriptionResponse;\n return partial;\n }\n\n if (InscriberBuilder.preferWalletOnly) {\n const err = new Error('Wallet unavailable: connect a wallet or switch to autonomous mode');\n (err as unknown as { code: string }).code = 'wallet_unavailable';\n throw err;\n }\n return this.inscribe(input, options);\n }\n\n /**\n * Retrieve an existing inscription\n */\n async retrieveInscription(\n transactionId: string,\n options: InscriptionOptions\n ): Promise<RetrievedInscriptionResult> {\n const operatorId = this.hederaKit.signer.getAccountId().toString();\n const operatorPrivateKey = this.hederaKit.signer?.getOperatorPrivateKey()\n ? this.hederaKit.signer.getOperatorPrivateKey().toStringRaw()\n : '';\n\n return await retrieveInscription(transactionId, {\n ...options,\n accountId: operatorId,\n privateKey: operatorPrivateKey,\n });\n }\n\n /**\n * Close the inscription SDK\n */\n async close(): Promise<void> {\n this.inscriptionSDK = undefined;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"standards-agent-kit.es6.js","sources":["../../src/builders/hcs2/hcs2-builder.ts"],"sourcesContent":["import { BaseServiceBuilder } from 'hedera-agent-kit';\nimport type { HederaAgentKit } from 'hedera-agent-kit';\nimport {\n HCS2Client,\n SDKHCS2ClientConfig,\n CreateRegistryOptions,\n RegisterEntryOptions,\n UpdateEntryOptions,\n DeleteEntryOptions,\n MigrateTopicOptions,\n QueryRegistryOptions,\n TopicRegistrationResponse,\n RegistryOperationResponse,\n TopicRegistry,\n NetworkType,\n HederaMirrorNode,\n} from '@hashgraphonline/standards-sdk';\nimport { SignerProviderRegistry, type NetworkString } from '../../signing/signer-provider';\nimport type { TopicRegistrationResult, RegistryOperationResult, SubmitMessageResult } from '../../types/tx-results';\nimport { CodedError } from '../../utils/CodedError';\n\n/**\n * Builder for HCS-2 operations that delegates to HCS2Client\n */\nexport class HCS2Builder extends BaseServiceBuilder {\n protected hcs2Client?: HCS2Client;\n\n constructor(hederaKit: HederaAgentKit) {\n super(hederaKit);\n }\n\n /**\n * Get or create HCS-2 client\n */\n protected async getHCS2Client(): Promise<HCS2Client> {\n if (!this.hcs2Client) {\n const operatorId = this.hederaKit.signer.getAccountId().toString();\n const operatorPrivateKey = this.hederaKit.signer?.getOperatorPrivateKey()\n ? this.hederaKit.signer.getOperatorPrivateKey().toStringRaw()\n : '';\n\n const network = this.hederaKit.client.network;\n const networkType: NetworkType = network.toString().includes('mainnet')\n ? 'mainnet'\n : 'testnet';\n\n let keyTypeHint: 'ed25519' | 'ecdsa' | undefined;\n try {\n const mirror = new HederaMirrorNode(networkType);\n const info = await mirror.requestAccount(operatorId);\n const t = (info as any)?.key?._type as string | undefined;\n if (t) {\n const upper = t.toUpperCase();\n if (upper.includes('ED25519')) keyTypeHint = 'ed25519';\n else if (upper.includes('ECDSA')) keyTypeHint = 'ecdsa';\n }\n } catch {}\n\n const config: SDKHCS2ClientConfig = {\n network: networkType,\n operatorId: operatorId,\n operatorKey: operatorPrivateKey,\n ...(keyTypeHint ? { keyType: keyTypeHint } : {}),\n };\n\n this.hcs2Client = new HCS2Client(config);\n }\n return this.hcs2Client;\n }\n\n /**\n * Create a new HCS-2 registry\n * Note: This executes the transaction directly via HCS2Client\n */\n async createRegistry(\n options: CreateRegistryOptions = {}\n ): Promise<TopicRegistrationResult> {\n const exec = SignerProviderRegistry.walletExecutor;\n const preferWallet = SignerProviderRegistry.preferWalletOnly;\n const hasPrivateKey = !!(this.hederaKit?.signer?.getOperatorPrivateKey && this.hederaKit.signer.getOperatorPrivateKey());\n\n if (exec) {\n const start = SignerProviderRegistry.startHCSDelegate;\n if (start) {\n try {\n const request: Record<string, unknown> = { options };\n const network = (this.hederaKit.client.network.toString().includes('mainnet') ? 'mainnet' : 'testnet') as NetworkString;\n const { transactionBytes } = await start('hcs2.createRegistry', request, network);\n if (transactionBytes) {\n return { success: true, transactionBytes };\n }\n } catch (err) {\n if (preferWallet) {\n throw new CodedError('wallet_submit_failed', `wallet_submit_failed: ${err instanceof Error ? err.message : String(err)}`);\n }\n }\n }\n if (preferWallet) {\n throw new CodedError('wallet_unavailable', 'WalletExecutor not configured for hcs2.createRegistry');\n }\n }\n\n if (!hasPrivateKey) {\n throw new CodedError('wallet_unavailable', 'No wallet executor and no operator private key available for server execution');\n }\n const client = await this.getHCS2Client();\n return await client.createRegistry(options);\n }\n /**\n * Register a new entry in an HCS-2 registry\n */\n async registerEntry(\n registryTopicId: string,\n options: RegisterEntryOptions\n ): Promise<RegistryOperationResult> {\n const exec = SignerProviderRegistry.walletExecutor;\n const preferWallet = SignerProviderRegistry.preferWalletOnly;\n const network = (this.hederaKit.client.network.toString().includes('mainnet') ? 'mainnet' : 'testnet') as NetworkString;\n const hasPrivateKey = !!(this.hederaKit?.signer?.getOperatorPrivateKey && this.hederaKit.signer.getOperatorPrivateKey());\n\n try {\n const { ByteBuildRegistry } = await import('../../signing/bytes-registry');\n if (ByteBuildRegistry.has('hcs2.registerEntry')) {\n const built = await ByteBuildRegistry.build('hcs2.registerEntry', this.hederaKit, { registryTopicId, options });\n if (built && built.transactionBytes) {\n if (exec) {\n return { success: true, transactionBytes: built.transactionBytes };\n }\n if (!hasPrivateKey) {\n return { success: true, transactionBytes: built.transactionBytes };\n }\n }\n }\n } catch {}\n\n const start = SignerProviderRegistry.startHCSDelegate;\n if (start) {\n try {\n const request: Record<string, unknown> = {\n registryTopicId,\n options,\n };\n const { transactionBytes } = await start('hcs2.registerEntry', request, network);\n if (transactionBytes) {\n if (exec) {\n return { success: true, transactionBytes };\n }\n if (!hasPrivateKey) {\n return { success: true, transactionBytes };\n }\n }\n } catch (err) {\n if (preferWallet) {\n const msg = `wallet_submit_failed: ${err instanceof Error ? err.message : String(err)}`;\n throw new CodedError('wallet_submit_failed', msg);\n }\n }\n }\n\n if (preferWallet) {\n throw new CodedError('wallet_unavailable', 'WalletExecutor not configured for hcs2.registerEntry');\n }\n\n if (!hasPrivateKey) {\n throw new CodedError('wallet_unavailable', 'No wallet executor and no operator private key available for server execution');\n }\n const client = await this.getHCS2Client();\n return await client.registerEntry(registryTopicId, options);\n }\n\n /**\n * Update an existing entry in an HCS-2 registry\n */\n async updateEntry(\n registryTopicId: string,\n options: UpdateEntryOptions\n ): Promise<RegistryOperationResult> {\n const exec = SignerProviderRegistry.walletExecutor;\n const preferWallet = SignerProviderRegistry.preferWalletOnly;\n const network = (this.hederaKit.client.network.toString().includes('mainnet') ? 'mainnet' : 'testnet') as NetworkString;\n const hasPrivateKey = !!(this.hederaKit?.signer?.getOperatorPrivateKey && this.hederaKit.signer.getOperatorPrivateKey());\n\n try {\n const { ByteBuildRegistry } = await import('../../signing/bytes-registry');\n if (ByteBuildRegistry.has('hcs2.updateEntry')) {\n const built = await ByteBuildRegistry.build('hcs2.updateEntry', this.hederaKit, { registryTopicId, options });\n if (built && built.transactionBytes) {\n if (exec) {\n return { success: true, transactionBytes: built.transactionBytes };\n }\n if (!hasPrivateKey) {\n return { success: true, transactionBytes: built.transactionBytes };\n }\n }\n }\n } catch {}\n\n const start = SignerProviderRegistry.startHCSDelegate;\n if (start) {\n try {\n const request: Record<string, unknown> = {\n registryTopicId,\n options,\n };\n const { transactionBytes } = await start('hcs2.updateEntry', request, network);\n if (transactionBytes) {\n if (exec) {\n return { success: true, transactionBytes };\n }\n if (!hasPrivateKey) {\n return { success: true, transactionBytes };\n }\n }\n } catch (err) {\n if (preferWallet) {\n const msg = `wallet_submit_failed: ${err instanceof Error ? err.message : String(err)}`;\n throw new CodedError('wallet_submit_failed', msg);\n }\n }\n }\n\n if (preferWallet) {\n throw new CodedError('wallet_unavailable', 'WalletExecutor not configured for hcs2.updateEntry');\n }\n\n if (!hasPrivateKey) {\n throw new CodedError('wallet_unavailable', 'No wallet executor and no operator private key available for server execution');\n }\n const client = await this.getHCS2Client();\n return await client.updateEntry(registryTopicId, options);\n }\n\n /**\n * Delete an entry from an HCS-2 registry\n */\n async deleteEntry(\n registryTopicId: string,\n options: DeleteEntryOptions\n ): Promise<RegistryOperationResult> {\n const exec = SignerProviderRegistry.walletExecutor;\n const preferWallet = SignerProviderRegistry.preferWalletOnly;\n const network = (this.hederaKit.client.network.toString().includes('mainnet') ? 'mainnet' : 'testnet') as NetworkString;\n const hasPrivateKey = !!(this.hederaKit?.signer?.getOperatorPrivateKey && this.hederaKit.signer.getOperatorPrivateKey());\n\n try {\n const { ByteBuildRegistry } = await import('../../signing/bytes-registry');\n if (ByteBuildRegistry.has('hcs2.deleteEntry')) {\n const built = await ByteBuildRegistry.build('hcs2.deleteEntry', this.hederaKit, { registryTopicId, options });\n if (built && built.transactionBytes) {\n if (exec) {\n return { success: true, transactionBytes: built.transactionBytes };\n }\n if (!hasPrivateKey) {\n return { success: true, transactionBytes: built.transactionBytes };\n }\n }\n }\n } catch {}\n\n const start = SignerProviderRegistry.startHCSDelegate;\n if (start) {\n try {\n const request: Record<string, unknown> = {\n registryTopicId,\n options,\n };\n const { transactionBytes } = await start('hcs2.deleteEntry', request, network);\n if (transactionBytes) {\n if (exec) {\n return { success: true, transactionBytes };\n }\n if (!hasPrivateKey) {\n return { success: true, transactionBytes };\n }\n }\n } catch (err) {\n if (preferWallet) {\n const msg = `wallet_submit_failed: ${err instanceof Error ? err.message : String(err)}`;\n throw new CodedError('wallet_submit_failed', msg);\n }\n }\n }\n\n if (preferWallet) {\n throw new CodedError('wallet_unavailable', 'WalletExecutor not configured for hcs2.deleteEntry');\n }\n\n if (!hasPrivateKey) {\n throw new CodedError('wallet_unavailable', 'No wallet executor and no operator private key available for server execution');\n }\n const client = await this.getHCS2Client();\n return await client.deleteEntry(registryTopicId, options);\n }\n\n /**\n * Migrate an HCS-2 registry to a new topic\n */\n async migrateRegistry(\n registryTopicId: string,\n options: MigrateTopicOptions\n ): Promise<RegistryOperationResult> {\n const exec = SignerProviderRegistry.walletExecutor;\n const preferWallet = SignerProviderRegistry.preferWalletOnly;\n const hasPrivateKey = !!(this.hederaKit?.signer?.getOperatorPrivateKey && this.hederaKit.signer.getOperatorPrivateKey());\n\n try {\n const { ByteBuildRegistry } = await import('../../signing/bytes-registry');\n if (ByteBuildRegistry.has('hcs2.migrateRegistry')) {\n const built = await ByteBuildRegistry.build('hcs2.migrateRegistry', this.hederaKit, { registryTopicId, options });\n if (built && built.transactionBytes) {\n if (exec) {\n return { success: true, transactionBytes: built.transactionBytes };\n }\n if (!hasPrivateKey) {\n return { success: true, transactionBytes: built.transactionBytes };\n }\n }\n }\n } catch {}\n\n const start = SignerProviderRegistry.startHCSDelegate;\n if (start) {\n try {\n const request: Record<string, unknown> = { registryTopicId, options };\n const network = (this.hederaKit.client.network.toString().includes('mainnet') ? 'mainnet' : 'testnet') as NetworkString;\n const { transactionBytes } = await start('hcs2.migrateRegistry', request, network);\n if (transactionBytes) {\n if (exec) {\n return { success: true, transactionBytes };\n }\n if (!hasPrivateKey) {\n return { success: true, transactionBytes };\n }\n }\n } catch (err) {\n if (preferWallet) {\n const msg = `wallet_submit_failed: ${err instanceof Error ? err.message : String(err)}`;\n throw new CodedError('wallet_submit_failed', msg);\n }\n }\n }\n\n if (preferWallet) {\n throw new CodedError('wallet_unavailable', 'WalletExecutor not configured for hcs2.migrateRegistry');\n }\n\n if (!hasPrivateKey) {\n throw new CodedError('wallet_unavailable', 'No wallet executor and no operator private key available for server execution');\n }\n const client = await this.getHCS2Client();\n return await client.migrateRegistry(registryTopicId, options);\n }\n\n /**\n * Query entries from an HCS-2 registry\n */\n async getRegistry(\n topicId: string,\n options: QueryRegistryOptions = {}\n ): Promise<TopicRegistry> {\n const client = await this.getHCS2Client();\n return await client.getRegistry(topicId, options);\n }\n\n /**\n * Submit a raw message to an HCS-2 topic\n */\n async submitMessage(\n topicId: string,\n payload: any\n ): Promise<SubmitMessageResult> {\n const exec = SignerProviderRegistry.walletExecutor;\n const preferWallet = SignerProviderRegistry.preferWalletOnly;\n const network = (this.hederaKit.client.network.toString().includes('mainnet') ? 'mainnet' : 'testnet') as NetworkString;\n const hasPrivateKey = !!(this.hederaKit?.signer?.getOperatorPrivateKey && this.hederaKit.signer.getOperatorPrivateKey());\n\n try {\n const { ByteBuildRegistry } = await import('../../signing/bytes-registry');\n if (ByteBuildRegistry.has('hcs2.submitMessage')) {\n const built = await ByteBuildRegistry.build('hcs2.submitMessage', this.hederaKit, { topicId, payload });\n if (built && built.transactionBytes) {\n if (exec) {\n return { success: true, transactionBytes: built.transactionBytes };\n }\n if (!hasPrivateKey) {\n return { success: true, transactionBytes: built.transactionBytes };\n }\n }\n }\n } catch {}\n\n const start = SignerProviderRegistry.startHCSDelegate;\n if (start) {\n try {\n const request: Record<string, unknown> = { topicId, payload };\n const { transactionBytes } = await start('hcs2.submitMessage', request, network);\n if (transactionBytes) {\n if (exec) {\n return { success: true, transactionBytes };\n }\n if (!hasPrivateKey) {\n return { success: true, transactionBytes };\n }\n }\n } catch (err) {\n if (preferWallet) {\n const msg = `wallet_submit_failed: ${err instanceof Error ? err.message : String(err)}`;\n throw new CodedError('wallet_submit_failed', msg);\n }\n }\n }\n\n if (preferWallet) {\n throw new CodedError('wallet_unavailable', 'WalletExecutor not configured for hcs2.submitMessage');\n }\n\n if (!hasPrivateKey) {\n throw new CodedError('wallet_unavailable', 'No wallet executor and no operator private key available for server execution');\n }\n const client = await this.getHCS2Client();\n await client.submitMessage(topicId, payload);\n return { success: true };\n }\n /**\n * Get topic info from mirror node\n */\n async getTopicInfo(topicId: string): Promise<any> {\n const client = await this.getHCS2Client();\n return await client.getTopicInfo(topicId);\n }\n\n /**\n * Close the HCS-2 client\n */\n async close(): Promise<void> {\n if (this.hcs2Client) {\n this.hcs2Client.close();\n this.hcs2Client = undefined;\n }\n }\n}"],"names":[],"mappings":"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"}