@hashgraphonline/standards-agent-kit 0.2.119 → 0.2.121

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 (132) hide show
  1. package/dist/cjs/config/ContentReferenceConfig.d.ts +8 -0
  2. package/dist/cjs/index.d.ts +2 -0
  3. package/dist/cjs/standards-agent-kit.cjs +1 -1
  4. package/dist/cjs/standards-agent-kit.cjs.map +1 -1
  5. package/dist/cjs/tools/hcs6/CreateDynamicRegistryTool.d.ts +7 -7
  6. package/dist/cjs/tools/hcs6/QueryDynamicRegistryTool.d.ts +3 -3
  7. package/dist/cjs/tools/hcs6/RegisterDynamicHashinalTool.d.ts +7 -7
  8. package/dist/cjs/tools/hcs6/UpdateDynamicHashinalTool.d.ts +7 -7
  9. package/dist/cjs/tools/inscriber/InscribeFromBufferTool.d.ts +7 -6
  10. package/dist/cjs/tools/inscriber/base-inscriber-tools.d.ts +11 -0
  11. package/dist/cjs/tools/inscriber/inscriber-tool-params.d.ts +3 -0
  12. package/dist/cjs/types/content-resolver.d.ts +6 -0
  13. package/dist/es/config/ContentReferenceConfig.d.ts +8 -0
  14. package/dist/es/index.d.ts +2 -0
  15. package/dist/es/standards-agent-kit.es.js +42 -40
  16. package/dist/es/standards-agent-kit.es.js.map +1 -1
  17. package/dist/es/standards-agent-kit.es10.js +72 -23
  18. package/dist/es/standards-agent-kit.es10.js.map +1 -1
  19. package/dist/es/standards-agent-kit.es11.js +27 -27
  20. package/dist/es/standards-agent-kit.es11.js.map +1 -1
  21. package/dist/es/standards-agent-kit.es12.js +20 -30
  22. package/dist/es/standards-agent-kit.es12.js.map +1 -1
  23. package/dist/es/standards-agent-kit.es13.js +27 -37
  24. package/dist/es/standards-agent-kit.es13.js.map +1 -1
  25. package/dist/es/standards-agent-kit.es14.js +48 -60
  26. package/dist/es/standards-agent-kit.es14.js.map +1 -1
  27. package/dist/es/standards-agent-kit.es15.js +60 -23
  28. package/dist/es/standards-agent-kit.es15.js.map +1 -1
  29. package/dist/es/standards-agent-kit.es16.js +23 -23
  30. package/dist/es/standards-agent-kit.es16.js.map +1 -1
  31. package/dist/es/standards-agent-kit.es17.js +23 -33
  32. package/dist/es/standards-agent-kit.es17.js.map +1 -1
  33. package/dist/es/standards-agent-kit.es18.js +34 -10
  34. package/dist/es/standards-agent-kit.es18.js.map +1 -1
  35. package/dist/es/standards-agent-kit.es19.js +16 -155
  36. package/dist/es/standards-agent-kit.es19.js.map +1 -1
  37. package/dist/es/standards-agent-kit.es2.js +21 -1567
  38. package/dist/es/standards-agent-kit.es2.js.map +1 -1
  39. package/dist/es/standards-agent-kit.es20.js +150 -22
  40. package/dist/es/standards-agent-kit.es20.js.map +1 -1
  41. package/dist/es/standards-agent-kit.es21.js +25 -39
  42. package/dist/es/standards-agent-kit.es21.js.map +1 -1
  43. package/dist/es/standards-agent-kit.es22.js +26 -28
  44. package/dist/es/standards-agent-kit.es22.js.map +1 -1
  45. package/dist/es/standards-agent-kit.es23.js +16 -19
  46. package/dist/es/standards-agent-kit.es23.js.map +1 -1
  47. package/dist/es/standards-agent-kit.es24.js +21 -15
  48. package/dist/es/standards-agent-kit.es24.js.map +1 -1
  49. package/dist/es/standards-agent-kit.es25.js +18 -21
  50. package/dist/es/standards-agent-kit.es25.js.map +1 -1
  51. package/dist/es/standards-agent-kit.es26.js +35 -32
  52. package/dist/es/standards-agent-kit.es26.js.map +1 -1
  53. package/dist/es/standards-agent-kit.es27.js +38 -25
  54. package/dist/es/standards-agent-kit.es27.js.map +1 -1
  55. package/dist/es/standards-agent-kit.es28.js +24 -37
  56. package/dist/es/standards-agent-kit.es28.js.map +1 -1
  57. package/dist/es/standards-agent-kit.es29.js +26 -43
  58. package/dist/es/standards-agent-kit.es29.js.map +1 -1
  59. package/dist/es/standards-agent-kit.es3.js +1532 -55
  60. package/dist/es/standards-agent-kit.es3.js.map +1 -1
  61. package/dist/es/standards-agent-kit.es30.js +35 -40
  62. package/dist/es/standards-agent-kit.es30.js.map +1 -1
  63. package/dist/es/standards-agent-kit.es31.js +35 -39
  64. package/dist/es/standards-agent-kit.es31.js.map +1 -1
  65. package/dist/es/standards-agent-kit.es32.js +39 -23
  66. package/dist/es/standards-agent-kit.es32.js.map +1 -1
  67. package/dist/es/standards-agent-kit.es33.js +39 -168
  68. package/dist/es/standards-agent-kit.es33.js.map +1 -1
  69. package/dist/es/standards-agent-kit.es34.js +93 -96
  70. package/dist/es/standards-agent-kit.es34.js.map +1 -1
  71. package/dist/es/standards-agent-kit.es35.js +99 -64
  72. package/dist/es/standards-agent-kit.es35.js.map +1 -1
  73. package/dist/es/standards-agent-kit.es36.js +166 -64
  74. package/dist/es/standards-agent-kit.es36.js.map +1 -1
  75. package/dist/es/standards-agent-kit.es37.js +87 -30
  76. package/dist/es/standards-agent-kit.es37.js.map +1 -1
  77. package/dist/es/standards-agent-kit.es38.js +38 -242
  78. package/dist/es/standards-agent-kit.es38.js.map +1 -1
  79. package/dist/es/standards-agent-kit.es39.js +246 -138
  80. package/dist/es/standards-agent-kit.es39.js.map +1 -1
  81. package/dist/es/standards-agent-kit.es4.js +39 -33
  82. package/dist/es/standards-agent-kit.es4.js.map +1 -1
  83. package/dist/es/standards-agent-kit.es40.js +134 -26
  84. package/dist/es/standards-agent-kit.es40.js.map +1 -1
  85. package/dist/es/standards-agent-kit.es41.js +27 -22
  86. package/dist/es/standards-agent-kit.es41.js.map +1 -1
  87. package/dist/es/standards-agent-kit.es42.js +24 -3
  88. package/dist/es/standards-agent-kit.es42.js.map +1 -1
  89. package/dist/es/standards-agent-kit.es43.js +7 -0
  90. package/dist/es/standards-agent-kit.es43.js.map +1 -0
  91. package/dist/es/standards-agent-kit.es5.js +65 -32
  92. package/dist/es/standards-agent-kit.es5.js.map +1 -1
  93. package/dist/es/standards-agent-kit.es6.js +35 -311
  94. package/dist/es/standards-agent-kit.es6.js.map +1 -1
  95. package/dist/es/standards-agent-kit.es7.js +320 -20
  96. package/dist/es/standards-agent-kit.es7.js.map +1 -1
  97. package/dist/es/standards-agent-kit.es8.js +19 -227
  98. package/dist/es/standards-agent-kit.es8.js.map +1 -1
  99. package/dist/es/standards-agent-kit.es9.js +216 -65
  100. package/dist/es/standards-agent-kit.es9.js.map +1 -1
  101. package/dist/es/tools/hcs6/CreateDynamicRegistryTool.d.ts +7 -7
  102. package/dist/es/tools/hcs6/QueryDynamicRegistryTool.d.ts +3 -3
  103. package/dist/es/tools/hcs6/RegisterDynamicHashinalTool.d.ts +7 -7
  104. package/dist/es/tools/hcs6/UpdateDynamicHashinalTool.d.ts +7 -7
  105. package/dist/es/tools/inscriber/InscribeFromBufferTool.d.ts +7 -6
  106. package/dist/es/tools/inscriber/base-inscriber-tools.d.ts +11 -0
  107. package/dist/es/tools/inscriber/inscriber-tool-params.d.ts +3 -0
  108. package/dist/es/types/content-resolver.d.ts +6 -0
  109. package/dist/umd/config/ContentReferenceConfig.d.ts +8 -0
  110. package/dist/umd/index.d.ts +2 -0
  111. package/dist/umd/standards-agent-kit.umd.js +1 -1
  112. package/dist/umd/standards-agent-kit.umd.js.map +1 -1
  113. package/dist/umd/tools/hcs6/CreateDynamicRegistryTool.d.ts +7 -7
  114. package/dist/umd/tools/hcs6/QueryDynamicRegistryTool.d.ts +3 -3
  115. package/dist/umd/tools/hcs6/RegisterDynamicHashinalTool.d.ts +7 -7
  116. package/dist/umd/tools/hcs6/UpdateDynamicHashinalTool.d.ts +7 -7
  117. package/dist/umd/tools/inscriber/InscribeFromBufferTool.d.ts +7 -6
  118. package/dist/umd/tools/inscriber/base-inscriber-tools.d.ts +11 -0
  119. package/dist/umd/tools/inscriber/inscriber-tool-params.d.ts +3 -0
  120. package/dist/umd/types/content-resolver.d.ts +6 -0
  121. package/package.json +2 -2
  122. package/src/builders/hcs10/hcs10-builder.ts +2 -3
  123. package/src/config/ContentReferenceConfig.ts +30 -0
  124. package/src/index.ts +3 -1
  125. package/src/tools/hcs6/CreateDynamicRegistryTool.ts +22 -33
  126. package/src/tools/hcs6/QueryDynamicRegistryTool.ts +23 -33
  127. package/src/tools/hcs6/RegisterDynamicHashinalTool.ts +25 -35
  128. package/src/tools/hcs6/UpdateDynamicHashinalTool.ts +25 -36
  129. package/src/tools/inscriber/InscribeFromBufferTool.ts +239 -120
  130. package/src/tools/inscriber/base-inscriber-tools.ts +19 -0
  131. package/src/tools/inscriber/inscriber-tool-params.ts +3 -0
  132. package/src/types/content-resolver.ts +11 -0
@@ -1,45 +1,102 @@
1
1
  import { z } from "zod";
2
- import { BaseInscriberQueryTool } from "./standards-agent-kit.es32.js";
3
- const retrieveInscriptionSchema = z.object({
4
- transactionId: z.string().describe("The transaction ID of the inscription to retrieve"),
2
+ import { BaseInscriberQueryTool } from "./standards-agent-kit.es33.js";
3
+ const inscribeHashinalSchema = z.object({
4
+ url: z.string().url().describe("The URL of the content to inscribe as Hashinal NFT"),
5
+ name: z.string().describe("Name of the Hashinal NFT"),
6
+ creator: z.string().describe("Creator account ID or name"),
7
+ description: z.string().describe("Description of the Hashinal NFT"),
8
+ type: z.string().describe('Type of NFT (e.g., "image", "video", "audio")'),
9
+ attributes: z.array(
10
+ z.object({
11
+ trait_type: z.string(),
12
+ value: z.union([z.string(), z.number()])
13
+ })
14
+ ).optional().describe("NFT attributes"),
15
+ properties: z.record(z.unknown()).optional().describe("Additional properties"),
16
+ jsonFileURL: z.string().url().optional().describe("URL to JSON metadata file"),
17
+ tags: z.array(z.string()).optional().describe("Tags to categorize the NFT"),
18
+ chunkSize: z.number().int().positive().optional().describe("Chunk size for large files"),
19
+ waitForConfirmation: z.boolean().optional().describe("Whether to wait for inscription confirmation"),
20
+ timeoutMs: z.number().int().positive().optional().describe("Timeout in milliseconds for inscription (default: no timeout - waits until completion)"),
5
21
  apiKey: z.string().optional().describe("API key for inscription service")
6
22
  });
7
- class RetrieveInscriptionTool extends BaseInscriberQueryTool {
23
+ class InscribeHashinalTool extends BaseInscriberQueryTool {
8
24
  constructor() {
9
25
  super(...arguments);
10
- this.name = "retrieveInscription";
11
- this.description = "Retrieve details of an existing inscription from the Hedera network";
26
+ this.name = "inscribeHashinal";
27
+ this.description = "Inscribe content as a Hashinal NFT on the Hedera network";
12
28
  }
13
29
  get specificInputSchema() {
14
- return retrieveInscriptionSchema;
30
+ return inscribeHashinalSchema;
15
31
  }
16
32
  async executeQuery(params, _runManager) {
17
- const result = await this.inscriberBuilder.retrieveInscription(
18
- params.transactionId,
19
- {
20
- apiKey: params.apiKey,
21
- network: this.inscriberBuilder["hederaKit"].client.network.toString().includes("mainnet") ? "mainnet" : "testnet"
22
- }
23
- );
24
- return {
25
- inscriptionId: result.inscriptionId,
26
- transactionId: result.transactionId,
27
- topicId: result.topic_id,
28
- status: result.status,
29
- holderId: result.holderId,
30
- metadata: result.metadata,
31
- tags: result.tags,
32
- mode: result.mode,
33
- chunks: result.chunks,
34
- createdAt: result.createdAt,
35
- completedAt: result.completed || result.completedAt,
36
- fileUrl: result.fileUrl,
37
- mimeType: result.mimeType,
38
- fileSize: result.fileSize
33
+ const metadata = {
34
+ name: params.name,
35
+ creator: params.creator,
36
+ description: params.description,
37
+ type: params.type,
38
+ attributes: params.attributes,
39
+ properties: params.properties
40
+ };
41
+ const options = {
42
+ mode: "hashinal",
43
+ metadata,
44
+ jsonFileURL: params.jsonFileURL,
45
+ tags: params.tags,
46
+ chunkSize: params.chunkSize,
47
+ waitForConfirmation: params.waitForConfirmation ?? true,
48
+ waitMaxAttempts: 10,
49
+ waitIntervalMs: 3e3,
50
+ apiKey: params.apiKey,
51
+ network: this.inscriberBuilder["hederaKit"].client.network.toString().includes("mainnet") ? "mainnet" : "testnet"
39
52
  };
53
+ try {
54
+ let result;
55
+ if (params.timeoutMs) {
56
+ const timeoutPromise = new Promise((_, reject) => {
57
+ setTimeout(
58
+ () => reject(new Error(`Inscription timed out after ${params.timeoutMs}ms`)),
59
+ params.timeoutMs
60
+ );
61
+ });
62
+ result = await Promise.race([
63
+ this.inscriberBuilder.inscribe(
64
+ { type: "url", url: params.url },
65
+ options
66
+ ),
67
+ timeoutPromise
68
+ ]);
69
+ } else {
70
+ result = await this.inscriberBuilder.inscribe(
71
+ { type: "url", url: params.url },
72
+ options
73
+ );
74
+ }
75
+ if (result.confirmed) {
76
+ const topicId = result.inscription?.topic_id || result.result.topicId;
77
+ const network = options.network || "testnet";
78
+ const cdnUrl = topicId ? `https://kiloscribe.com/api/inscription-cdn/${topicId}?network=${network}` : null;
79
+ return `Successfully inscribed and confirmed Hashinal NFT on the Hedera network!
80
+
81
+ Transaction ID: ${result.result.transactionId}
82
+ Topic ID: ${topicId || "N/A"}${cdnUrl ? `
83
+ View inscription: ${cdnUrl}` : ""}
84
+
85
+ The Hashinal NFT is now available.`;
86
+ } else {
87
+ return `Successfully submitted Hashinal NFT inscription to the Hedera network!
88
+
89
+ Transaction ID: ${result.result.transactionId}
90
+
91
+ The inscription is processing and will be confirmed shortly.`;
92
+ }
93
+ } catch (error) {
94
+ const errorMessage = error instanceof Error ? error.message : "Failed to inscribe Hashinal NFT";
95
+ throw new Error(`Inscription failed: ${errorMessage}`);
96
+ }
40
97
  }
41
98
  }
42
99
  export {
43
- RetrieveInscriptionTool
100
+ InscribeHashinalTool
44
101
  };
45
102
  //# sourceMappingURL=standards-agent-kit.es37.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-agent-kit.es37.js","sources":["../../src/tools/inscriber/RetrieveInscriptionTool.ts"],"sourcesContent":["import { z } from 'zod';\nimport { BaseInscriberQueryTool } from './base-inscriber-tools';\nimport { CallbackManagerForToolRun } from '@langchain/core/callbacks/manager';\n\n/**\n * Schema for retrieving inscription\n */\nconst retrieveInscriptionSchema = z.object({\n transactionId: z\n .string()\n .describe('The transaction ID of the inscription to retrieve'),\n apiKey: z\n .string()\n .optional()\n .describe('API key for inscription service'),\n});\n\n\n/**\n * Tool for retrieving inscriptions\n */\nexport class RetrieveInscriptionTool extends BaseInscriberQueryTool<typeof retrieveInscriptionSchema> {\n name = 'retrieveInscription';\n description = 'Retrieve details of an existing inscription from the Hedera network';\n\n get specificInputSchema() {\n return retrieveInscriptionSchema;\n }\n\n protected async executeQuery(\n params: z.infer<typeof retrieveInscriptionSchema>,\n _runManager?: CallbackManagerForToolRun\n ): Promise<unknown> {\n const result = await this.inscriberBuilder.retrieveInscription(\n params.transactionId,\n {\n apiKey: params.apiKey,\n network: this.inscriberBuilder['hederaKit'].client.network.toString().includes('mainnet') ? 'mainnet' : 'testnet',\n }\n );\n\n return {\n inscriptionId: (result as any).inscriptionId,\n transactionId: result.transactionId,\n topicId: (result as any).topic_id,\n status: result.status,\n holderId: (result as any).holderId,\n metadata: result.metadata,\n tags: (result as any).tags,\n mode: result.mode,\n chunks: (result as any).chunks,\n createdAt: (result as any).createdAt,\n completedAt: (result as any).completed || (result as any).completedAt,\n fileUrl: result.fileUrl,\n mimeType: (result as any).mimeType,\n fileSize: (result as any).fileSize,\n };\n }\n}"],"names":[],"mappings":";;AAOA,MAAM,4BAA4B,EAAE,OAAO;AAAA,EACzC,eAAe,EACZ,SACA,SAAS,mDAAmD;AAAA,EAC/D,QAAQ,EACL,OAAA,EACA,SAAA,EACA,SAAS,iCAAiC;AAC/C,CAAC;AAMM,MAAM,gCAAgC,uBAAyD;AAAA,EAA/F,cAAA;AAAA,UAAA,GAAA,SAAA;AACL,SAAA,OAAO;AACP,SAAA,cAAc;AAAA,EAAA;AAAA,EAEd,IAAI,sBAAsB;AACxB,WAAO;AAAA,EACT;AAAA,EAEA,MAAgB,aACd,QACA,aACkB;AAClB,UAAM,SAAS,MAAM,KAAK,iBAAiB;AAAA,MACzC,OAAO;AAAA,MACP;AAAA,QACE,QAAQ,OAAO;AAAA,QACf,SAAS,KAAK,iBAAiB,WAAW,EAAE,OAAO,QAAQ,WAAW,SAAS,SAAS,IAAI,YAAY;AAAA,MAAA;AAAA,IAC1G;AAGF,WAAO;AAAA,MACL,eAAgB,OAAe;AAAA,MAC/B,eAAe,OAAO;AAAA,MACtB,SAAU,OAAe;AAAA,MACzB,QAAQ,OAAO;AAAA,MACf,UAAW,OAAe;AAAA,MAC1B,UAAU,OAAO;AAAA,MACjB,MAAO,OAAe;AAAA,MACtB,MAAM,OAAO;AAAA,MACb,QAAS,OAAe;AAAA,MACxB,WAAY,OAAe;AAAA,MAC3B,aAAc,OAAe,aAAc,OAAe;AAAA,MAC1D,SAAS,OAAO;AAAA,MAChB,UAAW,OAAe;AAAA,MAC1B,UAAW,OAAe;AAAA,IAAA;AAAA,EAE9B;AACF;"}
1
+ {"version":3,"file":"standards-agent-kit.es37.js","sources":["../../src/tools/inscriber/InscribeHashinalTool.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 Hashinal NFT\n */\nconst inscribeHashinalSchema = z.object({\n url: z.string().url().describe('The URL of the content to inscribe as Hashinal NFT'),\n name: z.string().describe('Name of the Hashinal NFT'),\n creator: z.string().describe('Creator account ID or name'),\n description: z.string().describe('Description of the Hashinal NFT'),\n type: z.string().describe('Type of NFT (e.g., \"image\", \"video\", \"audio\")'),\n attributes: z\n .array(\n z.object({\n trait_type: z.string(),\n value: z.union([z.string(), z.number()]),\n })\n )\n .optional()\n .describe('NFT attributes'),\n properties: z\n .record(z.unknown())\n .optional()\n .describe('Additional properties'),\n jsonFileURL: z\n .string()\n .url()\n .optional()\n .describe('URL to JSON metadata file'),\n tags: z\n .array(z.string())\n .optional()\n .describe('Tags to categorize the NFT'),\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 - waits until completion)'),\n apiKey: z\n .string()\n .optional()\n .describe('API key for inscription service'),\n});\n\n\n/**\n * Tool for inscribing Hashinal NFTs\n */\nexport class InscribeHashinalTool extends BaseInscriberQueryTool<typeof inscribeHashinalSchema> {\n name = 'inscribeHashinal';\n description = 'Inscribe content as a Hashinal NFT on the Hedera network';\n\n get specificInputSchema() {\n return inscribeHashinalSchema;\n }\n\n protected async executeQuery(\n params: z.infer<typeof inscribeHashinalSchema>,\n _runManager?: CallbackManagerForToolRun\n ): Promise<unknown> {\n const metadata = {\n name: params.name,\n creator: params.creator,\n description: params.description,\n type: params.type,\n attributes: params.attributes,\n properties: params.properties,\n };\n\n const options: InscriptionOptions = {\n mode: 'hashinal',\n metadata,\n jsonFileURL: params.jsonFileURL,\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: Awaited<ReturnType<typeof this.inscriberBuilder.inscribe>>;\n \n if (params.timeoutMs) {\n const timeoutPromise = new Promise<never>((_, 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 { type: 'url', url: params.url },\n options\n ),\n timeoutPromise\n ]);\n } else {\n result = await this.inscriberBuilder.inscribe(\n { type: 'url', url: params.url },\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 Hashinal NFT on the Hedera network!\\n\\nTransaction ID: ${result.result.transactionId}\\nTopic ID: ${topicId || 'N/A'}${cdnUrl ? `\\nView inscription: ${cdnUrl}` : ''}\\n\\nThe Hashinal NFT is now available.`;\n } else {\n return `Successfully submitted Hashinal NFT 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 Hashinal NFT';\n throw new Error(`Inscription failed: ${errorMessage}`);\n }\n }\n}"],"names":[],"mappings":"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"}
@@ -1,249 +1,45 @@
1
- import { updateEnvFile } from "./standards-agent-kit.es41.js";
2
- import { Logger, ConnectionsManager } from "@hashgraphonline/standards-sdk";
3
- class OpenConvaiState {
4
- /**
5
- * Creates a new OpenConvaiState instance
6
- * @param options - Options for environment variable persistence
7
- */
8
- constructor(options) {
9
- this.currentAgent = null;
10
- this.connectionMessageTimestamps = {};
11
- this.connectionsManager = null;
12
- this.defaultEnvFilePath = options?.defaultEnvFilePath;
13
- this.defaultPrefix = options?.defaultPrefix ?? "TODD";
14
- const shouldSilence = options?.disableLogging || process.env.DISABLE_LOGGING === "true";
15
- this.logger = new Logger({ module: "OpenConvaiState", silent: shouldSilence });
16
- if (options?.baseClient) {
17
- this.initializeConnectionsManager(options.baseClient);
18
- }
19
- }
20
- /**
21
- * Initializes the ConnectionsManager
22
- * @param baseClient - HCS10BaseClient instance to use
23
- */
24
- initializeConnectionsManager(baseClient) {
25
- if (!this.connectionsManager) {
26
- this.logger.debug("Initializing ConnectionsManager");
27
- this.connectionsManager = new ConnectionsManager({
28
- baseClient,
29
- logLevel: "error"
30
- });
31
- } else {
32
- this.logger.debug("ConnectionsManager already initialized");
33
- }
34
- return this.connectionsManager;
35
- }
36
- /**
37
- * Gets the ConnectionsManager instance
38
- * @returns The ConnectionsManager instance, or null if not initialized
39
- */
40
- getConnectionsManager() {
41
- return this.connectionsManager;
42
- }
43
- /**
44
- * Sets the current active agent and clears any previous connection data.
45
- * This should be called when switching between agents.
46
- */
47
- setCurrentAgent(agent) {
48
- this.currentAgent = agent;
49
- this.connectionMessageTimestamps = {};
50
- if (this.connectionsManager) {
51
- this.connectionsManager.clearAll();
52
- }
53
- }
54
- /**
55
- * Returns the currently active agent or null if none is set.
56
- */
57
- getCurrentAgent() {
58
- return this.currentAgent;
59
- }
60
- /**
61
- * Adds a new connection to the active connections list.
62
- * Ensures no duplicates are added based on connectionTopicId.
63
- * Initializes timestamp tracking for the connection.
64
- */
65
- addActiveConnection(connection) {
66
- if (!this.connectionsManager) {
67
- this.logger.error(
68
- "ConnectionsManager not initialized. Call initializeConnectionsManager before adding connections."
69
- );
70
- throw new Error(
71
- "ConnectionsManager not initialized. Call initializeConnectionsManager before adding connections."
72
- );
73
- }
74
- const sdkConnection = {
75
- connectionTopicId: connection.connectionTopicId,
76
- targetAccountId: connection.targetAccountId,
77
- targetAgentName: connection.targetAgentName,
78
- targetInboundTopicId: connection.targetInboundTopicId,
79
- status: this.convertConnectionStatus(connection.status || "established"),
80
- isPending: connection.isPending || false,
81
- needsConfirmation: connection.needsConfirmation || false,
82
- created: connection.created || /* @__PURE__ */ new Date(),
83
- lastActivity: connection.lastActivity,
84
- profileInfo: connection.profileInfo,
85
- connectionRequestId: connection.connectionRequestId,
86
- processed: true
87
- };
88
- this.connectionsManager.updateOrAddConnection(sdkConnection);
89
- this.initializeTimestampIfNeeded(connection.connectionTopicId);
90
- }
91
- /**
92
- * Updates an existing connection or adds it if not found.
93
- * Preserves existing properties when updating by merging objects.
94
- */
95
- updateOrAddConnection(connection) {
96
- this.addActiveConnection(connection);
97
- }
98
- /**
99
- * Returns a copy of all active connections.
100
- */
101
- listConnections() {
102
- if (!this.connectionsManager) {
103
- this.logger.debug(
104
- "ConnectionsManager not initialized, returning empty connections list"
105
- );
106
- return [];
107
- }
108
- return this.connectionsManager.getAllConnections().map((conn) => this.convertToActiveConnection(conn));
109
- }
110
- /**
111
- * Finds a connection by its identifier, which can be:
112
- * - A 1-based index as displayed in the connection list
113
- * - A target account ID string
114
- * - A connection topic ID string
115
- */
116
- getConnectionByIdentifier(identifier) {
117
- if (!this.connectionsManager) {
118
- return void 0;
119
- }
120
- const connections = this.listConnections();
121
- const numericIndex = parseInt(identifier) - 1;
122
- if (!isNaN(numericIndex) && numericIndex >= 0 && numericIndex < connections.length) {
123
- return connections[numericIndex];
124
- }
125
- const byTopicId = this.connectionsManager.getConnectionByTopicId(identifier);
126
- if (byTopicId) {
127
- return this.convertToActiveConnection(byTopicId);
128
- }
129
- const byAccountId = this.connectionsManager.getConnectionByAccountId(identifier);
130
- if (byAccountId) {
131
- return this.convertToActiveConnection(byAccountId);
132
- }
133
- return void 0;
134
- }
135
- /**
136
- * Gets the last processed message timestamp for a connection.
137
- * Returns 0 if no timestamp has been recorded.
138
- */
139
- getLastTimestamp(connectionTopicId) {
140
- return this.connectionMessageTimestamps[connectionTopicId] || 0;
141
- }
142
- /**
143
- * Updates the last processed message timestamp for a connection,
144
- * but only if the new timestamp is more recent than the existing one.
145
- */
146
- updateTimestamp(connectionTopicId, timestampNanos) {
147
- if (!(connectionTopicId in this.connectionMessageTimestamps)) {
148
- this.connectionMessageTimestamps[connectionTopicId] = timestampNanos;
149
- return;
150
- }
151
- const currentTimestamp = this.connectionMessageTimestamps[connectionTopicId];
152
- if (timestampNanos > currentTimestamp) {
153
- this.connectionMessageTimestamps[connectionTopicId] = timestampNanos;
154
- }
155
- }
156
- /**
157
- * Helper method to initialize timestamp tracking for a connection
158
- * if it doesn't already exist.
159
- */
160
- initializeTimestampIfNeeded(connectionTopicId) {
161
- if (!(connectionTopicId in this.connectionMessageTimestamps)) {
162
- this.connectionMessageTimestamps[connectionTopicId] = Date.now() * 1e6;
163
- }
164
- }
165
- /**
166
- * Converts ConnectionStatus to SDK status format
167
- */
168
- convertConnectionStatus(status) {
169
- switch (status) {
170
- case "pending":
171
- return "pending";
172
- case "established":
173
- return "established";
174
- case "needs confirmation":
175
- return "needs_confirmation";
176
- default:
177
- return "established";
178
- }
179
- }
180
- /**
181
- * Converts SDK Connection to ActiveConnection
182
- */
183
- convertToActiveConnection(conn) {
1
+ import { z } from "zod";
2
+ import { BaseInscriberQueryTool } from "./standards-agent-kit.es33.js";
3
+ const retrieveInscriptionSchema = z.object({
4
+ transactionId: z.string().describe("The transaction ID of the inscription to retrieve"),
5
+ apiKey: z.string().optional().describe("API key for inscription service")
6
+ });
7
+ class RetrieveInscriptionTool extends BaseInscriberQueryTool {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.name = "retrieveInscription";
11
+ this.description = "Retrieve details of an existing inscription from the Hedera network";
12
+ }
13
+ get specificInputSchema() {
14
+ return retrieveInscriptionSchema;
15
+ }
16
+ async executeQuery(params, _runManager) {
17
+ const result = await this.inscriberBuilder.retrieveInscription(
18
+ params.transactionId,
19
+ {
20
+ apiKey: params.apiKey,
21
+ network: this.inscriberBuilder["hederaKit"].client.network.toString().includes("mainnet") ? "mainnet" : "testnet"
22
+ }
23
+ );
184
24
  return {
185
- targetAccountId: conn.targetAccountId,
186
- targetAgentName: conn.targetAgentName || `Agent ${conn.targetAccountId}`,
187
- targetInboundTopicId: conn.targetInboundTopicId || "",
188
- connectionTopicId: conn.connectionTopicId,
189
- status: this.convertToStateStatus(conn.status),
190
- created: conn.created,
191
- lastActivity: conn.lastActivity,
192
- isPending: conn.isPending,
193
- needsConfirmation: conn.needsConfirmation,
194
- profileInfo: conn.profileInfo,
195
- connectionRequestId: conn.connectionRequestId
196
- };
197
- }
198
- /**
199
- * Converts SDK status to state status format
200
- */
201
- convertToStateStatus(status) {
202
- switch (status) {
203
- case "pending":
204
- return "pending";
205
- case "established":
206
- return "established";
207
- case "needs_confirmation":
208
- return "needs confirmation";
209
- case "closed":
210
- return "established";
211
- // Mapping closed to established for compatibility
212
- default:
213
- return "unknown";
214
- }
215
- }
216
- /**
217
- * Persists agent data to environment variables
218
- * @param agent - The agent data to persist
219
- * @param options - Environment file persistence options
220
- */
221
- async persistAgentData(agent, options) {
222
- if (options?.type && options.type !== "env-file") {
223
- throw new Error(
224
- `Unsupported persistence type: ${options.type}. Only 'env-file' is supported.`
225
- );
226
- }
227
- const envFilePath = options?.envFilePath || this.defaultEnvFilePath || process.env.ENV_FILE_PATH || ".env";
228
- const prefix = options?.prefix || this.defaultPrefix;
229
- if (!agent.accountId || !agent.inboundTopicId || !agent.outboundTopicId) {
230
- throw new Error("Agent data incomplete, cannot persist to environment");
231
- }
232
- const updates = {
233
- [`${prefix}_ACCOUNT_ID`]: agent.accountId,
234
- [`${prefix}_INBOUND_TOPIC_ID`]: agent.inboundTopicId,
235
- [`${prefix}_OUTBOUND_TOPIC_ID`]: agent.outboundTopicId
25
+ inscriptionId: result.inscriptionId,
26
+ transactionId: result.transactionId,
27
+ topicId: result.topic_id,
28
+ status: result.status,
29
+ holderId: result.holderId,
30
+ metadata: result.metadata,
31
+ tags: result.tags,
32
+ mode: result.mode,
33
+ chunks: result.chunks,
34
+ createdAt: result.createdAt,
35
+ completedAt: result.completed || result.completedAt,
36
+ fileUrl: result.fileUrl,
37
+ mimeType: result.mimeType,
38
+ fileSize: result.fileSize
236
39
  };
237
- if (agent.privateKey) {
238
- updates[`${prefix}_PRIVATE_KEY`] = agent.privateKey;
239
- }
240
- if (agent.profileTopicId) {
241
- updates[`${prefix}_PROFILE_TOPIC_ID`] = agent.profileTopicId;
242
- }
243
- await updateEnvFile(envFilePath, updates);
244
40
  }
245
41
  }
246
42
  export {
247
- OpenConvaiState
43
+ RetrieveInscriptionTool
248
44
  };
249
45
  //# sourceMappingURL=standards-agent-kit.es38.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-agent-kit.es38.js","sources":["../../src/state/open-convai-state.ts"],"sourcesContent":["import { updateEnvFile } from '../utils/state-tools';\nimport {\n RegisteredAgent,\n ActiveConnection,\n IStateManager,\n AgentPersistenceOptions,\n EnvFilePersistenceOptions,\n ConnectionStatus,\n} from './state-types';\nimport {\n ConnectionsManager,\n HCS10BaseClient,\n Connection,\n Logger,\n IConnectionsManager,\n} from '@hashgraphonline/standards-sdk';\n\n/**\n * Implementation of the IStateManager interface for the OpenConvai system.\n * Manages agent state and connection information with thread safety and\n * proper timestamp tracking.\n */\nexport class OpenConvaiState implements IStateManager {\n private currentAgent: RegisteredAgent | null = null;\n private connectionMessageTimestamps: Record<string, number> = {};\n private defaultEnvFilePath?: string;\n private defaultPrefix: string;\n private connectionsManager: IConnectionsManager | null = null;\n private logger: Logger;\n\n /**\n * Creates a new OpenConvaiState instance\n * @param options - Options for environment variable persistence\n */\n constructor(options?: {\n defaultEnvFilePath?: string;\n defaultPrefix?: string;\n baseClient?: HCS10BaseClient;\n disableLogging?: boolean;\n }) {\n this.defaultEnvFilePath = options?.defaultEnvFilePath;\n this.defaultPrefix = options?.defaultPrefix ?? 'TODD';\n const shouldSilence = options?.disableLogging || process.env.DISABLE_LOGGING === 'true';\n this.logger = new Logger({ module: 'OpenConvaiState', silent: shouldSilence });\n\n // Initialize ConnectionsManager immediately if baseClient is provided\n if (options?.baseClient) {\n this.initializeConnectionsManager(options.baseClient);\n }\n }\n\n /**\n * Initializes the ConnectionsManager\n * @param baseClient - HCS10BaseClient instance to use\n */\n initializeConnectionsManager(\n baseClient: HCS10BaseClient\n ): IConnectionsManager {\n if (!this.connectionsManager) {\n this.logger.debug('Initializing ConnectionsManager');\n this.connectionsManager = new ConnectionsManager({\n baseClient,\n logLevel: 'error',\n });\n } else {\n this.logger.debug('ConnectionsManager already initialized');\n }\n return this.connectionsManager;\n }\n\n /**\n * Gets the ConnectionsManager instance\n * @returns The ConnectionsManager instance, or null if not initialized\n */\n getConnectionsManager(): IConnectionsManager | null {\n return this.connectionsManager;\n }\n\n /**\n * Sets the current active agent and clears any previous connection data.\n * This should be called when switching between agents.\n */\n setCurrentAgent(agent: RegisteredAgent | null): void {\n this.currentAgent = agent;\n this.connectionMessageTimestamps = {};\n\n // Clear connections manager when changing agents\n if (this.connectionsManager) {\n this.connectionsManager.clearAll();\n }\n }\n\n /**\n * Returns the currently active agent or null if none is set.\n */\n getCurrentAgent(): RegisteredAgent | null {\n return this.currentAgent;\n }\n\n /**\n * Adds a new connection to the active connections list.\n * Ensures no duplicates are added based on connectionTopicId.\n * Initializes timestamp tracking for the connection.\n */\n addActiveConnection(connection: ActiveConnection): void {\n if (!this.connectionsManager) {\n this.logger.error(\n 'ConnectionsManager not initialized. Call initializeConnectionsManager before adding connections.'\n );\n throw new Error(\n 'ConnectionsManager not initialized. Call initializeConnectionsManager before adding connections.'\n );\n }\n\n // Convert from ActiveConnection to Connection\n const sdkConnection: Connection = {\n connectionTopicId: connection.connectionTopicId,\n targetAccountId: connection.targetAccountId,\n targetAgentName: connection.targetAgentName,\n targetInboundTopicId: connection.targetInboundTopicId,\n status: this.convertConnectionStatus(connection.status || 'established'),\n isPending: connection.isPending || false,\n needsConfirmation: connection.needsConfirmation || false,\n created: connection.created || new Date(),\n lastActivity: connection.lastActivity,\n profileInfo: connection.profileInfo,\n connectionRequestId: connection.connectionRequestId,\n processed: true,\n };\n\n // Add to ConnectionsManager\n this.connectionsManager.updateOrAddConnection(sdkConnection);\n\n // Initialize timestamp tracking\n this.initializeTimestampIfNeeded(connection.connectionTopicId);\n }\n\n /**\n * Updates an existing connection or adds it if not found.\n * Preserves existing properties when updating by merging objects.\n */\n updateOrAddConnection(connection: ActiveConnection): void {\n this.addActiveConnection(connection);\n }\n\n /**\n * Returns a copy of all active connections.\n */\n listConnections(): ActiveConnection[] {\n if (!this.connectionsManager) {\n this.logger.debug(\n 'ConnectionsManager not initialized, returning empty connections list'\n );\n return [];\n }\n\n // Convert SDK Connections to ActiveConnection\n return this.connectionsManager\n .getAllConnections()\n .map((conn) => this.convertToActiveConnection(conn));\n }\n\n /**\n * Finds a connection by its identifier, which can be:\n * - A 1-based index as displayed in the connection list\n * - A target account ID string\n * - A connection topic ID string\n */\n getConnectionByIdentifier(identifier: string): ActiveConnection | undefined {\n if (!this.connectionsManager) {\n return undefined;\n }\n\n const connections = this.listConnections();\n\n // Check if it's a 1-based index\n const numericIndex = parseInt(identifier) - 1;\n if (\n !isNaN(numericIndex) &&\n numericIndex >= 0 &&\n numericIndex < connections.length\n ) {\n return connections[numericIndex];\n }\n\n // Check if it's a topic ID\n const byTopicId =\n this.connectionsManager.getConnectionByTopicId(identifier);\n if (byTopicId) {\n return this.convertToActiveConnection(byTopicId);\n }\n\n // Check if it's an account ID\n const byAccountId =\n this.connectionsManager.getConnectionByAccountId(identifier);\n if (byAccountId) {\n return this.convertToActiveConnection(byAccountId);\n }\n\n return undefined;\n }\n\n /**\n * Gets the last processed message timestamp for a connection.\n * Returns 0 if no timestamp has been recorded.\n */\n getLastTimestamp(connectionTopicId: string): number {\n return this.connectionMessageTimestamps[connectionTopicId] || 0;\n }\n\n /**\n * Updates the last processed message timestamp for a connection,\n * but only if the new timestamp is more recent than the existing one.\n */\n updateTimestamp(connectionTopicId: string, timestampNanos: number): void {\n // Initialize if this is first update and skip the comparison logic\n if (!(connectionTopicId in this.connectionMessageTimestamps)) {\n this.connectionMessageTimestamps[connectionTopicId] = timestampNanos;\n return;\n }\n\n // Otherwise, only update if newer\n const currentTimestamp =\n this.connectionMessageTimestamps[connectionTopicId];\n if (timestampNanos > currentTimestamp) {\n this.connectionMessageTimestamps[connectionTopicId] = timestampNanos;\n }\n }\n\n /**\n * Helper method to initialize timestamp tracking for a connection\n * if it doesn't already exist.\n */\n private initializeTimestampIfNeeded(connectionTopicId: string): void {\n if (!(connectionTopicId in this.connectionMessageTimestamps)) {\n this.connectionMessageTimestamps[connectionTopicId] =\n Date.now() * 1_000_000;\n }\n }\n\n /**\n * Converts ConnectionStatus to SDK status format\n */\n private convertConnectionStatus(\n status: string\n ): 'pending' | 'established' | 'needs_confirmation' | 'closed' {\n switch (status) {\n case 'pending':\n return 'pending';\n case 'established':\n return 'established';\n case 'needs confirmation':\n return 'needs_confirmation';\n default:\n return 'established';\n }\n }\n\n /**\n * Converts SDK Connection to ActiveConnection\n */\n private convertToActiveConnection(conn: Connection): ActiveConnection {\n return {\n targetAccountId: conn.targetAccountId,\n targetAgentName: conn.targetAgentName || `Agent ${conn.targetAccountId}`,\n targetInboundTopicId: conn.targetInboundTopicId || '',\n connectionTopicId: conn.connectionTopicId,\n status: this.convertToStateStatus(conn.status),\n created: conn.created,\n lastActivity: conn.lastActivity,\n isPending: conn.isPending,\n needsConfirmation: conn.needsConfirmation,\n profileInfo: conn.profileInfo,\n connectionRequestId: conn.connectionRequestId,\n };\n }\n\n /**\n * Converts SDK status to state status format\n */\n private convertToStateStatus(status: string): ConnectionStatus {\n switch (status) {\n case 'pending':\n return 'pending';\n case 'established':\n return 'established';\n case 'needs_confirmation':\n return 'needs confirmation';\n case 'closed':\n return 'established'; // Mapping closed to established for compatibility\n default:\n return 'unknown';\n }\n }\n\n /**\n * Persists agent data to environment variables\n * @param agent - The agent data to persist\n * @param options - Environment file persistence options\n */\n async persistAgentData(\n agent: RegisteredAgent,\n options?: AgentPersistenceOptions\n ): Promise<void> {\n if (options?.type && options.type !== 'env-file') {\n throw new Error(\n `Unsupported persistence type: ${options.type}. Only 'env-file' is supported.`\n );\n }\n\n const envFilePath =\n (options as EnvFilePersistenceOptions)?.envFilePath ||\n this.defaultEnvFilePath ||\n process.env.ENV_FILE_PATH ||\n '.env';\n\n if (!envFilePath) {\n throw new Error(\n 'Environment file path could not be determined for agent data persistence'\n );\n }\n\n const prefix =\n (options as EnvFilePersistenceOptions)?.prefix || this.defaultPrefix;\n\n if (!agent.accountId || !agent.inboundTopicId || !agent.outboundTopicId) {\n throw new Error('Agent data incomplete, cannot persist to environment');\n }\n\n const updates: Record<string, string> = {\n [`${prefix}_ACCOUNT_ID`]: agent.accountId,\n [`${prefix}_INBOUND_TOPIC_ID`]: agent.inboundTopicId,\n [`${prefix}_OUTBOUND_TOPIC_ID`]: agent.outboundTopicId,\n };\n\n if (agent.privateKey) {\n updates[`${prefix}_PRIVATE_KEY`] = agent.privateKey;\n }\n\n if (agent.profileTopicId) {\n updates[`${prefix}_PROFILE_TOPIC_ID`] = agent.profileTopicId;\n }\n\n await updateEnvFile(envFilePath, updates);\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"standards-agent-kit.es38.js","sources":["../../src/tools/inscriber/RetrieveInscriptionTool.ts"],"sourcesContent":["import { z } from 'zod';\nimport { BaseInscriberQueryTool } from './base-inscriber-tools';\nimport { CallbackManagerForToolRun } from '@langchain/core/callbacks/manager';\n\n/**\n * Schema for retrieving inscription\n */\nconst retrieveInscriptionSchema = z.object({\n transactionId: z\n .string()\n .describe('The transaction ID of the inscription to retrieve'),\n apiKey: z\n .string()\n .optional()\n .describe('API key for inscription service'),\n});\n\n\n/**\n * Tool for retrieving inscriptions\n */\nexport class RetrieveInscriptionTool extends BaseInscriberQueryTool<typeof retrieveInscriptionSchema> {\n name = 'retrieveInscription';\n description = 'Retrieve details of an existing inscription from the Hedera network';\n\n get specificInputSchema() {\n return retrieveInscriptionSchema;\n }\n\n protected async executeQuery(\n params: z.infer<typeof retrieveInscriptionSchema>,\n _runManager?: CallbackManagerForToolRun\n ): Promise<unknown> {\n const result = await this.inscriberBuilder.retrieveInscription(\n params.transactionId,\n {\n apiKey: params.apiKey,\n network: this.inscriberBuilder['hederaKit'].client.network.toString().includes('mainnet') ? 'mainnet' : 'testnet',\n }\n );\n\n return {\n inscriptionId: (result as any).inscriptionId,\n transactionId: result.transactionId,\n topicId: (result as any).topic_id,\n status: result.status,\n holderId: (result as any).holderId,\n metadata: result.metadata,\n tags: (result as any).tags,\n mode: result.mode,\n chunks: (result as any).chunks,\n createdAt: (result as any).createdAt,\n completedAt: (result as any).completed || (result as any).completedAt,\n fileUrl: result.fileUrl,\n mimeType: (result as any).mimeType,\n fileSize: (result as any).fileSize,\n };\n }\n}"],"names":[],"mappings":";;AAOA,MAAM,4BAA4B,EAAE,OAAO;AAAA,EACzC,eAAe,EACZ,SACA,SAAS,mDAAmD;AAAA,EAC/D,QAAQ,EACL,OAAA,EACA,SAAA,EACA,SAAS,iCAAiC;AAC/C,CAAC;AAMM,MAAM,gCAAgC,uBAAyD;AAAA,EAA/F,cAAA;AAAA,UAAA,GAAA,SAAA;AACL,SAAA,OAAO;AACP,SAAA,cAAc;AAAA,EAAA;AAAA,EAEd,IAAI,sBAAsB;AACxB,WAAO;AAAA,EACT;AAAA,EAEA,MAAgB,aACd,QACA,aACkB;AAClB,UAAM,SAAS,MAAM,KAAK,iBAAiB;AAAA,MACzC,OAAO;AAAA,MACP;AAAA,QACE,QAAQ,OAAO;AAAA,QACf,SAAS,KAAK,iBAAiB,WAAW,EAAE,OAAO,QAAQ,WAAW,SAAS,SAAS,IAAI,YAAY;AAAA,MAAA;AAAA,IAC1G;AAGF,WAAO;AAAA,MACL,eAAgB,OAAe;AAAA,MAC/B,eAAe,OAAO;AAAA,MACtB,SAAU,OAAe;AAAA,MACzB,QAAQ,OAAO;AAAA,MACf,UAAW,OAAe;AAAA,MAC1B,UAAU,OAAO;AAAA,MACjB,MAAO,OAAe;AAAA,MACtB,MAAM,OAAO;AAAA,MACb,QAAS,OAAe;AAAA,MACxB,WAAY,OAAe;AAAA,MAC3B,aAAc,OAAe,aAAc,OAAe;AAAA,MAC1D,SAAS,OAAO;AAAA,MAChB,UAAW,OAAe;AAAA,MAC1B,UAAW,OAAe;AAAA,IAAA;AAAA,EAE9B;AACF;"}