@hashgraphonline/standards-agent-kit 0.2.104 → 0.2.105

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 (32) hide show
  1. package/dist/cjs/standards-agent-kit.cjs +1 -1
  2. package/dist/cjs/standards-agent-kit.cjs.map +1 -1
  3. package/dist/cjs/tools/hcs10/base-hcs10-tools.d.ts +1 -1
  4. package/dist/cjs/tools/hcs2/base-hcs2-tools.d.ts +1 -1
  5. package/dist/cjs/tools/inscriber/InscribeFromBufferTool.d.ts +6 -0
  6. package/dist/cjs/tools/inscriber/InscribeFromFileTool.d.ts +3 -1
  7. package/dist/cjs/tools/inscriber/base-inscriber-tools.d.ts +1 -1
  8. package/dist/es/standards-agent-kit.es19.js.map +1 -1
  9. package/dist/es/standards-agent-kit.es26.js.map +1 -1
  10. package/dist/es/standards-agent-kit.es28.js +33 -20
  11. package/dist/es/standards-agent-kit.es28.js.map +1 -1
  12. package/dist/es/standards-agent-kit.es29.js +29 -11
  13. package/dist/es/standards-agent-kit.es29.js.map +1 -1
  14. package/dist/es/standards-agent-kit.es6.js.map +1 -1
  15. package/dist/es/tools/hcs10/base-hcs10-tools.d.ts +1 -1
  16. package/dist/es/tools/hcs2/base-hcs2-tools.d.ts +1 -1
  17. package/dist/es/tools/inscriber/InscribeFromBufferTool.d.ts +6 -0
  18. package/dist/es/tools/inscriber/InscribeFromFileTool.d.ts +3 -1
  19. package/dist/es/tools/inscriber/base-inscriber-tools.d.ts +1 -1
  20. package/dist/umd/standards-agent-kit.umd.js +1 -1
  21. package/dist/umd/standards-agent-kit.umd.js.map +1 -1
  22. package/dist/umd/tools/hcs10/base-hcs10-tools.d.ts +1 -1
  23. package/dist/umd/tools/hcs2/base-hcs2-tools.d.ts +1 -1
  24. package/dist/umd/tools/inscriber/InscribeFromBufferTool.d.ts +6 -0
  25. package/dist/umd/tools/inscriber/InscribeFromFileTool.d.ts +3 -1
  26. package/dist/umd/tools/inscriber/base-inscriber-tools.d.ts +1 -1
  27. package/package.json +26 -29
  28. package/src/tools/hcs10/base-hcs10-tools.ts +1 -3
  29. package/src/tools/hcs2/base-hcs2-tools.ts +1 -3
  30. package/src/tools/inscriber/InscribeFromBufferTool.ts +35 -11
  31. package/src/tools/inscriber/InscribeFromFileTool.ts +42 -22
  32. package/src/tools/inscriber/base-inscriber-tools.ts +1 -3
@@ -17,7 +17,7 @@ export declare abstract class BaseHCS10TransactionTool<T extends z.ZodObject<z.Z
17
17
  /**
18
18
  * Base class for HCS10 query tools
19
19
  */
20
- export declare abstract class BaseHCS10QueryTool<T extends z.ZodObject<z.ZodRawShape, z.UnknownKeysParam, z.ZodTypeAny, Record<string, unknown>, Record<string, unknown>> = z.ZodObject<z.ZodRawShape>> extends BaseHederaQueryTool<T> {
20
+ export declare abstract class BaseHCS10QueryTool<T extends z.ZodObject<z.ZodRawShape, z.UnknownKeysParam, z.ZodTypeAny> = z.ZodObject<z.ZodRawShape>> extends BaseHederaQueryTool<T> {
21
21
  protected hcs10Builder: HCS10Builder;
22
22
  namespace: "hcs10";
23
23
  constructor(params: HCS10QueryToolParams);
@@ -17,7 +17,7 @@ export declare abstract class BaseHCS2TransactionTool<T extends z.ZodObject<z.Zo
17
17
  /**
18
18
  * Base class for HCS2 query tools
19
19
  */
20
- export declare abstract class BaseHCS2QueryTool<T extends z.ZodObject<z.ZodRawShape, z.UnknownKeysParam, z.ZodTypeAny, Record<string, unknown>, Record<string, unknown>> = z.ZodObject<z.ZodRawShape>> extends BaseHederaQueryTool<T> {
20
+ export declare abstract class BaseHCS2QueryTool<T extends z.ZodObject<z.ZodRawShape, z.UnknownKeysParam, z.ZodTypeAny> = z.ZodObject<z.ZodRawShape>> extends BaseHederaQueryTool<T> {
21
21
  protected hcs2Builder: HCS2Builder;
22
22
  namespace: "hcs2";
23
23
  constructor(params: HCS2QueryToolParams);
@@ -13,6 +13,7 @@ declare const inscribeFromBufferSchema: z.ZodObject<{
13
13
  tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
14
14
  chunkSize: z.ZodOptional<z.ZodNumber>;
15
15
  waitForConfirmation: z.ZodOptional<z.ZodBoolean>;
16
+ timeoutMs: z.ZodOptional<z.ZodNumber>;
16
17
  apiKey: z.ZodOptional<z.ZodString>;
17
18
  }, "strip", z.ZodTypeAny, {
18
19
  fileName: string;
@@ -23,6 +24,7 @@ declare const inscribeFromBufferSchema: z.ZodObject<{
23
24
  chunkSize?: number | undefined;
24
25
  waitForConfirmation?: boolean | undefined;
25
26
  apiKey?: string | undefined;
27
+ timeoutMs?: number | undefined;
26
28
  mimeType?: string | undefined;
27
29
  }, {
28
30
  fileName: string;
@@ -33,6 +35,7 @@ declare const inscribeFromBufferSchema: z.ZodObject<{
33
35
  chunkSize?: number | undefined;
34
36
  waitForConfirmation?: boolean | undefined;
35
37
  apiKey?: string | undefined;
38
+ timeoutMs?: number | undefined;
36
39
  mimeType?: string | undefined;
37
40
  }>;
38
41
  /**
@@ -50,6 +53,7 @@ export declare class InscribeFromBufferTool extends BaseInscriberQueryTool<typeo
50
53
  tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
51
54
  chunkSize: z.ZodOptional<z.ZodNumber>;
52
55
  waitForConfirmation: z.ZodOptional<z.ZodBoolean>;
56
+ timeoutMs: z.ZodOptional<z.ZodNumber>;
53
57
  apiKey: z.ZodOptional<z.ZodString>;
54
58
  }, "strip", z.ZodTypeAny, {
55
59
  fileName: string;
@@ -60,6 +64,7 @@ export declare class InscribeFromBufferTool extends BaseInscriberQueryTool<typeo
60
64
  chunkSize?: number | undefined;
61
65
  waitForConfirmation?: boolean | undefined;
62
66
  apiKey?: string | undefined;
67
+ timeoutMs?: number | undefined;
63
68
  mimeType?: string | undefined;
64
69
  }, {
65
70
  fileName: string;
@@ -70,6 +75,7 @@ export declare class InscribeFromBufferTool extends BaseInscriberQueryTool<typeo
70
75
  chunkSize?: number | undefined;
71
76
  waitForConfirmation?: boolean | undefined;
72
77
  apiKey?: string | undefined;
78
+ timeoutMs?: number | undefined;
73
79
  mimeType?: string | undefined;
74
80
  }>;
75
81
  protected executeQuery(params: z.infer<typeof inscribeFromBufferSchema>, _runManager?: CallbackManagerForToolRun): Promise<unknown>;
@@ -11,6 +11,7 @@ declare const inscribeFromFileSchema: z.ZodObject<{
11
11
  tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
12
12
  chunkSize: z.ZodOptional<z.ZodNumber>;
13
13
  waitForConfirmation: z.ZodOptional<z.ZodBoolean>;
14
+ timeoutMs: z.ZodOptional<z.ZodNumber>;
14
15
  apiKey: z.ZodOptional<z.ZodString>;
15
16
  }, "strip", z.ZodTypeAny, {
16
17
  filePath: string;
@@ -20,6 +21,7 @@ declare const inscribeFromFileSchema: z.ZodObject<{
20
21
  chunkSize?: number | undefined;
21
22
  waitForConfirmation?: boolean | undefined;
22
23
  apiKey?: string | undefined;
24
+ timeoutMs?: number | undefined;
23
25
  }, {
24
26
  filePath: string;
25
27
  tags?: string[] | undefined;
@@ -28,6 +30,7 @@ declare const inscribeFromFileSchema: z.ZodObject<{
28
30
  chunkSize?: number | undefined;
29
31
  waitForConfirmation?: boolean | undefined;
30
32
  apiKey?: string | undefined;
33
+ timeoutMs?: number | undefined;
31
34
  }>;
32
35
  /**
33
36
  * Tool for inscribing content from file
@@ -35,7 +38,6 @@ declare const inscribeFromFileSchema: z.ZodObject<{
35
38
  export declare class InscribeFromFileTool extends BaseInscriberQueryTool<typeof inscribeFromFileSchema> {
36
39
  name: string;
37
40
  description: string;
38
- private logger;
39
41
  get specificInputSchema(): typeof inscribeFromFileSchema;
40
42
  protected executeQuery(params: z.infer<typeof inscribeFromFileSchema>, _runManager?: CallbackManagerForToolRun): Promise<unknown>;
41
43
  private getMimeType;
@@ -17,7 +17,7 @@ export declare abstract class BaseInscriberTransactionTool<T extends z.ZodObject
17
17
  /**
18
18
  * Base class for Inscriber query tools
19
19
  */
20
- export declare abstract class BaseInscriberQueryTool<T extends z.ZodObject<z.ZodRawShape, z.UnknownKeysParam, z.ZodTypeAny, Record<string, unknown>, Record<string, unknown>> = z.ZodObject<z.ZodRawShape>> extends BaseHederaQueryTool<T> {
20
+ export declare abstract class BaseInscriberQueryTool<T extends z.ZodObject<z.ZodRawShape, z.UnknownKeysParam, z.ZodTypeAny> = z.ZodObject<z.ZodRawShape>> extends BaseHederaQueryTool<T> {
21
21
  protected inscriberBuilder: InscriberBuilder;
22
22
  namespace: "inscriber";
23
23
  constructor(params: InscriberQueryToolParams);
@@ -1 +1 @@
1
- {"version":3,"file":"standards-agent-kit.es19.js","sources":["../../src/tools/hcs2/base-hcs2-tools.ts"],"sourcesContent":["import {\n BaseHederaTransactionTool,\n BaseHederaQueryTool,\n BaseServiceBuilder,\n} from 'hedera-agent-kit';\nimport { HCS2Builder } from '../../builders/hcs2/hcs2-builder';\nimport {\n HCS2TransactionToolParams,\n HCS2QueryToolParams,\n} from './hcs2-tool-params';\nimport { z } from 'zod';\n\n/**\n * Base class for HCS2 transaction tools\n */\nexport abstract class BaseHCS2TransactionTool<\n T extends z.ZodObject<\n z.ZodRawShape,\n z.UnknownKeysParam,\n z.ZodTypeAny\n > = z.ZodObject<z.ZodRawShape>\n> extends BaseHederaTransactionTool<T> {\n protected hcs2Builder: HCS2Builder;\n namespace = 'hcs2' as const;\n\n constructor(params: HCS2TransactionToolParams) {\n super(params);\n this.hcs2Builder = params.hcs2Builder;\n }\n\n /**\n * Override to return the HCS2Builder\n */\n protected getServiceBuilder(): BaseServiceBuilder {\n return this.hcs2Builder;\n }\n}\n\n/**\n * Base class for HCS2 query tools\n */\nexport abstract class BaseHCS2QueryTool<\n T extends z.ZodObject<\n z.ZodRawShape,\n z.UnknownKeysParam,\n z.ZodTypeAny,\n Record<string, unknown>,\n Record<string, unknown>\n > = z.ZodObject<z.ZodRawShape>\n> extends BaseHederaQueryTool<T> {\n protected hcs2Builder: HCS2Builder;\n namespace = 'hcs2' as const;\n\n constructor(params: HCS2QueryToolParams) {\n super(params);\n this.hcs2Builder = params.hcs2Builder;\n }\n\n /**\n * Override to return the HCS2Builder\n */\n protected getServiceBuilder(): BaseServiceBuilder {\n return this.hcs2Builder;\n }\n}"],"names":[],"mappings":";AAeO,MAAe,gCAMZ,0BAA6B;AAAA,EAIrC,YAAY,QAAmC;AAC7C,UAAM,MAAM;AAHd,SAAA,YAAY;AAIV,SAAK,cAAc,OAAO;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA,EAKU,oBAAwC;AAChD,WAAO,KAAK;AAAA,EACd;AACF;AAKO,MAAe,0BAQZ,oBAAuB;AAAA,EAI/B,YAAY,QAA6B;AACvC,UAAM,MAAM;AAHd,SAAA,YAAY;AAIV,SAAK,cAAc,OAAO;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA,EAKU,oBAAwC;AAChD,WAAO,KAAK;AAAA,EACd;AACF;"}
1
+ {"version":3,"file":"standards-agent-kit.es19.js","sources":["../../src/tools/hcs2/base-hcs2-tools.ts"],"sourcesContent":["import {\n BaseHederaTransactionTool,\n BaseHederaQueryTool,\n BaseServiceBuilder,\n} from 'hedera-agent-kit';\nimport { HCS2Builder } from '../../builders/hcs2/hcs2-builder';\nimport {\n HCS2TransactionToolParams,\n HCS2QueryToolParams,\n} from './hcs2-tool-params';\nimport { z } from 'zod';\n\n/**\n * Base class for HCS2 transaction tools\n */\nexport abstract class BaseHCS2TransactionTool<\n T extends z.ZodObject<\n z.ZodRawShape,\n z.UnknownKeysParam,\n z.ZodTypeAny\n > = z.ZodObject<z.ZodRawShape>\n> extends BaseHederaTransactionTool<T> {\n protected hcs2Builder: HCS2Builder;\n namespace = 'hcs2' as const;\n\n constructor(params: HCS2TransactionToolParams) {\n super(params);\n this.hcs2Builder = params.hcs2Builder;\n }\n\n /**\n * Override to return the HCS2Builder\n */\n protected getServiceBuilder(): BaseServiceBuilder {\n return this.hcs2Builder;\n }\n}\n\n/**\n * Base class for HCS2 query tools\n */\nexport abstract class BaseHCS2QueryTool<\n T extends z.ZodObject<\n z.ZodRawShape,\n z.UnknownKeysParam,\n z.ZodTypeAny\n > = z.ZodObject<z.ZodRawShape>\n> extends BaseHederaQueryTool<T> {\n protected hcs2Builder: HCS2Builder;\n namespace = 'hcs2' as const;\n\n constructor(params: HCS2QueryToolParams) {\n super(params);\n this.hcs2Builder = params.hcs2Builder;\n }\n\n /**\n * Override to return the HCS2Builder\n */\n protected getServiceBuilder(): BaseServiceBuilder {\n return this.hcs2Builder;\n }\n}"],"names":[],"mappings":";AAeO,MAAe,gCAMZ,0BAA6B;AAAA,EAIrC,YAAY,QAAmC;AAC7C,UAAM,MAAM;AAHd,SAAA,YAAY;AAIV,SAAK,cAAc,OAAO;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA,EAKU,oBAAwC;AAChD,WAAO,KAAK;AAAA,EACd;AACF;AAKO,MAAe,0BAMZ,oBAAuB;AAAA,EAI/B,YAAY,QAA6B;AACvC,UAAM,MAAM;AAHd,SAAA,YAAY;AAIV,SAAK,cAAc,OAAO;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA,EAKU,oBAAwC;AAChD,WAAO,KAAK;AAAA,EACd;AACF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"standards-agent-kit.es26.js","sources":["../../src/tools/inscriber/base-inscriber-tools.ts"],"sourcesContent":["import {\n BaseHederaTransactionTool,\n BaseHederaQueryTool,\n BaseServiceBuilder,\n} from 'hedera-agent-kit';\nimport { InscriberBuilder } from '../../builders/inscriber/inscriber-builder';\nimport {\n InscriberTransactionToolParams,\n InscriberQueryToolParams,\n} from './inscriber-tool-params';\nimport { z } from 'zod';\n\n/**\n * Base class for Inscriber transaction tools\n */\nexport abstract class BaseInscriberTransactionTool<\n T extends z.ZodObject<\n z.ZodRawShape,\n z.UnknownKeysParam,\n z.ZodTypeAny\n > = z.ZodObject<z.ZodRawShape>\n> extends BaseHederaTransactionTool<T> {\n protected inscriberBuilder: InscriberBuilder;\n namespace = 'inscriber' as const;\n\n constructor(params: InscriberTransactionToolParams) {\n super(params);\n this.inscriberBuilder = params.inscriberBuilder;\n }\n\n /**\n * Override to return the InscriberBuilder\n */\n protected getServiceBuilder(): BaseServiceBuilder {\n return this.inscriberBuilder;\n }\n}\n\n/**\n * Base class for Inscriber query tools\n */\nexport abstract class BaseInscriberQueryTool<\n T extends z.ZodObject<\n z.ZodRawShape,\n z.UnknownKeysParam,\n z.ZodTypeAny,\n Record<string, unknown>,\n Record<string, unknown>\n > = z.ZodObject<z.ZodRawShape>\n> extends BaseHederaQueryTool<T> {\n protected inscriberBuilder: InscriberBuilder;\n namespace = 'inscriber' as const;\n\n constructor(params: InscriberQueryToolParams) {\n super(params);\n this.inscriberBuilder = params.inscriberBuilder;\n }\n\n /**\n * Override to return the InscriberBuilder\n */\n protected getServiceBuilder(): BaseServiceBuilder {\n return this.inscriberBuilder;\n }\n}"],"names":[],"mappings":";AAeO,MAAe,qCAMZ,0BAA6B;AAAA,EAIrC,YAAY,QAAwC;AAClD,UAAM,MAAM;AAHd,SAAA,YAAY;AAIV,SAAK,mBAAmB,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA,EAKU,oBAAwC;AAChD,WAAO,KAAK;AAAA,EACd;AACF;AAKO,MAAe,+BAQZ,oBAAuB;AAAA,EAI/B,YAAY,QAAkC;AAC5C,UAAM,MAAM;AAHd,SAAA,YAAY;AAIV,SAAK,mBAAmB,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA,EAKU,oBAAwC;AAChD,WAAO,KAAK;AAAA,EACd;AACF;"}
1
+ {"version":3,"file":"standards-agent-kit.es26.js","sources":["../../src/tools/inscriber/base-inscriber-tools.ts"],"sourcesContent":["import {\n BaseHederaTransactionTool,\n BaseHederaQueryTool,\n BaseServiceBuilder,\n} from 'hedera-agent-kit';\nimport { InscriberBuilder } from '../../builders/inscriber/inscriber-builder';\nimport {\n InscriberTransactionToolParams,\n InscriberQueryToolParams,\n} from './inscriber-tool-params';\nimport { z } from 'zod';\n\n/**\n * Base class for Inscriber transaction tools\n */\nexport abstract class BaseInscriberTransactionTool<\n T extends z.ZodObject<\n z.ZodRawShape,\n z.UnknownKeysParam,\n z.ZodTypeAny\n > = z.ZodObject<z.ZodRawShape>\n> extends BaseHederaTransactionTool<T> {\n protected inscriberBuilder: InscriberBuilder;\n namespace = 'inscriber' as const;\n\n constructor(params: InscriberTransactionToolParams) {\n super(params);\n this.inscriberBuilder = params.inscriberBuilder;\n }\n\n /**\n * Override to return the InscriberBuilder\n */\n protected getServiceBuilder(): BaseServiceBuilder {\n return this.inscriberBuilder;\n }\n}\n\n/**\n * Base class for Inscriber query tools\n */\nexport abstract class BaseInscriberQueryTool<\n T extends z.ZodObject<\n z.ZodRawShape,\n z.UnknownKeysParam,\n z.ZodTypeAny\n > = z.ZodObject<z.ZodRawShape>\n> extends BaseHederaQueryTool<T> {\n protected inscriberBuilder: InscriberBuilder;\n namespace = 'inscriber' as const;\n\n constructor(params: InscriberQueryToolParams) {\n super(params);\n this.inscriberBuilder = params.inscriberBuilder;\n }\n\n /**\n * Override to return the InscriberBuilder\n */\n protected getServiceBuilder(): BaseServiceBuilder {\n return this.inscriberBuilder;\n }\n}"],"names":[],"mappings":";AAeO,MAAe,qCAMZ,0BAA6B;AAAA,EAIrC,YAAY,QAAwC;AAClD,UAAM,MAAM;AAHd,SAAA,YAAY;AAIV,SAAK,mBAAmB,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA,EAKU,oBAAwC;AAChD,WAAO,KAAK;AAAA,EACd;AACF;AAKO,MAAe,+BAMZ,oBAAuB;AAAA,EAI/B,YAAY,QAAkC;AAC5C,UAAM,MAAM;AAHd,SAAA,YAAY;AAIV,SAAK,mBAAmB,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA,EAKU,oBAAwC;AAChD,WAAO,KAAK;AAAA,EACd;AACF;"}
@@ -1,6 +1,5 @@
1
1
  import { z } from "zod";
2
2
  import { BaseInscriberQueryTool } from "./standards-agent-kit.es26.js";
3
- import { Logger } from "@hashgraphonline/standards-sdk";
4
3
  import * as fs from "fs/promises";
5
4
  import * as path from "path";
6
5
  const inscribeFromFileSchema = z.object({
@@ -10,6 +9,7 @@ const inscribeFromFileSchema = z.object({
10
9
  tags: z.array(z.string()).optional().describe("Tags to categorize the inscription"),
11
10
  chunkSize: z.number().int().positive().optional().describe("Chunk size for large files"),
12
11
  waitForConfirmation: z.boolean().optional().describe("Whether to wait for inscription confirmation"),
12
+ timeoutMs: z.number().int().positive().optional().describe("Timeout in milliseconds for inscription (default: no timeout)"),
13
13
  apiKey: z.string().optional().describe("API key for inscription service")
14
14
  });
15
15
  class InscribeFromFileTool extends BaseInscriberQueryTool {
@@ -17,29 +17,29 @@ class InscribeFromFileTool extends BaseInscriberQueryTool {
17
17
  super(...arguments);
18
18
  this.name = "inscribeFromFile";
19
19
  this.description = "Inscribe content from a local file to the Hedera network using a file path. For files accessed through MCP filesystem tools, consider reading the file content first and using inscribeFromBuffer instead.";
20
- this.logger = new Logger({ module: "InscribeFromFileTool" });
21
20
  }
22
21
  get specificInputSchema() {
23
22
  return inscribeFromFileSchema;
24
23
  }
25
24
  async executeQuery(params, _runManager) {
25
+ console.log(`[DEBUG] InscribeFromFileTool.executeQuery called with: ${params.filePath}`);
26
26
  let fileContent;
27
27
  try {
28
- this.logger.info(`Checking file: ${params.filePath}`);
29
- this.logger.info(`Current working directory: ${process.cwd()}`);
28
+ console.log(`[DEBUG] Checking file: ${params.filePath}`);
29
+ console.log(`[DEBUG] Current working directory: ${process.cwd()}`);
30
30
  const stats = await fs.stat(params.filePath);
31
31
  if (!stats.isFile()) {
32
32
  throw new Error(`Path "${params.filePath}" is not a file`);
33
33
  }
34
- this.logger.info(`File size: ${stats.size} bytes`);
34
+ console.log(`[DEBUG] File size: ${stats.size} bytes`);
35
35
  if (stats.size === 0) {
36
36
  throw new Error(
37
37
  `File "${params.filePath}" is empty. Cannot inscribe empty files.`
38
38
  );
39
39
  }
40
- this.logger.info("Reading file content...");
40
+ this.logger?.info("Reading file content...");
41
41
  fileContent = await fs.readFile(params.filePath);
42
- this.logger.info(`Read ${fileContent.length} bytes from file`);
42
+ this.logger?.info(`Read ${fileContent.length} bytes from file`);
43
43
  if (!fileContent || fileContent.length === 0) {
44
44
  throw new Error(
45
45
  `File "${params.filePath}" has no content. Cannot inscribe empty files.`
@@ -55,10 +55,10 @@ class InscribeFromFileTool extends BaseInscriberQueryTool {
55
55
  throw new Error(`Failed to read file: ${error}`);
56
56
  }
57
57
  const base64Data = fileContent.toString("base64");
58
- this.logger.info(`Converted to base64: ${base64Data.length} characters`);
58
+ this.logger?.info(`Converted to base64: ${base64Data.length} characters`);
59
59
  const fileName = path.basename(params.filePath);
60
60
  const mimeType = this.getMimeType(fileName);
61
- this.logger.info(`File: ${fileName}, MIME type: ${mimeType}`);
61
+ this.logger?.info(`File: ${fileName}, MIME type: ${mimeType}`);
62
62
  const options = {
63
63
  mode: params.mode,
64
64
  metadata: params.metadata,
@@ -71,14 +71,28 @@ class InscribeFromFileTool extends BaseInscriberQueryTool {
71
71
  network: this.inscriberBuilder["hederaKit"].client.network.toString().includes("mainnet") ? "mainnet" : "testnet"
72
72
  };
73
73
  try {
74
- const timeoutPromise = new Promise((_, reject) => {
75
- setTimeout(
76
- () => reject(new Error("Inscription timed out after 30 seconds")),
77
- 3e4
78
- );
79
- });
80
- const result = await Promise.race([
81
- this.inscriberBuilder.inscribe(
74
+ let result;
75
+ if (params.timeoutMs) {
76
+ const timeoutPromise = new Promise((_, reject) => {
77
+ setTimeout(
78
+ () => reject(new Error(`Inscription timed out after ${params.timeoutMs}ms`)),
79
+ params.timeoutMs
80
+ );
81
+ });
82
+ result = await Promise.race([
83
+ this.inscriberBuilder.inscribe(
84
+ {
85
+ type: "buffer",
86
+ buffer: Buffer.from(base64Data, "base64"),
87
+ fileName,
88
+ mimeType
89
+ },
90
+ options
91
+ ),
92
+ timeoutPromise
93
+ ]);
94
+ } else {
95
+ result = await this.inscriberBuilder.inscribe(
82
96
  {
83
97
  type: "buffer",
84
98
  buffer: Buffer.from(base64Data, "base64"),
@@ -86,9 +100,8 @@ class InscribeFromFileTool extends BaseInscriberQueryTool {
86
100
  mimeType
87
101
  },
88
102
  options
89
- ),
90
- timeoutPromise
91
- ]);
103
+ );
104
+ }
92
105
  if (result.confirmed) {
93
106
  const topicId = result.inscription?.topic_id || result.result.topicId;
94
107
  const network = options.network || "testnet";
@@ -1 +1 @@
1
- {"version":3,"file":"standards-agent-kit.es28.js","sources":["../../src/tools/inscriber/InscribeFromFileTool.ts"],"sourcesContent":["import { z } from 'zod';\nimport { BaseInscriberQueryTool } from './base-inscriber-tools';\nimport { InscriptionOptions, Logger } from '@hashgraphonline/standards-sdk';\nimport { CallbackManagerForToolRun } from '@langchain/core/callbacks/manager';\nimport * as fs from 'fs/promises';\nimport * as path from 'path';\n\n/**\n * Schema for inscribing from file\n */\nconst inscribeFromFileSchema = z.object({\n filePath: z.string().describe('The file path of the content to inscribe'),\n mode: z\n .enum(['file', 'hashinal'])\n .optional()\n .describe('Inscription mode: file or hashinal NFT'),\n metadata: z\n .record(z.unknown())\n .optional()\n .describe('Metadata to attach to the inscription'),\n tags: z\n .array(z.string())\n .optional()\n .describe('Tags to categorize the inscription'),\n chunkSize: z\n .number()\n .int()\n .positive()\n .optional()\n .describe('Chunk size for large files'),\n waitForConfirmation: z\n .boolean()\n .optional()\n .describe('Whether to wait for inscription confirmation'),\n apiKey: z.string().optional().describe('API key for inscription service'),\n});\n\n/**\n * Tool for inscribing content from file\n */\nexport class InscribeFromFileTool extends BaseInscriberQueryTool<\n typeof inscribeFromFileSchema\n> {\n name = 'inscribeFromFile';\n description =\n 'Inscribe content from a local file to the Hedera network using a file path. For files accessed through MCP filesystem tools, consider reading the file content first and using inscribeFromBuffer instead.';\n \n private logger = new Logger({ module: 'InscribeFromFileTool' });\n\n get specificInputSchema(): typeof inscribeFromFileSchema {\n return inscribeFromFileSchema;\n }\n\n protected async executeQuery(\n params: z.infer<typeof inscribeFromFileSchema>,\n _runManager?: CallbackManagerForToolRun\n ): Promise<unknown> {\n // File validation\n let fileContent: Buffer;\n try {\n this.logger.info(`Checking file: ${params.filePath}`);\n this.logger.info(`Current working directory: ${process.cwd()}`);\n\n const stats = await fs.stat(params.filePath);\n if (!stats.isFile()) {\n throw new Error(`Path \"${params.filePath}\" is not a file`);\n }\n\n this.logger.info(`File size: ${stats.size} bytes`);\n\n if (stats.size === 0) {\n throw new Error(\n `File \"${params.filePath}\" is empty. Cannot inscribe empty files.`\n );\n }\n\n this.logger.info('Reading file content...');\n fileContent = await fs.readFile(params.filePath);\n this.logger.info(`Read ${fileContent.length} bytes from file`);\n\n if (!fileContent || fileContent.length === 0) {\n throw new Error(\n `File \"${params.filePath}\" has no content. Cannot inscribe empty files.`\n );\n }\n } catch (error) {\n if (error instanceof Error) {\n if (error.message.includes('ENOENT')) {\n throw new Error(`File not found: \"${params.filePath}\"`);\n }\n throw error;\n }\n throw new Error(`Failed to read file: ${error}`);\n }\n\n const base64Data = fileContent.toString('base64');\n this.logger.info(`Converted to base64: ${base64Data.length} characters`);\n\n const fileName = path.basename(params.filePath);\n const mimeType = this.getMimeType(fileName);\n this.logger.info(`File: ${fileName}, MIME type: ${mimeType}`);\n\n const options: InscriptionOptions = {\n mode: params.mode,\n metadata: params.metadata,\n tags: params.tags,\n chunkSize: params.chunkSize,\n waitForConfirmation: params.waitForConfirmation ?? true,\n waitMaxAttempts: 10,\n waitIntervalMs: 3000,\n apiKey: params.apiKey,\n network: this.inscriberBuilder['hederaKit'].client.network\n .toString()\n .includes('mainnet')\n ? 'mainnet'\n : 'testnet',\n };\n\n try {\n const timeoutPromise = new Promise((_, reject) => {\n setTimeout(\n () => reject(new Error('Inscription timed out after 30 seconds')),\n 30000\n );\n });\n\n const result = (await Promise.race([\n this.inscriberBuilder.inscribe(\n {\n type: 'buffer',\n buffer: Buffer.from(base64Data, 'base64'),\n fileName,\n mimeType,\n },\n options\n ),\n timeoutPromise,\n ])) as any;\n\n if (result.confirmed) {\n const topicId = result.inscription?.topic_id || result.result.topicId;\n const network = options.network || 'testnet';\n const cdnUrl = topicId\n ? `https://kiloscribe.com/api/inscription-cdn/${topicId}?network=${network}`\n : null;\n return `Successfully inscribed and confirmed content on the Hedera network!\\n\\nTransaction ID: ${\n result.result.transactionId\n }\\nTopic ID: ${topicId || 'N/A'}${\n cdnUrl ? `\\nView inscription: ${cdnUrl}` : ''\n }\\n\\nThe inscription is now available.`;\n } else {\n return `Successfully submitted inscription to the Hedera network!\\n\\nTransaction ID: ${result.result.transactionId}\\n\\nThe inscription is processing and will be confirmed shortly.`;\n }\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'Failed to inscribe from file';\n throw new Error(`Inscription failed: ${errorMessage}`);\n }\n }\n\n private getMimeType(fileName: string): string {\n const ext = path.extname(fileName).toLowerCase();\n const mimeTypes: Record<string, string> = {\n '.png': 'image/png',\n '.jpg': 'image/jpeg',\n '.jpeg': 'image/jpeg',\n '.gif': 'image/gif',\n '.webp': 'image/webp',\n '.svg': 'image/svg+xml',\n '.pdf': 'application/pdf',\n '.json': 'application/json',\n '.txt': 'text/plain',\n '.html': 'text/html',\n '.css': 'text/css',\n '.js': 'application/javascript',\n '.ts': 'application/typescript',\n '.mp4': 'video/mp4',\n '.mp3': 'audio/mpeg',\n '.wav': 'audio/wav',\n '.zip': 'application/zip',\n };\n return mimeTypes[ext] || 'application/octet-stream';\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"standards-agent-kit.es28.js","sources":["../../src/tools/inscriber/InscribeFromFileTool.ts"],"sourcesContent":["import { z } from 'zod';\nimport { BaseInscriberQueryTool } from './base-inscriber-tools';\nimport { InscriptionOptions } from '@hashgraphonline/standards-sdk';\nimport { CallbackManagerForToolRun } from '@langchain/core/callbacks/manager';\nimport * as fs from 'fs/promises';\nimport * as path from 'path';\n\n/**\n * Schema for inscribing from file\n */\nconst inscribeFromFileSchema = z.object({\n filePath: z.string().describe('The file path of the content to inscribe'),\n mode: z\n .enum(['file', 'hashinal'])\n .optional()\n .describe('Inscription mode: file or hashinal NFT'),\n metadata: z\n .record(z.unknown())\n .optional()\n .describe('Metadata to attach to the inscription'),\n tags: z\n .array(z.string())\n .optional()\n .describe('Tags to categorize the inscription'),\n chunkSize: z\n .number()\n .int()\n .positive()\n .optional()\n .describe('Chunk size for large files'),\n waitForConfirmation: z\n .boolean()\n .optional()\n .describe('Whether to wait for inscription confirmation'),\n timeoutMs: z\n .number()\n .int()\n .positive()\n .optional()\n .describe('Timeout in milliseconds for inscription (default: no timeout)'),\n apiKey: z.string().optional().describe('API key for inscription service'),\n});\n\n/**\n * Tool for inscribing content from file\n */\nexport class InscribeFromFileTool extends BaseInscriberQueryTool<\n typeof inscribeFromFileSchema\n> {\n name = 'inscribeFromFile';\n description =\n 'Inscribe content from a local file to the Hedera network using a file path. For files accessed through MCP filesystem tools, consider reading the file content first and using inscribeFromBuffer instead.';\n\n get specificInputSchema(): typeof inscribeFromFileSchema {\n return inscribeFromFileSchema;\n }\n\n protected async executeQuery(\n params: z.infer<typeof inscribeFromFileSchema>,\n _runManager?: CallbackManagerForToolRun\n ): Promise<unknown> {\n console.log(`[DEBUG] InscribeFromFileTool.executeQuery called with: ${params.filePath}`);\n \n // File validation\n let fileContent: Buffer;\n try {\n console.log(`[DEBUG] Checking file: ${params.filePath}`);\n console.log(`[DEBUG] Current working directory: ${process.cwd()}`);\n\n const stats = await fs.stat(params.filePath);\n if (!stats.isFile()) {\n throw new Error(`Path \"${params.filePath}\" is not a file`);\n }\n\n console.log(`[DEBUG] File size: ${stats.size} bytes`);\n\n if (stats.size === 0) {\n throw new Error(\n `File \"${params.filePath}\" is empty. Cannot inscribe empty files.`\n );\n }\n\n this.logger?.info('Reading file content...');\n fileContent = await fs.readFile(params.filePath);\n this.logger?.info(`Read ${fileContent.length} bytes from file`);\n\n if (!fileContent || fileContent.length === 0) {\n throw new Error(\n `File \"${params.filePath}\" has no content. Cannot inscribe empty files.`\n );\n }\n } catch (error) {\n if (error instanceof Error) {\n if (error.message.includes('ENOENT')) {\n throw new Error(`File not found: \"${params.filePath}\"`);\n }\n throw error;\n }\n throw new Error(`Failed to read file: ${error}`);\n }\n\n const base64Data = fileContent.toString('base64');\n this.logger?.info(`Converted to base64: ${base64Data.length} characters`);\n\n const fileName = path.basename(params.filePath);\n const mimeType = this.getMimeType(fileName);\n this.logger?.info(`File: ${fileName}, MIME type: ${mimeType}`);\n\n const options: InscriptionOptions = {\n mode: params.mode,\n metadata: params.metadata,\n tags: params.tags,\n chunkSize: params.chunkSize,\n waitForConfirmation: params.waitForConfirmation ?? true,\n waitMaxAttempts: 10,\n waitIntervalMs: 3000,\n apiKey: params.apiKey,\n network: this.inscriberBuilder['hederaKit'].client.network\n .toString()\n .includes('mainnet')\n ? 'mainnet'\n : 'testnet',\n };\n\n try {\n let result: any;\n \n if (params.timeoutMs) {\n const timeoutPromise = new Promise((_, reject) => {\n setTimeout(\n () => reject(new Error(`Inscription timed out after ${params.timeoutMs}ms`)),\n params.timeoutMs\n );\n });\n\n result = await Promise.race([\n this.inscriberBuilder.inscribe(\n {\n type: 'buffer',\n buffer: Buffer.from(base64Data, 'base64'),\n fileName,\n mimeType,\n },\n options\n ),\n timeoutPromise,\n ]);\n } else {\n result = await this.inscriberBuilder.inscribe(\n {\n type: 'buffer',\n buffer: Buffer.from(base64Data, 'base64'),\n fileName,\n mimeType,\n },\n options\n );\n }\n\n if (result.confirmed) {\n const topicId = result.inscription?.topic_id || result.result.topicId;\n const network = options.network || 'testnet';\n const cdnUrl = topicId\n ? `https://kiloscribe.com/api/inscription-cdn/${topicId}?network=${network}`\n : null;\n return `Successfully inscribed and confirmed content on the Hedera network!\\n\\nTransaction ID: ${\n result.result.transactionId\n }\\nTopic ID: ${topicId || 'N/A'}${\n cdnUrl ? `\\nView inscription: ${cdnUrl}` : ''\n }\\n\\nThe inscription is now available.`;\n } else {\n return `Successfully submitted inscription to the Hedera network!\\n\\nTransaction ID: ${result.result.transactionId}\\n\\nThe inscription is processing and will be confirmed shortly.`;\n }\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'Failed to inscribe from file';\n throw new Error(`Inscription failed: ${errorMessage}`);\n }\n }\n\n private getMimeType(fileName: string): string {\n const ext = path.extname(fileName).toLowerCase();\n const mimeTypes: Record<string, string> = {\n '.png': 'image/png',\n '.jpg': 'image/jpeg',\n '.jpeg': 'image/jpeg',\n '.gif': 'image/gif',\n '.webp': 'image/webp',\n '.svg': 'image/svg+xml',\n '.pdf': 'application/pdf',\n '.json': 'application/json',\n '.txt': 'text/plain',\n '.html': 'text/html',\n '.css': 'text/css',\n '.js': 'application/javascript',\n '.ts': 'application/typescript',\n '.mp4': 'video/mp4',\n '.mp3': 'audio/mpeg',\n '.wav': 'audio/wav',\n '.zip': 'application/zip',\n };\n return mimeTypes[ext] || 'application/octet-stream';\n }\n}\n"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ const inscribeFromBufferSchema = z.object({
9
9
  tags: z.array(z.string()).optional().describe("Tags to categorize the inscription"),
10
10
  chunkSize: z.number().int().positive().optional().describe("Chunk size for large files"),
11
11
  waitForConfirmation: z.boolean().optional().describe("Whether to wait for inscription confirmation"),
12
+ timeoutMs: z.number().int().positive().optional().describe("Timeout in milliseconds for inscription (default: no timeout)"),
12
13
  apiKey: z.string().optional().describe("API key for inscription service")
13
14
  });
14
15
  class InscribeFromBufferTool extends BaseInscriberQueryTool {
@@ -21,9 +22,10 @@ class InscribeFromBufferTool extends BaseInscriberQueryTool {
21
22
  return inscribeFromBufferSchema;
22
23
  }
23
24
  async executeQuery(params, _runManager) {
24
- console.log(`[InscribeFromBufferTool] Received base64Data length: ${params.base64Data?.length || 0}`);
25
- console.log(`[InscribeFromBufferTool] fileName: ${params.fileName}`);
26
- console.log(`[InscribeFromBufferTool] mimeType: ${params.mimeType}`);
25
+ console.log(`[DEBUG] InscribeFromBufferTool.executeQuery called`);
26
+ console.log(`[DEBUG] Buffer tool received base64Data length: ${params.base64Data?.length || 0}`);
27
+ console.log(`[DEBUG] Buffer tool fileName: ${params.fileName}`);
28
+ console.log(`[DEBUG] Buffer tool mimeType: ${params.mimeType}`);
27
29
  if (!params.base64Data || params.base64Data.trim() === "") {
28
30
  console.log(`[InscribeFromBufferTool] ERROR: No data provided`);
29
31
  throw new Error("No data provided. Cannot inscribe empty content.");
@@ -46,11 +48,28 @@ class InscribeFromBufferTool extends BaseInscriberQueryTool {
46
48
  network: this.inscriberBuilder["hederaKit"].client.network.toString().includes("mainnet") ? "mainnet" : "testnet"
47
49
  };
48
50
  try {
49
- const timeoutPromise = new Promise((_, reject) => {
50
- setTimeout(() => reject(new Error("Inscription timed out after 30 seconds")), 3e4);
51
- });
52
- const result = await Promise.race([
53
- this.inscriberBuilder.inscribe(
51
+ let result;
52
+ if (params.timeoutMs) {
53
+ const timeoutPromise = new Promise((_, reject) => {
54
+ setTimeout(
55
+ () => reject(new Error(`Inscription timed out after ${params.timeoutMs}ms`)),
56
+ params.timeoutMs
57
+ );
58
+ });
59
+ result = await Promise.race([
60
+ this.inscriberBuilder.inscribe(
61
+ {
62
+ type: "buffer",
63
+ buffer,
64
+ fileName: params.fileName,
65
+ mimeType: params.mimeType
66
+ },
67
+ options
68
+ ),
69
+ timeoutPromise
70
+ ]);
71
+ } else {
72
+ result = await this.inscriberBuilder.inscribe(
54
73
  {
55
74
  type: "buffer",
56
75
  buffer,
@@ -58,9 +77,8 @@ class InscribeFromBufferTool extends BaseInscriberQueryTool {
58
77
  mimeType: params.mimeType
59
78
  },
60
79
  options
61
- ),
62
- timeoutPromise
63
- ]);
80
+ );
81
+ }
64
82
  if (result.confirmed) {
65
83
  const topicId = result.inscription?.topic_id || result.result.topicId;
66
84
  const network = options.network || "testnet";
@@ -1 +1 @@
1
- {"version":3,"file":"standards-agent-kit.es29.js","sources":["../../src/tools/inscriber/InscribeFromBufferTool.ts"],"sourcesContent":["import { z } from 'zod';\nimport { BaseInscriberQueryTool } from './base-inscriber-tools';\nimport { InscriptionOptions } from '@hashgraphonline/standards-sdk';\nimport { CallbackManagerForToolRun } from '@langchain/core/callbacks/manager';\n\n/**\n * Schema for inscribing from buffer\n */\nconst inscribeFromBufferSchema = z.object({\n base64Data: z.string().describe('Base64 encoded content to inscribe'),\n fileName: z.string().describe('Name for the inscribed content'),\n mimeType: z\n .string()\n .optional()\n .describe('MIME type of the content'),\n mode: z\n .enum(['file', 'hashinal'])\n .optional()\n .describe('Inscription mode: file or hashinal NFT'),\n metadata: z\n .record(z.unknown())\n .optional()\n .describe('Metadata to attach to the inscription'),\n tags: z\n .array(z.string())\n .optional()\n .describe('Tags to categorize the inscription'),\n chunkSize: z\n .number()\n .int()\n .positive()\n .optional()\n .describe('Chunk size for large files'),\n waitForConfirmation: z\n .boolean()\n .optional()\n .describe('Whether to wait for inscription confirmation'),\n apiKey: z\n .string()\n .optional()\n .describe('API key for inscription service'),\n});\n\n\n/**\n * Tool for inscribing content from buffer\n */\nexport class InscribeFromBufferTool extends BaseInscriberQueryTool<typeof inscribeFromBufferSchema> {\n name = 'inscribeFromBuffer';\n description = 'Inscribe content from a buffer/base64 data to the Hedera network. Useful for inscribing content that has been read into memory, including files accessed through MCP filesystem tools.';\n\n get specificInputSchema() {\n return inscribeFromBufferSchema;\n }\n\n protected async executeQuery(\n params: z.infer<typeof inscribeFromBufferSchema>,\n _runManager?: CallbackManagerForToolRun\n ): Promise<unknown> {\n console.log(`[InscribeFromBufferTool] Received base64Data length: ${params.base64Data?.length || 0}`);\n console.log(`[InscribeFromBufferTool] fileName: ${params.fileName}`);\n console.log(`[InscribeFromBufferTool] mimeType: ${params.mimeType}`);\n \n if (!params.base64Data || params.base64Data.trim() === '') {\n console.log(`[InscribeFromBufferTool] ERROR: No data provided`);\n throw new Error('No data provided. Cannot inscribe empty content.');\n }\n\n const buffer = Buffer.from(params.base64Data, 'base64');\n console.log(`[InscribeFromBufferTool] Buffer length after conversion: ${buffer.length}`);\n \n if (buffer.length === 0) {\n console.log(`[InscribeFromBufferTool] ERROR: Buffer is empty after conversion`);\n throw new Error('Buffer is empty. Cannot inscribe empty content.');\n }\n\n const options: InscriptionOptions = {\n mode: params.mode,\n metadata: params.metadata,\n tags: params.tags,\n chunkSize: params.chunkSize,\n waitForConfirmation: params.waitForConfirmation ?? true,\n waitMaxAttempts: 10,\n waitIntervalMs: 3000,\n apiKey: params.apiKey,\n network: this.inscriberBuilder['hederaKit'].client.network.toString().includes('mainnet') ? 'mainnet' : 'testnet',\n };\n\n try {\n const timeoutPromise = new Promise((_, reject) => {\n setTimeout(() => reject(new Error('Inscription timed out after 30 seconds')), 30000);\n });\n\n const result = await Promise.race([\n this.inscriberBuilder.inscribe(\n {\n type: 'buffer',\n buffer,\n fileName: params.fileName,\n mimeType: params.mimeType,\n },\n options\n ),\n timeoutPromise\n ]) as any;\n\n if (result.confirmed) {\n const topicId = result.inscription?.topic_id || result.result.topicId;\n const network = options.network || 'testnet';\n const cdnUrl = topicId ? `https://kiloscribe.com/api/inscription-cdn/${topicId}?network=${network}` : null;\n return `Successfully inscribed and confirmed content on the Hedera network!\\n\\nTransaction ID: ${result.result.transactionId}\\nTopic ID: ${topicId || 'N/A'}${cdnUrl ? `\\nView inscription: ${cdnUrl}` : ''}\\n\\nThe inscription is now available.`;\n } else {\n return `Successfully submitted inscription to the Hedera network!\\n\\nTransaction ID: ${result.result.transactionId}\\n\\nThe inscription is processing and will be confirmed shortly.`;\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Failed to inscribe from buffer';\n throw new Error(`Inscription failed: ${errorMessage}`);\n }\n }\n}"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"standards-agent-kit.es29.js","sources":["../../src/tools/inscriber/InscribeFromBufferTool.ts"],"sourcesContent":["import { z } from 'zod';\nimport { BaseInscriberQueryTool } from './base-inscriber-tools';\nimport { InscriptionOptions } from '@hashgraphonline/standards-sdk';\nimport { CallbackManagerForToolRun } from '@langchain/core/callbacks/manager';\n\n/**\n * Schema for inscribing from buffer\n */\nconst inscribeFromBufferSchema = z.object({\n base64Data: z.string().describe('Base64 encoded content to inscribe'),\n fileName: z.string().describe('Name for the inscribed content'),\n mimeType: z\n .string()\n .optional()\n .describe('MIME type of the content'),\n mode: z\n .enum(['file', 'hashinal'])\n .optional()\n .describe('Inscription mode: file or hashinal NFT'),\n metadata: z\n .record(z.unknown())\n .optional()\n .describe('Metadata to attach to the inscription'),\n tags: z\n .array(z.string())\n .optional()\n .describe('Tags to categorize the inscription'),\n chunkSize: z\n .number()\n .int()\n .positive()\n .optional()\n .describe('Chunk size for large files'),\n waitForConfirmation: z\n .boolean()\n .optional()\n .describe('Whether to wait for inscription confirmation'),\n timeoutMs: z\n .number()\n .int()\n .positive()\n .optional()\n .describe('Timeout in milliseconds for inscription (default: no timeout)'),\n apiKey: z\n .string()\n .optional()\n .describe('API key for inscription service'),\n});\n\n\n/**\n * Tool for inscribing content from buffer\n */\nexport class InscribeFromBufferTool extends BaseInscriberQueryTool<typeof inscribeFromBufferSchema> {\n name = 'inscribeFromBuffer';\n description = 'Inscribe content from a buffer/base64 data to the Hedera network. Useful for inscribing content that has been read into memory, including files accessed through MCP filesystem tools.';\n\n get specificInputSchema() {\n return inscribeFromBufferSchema;\n }\n\n protected async executeQuery(\n params: z.infer<typeof inscribeFromBufferSchema>,\n _runManager?: CallbackManagerForToolRun\n ): Promise<unknown> {\n console.log(`[DEBUG] InscribeFromBufferTool.executeQuery called`);\n console.log(`[DEBUG] Buffer tool received base64Data length: ${params.base64Data?.length || 0}`);\n console.log(`[DEBUG] Buffer tool fileName: ${params.fileName}`);\n console.log(`[DEBUG] Buffer tool mimeType: ${params.mimeType}`);\n \n if (!params.base64Data || params.base64Data.trim() === '') {\n console.log(`[InscribeFromBufferTool] ERROR: No data provided`);\n throw new Error('No data provided. Cannot inscribe empty content.');\n }\n\n const buffer = Buffer.from(params.base64Data, 'base64');\n console.log(`[InscribeFromBufferTool] Buffer length after conversion: ${buffer.length}`);\n \n if (buffer.length === 0) {\n console.log(`[InscribeFromBufferTool] ERROR: Buffer is empty after conversion`);\n throw new Error('Buffer is empty. Cannot inscribe empty content.');\n }\n\n const options: InscriptionOptions = {\n mode: params.mode,\n metadata: params.metadata,\n tags: params.tags,\n chunkSize: params.chunkSize,\n waitForConfirmation: params.waitForConfirmation ?? true,\n waitMaxAttempts: 10,\n waitIntervalMs: 3000,\n apiKey: params.apiKey,\n network: this.inscriberBuilder['hederaKit'].client.network.toString().includes('mainnet') ? 'mainnet' : 'testnet',\n };\n\n try {\n let result: any;\n \n if (params.timeoutMs) {\n const timeoutPromise = new Promise((_, reject) => {\n setTimeout(\n () => reject(new Error(`Inscription timed out after ${params.timeoutMs}ms`)),\n params.timeoutMs\n );\n });\n\n result = await Promise.race([\n this.inscriberBuilder.inscribe(\n {\n type: 'buffer',\n buffer,\n fileName: params.fileName,\n mimeType: params.mimeType,\n },\n options\n ),\n timeoutPromise,\n ]);\n } else {\n result = await this.inscriberBuilder.inscribe(\n {\n type: 'buffer',\n buffer,\n fileName: params.fileName,\n mimeType: params.mimeType,\n },\n options\n );\n }\n\n if (result.confirmed) {\n const topicId = result.inscription?.topic_id || result.result.topicId;\n const network = options.network || 'testnet';\n const cdnUrl = topicId ? `https://kiloscribe.com/api/inscription-cdn/${topicId}?network=${network}` : null;\n return `Successfully inscribed and confirmed content on the Hedera network!\\n\\nTransaction ID: ${result.result.transactionId}\\nTopic ID: ${topicId || 'N/A'}${cdnUrl ? `\\nView inscription: ${cdnUrl}` : ''}\\n\\nThe inscription is now available.`;\n } else {\n return `Successfully submitted inscription to the Hedera network!\\n\\nTransaction ID: ${result.result.transactionId}\\n\\nThe inscription is processing and will be confirmed shortly.`;\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Failed to inscribe from buffer';\n throw new Error(`Inscription failed: ${errorMessage}`);\n }\n }\n}"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"standards-agent-kit.es6.js","sources":["../../src/tools/hcs10/base-hcs10-tools.ts"],"sourcesContent":["import {\n BaseHederaTransactionTool,\n BaseHederaQueryTool,\n BaseServiceBuilder,\n} from 'hedera-agent-kit';\nimport { HCS10Builder } from '../../builders/hcs10/hcs10-builder';\nimport {\n HCS10TransactionToolParams,\n HCS10QueryToolParams,\n} from './hcs10-tool-params';\nimport { z } from 'zod';\n\n/**\n * Base class for HCS10 transaction tools\n */\nexport abstract class BaseHCS10TransactionTool<\n T extends z.ZodObject<\n z.ZodRawShape,\n z.UnknownKeysParam,\n z.ZodTypeAny\n > = z.ZodObject<z.ZodRawShape>\n> extends BaseHederaTransactionTool<T> {\n protected hcs10Builder: HCS10Builder;\n namespace = 'hcs10' as const;\n\n constructor(params: HCS10TransactionToolParams) {\n super(params);\n this.hcs10Builder = params.hcs10Builder;\n }\n\n /**\n * Override to return the HCS10Builder\n */\n protected getServiceBuilder(): BaseServiceBuilder {\n return this.hcs10Builder;\n }\n}\n\n/**\n * Base class for HCS10 query tools\n */\nexport abstract class BaseHCS10QueryTool<\n T extends z.ZodObject<\n z.ZodRawShape,\n z.UnknownKeysParam,\n z.ZodTypeAny,\n Record<string, unknown>,\n Record<string, unknown>\n > = z.ZodObject<z.ZodRawShape>\n> extends BaseHederaQueryTool<T> {\n protected hcs10Builder: HCS10Builder;\n namespace = 'hcs10' as const;\n\n constructor(params: HCS10QueryToolParams) {\n super(params);\n this.hcs10Builder = params.hcs10Builder;\n }\n\n /**\n * Override to return the HCS10Builder\n */\n protected getServiceBuilder(): BaseServiceBuilder {\n return this.hcs10Builder;\n }\n}\n"],"names":[],"mappings":";AAeO,MAAe,iCAMZ,0BAA6B;AAAA,EAIrC,YAAY,QAAoC;AAC9C,UAAM,MAAM;AAHd,SAAA,YAAY;AAIV,SAAK,eAAe,OAAO;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA,EAKU,oBAAwC;AAChD,WAAO,KAAK;AAAA,EACd;AACF;AAKO,MAAe,2BAQZ,oBAAuB;AAAA,EAI/B,YAAY,QAA8B;AACxC,UAAM,MAAM;AAHd,SAAA,YAAY;AAIV,SAAK,eAAe,OAAO;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA,EAKU,oBAAwC;AAChD,WAAO,KAAK;AAAA,EACd;AACF;"}
1
+ {"version":3,"file":"standards-agent-kit.es6.js","sources":["../../src/tools/hcs10/base-hcs10-tools.ts"],"sourcesContent":["import {\n BaseHederaTransactionTool,\n BaseHederaQueryTool,\n BaseServiceBuilder,\n} from 'hedera-agent-kit';\nimport { HCS10Builder } from '../../builders/hcs10/hcs10-builder';\nimport {\n HCS10TransactionToolParams,\n HCS10QueryToolParams,\n} from './hcs10-tool-params';\nimport { z } from 'zod';\n\n/**\n * Base class for HCS10 transaction tools\n */\nexport abstract class BaseHCS10TransactionTool<\n T extends z.ZodObject<\n z.ZodRawShape,\n z.UnknownKeysParam,\n z.ZodTypeAny\n > = z.ZodObject<z.ZodRawShape>\n> extends BaseHederaTransactionTool<T> {\n protected hcs10Builder: HCS10Builder;\n namespace = 'hcs10' as const;\n\n constructor(params: HCS10TransactionToolParams) {\n super(params);\n this.hcs10Builder = params.hcs10Builder;\n }\n\n /**\n * Override to return the HCS10Builder\n */\n protected getServiceBuilder(): BaseServiceBuilder {\n return this.hcs10Builder;\n }\n}\n\n/**\n * Base class for HCS10 query tools\n */\nexport abstract class BaseHCS10QueryTool<\n T extends z.ZodObject<\n z.ZodRawShape,\n z.UnknownKeysParam,\n z.ZodTypeAny\n > = z.ZodObject<z.ZodRawShape>\n> extends BaseHederaQueryTool<T> {\n protected hcs10Builder: HCS10Builder;\n namespace = 'hcs10' as const;\n\n constructor(params: HCS10QueryToolParams) {\n super(params);\n this.hcs10Builder = params.hcs10Builder;\n }\n\n /**\n * Override to return the HCS10Builder\n */\n protected getServiceBuilder(): BaseServiceBuilder {\n return this.hcs10Builder;\n }\n}\n"],"names":[],"mappings":";AAeO,MAAe,iCAMZ,0BAA6B;AAAA,EAIrC,YAAY,QAAoC;AAC9C,UAAM,MAAM;AAHd,SAAA,YAAY;AAIV,SAAK,eAAe,OAAO;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA,EAKU,oBAAwC;AAChD,WAAO,KAAK;AAAA,EACd;AACF;AAKO,MAAe,2BAMZ,oBAAuB;AAAA,EAI/B,YAAY,QAA8B;AACxC,UAAM,MAAM;AAHd,SAAA,YAAY;AAIV,SAAK,eAAe,OAAO;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA,EAKU,oBAAwC;AAChD,WAAO,KAAK;AAAA,EACd;AACF;"}
@@ -17,7 +17,7 @@ export declare abstract class BaseHCS10TransactionTool<T extends z.ZodObject<z.Z
17
17
  /**
18
18
  * Base class for HCS10 query tools
19
19
  */
20
- export declare abstract class BaseHCS10QueryTool<T extends z.ZodObject<z.ZodRawShape, z.UnknownKeysParam, z.ZodTypeAny, Record<string, unknown>, Record<string, unknown>> = z.ZodObject<z.ZodRawShape>> extends BaseHederaQueryTool<T> {
20
+ export declare abstract class BaseHCS10QueryTool<T extends z.ZodObject<z.ZodRawShape, z.UnknownKeysParam, z.ZodTypeAny> = z.ZodObject<z.ZodRawShape>> extends BaseHederaQueryTool<T> {
21
21
  protected hcs10Builder: HCS10Builder;
22
22
  namespace: "hcs10";
23
23
  constructor(params: HCS10QueryToolParams);
@@ -17,7 +17,7 @@ export declare abstract class BaseHCS2TransactionTool<T extends z.ZodObject<z.Zo
17
17
  /**
18
18
  * Base class for HCS2 query tools
19
19
  */
20
- export declare abstract class BaseHCS2QueryTool<T extends z.ZodObject<z.ZodRawShape, z.UnknownKeysParam, z.ZodTypeAny, Record<string, unknown>, Record<string, unknown>> = z.ZodObject<z.ZodRawShape>> extends BaseHederaQueryTool<T> {
20
+ export declare abstract class BaseHCS2QueryTool<T extends z.ZodObject<z.ZodRawShape, z.UnknownKeysParam, z.ZodTypeAny> = z.ZodObject<z.ZodRawShape>> extends BaseHederaQueryTool<T> {
21
21
  protected hcs2Builder: HCS2Builder;
22
22
  namespace: "hcs2";
23
23
  constructor(params: HCS2QueryToolParams);
@@ -13,6 +13,7 @@ declare const inscribeFromBufferSchema: z.ZodObject<{
13
13
  tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
14
14
  chunkSize: z.ZodOptional<z.ZodNumber>;
15
15
  waitForConfirmation: z.ZodOptional<z.ZodBoolean>;
16
+ timeoutMs: z.ZodOptional<z.ZodNumber>;
16
17
  apiKey: z.ZodOptional<z.ZodString>;
17
18
  }, "strip", z.ZodTypeAny, {
18
19
  fileName: string;
@@ -23,6 +24,7 @@ declare const inscribeFromBufferSchema: z.ZodObject<{
23
24
  chunkSize?: number | undefined;
24
25
  waitForConfirmation?: boolean | undefined;
25
26
  apiKey?: string | undefined;
27
+ timeoutMs?: number | undefined;
26
28
  mimeType?: string | undefined;
27
29
  }, {
28
30
  fileName: string;
@@ -33,6 +35,7 @@ declare const inscribeFromBufferSchema: z.ZodObject<{
33
35
  chunkSize?: number | undefined;
34
36
  waitForConfirmation?: boolean | undefined;
35
37
  apiKey?: string | undefined;
38
+ timeoutMs?: number | undefined;
36
39
  mimeType?: string | undefined;
37
40
  }>;
38
41
  /**
@@ -50,6 +53,7 @@ export declare class InscribeFromBufferTool extends BaseInscriberQueryTool<typeo
50
53
  tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
51
54
  chunkSize: z.ZodOptional<z.ZodNumber>;
52
55
  waitForConfirmation: z.ZodOptional<z.ZodBoolean>;
56
+ timeoutMs: z.ZodOptional<z.ZodNumber>;
53
57
  apiKey: z.ZodOptional<z.ZodString>;
54
58
  }, "strip", z.ZodTypeAny, {
55
59
  fileName: string;
@@ -60,6 +64,7 @@ export declare class InscribeFromBufferTool extends BaseInscriberQueryTool<typeo
60
64
  chunkSize?: number | undefined;
61
65
  waitForConfirmation?: boolean | undefined;
62
66
  apiKey?: string | undefined;
67
+ timeoutMs?: number | undefined;
63
68
  mimeType?: string | undefined;
64
69
  }, {
65
70
  fileName: string;
@@ -70,6 +75,7 @@ export declare class InscribeFromBufferTool extends BaseInscriberQueryTool<typeo
70
75
  chunkSize?: number | undefined;
71
76
  waitForConfirmation?: boolean | undefined;
72
77
  apiKey?: string | undefined;
78
+ timeoutMs?: number | undefined;
73
79
  mimeType?: string | undefined;
74
80
  }>;
75
81
  protected executeQuery(params: z.infer<typeof inscribeFromBufferSchema>, _runManager?: CallbackManagerForToolRun): Promise<unknown>;
@@ -11,6 +11,7 @@ declare const inscribeFromFileSchema: z.ZodObject<{
11
11
  tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
12
12
  chunkSize: z.ZodOptional<z.ZodNumber>;
13
13
  waitForConfirmation: z.ZodOptional<z.ZodBoolean>;
14
+ timeoutMs: z.ZodOptional<z.ZodNumber>;
14
15
  apiKey: z.ZodOptional<z.ZodString>;
15
16
  }, "strip", z.ZodTypeAny, {
16
17
  filePath: string;
@@ -20,6 +21,7 @@ declare const inscribeFromFileSchema: z.ZodObject<{
20
21
  chunkSize?: number | undefined;
21
22
  waitForConfirmation?: boolean | undefined;
22
23
  apiKey?: string | undefined;
24
+ timeoutMs?: number | undefined;
23
25
  }, {
24
26
  filePath: string;
25
27
  tags?: string[] | undefined;
@@ -28,6 +30,7 @@ declare const inscribeFromFileSchema: z.ZodObject<{
28
30
  chunkSize?: number | undefined;
29
31
  waitForConfirmation?: boolean | undefined;
30
32
  apiKey?: string | undefined;
33
+ timeoutMs?: number | undefined;
31
34
  }>;
32
35
  /**
33
36
  * Tool for inscribing content from file
@@ -35,7 +38,6 @@ declare const inscribeFromFileSchema: z.ZodObject<{
35
38
  export declare class InscribeFromFileTool extends BaseInscriberQueryTool<typeof inscribeFromFileSchema> {
36
39
  name: string;
37
40
  description: string;
38
- private logger;
39
41
  get specificInputSchema(): typeof inscribeFromFileSchema;
40
42
  protected executeQuery(params: z.infer<typeof inscribeFromFileSchema>, _runManager?: CallbackManagerForToolRun): Promise<unknown>;
41
43
  private getMimeType;
@@ -17,7 +17,7 @@ export declare abstract class BaseInscriberTransactionTool<T extends z.ZodObject
17
17
  /**
18
18
  * Base class for Inscriber query tools
19
19
  */
20
- export declare abstract class BaseInscriberQueryTool<T extends z.ZodObject<z.ZodRawShape, z.UnknownKeysParam, z.ZodTypeAny, Record<string, unknown>, Record<string, unknown>> = z.ZodObject<z.ZodRawShape>> extends BaseHederaQueryTool<T> {
20
+ export declare abstract class BaseInscriberQueryTool<T extends z.ZodObject<z.ZodRawShape, z.UnknownKeysParam, z.ZodTypeAny> = z.ZodObject<z.ZodRawShape>> extends BaseHederaQueryTool<T> {
21
21
  protected inscriberBuilder: InscriberBuilder;
22
22
  namespace: "inscriber";
23
23
  constructor(params: InscriberQueryToolParams);