__vite_ssr_exportName__("THREAD_LINK_PROTOCOL", () => { try { return THREAD_LINK_PROTOCOL } catch {} });
__vite_ssr_exportName__("parseThreadLinkHref", () => { try { return parseThreadLinkHref } catch {} });
__vite_ssr_exportName__("percentDecodedThreadLinkId", () => { try { return percentDecodedThreadLinkId } catch {} });
__vite_ssr_exportName__("resolveThreadLinkRef", () => { try { return resolveThreadLinkRef } catch {} });
__vite_ssr_exportName__("formatThreadLink", () => { try { return formatThreadLink } catch {} });
__vite_ssr_exportName__("hasThreadLinks", () => { try { return hasThreadLinks } catch {} });
__vite_ssr_exportName__("relabelThreadLinks", () => { try { return relabelThreadLinks } catch {} });
const __vite_ssr_import_0__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/index.ts", {"importedNames":["ThreadId"]});
const __vite_ssr_import_1__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/Option.js");
const __vite_ssr_import_2__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/Schema.js");



const THREAD_LINK_PROTOCOL = "t3-thread";
const THREAD_LINK_HREF_PREFIX = `${THREAD_LINK_PROTOCOL}://v1/`;
// Code comes first in the alternation so a link written inside a code span or fence is skipped.
const THREAD_LINK_OUTSIDE_CODE = /(?<fence>(`{3,}|~{3,})[\s\S]*?(?:\2|$))|(?<span>(`+)[^\n]*?\4)|\[[^\]\n]*\]\((?<href>t3-thread:\/\/v1\/[^\s)]+)\)/g;
const decodeThreadId = __vite_ssr_import_2__.decodeUnknownOption((0,__vite_ssr_import_0__.ThreadId));
/** The id as written. Thread ids can hold percent escapes of their own, so it is not decoded. */
function parseThreadLinkHref(href) {
	if (!href.startsWith(THREAD_LINK_HREF_PREFIX)) return null;
	return __vite_ssr_import_1__.getOrNull(decodeThreadId(href.slice(THREAD_LINK_HREF_PREFIX.length)));
};
function percentDecodedThreadLinkId(threadId) {
	try {
		const decoded = decodeURIComponent(threadId);
		return decoded === threadId ? null : __vite_ssr_import_1__.getOrNull(decodeThreadId(decoded));
	} catch {
		return null;
	}
};
function resolveThreadLinkRef(source, refs) {
	const decodedId = percentDecodedThreadLinkId(source.threadId);
	const ids = decodedId === null ? [source.threadId] : [source.threadId, decodedId];
	for (const threadId of ids) {
		const local = refs.find((ref) => ref.environmentId === source.environmentId && ref.threadId === threadId);
		if (local) return local;
	};
	for (const threadId of ids) {
		let match = null;
		for (const ref of refs) {
			if (ref.threadId !== threadId) continue;
			if (match !== null) return null;
			match = ref;
		};
		if (match !== null) return match;
	};
	return null;
};
function formatThreadLink(threadId, label) {
	const cleaned = label.replace(/[[\]\\\r\n]/g, " ").replace(/\s+/g, " ").trim();
	return `[${cleaned || threadId}](${THREAD_LINK_HREF_PREFIX}${threadId})`;
};
function hasThreadLinks(markdown) {
	return markdown.includes(`](${THREAD_LINK_HREF_PREFIX}`);
};
function relabelThreadLinks(markdown, title) {
	if (!hasThreadLinks(markdown)) return markdown;
	return markdown.replace(THREAD_LINK_OUTSIDE_CODE, (source, ...args) => {
		const href = args.at(-1).href;
		if (href === undefined) return source;
		const written = parseThreadLinkHref(href);
		if (written === null) return source;
		const decoded = percentDecodedThreadLinkId(written);
		const threadId = title(written) === undefined && decoded !== null && title(decoded) !== undefined ? decoded : written;
		const label = title(threadId)?.trim();
		return label ? formatThreadLink(threadId, label) : source;
	});
}
//# sourceMappingSource=vite-generated
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQTs7Ozs7OztBQUFBO0FBQ0E7QUFDQTs7OztBQUVPLE1BQU0sdUJBQXVCO0FBQ3BDLE1BQU0sMEJBQTBCLEdBQUcscUJBQXFCOztBQUV4RCxNQUFNLDJCQUNKO0FBRUYsTUFBTSxpQkFBaUIsc0JBQU8sdUJBQW9CLCtCQUFROztBQUduRCxTQUFTLG9CQUFvQixNQUErQjtDQUNqRSxJQUFJLENBQUMsS0FBSyxXQUFXLHVCQUF1QixHQUFHLE9BQU87Q0FDdEQsT0FBTyxzQkFBTyxVQUFVLGVBQWUsS0FBSyxNQUFNLHdCQUF3QixNQUFNLENBQUMsQ0FBQztBQUNwRjtBQUVPLFNBQVMsMkJBQTJCLFVBQXFDO0NBQzlFLElBQUk7RUFDRixNQUFNLFVBQVUsbUJBQW1CLFFBQVE7RUFDM0MsT0FBTyxZQUFZLFdBQVcsT0FBTyxzQkFBTyxVQUFVLGVBQWUsT0FBTyxDQUFDO0NBQy9FLFFBQVE7RUFDTixPQUFPO0NBQ1Q7QUFDRjtBQUVPLFNBQVMscUJBQ2QsUUFDQSxNQUN3QjtDQUN4QixNQUFNLFlBQVksMkJBQTJCLE9BQU8sUUFBUTtDQUM1RCxNQUFNLE1BQU0sY0FBYyxPQUFPLENBQUMsT0FBTyxRQUFRLElBQUksQ0FBQyxPQUFPLFVBQVUsU0FBUztDQUNoRixLQUFLLE1BQU0sWUFBWSxLQUFLO0VBQzFCLE1BQU0sUUFBUSxLQUFLLE1BQ2hCLFFBQVEsSUFBSSxrQkFBa0IsT0FBTyxpQkFBaUIsSUFBSSxhQUFhLFFBQzFFO0VBQ0EsSUFBSSxPQUFPLE9BQU87Q0FDcEI7Q0FDQSxLQUFLLE1BQU0sWUFBWSxLQUFLO0VBQzFCLElBQUksUUFBZ0M7RUFDcEMsS0FBSyxNQUFNLE9BQU8sTUFBTTtHQUN0QixJQUFJLElBQUksYUFBYSxVQUFVO0dBQy9CLElBQUksVUFBVSxNQUFNLE9BQU87R0FDM0IsUUFBUTtFQUNWO0VBQ0EsSUFBSSxVQUFVLE1BQU0sT0FBTztDQUM3QjtDQUNBLE9BQU87QUFDVDtBQUVPLFNBQVMsaUJBQWlCLFVBQWtCLE9BQXVCO0NBQ3hFLE1BQU0sVUFBVSxNQUNiLFFBQVEsZ0JBQWdCLEdBQUcsQ0FBQyxDQUM1QixRQUFRLFFBQVEsR0FBRyxDQUFDLENBQ3BCLEtBQUs7Q0FDUixPQUFPLElBQUksV0FBVyxTQUFTLElBQUksMEJBQTBCLFNBQVM7QUFDeEU7QUFFTyxTQUFTLGVBQWUsVUFBMkI7Q0FDeEQsT0FBTyxTQUFTLFNBQVMsS0FBSyx5QkFBeUI7QUFDekQ7QUFFTyxTQUFTLG1CQUNkLFVBQ0EsT0FDUTtDQUNSLElBQUksQ0FBQyxlQUFlLFFBQVEsR0FBRyxPQUFPO0NBQ3RDLE9BQU8sU0FBUyxRQUFRLDJCQUEyQixRQUFRLEdBQUcsU0FBUztFQUNyRSxNQUFNLE9BQVEsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQXVCO0VBQ2hELElBQUksU0FBUyxXQUFXLE9BQU87RUFDL0IsTUFBTSxVQUFVLG9CQUFvQixJQUFJO0VBQ3hDLElBQUksWUFBWSxNQUFNLE9BQU87RUFDN0IsTUFBTSxVQUFVLDJCQUEyQixPQUFPO0VBQ2xELE1BQU0sV0FDSixNQUFNLE9BQU8sTUFBTSxhQUFhLFlBQVksUUFBUSxNQUFNLE9BQU8sTUFBTSxZQUNuRSxVQUNBO0VBQ04sTUFBTSxRQUFRLE1BQU0sUUFBUSxDQUFDLEVBQUUsS0FBSztFQUNwQyxPQUFPLFFBQVEsaUJBQWlCLFVBQVUsS0FBSyxJQUFJO0NBQ3JELENBQUM7QUFDSCIsIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOlsidGhyZWFkTGlua3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGhyZWFkSWQsIHR5cGUgU2NvcGVkVGhyZWFkUmVmIH0gZnJvbSBcIkB0M3Rvb2xzL2NvbnRyYWN0c1wiO1xuaW1wb3J0ICogYXMgT3B0aW9uIGZyb20gXCJlZmZlY3QvT3B0aW9uXCI7XG5pbXBvcnQgKiBhcyBTY2hlbWEgZnJvbSBcImVmZmVjdC9TY2hlbWFcIjtcblxuZXhwb3J0IGNvbnN0IFRIUkVBRF9MSU5LX1BST1RPQ09MID0gXCJ0My10aHJlYWRcIjtcbmNvbnN0IFRIUkVBRF9MSU5LX0hSRUZfUFJFRklYID0gYCR7VEhSRUFEX0xJTktfUFJPVE9DT0x9Oi8vdjEvYDtcbi8vIENvZGUgY29tZXMgZmlyc3QgaW4gdGhlIGFsdGVybmF0aW9uIHNvIGEgbGluayB3cml0dGVuIGluc2lkZSBhIGNvZGUgc3BhbiBvciBmZW5jZSBpcyBza2lwcGVkLlxuY29uc3QgVEhSRUFEX0xJTktfT1VUU0lERV9DT0RFID1cbiAgLyg/PGZlbmNlPihgezMsfXx+ezMsfSlbXFxzXFxTXSo/KD86XFwyfCQpKXwoPzxzcGFuPihgKylbXlxcbl0qP1xcNCl8XFxbW15cXF1cXG5dKlxcXVxcKCg/PGhyZWY+dDMtdGhyZWFkOlxcL1xcL3YxXFwvW15cXHMpXSspXFwpL2c7XG5cbmNvbnN0IGRlY29kZVRocmVhZElkID0gU2NoZW1hLmRlY29kZVVua25vd25PcHRpb24oVGhyZWFkSWQpO1xuXG4vKiogVGhlIGlkIGFzIHdyaXR0ZW4uIFRocmVhZCBpZHMgY2FuIGhvbGQgcGVyY2VudCBlc2NhcGVzIG9mIHRoZWlyIG93biwgc28gaXQgaXMgbm90IGRlY29kZWQuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VUaHJlYWRMaW5rSHJlZihocmVmOiBzdHJpbmcpOiBUaHJlYWRJZCB8IG51bGwge1xuICBpZiAoIWhyZWYuc3RhcnRzV2l0aChUSFJFQURfTElOS19IUkVGX1BSRUZJWCkpIHJldHVybiBudWxsO1xuICByZXR1cm4gT3B0aW9uLmdldE9yTnVsbChkZWNvZGVUaHJlYWRJZChocmVmLnNsaWNlKFRIUkVBRF9MSU5LX0hSRUZfUFJFRklYLmxlbmd0aCkpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBlcmNlbnREZWNvZGVkVGhyZWFkTGlua0lkKHRocmVhZElkOiBUaHJlYWRJZCk6IFRocmVhZElkIHwgbnVsbCB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGVjb2RlZCA9IGRlY29kZVVSSUNvbXBvbmVudCh0aHJlYWRJZCk7XG4gICAgcmV0dXJuIGRlY29kZWQgPT09IHRocmVhZElkID8gbnVsbCA6IE9wdGlvbi5nZXRPck51bGwoZGVjb2RlVGhyZWFkSWQoZGVjb2RlZCkpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVRocmVhZExpbmtSZWYoXG4gIHNvdXJjZTogU2NvcGVkVGhyZWFkUmVmLFxuICByZWZzOiBSZWFkb25seUFycmF5PFNjb3BlZFRocmVhZFJlZj4sXG4pOiBTY29wZWRUaHJlYWRSZWYgfCBudWxsIHtcbiAgY29uc3QgZGVjb2RlZElkID0gcGVyY2VudERlY29kZWRUaHJlYWRMaW5rSWQoc291cmNlLnRocmVhZElkKTtcbiAgY29uc3QgaWRzID0gZGVjb2RlZElkID09PSBudWxsID8gW3NvdXJjZS50aHJlYWRJZF0gOiBbc291cmNlLnRocmVhZElkLCBkZWNvZGVkSWRdO1xuICBmb3IgKGNvbnN0IHRocmVhZElkIG9mIGlkcykge1xuICAgIGNvbnN0IGxvY2FsID0gcmVmcy5maW5kKFxuICAgICAgKHJlZikgPT4gcmVmLmVudmlyb25tZW50SWQgPT09IHNvdXJjZS5lbnZpcm9ubWVudElkICYmIHJlZi50aHJlYWRJZCA9PT0gdGhyZWFkSWQsXG4gICAgKTtcbiAgICBpZiAobG9jYWwpIHJldHVybiBsb2NhbDtcbiAgfVxuICBmb3IgKGNvbnN0IHRocmVhZElkIG9mIGlkcykge1xuICAgIGxldCBtYXRjaDogU2NvcGVkVGhyZWFkUmVmIHwgbnVsbCA9IG51bGw7XG4gICAgZm9yIChjb25zdCByZWYgb2YgcmVmcykge1xuICAgICAgaWYgKHJlZi50aHJlYWRJZCAhPT0gdGhyZWFkSWQpIGNvbnRpbnVlO1xuICAgICAgaWYgKG1hdGNoICE9PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICAgIG1hdGNoID0gcmVmO1xuICAgIH1cbiAgICBpZiAobWF0Y2ggIT09IG51bGwpIHJldHVybiBtYXRjaDtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFRocmVhZExpbmsodGhyZWFkSWQ6IHN0cmluZywgbGFiZWw6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGNsZWFuZWQgPSBsYWJlbFxuICAgIC5yZXBsYWNlKC9bW1xcXVxcXFxcXHJcXG5dL2csIFwiIFwiKVxuICAgIC5yZXBsYWNlKC9cXHMrL2csIFwiIFwiKVxuICAgIC50cmltKCk7XG4gIHJldHVybiBgWyR7Y2xlYW5lZCB8fCB0aHJlYWRJZH1dKCR7VEhSRUFEX0xJTktfSFJFRl9QUkVGSVh9JHt0aHJlYWRJZH0pYDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc1RocmVhZExpbmtzKG1hcmtkb3duOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIG1hcmtkb3duLmluY2x1ZGVzKGBdKCR7VEhSRUFEX0xJTktfSFJFRl9QUkVGSVh9YCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWxhYmVsVGhyZWFkTGlua3MoXG4gIG1hcmtkb3duOiBzdHJpbmcsXG4gIHRpdGxlOiAodGhyZWFkSWQ6IFRocmVhZElkKSA9PiBzdHJpbmcgfCB1bmRlZmluZWQsXG4pOiBzdHJpbmcge1xuICBpZiAoIWhhc1RocmVhZExpbmtzKG1hcmtkb3duKSkgcmV0dXJuIG1hcmtkb3duO1xuICByZXR1cm4gbWFya2Rvd24ucmVwbGFjZShUSFJFQURfTElOS19PVVRTSURFX0NPREUsIChzb3VyY2UsIC4uLmFyZ3MpID0+IHtcbiAgICBjb25zdCBocmVmID0gKGFyZ3MuYXQoLTEpIGFzIHsgaHJlZj86IHN0cmluZyB9KS5ocmVmO1xuICAgIGlmIChocmVmID09PSB1bmRlZmluZWQpIHJldHVybiBzb3VyY2U7XG4gICAgY29uc3Qgd3JpdHRlbiA9IHBhcnNlVGhyZWFkTGlua0hyZWYoaHJlZik7XG4gICAgaWYgKHdyaXR0ZW4gPT09IG51bGwpIHJldHVybiBzb3VyY2U7XG4gICAgY29uc3QgZGVjb2RlZCA9IHBlcmNlbnREZWNvZGVkVGhyZWFkTGlua0lkKHdyaXR0ZW4pO1xuICAgIGNvbnN0IHRocmVhZElkID1cbiAgICAgIHRpdGxlKHdyaXR0ZW4pID09PSB1bmRlZmluZWQgJiYgZGVjb2RlZCAhPT0gbnVsbCAmJiB0aXRsZShkZWNvZGVkKSAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gZGVjb2RlZFxuICAgICAgICA6IHdyaXR0ZW47XG4gICAgY29uc3QgbGFiZWwgPSB0aXRsZSh0aHJlYWRJZCk/LnRyaW0oKTtcbiAgICByZXR1cm4gbGFiZWwgPyBmb3JtYXRUaHJlYWRMaW5rKHRocmVhZElkLCBsYWJlbCkgOiBzb3VyY2U7XG4gIH0pO1xufVxuIl0sImZpbGUiOiIvQGZzL2hvbWUvdWJ1bnR1L3d0L3ByLTI0MjYzL3BhY2thZ2VzL3NoYXJlZC9zcmMvdGhyZWFkTGlua3MudHMifQ==

//# vitestCache=W3siZmlsZSI6IjEiLCJpZCI6IjEiLCJ1cmwiOiIyIiwiaW1wb3J0cyI6IjMiLCJtYXBwaW5ncyI6ZmFsc2UsImRlcHMiOiI0IiwiZHluYW1pY0RlcHMiOiI1Iiwic3RhdGljTW9ja3MiOm51bGx9LCIvaG9tZS91YnVudHUvd3QvcHItMjQyNjMvcGFja2FnZXMvc2hhcmVkL3NyYy90aHJlYWRMaW5rcy50cyIsIi9AZnMvaG9tZS91YnVudHUvd3QvcHItMjQyNjMvcGFja2FnZXMvc2hhcmVkL3NyYy90aHJlYWRMaW5rcy50cyIseyJ1cmxzIjoiNiIsImlkcyI6IjcifSxbIjgiLCI5IiwiMTAiXSxbXSxbIjgiLCI5IiwiMTAiXSx7fSwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jb250cmFjdHMvc3JjL2luZGV4LnRzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9ub2RlX21vZHVsZXMvLnBucG0vZWZmZWN0QDQuMC41L25vZGVfbW9kdWxlcy9lZmZlY3QvZGlzdC9PcHRpb24uanMiLCIvQGZzL2hvbWUvdWJ1bnR1L3d0L3ByLTI0MjYzL25vZGVfbW9kdWxlcy8ucG5wbS9lZmZlY3RANC4wLjUvbm9kZV9tb2R1bGVzL2VmZmVjdC9kaXN0L1NjaGVtYS5qcyJd