@sanity/assist

6.1.206.1.21
dist/index.js
~dist/index.jsModified
+252−176
Index: package/dist/index.js
===================================================================
--- package/dist/index.js
+++ package/dist/index.js
@@ -1,10 +1,10 @@
 import "@sanity/ui/styles.css";
 import { FormBuilder, FormCallbacksProvider, FormFieldHeaderText, FormInput, MemberFieldError, ObjectInputMember, PatchEvent, PerspectiveProvider, PresenceOverlay, StatusButton, VirtualizerScrollInstanceProvider, createPatchChannel, defineArrayMember, defineField, definePlugin, defineType, fromMutationPatches, getDraftId, getPublishedId, getVersionFromId, getVersionId, insert, isArrayOfObjectsSchemaType, isArraySchemaType, isDocumentSchemaType, isKeySegment, isObjectSchemaType, isRecord, isVersionId, pathToString, set, setIfMissing, stringToPath, typed, unset, useClient, useColorSchemeValue, useCurrentUser, useDocumentPresence, useDocumentStore, useEditState, useFormCallbacks, usePerspective, useSchema, useSyncState, useWorkspaceSchemaId } from "sanity";
 import { c } from "react/compiler-runtime";
 import { Box, Button, Card, Checkbox, Container, Dialog, ErrorBoundary, Flex, Label, Radio, Spinner, Stack, Switch, Text, TextArea, ThemeProvider, focusFirstDescendant, rgba, useClickOutsideEvent, useGlobalKeyDown, useLayer, useTheme } from "@sanity/ui";
-import { createContext, isValidElement, useCallback, useContext, useEffect, useEffectEvent, useId, useMemo, useReducer, useRef, useState } from "react";
 import { DocumentInspectorHeader, DocumentPaneProvider, PaneRouterContext, useDocumentPane, usePaneRouter } from "sanity/structure";
+import { createContext, isValidElement, useCallback, useContext, useEffect, useEffectEvent, useId, useMemo, useReducer, useRef, useState } from "react";
 import { Fragment, jsx, jsxs } from "react/jsx-runtime";
 import { useToast } from "@sanity/ui/toast";
 import { addSeconds } from "date-fns/addSeconds";
 import { isAfter } from "date-fns/isAfter";
@@ -349,18 +349,18 @@
 const FirstAssistedPathContext = createContext(void 0);
 function FirstAssistedPathProvider(props) {
 	let $ = c(5), { members } = props, t0;
 	if ($[0] !== members) {
-		let firstAssisted = members.find(_temp$15);
+		let firstAssisted = members.find(_temp$16);
 		t0 = firstAssisted?.field.path ? pathToString(firstAssisted?.field.path) : void 0, $[0] = members, $[1] = t0;
 	} else t0 = $[1];
 	let firstAssistedPath = t0, t1;
 	return $[2] !== firstAssistedPath || $[3] !== props.children ? (t1 = /* @__PURE__ */ jsx(FirstAssistedPathContext.Provider, {
 		value: firstAssistedPath,
 		children: props.children
 	}), $[2] = firstAssistedPath, $[3] = props.children, $[4] = t1) : t1 = $[4], t1;
 }
-function _temp$15(member) {
+function _temp$16(member) {
 	return member.kind === "field" && isAssistSupported(member.field.schemaType);
 }
 const releaseAnnouncementUrl = "https://www.sanity.io/blog/sanity-ai-assist-announcement?utm_source=sanity-assist-plugin&utm_medium=organic_social&utm_campaign=ai-assist&utm_content=", packageName = "@sanity/assist", pluginTitle = "Sanity AI Assist", pluginTitleShort = "AI Assist", maxHistoryVisibilityMs = minutesToMilliseconds(30), illegalIdChars = /[^a-zA-Z0-9._-]/g;
 function assistDocumentId(documentType) {
@@ -373,9 +373,9 @@
 	let state = useEditState(id, docType);
 	return state.draft || state.published;
 }
 function useStudioAssistDocument(t0) {
-	let $ = c(15), { documentId, schemaType, initDoc } = t0, documentTypeName = schemaType.name, currentUser = useCurrentUser(), t1;
+	let $ = c(17), { documentId, schemaType, initDoc } = t0, documentTypeName = schemaType.name, currentUser = useCurrentUser(), t1;
 	$[0] === documentTypeName ? t1 = $[1] : (t1 = assistDocumentId(documentTypeName), $[0] = documentTypeName, $[1] = t1);
 	let assistDocument = useDocumentState(t1, assistDocumentTypeName), t2 = documentId ?? "", t3;
 	$[2] === t2 ? t3 = $[3] : (t3 = assistTasksStatusId(t2), $[2] = t2, $[3] = t3);
 	let assistTasksStatus = useDocumentState(t3, assistTasksStatusTypeName), t4;
@@ -384,9 +384,9 @@
 	$[5] !== assistDocument || $[6] !== client || $[7] !== documentTypeName || $[8] !== initDoc ? (t5 = () => {
 		!assistDocument && initDoc && client.createIfNotExists({
 			_id: assistDocumentId(documentTypeName),
 			_type: assistDocumentTypeName
-		}).catch(_temp$14);
+		}).catch(_temp$15);
 	}, t6 = [
 		client,
 		assistDocument,
 		documentTypeName,
@@ -399,9 +399,11 @@
 			break bb0;
 		}
 		let t8;
 		if ($[11] !== assistDocument || $[12] !== assistTasksStatus?.tasks || $[13] !== currentUser?.id) {
-			let tasks = assistTasksStatus?.tasks ?? [], fields = (assistDocument?.fields ?? []).map((assistField) => ({
+			let tasks = assistTasksStatus?.tasks ?? [], t9;
+			$[15] === assistDocument?.fields ? t9 = $[16] : (t9 = assistDocument?.fields ?? [], $[15] = assistDocument?.fields, $[16] = t9);
+			let fields = t9.map((assistField) => ({
 				...assistField,
 				tasks: tasks.filter((task) => task.path === assistField.path),
 				instructions: assistField.instructions?.filter((p) => !p.userId || p.userId === currentUser?.id).map((instruction) => asStudioInstruction(instruction, tasks))
 			}));
@@ -420,9 +422,9 @@
 		t7 = t8;
 	}
 	return t7;
 }
-function _temp$14() {}
+function _temp$15() {}
 function asStudioInstruction(instruction, run) {
 	return {
 		...instruction,
 		tasks: run.filter((task) => task.instructionKey === instruction._key).filter((task) => task.started && (/* @__PURE__ */ new Date()).getTime() - new Date(task.started).getTime() < maxHistoryVisibilityMs)
@@ -438,13 +440,13 @@
 	let assistDocument = useStudioAssistDocument(t0), assistDocLoaded = !!assistDocument, currentUser = useCurrentUser(), toast = useToast(), tasks = assistDocument?.tasks, previousTasks = useRef("initial"), t1;
 	$[3] !== assistDocLoaded || $[4] !== currentUser?.id || $[5] !== tasks || $[6] !== toast ? (t1 = () => {
 		if (assistDocLoaded) {
 			if (previousTasks.current !== "initial") {
-				let prevTaskByKey = Object.fromEntries((previousTasks.current ?? NO_TASKS).map(_temp$13));
+				let prevTaskByKey = Object.fromEntries((previousTasks.current ?? NO_TASKS).map(_temp$14));
 				(tasks?.filter((task) => task.startedByUserId === currentUser?.id).filter((task_0) => {
 					let prevTask = prevTaskByKey[task_0._key];
 					return !prevTask && task_0.ended || !prevTask?.ended && task_0.ended;
-				}).filter(_temp2$7))?.forEach((task_2) => {
+				}).filter(_temp2$9))?.forEach((task_2) => {
 					let title = task_2.title ?? getInstructionTitle(task_2.instruction);
 					task_2.reason === "error" ? toast.push({
 						title: `Failed: ${title}`,
 						status: "error",
@@ -480,12 +482,12 @@
 		currentUser,
 		assistDocLoaded
 	], $[8] = assistDocLoaded, $[9] = currentUser, $[10] = tasks, $[11] = toast, $[12] = t2) : t2 = $[12], useEffect(t1, t2);
 }
-function _temp2$7(task_1) {
+function _temp2$9(task_1) {
 	return task_1.ended && isAfter(addSeconds(new Date(task_1.ended), 30), /* @__PURE__ */ new Date());
 }
-function _temp$13(run) {
+function _temp$14(run) {
 	return [run._key, run];
 }
 function AssistDocumentInputWrapper(props) {
 	let $ = c(7);
@@ -855,9 +857,9 @@
 }
 function RunInstructionProvider(props) {
 	let $ = c(33), { config } = useAiAssistanceConfig(), { runInstruction: runInstructionRequest, loading } = useRunInstructionApi(useApiClient(config?.__customApiClient)), id = useId(), [inputs, setInputs] = useState(NO_INPUT), [runRequest, setRunRequest] = useState(), [resolveUserInput, setResolveUserInput] = useState(), t0;
 	$[0] === Symbol.for("react.memo_cache_sentinel") ? (t0 = async (t1) => {
-		let { title, inputs: inputs_0 } = t1, userInputBlocks = inputs_0.map(_temp$12);
+		let { title, inputs: inputs_0 } = t1, userInputBlocks = inputs_0.map(_temp$13);
 		if (userInputBlocks.length) return setRunRequest({
 			dialogTitle: title,
 			userInputBlocks
 		}), new Promise((resolve) => {
@@ -866,9 +868,9 @@
 	}, $[0] = t0) : t0 = $[0];
 	let getUserInput = t0, t1;
 	$[1] !== loading || $[2] !== runInstructionRequest ? (t1 = (req) => {
 		if (loading) return;
-		let { instruction, ...request } = req, instructionKey = instruction._key, userInputBlocks_0 = instruction?.prompt?.flatMap(_temp2$6).filter(isUserInputBlock);
+		let { instruction, ...request } = req, instructionKey = instruction._key, userInputBlocks_0 = instruction?.prompt?.flatMap(_temp2$8).filter(isUserInputBlock);
 		if (!userInputBlocks_0?.length) {
 			runInstructionRequest({
 				...request,
 				instructionKey,
@@ -892,9 +894,9 @@
 				let { instruction: instruction_0, userInputBlocks: _, ...request_0 } = runRequest;
 				runInstructionRequest({
 					...request_0,
 					instructionKey: instruction_0._key,
-					userTexts: Object.entries(inputs).map(_temp3$4)
+					userTexts: Object.entries(inputs).map(_temp3$6)
 				});
 			} else {
 				let userInputs = Object.values(inputs).map((input_0, i_0) => {
 					let userInputBlock = runRequest.userInputBlocks[i_0];
@@ -914,9 +916,9 @@
 	}, $[6] = close, $[7] = inputs, $[8] = resolveUserInput, $[9] = runInstructionRequest, $[10] = runRequest, $[11] = t3) : t3 = $[11];
 	let runWithInput = t3, open = !!runRequest;
 	runRequest?.userInputBlocks;
 	let t4;
-	$[12] === inputs ? t4 = $[13] : (t4 = Object.entries(inputs).filter(_temp4$2), $[12] = inputs, $[13] = t4);
+	$[12] === inputs ? t4 = $[13] : (t4 = Object.entries(inputs).filter(_temp4$4), $[12] = inputs, $[13] = t4);
 	let runDisabled = (runRequest?.userInputBlocks?.length ?? 0) > t4.length, t5;
 	$[14] === Symbol.for("react.memo_cache_sentinel") ? (t5 = { width: "100%" }, $[14] = t5) : t5 = $[14];
 	let t6;
 	$[15] !== runDisabled || $[16] !== runWithInput ? (t6 = /* @__PURE__ */ jsx(Button, {
@@ -972,23 +974,23 @@
 		value: contextValue,
 		children: [t8, props.children]
 	}), $[29] = contextValue, $[30] = props.children, $[31] = t8, $[32] = t9) : t9 = $[32], t9;
 }
-function _temp4$2(t0) {
+function _temp4$4(t0) {
 	let [, value_0] = t0;
 	return !!value_0;
 }
-function _temp3$4(t0) {
+function _temp3$6(t0) {
 	let [key, value] = t0;
 	return {
 		blockKey: key,
 		userInput: value
 	};
 }
-function _temp2$6(block) {
+function _temp2$8(block) {
 	return block._type === "block" ? block.children.filter(isUserInputBlock) : [block];
 }
-function _temp$12(input, i) {
+function _temp$13(input, i) {
 	return {
 		_type: userInputTypeName,
 		_key: input.id ?? `${i}`,
 		message: input.title,
@@ -1125,9 +1127,9 @@
 	}
 	return t9;
 }
 function useSyntheticTasks(assistableDocumentId) {
-	let $ = c(7), [syntheticTasks, setSyntheticTasks] = useState(_temp$11), t0;
+	let $ = c(7), [syntheticTasks, setSyntheticTasks] = useState(_temp$12), t0;
 	$[0] === Symbol.for("react.memo_cache_sentinel") ? (t0 = (task) => {
 		setSyntheticTasks((current) => [...current, task]);
 	}, $[0] = t0) : t0 = $[0];
 	let addSyntheticTask = t0, t1;
@@ -1146,9 +1148,9 @@
 		addSyntheticTask,
 		removeSyntheticTask
 	}, $[5] = syntheticTasks, $[6] = t4), t4;
 }
-function _temp$11() {
+function _temp$12() {
 	return [];
 }
 function AssistDocumentContextProvider(props) {
 	let $ = c(3), { documentId, documentType } = props, value = useAssistDocumentContextValue(documentId, documentType), t0;
@@ -1168,9 +1170,9 @@
 	}), $[2] = documentId, $[3] = documentType, $[4] = t0, $[5] = t1) : t1 = $[5], t1;
 }
 const fadeIn = keyframes`0%{opacity:0;transform:scale(0.75);}40%{opacity:0;transform:scale(0.75);}100%{opacity:1;transform:scale(1);}`, FadeInDiv = styled.div.withConfig({
 	displayName: "FadeInDiv",
-	componentId: "sc-ui50f7-0"
+	componentId: "sc-gocic8-0"
 })`animation-name:${fadeIn};animation-timing-function:ease-in-out;`;
 function FadeInContent(t0) {
 	let $ = c(6), { children, durationMs: t1, ref } = t0, t2 = `${t1 === void 0 ? 250 : t1}ms`, t3;
 	$[0] === t2 ? t3 = $[1] : (t3 = { animationDuration: t2 }, $[0] = t2, $[1] = t3);
@@ -1182,45 +1184,61 @@
 	}), $[2] = children, $[3] = ref, $[4] = t3, $[5] = t4) : t4 = $[5], t4;
 }
 const Root = styled.span.withConfig({
 	displayName: "Root",
-	componentId: "sc-6srsjv-0"
+	componentId: "sc-kyfo1k-0"
 })`display:block;width:25px;height:25px;position:relative;`, dash = keyframes`0%{transform:rotate(0);}100%{transform:rotate(43deg);}`, Outline = styled.svg.withConfig({
 	displayName: "Outline",
-	componentId: "sc-6srsjv-1"
+	componentId: "sc-kyfo1k-1"
 })`display:block;position:absolute;top:0;left:0;& > circle{stroke:var(--ai-avatar-stroke-color);stroke-width:1.5px;stroke-linecap:round;transform-origin:center;animation:${dash} 500ms ease-in-out infinite;transition:stroke-dasharray 200ms ease-in-out;stroke-dasharray:2.34px 0;[data-state='active'] > &{stroke-dasharray:2px 2.34px;}}`, IconDisc = styled.span.withConfig({
 	displayName: "IconDisc",
-	componentId: "sc-6srsjv-2"
+	componentId: "sc-kyfo1k-2"
 })`background:var(--ai-avatar-disc-color);color:white;width:21px;height:21px;display:flex;align-items:center;justify-content:center;border-radius:10.5px;position:absolute;top:2px;left:2px;`;
 function AssistAvatar(props) {
-	let { state = "present" } = props, scheme = useColorSchemeValue(), style = useMemo(() => scheme === "dark" ? {
-		"--ai-avatar-stroke-color": purple[400].hex,
-		"--ai-avatar-disc-color": purple[600].hex
-	} : {
-		"--ai-avatar-stroke-color": purple[500].hex,
-		"--ai-avatar-disc-color": purple[600].hex
-	}, [scheme]);
-	return /* @__PURE__ */ jsxs(Root, {
+	let $ = c(8), { state: t0 } = props, state = t0 === void 0 ? "present" : t0, scheme = useColorSchemeValue(), t1;
+	bb0: {
+		if (scheme === "dark") {
+			let t2;
+			$[0] === Symbol.for("react.memo_cache_sentinel") ? (t2 = {
+				"--ai-avatar-stroke-color": purple[400].hex,
+				"--ai-avatar-disc-color": purple[600].hex
+			}, $[0] = t2) : t2 = $[0], t1 = t2;
+			break bb0;
+		}
+		let t2;
+		$[1] === Symbol.for("react.memo_cache_sentinel") ? (t2 = {
+			"--ai-avatar-stroke-color": purple[500].hex,
+			"--ai-avatar-disc-color": purple[600].hex
+		}, $[1] = t2) : t2 = $[1], t1 = t2;
+	}
+	let style = t1, t2;
+	$[2] === Symbol.for("react.memo_cache_sentinel") ? (t2 = /* @__PURE__ */ jsx(Outline, {
+		width: "25",
+		height: "25",
+		viewBox: "0 0 25 25",
+		fill: "none",
+		xmlns: "http://www.w3.org/2000/svg",
+		children: /* @__PURE__ */ jsx("circle", {
+			cx: "12.5",
+			cy: "12.5",
+			r: "11.75"
+		})
+	}), $[2] = t2) : t2 = $[2];
+	let t3;
+	$[3] === Symbol.for("react.memo_cache_sentinel") ? (t3 = { color: "inherit" }, $[3] = t3) : t3 = $[3];
+	let t4;
+	$[4] === Symbol.for("react.memo_cache_sentinel") ? (t4 = /* @__PURE__ */ jsx(IconDisc, { children: /* @__PURE__ */ jsx(Text, {
+		as: "span",
+		size: 0,
+		style: t3,
+		children: /* @__PURE__ */ jsx(SparklesIcon, { style: { color: "inherit" } })
+	}) }), $[4] = t4) : t4 = $[4];
+	let t5;
+	return $[5] !== state || $[6] !== style ? (t5 = /* @__PURE__ */ jsxs(Root, {
 		"data-state": state,
 		style,
-		children: [/* @__PURE__ */ jsx(Outline, {
-			width: "25",
-			height: "25",
-			viewBox: "0 0 25 25",
-			fill: "none",
-			xmlns: "http://www.w3.org/2000/svg",
-			children: /* @__PURE__ */ jsx("circle", {
-				cx: "12.5",
-				cy: "12.5",
-				r: "11.75"
-			})
-		}), /* @__PURE__ */ jsx(IconDisc, { children: /* @__PURE__ */ jsx(Text, {
-			as: "span",
-			size: 0,
-			style: { color: "inherit" },
-			children: /* @__PURE__ */ jsx(SparklesIcon, { style: { color: "inherit" } })
-		}) })]
-	});
+		children: [t2, t4]
+	}), $[5] = state, $[6] = style, $[7] = t5) : t5 = $[7], t5;
 }
 function AiFieldPresence(_props) {
 	let $ = c(3), t0;
 	$[0] === Symbol.for("react.memo_cache_sentinel") ? (t0 = {
@@ -1257,9 +1275,9 @@
 function useAssistPresence(path, showFocusWithin) {
 	let $ = c(6), context = useAssistDocumentContext(), tasks = (context && "assistDocument" in context ? context.assistDocument : void 0)?.tasks, t0;
 	if ($[0] !== path || $[1] !== showFocusWithin || $[2] !== tasks) {
 		bb0: {
-			let activePresence = tasks?.filter(_temp$10)?.flatMap(_temp2$5)?.filter(_temp3$3).filter((presence) => {
+			let activePresence = tasks?.filter(_temp$11)?.flatMap(_temp2$7)?.filter(_temp3$5).filter((presence) => {
 				if (!presence.path || !path.length) return !1;
 				let statusPath = stringToPath(presence.path);
 				return !showFocusWithin && statusPath.length !== path.length ? !1 : path.every((pathSegment, i) => {
 					let statusSegment = statusPath[i];
@@ -1276,15 +1294,15 @@
 		$[0] = path, $[1] = showFocusWithin, $[2] = tasks, $[3] = t0;
 	} else t0 = $[3];
 	return t0;
 }
-function _temp3$3(p) {
+function _temp3$5(p) {
 	return p.started && (/* @__PURE__ */ new Date()).getTime() - new Date(p.started).getTime() < maxHistoryVisibilityMs;
 }
-function _temp2$5(task_0) {
+function _temp2$7(task_0) {
 	return task_0.presence ?? [];
 }
-function _temp$10(task) {
+function _temp$11(task) {
 	return !task.ended;
 }
 function aiPresence(presence, path, _title) {
 	return {
@@ -1333,9 +1351,9 @@
 	}), $[6] = actions, $[7] = props, $[8] = t3) : t3 = $[8], t3;
 }
 const WrapPreCard = styled(Card).withConfig({
 	displayName: "WrapPreCard",
-	componentId: "sc-v6xax4-0"
+	componentId: "sc-flgt1j-0"
 })`& pre{white-space:pre-wrap !important;}`;
 function SafeValueInput(props) {
 	let $ = c(5), t0;
 	$[0] === props ? t0 = $[1] : (t0 = /* @__PURE__ */ jsx(PteValueFixer, { ...props }), $[0] = props, $[1] = t0);
@@ -1462,17 +1480,17 @@
 		flex: 1,
 		children: t1
 	}), $[3] = t1, $[4] = t2);
 	let t3;
-	$[5] === presence ? t3 = $[6] : (t3 = presence.map(_temp$9), $[5] = presence, $[6] = t3);
+	$[5] === presence ? t3 = $[6] : (t3 = presence.map(_temp$10), $[5] = presence, $[6] = t3);
 	let t4;
 	return $[7] !== t2 || $[8] !== t3 ? (t4 = /* @__PURE__ */ jsxs(Flex, {
 		align: "center",
 		style: t0,
 		children: [t2, t3]
 	}), $[7] = t2, $[8] = t3, $[9] = t4) : t4 = $[9], t4;
 }
-function _temp$9(pre) {
+function _temp$10(pre) {
 	return /* @__PURE__ */ jsx(Box, {
 		style: {
 			position: "absolute",
 			right: 35
@@ -1692,9 +1710,9 @@
 	}, []);
 }
 const SparklesIllustration = /* @__PURE__ */ styled(SparklesIcon).withConfig({
 	displayName: "SparklesIllustration",
-	componentId: "sc-2lc3by-0"
+	componentId: "sc-xzej1l-0"
 })({
 	fontSize: "3.125em",
 	"& path": { strokeWidth: "0.6px !important" }
 });
@@ -1786,11 +1804,11 @@
 	} else t1 = $[8];
 	let currentField = t1, t2;
 	if ($[11] !== fieldRefs || $[12] !== filter) {
 		let t3;
-		$[14] === filter ? t3 = $[15] : (t3 = (field) => !filter || filter(field), $[14] = filter, $[15] = t3), t2 = fieldRefs.filter(t3).filter(_temp$8).map(_temp2$4), $[11] = fieldRefs, $[12] = filter, $[13] = t2;
+		$[14] === filter ? t3 = $[15] : (t3 = (field) => !filter || filter(field), $[14] = filter, $[15] = t3), t2 = fieldRefs.filter(t3).filter(_temp$9).map(_temp2$6), $[11] = fieldRefs, $[12] = filter, $[13] = t2;
 	} else t2 = $[13];
-	let autocompleteOptions = t2, renderOption = _temp3$2, renderValue = _temp4$1, filterOption = _temp5, t3 = currentField ? currentField.icon : SearchIcon, t4 = currentField?.key, t5;
+	let autocompleteOptions = t2, renderOption = _temp3$4, renderValue = _temp4$3, filterOption = _temp5$2, t3 = currentField ? currentField.icon : SearchIcon, t4 = currentField?.key, t5;
 	return $[16] !== autocompleteOptions || $[17] !== id || $[18] !== onSelect || $[19] !== t3 || $[20] !== t4 ? (t5 = /* @__PURE__ */ jsx(Autocomplete, {
 		fontSize: 1,
 		icon: t3,
 		onChange: onSelect,
@@ -1804,16 +1822,16 @@
 		value: t4,
 		filterOption
 	}), $[16] = autocompleteOptions, $[17] = id, $[18] = onSelect, $[19] = t3, $[20] = t4, $[21] = t5) : t5 = $[21], t5;
 }
-function _temp5(query, option_1) {
+function _temp5$2(query, option_1) {
 	let lQuery = query.toLowerCase();
 	return option_1?.value?.toLowerCase().includes(lQuery) || option_1?.field?.title?.toLowerCase().includes(lQuery);
 }
-function _temp4$1(value_0, option_0) {
+function _temp4$3(value_0, option_0) {
 	return option_0?.field.title ?? value_0;
 }
-function _temp3$2(option) {
+function _temp3$4(option) {
 	let { value, field: field_1 } = option;
 	return value ? isType(field_1.schemaType, "document") ? /* @__PURE__ */ jsx(Card, {
 		as: "button",
 		padding: 3,
@@ -1844,15 +1862,15 @@
 			children: option.value
 		})
 	});
 }
-function _temp2$4(field_0) {
+function _temp2$6(field_0) {
 	return {
 		value: field_0.key,
 		field: field_0
 	};
 }
-function _temp$8(f_0) {
+function _temp$9(f_0) {
 	return !isType(f_0.schemaType, "reference");
 }
 function FieldTitle(props) {
 	let $ = c(24), T0, T1, splitTitle, t0, t1, t2, t3, t4;
@@ -1867,9 +1885,9 @@
 			muted: !0,
 			size: 1,
 			children: "/"
 		})
-	}), $[10] = t1) : t1 = $[10], t2 = 1, t3 = splitTitle.slice(0, splitTitle.length - 1).map(_temp6), $[0] = props.field.title, $[1] = T0, $[2] = T1, $[3] = splitTitle, $[4] = t0, $[5] = t1, $[6] = t2, $[7] = t3, $[8] = t4);
+	}), $[10] = t1) : t1 = $[10], t2 = 1, t3 = splitTitle.slice(0, splitTitle.length - 1).map(_temp6$1), $[0] = props.field.title, $[1] = T0, $[2] = T1, $[3] = splitTitle, $[4] = t0, $[5] = t1, $[6] = t2, $[7] = t3, $[8] = t4);
 	let t5 = splitTitle[splitTitle.length - 1], t6;
 	$[11] === t5 ? t6 = $[12] : (t6 = /* @__PURE__ */ jsx(Box, {
 		marginTop: 1,
 		children: /* @__PURE__ */ jsx(Text, {
@@ -1890,9 +1908,9 @@
 		flex: t4,
 		children: t7
 	}), $[20] = T1, $[21] = t4, $[22] = t7, $[23] = t8) : t8 = $[23], t8;
 }
-function _temp6(pt, i) {
+function _temp6$1(pt, i) {
 	return /* @__PURE__ */ jsx(Box, {
 		marginTop: 1,
 		children: /* @__PURE__ */ jsx(Text, {
 			muted: !0,
@@ -1901,15 +1919,15 @@
 		})
 	}, i);
 }
 function useInterval(ms) {
-	let $ = c(3), [tick, update] = useReducer(_temp$7, 0), t0, t1;
+	let $ = c(3), [tick, update] = useReducer(_temp$8, 0), t0, t1;
 	return $[0] === ms ? (t0 = $[1], t1 = $[2]) : (t0 = () => {
 		let i = setInterval(update, ms);
 		return () => clearInterval(i);
 	}, t1 = [ms], $[0] = ms, $[1] = t0, $[2] = t1), useEffect(t0, t1), tick;
 }
-function _temp$7(n) {
+function _temp$8(n) {
 	return n + 1;
 }
 function TimeAgo(t0) {
 	let $ = c(4), { date } = t0;
@@ -1923,9 +1941,9 @@
 	}), $[2] = timeSince, $[3] = t2), t2;
 }
 const rotate = keyframes`0%{transform:rotate(0);}100%{transform:rotate(360deg);}`, SyncSpinningIcon = styled(SyncIcon).withConfig({
 	displayName: "SyncSpinningIcon",
-	componentId: "sc-mtdfu7-0"
+	componentId: "sc-chle4-0"
 })`animation:${rotate} 1s linear infinite;`, TASK_CONFIG = {
 	aborted: {
 		title: "Canceled",
 		icon: CloseCircleIcon,
@@ -1947,58 +1965,85 @@
 		tone: "caution"
 	}
 };
 function InstructionTaskHistoryButton(props) {
-	let { tasks, instructions, documentId, showTitles } = props, client = useClient({ apiVersion: "2023-01-01" }), cancelRun = useCallback((taskKey) => {
+	let $ = c(32), { tasks, instructions, documentId, showTitles } = props, t0;
+	$[0] === Symbol.for("react.memo_cache_sentinel") ? (t0 = { apiVersion: "2023-01-01" }, $[0] = t0) : t0 = $[0];
+	let client = useClient(t0), t1;
+	$[1] !== client || $[2] !== documentId ? (t1 = (taskKey) => {
 		if (!documentId) return;
 		let statusDocId = assistTasksStatusId(documentId), basePath = `${typed("tasks")}[_key=="${taskKey}"]`;
 		client.patch(statusDocId).set({
 			[`${basePath}.${typed("ended")}`]: (/* @__PURE__ */ new Date()).toISOString(),
 			[`${basePath}.${typed("reason")}`]: typed("aborted")
 		}).commit().catch(console.error);
-	}, [client, documentId]), titledTasks = useMemo(() => {
-		let t = tasks?.filter((task) => task.started && (/* @__PURE__ */ new Date()).getTime() - new Date(task.started).getTime() < maxHistoryVisibilityMs).map((task_0) => {
-			let instruction = instructions?.find((i) => i._key === task_0.instructionKey);
-			return {
-				...task_0,
-				title: showTitles ? task_0.title ?? getInstructionTitle(instruction) : void 0,
-				cancel: () => cancelRun(task_0._key)
-			};
-		}) ?? [];
-		return t.sort((a, b) => new Date(b.started ?? "").getTime() - new Date(a.started ?? "").getTime()), t;
-	}, [
-		tasks,
-		instructions,
-		cancelRun,
-		showTitles
-	]), isRunning = useMemo(() => titledTasks.some((r) => !r.ended), [titledTasks]), hasErrors = useMemo(() => titledTasks.some((r_0) => r_0.reason === "error" || r_0.reason === "timeout"), [titledTasks]), [open, setOpen] = useState(!1), toggleOpen = useCallback(() => setOpen((v) => !v), []), [button, setButton] = useState(null), [popover, setPopover] = useState(null), handleClickOutside = useCallback(() => {
+	}, $[1] = client, $[2] = documentId, $[3] = t1) : t1 = $[3];
+	let cancelRun = t1, t;
+	$[4] !== cancelRun || $[5] !== instructions || $[6] !== showTitles || $[7] !== tasks ? (t = tasks?.filter(_temp$7).map((task_0) => {
+		let instruction = instructions?.find((i) => i._key === task_0.instructionKey);
+		return {
+			...task_0,
+			title: showTitles ? task_0.title ?? getInstructionTitle(instruction) : void 0,
+			cancel: () => cancelRun(task_0._key)
+		};
+	}) ?? [], t.sort(_temp2$5), $[4] = cancelRun, $[5] = instructions, $[6] = showTitles, $[7] = tasks, $[8] = t) : t = $[8];
+	let titledTasks = t, t2;
+	$[9] === titledTasks ? t2 = $[10] : (t2 = titledTasks.some(_temp3$3), $[9] = titledTasks, $[10] = t2);
+	let isRunning = t2, t3;
+	$[11] === titledTasks ? t3 = $[12] : (t3 = titledTasks.some(_temp4$2), $[11] = titledTasks, $[12] = t3);
+	let hasErrors = t3, [open, setOpen] = useState(!1), t4;
+	$[13] === Symbol.for("react.memo_cache_sentinel") ? (t4 = () => setOpen(_temp5$1), $[13] = t4) : t4 = $[13];
+	let toggleOpen = t4, [button, setButton] = useState(null), [popover, setPopover] = useState(null), t5;
+	$[14] === Symbol.for("react.memo_cache_sentinel") ? (t5 = () => {
 		setOpen(!1);
-	}, []);
-	useClickOutsideEvent(handleClickOutside, () => [button, popover]);
-	let handleEscape = useCallback(() => {
+	}, $[14] = t5) : t5 = $[14];
+	let handleClickOutside = t5, t6;
+	$[15] !== button || $[16] !== popover ? (t6 = () => [button, popover], $[15] = button, $[16] = popover, $[17] = t6) : t6 = $[17], useClickOutsideEvent(handleClickOutside, t6);
+	let t7;
+	$[18] === button ? t7 = $[19] : (t7 = () => {
 		setOpen(!1), button?.focus();
-	}, [button]);
-	return /* @__PURE__ */ jsx(Popover, {
+	}, $[18] = button, $[19] = t7);
+	let handleEscape = t7, t8;
+	$[20] !== handleEscape || $[21] !== titledTasks ? (t8 = /* @__PURE__ */ jsx(TaskList, {
+		onEscape: handleEscape,
+		tasks: titledTasks
+	}), $[20] = handleEscape, $[21] = titledTasks, $[22] = t8) : t8 = $[22];
+	let t9 = open && !!titledTasks?.length, t10 = !titledTasks?.length, t11;
+	$[23] !== hasErrors || $[24] !== isRunning || $[25] !== open || $[26] !== t10 ? (t11 = /* @__PURE__ */ jsx(TaskStatusButton, {
+		disabled: t10,
+		hasErrors,
+		isRunning,
+		onClick: toggleOpen,
+		ref: setButton,
+		selected: open
+	}), $[23] = hasErrors, $[24] = isRunning, $[25] = open, $[26] = t10, $[27] = t11) : t11 = $[27];
+	let t12;
+	return $[28] !== t11 || $[29] !== t8 || $[30] !== t9 ? (t12 = /* @__PURE__ */ jsx(Popover, {
 		constrainSize: !0,
-		content: /* @__PURE__ */ jsx(TaskList, {
-			onEscape: handleEscape,
-			tasks: titledTasks
-		}),
-		open: open && !!titledTasks?.length,
+		content: t8,
+		open: t9,
 		placement: "top",
 		portal: !0,
 		ref: setPopover,
 		width: 0,
-		children: /* @__PURE__ */ jsx(TaskStatusButton, {
-			disabled: !titledTasks?.length,
-			hasErrors,
-			isRunning,
-			onClick: toggleOpen,
-			ref: setButton,
-			selected: open
-		})
-	});
+		children: t11
+	}), $[28] = t11, $[29] = t8, $[30] = t9, $[31] = t12) : t12 = $[31], t12;
 }
+function _temp5$1(v) {
+	return !v;
+}
+function _temp4$2(r_0) {
+	return r_0.reason === "error" || r_0.reason === "timeout";
+}
+function _temp3$3(r) {
+	return !r.ended;
+}
+function _temp2$5(a, b) {
+	return new Date(b.started ?? "").getTime() - new Date(a.started ?? "").getTime();
+}
+function _temp$7(task) {
+	return task.started && (/* @__PURE__ */ new Date()).getTime() - new Date(task.started).getTime() < maxHistoryVisibilityMs;
+}
 const TASK_STATUS_BUTTON_TOOLTIP_PROPS = { placement: "top" };
 function TaskStatusButton(props) {
 	let $ = c(7), { disabled, hasErrors, isRunning, onClick, selected, ref } = props, t0 = isRunning ? SyncSpinningIcon : hasErrors ? ErrorOutlineIcon : CheckmarkCircleIcon, t1 = hasErrors ? "critical" : void 0, t2;
 	return $[0] !== disabled || $[1] !== onClick || $[2] !== ref || $[3] !== selected || $[4] !== t0 || $[5] !== t1 ? (t2 = /* @__PURE__ */ jsx(StatusButton, {
@@ -2019,17 +2064,17 @@
 	$[0] !== isTopLayer || $[1] !== onEscape ? (t0 = (event) => {
 		isTopLayer && event.key === "Escape" && onEscape();
 	}, $[0] = isTopLayer, $[1] = onEscape, $[2] = t0) : t0 = $[2], useGlobalKeyDown(t0);
 	let t1;
-	$[3] === tasks ? t1 = $[4] : (t1 = tasks.map(_temp$6), $[3] = tasks, $[4] = t1);
+	$[3] === tasks ? t1 = $[4] : (t1 = tasks.map(_temp6), $[3] = tasks, $[4] = t1);
 	let t2;
 	return $[5] === t1 ? t2 = $[6] : (t2 = /* @__PURE__ */ jsx(Stack, {
 		padding: 1,
 		gap: 1,
 		children: t1
 	}), $[5] = t1, $[6] = t2), t2;
 }
-function _temp$6(task) {
+function _temp6(task) {
 	return /* @__PURE__ */ jsx(TaskItem, { task }, task._key);
 }
 function TaskItem(props) {
 	let $ = c(32), { task } = props, taskType = task.reason && TASK_CONFIG[task.reason], TaskIcon = taskType ? taskType.icon : null, t0 = taskType && taskType?.tone, t1;
@@ -2130,12 +2175,12 @@
 	};
 }
 const EMPTY_PANE_PARAMS = {}, CardWithShadowBelow = styled(Card).withConfig({
 	displayName: "CardWithShadowBelow",
-	componentId: "sc-56ewtn-0"
+	componentId: "sc-pz26f7-0"
 })`position:relative;&:after{content:'';display:block;position:absolute;left:0;right:0;bottom:-1px;border-bottom:1px solid var(--card-border-color);opacity:0.5;z-index:100;}`, CardWithShadowAbove = styled(Card).withConfig({
 	displayName: "CardWithShadowAbove",
-	componentId: "sc-56ewtn-1"
+	componentId: "sc-pz26f7-1"
 })`position:relative;&:after{content:'';display:block;position:absolute;left:0;right:0;top:-1px;border-top:1px solid var(--card-border-color);opacity:0.5;z-index:100;}`;
 function AssistInspectorWrapper(props) {
 	let $ = c(43), context = useAiAssistanceConfig();
 	if (context.statusLoading) {
@@ -2309,9 +2354,9 @@
 	}), typePath = useTypePath(docValue, pathKey ?? ""), selectedField = useSelectedField(schemaType, typePath), aiDocId = assistDocumentId(documentType), assistDocument = useStudioAssistDocument({
 		documentId,
 		schemaType,
 		initDoc: !0
-	}), instruction = (assistDocument?.fields?.find((f) => f.path === typePath))?.instructions?.find((i) => i._key === instructionKey), tasks = useMemo(() => assistDocument?.tasks?.filter((i_0) => !instructionKey || i_0.instructionKey === instructionKey), [assistDocument?.tasks, instructionKey]), instructions = useMemo(() => assistDocument?.fields?.flatMap((f_0) => f_0.instructions ?? []), [assistDocument?.fields]), promptValue = instruction?.prompt, isEmptyPrompt = useMemo(() => {
+	}), instruction = (assistDocument?.fields?.find((f) => f.path === typePath))?.instructions?.find((i) => i._key === instructionKey), tasks = useMemo(() => assistDocument?.tasks?.filter((i) => !instructionKey || i.instructionKey === instructionKey), [assistDocument?.tasks, instructionKey]), instructions = useMemo(() => assistDocument?.fields?.flatMap((f) => f.instructions ?? []), [assistDocument?.fields]), promptValue = instruction?.prompt, isEmptyPrompt = useMemo(() => {
 		if (!promptValue?.length) return !0;
 		let children = promptValue[0]?.children;
 		return promptValue.length == 1 && children?.length === 1 && !children?.[0]?.text?.length;
 	}, [promptValue]), paneNode = useMemo(() => ({
@@ -2638,40 +2683,38 @@
 		strokeWidth: 1
 	}
 };
 function AssistConnectorsOverlay(props) {
-	let $ = c(13), { connectors } = props, [, setRedraw] = useState(!1), t0;
-	$[0] === setRedraw ? t0 = $[1] : (t0 = () => {
+	let $ = c(12), { connectors } = props, [, setRedraw] = useState(!1), t0, t1;
+	$[0] === Symbol.for("react.memo_cache_sentinel") ? (t0 = () => {
 		setRedraw(!0);
-	}, $[0] = setRedraw, $[1] = t0);
-	let t1;
-	$[2] === Symbol.for("react.memo_cache_sentinel") ? (t1 = [], $[2] = t1) : t1 = $[2], useEffect(t0, t1);
+	}, t1 = [], $[0] = t0, $[1] = t1) : (t0 = $[0], t1 = $[1]), useEffect(t0, t1);
 	let t2;
-	$[3] === Symbol.for("react.memo_cache_sentinel") ? (t2 = {
+	$[2] === Symbol.for("react.memo_cache_sentinel") ? (t2 = {
 		position: "absolute",
 		top: 0,
 		left: 0,
 		width: "100%",
 		height: "100%",
 		pointerEvents: "none",
 		zIndex: 150
-	}, $[3] = t2) : t2 = $[3];
+	}, $[2] = t2) : t2 = $[2];
 	let t3;
-	$[4] === connectors ? t3 = $[5] : (t3 = connectors.map(_temp$5), $[4] = connectors, $[5] = t3);
+	$[3] === connectors ? t3 = $[4] : (t3 = connectors.map(_temp$6), $[3] = connectors, $[4] = t3);
 	let t4;
-	$[6] === t3 ? t4 = $[7] : (t4 = /* @__PURE__ */ jsx("svg", {
+	$[5] === t3 ? t4 = $[6] : (t4 = /* @__PURE__ */ jsx("svg", {
 		fill: "none",
 		width: window.innerWidth,
 		height: window.innerHeight,
 		style: t2,
 		children: t3
-	}), $[6] = t3, $[7] = t4);
+	}), $[5] = t3, $[6] = t4);
 	let t5;
-	$[8] === connectors ? t5 = $[9] : (t5 = !1, $[8] = connectors, $[9] = t5);
+	$[7] === connectors ? t5 = $[8] : (t5 = !1, $[7] = connectors, $[8] = t5);
 	let t6;
-	return $[10] !== t4 || $[11] !== t5 ? (t6 = /* @__PURE__ */ jsxs(Fragment, { children: [t4, t5] }), $[10] = t4, $[11] = t5, $[12] = t6) : t6 = $[12], t6;
+	return $[9] !== t4 || $[10] !== t5 ? (t6 = /* @__PURE__ */ jsxs(Fragment, { children: [t4, t5] }), $[9] = t4, $[10] = t5, $[11] = t6) : t6 = $[11], t6;
 }
-function _temp$5(connector) {
+function _temp$6(connector) {
 	return /* @__PURE__ */ jsx(ConnectorPath, {
 		from: connector.from,
 		options,
 		to: connector.to
@@ -2835,9 +2878,9 @@
 			return;
 		}
 		let preferred = getPreferredToFieldLanguages(from.id), allToLanguages = languages_0.filter((l) => l.id !== from?.id), filteredToLanguages = allToLanguages.filter((l_0) => !preferred.length || preferred.includes(l_0.id));
 		setToLanguages(filteredToLanguages);
-		let fromId = from?.id, allToIds = allToLanguages?.map(_temp$4) ?? [], docMembers = getDocumentMembersFlat(document, documentSchema, config?.maxPathDepth);
+		let fromId = from?.id, allToIds = allToLanguages?.map(_temp$5) ?? [], docMembers = getDocumentMembersFlat(document, documentSchema, config?.maxPathDepth);
 		if (fromId && allToIds?.length) {
 			let transMap = getFieldLanguageMap(documentSchema, docMembers, fromId, allToIds.filter((toId) => fromId !== toId), config?.translationOutputs ?? defaultLanguageOutputs);
 			setFieldLanguageMaps(transMap);
 		} else setFieldLanguageMaps(void 0);
@@ -2845,9 +2888,9 @@
 	let selectFromLanguage = t3, t4;
 	$[6] === fromLanguage ? t4 = $[7] : (t4 = (toggledLang, toLanguages_0, languages_1) => {
 		if (!languages_1 || !fromLanguage) return;
 		let wasSelected = !!toLanguages_0?.find((l_2) => l_2.id === toggledLang.id), newToLangs = languages_1.filter((anyLang) => !!toLanguages_0?.find((selectedLang) => toggledLang.id !== selectedLang.id && selectedLang.id === anyLang.id) || toggledLang.id === anyLang.id && !wasSelected);
-		setToLanguages(newToLangs), setPreferredToFieldLanguages(fromLanguage.id, newToLangs.map(_temp2$3));
+		setToLanguages(newToLangs), setPreferredToFieldLanguages(fromLanguage.id, newToLangs.map(_temp2$4));
 	}, $[6] = fromLanguage, $[7] = t4);
 	let toggleToLanguage = t4, t5;
 	$[8] !== config || $[9] !== languageClient || $[10] !== selectFromLanguage ? (t5 = async (params_0) => {
 		setDialogOpen(!0);
@@ -2965,12 +3008,12 @@
 		value: contextValue,
 		children: [t11, props.children]
 	}), $[45] = contextValue, $[46] = props.children, $[47] = t11, $[48] = t12) : t12 = $[48], t12;
 }
-function _temp2$3(l_3) {
+function _temp2$4(l_3) {
 	return l_3.id;
 }
-function _temp$4(l_1) {
+function _temp$5(l_1) {
 	return l_1.id;
 }
 function ToLanguageCheckbox(props) {
 	let $ = c(25), { checkboxLanguage, fromLanguage, toLanguages, toggleToLanguage, languages } = props, langId = checkboxLanguage.id, t0;
@@ -3451,9 +3494,9 @@
 			node,
 			pushToast,
 			addSyntheticTask,
 			removeSyntheticTask
-		})).filter(isDefined), onlyGroups = customActions?.length && customActions?.every((node_0) => node_0.type === "group");
+		})).filter(isDefined), onlyGroups = customActions?.length && customActions?.every((node) => node.type === "group");
 		return (customActions?.length ? onlyGroups ? customActions : [{
 			type: "group",
 			title: title || "Custom actions",
 			children: customActions,
@@ -3780,29 +3823,60 @@
 		return documentId ? /* @__PURE__ */ jsx(AssistDocumentPresence, {}) : null;
 	};
 }
 function AssistDocumentPresence() {
-	let { assistDocument, syntheticTasks } = useAssistDocumentContext(), anyPresence_0 = useMemo(() => {
-		let anyPresence = [...assistDocument?.tasks ?? [], ...syntheticTasks ?? []].filter((run) => !run.ended && !run.reason)?.flatMap((run_0) => run_0.presence ?? []).find((f) => f.started && (/* @__PURE__ */ new Date()).getTime() - new Date(f.started).getTime() < 3e4);
-		if (anyPresence) return aiPresence(anyPresence, []);
-		let anyRun = assistDocument?.tasks?.filter((run_1) => !run_1.ended && !run_1.reason)?.find((f_0) => f_0.started && (/* @__PURE__ */ new Date()).getTime() - new Date(f_0.started).getTime() < 3e4);
-		return anyRun ? aiPresence({
-			started: anyRun.started,
-			path: documentRootKey,
-			_key: anyRun._key,
-			_type: fieldPresenceTypeName
-		}, []) : void 0;
-	}, [assistDocument?.tasks, syntheticTasks]);
-	return /* @__PURE__ */ jsx(Card, { children: /* @__PURE__ */ jsx(Flex, {
+	let $ = c(9), { assistDocument, syntheticTasks } = useAssistDocumentContext();
+	assistDocument?.tasks;
+	let t0;
+	if ($[0] !== assistDocument?.tasks || $[1] !== syntheticTasks) {
+		bb0: {
+			let anyPresence = [...assistDocument?.tasks ?? [], ...syntheticTasks ?? []].filter(_temp$4)?.flatMap(_temp2$3).find(_temp3$2);
+			if (anyPresence) {
+				t0 = aiPresence(anyPresence, []);
+				break bb0;
+			}
+			let t1;
+			if ($[3] !== assistDocument?.tasks) {
+				let anyRun = assistDocument?.tasks?.filter(_temp4$1)?.find(_temp5);
+				t1 = anyRun ? aiPresence({
+					started: anyRun.started,
+					path: documentRootKey,
+					_key: anyRun._key,
+					_type: fieldPresenceTypeName
+				}, []) : void 0, $[3] = assistDocument?.tasks, $[4] = t1;
+			} else t1 = $[4];
+			t0 = t1;
+		}
+		$[0] = assistDocument?.tasks, $[1] = syntheticTasks, $[2] = t0;
+	} else t0 = $[2];
+	let anyPresence_0 = t0, t1;
+	$[5] === anyPresence_0 ? t1 = $[6] : (t1 = anyPresence_0 && /* @__PURE__ */ jsx(AiFieldPresence, { presence: anyPresence_0 }), $[5] = anyPresence_0, $[6] = t1);
+	let t2;
+	return $[7] === t1 ? t2 = $[8] : (t2 = /* @__PURE__ */ jsx(Card, { children: /* @__PURE__ */ jsx(Flex, {
 		flex: 1,
 		justify: "flex-end",
 		children: /* @__PURE__ */ jsx(Flex, {
 			gap: 2,
 			align: "center",
-			children: anyPresence_0 && /* @__PURE__ */ jsx(AiFieldPresence, { presence: anyPresence_0 })
+			children: t1
 		})
-	}) });
+	}) }), $[7] = t1, $[8] = t2), t2;
 }
+function _temp5(f_0) {
+	return f_0.started && (/* @__PURE__ */ new Date()).getTime() - new Date(f_0.started).getTime() < 3e4;
+}
+function _temp4$1(run_1) {
+	return !run_1.ended && !run_1.reason;
+}
+function _temp3$2(f) {
+	return f.started && (/* @__PURE__ */ new Date()).getTime() - new Date(f.started).getTime() < 3e4;
+}
+function _temp2$3(run_0) {
+	return run_0.presence ?? [];
+}
+function _temp$4(run) {
+	return !run.ended && !run.reason;
+}
 function BackToInstructionListLink() {
 	let $ = c(4), { openInspector } = useDocumentPane(), t0;
 	$[0] === openInspector ? t0 = $[1] : (t0 = () => openInspector(aiInspectorId, { [instructionParam]: void 0 }), $[0] = openInspector, $[1] = t0);
 	let goBack = t0, t1;
@@ -3961,39 +4035,42 @@
 function _temp$3(m) {
 	return m.kind === "error" && m.fieldName === "fields";
 }
 function useSelectedSchema(fieldPath, documentSchema) {
-	let $ = c(2), t0;
-	bb0: {
-		if (!fieldPath) {
-			t0 = void 0;
-			break bb0;
-		}
-		if (fieldPath === "<document>") {
-			t0 = documentSchema;
-			break bb0;
-		}
-		let t1;
-		$[0] === fieldPath ? t1 = $[1] : (t1 = stringToPath(fieldPath), $[0] = fieldPath, $[1] = t1);
-		let path = t1, currentSchema = documentSchema;
-		for (let i = 0; i < path.length; i++) {
-			let segment = path[i], field = currentSchema?.fields.find((f) => f.name === segment);
-			if (!field) {
+	let $ = c(5), t0;
+	if ($[0] !== documentSchema || $[1] !== fieldPath) {
+		bb0: {
+			if (!fieldPath) {
 				t0 = void 0;
 				break bb0;
 			}
-			if (i === path.length - 1) {
-				t0 = field.type;
+			if (fieldPath === "<document>") {
+				t0 = documentSchema;
 				break bb0;
 			}
-			if (field.type.jsonType !== "object") {
-				t0 = void 0;
-				break bb0;
+			let t1;
+			$[3] === fieldPath ? t1 = $[4] : (t1 = stringToPath(fieldPath), $[3] = fieldPath, $[4] = t1);
+			let path = t1, currentSchema = documentSchema;
+			for (let i = 0; i < path.length; i++) {
+				let segment = path[i], field = currentSchema?.fields.find((f) => f.name === segment);
+				if (!field) {
+					t0 = void 0;
+					break bb0;
+				}
+				if (i === path.length - 1) {
+					t0 = field.type;
+					break bb0;
+				}
+				if (field.type.jsonType !== "object") {
+					t0 = void 0;
+					break bb0;
+				}
+				currentSchema = field.type;
 			}
-			currentSchema = field.type;
+			t0 = currentSchema;
 		}
-		t0 = currentSchema;
-	}
+		$[0] = documentSchema, $[1] = fieldPath, $[2] = t0;
+	} else t0 = $[2];
 	return t0;
 }
 function FieldsInitializer(t0) {
 	let $ = c(18), { pathKey, activePath, fields, documentSchema, onChange } = t0, { config: t1 } = useAiAssistanceConfig(), { __presets: presets } = t1, t2;
@@ -4187,18 +4264,17 @@
 		]
 	}), $[1] = props, $[2] = t1), t1;
 }
 function ObjectMember(t0) {
-	let $ = c(6), props, t1;
-	if ($[0] !== t0) {
-		let { fieldName, ...t2 } = t0;
-		props = t2, t1 = findFieldMember(props.members, fieldName), $[0] = t0, $[1] = props, $[2] = t1;
-	} else props = $[1], t1 = $[2];
+	let $ = c(9), fieldName, props;
+	$[0] === t0 ? (fieldName = $[1], props = $[2]) : ({fieldName, ...props} = t0, $[0] = t0, $[1] = fieldName, $[2] = props);
+	let t1;
+	$[3] !== fieldName || $[4] !== props.members ? (t1 = findFieldMember(props.members, fieldName), $[3] = fieldName, $[4] = props.members, $[5] = t1) : t1 = $[5];
 	let member = t1, t2;
-	return $[3] !== member || $[4] !== props ? (t2 = member ? /* @__PURE__ */ jsx(ObjectInputMember, {
+	return $[6] !== member || $[7] !== props ? (t2 = member ? /* @__PURE__ */ jsx(ObjectInputMember, {
 		...props,
 		member
-	}) : null, $[3] = member, $[4] = props, $[5] = t2) : t2 = $[5], t2;
+	}) : null, $[6] = member, $[7] = props, $[8] = t2) : t2 = $[8], t2;
 }
 const NONE = [];
 function NameField(props) {
 	let $ = c(23), fieldsetMember = findFieldsetMember(props.members, "appearance"), titleId = useId(), members = fieldsetMember?.fieldSet.members ?? NONE, iconMember = findFieldMember(members, "icon"), titleMember = findFieldMember(members, "title"), t0;
@@ -4482,9 +4558,9 @@
 	}), $[16] = t3, $[17] = t6, $[18] = t7) : t7 = $[18], t7;
 }
 const PteMods = styled(Box).withConfig({
 	displayName: "PteMods",
-	componentId: "sc-lrz2c-0"
+	componentId: "sc-lca06y-0"
 })`& [data-testid='pt-editor__toolbar-card'] > div > div:last-child{display:none;}& [data-testid='pt-editor']{min-height:300px;}& [data-testid='pt-editor'] .pt-inline-object *{max-width:400px;}`;
 function PromptInput(props) {
 	let $ = c(5);
 	useOnlyInlineBlocks(props);