UNPKG

@hashgraphonline/conversational-agent

Version:

Hashgraph Online conversational AI agent implementing HCS-10 communication, HCS-2 registries, and content inscription on Hedera. https://hol.org

85 lines (84 loc) 2.98 kB
import { EntityFormat } from "./index27.js"; import { HRLResolver, HederaMirrorNode } from "@hashgraphonline/standards-sdk"; const _StringNormalizationConverter = class _StringNormalizationConverter { constructor() { this.sourceFormat = EntityFormat.ANY; this.targetFormat = EntityFormat.HRL; } canConvert(source, _context) { if (typeof source !== "string") { return false; } if (/^hcs:\/\/\d\/0\.0\.\d+$/i.test(source)) { return false; } if (/inscription-cdn\/(0\.0\.\d+)/i.test(source)) { return true; } if (/^content-ref:(0\.0\.\d+)$/i.test(source)) { return true; } if (/^0\.0\.\d+$/.test(source)) { const hasPreference = Boolean( _context?.toolPreferences?.inscription === "hrl" || _context?.toolPreferences?.topic === "hrl" ); return hasPreference; } return false; } async convert(source, context) { const toolPrefs = context.toolPreferences; const fallbackStandard = toolPrefs?.hrlStandard || toolPrefs?.inscriptionHrlStandard || "1"; const networkType = context.networkType || "testnet"; const resolver = new HRLResolver(); const cdnMatch = source.match(/inscription-cdn\/(0\.0\.\d+)/i); if (cdnMatch && cdnMatch[1]) { try { const mirror = new HederaMirrorNode(networkType); mirror.configureRetry({ maxRetries: 3, maxDelayMs: 1e3 }); const resolved = await mirror.getTopicInfo(cdnMatch[1]); const memo = resolved && resolved.memo || ""; const match = memo.match(/^hcs-(\d+)/); const standard = match && match[1] ? match[1] : "1"; return `hcs://${standard}/${cdnMatch[1]}`; } catch { return `hcs://${fallbackStandard}/${cdnMatch[1]}`; } } const contentRefMatch = source.match(/^content-ref:(0\.0\.\d+)$/i); if (contentRefMatch && contentRefMatch[1]) { try { const resolved = await resolver.resolve(contentRefMatch[1], { network: networkType }); const parsed = resolver.parseHRL(`hcs://1/${resolved.topicId}`); const std = parsed?.standard || fallbackStandard; return `hcs://${std}/${resolved.topicId}`; } catch { return `hcs://${fallbackStandard}/${contentRefMatch[1]}`; } } if (/^0\.0\.\d+$/.test(source)) { try { const resolved = await resolver.resolve(source, { network: networkType }); const parsed = resolver.parseHRL(`hcs://1/${resolved.topicId}`); const std = parsed?.standard || fallbackStandard; return `hcs://${std}/${resolved.topicId}`; } catch { return `hcs://${fallbackStandard}/${source}`; } } return source; } }; _StringNormalizationConverter.standardCache = /* @__PURE__ */ new Map(); let StringNormalizationConverter = _StringNormalizationConverter; export { StringNormalizationConverter }; //# sourceMappingURL=index29.js.map