@hashgraphonline/standards-agent-kit 0.2.161 → 0.2.164

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.
@@ -9,7 +9,7 @@ export interface TopicIds {
9
9
  * - Prefers jsonTopicId when present (for CDN linking)
10
10
  * - Collects topic_id/topicId from either inscription or result
11
11
  */
12
- export declare function extractTopicIds(inscription: RetrievedInscriptionResult, result?: unknown): TopicIds;
12
+ export declare function extractTopicIds(inscription: RetrievedInscriptionResult | undefined, result?: unknown): TopicIds;
13
13
  /**
14
14
  * Build HRL/CDN URLs from extracted topic ids.
15
15
  * - HRL prefers jsonTopicId, falls back to topicId
@@ -27,7 +27,8 @@ export interface CompletedInscriptionResponse {
27
27
  /**
28
28
  * Builder for Inscription operations
29
29
  */
30
- type InscriptionSDKInstance = InstanceType<typeof InscriptionSDK>;
30
+ type InscriptionSDKInstance = InscriptionSDK;
31
+ export declare const toDashedTransactionId: (transactionId: string) => string;
31
32
  export declare class InscriberBuilder extends BaseServiceBuilder {
32
33
  protected inscriptionSDK?: InscriptionSDKInstance;
33
34
  private static signerProvider?;
@@ -58,7 +59,7 @@ export declare class InscriberBuilder extends BaseServiceBuilder {
58
59
  /**
59
60
  * Get or create Inscription SDK
60
61
  */
61
- protected getInscriptionSDK(_options: InscriptionOptions): Promise<InscriptionSDKInstance | null>;
62
+ protected getInscriptionSDK(options: InscriptionOptions): Promise<InscriptionSDKInstance | null>;
62
63
  /**
63
64
  * Inscribe content using server-side authentication
64
65
  */
@@ -1,11 +1,7 @@
1
- class CodedError extends Error {
2
- constructor(code, message) {
3
- super(message);
4
- this.code = code;
5
- Object.setPrototypeOf(this, CodedError.prototype);
6
- }
1
+ function encryptMessage(message) {
2
+ return message;
7
3
  }
8
4
  export {
9
- CodedError
5
+ encryptMessage
10
6
  };
11
7
  //# sourceMappingURL=standards-agent-kit.es48.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-agent-kit.es48.js","sources":["../../src/utils/CodedError.ts"],"sourcesContent":["export class CodedError extends Error {\n code: string;\n constructor(code: string, message: string) {\n super(message);\n this.code = code;\n Object.setPrototypeOf(this, CodedError.prototype);\n }\n}\n"],"names":[],"mappings":"AAAO,MAAM,mBAAmB,MAAM;AAAA,EAEpC,YAAY,MAAc,SAAiB;AACzC,UAAM,OAAO;AACb,SAAK,OAAO;AACZ,WAAO,eAAe,MAAM,WAAW,SAAS;AAAA,EAClD;AACF;"}
1
+ {"version":3,"file":"standards-agent-kit.es48.js","sources":["../../src/utils/Encryption.ts"],"sourcesContent":["\n/**\n * Placeholder for encryption functionality.\n * Currently, encryption is disabled. The useEncryption flag is false by default.\n * TODO: Implement actual encryption/decryption logic.\n */\n\nexport function encryptMessage(message: string): string {\n return message; // currently returns plaintext.\n}\n\nexport function decryptMessage(encryptedMessage: string): string {\n return encryptedMessage;\n}\n"],"names":[],"mappings":"AAOO,SAAS,eAAe,SAAyB;AACpD,SAAO;AACX;"}
@@ -1,7 +1,11 @@
1
- function encryptMessage(message) {
2
- return message;
1
+ class CodedError extends Error {
2
+ constructor(code, message) {
3
+ super(message);
4
+ this.code = code;
5
+ Object.setPrototypeOf(this, CodedError.prototype);
6
+ }
3
7
  }
4
8
  export {
5
- encryptMessage
9
+ CodedError
6
10
  };
7
11
  //# sourceMappingURL=standards-agent-kit.es49.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-agent-kit.es49.js","sources":["../../src/utils/Encryption.ts"],"sourcesContent":["\n/**\n * Placeholder for encryption functionality.\n * Currently, encryption is disabled. The useEncryption flag is false by default.\n * TODO: Implement actual encryption/decryption logic.\n */\n\nexport function encryptMessage(message: string): string {\n return message; // currently returns plaintext.\n}\n\nexport function decryptMessage(encryptedMessage: string): string {\n return encryptedMessage;\n}\n"],"names":[],"mappings":"AAOO,SAAS,eAAe,SAAyB;AACpD,SAAO;AACX;"}
1
+ {"version":3,"file":"standards-agent-kit.es49.js","sources":["../../src/utils/CodedError.ts"],"sourcesContent":["export class CodedError extends Error {\n code: string;\n constructor(code: string, message: string) {\n super(message);\n this.code = code;\n Object.setPrototypeOf(this, CodedError.prototype);\n }\n}\n"],"names":[],"mappings":"AAAO,MAAM,mBAAmB,MAAM;AAAA,EAEpC,YAAY,MAAc,SAAiB;AACzC,UAAM,OAAO;AACb,SAAK,OAAO;AACZ,WAAO,eAAe,MAAM,WAAW,SAAS;AAAA,EAClD;AACF;"}
@@ -4,7 +4,7 @@ function getStringProp(obj, key) {
4
4
  return typeof val === "string" && val.trim() ? val : void 0;
5
5
  }
6
6
  function extractTopicIds(inscription, result) {
7
- const jsonTopicId = inscription.jsonTopicId || getStringProp(inscription, "json_topic_id");
7
+ const jsonTopicId = inscription?.jsonTopicId || getStringProp(inscription, "json_topic_id");
8
8
  const imageTopicId = getStringProp(inscription, "topic_id") || getStringProp(inscription, "topicId") || getStringProp(result, "topicId") || getStringProp(result, "topic_id");
9
9
  return {
10
10
  jsonTopicId,
@@ -1 +1 @@
1
- {"version":3,"file":"standards-agent-kit.es51.js","sources":["../../src/utils/inscription-utils.ts"],"sourcesContent":["import { RetrievedInscriptionResult } from '@kiloscribe/inscription-sdk';\n\nexport type NetworkType = 'mainnet' | 'testnet';\n\nexport interface TopicIds {\n jsonTopicId?: string;\n topicId?: string;\n}\n\nfunction getStringProp(obj: unknown, key: string): string | undefined {\n if (!obj || typeof obj !== 'object') return undefined;\n const val = (obj as Record<string, unknown>)[key];\n return typeof val === 'string' && val.trim() ? val : undefined;\n}\n\n/**\n * Extract topic ids from an inscription and/or result object without using any.\n * - Prefers jsonTopicId when present (for CDN linking)\n * - Collects topic_id/topicId from either inscription or result\n */\nexport function extractTopicIds(\n inscription: RetrievedInscriptionResult,\n result?: unknown\n): TopicIds {\n const jsonTopicId =\n inscription.jsonTopicId || getStringProp(inscription, 'json_topic_id');\n\n const imageTopicId =\n getStringProp(inscription, 'topic_id') ||\n getStringProp(inscription, 'topicId') ||\n getStringProp(result, 'topicId') ||\n getStringProp(result, 'topic_id');\n\n return {\n jsonTopicId: jsonTopicId,\n topicId: imageTopicId,\n };\n}\n\n/**\n * Build HRL/CDN URLs from extracted topic ids.\n * - HRL prefers jsonTopicId, falls back to topicId\n * - CDN URL only provided when jsonTopicId is present\n */\nexport function buildInscriptionLinks(\n ids: TopicIds,\n network: NetworkType,\n fileStandard: string = '1'\n): { hrl?: string; cdnUrl?: string; topicId?: string } {\n const chosen = ids.jsonTopicId || ids.topicId;\n const hrl = chosen ? `hcs://${fileStandard}/${chosen}` : undefined;\n const cdnUrl = ids.jsonTopicId\n ? `https://kiloscribe.com/api/inscription-cdn/${ids.jsonTopicId}?network=${network}`\n : undefined;\n return { hrl, cdnUrl, topicId: chosen };\n}\n"],"names":[],"mappings":"AASA,SAAS,cAAc,KAAc,KAAiC;AACpE,MAAI,CAAC,OAAO,OAAO,QAAQ,SAAU,QAAO;AAC5C,QAAM,MAAO,IAAgC,GAAG;AAChD,SAAO,OAAO,QAAQ,YAAY,IAAI,KAAA,IAAS,MAAM;AACvD;AAOO,SAAS,gBACd,aACA,QACU;AACV,QAAM,cACJ,YAAY,eAAe,cAAc,aAAa,eAAe;AAEvE,QAAM,eACJ,cAAc,aAAa,UAAU,KACrC,cAAc,aAAa,SAAS,KACpC,cAAc,QAAQ,SAAS,KAC/B,cAAc,QAAQ,UAAU;AAElC,SAAO;AAAA,IACL;AAAA,IACA,SAAS;AAAA,EAAA;AAEb;AAOO,SAAS,sBACd,KACA,SACA,eAAuB,KAC8B;AACrD,QAAM,SAAS,IAAI,eAAe,IAAI;AACtC,QAAM,MAAM,SAAS,SAAS,YAAY,IAAI,MAAM,KAAK;AACzD,QAAM,SAAS,IAAI,cACf,8CAA8C,IAAI,WAAW,YAAY,OAAO,KAChF;AACJ,SAAO,EAAE,KAAK,QAAQ,SAAS,OAAA;AACjC;"}
1
+ {"version":3,"file":"standards-agent-kit.es51.js","sources":["../../src/utils/inscription-utils.ts"],"sourcesContent":["import { RetrievedInscriptionResult } from '@kiloscribe/inscription-sdk';\n\nexport type NetworkType = 'mainnet' | 'testnet';\n\nexport interface TopicIds {\n jsonTopicId?: string;\n topicId?: string;\n}\n\nfunction getStringProp(obj: unknown, key: string): string | undefined {\n if (!obj || typeof obj !== 'object') return undefined;\n const val = (obj as Record<string, unknown>)[key];\n return typeof val === 'string' && val.trim() ? val : undefined;\n}\n\n/**\n * Extract topic ids from an inscription and/or result object without using any.\n * - Prefers jsonTopicId when present (for CDN linking)\n * - Collects topic_id/topicId from either inscription or result\n */\nexport function extractTopicIds(\n inscription: RetrievedInscriptionResult | undefined,\n result?: unknown\n): TopicIds {\n const jsonTopicId =\n (inscription as RetrievedInscriptionResult | undefined)?.jsonTopicId ||\n getStringProp(inscription, 'json_topic_id');\n\n const imageTopicId =\n getStringProp(inscription, 'topic_id') ||\n getStringProp(inscription, 'topicId') ||\n getStringProp(result, 'topicId') ||\n getStringProp(result, 'topic_id');\n\n return {\n jsonTopicId: jsonTopicId,\n topicId: imageTopicId,\n };\n}\n\n/**\n * Build HRL/CDN URLs from extracted topic ids.\n * - HRL prefers jsonTopicId, falls back to topicId\n * - CDN URL only provided when jsonTopicId is present\n */\nexport function buildInscriptionLinks(\n ids: TopicIds,\n network: NetworkType,\n fileStandard: string = '1'\n): { hrl?: string; cdnUrl?: string; topicId?: string } {\n const chosen = ids.jsonTopicId || ids.topicId;\n const hrl = chosen ? `hcs://${fileStandard}/${chosen}` : undefined;\n const cdnUrl = ids.jsonTopicId\n ? `https://kiloscribe.com/api/inscription-cdn/${ids.jsonTopicId}?network=${network}`\n : undefined;\n return { hrl, cdnUrl, topicId: chosen };\n}\n"],"names":[],"mappings":"AASA,SAAS,cAAc,KAAc,KAAiC;AACpE,MAAI,CAAC,OAAO,OAAO,QAAQ,SAAU,QAAO;AAC5C,QAAM,MAAO,IAAgC,GAAG;AAChD,SAAO,OAAO,QAAQ,YAAY,IAAI,KAAA,IAAS,MAAM;AACvD;AAOO,SAAS,gBACd,aACA,QACU;AACV,QAAM,cACH,aAAwD,eACzD,cAAc,aAAa,eAAe;AAE5C,QAAM,eACJ,cAAc,aAAa,UAAU,KACrC,cAAc,aAAa,SAAS,KACpC,cAAc,QAAQ,SAAS,KAC/B,cAAc,QAAQ,UAAU;AAElC,SAAO;AAAA,IACL;AAAA,IACA,SAAS;AAAA,EAAA;AAEb;AAOO,SAAS,sBACd,KACA,SACA,eAAuB,KAC8B;AACrD,QAAM,SAAS,IAAI,eAAe,IAAI;AACtC,QAAM,MAAM,SAAS,SAAS,YAAY,IAAI,MAAM,KAAK;AACzD,QAAM,SAAS,IAAI,cACf,8CAA8C,IAAI,WAAW,YAAY,OAAO,KAChF;AACJ,SAAO,EAAE,KAAK,QAAQ,SAAS,OAAA;AACjC;"}
@@ -1,7 +1,7 @@
1
1
  import { BaseServiceBuilder } from "hedera-agent-kit";
2
2
  import { HederaMirrorNode, HCS2Client } from "@hashgraphonline/standards-sdk";
3
3
  import { SignerProviderRegistry } from "./standards-agent-kit.es3.js";
4
- import { CodedError } from "./standards-agent-kit.es48.js";
4
+ import { CodedError } from "./standards-agent-kit.es49.js";
5
5
  class HCS2Builder extends BaseServiceBuilder {
6
6
  constructor(hederaKit) {
7
7
  super(hederaKit);
@@ -1,7 +1,7 @@
1
1
  import { BaseServiceBuilder } from "hedera-agent-kit";
2
2
  import { HCS6Client, HederaMirrorNode } from "@hashgraphonline/standards-sdk";
3
3
  import { SignerProviderRegistry } from "./standards-agent-kit.es3.js";
4
- import { CodedError } from "./standards-agent-kit.es48.js";
4
+ import { CodedError } from "./standards-agent-kit.es49.js";
5
5
  class HCS6Builder extends BaseServiceBuilder {
6
6
  constructor(hederaKit) {
7
7
  super(hederaKit);
@@ -1,6 +1,20 @@
1
1
  import { BaseServiceBuilder } from "hedera-agent-kit";
2
- import { inscribe, inscribeWithSigner, getTopicId, retrieveInscription } from "@hashgraphonline/standards-sdk";
3
- import { InscriptionSDK } from "@kiloscribe/inscription-sdk";
2
+ import { getOrCreateSDK, inscribe, inscribeWithSigner, getTopicId, retrieveInscription } from "@hashgraphonline/standards-sdk";
3
+ const toDashedTransactionId = (transactionId) => {
4
+ if (transactionId.includes("-")) {
5
+ return transactionId;
6
+ }
7
+ const [account, timePart] = transactionId.split("@");
8
+ if (!account || !timePart) {
9
+ return transactionId;
10
+ }
11
+ const [secondsPart, nanosPart] = timePart.split(".");
12
+ if (!secondsPart) {
13
+ return transactionId;
14
+ }
15
+ const normalizedNanos = (nanosPart ?? "0").padEnd(9, "0").slice(0, 9);
16
+ return `${account}-${secondsPart}-${normalizedNanos}`;
17
+ };
4
18
  const _InscriberBuilder = class _InscriberBuilder extends BaseServiceBuilder {
5
19
  constructor(hederaKit) {
6
20
  super(hederaKit);
@@ -39,42 +53,39 @@ const _InscriberBuilder = class _InscriberBuilder extends BaseServiceBuilder {
39
53
  /**
40
54
  * Get or create Inscription SDK
41
55
  */
42
- async getInscriptionSDK(_options) {
56
+ async getInscriptionSDK(options) {
43
57
  if (this.inscriptionSDK) {
44
58
  return this.inscriptionSDK;
45
59
  }
46
60
  const network = this.hederaKit.client.network;
47
61
  const networkType = network.toString().includes("mainnet") ? "mainnet" : "testnet";
48
62
  const accountId = this.hederaKit.signer.getAccountId().toString();
63
+ const operatorKey = this.hederaKit.signer?.getOperatorPrivateKey();
64
+ const baseOptions = {
65
+ ...options,
66
+ network: options.network ?? networkType
67
+ };
68
+ const apiKey = baseOptions.apiKey ?? (operatorKey ? void 0 : "public-access");
69
+ const effectiveOptions = apiKey ? { ...baseOptions, apiKey } : baseOptions;
70
+ const clientConfig = {
71
+ accountId,
72
+ privateKey: operatorKey?.toStringRaw() ?? apiKey ?? "public-access",
73
+ network: networkType
74
+ };
49
75
  try {
50
- const privateKey = this.hederaKit.signer?.getOperatorPrivateKey();
51
- if (privateKey) {
52
- this.inscriptionSDK = await InscriptionSDK.createWithAuth({
53
- type: "server",
54
- accountId,
55
- privateKey: privateKey.toStringRaw(),
56
- network: networkType
57
- });
58
- }
76
+ this.inscriptionSDK = await getOrCreateSDK(
77
+ clientConfig,
78
+ effectiveOptions,
79
+ this.inscriptionSDK
80
+ );
81
+ return this.inscriptionSDK;
59
82
  } catch (error) {
60
- this.logger.warn("Failed to create InscriptionSDK with auth", error);
83
+ this.logger.error("failed to setup sdk", {
84
+ error: error instanceof Error ? error.message : String(error)
85
+ });
61
86
  this.inscriptionSDK = void 0;
87
+ return null;
62
88
  }
63
- if (!this.inscriptionSDK) {
64
- try {
65
- this.inscriptionSDK = new InscriptionSDK({
66
- apiKey: "public-access",
67
- network: networkType,
68
- connectionMode: "http"
69
- });
70
- } catch (fallbackError) {
71
- this.logger.warn(
72
- "Failed to create InscriptionSDK fallback instance",
73
- fallbackError
74
- );
75
- }
76
- }
77
- return this.inscriptionSDK || null;
78
89
  }
79
90
  /**
80
91
  * Inscribe content using server-side authentication
@@ -165,6 +176,11 @@ const _InscriberBuilder = class _InscriberBuilder extends BaseServiceBuilder {
165
176
  request,
166
177
  network
167
178
  );
179
+ this.logger.info("inscribeAuto start response", {
180
+ hasTransactionBytes: typeof start.transactionBytes === "string",
181
+ txId: start.tx_id,
182
+ status: start.status
183
+ });
168
184
  const completedStart = start;
169
185
  const isCompletedResponse = Boolean(completedStart?.inscription) && completedStart?.confirmed;
170
186
  if (isCompletedResponse) {
@@ -189,23 +205,46 @@ const _InscriberBuilder = class _InscriberBuilder extends BaseServiceBuilder {
189
205
  network
190
206
  );
191
207
  const transactionId = exec?.transactionId || "";
208
+ const rawTransactionId = startResponse.tx_id || transactionId;
209
+ const canonicalTransactionId = toDashedTransactionId(rawTransactionId);
210
+ this.logger.info("inscribeAuto wallet execution", {
211
+ transactionId,
212
+ network
213
+ });
192
214
  const shouldWait = options.quoteOnly ? false : options.waitForConfirmation ?? true;
193
215
  if (shouldWait) {
194
- this.logger.debug("Will be retrieving inscription");
195
216
  const maxAttempts = options.waitMaxAttempts ?? 60;
196
217
  const intervalMs = options.waitIntervalMs ?? 5e3;
197
- const pollId = startResponse.tx_id || transactionId;
218
+ const pollId = canonicalTransactionId;
219
+ this.logger.debug("Will be retrieving inscription", pollId);
220
+ let retrieved = null;
198
221
  const sdk = await this.getInscriptionSDK(options);
199
222
  if (sdk) {
200
- const retrieved = await sdk.waitForInscription(
201
- pollId,
202
- maxAttempts,
203
- intervalMs,
204
- true,
205
- (progress) => {
206
- this.logger.info("checking inscription", progress);
223
+ try {
224
+ retrieved = await sdk.waitForInscription(
225
+ pollId,
226
+ maxAttempts,
227
+ intervalMs,
228
+ true,
229
+ (progress) => {
230
+ this.logger.debug("checking inscription", progress);
231
+ }
232
+ );
233
+ } catch (error) {
234
+ this.logger.warn("Primary inscription wait failed", {
235
+ pollId,
236
+ error: error instanceof Error ? error.message : String(error)
237
+ });
238
+ }
239
+ } else {
240
+ this.logger.warn(
241
+ "No inscription SDK available, using public client",
242
+ {
243
+ pollId
207
244
  }
208
245
  );
246
+ }
247
+ if (retrieved) {
209
248
  const topicIdFromInscription = getTopicId(
210
249
  retrieved
211
250
  );
@@ -214,14 +253,14 @@ const _InscriberBuilder = class _InscriberBuilder extends BaseServiceBuilder {
214
253
  quote: false,
215
254
  confirmed: true,
216
255
  result: {
217
- jobId: startResponse.tx_id || "",
218
- transactionId,
256
+ jobId: toDashedTransactionId(startResponse.tx_id || ""),
257
+ transactionId: canonicalTransactionId,
219
258
  topicId
220
259
  },
221
260
  inscription: retrieved
222
261
  };
223
262
  this.logger.debug(
224
- "retrieved inscription",
263
+ "retrieved inscription confirmed",
225
264
  resultConfirmed,
226
265
  retrieved
227
266
  );
@@ -232,8 +271,8 @@ const _InscriberBuilder = class _InscriberBuilder extends BaseServiceBuilder {
232
271
  quote: false,
233
272
  confirmed: false,
234
273
  result: {
235
- jobId: startResponse.tx_id || "",
236
- transactionId,
274
+ jobId: toDashedTransactionId(startResponse.tx_id || ""),
275
+ transactionId: canonicalTransactionId,
237
276
  status: startResponse.status,
238
277
  completed: startResponse.completed
239
278
  },
@@ -272,6 +311,7 @@ const _InscriberBuilder = class _InscriberBuilder extends BaseServiceBuilder {
272
311
  _InscriberBuilder.preferWalletOnly = false;
273
312
  let InscriberBuilder = _InscriberBuilder;
274
313
  export {
275
- InscriberBuilder
314
+ InscriberBuilder,
315
+ toDashedTransactionId
276
316
  };
277
317
  //# sourceMappingURL=standards-agent-kit.es8.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-agent-kit.es8.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 {\n InscriptionSDK,\n type InscriptionResult,\n type RegistrationProgressData,\n} 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\nexport interface PendingInscriptionResponse {\n transactionBytes: string;\n tx_id?: string;\n topic_id?: string;\n status?: string;\n completed?: boolean;\n}\n\nexport interface CompletedInscriptionResponse {\n confirmed?: boolean;\n result?: InscriptionResult;\n inscription?: RetrievedInscriptionResult;\n jsonTopicId?: string;\n network?: string;\n}\n/**\n * Builder for Inscription operations\n */\ntype InscriptionSDKInstance = InstanceType<typeof InscriptionSDK>;\ntype InscriptionSDKAuthParams = Parameters<\n typeof InscriptionSDK.createWithAuth\n>[0];\ntype ClientAuthConfig = Extract<InscriptionSDKAuthParams, { type: 'client' }>;\ntype ServerAuthConfig = Extract<InscriptionSDKAuthParams, { type: 'server' }>;\n\nexport class InscriberBuilder extends BaseServiceBuilder {\n protected inscriptionSDK?: InscriptionSDKInstance;\n private static signerProvider?: () =>\n | Promise<DAppSigner | null>\n | DAppSigner\n | null;\n private static walletInfoResolver?: () =>\n | Promise<{ accountId: string; network: 'mainnet' | 'testnet' } | null>\n | { accountId: string; network: 'mainnet' | 'testnet' }\n | null;\n\n private static startInscriptionDelegate?: (\n request: Record<string, unknown>,\n network: 'mainnet' | 'testnet'\n ) => Promise<PendingInscriptionResponse | CompletedInscriptionResponse>;\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: () =>\n | Promise<{ accountId: string; network: 'mainnet' | 'testnet' } | null>\n | { accountId: string; network: 'mainnet' | 'testnet' }\n | 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<PendingInscriptionResponse | CompletedInscriptionResponse>\n ): void {\n InscriberBuilder.startInscriptionDelegate = delegate;\n }\n\n static setWalletExecutor(\n executor: (\n base64: string,\n network: 'mainnet' | 'testnet'\n ) => 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\n */\n protected async getInscriptionSDK(\n _options: InscriptionOptions\n ): Promise<InscriptionSDKInstance | null> {\n if (this.inscriptionSDK) {\n return this.inscriptionSDK;\n }\n\n const network = this.hederaKit.client.network;\n const networkType: 'mainnet' | 'testnet' = network\n .toString()\n .includes('mainnet')\n ? 'mainnet'\n : 'testnet';\n const accountId = this.hederaKit.signer.getAccountId().toString();\n\n try {\n const privateKey = this.hederaKit.signer?.getOperatorPrivateKey();\n if (privateKey) {\n this.inscriptionSDK = await InscriptionSDK.createWithAuth({\n type: 'server',\n accountId,\n privateKey:\n privateKey.toStringRaw() as ServerAuthConfig['privateKey'],\n network: networkType,\n });\n }\n } catch (error) {\n this.logger.warn('Failed to create InscriptionSDK with auth', error);\n this.inscriptionSDK = undefined;\n }\n\n if (!this.inscriptionSDK) {\n try {\n this.inscriptionSDK = new InscriptionSDK({\n apiKey: 'public-access',\n network: networkType,\n connectionMode: 'http',\n });\n } catch (fallbackError) {\n this.logger.warn(\n 'Failed to create InscriptionSDK fallback instance',\n fallbackError\n );\n }\n }\n\n return this.inscriptionSDK || 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\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(\n 'Wallet unavailable: connect a wallet or switch to autonomous mode'\n );\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> & {\n creator?: string;\n description?: string;\n };\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 =\n 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 = {\n ...baseRequest,\n file: { type: 'path', path: input.path },\n };\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 =\n ext.metadata?.creator || holderId;\n (request as { description?: string }).description =\n 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 = await InscriberBuilder.startInscriptionDelegate(\n request,\n network\n );\n\n const completedStart = start as CompletedInscriptionResponse;\n const isCompletedResponse =\n Boolean(completedStart?.inscription) && completedStart?.confirmed;\n\n if (isCompletedResponse) {\n const completed = start as {\n confirmed?: boolean;\n result?: unknown;\n inscription?: unknown;\n };\n this.logger.info(\n 'inscription already completed, short circuiting',\n start\n );\n return {\n quote: false,\n confirmed: completed.confirmed === true,\n result: completed.result as InscriptionResult,\n inscription: completed.inscription,\n } as unknown as InscriptionResponse;\n }\n\n const startResponse = start as {\n transactionBytes: string;\n tx_id?: string;\n topic_id?: string;\n status?: string;\n completed?: boolean;\n };\n\n if (!startResponse || !startResponse.transactionBytes) {\n throw new Error('Failed to start inscription (no transaction bytes)');\n }\n\n const exec: WalletExecutorResponse =\n await InscriberBuilder.walletExecutor(\n startResponse.transactionBytes,\n network\n );\n const transactionId = exec?.transactionId || '';\n\n const shouldWait = options.quoteOnly\n ? false\n : options.waitForConfirmation ?? true;\n if (shouldWait) {\n this.logger.debug('Will be retrieving inscription');\n const maxAttempts =\n (options as { waitMaxAttempts?: number }).waitMaxAttempts ?? 60;\n const intervalMs =\n (options as { waitIntervalMs?: number }).waitIntervalMs ?? 5000;\n\n const pollId = startResponse.tx_id || transactionId;\n const sdk = await this.getInscriptionSDK(options);\n if (sdk) {\n const retrieved: RetrievedInscriptionResult =\n await sdk.waitForInscription(\n pollId,\n maxAttempts,\n intervalMs,\n true,\n (progress: RegistrationProgressData) => {\n this.logger.info('checking inscription', progress);\n }\n );\n const topicIdFromInscription: string | undefined = getTopicId(\n retrieved as unknown\n );\n const topicId: string | undefined =\n topicIdFromInscription ?? startResponse.topic_id;\n const resultConfirmed: InscriptionResponse = {\n quote: false,\n confirmed: true,\n result: {\n jobId: startResponse.tx_id || '',\n transactionId,\n topicId,\n },\n inscription: retrieved,\n } as unknown as InscriptionResponse;\n this.logger.debug(\n 'retrieved inscription',\n resultConfirmed,\n retrieved\n );\n return resultConfirmed;\n }\n }\n\n const partial: InscriptionResponse = {\n quote: false,\n confirmed: false,\n result: {\n jobId: startResponse.tx_id || '',\n transactionId,\n status: startResponse.status,\n completed: startResponse.completed,\n },\n inscription: startResponse.topic_id\n ? { topic_id: startResponse.topic_id }\n : undefined,\n } as unknown as InscriptionResponse;\n return partial;\n }\n\n if (InscriberBuilder.preferWalletOnly) {\n const err = new Error(\n 'Wallet unavailable: connect a wallet or switch to autonomous mode'\n );\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.es8.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 getOrCreateSDK,\n InscriptionInput,\n InscriptionOptions,\n InscriptionResponse,\n RetrievedInscriptionResult,\n HederaClientConfig,\n NetworkType,\n getTopicId,\n Logger,\n} from '@hashgraphonline/standards-sdk';\nimport type {\n InscriptionSDK,\n InscriptionResult,\n RegistrationProgressData,\n} 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\nexport interface PendingInscriptionResponse {\n transactionBytes: string;\n tx_id?: string;\n topic_id?: string;\n status?: string;\n completed?: boolean;\n}\n\nexport interface CompletedInscriptionResponse {\n confirmed?: boolean;\n result?: InscriptionResult;\n inscription?: RetrievedInscriptionResult;\n jsonTopicId?: string;\n network?: string;\n}\n/**\n * Builder for Inscription operations\n */\ntype InscriptionSDKInstance = InscriptionSDK;\n\nexport const toDashedTransactionId = (transactionId: string): string => {\n if (transactionId.includes('-')) {\n return transactionId;\n }\n\n const [account, timePart] = transactionId.split('@');\n if (!account || !timePart) {\n return transactionId;\n }\n\n const [secondsPart, nanosPart] = timePart.split('.');\n if (!secondsPart) {\n return transactionId;\n }\n\n const normalizedNanos = (nanosPart ?? '0').padEnd(9, '0').slice(0, 9);\n return `${account}-${secondsPart}-${normalizedNanos}`;\n};\n\nexport class InscriberBuilder extends BaseServiceBuilder {\n protected inscriptionSDK?: InscriptionSDKInstance;\n private static signerProvider?: () =>\n | Promise<DAppSigner | null>\n | DAppSigner\n | null;\n private static walletInfoResolver?: () =>\n | Promise<{ accountId: string; network: 'mainnet' | 'testnet' } | null>\n | { accountId: string; network: 'mainnet' | 'testnet' }\n | null;\n\n private static startInscriptionDelegate?: (\n request: Record<string, unknown>,\n network: 'mainnet' | 'testnet'\n ) => Promise<PendingInscriptionResponse | CompletedInscriptionResponse>;\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: () =>\n | Promise<{ accountId: string; network: 'mainnet' | 'testnet' } | null>\n | { accountId: string; network: 'mainnet' | 'testnet' }\n | 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<PendingInscriptionResponse | CompletedInscriptionResponse>\n ): void {\n InscriberBuilder.startInscriptionDelegate = delegate;\n }\n\n static setWalletExecutor(\n executor: (\n base64: string,\n network: 'mainnet' | 'testnet'\n ) => 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\n */\n protected async getInscriptionSDK(\n options: InscriptionOptions\n ): Promise<InscriptionSDKInstance | null> {\n if (this.inscriptionSDK) {\n return this.inscriptionSDK;\n }\n\n const network = this.hederaKit.client.network;\n const networkType: 'mainnet' | 'testnet' = network\n .toString()\n .includes('mainnet')\n ? 'mainnet'\n : 'testnet';\n const accountId = this.hederaKit.signer.getAccountId().toString();\n const operatorKey = this.hederaKit.signer?.getOperatorPrivateKey();\n const baseOptions: InscriptionOptions = {\n ...options,\n network: options.network ?? networkType,\n };\n\n const apiKey = baseOptions.apiKey ?? (operatorKey ? undefined : 'public-access');\n const effectiveOptions: InscriptionOptions = apiKey\n ? { ...baseOptions, apiKey }\n : baseOptions;\n\n const clientConfig = {\n accountId,\n privateKey: operatorKey?.toStringRaw() ?? apiKey ?? 'public-access',\n network: networkType,\n };\n\n try {\n this.inscriptionSDK = await getOrCreateSDK(\n clientConfig,\n effectiveOptions,\n this.inscriptionSDK\n );\n return this.inscriptionSDK;\n } catch (error) {\n this.logger.error('failed to setup sdk', {\n error: error instanceof Error ? error.message : String(error),\n });\n this.inscriptionSDK = undefined;\n return null;\n }\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\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(\n 'Wallet unavailable: connect a wallet or switch to autonomous mode'\n );\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> & {\n creator?: string;\n description?: string;\n };\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 =\n 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 = {\n ...baseRequest,\n file: { type: 'path', path: input.path },\n };\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 =\n ext.metadata?.creator || holderId;\n (request as { description?: string }).description =\n 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 = await InscriberBuilder.startInscriptionDelegate(\n request,\n network\n );\n\n this.logger.info('inscribeAuto start response', {\n hasTransactionBytes:\n typeof (start as { transactionBytes?: unknown }).transactionBytes ===\n 'string',\n txId: (start as { tx_id?: unknown }).tx_id,\n status: (start as { status?: unknown }).status,\n });\n\n const completedStart = start as CompletedInscriptionResponse;\n const isCompletedResponse =\n Boolean(completedStart?.inscription) && completedStart?.confirmed;\n\n if (isCompletedResponse) {\n const completed = start as {\n confirmed?: boolean;\n result?: unknown;\n inscription?: unknown;\n };\n this.logger.info(\n 'inscription already completed, short circuiting',\n start\n );\n return {\n quote: false,\n confirmed: completed.confirmed === true,\n result: completed.result as InscriptionResult,\n inscription: completed.inscription,\n } as unknown as InscriptionResponse;\n }\n\n const startResponse = start as {\n transactionBytes: string;\n tx_id?: string;\n topic_id?: string;\n status?: string;\n completed?: boolean;\n };\n\n if (!startResponse || !startResponse.transactionBytes) {\n throw new Error('Failed to start inscription (no transaction bytes)');\n }\n\n const exec: WalletExecutorResponse =\n await InscriberBuilder.walletExecutor(\n startResponse.transactionBytes,\n network\n );\n const transactionId = exec?.transactionId || '';\n const rawTransactionId = startResponse.tx_id || transactionId;\n const canonicalTransactionId = toDashedTransactionId(rawTransactionId);\n\n this.logger.info('inscribeAuto wallet execution', {\n transactionId,\n network,\n });\n\n const shouldWait = options.quoteOnly\n ? false\n : options.waitForConfirmation ?? true;\n if (shouldWait) {\n const maxAttempts =\n (options as { waitMaxAttempts?: number }).waitMaxAttempts ?? 60;\n const intervalMs =\n (options as { waitIntervalMs?: number }).waitIntervalMs ?? 5000;\n const pollId = canonicalTransactionId;\n this.logger.debug('Will be retrieving inscription', pollId);\n\n let retrieved: RetrievedInscriptionResult | null = null;\n const sdk = await this.getInscriptionSDK(options);\n\n if (sdk) {\n try {\n retrieved = await sdk.waitForInscription(\n pollId,\n maxAttempts,\n intervalMs,\n true,\n (progress: RegistrationProgressData) => {\n this.logger.debug('checking inscription', progress);\n }\n );\n } catch (error) {\n this.logger.warn('Primary inscription wait failed', {\n pollId,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n } else {\n this.logger.warn(\n 'No inscription SDK available, using public client',\n {\n pollId,\n }\n );\n }\n\n if (retrieved) {\n const topicIdFromInscription: string | undefined = getTopicId(\n retrieved as unknown\n );\n const topicId: string | undefined =\n topicIdFromInscription ?? startResponse.topic_id;\n const resultConfirmed: InscriptionResponse = {\n quote: false,\n confirmed: true,\n result: {\n jobId: toDashedTransactionId(startResponse.tx_id || ''),\n transactionId: canonicalTransactionId,\n topicId,\n },\n inscription: retrieved,\n } as unknown as InscriptionResponse;\n this.logger.debug(\n 'retrieved inscription confirmed',\n resultConfirmed,\n retrieved\n );\n return resultConfirmed;\n }\n }\n\n const partial: InscriptionResponse = {\n quote: false,\n confirmed: false,\n result: {\n jobId: toDashedTransactionId(startResponse.tx_id || ''),\n transactionId: canonicalTransactionId,\n status: startResponse.status,\n completed: startResponse.completed,\n },\n inscription: startResponse.topic_id\n ? { topic_id: startResponse.topic_id }\n : undefined,\n } as unknown as InscriptionResponse;\n return partial;\n }\n\n if (InscriberBuilder.preferWalletOnly) {\n const err = new Error(\n 'Wallet unavailable: connect a wallet or switch to autonomous mode'\n );\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,5 +1,5 @@
1
1
  import { HCS10Client as HCS10Client$1, Logger, AgentBuilder, AIAgentCapability, InboundTopicType } from "@hashgraphonline/standards-sdk";
2
- import { encryptMessage } from "./standards-agent-kit.es49.js";
2
+ import { encryptMessage } from "./standards-agent-kit.es48.js";
3
3
  class HCS10Client {
4
4
  constructor(operatorId, operatorPrivateKey, network, options) {
5
5
  this.standardClient = new HCS10Client$1({
@@ -9,7 +9,7 @@ export interface TopicIds {
9
9
  * - Prefers jsonTopicId when present (for CDN linking)
10
10
  * - Collects topic_id/topicId from either inscription or result
11
11
  */
12
- export declare function extractTopicIds(inscription: RetrievedInscriptionResult, result?: unknown): TopicIds;
12
+ export declare function extractTopicIds(inscription: RetrievedInscriptionResult | undefined, result?: unknown): TopicIds;
13
13
  /**
14
14
  * Build HRL/CDN URLs from extracted topic ids.
15
15
  * - HRL prefers jsonTopicId, falls back to topicId
@@ -27,7 +27,8 @@ export interface CompletedInscriptionResponse {
27
27
  /**
28
28
  * Builder for Inscription operations
29
29
  */
30
- type InscriptionSDKInstance = InstanceType<typeof InscriptionSDK>;
30
+ type InscriptionSDKInstance = InscriptionSDK;
31
+ export declare const toDashedTransactionId: (transactionId: string) => string;
31
32
  export declare class InscriberBuilder extends BaseServiceBuilder {
32
33
  protected inscriptionSDK?: InscriptionSDKInstance;
33
34
  private static signerProvider?;
@@ -58,7 +59,7 @@ export declare class InscriberBuilder extends BaseServiceBuilder {
58
59
  /**
59
60
  * Get or create Inscription SDK
60
61
  */
61
- protected getInscriptionSDK(_options: InscriptionOptions): Promise<InscriptionSDKInstance | null>;
62
+ protected getInscriptionSDK(options: InscriptionOptions): Promise<InscriptionSDKInstance | null>;
62
63
  /**
63
64
  * Inscribe content using server-side authentication
64
65
  */