@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
JavaScript
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