@sanity/assist 1.1.0 → 1.1.2

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.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/types.ts","../src/_lib/fixedListenQuery.ts","../src/_lib/useListeningQuery.ts","../src/schemas/serialize/schemaUtils.ts","../src/helpers/typeUtils.ts","../src/helpers/assistSupported.ts","../src/schemas/serialize/serializeSchema.ts","../src/schemas/serialize/SchemTypeTool.tsx","../src/assistInspector/constants.ts","../src/_lib/form/DocumentForm.tsx","../src/assistDocument/components/SelectedFieldContext.tsx","../src/assistInspector/helpers.ts","../src/assistDocument/hooks/useDocumentState.ts","../src/helpers/ids.ts","../src/constants.ts","../src/assistDocument/hooks/useStudioAssistDocument.ts","../src/components/TimeAgo.tsx","../src/helpers/misc.ts","../src/assistInspector/InstructionTaskHistoryButton.tsx","../src/useApiClient.ts","../src/assistLayout/AiAssistanceConfigContext.tsx","../src/assistLayout/RunInstructionProvider.tsx","../src/assistDocument/RequestRunInstructionProvider.tsx","../src/onboarding/InspectorOnboarding.tsx","../src/onboarding/onboardingStore.ts","../src/assistInspector/AssistInspector.tsx","../src/assistInspector/index.ts","../src/assistDocument/AssistDocumentContext.tsx","../src/presence/useAssistPresence.ts","../src/components/FadeInContent.tsx","../../node_modules/@sanity/color/dist/index.js","../src/presence/AssistAvatar.tsx","../src/presence/AiFieldPresence.tsx","../src/onboarding/FirstAssistedPathProvider.tsx","../src/components/AssistFeatureBadge.tsx","../src/onboarding/FieldActionsOnboarding.tsx","../src/assistFormComponents/AssistField.tsx","../src/_lib/connector/ConnectorsStoreContext.ts","../src/_lib/connector/useConnectorsStore.ts","../src/_lib/connector/helpers.ts","../src/_lib/connector/useRegionRects.ts","../src/_lib/connector/ConnectorRegion.tsx","../src/_lib/connector/ConnectFromRegion.tsx","../src/_lib/connector/ConnectorsStore.ts","../src/_lib/connector/ConnectorsProvider.tsx","../src/_lib/connector/mapConnectorToLine.ts","../src/assistConnectors/draw/arrowPath.ts","../src/assistConnectors/draw/connectorPath.ts","../src/assistConnectors/ConnectorPath.tsx","../src/assistConnectors/AssistConnectorsOverlay.tsx","../src/legacy-types.ts","../src/assistLayout/AlphaMigration.tsx","../src/assistLayout/AssistLayout.tsx","../src/components/SafeValueInput.tsx","../src/assistFormComponents/AssistFormBlock.tsx","../src/assistFormComponents/AssistItem.tsx","../src/assistDocument/components/instruction/BackToInstructionsLink.tsx","../src/assistDocument/components/AssistDocumentForm.tsx","../src/assistDocument/components/helpers.ts","../src/assistDocument/components/instruction/InstructionInput.tsx","../src/assistDocument/components/generic/HiddenFieldTitle.tsx","../src/assistDocument/components/instruction/appearance/InstructionVisibility.tsx","../src/assistDocument/components/instruction/appearance/IconInput.tsx","../src/assistInspector/FieldAutocomplete.tsx","../src/assistDocument/components/instruction/FieldRefInput.tsx","../src/assistDocument/components/InstructionsArrayInput.tsx","../src/assistFormComponents/AssistInlineFormBlock.tsx","../src/assistDocument/components/FieldRefPreview.tsx","../src/components/HideReferenceChangedBannerInput.tsx","../src/schemas/contextDocumentSchema.tsx","../../node_modules/get-random-values-esm/index.mjs","../src/_lib/randomKey.ts","../src/assistDocument/components/instruction/PromptInput.tsx","../src/assistDocument/components/InstructionsArrayField.tsx","../src/schemas/assistDocumentSchema.tsx","../src/schemas/index.ts","../src/helpers/useAssistSupported.ts","../src/assistDocument/hooks/useAssistDocumentContextValue.tsx","../src/fieldActions/PrivateIcon.tsx","../src/components/ImageContext.tsx","../src/fieldActions/generateCaptionActions.tsx","../src/fieldActions/assistFieldActions.tsx","../src/assistDocument/AssistDocumentContextProvider.tsx","../src/assistDocument/hooks/useInstructionToaster.tsx","../src/assistDocument/AssistDocumentInput.tsx","../src/presence/AssistDocumentPresence.tsx","../src/plugin.tsx"],"sourcesContent":["import {SanityDocument, ValidationMarker} from 'sanity'\nimport {PortableTextBlock, PortableTextMarkDefinition, PortableTextSpan} from '@portabletext/types'\n\n//id prefixes\nexport const assistDocumentIdPrefix = 'sanity.assist.schemaType.'\nexport const assistDocumentStatusIdPrefix = 'sanity.assist.status.'\nexport const assistSchemaIdPrefix = 'sanity.assist.schema.'\n\n// type names\nexport const assistDocumentTypeName = 'sanity.assist.schemaType.annotations' as const\nexport const assistFieldTypeName = 'sanity.assist.schemaType.field' as const\nexport const instructionTypeName = 'sanity.assist.instruction' as const\nexport const promptTypeName = 'sanity.assist.instruction.prompt' as const\n\nexport const userInputTypeName = 'sanity.assist.instruction.userInput' as const\nexport const instructionContextTypeName = 'sanity.assist.instruction.context' as const\nexport const fieldReferenceTypeName = 'sanity.assist.instruction.fieldRef' as const\n\n// user-facing type. Intentionally does not have sanity. prefix\nexport const contextDocumentTypeName = 'assist.instruction.context' as const\n\nexport const assistTasksStatusTypeName = 'sanity.assist.task.status' as const\nexport const instructionTaskTypeName = 'sanity.assist.instructionTask' as const\nexport const fieldPresenceTypeName = 'sanity.assist.instructionTask.presence' as const\n\nexport const assistSerializedTypeName = 'sanity.assist.serialized.type' as const\nexport const assistSerializedFieldTypeName = 'sanity.assist.serialized.field' as const\n\n//url params\nexport const inspectParam = 'inspect' as const\nexport const fieldPathParam = 'pathKey' as const\nexport const instructionParam = 'instruction' as const\n\n// other constants\nexport const documentRootKey = '<document>'\n\nexport interface SerializedSchemaMember {\n _type?: typeof assistSerializedFieldTypeName\n type: string\n name: string\n title?: string\n values?: string[]\n of?: SerializedSchemaMember[]\n to?: {type: string}[]\n}\n\nexport interface SerializedSchemaType {\n _type?: typeof assistSerializedTypeName\n _id?: string\n type: string\n title?: string\n name?: string\n fields?: SerializedSchemaMember[]\n of?: {type: string}[]\n to?: {type: string}[]\n options?: {\n imagePromptField?: string\n }\n}\n\nexport interface AssistDocument extends SanityDocument {\n fields?: AssistField[]\n instructions?: StudioInstruction[]\n}\n\nexport interface StudioAssistDocument {\n _id: string\n _type: typeof assistDocumentTypeName\n fields?: StudioAssistField[]\n\n // added\n tasks?: InstructionTask[]\n}\nexport interface AssistField {\n _key: string\n _type: typeof assistFieldTypeName\n path?: string\n instructions?: StudioInstruction[]\n}\n\nexport interface StudioAssistField {\n _key: string\n path?: string\n instructions?: StudioInstruction[]\n\n // added\n tasks?: InstructionTask[]\n}\n\nexport interface FieldRef extends PortableTextMarkDefinition {\n _type: typeof fieldReferenceTypeName\n path?: string\n}\n\nexport interface ContextBlock {\n _type: typeof instructionContextTypeName\n reference?: {\n _type: 'reference'\n _ref?: string\n }\n}\n\nexport interface UserInputBlock {\n _type: typeof userInputTypeName\n _key: string\n message?: string\n description?: string\n}\n\nexport type InlinePromptBlock = PortableTextSpan | FieldRef | UserInputBlock | ContextBlock\nexport type PromptTextBlock = PortableTextBlock<never, InlinePromptBlock, 'normal', never>\n\nexport type PromptBlock = PromptTextBlock | FieldRef | ContextBlock | UserInputBlock\n\nexport interface AiPresence {\n _key: string\n _type: typeof fieldPresenceTypeName\n path?: string\n started?: string\n}\n\nexport type TaskEndedReason = 'success' | 'error' | 'aborted' | 'timeout'\n\nexport interface InstructionTask {\n _key: string\n _type: typeof instructionTaskTypeName\n instructionKey?: string\n title?: string\n path?: string\n started?: string\n updated?: string\n ended?: string\n message?: string\n reason?: TaskEndedReason\n presence?: AiPresence[]\n startedByUserId?: string\n\n //added by studio\n // eslint-disable-next-line no-use-before-define\n instruction?: StudioInstruction\n}\n\nexport interface StudioInstruction {\n _key: string\n _type: typeof instructionTypeName\n prompt?: PromptBlock[]\n\n icon?: string\n userId?: string\n title?: string\n placeholder?: string\n\n //added after query / synthetic fields\n tasks?: InstructionTask[]\n validation?: ValidationMarker[]\n}\n\nexport interface AssistTasksStatus {\n _id: string\n _type: typeof assistTasksStatusTypeName\n tasks?: InstructionTask[]\n}\n\nexport interface AssistInspectorRouteParams {\n [inspectParam]?: string\n [fieldPathParam]?: string\n [instructionParam]?: string\n}\n","import {SanityClient} from '@sanity/client'\nimport {defer, delay, merge, Observable, of, partition, switchMap, throwError} from 'rxjs'\nimport {filter, mergeMap, share, take} from 'rxjs/operators'\nimport {exhaustMapToWithTrailing} from 'rxjs-exhaustmap-with-trailing'\nimport {MutationEvent, ReconnectEvent, WelcomeEvent} from 'sanity'\n\n/** @internal */\nexport type ListenQueryParams = Record<string, string | number | boolean | string[]>\n\n/** @beta */\nexport interface ListenQueryOptions {\n tag?: string\n apiVersion?: string\n throttleTime?: number\n transitions?: ('update' | 'appear' | 'disappear')[]\n}\n\nconst fetch = (\n client: SanityClient,\n query: string,\n params: ListenQueryParams,\n options: ListenQueryOptions\n) =>\n defer(() =>\n // getVersionedClient(options.apiVersion)\n client.observable.fetch(query, params, {\n tag: options.tag,\n filterResponse: true,\n })\n )\n\nconst listen = (\n client: SanityClient,\n query: string,\n params: ListenQueryParams,\n options: ListenQueryOptions\n) =>\n defer(() =>\n // getVersionedClient(options.apiVersion)\n client.listen(query, params, {\n events: ['welcome', 'mutation', 'reconnect'],\n includeResult: false,\n visibility: 'query',\n tag: options.tag,\n })\n ) as Observable<ReconnectEvent | WelcomeEvent | MutationEvent>\n\nfunction isWelcomeEvent(\n event: MutationEvent | ReconnectEvent | WelcomeEvent\n): event is WelcomeEvent {\n return event.type === 'welcome'\n}\n\n/** @internal */\nexport const listenQuery = (\n client: SanityClient,\n query: string | {fetch: string; listen: string},\n params: ListenQueryParams = {},\n options: ListenQueryOptions = {}\n) => {\n const fetchQuery = typeof query === 'string' ? query : query.fetch\n const listenerQuery = typeof query === 'string' ? query : query.listen\n\n const fetchOnce$ = fetch(client, fetchQuery, params, options)\n\n const events$ = listen(client, listenerQuery, params, options).pipe(\n mergeMap((ev, i) => {\n const isFirst = i === 0\n if (isFirst && !isWelcomeEvent(ev)) {\n // if the first event is not welcome, it is most likely a reconnect and\n // if it's not a reconnect something is very wrong\n return throwError(\n new Error(\n ev.type === 'reconnect'\n ? 'Could not establish EventSource connection'\n : `Received unexpected type of first event \"${ev.type}\"`\n )\n )\n }\n return of(ev)\n }),\n share()\n )\n\n const [welcome$, mutationAndReconnect$] = partition(events$, isWelcomeEvent)\n const isRelevantEvent = (event: MutationEvent | ReconnectEvent | WelcomeEvent): boolean => {\n if (!options.transitions || event.type !== 'mutation') {\n return true\n }\n\n return options.transitions.includes(event.transition)\n }\n\n return merge(\n welcome$.pipe(take(1)),\n mutationAndReconnect$.pipe(\n filter(isRelevantEvent),\n switchMap((event) => merge(of(event), of(event).pipe(delay(options.throttleTime || 1000))))\n )\n ).pipe(exhaustMapToWithTrailing(fetchOnce$))\n}\n","import {useEffect, useRef, useState} from 'react'\nimport {catchError, distinctUntilChanged} from 'rxjs/operators'\nimport isEqual from 'react-fast-compare'\nimport {ListenQueryOptions, useClient} from 'sanity'\nimport {listenQuery} from './fixedListenQuery'\n\ntype Params = Record<string, string | number | boolean | string[]>\n\ntype ReturnShape<T> = {\n loading: boolean\n error: boolean\n data: T | null\n}\n\ntype Observable = {\n unsubscribe: () => void\n}\n\nconst DEFAULT_PARAMS = {}\nconst DEFAULT_OPTIONS: ListenQueryOptions = {apiVersion: `v2022-05-09`}\n\nexport function useListeningQuery<T>(\n query: string,\n params: Params = DEFAULT_PARAMS,\n options: ListenQueryOptions = DEFAULT_OPTIONS\n): ReturnShape<T> {\n const [loading, setLoading] = useState(true)\n const [error, setError] = useState(false)\n const [data, setData] = useState<T | null>(null)\n const subscription = useRef<null | Observable>(null)\n\n const client = useClient({apiVersion: `v2022-05-09`})\n\n useEffect(() => {\n if (query) {\n subscription.current = listenQuery(client, query, params, options)\n .pipe(\n distinctUntilChanged(isEqual),\n catchError((err) => {\n console.error(err)\n setError(err)\n setLoading(false)\n setData(null)\n\n return err\n })\n )\n .subscribe((documents) => {\n setData((current) => (isEqual(current, documents) ? current : documents))\n setLoading(false)\n setError(false)\n })\n }\n\n return () => {\n return subscription.current ? subscription.current.unsubscribe() : undefined\n }\n }, [query, params, options, client])\n\n return {loading, error, data}\n}\n","import {assistSerializedFieldTypeName, assistSerializedTypeName} from '../../types'\n\nexport const hiddenTypes = [\n 'any',\n 'array',\n 'block',\n 'boolean',\n 'crossDatasetReference',\n 'date',\n 'datetime',\n 'document',\n 'email',\n 'file',\n 'image',\n 'number',\n 'object',\n 'reference',\n 'span',\n 'string',\n 'text',\n 'url',\n 'slug',\n 'geopoint',\n 'sanity.assetSourceData',\n 'sanity.imageAsset',\n 'sanity.fileAsset',\n 'sanity.imageCrop',\n 'sanity.imageHotspot',\n 'sanity.imageMetadata',\n 'sanity.imageDimensions',\n 'sanity.imagePalette',\n 'sanity.imagePaletteSwatch',\n\n assistSerializedTypeName,\n assistSerializedFieldTypeName,\n 'sanity-agent.job.document',\n]\n","import {ArraySchemaType, ImageOptions, SchemaType} from 'sanity'\n\nexport function isPortableTextArray(type: ArraySchemaType) {\n return type.of.find((t) => isType(t, 'block'))\n}\n\nexport function isType(schemaType: SchemaType, typeName: string): boolean {\n if (schemaType.name === typeName) {\n return true\n }\n if (!schemaType.type) {\n return false\n }\n return isType(schemaType.type, typeName)\n}\n\nexport function isImage(schemaType: SchemaType) {\n return isType(schemaType, 'image')\n}\n\nexport function getCaptionFieldOption(schemaType: SchemaType | undefined): string | undefined {\n if (!schemaType) {\n return undefined\n }\n const captionField = (schemaType.options as ImageOptions)?.captionField\n if (captionField) {\n return captionField\n }\n return getCaptionFieldOption(schemaType.type)\n}\n","import {SchemaType} from 'sanity'\nimport {AssistOptions} from '../schemas/typeDefExtensions'\nimport {isType} from './typeUtils'\n\nexport function isSchemaAssistEnabled(type: SchemaType) {\n return !(type.options as AssistOptions | undefined)?.aiWritingAssistance?.exclude\n}\n\nexport function isAssistSupported(type: SchemaType, allowReadonlyHidden = false) {\n if (!isSchemaAssistEnabled(type)) {\n return false\n }\n\n if (isDisabled(type, allowReadonlyHidden)) {\n return false\n }\n\n if (type.jsonType === 'array') {\n const unsupportedArray = type.of.every((t) => isDisabled(t, allowReadonlyHidden))\n return !unsupportedArray\n }\n\n if (type.jsonType === 'object') {\n const unsupportedObject = type.fields.every((field) =>\n isDisabled(field.type, allowReadonlyHidden)\n )\n return !unsupportedObject\n }\n return true\n}\n\nfunction isDisabled(type: SchemaType, allowReadonlyHidden: boolean) {\n const readonlyHidden = !!type.readOnly || !!type.hidden\n return (\n !isSchemaAssistEnabled(type) ||\n isUnsupportedType(type) ||\n (!allowReadonlyHidden && readonlyHidden)\n )\n}\n\nfunction isUnsupportedType(type: SchemaType) {\n return (\n type.jsonType === 'number' ||\n type.name === 'sanity.imageCrop' ||\n type.name === 'sanity.imageHotspot' ||\n isType(type, 'reference') ||\n isType(type, 'crossDatasetReference') ||\n isType(type, 'slug') ||\n isType(type, 'url') ||\n isType(type, 'date') ||\n isType(type, 'datetime') ||\n isType(type, 'file')\n )\n}\n","import {\n ArraySchemaType,\n ImageOptions,\n ObjectSchemaType,\n ReferenceSchemaType,\n Schema,\n SchemaType,\n typed,\n} from 'sanity'\nimport {\n assistSerializedFieldTypeName,\n assistSerializedTypeName,\n SerializedSchemaMember,\n SerializedSchemaType,\n assistSchemaIdPrefix,\n} from '../../types'\nimport {hiddenTypes} from './schemaUtils'\nimport {isAssistSupported} from '../../helpers/assistSupported'\n\ninterface Options {\n leanFormat?: boolean\n}\n\nconst inlineTypes = ['document', 'object', 'image', 'file']\n\nexport function serializeSchema(schema: Schema, options?: Options): SerializedSchemaType[] {\n const list = schema\n .getTypeNames()\n .filter((t) => !(hiddenTypes.includes(t) || t.startsWith('sanity.')))\n .map((t) => schema.get(t))\n .filter((t): t is SchemaType => !!t)\n .filter((t) => !t.hidden && !t.readOnly)\n .map((t) => getSchemaStub(t, schema, options))\n .filter((t) => {\n if ('to' in t && t.to && !t.to.length) {\n return false\n }\n if ('of' in t && t.of && !t.of.length) {\n return false\n }\n if ('fields' in t && t.fields && !t.fields.length) {\n return false\n }\n return true\n })\n list.sort((a, b) => (a?.name ?? '').localeCompare(b?.name ?? ''))\n return list\n}\n\nfunction getSchemaStub(\n schemaType: SchemaType,\n schema: Schema,\n options?: Options\n): SerializedSchemaType {\n if (!schemaType.type?.name) {\n console.error('Missing type name', schemaType.type)\n throw new Error('Type is missing name!')\n }\n const baseSchema: SerializedSchemaType = {\n // we dont need type or id when we send using POST, so leave these out to save bandwidth\n ...(options?.leanFormat\n ? {}\n : {_id: `${assistSchemaIdPrefix}${schemaType.name}`, _type: assistSerializedTypeName}),\n name: schemaType.name,\n title: schemaType.title,\n type: schemaType.type.name,\n ...getBaseFields(schema, schemaType, schemaType.type.name, options),\n }\n\n return removeUndef(baseSchema)\n}\n\nfunction getBaseFields(\n schema: Schema,\n type: SchemaType,\n typeName: string,\n options: Options | undefined\n) {\n const imagePromptField = (type.options as ImageOptions)?.imagePromptField\n return removeUndef({\n options: imagePromptField\n ? {\n imagePromptField: imagePromptField,\n }\n : undefined,\n values:\n type.jsonType === 'string' && type?.options?.list\n ? type?.options?.list.map((v) => (typeof v === 'string' ? v : v.value ?? `${v.title}`))\n : undefined,\n of: 'of' in type && typeName === 'array' ? arrayOf(type, schema, options) : undefined,\n to:\n 'to' in type && typeName === 'reference'\n ? refToTypeNames(type as ReferenceSchemaType)\n : undefined,\n fields:\n 'fields' in type && inlineTypes.includes(typeName)\n ? serializeFields(schema, type, options)\n : undefined,\n })\n}\n\nfunction serializeFields(\n schema: Schema,\n schemaType: ObjectSchemaType,\n options: Options | undefined\n) {\n return schemaType.fields\n .filter((f) => !['sanity.imageHotspot', 'sanity.imageCrop'].includes(f.type?.name ?? ''))\n .filter((f) => isAssistSupported(f.type))\n .filter((f) => !f.type.hidden && !f.type.readOnly)\n .map((field) => serializeMember(schema, field.type, field.name, options))\n}\n\nfunction serializeMember(\n schema: Schema,\n type: SchemaType,\n name: string,\n options: Options | undefined\n): SerializedSchemaMember {\n const typeNameExists = !!schema.get(type?.name)\n const typeName = typeNameExists ? type.name : type.type?.name ?? ''\n return removeUndef({\n ...(options?.leanFormat ? {} : {_type: assistSerializedFieldTypeName}),\n name: name,\n type: typeName,\n title: type.title,\n ...getBaseFields(schema, type, typeName, options),\n })\n}\n\nfunction arrayOf(\n arrayType: ArraySchemaType,\n schema: Schema,\n options: Options | undefined\n): SerializedSchemaMember[] {\n return arrayType.of\n .filter((type) => isAssistSupported(type))\n .map((t) => {\n return serializeMember(schema, t, t.name, options)\n })\n}\n\nfunction refToTypeNames(type: ReferenceSchemaType) {\n return type.to.map((t) => ({\n type: typed<string>(t.name),\n }))\n}\n\nfunction removeUndef<T extends Record<string, any>>(obj: T): T {\n Object.keys(obj).forEach((key) => (obj[key] === undefined ? delete obj[key] : {}))\n return obj\n}\n","import {useClient, useSchema} from 'sanity'\nimport {Box, Button, Card, Flex, Label, Spinner, Stack} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\nimport {assistSerializedTypeName, SerializedSchemaType} from '../../types'\nimport {SyncIcon} from '@sanity/icons'\nimport {useListeningQuery} from '../../_lib/useListeningQuery'\nimport {serializeSchema} from './serializeSchema'\n\nconst NO_DATA: SerializedSchemaType[] = []\n\nconst defaultTitle = 'Sync schema'\n\nexport function SchemaTypeTool() {\n const schema = useSchema()\n const client = useClient({apiVersion: '2023-01-01'})\n const [saving, setSaving] = useState(false)\n const [syncTitle, setSyncTitle] = useState(defaultTitle)\n\n const {data} = useListeningQuery<SerializedSchemaType[]>('*[_type==$type] | order(_type)', {\n type: assistSerializedTypeName,\n })\n\n const types = useMemo(() => {\n return serializeSchema(schema)\n }, [schema])\n\n const storeTypes = useCallback(() => {\n setSaving(true)\n let canSave = true\n async function store() {\n setSyncTitle(`Syncing 0/${types.length}`)\n const transaction = client.transaction()\n for (let i = 0; i < types.length; i++) {\n if (!canSave) {\n break\n }\n const type = types[i]\n await transaction.createOrReplace(type as Required<typeof type>)\n if (i > 0 && i % 50 === 0) {\n await transaction.commit()\n transaction.reset()\n setSyncTitle(`Syncing ${i}/${types.length}`)\n }\n }\n await transaction.commit()\n }\n store()\n .catch(console.error)\n .finally(() => {\n setSaving(false)\n setSyncTitle(defaultTitle)\n })\n return () => {\n canSave = false\n setSaving(false)\n setSyncTitle(defaultTitle)\n }\n }, [types, client, setSaving, setSyncTitle])\n\n return (\n <Card padding={4} overflow=\"auto\" style={{height: 'calc(100vh - 81px)'}}>\n <Stack space={4}>\n <Box>\n <Button\n icon={saving ? <Spinner style={{marginTop: 5}} /> : SyncIcon}\n text={syncTitle}\n disabled={saving}\n onClick={storeTypes}\n />\n </Box>\n <Flex gap={2}>\n <Stack space={2}>\n <Label>Studio schema</Label>\n <ul>\n {types.map((type) => (\n <li key={type.name}>\n <SchemaEntry schemaStub={type} />\n </li>\n ))}\n </ul>\n </Stack>\n\n <Stack space={2}>\n <Label>Stored schema</Label>\n <ul>\n {(data ?? NO_DATA).map((type) => (\n <li key={type.name}>\n <SchemaEntry schemaStub={type} />\n </li>\n ))}\n </ul>\n </Stack>\n </Flex>\n </Stack>\n </Card>\n )\n}\n\nfunction SchemaEntry({schemaStub}: {schemaStub: SerializedSchemaType}) {\n const out = useMemo(() => JSON.stringify(schemaStub, null, 2), [schemaStub])\n return <pre>{out}</pre>\n}\n","export const aiInspectorId = 'ai-assistance'\n","import {Box, BoxProps, Flex, focusFirstDescendant, Spinner, Text} from '@sanity/ui'\nimport React, {HTMLProps, useEffect, useMemo, useRef} from 'react'\nimport {tap} from 'rxjs/operators'\nimport {\n createPatchChannel,\n DocumentMutationEvent,\n DocumentRebaseEvent,\n FormBuilder,\n fromMutationPatches,\n PatchMsg,\n useDocumentPresence,\n useDocumentStore,\n} from 'sanity'\nimport {useDocumentPane} from 'sanity/desk'\n\nconst preventDefault = (ev: React.FormEvent) => ev.preventDefault()\n\nexport function DocumentForm(\n props: Omit<BoxProps, 'as'> & Omit<HTMLProps<HTMLDivElement>, 'as' | 'onSubmit' | 'ref'>\n) {\n const {\n collapsedFieldSets,\n collapsedPaths,\n displayed: value,\n documentId,\n documentType,\n editState,\n formState,\n onBlur,\n onChange,\n onFocus,\n onPathOpen,\n onSetActiveFieldGroup,\n onSetCollapsedFieldSet,\n onSetCollapsedPath,\n ready,\n validation,\n } = useDocumentPane()\n\n const documentStore = useDocumentStore()\n const presence = useDocumentPresence(documentId)\n\n // The `patchChannel` is an INTERNAL publish/subscribe channel that we use to notify form-builder\n // nodes about both remote and local patches.\n // - Used by the Portable Text input to modify selections.\n // - Used by `withDocument` to reset value.\n const patchChannel = useMemo(() => createPatchChannel(), [])\n\n const isLocked = editState?.transactionSyncLock?.enabled\n\n useEffect(() => {\n const sub = documentStore.pair\n .documentEvents(documentId, documentType)\n .pipe(\n tap((event) => {\n if (event.type === 'mutation') {\n patchChannel.publish(prepareMutationEvent(event))\n }\n\n if (event.type === 'rebase') {\n patchChannel.publish(prepareRebaseEvent(event))\n }\n })\n )\n .subscribe()\n\n return () => {\n sub.unsubscribe()\n }\n }, [documentId, documentStore, documentType, patchChannel])\n\n const hasRev = Boolean(value?._rev)\n useEffect(() => {\n if (hasRev) {\n // this is a workaround for an issue that caused the document pushed to withDocument to get\n // stuck at the first initial value.\n // This effect is triggered only when the document goes from not having a revision, to getting one\n // so it will kick in as soon as the document is received from the backend\n patchChannel.publish({\n type: 'mutation',\n patches: [],\n snapshot: value,\n })\n }\n // React to changes in hasRev only\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [hasRev])\n\n const formRef = useRef<null | HTMLDivElement>(null)\n\n useEffect(() => {\n focusFirstDescendant(formRef.current!)\n }, [])\n\n if (isLocked) {\n return (\n <Box as=\"form\" {...props} ref={formRef}>\n <Flex\n align=\"center\"\n direction=\"column\"\n height=\"fill\"\n justify=\"center\"\n padding={3}\n sizing=\"border\"\n >\n <Text size={1}>\n Please hold tight while the document is synced. This usually happens right after the\n document has been published, and it shouldn’t take more than a few seconds\n </Text>\n </Flex>\n </Box>\n )\n }\n\n return (\n <Box as=\"form\" {...props} onSubmit={preventDefault} ref={formRef}>\n {ready ? (\n formState === null ? (\n <Flex\n align=\"center\"\n direction=\"column\"\n height=\"fill\"\n justify=\"center\"\n padding={3}\n sizing=\"border\"\n >\n <Text size={1}>This form is hidden</Text>\n </Flex>\n ) : (\n <FormBuilder\n __internal_patchChannel={patchChannel}\n collapsedFieldSets={collapsedFieldSets}\n collapsedPaths={collapsedPaths}\n focusPath={formState.focusPath}\n changed={formState.changed}\n focused={formState.focused}\n groups={formState.groups}\n id=\"root\"\n members={formState.members}\n onChange={onChange}\n onFieldGroupSelect={onSetActiveFieldGroup}\n onPathBlur={onBlur}\n onPathFocus={onFocus}\n onPathOpen={onPathOpen}\n onSetFieldSetCollapsed={onSetCollapsedFieldSet}\n onSetPathCollapsed={onSetCollapsedPath}\n presence={presence}\n readOnly={formState.readOnly}\n schemaType={formState.schemaType}\n validation={validation}\n value={formState.value}\n />\n )\n ) : (\n <Flex\n align=\"center\"\n direction=\"column\"\n height=\"fill\"\n justify=\"center\"\n padding={3}\n sizing=\"border\"\n >\n <Spinner muted />\n\n <Box marginTop={3}>\n <Text align=\"center\" muted size={1}>\n Loading document\n </Text>\n </Box>\n </Flex>\n )}\n </Box>\n )\n}\n\nfunction prepareMutationEvent(event: DocumentMutationEvent): PatchMsg {\n const patches = event.mutations.map((mut) => mut.patch).filter(Boolean)\n\n return {\n type: 'mutation',\n snapshot: event.document,\n patches: fromMutationPatches(event.origin, patches),\n }\n}\n\nfunction prepareRebaseEvent(event: DocumentRebaseEvent): PatchMsg {\n const remotePatches = event.remoteMutations.map((mut) => mut.patch).filter(Boolean)\n const localPatches = event.localMutations.map((mut) => mut.patch).filter(Boolean)\n\n return {\n type: 'rebase',\n snapshot: event.document,\n patches: fromMutationPatches('remote', remotePatches).concat(\n fromMutationPatches('local', localPatches)\n ),\n }\n}\n","import {ObjectSchemaType, SchemaType} from 'sanity'\nimport {createContext} from 'react'\n\nexport interface SelectedFieldContextValue {\n documentSchema?: ObjectSchemaType\n fieldSchema?: SchemaType\n}\n\nexport const SelectedFieldContext = createContext<SelectedFieldContextValue | undefined>(undefined)\nexport const SelectedFieldContextProvider = SelectedFieldContext.Provider\n","import {\n BlockContentIcon,\n BlockquoteIcon,\n DocumentIcon,\n ImageIcon,\n LinkIcon,\n OlistIcon,\n StringIcon,\n} from '@sanity/icons'\nimport {isObjectSchemaType, ObjectSchemaType, Path, pathToString, SchemaType} from 'sanity'\nimport {ComponentType, useContext, useMemo} from 'react'\nimport {AssistInspectorRouteParams, documentRootKey, fieldPathParam} from '../types'\nimport {usePaneRouter} from 'sanity/desk'\nimport {isAssistSupported} from '../helpers/assistSupported'\nimport {isPortableTextArray, isType} from '../helpers/typeUtils'\nimport {SelectedFieldContext} from '../assistDocument/components/SelectedFieldContext'\n\nexport interface FieldRef {\n key: string\n path: Path\n title: string\n schemaType: SchemaType\n icon: ComponentType\n}\n\nconst maxDepth = 4\n\nexport function getTypeIcon(schemaType: SchemaType) {\n let t: SchemaType | undefined = schemaType\n\n while (t) {\n if (t.icon) return t.icon\n t = t.type\n }\n\n if (isType(schemaType, 'slug')) return LinkIcon\n if (isType(schemaType, 'image')) return ImageIcon\n if (schemaType.jsonType === 'array' && isPortableTextArray(schemaType)) return BlockContentIcon\n\n if (schemaType.jsonType === 'array') return OlistIcon\n if (schemaType.jsonType === 'object') return BlockquoteIcon\n if (schemaType.jsonType === 'string') return StringIcon\n\n return DocumentIcon\n}\n\nexport function getFieldRefsWithDocument(schemaType: ObjectSchemaType): FieldRef[] {\n const fields = getFieldRefs(schemaType)\n return [\n {\n key: documentRootKey,\n icon: schemaType.icon ?? DocumentIcon,\n title: `The entire document`,\n path: [],\n schemaType: schemaType,\n },\n\n ...fields,\n ]\n}\n\nexport function getFieldRefs(\n schemaType: ObjectSchemaType,\n parent?: FieldRef,\n depth = 0\n): FieldRef[] {\n if (depth >= maxDepth) {\n return []\n }\n return schemaType.fields\n .filter((f) => !f.name.startsWith('_'))\n .flatMap((field) => {\n const path: Path = parent ? [...parent.path, field.name] : [field.name]\n const title = field.type.title ?? field.name\n const fieldRef: FieldRef = {\n key: pathToString(path),\n path,\n title: parent ? [parent.title, title].join(' / ') : title,\n schemaType: field.type,\n icon: getTypeIcon(field.type),\n }\n const fields =\n field.type.jsonType === 'object' ? getFieldRefs(field.type, fieldRef, depth + 1) : []\n\n if (!isAssistSupported(field.type, true)) {\n return fields\n }\n return [fieldRef, ...fields]\n })\n}\n\nexport function useSelectedField(\n documentSchemaType?: SchemaType,\n path?: string\n): FieldRef | undefined {\n const selectableFields = useMemo(\n () =>\n documentSchemaType && isObjectSchemaType(documentSchemaType)\n ? getFieldRefsWithDocument(documentSchemaType)\n : [],\n [documentSchemaType]\n )\n\n return useMemo(() => {\n return path ? selectableFields?.find((f) => f.key === path) : undefined\n }, [selectableFields, path])\n}\n\nexport function useSelectedFieldTitle() {\n const {params} = useAiPaneRouter()\n const {documentSchema} = useContext(SelectedFieldContext) ?? {}\n const selectedField = useSelectedField(documentSchema, params[fieldPathParam])\n return getFieldTitle(selectedField)\n}\n\nexport function getFieldTitle(field?: FieldRef) {\n const schemaType = field?.schemaType\n return schemaType?.title ?? schemaType?.name ?? 'Untitled'\n}\n\nexport function useAiPaneRouter() {\n const paneRouter = usePaneRouter()\n\n return useMemo(\n () =>\n ({...paneRouter, params: paneRouter.params ?? {}} as Omit<\n typeof paneRouter,\n 'setParams' | 'params'\n > & {\n params: AssistInspectorRouteParams\n setParams: (p: Record<keyof AssistInspectorRouteParams, string | undefined>) => void\n }),\n [paneRouter]\n )\n}\n","import {useEditState} from 'sanity'\n\nexport function useDocumentState<T>(id: string, docType: string): T | undefined {\n const state = useEditState(id, docType)\n return (state.draft || state.published) as T | undefined\n}\n","import {assistDocumentIdPrefix, assistDocumentStatusIdPrefix} from '../types'\n\nconst aiDocPrefixPattern = new RegExp(`^${assistDocumentIdPrefix}`)\n\nexport function publicId(id: string) {\n return id.replace('drafts.', '')\n}\n\nexport function assistDocumentId(documentType: string) {\n return `${assistDocumentIdPrefix}${documentType}`\n}\n\nexport function documentTypeFromAiDocumentId(id: string) {\n return id.replace(aiDocPrefixPattern, '')\n}\n\nexport function assistTasksStatusId(documentId: string) {\n return `${assistDocumentStatusIdPrefix}${publicId(documentId)}`\n}\n","import {minutesToMilliseconds} from 'date-fns'\n\nexport const releaseAnnouncementUrl =\n 'https://www.sanity.io/blog/sanity-ai-assist-announcement?utm_source=sanity-assist-plugin&utm_medium=organic_social&utm_campaign=ai-assist&utm_content='\n\nexport const instructionGuideUrl =\n 'https://sanity.io/guides/getting-started-with-ai-assist-instructions?utm_source=sanity-assist-plugin&utm_medium=organic_social&utm_campaign=ai-assist&utm_content='\n\nexport const giveFeedbackUrl = 'https://forms.gle/Kwz7CThxGeA2GiEU8'\n\nexport const salesUrl =\n 'https://www.sanity.io/contact/sales?utm_source=sanity-assist-plugin&utm_medium=organic_social&utm_campaign=ai-assist&utm_content='\n\nexport const packageName = '@sanity/assist'\n\nexport const pluginTitle = 'Sanity AI Assist'\n\nexport const pluginTitleShort = 'AI Assist'\n\nexport const maxHistoryVisibilityMs = minutesToMilliseconds(30)\n","import {useEffect, useMemo} from 'react'\nimport {\n assistDocumentTypeName,\n AssistTasksStatus,\n assistTasksStatusTypeName,\n FieldRef,\n fieldReferenceTypeName,\n InstructionTask,\n StudioAssistDocument,\n StudioAssistField,\n StudioInstruction,\n} from '../../types'\nimport {\n ObjectSchemaType,\n pathToString,\n typed,\n useClient,\n useCurrentUser,\n useValidationStatus,\n ValidationMarker,\n} from 'sanity'\nimport {useDocumentState} from './useDocumentState'\nimport {assistDocumentId, assistTasksStatusId, publicId} from '../../helpers/ids'\nimport {maxHistoryVisibilityMs} from '../../constants'\n\ninterface UseAssistDocumentProps {\n documentId: string\n schemaType: ObjectSchemaType\n}\n\nexport function useStudioAssistDocument({\n documentId,\n schemaType,\n}: UseAssistDocumentProps): StudioAssistDocument | undefined {\n const documentTypeName = schemaType.name\n const currentUser = useCurrentUser()\n\n const validation = useValidationStatus(publicId(documentId), schemaType.name).validation\n const assistDocument = useDocumentState<StudioAssistDocument>(\n assistDocumentId(documentTypeName),\n assistDocumentTypeName\n )\n const assistTasksStatus = useDocumentState<AssistTasksStatus>(\n assistTasksStatusId(documentId ?? ''),\n assistTasksStatusTypeName\n )\n\n const client = useClient({apiVersion: '2023-01-01'})\n\n useEffect(() => {\n if (!assistDocument) {\n client.createIfNotExists({\n _id: assistDocumentId(documentTypeName),\n _type: assistDocumentTypeName,\n })\n }\n }, [client, assistDocument, documentTypeName])\n\n return useMemo(() => {\n if (!assistDocument) {\n return undefined\n }\n const tasks = assistTasksStatus?.tasks ?? []\n const fields = (assistDocument?.fields ?? []).map((assistField): StudioAssistField => {\n return {\n ...assistField,\n tasks: tasks.filter((task) => task.path === assistField.path),\n instructions: assistField.instructions\n ?.filter((p) => !p.userId || p.userId === currentUser?.id)\n .map((instruction) => asStudioInstruction(instruction, tasks, validation)),\n }\n })\n return typed<StudioAssistDocument>({\n ...assistDocument,\n tasks: tasks?.map((task) => {\n const instruction = fields\n .find((f) => f.path === task.path)\n ?.instructions?.find((i) => i._key === task.instructionKey)\n return {\n ...task,\n instruction,\n }\n }),\n fields: fields,\n })\n }, [assistDocument, assistTasksStatus, currentUser, validation])\n}\n\nfunction asStudioInstruction(\n instruction: StudioInstruction,\n run: InstructionTask[],\n validation: ValidationMarker[]\n): StudioInstruction {\n const errors = validation.filter((marker) => marker.level === 'error')\n\n const fieldRefs: FieldRef[] = (instruction?.prompt ?? []).flatMap((block) => {\n if (block._type === 'block') {\n return block.children.filter((c): c is FieldRef => c._type === fieldReferenceTypeName)\n }\n return []\n })\n\n return {\n ...instruction,\n tasks: run\n .filter((task) => task.instructionKey === instruction._key)\n .filter(\n (task) =>\n task.started &&\n new Date().getTime() - new Date(task.started).getTime() < maxHistoryVisibilityMs\n ),\n validation: errors.filter((marker) =>\n fieldRefs\n .map((r) => r.path)\n .filter((p): p is string => !!p)\n .find((path) => pathToString(marker.path) === path)\n ),\n }\n}\n","import {useEffect, useReducer} from 'react'\nimport formatDistanceToNow from 'date-fns/formatDistanceToNow'\n\nfunction useInterval(ms: number) {\n const [tick, update] = useReducer((n) => n + 1, 0)\n\n useEffect(() => {\n const i = setInterval(update, ms)\n return () => clearInterval(i)\n }, [ms])\n return tick\n}\n\nexport function TimeAgo({date}: {date?: string}) {\n useInterval(1000)\n const timeSince = formatDistanceToNow(date ? new Date(date) : new Date())\n return <span title={timeSince}>{timeSince} ago</span>\n}\n","import {documentRootKey, StudioInstruction} from '../types'\nimport {Path, pathToString} from 'sanity'\nimport {useMemo} from 'react'\n\nexport function usePathKey(path: Path | string) {\n return useMemo(() => {\n if (path.length) {\n return Array.isArray(path) ? pathToString(path) : path\n }\n return documentRootKey\n }, [path])\n}\n\nexport function getInstructionTitle(instruction?: StudioInstruction) {\n return instruction?.title ?? 'Untitled'\n}\n","import {AssistTasksStatus, InstructionTask, StudioInstruction, TaskEndedReason} from '../types'\nimport {createElement, ForwardedRef, forwardRef, useCallback, useMemo, useState} from 'react'\nimport {\n Box,\n Button,\n Card,\n Flex,\n Popover,\n Spinner,\n Stack,\n Text,\n useClickOutside,\n useGlobalKeyDown,\n useLayer,\n} from '@sanity/ui'\nimport {\n CheckmarkCircleIcon,\n ClockIcon,\n CloseCircleIcon,\n ErrorOutlineIcon,\n SyncIcon,\n} from '@sanity/icons'\nimport {TimeAgo} from '../components/TimeAgo'\nimport {StatusButton, StatusButtonProps, typed, useClient} from 'sanity'\nimport {getInstructionTitle} from '../helpers/misc'\nimport styled, {keyframes} from 'styled-components'\nimport {assistTasksStatusId} from '../helpers/ids'\nimport {maxHistoryVisibilityMs, pluginTitle} from '../constants'\n\nexport interface InstructionTaskHistoryButtonProps {\n documentId?: string\n tasks: InstructionTask[] | undefined\n instructions: StudioInstruction[] | undefined\n showTitles: boolean\n}\n\ninterface CancelableInstructionTask extends InstructionTask {\n cancel: () => void\n title?: string\n}\n\nconst rotate = keyframes`\n 0% {\n transform: rotate(0);\n }\n 100% {\n transform: rotate(360deg);\n }\n`\n\nconst SyncSpinningIcon = styled(SyncIcon)`\n animation: ${rotate} 1s linear infinite;\n`\n\nconst TASK_CONFIG = {\n aborted: {\n title: 'Canceled',\n icon: CloseCircleIcon,\n tone: 'transparent',\n },\n error: {\n title: 'Error',\n icon: ErrorOutlineIcon,\n tone: 'critical',\n },\n success: {\n title: 'Completed',\n icon: CheckmarkCircleIcon,\n tone: 'positive',\n },\n timeout: {\n title: 'Timeout',\n icon: ClockIcon,\n tone: 'caution',\n },\n} as const\n\nexport function InstructionTaskHistoryButton(props: InstructionTaskHistoryButtonProps) {\n const {tasks, instructions, documentId, showTitles} = props\n\n const client = useClient({apiVersion: '2023-01-01'})\n const cancelRun = useCallback(\n (taskKey: string) => {\n if (!documentId) {\n return\n }\n const statusDocId = assistTasksStatusId(documentId)\n const basePath = `${typed<keyof AssistTasksStatus>('tasks')}[_key==\"${taskKey}\"]`\n client\n .patch(statusDocId)\n .set({\n [`${basePath}.${typed<keyof InstructionTask>('ended')}`]: new Date().toISOString(),\n [`${basePath}.${typed<keyof InstructionTask>('reason')}`]:\n typed<TaskEndedReason>('aborted'),\n })\n .commit()\n .catch(console.error)\n },\n [client, documentId]\n )\n\n const titledTasks = useMemo(() => {\n const t =\n tasks\n ?.filter(\n (task) =>\n task.started &&\n new Date().getTime() - new Date(task.started).getTime() < maxHistoryVisibilityMs\n )\n .map((task): CancelableInstructionTask => {\n const instruction = instructions?.find((i) => i._key === task.instructionKey)\n return {\n ...task,\n title: showTitles ? task.title ?? getInstructionTitle(instruction) : undefined,\n cancel: () => cancelRun(task._key),\n }\n }) ?? []\n t.sort((a, b) => new Date(b.started ?? '').getTime() - new Date(a.started ?? '').getTime())\n return t\n }, [tasks, instructions, cancelRun, showTitles])\n\n // const id = useId()\n\n const isRunning = useMemo(() => titledTasks.some((r) => !r.ended), [titledTasks])\n const hasErrors = useMemo(\n () => titledTasks.some((r) => r.reason === 'error' || r.reason === 'timeout'),\n [titledTasks]\n )\n\n const [open, setOpen] = useState(false)\n\n const toggleOpen = useCallback(() => setOpen((v) => !v), [])\n\n const [button, setButton] = useState<HTMLButtonElement | null>(null)\n const [popover, setPopover] = useState<HTMLDivElement | null>(null)\n\n const handleClickOutside = useCallback(() => {\n setOpen(false)\n }, [])\n\n useClickOutside(handleClickOutside, [button, popover])\n\n const handleEscape = useCallback(() => {\n setOpen(false)\n button?.focus()\n }, [button])\n\n return (\n <Popover\n constrainSize\n content={<TaskList onEscape={handleEscape} tasks={titledTasks} />}\n open={open && !!titledTasks?.length}\n placement=\"top\"\n portal\n ref={setPopover}\n width={0}\n >\n <TaskStatusButton\n disabled={!titledTasks?.length}\n hasErrors={hasErrors}\n isRunning={isRunning}\n onClick={toggleOpen}\n ref={setButton}\n selected={open}\n />\n </Popover>\n )\n}\n\nconst TASK_STATUS_BUTTON_TOOLTIP_PROPS: StatusButtonProps['tooltip'] = {\n placement: 'top',\n}\n\nconst TaskStatusButton = forwardRef(function TaskStatusButton(\n props: {\n disabled: boolean\n hasErrors: boolean\n isRunning: boolean\n onClick: () => void\n selected: boolean\n },\n ref: ForwardedRef<HTMLButtonElement>\n) {\n const {disabled, hasErrors, isRunning, onClick, selected} = props\n\n return (\n <StatusButton\n label={`${pluginTitle} status`}\n icon={isRunning ? SyncSpinningIcon : hasErrors ? ErrorOutlineIcon : CheckmarkCircleIcon}\n mode=\"bleed\"\n onClick={onClick}\n tone={hasErrors ? 'critical' : undefined}\n fontSize={1}\n disabled={disabled}\n ref={ref}\n selected={selected}\n tooltip={TASK_STATUS_BUTTON_TOOLTIP_PROPS}\n />\n )\n})\n\nfunction TaskList(props: {onEscape: () => void; tasks: CancelableInstructionTask[]}) {\n const {onEscape, tasks} = props\n\n const {isTopLayer} = useLayer()\n\n useGlobalKeyDown(\n useCallback(\n (event) => {\n if (isTopLayer && event.key === 'Escape') {\n onEscape()\n }\n },\n [isTopLayer, onEscape]\n )\n )\n\n return (\n <Stack padding={1} space={1}>\n {tasks.map((task) => (\n <TaskItem key={task._key} task={task} />\n ))}\n </Stack>\n )\n}\n\nfunction TaskItem(props: {task: CancelableInstructionTask}) {\n const {task} = props\n\n const taskType = task.reason && TASK_CONFIG[task.reason]\n return (\n <Card radius={2} tone={taskType && taskType?.tone}>\n <Flex align=\"center\" gap={1}>\n <Flex align=\"flex-start\" flex={1} gap={3} padding={3}>\n <Box flex=\"none\">\n <Text size={1}>\n {taskType && createElement(taskType.icon)}\n {!task.reason && <Spinner />}\n </Text>\n </Box>\n <Stack flex={1} space={2}>\n <Text size={1} weight=\"medium\">\n {taskType ? taskType.title : 'Running'}\n {task.title && <>: {task.title}</>}\n </Text>\n {task.message ? <Text size={1}>{task.message}</Text> : null}\n <Text muted size={1}>\n <TimeAgo date={task.ended ?? task.started} />\n </Text>\n </Stack>\n </Flex>\n\n {!task.ended && (\n <Box flex=\"none\" padding={1}>\n <Button fontSize={1} mode=\"bleed\" onClick={task.cancel} text=\"Cancel\" />\n </Box>\n )}\n </Flex>\n </Card>\n )\n}\n","import {useClient, useCurrentUser, useSchema} from 'sanity'\nimport {useCallback, useMemo, useState} from 'react'\nimport {serializeSchema} from './schemas/serialize/serializeSchema'\nimport {useToast} from '@sanity/ui'\nimport {SanityClient} from '@sanity/client'\n\nexport interface UserTextInstance {\n blockKey: string\n userInput: string\n}\n\nexport interface RunInstructionRequest {\n documentId: string\n assistDocumentId: string\n path: string\n instructionKey: string\n userId?: string\n userTexts?: UserTextInstance[]\n}\n\nexport interface InstructStatus {\n enabled: boolean\n initialized: boolean\n validToken: boolean\n}\n\nconst basePath = '/assist/tasks/instruction'\nconst editorialAiFieldActionFeature = 'editorialAiFieldActions'\n\nexport function useApiClient(customApiClient?: (defaultClient: SanityClient) => SanityClient) {\n const client = useClient({apiVersion: '2023-06-05'})\n return useMemo(\n () => (customApiClient ? customApiClient(client) : client),\n [client, customApiClient]\n )\n}\n\nexport function useGenerateCaption(apiClient: SanityClient) {\n const [loading, setLoading] = useState(false)\n const user = useCurrentUser()\n const schema = useSchema()\n const types = useMemo(() => serializeSchema(schema, {leanFormat: true}), [schema])\n const toast = useToast()\n\n const generateCaption = useCallback(\n ({path, documentId}: {path: string; documentId: string}) => {\n setLoading(true)\n\n return apiClient\n .request({\n method: 'POST',\n url: `/assist/tasks/generate-caption/${apiClient.config().dataset}?projectId=${\n apiClient.config().projectId\n }`,\n body: {\n path,\n documentId,\n types,\n userId: user?.id,\n },\n })\n .catch((e) => {\n toast.push({\n status: 'error',\n title: 'Generate caption failed',\n description: e.message,\n })\n setLoading(false)\n throw e\n })\n .finally(() => {\n // adding some artificial delay here\n // server responds with 201 then proceeds; we dont need to allow spamming the button\n setTimeout(() => {\n setLoading(false)\n }, 2000)\n })\n },\n [setLoading, apiClient, toast, user, types]\n )\n\n return useMemo(\n () => ({\n generateCaption,\n loading,\n }),\n [generateCaption, loading]\n )\n}\n\nexport function useGetInstructStatus(apiClient: SanityClient) {\n const [loading, setLoading] = useState(true)\n const projectClient = useClient({apiVersion: '2023-06-05'})\n\n const getInstructStatus = useCallback(async () => {\n setLoading(true)\n\n const projectId = apiClient.config().projectId\n try {\n const features = await projectClient.request<string[]>({\n method: 'GET',\n url: `/projects/${projectId}/features`,\n })\n\n const enabled = features.some((f) => f === editorialAiFieldActionFeature)\n\n const status = await apiClient.request<Omit<InstructStatus, 'enabled'>>({\n method: 'GET',\n url: `${basePath}/${apiClient.config().dataset}/status?projectId=${projectId}`,\n })\n\n return {\n ...status,\n enabled,\n }\n } finally {\n setLoading(false)\n }\n }, [setLoading, apiClient, projectClient])\n\n return {\n loading,\n getInstructStatus,\n }\n}\n\nexport function useInitInstruct(apiClient: SanityClient) {\n const [loading, setLoading] = useState(false)\n const initInstruct = useCallback(() => {\n setLoading(true)\n return apiClient\n .request({\n method: 'GET',\n url: `${basePath}/${apiClient.config().dataset}/init?projectId=${\n apiClient.config().projectId\n }`,\n })\n .finally(() => {\n setLoading(false)\n })\n }, [setLoading, apiClient])\n\n return {\n loading,\n initInstruct,\n }\n}\n\nexport function useRunInstructionApi(apiClient: SanityClient) {\n const toast = useToast()\n const [loading, setLoading] = useState(false)\n const user = useCurrentUser()\n const schema = useSchema()\n const types = useMemo(() => serializeSchema(schema, {leanFormat: true}), [schema])\n\n const runInstruction = useCallback(\n (request: RunInstructionRequest) => {\n setLoading(true)\n return apiClient\n .request({\n method: 'POST',\n url: `${basePath}/${apiClient.config().dataset}?projectId=${\n apiClient.config().projectId\n }`,\n body: {\n ...request,\n types,\n userId: user?.id,\n },\n })\n .catch((e) => {\n toast.push({\n status: 'error',\n title: 'Instruction failed',\n description: e.message,\n })\n throw e\n })\n .finally(() => {\n setLoading(false)\n })\n },\n [apiClient, types, user, toast]\n )\n\n return useMemo(\n () => ({\n runInstruction,\n loading,\n }),\n [runInstruction, loading]\n )\n}\n","import {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react'\nimport {AssistPluginConfig} from '../plugin'\nimport {InstructStatus, useApiClient, useGetInstructStatus, useInitInstruct} from '../useApiClient'\n\nexport interface AiAssistanceConfigContextValue {\n config: AssistPluginConfig\n status?: InstructStatus\n statusLoading: boolean\n initLoading: boolean\n init: () => void\n error?: Error\n}\n\nexport const AiAssistanceConfigContext = createContext<AiAssistanceConfigContextValue>({} as any)\n\nexport function useAiAssistanceConfig() {\n const context = useContext(AiAssistanceConfigContext)\n if (!context) {\n throw new Error('Missing AiAssistanceConfigContext')\n }\n return context\n}\n\nexport function AiAssistanceConfigProvider(props: {\n children?: ReactNode\n config: AssistPluginConfig\n}) {\n const [status, setStatus] = useState<InstructStatus | undefined>()\n const [error, setError] = useState<Error | undefined>()\n\n const apiClient = useApiClient(props.config?.__customApiClient)\n const {getInstructStatus, loading: statusLoading} = useGetInstructStatus(apiClient)\n const {initInstruct, loading: initLoading} = useInitInstruct(apiClient)\n\n useEffect(() => {\n getInstructStatus()\n .then((s) => setStatus(s))\n .catch((e) => {\n console.error(e)\n setError(e as Error)\n })\n }, [getInstructStatus])\n\n const init = useCallback(async () => {\n setError(undefined)\n try {\n await initInstruct()\n const status = await getInstructStatus()\n setStatus(status)\n } catch (e) {\n console.error('Failed to init ai assistance', e)\n setError(e as Error)\n }\n }, [initInstruct, getInstructStatus, setStatus])\n\n const {config, children} = props\n const context = useMemo<AiAssistanceConfigContextValue>(() => {\n return {\n config,\n status,\n statusLoading,\n init,\n initLoading,\n error,\n }\n }, [config, status, init, statusLoading, initLoading, error])\n\n return (\n <AiAssistanceConfigContext.Provider value={context}>\n {children}\n </AiAssistanceConfigContext.Provider>\n )\n}\n","import {Button, Dialog, Flex, Stack, Text, TextArea, Tooltip} from '@sanity/ui'\nimport {getInstructionTitle} from '../helpers/misc'\nimport {PlayIcon} from '@sanity/icons'\nimport {\n createContext,\n Dispatch,\n FormEvent,\n PropsWithChildren,\n SetStateAction,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {UserInputBlock, userInputTypeName} from '../types'\nimport {RunInstructionArgs} from './AssistLayout'\nimport {useApiClient, useRunInstructionApi} from '../useApiClient'\nimport {useAiAssistanceConfig} from './AiAssistanceConfigContext'\nimport {FormFieldHeaderText} from 'sanity'\n\ntype BlockInputs = Record<string, string>\nconst NO_INPUT: BlockInputs = {}\n\nexport interface RunInstructionContextValue {\n runInstruction: (req: RunInstructionArgs) => void\n instructionLoading: boolean\n}\n\nexport const RunInstructionContext = createContext<RunInstructionContextValue>({\n runInstruction: () => {},\n instructionLoading: false,\n})\n\nexport function useRunInstruction() {\n return useContext(RunInstructionContext)\n}\n\nfunction isUserInputBlock(block: {_type: string}): block is UserInputBlock {\n return block._type === userInputTypeName\n}\n\nexport function RunInstructionProvider(props: PropsWithChildren<{}>) {\n const {config} = useAiAssistanceConfig()\n const apiClient = useApiClient(config?.__customApiClient)\n const {runInstruction: runInstructionRequest, loading} = useRunInstructionApi(apiClient)\n\n const id = useId()\n\n const [inputs, setInputs] = useState(NO_INPUT)\n const [runRequest, setRunRequest] = useState<\n (RunInstructionArgs & {userInputBlocks: UserInputBlock[]}) | undefined\n >()\n\n const runInstruction = useCallback(\n (req: RunInstructionArgs) => {\n if (loading) {\n return\n }\n const {instruction, ...request} = req\n const instructionKey = instruction._key\n const userInputBlocks = instruction?.prompt\n ?.flatMap((block) =>\n block._type === 'block' ? block.children.filter(isUserInputBlock) : [block]\n )\n .filter(isUserInputBlock)\n\n if (!userInputBlocks?.length) {\n runInstructionRequest({\n ...request,\n instructionKey,\n userTexts: undefined,\n })\n return\n }\n\n setRunRequest({\n ...req,\n userInputBlocks,\n })\n },\n [setRunRequest, runInstructionRequest, loading]\n )\n\n const close = useCallback(() => {\n setRunRequest(undefined)\n setInputs(NO_INPUT)\n }, [setRunRequest, setInputs])\n\n const runWithInput = useCallback(() => {\n if (runRequest) {\n const {instruction, userTexts, ...request} = runRequest\n runInstructionRequest({\n ...request,\n instructionKey: instruction._key,\n userTexts: Object.entries(inputs).map(([key, value]) => ({\n blockKey: key,\n userInput: value,\n })),\n })\n }\n close()\n }, [close, runInstructionRequest, runRequest, inputs])\n\n const open = !!runRequest\n\n const runDisabled = useMemo(\n () =>\n (runRequest?.userInputBlocks?.length ?? 0) >\n Object.entries(inputs).filter(([, value]) => !!value).length,\n [runRequest?.userInputBlocks, inputs]\n )\n\n const runButton = (\n <Button\n text=\"Run instruction\"\n onClick={runWithInput}\n tone=\"primary\"\n icon={PlayIcon}\n style={{width: '100%'}}\n disabled={runDisabled}\n />\n )\n\n const contextValue: RunInstructionContextValue = useMemo(\n () => ({runInstruction, instructionLoading: loading}),\n [runInstruction, loading]\n )\n\n return (\n <RunInstructionContext.Provider value={contextValue}>\n {open ? (\n <Dialog\n id={id}\n open={open}\n onClose={close}\n width={1}\n header={getInstructionTitle(runRequest?.instruction)}\n footer={\n <Flex justify=\"space-between\" padding={2} flex={1}>\n {runDisabled ? (\n <Tooltip\n content={\n <Flex padding={2}>\n <Text>Unable to run instruction. All fields must have a value.</Text>\n </Flex>\n }\n placement=\"top\"\n >\n <Flex flex={1}>{runButton}</Flex>\n </Tooltip>\n ) : (\n runButton\n )}\n </Flex>\n }\n >\n <Stack padding={4} space={2}>\n {runRequest?.userInputBlocks?.map((block, i) => (\n <UserInput\n key={block._key}\n block={block}\n autoFocus={i === 0}\n inputs={inputs}\n setInputs={setInputs}\n />\n ))}\n </Stack>\n </Dialog>\n ) : null}\n {props.children}\n </RunInstructionContext.Provider>\n )\n}\n\nfunction UserInput(props: {\n block: UserInputBlock\n inputs: BlockInputs\n setInputs: Dispatch<SetStateAction<BlockInputs>>\n autoFocus?: boolean\n}) {\n const {block, autoFocus, setInputs, inputs} = props\n const key = block._key\n const textAreaRef = useRef<HTMLTextAreaElement>(null)\n\n const onChange = useCallback(\n (e: FormEvent<HTMLTextAreaElement>) => {\n setInputs((current) => ({\n ...current,\n [key]: (e.currentTarget ?? e.target).value,\n }))\n },\n [key, setInputs]\n )\n\n const value = useMemo(() => inputs[key], [inputs, key])\n\n useEffect(() => {\n if (!autoFocus) {\n return\n }\n setTimeout(() => textAreaRef.current?.focus(), 0)\n }, [autoFocus])\n\n return (\n <Stack padding={2} space={3}>\n <FormFieldHeaderText\n title={block?.message ?? 'Provide more context'}\n description={block.description}\n />\n <TextArea\n ref={textAreaRef}\n rows={4}\n value={value}\n onChange={onChange}\n style={{resize: 'vertical'}}\n />\n </Stack>\n )\n}\n","import {useRunInstruction} from '../assistLayout/RunInstructionProvider'\nimport {useCallback, useEffect, useState} from 'react'\nimport {ObjectSchemaType, PatchEvent, SanityDocument, unset} from 'sanity'\nimport {RunInstructionArgs} from '../assistLayout/AssistLayout'\nimport {publicId} from '../helpers/ids'\n\nexport interface DocumentArgs {\n documentOnChange: (event: PatchEvent) => void\n // indicates if the document is a draft or liveEditable currently\n isDocAssistable: boolean\n}\n\nexport function isDocAssistable(\n documentSchemaType: ObjectSchemaType,\n published?: SanityDocument | null,\n draft?: SanityDocument | null\n) {\n return !!(documentSchemaType.liveEdit ? published : draft)\n}\n\nexport function getAssistableDocId(documentSchemaType: ObjectSchemaType, documentId: string) {\n const baseId = publicId(documentId)\n return documentSchemaType.liveEdit ? baseId : `drafts.${baseId}`\n}\n\nexport function useRequestRunInstruction(args: DocumentArgs) {\n const {documentOnChange, isDocAssistable} = args\n\n const {runInstruction, instructionLoading} = useRunInstruction()\n const [queuedTask, setQueuedTask] = useState<RunInstructionArgs | undefined>(undefined)\n\n useEffect(() => {\n if (queuedTask && isDocAssistable) {\n runInstruction(queuedTask)\n setQueuedTask(undefined)\n }\n }, [queuedTask, isDocAssistable, runInstruction])\n\n return {\n instructionLoading,\n requestRunInstruction: useCallback(\n (task: RunInstructionArgs) => {\n // make a dummy edit: this will trigger the document/draft to be created\n documentOnChange(PatchEvent.from([unset(['_force_document_creation'])]))\n setQueuedTask(task)\n },\n [setQueuedTask, documentOnChange]\n ),\n }\n}\n","import {Box, Button, Container, Flex, Stack, Text} from '@sanity/ui'\nimport {SparklesIcon} from '@sanity/icons'\nimport {releaseAnnouncementUrl} from '../constants'\nimport styled from 'styled-components'\n\nconst SparklesIllustration = styled(SparklesIcon)({\n fontSize: '3.125em',\n '& path': {\n strokeWidth: `0.6px !important`,\n },\n})\n\nexport function InspectorOnboarding(props: {onDismiss: () => void}) {\n const {onDismiss} = props\n return (\n <Box padding={4}>\n <Container width={0}>\n <Stack space={4}>\n <div style={{textAlign: 'center'}}>\n <SparklesIllustration />\n </div>\n <Text align=\"center\" size={1}>\n Create reusable AI instructions that can be applied across all documents of a certain\n type.\n </Text>\n\n <Flex align=\"center\" gap={2} justify=\"center\">\n <Button\n as=\"a\"\n href={releaseAnnouncementUrl}\n rel=\"noreferrer\"\n target=\"_blank\"\n fontSize={1}\n mode=\"default\"\n onClick={onDismiss}\n padding={2}\n text=\"Learn more\"\n tone=\"primary\"\n />\n <Button fontSize={1} mode=\"bleed\" onClick={onDismiss} padding={2} text=\"Dismiss\" />\n </Flex>\n </Stack>\n </Container>\n </Box>\n )\n}\n","import {useCallback, useState} from 'react'\n\nexport const inspectorOnboardingKey = 'sanityStudio:assist:inspector:onboarding:dismissed'\nexport const fieldOnboardingKey = 'sanityStudio:assist:field:onboarding:dismissed'\n\nexport function isFeatureOnboardingDismissed(featureKey: string): boolean {\n if (typeof localStorage === 'undefined') {\n return false\n }\n\n const value = localStorage.getItem(featureKey)\n return value === 'true'\n}\n\nexport function dismissFeatureOnboarding(featureKey: string) {\n if (typeof localStorage === 'undefined') {\n return\n }\n\n localStorage.setItem(featureKey, 'true')\n}\n\nexport function useOnboardingFeature(featureKey: string) {\n const [showOnboarding, setShowOnboarding] = useState(\n () => !isFeatureOnboardingDismissed(featureKey)\n )\n const dismissOnboarding = useCallback(() => {\n setShowOnboarding(false)\n dismissFeatureOnboarding(featureKey)\n }, [setShowOnboarding, featureKey])\n\n return {showOnboarding, dismissOnboarding}\n}\n","import {ArrowRightIcon, CloseIcon, PlayIcon, RetryIcon} from '@sanity/icons'\nimport {Box, Button, Card, Flex, Spinner, Stack, Text} from '@sanity/ui'\nimport {useCallback, useMemo, useRef} from 'react'\nimport {\n DocumentInspectorProps,\n PresenceOverlay,\n useEditState,\n VirtualizerScrollInstanceProvider,\n} from 'sanity'\nimport {\n DocumentInspectorHeader,\n DocumentPaneNode,\n DocumentPaneProvider,\n useDocumentPane,\n} from 'sanity/desk'\nimport {DocumentForm} from '../_lib/form'\nimport {assistDocumentTypeName, fieldPathParam, instructionParam} from '../types'\nimport {getFieldTitle, useAiPaneRouter, useSelectedField} from './helpers'\nimport styled from 'styled-components'\nimport {useStudioAssistDocument} from '../assistDocument/hooks/useStudioAssistDocument'\nimport {InstructionTaskHistoryButton} from './InstructionTaskHistoryButton'\nimport {useAiAssistanceConfig} from '../assistLayout/AiAssistanceConfigContext'\nimport {giveFeedbackUrl, pluginTitle, releaseAnnouncementUrl, salesUrl} from '../constants'\nimport {assistDocumentId} from '../helpers/ids'\nimport {\n getAssistableDocId,\n isDocAssistable,\n useRequestRunInstruction,\n} from '../assistDocument/RequestRunInstructionProvider'\nimport {InspectorOnboarding} from '../onboarding/InspectorOnboarding'\nimport {inspectorOnboardingKey, useOnboardingFeature} from '../onboarding/onboardingStore'\n\nconst CardWithShadowBelow = styled(Card)`\n position: relative;\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n bottom: -1px;\n border-bottom: 1px solid var(--card-border-color);\n opacity: 0.5;\n z-index: 100;\n }\n`\n\nconst CardWithShadowAbove = styled(Card)`\n position: relative;\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n top: -1px;\n border-top: 1px solid var(--card-border-color);\n opacity: 0.5;\n z-index: 100;\n }\n`\n\nexport function AssistInspectorWrapper(props: DocumentInspectorProps) {\n const context = useAiAssistanceConfig()\n\n if (context.statusLoading) {\n return (\n <Flex align=\"center\" height=\"fill\" justify=\"center\" padding={4} sizing=\"border\">\n <Stack space={3} style={{textAlign: 'center'}}>\n <Spinner muted />\n <Text muted size={1}>\n Loading {pluginTitle}...\n </Text>\n </Stack>\n </Flex>\n )\n }\n\n const status = context.status\n\n if (!status?.enabled) {\n return (\n <Flex direction=\"column\" height=\"fill\">\n <DocumentInspectorHeader\n closeButtonLabel=\"Close\"\n onClose={props.onClose}\n title={pluginTitle}\n />\n\n <Stack flex={1} overflow=\"auto\" padding={4} space={3}>\n <Text as=\"p\" size={1} weight=\"semibold\">\n {pluginTitle} is not available\n </Text>\n\n <Text as=\"p\" muted size={1}>\n Please get in touch with a Sanity account manager or{' '}\n <a href={salesUrl} target=\"_blank\" rel=\"noreferrer\">\n contact our sales team\n </a>{' '}\n to get started with {pluginTitle}.{' '}\n <a href={releaseAnnouncementUrl} target=\"_blank\" rel=\"noreferrer\">\n Learn more &rarr;\n </a>\n </Text>\n </Stack>\n </Flex>\n )\n }\n\n if (!status?.initialized || !status.validToken) {\n return (\n <Flex direction=\"column\" height=\"fill\">\n <DocumentInspectorHeader\n closeButtonLabel=\"Close\"\n onClose={props.onClose}\n title={pluginTitle}\n />\n\n <Stack padding={4} space={3}>\n {context.error ? (\n <Text size={1} weight=\"semibold\">\n Failed to start {pluginTitle}\n </Text>\n ) : null}\n\n {!context.error && !status?.initialized ? (\n <Text size={1} weight=\"semibold\">\n {pluginTitle} is not enabled\n </Text>\n ) : null}\n\n {!context.error && status?.initialized && !status.validToken ? (\n <>\n <Text size={1} weight=\"semibold\">\n Invalid token\n </Text>\n <Text muted size={1}>\n The token used by the AI Assistant is not valid and has to be regenerated.\n </Text>\n </>\n ) : null}\n\n {context.error && (\n <Text muted size={1}>\n Something went wrong. See console for details.\n </Text>\n )}\n\n {!context.error && !status?.initialized && (\n <Text size={1} muted>\n Please enable {pluginTitle}.\n </Text>\n )}\n\n <Button\n fontSize={1}\n icon={\n context.initLoading ? (\n <Box marginTop={1}>\n <Spinner />\n </Box>\n ) : context.error ? (\n RetryIcon\n ) : undefined\n }\n text={\n context.error\n ? 'Retry'\n : status?.initialized && !status.validToken\n ? `Restore ${pluginTitle}`\n : `Enable ${pluginTitle} now`\n }\n tone=\"primary\"\n onClick={context.init}\n disabled={context.initLoading}\n />\n </Stack>\n </Flex>\n )\n }\n\n return <AssistInspector {...props} />\n}\n\nexport function AssistInspector(props: DocumentInspectorProps) {\n const {params} = useAiPaneRouter()\n\n const boundary = useRef<HTMLDivElement | null>(null)\n const pathKey = params?.[fieldPathParam]\n const instructionKey = params?.[instructionParam]\n const documentPane = useDocumentPane()\n const {documentId, documentType, schemaType, onChange: documentOnChange} = documentPane\n const {published, draft} = useEditState(documentId, documentType, 'low')\n\n const assistableDocId = getAssistableDocId(schemaType, documentId)\n const {instructionLoading, requestRunInstruction} = useRequestRunInstruction({\n documentOnChange,\n isDocAssistable: isDocAssistable(schemaType, published, draft),\n })\n const selectedField = useSelectedField(schemaType, params[fieldPathParam])\n\n const aiDocId = assistDocumentId(documentType)\n\n const assistDocument = useStudioAssistDocument({documentId, schemaType})\n const assistField = assistDocument?.fields?.find((f) => f.path === pathKey)\n const instruction = assistField?.instructions?.find((i) => i._key === instructionKey)\n const tasks = useMemo(\n () =>\n assistDocument?.tasks?.filter((i) => !instructionKey || i.instructionKey === instructionKey),\n [assistDocument?.tasks, instructionKey]\n )\n const instructions = useMemo(\n () => assistDocument?.fields?.flatMap((f) => f.instructions ?? []),\n [assistDocument?.fields]\n )\n\n const promptValue = instruction?.prompt\n const isEmptyPrompt = useMemo(() => {\n if (!promptValue?.length) {\n return true\n }\n const firstBlock = promptValue[0] as any\n const children = firstBlock?.children\n\n return promptValue.length == 1 && children?.length === 1 && !children?.[0]?.text?.length\n }, [promptValue])\n\n const paneNode: DocumentPaneNode = useMemo(\n () => ({\n type: 'document',\n id: aiDocId,\n title: pluginTitle,\n options: {\n id: aiDocId,\n type: assistDocumentTypeName,\n },\n }),\n [aiDocId]\n )\n\n const runCurrentInstruction = useCallback(\n () =>\n instruction &&\n pathKey &&\n requestRunInstruction({\n documentId: assistableDocId,\n path: pathKey,\n assistDocumentId: assistDocumentId(documentType),\n instruction,\n }),\n [instruction, pathKey, documentType, assistableDocId, requestRunInstruction]\n )\n\n const Region = useCallback((_props: any) => {\n // disabled for now\n /* return (\n <ConnectToRegion\n {..._props}\n _key={`${paneKey}_${selectedField?.key || '_field'}`}\n style={{height: '100%', flex: 1, overflow: 'auto'}}\n />\n )*/\n return <div {..._props} style={{height: '100%', flex: 1, overflow: 'auto'}} />\n }, [])\n\n if (!documentId || !schemaType || schemaType.jsonType !== 'object') {\n return (\n <Card flex={1} padding={4}>\n <Text>Document not ready yet.</Text>\n </Card>\n )\n }\n\n return (\n <Flex\n ref={boundary}\n direction=\"column\"\n height=\"fill\"\n overflow=\"hidden\"\n sizing=\"border\"\n style={{lineHeight: 0}}\n >\n <AiInspectorHeader onClose={props.onClose} fieldTitle={getFieldTitle(selectedField)} />\n\n <Card as={Region} flex={1} overflow=\"auto\">\n <Flex direction=\"column\" style={{minHeight: '100%'}}>\n <Box flex={1}>\n <PresenceOverlay>\n <Box padding={4}>\n {selectedField && (\n <VirtualizerScrollInstanceProvider\n scrollElement={boundary.current}\n containerElement={boundary}\n >\n <DocumentPaneProvider\n paneKey={documentPane.paneKey}\n index={documentPane.index}\n itemId=\"ai\"\n pane={paneNode}\n >\n <DocumentForm />\n </DocumentPaneProvider>\n </VirtualizerScrollInstanceProvider>\n )}\n </Box>\n </PresenceOverlay>\n </Box>\n\n <Box flex=\"none\" padding={4}>\n <Text muted size={1}>\n How is Sanity AI Assist working for you?{' '}\n <a\n href={giveFeedbackUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n style={{whiteSpace: 'nowrap'}}\n >\n Let us know <ArrowRightIcon />\n </a>\n </Text>\n </Box>\n </Flex>\n </Card>\n\n <CardWithShadowAbove flex=\"none\" paddingX={4} paddingY={3} style={{justifySelf: 'flex-end'}}>\n <Flex gap={2} flex={1} justify=\"flex-end\">\n {schemaType?.name && pathKey && instructionKey && (\n <Stack flex={1}>\n <Button\n mode=\"ghost\"\n disabled={isEmptyPrompt || instructionLoading}\n fontSize={1}\n icon={instructionLoading ? <Spinner /> : PlayIcon}\n onClick={runCurrentInstruction}\n padding={3}\n text={'Run instruction'}\n />\n </Stack>\n )}\n\n <InstructionTaskHistoryButton\n documentId={assistableDocId}\n tasks={tasks}\n instructions={instructions}\n showTitles={!instructionKey}\n />\n </Flex>\n </CardWithShadowAbove>\n </Flex>\n )\n}\n\nfunction AiInspectorHeader(props: {fieldTitle: string; onClose: () => void}) {\n const {onClose, fieldTitle} = props\n const {showOnboarding, dismissOnboarding} = useOnboardingFeature(inspectorOnboardingKey)\n\n return (\n <CardWithShadowBelow flex=\"none\" padding={2}>\n <Flex flex={1} align=\"center\">\n <Flex flex={1} padding={3} gap={2} align=\"center\">\n <Flex gap={1} align=\"center\">\n <Text size={1} weight=\"semibold\">\n AI instructions for\n </Text>\n <Card radius={2} border padding={1} style={{margin: '-4px 0'}}>\n <Text size={1} weight=\"semibold\">\n {fieldTitle}\n </Text>\n </Card>\n </Flex>\n </Flex>\n <Box flex=\"none\">\n <Button fontSize={1} icon={CloseIcon} mode=\"bleed\" onClick={onClose} />\n </Box>\n </Flex>\n\n {showOnboarding && <InspectorOnboarding onDismiss={dismissOnboarding} />}\n </CardWithShadowBelow>\n )\n}\n","import {SparklesIcon} from '@sanity/icons'\nimport {DocumentInspector, typed} from 'sanity'\nimport {aiInspectorId} from './constants'\nimport {AssistInspectorWrapper} from './AssistInspector'\nimport {AssistInspectorRouteParams, fieldPathParam, instructionParam} from '../types'\nimport {pluginTitle} from '../constants'\n\nexport const assistInspector: DocumentInspector = {\n name: aiInspectorId,\n useMenuItem: () => ({\n icon: SparklesIcon,\n title: pluginTitle,\n hidden: true,\n showAsAction: false,\n }),\n component: AssistInspectorWrapper,\n onClose({params}) {\n return {\n params: typed<AssistInspectorRouteParams>({\n ...params,\n [fieldPathParam]: undefined,\n [instructionParam]: undefined,\n }) as typeof params,\n }\n },\n}\n","import {DocumentInspector, ObjectSchemaType, PatchEvent} from 'sanity'\nimport {createContext, useContext} from 'react'\nimport {StudioAssistDocument} from '../types'\n\nexport type AssistDocumentContextValue = (\n | {assistDocument: StudioAssistDocument; loading: false}\n | {assistDocument: undefined; loading: true}\n) & {\n documentIsNew: boolean\n assistableDocumentId: string\n documentIsAssistable: boolean\n documentId: string\n documentSchemaType: ObjectSchemaType\n openInspector: (inspectorName: string, paneParams?: Record<string, string>) => void\n closeInspector: (inspectorName?: string) => void\n inspector: DocumentInspector | null\n selectedPath?: string\n documentOnChange: (event: PatchEvent) => void\n}\n\nexport const AssistDocumentContext = createContext<AssistDocumentContextValue | undefined>(\n undefined\n)\n\nexport function useAssistDocumentContext(): AssistDocumentContextValue {\n const context = useContext(AssistDocumentContext)\n if (!context) {\n throw new Error('AssistDocumentContext value is missing')\n }\n return context\n}\n","import {useMemo} from 'react'\nimport {FormNodePresence, isKeySegment, Path, stringToPath} from 'sanity'\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {AiPresence} from '../types'\nimport {maxHistoryVisibilityMs, pluginTitle} from '../constants'\n\nconst NO_PRESENCE: FormNodePresence[] = []\n\nexport function useAssistPresence(path: Path, showFocusWithin?: boolean): FormNodePresence[] {\n const context = useAssistDocumentContext()\n const assistDocument = context && 'assistDocument' in context ? context.assistDocument : undefined\n const tasks = assistDocument?.tasks\n\n return useMemo(() => {\n const activePresence = tasks\n ?.filter((task) => !task.ended)\n ?.flatMap((task) => task.presence ?? [])\n ?.filter(\n (p) =>\n p.started && new Date().getTime() - new Date(p.started).getTime() < maxHistoryVisibilityMs\n )\n .filter((presence) => {\n if (!presence.path || !path.length) {\n return false\n }\n const statusPath = stringToPath(presence.path)\n\n if (!showFocusWithin && statusPath.length !== path.length) {\n return false\n }\n\n return path.every((pathSegment, i) => {\n const statusSegment = statusPath[i]\n if (typeof pathSegment === 'string') {\n return pathSegment === statusSegment\n }\n if (isKeySegment(pathSegment) && isKeySegment(statusSegment)) {\n return pathSegment._key === statusSegment._key\n }\n return false\n })\n })\n if (!activePresence?.length) {\n return NO_PRESENCE\n }\n\n return activePresence.map((status) => aiPresence(status, path))\n }, [showFocusWithin, tasks, path])\n}\n\nexport function aiPresence(presence: AiPresence, path: Path, title?: string): FormNodePresence {\n return {\n user: {\n id: `sanity-assistant_${presence._key}`,\n displayName: pluginTitle,\n },\n path: path,\n sessionId: 'not-available',\n lastActiveAt: presence?.started ?? new Date().toISOString(),\n }\n}\n","import {forwardRef, ReactElement, ReactNode} from 'react'\nimport styled, {keyframes} from 'styled-components'\n\nconst fadeIn = keyframes`\n 0% {\n opacity: 0;\n transform: scale(0.75);\n }\n 40% {\n opacity: 0;\n transform: scale(0.75);\n }\n 100% {\n opacity: 1;\n transform: scale(1);\n }\n`\n\nconst FadeInDiv = styled.div`\n animation-name: ${fadeIn};\n animation-timing-function: ease-in-out;\n`\n\nexport const FadeInContent = forwardRef(function FadeInContent(\n {\n children,\n durationMs = 250,\n }: {\n children?: ReactNode\n ms?: number\n durationMs?: number\n },\n ref: any\n): ReactElement {\n return (\n <FadeInDiv ref={ref} style={{animationDuration: `${durationMs}ms`}}>\n {children}\n </FadeInDiv>\n )\n})\n","const black$1 = \"#101112\";\nconst white$1 = \"#fff\";\nconst gray = {\n \"50\": {\n title: \"Gray 50\",\n hex: \"#f2f3f5\"\n },\n \"100\": {\n title: \"Gray 100\",\n hex: \"#e6e8ec\"\n },\n \"200\": {\n title: \"Gray 200\",\n hex: \"#ced2d9\"\n },\n \"300\": {\n title: \"Gray 300\",\n hex: \"#b6bcc6\"\n },\n \"400\": {\n title: \"Gray 400\",\n hex: \"#9ea6b3\"\n },\n \"500\": {\n title: \"Gray 500\",\n hex: \"#8690a0\"\n },\n \"600\": {\n title: \"Gray 600\",\n hex: \"#6e7683\"\n },\n \"700\": {\n title: \"Gray 700\",\n hex: \"#565d67\"\n },\n \"800\": {\n title: \"Gray 800\",\n hex: \"#3f434a\"\n },\n \"900\": {\n title: \"Gray 900\",\n hex: \"#272a2e\"\n },\n \"950\": {\n title: \"Gray 950\",\n hex: \"#1b1d20\"\n }\n};\nconst blue = {\n \"50\": {\n title: \"Blue 50\",\n hex: \"#e8f1fe\"\n },\n \"100\": {\n title: \"Blue 100\",\n hex: \"#d2e3fe\"\n },\n \"200\": {\n title: \"Blue 200\",\n hex: \"#a6c8fd\"\n },\n \"300\": {\n title: \"Blue 300\",\n hex: \"#7aacfd\"\n },\n \"400\": {\n title: \"Blue 400\",\n hex: \"#4e91fc\"\n },\n \"500\": {\n title: \"Blue 500\",\n hex: \"#2276fc\"\n },\n \"600\": {\n title: \"Blue 600\",\n hex: \"#1e61cd\"\n },\n \"700\": {\n title: \"Blue 700\",\n hex: \"#1a4d9e\"\n },\n \"800\": {\n title: \"Blue 800\",\n hex: \"#17396f\"\n },\n \"900\": {\n title: \"Blue 900\",\n hex: \"#132540\"\n },\n \"950\": {\n title: \"Blue 950\",\n hex: \"#111b29\"\n }\n};\nconst purple = {\n \"50\": {\n title: \"Purple 50\",\n hex: \"#f8e9fe\"\n },\n \"100\": {\n title: \"Purple 100\",\n hex: \"#f2d3fe\"\n },\n \"200\": {\n title: \"Purple 200\",\n hex: \"#e6a7fd\"\n },\n \"300\": {\n title: \"Purple 300\",\n hex: \"#d97bfd\"\n },\n \"400\": {\n title: \"Purple 400\",\n hex: \"#cd4efc\"\n },\n \"500\": {\n title: \"Purple 500\",\n hex: \"#c123fc\"\n },\n \"600\": {\n title: \"Purple 600\",\n hex: \"#9d1fcd\"\n },\n \"700\": {\n title: \"Purple 700\",\n hex: \"#7a1b9e\"\n },\n \"800\": {\n title: \"Purple 800\",\n hex: \"#56186f\"\n },\n \"900\": {\n title: \"Purple 900\",\n hex: \"#331440\"\n },\n \"950\": {\n title: \"Purple 950\",\n hex: \"#211229\"\n }\n};\nconst magenta = {\n \"50\": {\n title: \"Magenta 50\",\n hex: \"#fcebf5\"\n },\n \"100\": {\n title: \"Magenta 100\",\n hex: \"#f9d7eb\"\n },\n \"200\": {\n title: \"Magenta 200\",\n hex: \"#f4afd8\"\n },\n \"300\": {\n title: \"Magenta 300\",\n hex: \"#ef87c4\"\n },\n \"400\": {\n title: \"Magenta 400\",\n hex: \"#ea5fb1\"\n },\n \"500\": {\n title: \"Magenta 500\",\n hex: \"#e5389e\"\n },\n \"600\": {\n title: \"Magenta 600\",\n hex: \"#ba3082\"\n },\n \"700\": {\n title: \"Magenta 700\",\n hex: \"#8f2866\"\n },\n \"800\": {\n title: \"Magenta 800\",\n hex: \"#65204a\"\n },\n \"900\": {\n title: \"Magenta 900\",\n hex: \"#3a182d\"\n },\n \"950\": {\n title: \"Magenta 950\",\n hex: \"#25141f\"\n }\n};\nconst red = {\n \"50\": {\n title: \"Red 50\",\n hex: \"#fdebea\"\n },\n \"100\": {\n title: \"Red 100\",\n hex: \"#fcd8d5\"\n },\n \"200\": {\n title: \"Red 200\",\n hex: \"#f9b1ab\"\n },\n \"300\": {\n title: \"Red 300\",\n hex: \"#f68b82\"\n },\n \"400\": {\n title: \"Red 400\",\n hex: \"#f36458\"\n },\n \"500\": {\n title: \"Red 500\",\n hex: \"#f03e2f\"\n },\n \"600\": {\n title: \"Red 600\",\n hex: \"#c33529\"\n },\n \"700\": {\n title: \"Red 700\",\n hex: \"#962c23\"\n },\n \"800\": {\n title: \"Red 800\",\n hex: \"#69231d\"\n },\n \"900\": {\n title: \"Red 900\",\n hex: \"#3c1a17\"\n },\n \"950\": {\n title: \"Red 950\",\n hex: \"#261514\"\n }\n};\nconst orange = {\n \"50\": {\n title: \"Orange 50\",\n hex: \"#fef0e6\"\n },\n \"100\": {\n title: \"Orange 100\",\n hex: \"#fee2ce\"\n },\n \"200\": {\n title: \"Orange 200\",\n hex: \"#fdc59d\"\n },\n \"300\": {\n title: \"Orange 300\",\n hex: \"#fca86d\"\n },\n \"400\": {\n title: \"Orange 400\",\n hex: \"#fb8b3c\"\n },\n \"500\": {\n title: \"Orange 500\",\n hex: \"#e57322\"\n },\n \"600\": {\n title: \"Orange 600\",\n hex: \"#ba5f1f\"\n },\n \"700\": {\n title: \"Orange 700\",\n hex: \"#904b1b\"\n },\n \"800\": {\n title: \"Orange 800\",\n hex: \"#653818\"\n },\n \"900\": {\n title: \"Orange 900\",\n hex: \"#3a2415\"\n },\n \"950\": {\n title: \"Orange 950\",\n hex: \"#251a13\"\n }\n};\nconst yellow = {\n \"50\": {\n title: \"Yellow 50\",\n hex: \"#fef7da\"\n },\n \"100\": {\n title: \"Yellow 100\",\n hex: \"#fdefb6\"\n },\n \"200\": {\n title: \"Yellow 200\",\n hex: \"#fcdf6d\"\n },\n \"300\": {\n title: \"Yellow 300\",\n hex: \"#fbd024\"\n },\n \"400\": {\n title: \"Yellow 400\",\n hex: \"#d9b421\"\n },\n \"500\": {\n title: \"Yellow 500\",\n hex: \"#b7991e\"\n },\n \"600\": {\n title: \"Yellow 600\",\n hex: \"#967e1c\"\n },\n \"700\": {\n title: \"Yellow 700\",\n hex: \"#746219\"\n },\n \"800\": {\n title: \"Yellow 800\",\n hex: \"#534717\"\n },\n \"900\": {\n title: \"Yellow 900\",\n hex: \"#312c14\"\n },\n \"950\": {\n title: \"Yellow 950\",\n hex: \"#201e13\"\n }\n};\nconst green = {\n \"50\": {\n title: \"Green 50\",\n hex: \"#e7f9ed\"\n },\n \"100\": {\n title: \"Green 100\",\n hex: \"#d0f4dc\"\n },\n \"200\": {\n title: \"Green 200\",\n hex: \"#a1eaba\"\n },\n \"300\": {\n title: \"Green 300\",\n hex: \"#72e097\"\n },\n \"400\": {\n title: \"Green 400\",\n hex: \"#43d675\"\n },\n \"500\": {\n title: \"Green 500\",\n hex: \"#3ab564\"\n },\n \"600\": {\n title: \"Green 600\",\n hex: \"#329454\"\n },\n \"700\": {\n title: \"Green 700\",\n hex: \"#297343\"\n },\n \"800\": {\n title: \"Green 800\",\n hex: \"#215233\"\n },\n \"900\": {\n title: \"Green 900\",\n hex: \"#183122\"\n },\n \"950\": {\n title: \"Green 950\",\n hex: \"#14211a\"\n }\n};\nconst cyan = {\n \"50\": {\n title: \"Cyan 50\",\n hex: \"#e3fafd\"\n },\n \"100\": {\n title: \"Cyan 100\",\n hex: \"#c7f5fc\"\n },\n \"200\": {\n title: \"Cyan 200\",\n hex: \"#90ecf9\"\n },\n \"300\": {\n title: \"Cyan 300\",\n hex: \"#59e3f6\"\n },\n \"400\": {\n title: \"Cyan 400\",\n hex: \"#22daf4\"\n },\n \"500\": {\n title: \"Cyan 500\",\n hex: \"#1fb8ce\"\n },\n \"600\": {\n title: \"Cyan 600\",\n hex: \"#1c97a8\"\n },\n \"700\": {\n title: \"Cyan 700\",\n hex: \"#197583\"\n },\n \"800\": {\n title: \"Cyan 800\",\n hex: \"#16545d\"\n },\n \"900\": {\n title: \"Cyan 900\",\n hex: \"#133237\"\n },\n \"950\": {\n title: \"Cyan 950\",\n hex: \"#112124\"\n }\n};\nconst hues = {\n gray,\n blue,\n purple,\n magenta,\n red,\n orange,\n yellow,\n green,\n cyan\n};\nconst COLOR_HUES = [\"gray\", \"blue\", \"purple\", \"magenta\", \"red\", \"orange\", \"yellow\", \"green\", \"cyan\"];\nconst COLOR_TINTS = [\"50\", \"100\", \"200\", \"300\", \"400\", \"500\", \"600\", \"700\", \"800\", \"900\", \"950\"];\nconst black = {\n title: \"Black\",\n hex: black$1\n};\nconst white = {\n title: \"White\",\n hex: white$1\n};\nexport { COLOR_HUES, COLOR_TINTS, black, blue, cyan, gray, green, hues, magenta, orange, purple, red, white, yellow };\n//# sourceMappingURL=index.js.map\n","import {purple} from '@sanity/color'\nimport {SparklesIcon} from '@sanity/icons'\nimport {Text} from '@sanity/ui'\nimport {CSSProperties, useMemo} from 'react'\nimport {useColorSchemeValue} from 'sanity'\nimport styled, {keyframes} from 'styled-components'\n\nconst Root = styled.span`\n display: block;\n width: 25px;\n height: 25px;\n position: relative;\n`\n\nconst dash = keyframes`\n 0% {\n transform: rotate(0);\n }\n 100% {\n transform: rotate(43deg);\n }\n`\n\nconst Outline = styled.svg`\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n\n & > circle {\n stroke: var(--ai-avatar-stroke-color);\n stroke-width: 1.5px;\n stroke-linecap: round;\n transform-origin: center;\n animation: ${dash} 500ms ease-in-out infinite;\n transition: stroke-dasharray 200ms ease-in-out;\n\n stroke-dasharray: 2.34px 0;\n\n [data-state='active'] > & {\n stroke-dasharray: 2px 2.34px;\n }\n }\n`\n\nconst IconDisc = styled.span`\n background: var(--ai-avatar-disc-color);\n color: white;\n width: 21px;\n height: 21px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 10.5px;\n position: absolute;\n top: 2px;\n left: 2px;\n`\n\nexport function AssistAvatar(props: {state?: 'present' | 'active'}) {\n const {state = 'present'} = props\n const scheme = useColorSchemeValue()\n\n const style = useMemo(() => {\n if (scheme === 'dark') {\n return {\n [`--ai-avatar-stroke-color`]: purple[400].hex,\n [`--ai-avatar-disc-color`]: purple[600].hex,\n } as CSSProperties\n }\n\n return {\n [`--ai-avatar-stroke-color`]: purple[500].hex,\n [`--ai-avatar-disc-color`]: purple[600].hex,\n } as CSSProperties\n }, [scheme])\n\n return (\n <Root data-state={state} style={style}>\n <Outline\n width=\"25\"\n height=\"25\"\n viewBox=\"0 0 25 25\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"12.5\" cy=\"12.5\" r=\"11.75\" />\n </Outline>\n <IconDisc>\n <Text as=\"span\" size={0} style={{color: 'inherit'}}>\n <SparklesIcon />\n </Text>\n </IconDisc>\n </Root>\n )\n}\n","// eslint-disable-next-line react/no-unused-prop-types\nimport {FormNodePresence} from 'sanity'\nimport {Card, Flex, Text, Tooltip} from '@sanity/ui'\nimport {FadeInContent} from '../components/FadeInContent'\nimport {AssistAvatar} from './AssistAvatar'\n\nexport function AiFieldPresence(props: {presence: FormNodePresence}) {\n return (\n <Card style={{position: 'relative', background: 'transparent'}} contentEditable={false}>\n <Tooltip\n placement=\"left\"\n content={\n <Card padding={3} border>\n <Flex align=\"center\">\n <Text size={1}>Running instruction...</Text>\n </Flex>\n </Card>\n }\n >\n <FadeInContent durationMs={300}>\n <AssistAvatar state=\"active\" />\n </FadeInContent>\n </Tooltip>\n </Card>\n )\n}\n","import {ObjectInputProps, FieldMember, pathToString} from 'sanity'\nimport {createContext, PropsWithChildren, useMemo} from 'react'\nimport {isAssistSupported} from '../helpers/assistSupported'\n\nexport const FirstAssistedPathContext = createContext<string | undefined>(undefined)\n\nexport interface FirstAssistedPathProviderProps {\n members: ObjectInputProps['members']\n}\n\nexport function FirstAssistedPathProvider(\n props: PropsWithChildren<FirstAssistedPathProviderProps>\n) {\n const {members} = props\n\n const firstAssistedPath = useMemo(() => {\n const firstAssisted = members.find(\n (member): member is FieldMember =>\n member.kind === 'field' && isAssistSupported(member.field.schemaType)\n )\n return firstAssisted?.field.path ? pathToString(firstAssisted?.field.path) : undefined\n }, [members])\n\n return (\n <FirstAssistedPathContext.Provider value={firstAssistedPath}>\n {props.children}\n </FirstAssistedPathContext.Provider>\n )\n}\n","import {Badge} from '@sanity/ui'\n\nexport function AssistFeatureBadge() {\n return (\n <Badge fontSize={0} style={{margin: '-2px 0'}} tone=\"primary\">\n Beta\n </Badge>\n )\n}\n","import {Path, pathToString} from 'sanity'\nimport {Button, Flex, Popover, Stack, Text} from '@sanity/ui'\nimport {PropsWithChildren, useContext, useMemo, useRef} from 'react'\nimport {FirstAssistedPathContext} from './FirstAssistedPathProvider'\nimport {AssistFeatureBadge} from '../components/AssistFeatureBadge'\nimport {ArrowRightIcon, CheckmarkIcon, SparklesIcon} from '@sanity/icons'\nimport {pluginTitle, releaseAnnouncementUrl} from '../constants'\nimport {fieldOnboardingKey, useOnboardingFeature} from './onboardingStore'\n\nexport interface FieldActionsOnboardingProps {\n path: Path\n}\n\nexport function FieldActionsOnboarding(props: PropsWithChildren<FieldActionsOnboardingProps>) {\n const {path, children} = props\n\n const firstAssistedPath = useContext(FirstAssistedPathContext)\n const isFirstAssisted = useMemo(\n () => pathToString(path) === firstAssistedPath,\n [path, firstAssistedPath]\n )\n\n if (!isFirstAssisted) {\n return <>{children}</>\n }\n\n return <AssistOnboardingPopover {...props} />\n}\n\nfunction AssistOnboardingPopover(props: PropsWithChildren<FieldActionsOnboardingProps>) {\n const {showOnboarding, dismissOnboarding} = useOnboardingFeature(fieldOnboardingKey)\n\n if (!showOnboarding) {\n return <>{props.children}</>\n }\n\n return (\n <Popover\n content={<AssistIntroCard path={props.path} dismiss={dismissOnboarding} />}\n open\n portal\n placeholder=\"bottom\"\n tone=\"default\"\n width={0}\n >\n <div>\n <Button disabled fontSize={1} icon={SparklesIcon} mode=\"ghost\" padding={2} />\n </div>\n </Popover>\n )\n}\n\nfunction AssistIntroCard(props: FieldActionsOnboardingProps & {dismiss: () => void}) {\n const buttonRef = useRef<HTMLButtonElement>(null)\n\n return (\n <Stack as=\"section\" padding={3} space={3}>\n <Stack padding={2} space={4}>\n <Flex gap={2} align=\"center\">\n <Text as=\"h1\" size={1} weight=\"semibold\">\n {pluginTitle}\n </Text>\n <div aria-hidden style={{margin: '-3px 0', lineHeight: 0}}>\n <AssistFeatureBadge />\n </div>\n </Flex>\n\n <Stack space={3}>\n <Text as=\"p\" muted size={1}>\n Manage reusable AI instructions to boost your content creation and reduce amount of\n repetitive chores.{' '}\n <a href={releaseAnnouncementUrl} target=\"_blank\" rel=\"noreferrer\">\n Learn more <ArrowRightIcon />\n </a>\n </Text>\n </Stack>\n </Stack>\n\n <Button\n fontSize={1}\n icon={CheckmarkIcon}\n onClick={props.dismiss}\n padding={3}\n ref={buttonRef}\n text=\"Ok, good to know!\"\n tone=\"primary\"\n />\n </Stack>\n )\n}\n","import {FieldProps, isArraySchemaType} from 'sanity'\nimport {useAssistPresence} from '../presence/useAssistPresence'\nimport {useMemo} from 'react'\nimport {Box, Flex} from '@sanity/ui'\nimport {contextDocumentTypeName} from '../types'\nimport {isAssistSupported} from '../helpers/assistSupported'\nimport {isPortableTextArray, isType} from '../helpers/typeUtils'\nimport {AiFieldPresence} from '../presence/AiFieldPresence'\nimport {FieldActionsOnboarding} from '../onboarding/FieldActionsOnboarding'\n\nexport function AssistFieldWrapper(props: FieldProps) {\n const {schemaType} = props\n\n const isSupported = useMemo(() => isAssistSupported(schemaType), [schemaType])\n\n if (\n !isSupported ||\n schemaType.name.startsWith('sanity.') ||\n schemaType.name === contextDocumentTypeName\n ) {\n return props.renderDefault(props)\n }\n if (!isType(props.schemaType, 'document') && props.inputId !== 'root') {\n return <AssistField {...props}>{props.children}</AssistField>\n }\n\n return props.renderDefault(props)\n}\n\nexport function AssistField(props: FieldProps) {\n const isPortableText = useMemo(\n () => !!(isArraySchemaType(props.schemaType) && isPortableTextArray(props.schemaType)),\n [props.schemaType]\n )\n\n const presence = useAssistPresence(props.path, isPortableText)\n\n const actions = (\n <Flex gap={2} align=\"center\" justify=\"space-between\">\n {presence.map((pre) => (\n <Box key={pre.user.id}>\n <AiFieldPresence key={pre.lastActiveAt} presence={pre} />\n </Box>\n ))}\n\n <FieldActionsOnboarding {...props}>{props.actions}</FieldActionsOnboarding>\n </Flex>\n )\n\n return props.renderDefault({...props, actions})\n}\n","import {createContext} from 'react'\nimport {ConnectorsStore} from './ConnectorsStore'\n\nexport const ConnectorsStoreContext = createContext<ConnectorsStore | null>(null)\n","import {useContext} from 'react'\nimport {ConnectorsStoreContext} from './ConnectorsStoreContext'\nimport {ConnectorsStore} from './ConnectorsStore'\n\nexport function useConnectorsStore(): ConnectorsStore {\n const store = useContext(ConnectorsStoreContext)\n\n if (!store) {\n throw new Error('Missing connectors store context')\n }\n\n return store\n}\n","export function hasOverflowScroll(el: HTMLElement): boolean {\n const overflow = getComputedStyle(el).overflow\n\n return overflow.includes('auto') || overflow.includes('hidden') || overflow.includes('scroll')\n}\n","import {useEffect, useMemo, useRef, useState} from 'react'\nimport {Rect, Scroll} from './types'\nimport {hasOverflowScroll} from './helpers'\n\nexport function useRegionRects() {\n const ref = useRef<HTMLDivElement>(null)\n\n const [relativeBoundsRect, setRelativeBoundsRect] = useState<Rect | null>(null)\n const [relativeElementRect, setRelativeElementRect] = useState<Rect | null>(null)\n const [boundsScroll, setBoundsScroll] = useState<Scroll>({x: 0, y: 0})\n const [scroll, setScroll] = useState<Scroll>({x: 0, y: 0})\n\n const boundsScrollXRef = useRef(0)\n const boundsScrollYRef = useRef(0)\n\n const elementScrollXRef = useRef(0)\n const elementScrollYRef = useRef(0)\n\n useEffect(() => {\n const el = ref.current\n\n if (!el) return undefined\n\n const scrollParents: HTMLElement[] = []\n let parent = el.parentElement\n\n while (parent && parent !== document.body) {\n if (\n hasOverflowScroll(parent)\n // || parent.scrollHeight > parent.clientHeight\n ) {\n scrollParents.push(parent)\n }\n\n parent = parent.parentElement\n }\n\n function handleResize() {\n const scrollParent = scrollParents[0]\n\n const boundsRect = scrollParent?.getBoundingClientRect() || {\n x: 0,\n y: 0,\n width: window.innerWidth,\n height: window.innerHeight,\n }\n\n const domRect = el!.getBoundingClientRect()\n\n setRelativeBoundsRect({\n x: boundsRect.x + boundsScrollXRef.current,\n y: boundsRect.y + boundsScrollYRef.current,\n w: boundsRect.width,\n h: boundsRect.height,\n })\n\n setRelativeElementRect({\n x: domRect.x + elementScrollXRef.current,\n y: domRect.y + elementScrollYRef.current,\n w: domRect.width,\n h: domRect.height,\n })\n }\n\n function handleScroll() {\n let scrollX = window.scrollX\n let scrollY = window.scrollY\n\n for (const scrollParent of scrollParents) {\n scrollX += scrollParent.scrollLeft\n scrollY += scrollParent.scrollTop\n }\n\n const scrollParent = scrollParents[0]\n\n boundsScrollXRef.current = scrollX - (scrollParent?.scrollLeft || window.scrollX)\n\n boundsScrollYRef.current = scrollY - (scrollParent?.scrollTop || window.scrollY)\n\n setBoundsScroll({\n x: boundsScrollXRef.current,\n y: boundsScrollYRef.current,\n })\n\n elementScrollXRef.current = scrollX\n elementScrollYRef.current = scrollY\n\n setScroll({x: scrollX, y: scrollY})\n }\n\n window.addEventListener('scroll', handleScroll, {passive: true})\n\n const ro = new ResizeObserver(handleResize)\n\n ro.observe(el)\n\n for (const scrollParent of scrollParents) {\n scrollParent.addEventListener('scroll', handleScroll, {passive: true})\n ro.observe(scrollParent)\n }\n\n handleScroll()\n\n return () => {\n ro.unobserve(el)\n\n for (const scrollParent of scrollParents) {\n ro.unobserve(scrollParent)\n scrollParent.removeEventListener('scroll', handleScroll)\n }\n\n ro.disconnect()\n\n window.removeEventListener('scroll', handleScroll)\n }\n }, [])\n\n const bounds: Rect | null = useMemo(\n () =>\n relativeBoundsRect && {\n x: relativeBoundsRect.x - boundsScroll.x,\n y: relativeBoundsRect.y - boundsScroll.y,\n w: relativeBoundsRect.w,\n h: relativeBoundsRect.h,\n },\n [relativeBoundsRect, boundsScroll]\n )\n\n const element: Rect | null = useMemo(\n () =>\n relativeElementRect && {\n x: relativeElementRect.x - scroll.x,\n y: relativeElementRect.y - scroll.y,\n w: relativeElementRect.w,\n h: relativeElementRect.h,\n },\n [relativeElementRect, scroll]\n )\n\n return {bounds, element, ref}\n}\n","import {HTMLProps, useEffect} from 'react'\nimport {ConnectorRegionRects} from './types'\nimport {useRegionRects} from './useRegionRects'\n\nexport function ConnectorRegion(\n props: {\n onRectsChange?: (rects: ConnectorRegionRects | null) => void\n } & HTMLProps<HTMLDivElement>\n) {\n const {children, onRectsChange, ...restProps} = props\n\n const {bounds, element, ref} = useRegionRects()\n\n useEffect(() => {\n onRectsChange?.(bounds && element ? {bounds, element} : null)\n }, [bounds, element, onRectsChange])\n\n return (\n <div {...restProps} ref={ref}>\n {children}\n </div>\n )\n}\n","import {HTMLProps, useEffect, useState} from 'react'\nimport {useConnectorsStore} from './useConnectorsStore'\nimport {ConnectorRegionRects} from './types'\nimport {ConnectorRegion} from './ConnectorRegion'\n\nexport function ConnectFromRegion(\n props: {_key: string; zIndex: number} & HTMLProps<HTMLDivElement>\n) {\n const {children, _key: key, zIndex, ...restProps} = props\n const store = useConnectorsStore()\n const [rects, setRects] = useState<ConnectorRegionRects | null>(null)\n\n useEffect(() => store.from.subscribe(key, {zIndex}), [key, store, zIndex])\n\n useEffect(() => {\n if (rects) store.from.next(key, rects)\n }, [key, rects, store])\n\n return (\n <ConnectorRegion {...restProps} onRectsChange={setRects}>\n {children}\n </ConnectorRegion>\n )\n}\n","import {Connector, ConnectorRegionRects} from './types'\n\nexport interface ConnectorsStore {\n connectors: {\n subscribe: (observer: (connectors: Connector[]) => void) => () => void\n }\n\n from: {\n subscribe: (key: string, payload?: Record<string, unknown>) => () => void\n next: (key: string, rects: ConnectorRegionRects) => void\n }\n\n to: {\n subscribe: (key: string, payload?: Record<string, unknown>) => () => void\n next: (key: string, rects: ConnectorRegionRects) => void\n }\n}\n\nexport function createConnectorsStore(): ConnectorsStore {\n const configKeys: string[] = []\n const fieldKeys: string[] = []\n\n const channels = {\n from: new Map<string, ConnectorRegionRects | null>(),\n to: new Map<string, ConnectorRegionRects | null>(),\n }\n\n const payloads = {\n from: new Map<string, Record<string, unknown> | undefined>(),\n to: new Map<string, Record<string, unknown> | undefined>(),\n }\n\n const observers: ((connectors: Connector[]) => void)[] = []\n\n function notifyObservers() {\n const connectors: Connector[] = []\n\n for (const key of configKeys) {\n const toRects = channels.to.get(key)\n const toPayload = payloads.from.get(key)\n\n const fromRects = channels.from.get(key)\n const fromPayload = payloads.from.get(key)\n\n if (toRects && fromRects) {\n connectors.push({\n key,\n from: {...fromRects, payload: fromPayload},\n to: {...toRects, payload: toPayload},\n })\n }\n }\n\n for (const observer of observers) {\n observer(connectors)\n }\n }\n\n return {\n to: {\n subscribe(key, payload) {\n channels.to.set(key, null)\n payloads.to.set(key, payload)\n\n configKeys.push(key)\n\n return () => {\n channels.to.delete(key)\n payloads.to.delete(key)\n\n const idx = configKeys.indexOf(key)\n\n if (idx > -1) configKeys.splice(idx, 1)\n\n notifyObservers()\n }\n },\n next(key, rects) {\n channels.to.set(key, rects)\n\n if (fieldKeys.includes(key)) notifyObservers()\n },\n },\n\n connectors: {\n subscribe(observer) {\n observers.push(observer)\n\n return () => {\n const idx = observers.indexOf(observer)\n\n if (idx > -1) observers.splice(idx, 1)\n }\n },\n },\n\n from: {\n subscribe(key, payload) {\n channels.from.set(key, null)\n payloads.from.set(key, payload)\n\n fieldKeys.push(key)\n\n return () => {\n channels.from.delete(key)\n payloads.from.delete(key)\n\n const idx = fieldKeys.indexOf(key)\n\n if (idx > -1) fieldKeys.splice(idx, 1)\n\n notifyObservers()\n }\n },\n next(key, rects) {\n channels.from.set(key, rects)\n\n if (configKeys.includes(key)) notifyObservers()\n },\n },\n }\n}\n","import {ReactNode, useEffect, useMemo} from 'react'\nimport {ConnectorsStore, createConnectorsStore} from './ConnectorsStore'\nimport {ConnectorsStoreContext} from './ConnectorsStoreContext'\nimport {Connector} from './types'\n\nexport function ConnectorsProvider(props: {\n children?: ReactNode\n onConnectorsChange?: (connectors: Connector[]) => void\n}) {\n const {children, onConnectorsChange} = props\n const store: ConnectorsStore = useMemo(() => createConnectorsStore(), [])\n\n useEffect(\n () => onConnectorsChange && store.connectors.subscribe(onConnectorsChange),\n [onConnectorsChange, store]\n )\n\n return <ConnectorsStoreContext.Provider value={store}>{children}</ConnectorsStoreContext.Provider>\n}\n","import {\n ConnectorLine,\n ConnectorLinePoint,\n ConnectorOptions,\n ConnectorRegionRects,\n Rect,\n} from './types'\n\nfunction getConnectorLinePoint(\n options: ConnectorOptions,\n rect: Rect,\n bounds: Rect\n): ConnectorLinePoint {\n const centerY = rect.y + rect.h / 2\n const isAbove = rect.y + rect.h < bounds.y + options.arrow.marginY\n const isBelow = rect.y > bounds.y + bounds.h - options.arrow.marginY\n\n return {\n bounds,\n x: rect.x,\n y: centerY,\n centerY,\n startY: rect.y + options.path.marginY,\n endY: rect.y + rect.h - options.path.marginY,\n isAbove,\n isBelow,\n outOfBounds: isAbove || isBelow,\n }\n}\n\nexport function mapConnectorToLine(\n options: ConnectorOptions,\n connector: {from: ConnectorRegionRects; to: ConnectorRegionRects}\n): ConnectorLine {\n const fromBounds: Rect = {\n y: connector.from.bounds.y + options.arrow.threshold,\n // bottom: connector.from.bounds.y + connector.from.bounds.h - options.arrow.threshold,\n x: connector.from.bounds.x,\n // right: connector.from.bounds.x + connector.from.bounds.w,\n w: connector.from.bounds.w,\n h: connector.from.bounds.h - options.arrow.threshold * 2,\n }\n\n const from = getConnectorLinePoint(options, connector.from.element, fromBounds)\n from.x = connector.from.element.x + connector.from.element.w // + 1\n\n const fromBottom = fromBounds.y + fromBounds.h\n\n const toBounds: Rect = {\n y: connector.to.bounds.y + options.arrow.threshold,\n // bottom: connector.to.bounds.y + connector.to.bounds.h - options.arrow.threshold,\n x: connector.to.bounds.x,\n // right: connector.to.bounds.x + connector.to.bounds.w,\n w: connector.to.bounds.w,\n h: connector.to.bounds.h - options.arrow.threshold * 2,\n }\n\n const toBottom = toBounds.y + toBounds.h\n\n const to = getConnectorLinePoint(options, connector.to.element, toBounds)\n\n const maxStartY = Math.max(to.startY, from.startY)\n\n // Align from <-> to vertically\n from.y = Math.min(maxStartY, from.endY)\n if (from.y < toBounds.y) {\n from.y = Math.min(toBounds.y, from.endY)\n } else if (from.y > toBottom) {\n from.y = Math.max(toBottom, from.startY)\n }\n to.y = Math.min(maxStartY, to.endY)\n if (to.y < fromBounds.y) {\n to.y = Math.min(fromBounds.y, to.endY)\n } else if (to.y > fromBottom) {\n to.y = Math.max(fromBottom, to.startY)\n }\n\n // Keep within bounds\n from.y = Math.min(Math.max(from.y, fromBounds.y), fromBottom)\n to.y = Math.min(Math.max(to.y, toBounds.y), toBottom)\n\n return {from, to}\n}\n","import {ConnectorOptions} from '../../_lib/connector'\n\nexport function arrowPath(options: ConnectorOptions, x: number, y: number, dir: 1 | -1): string {\n return [\n `M ${x - options.arrow.size} ${y - options.arrow.size * dir} `,\n `L ${x} ${y}`,\n `L ${x + options.arrow.size} ${y - options.arrow.size * dir}`,\n ].join('')\n}\n","import {ConnectorLine, ConnectorOptions} from '../../_lib/connector'\n\nexport function drawArrowPath(\n options: ConnectorOptions,\n x: number,\n y: number,\n dir: number\n): string {\n return [\n `M ${x - options.arrow.size} ${y - options.arrow.size * dir} `,\n `L ${x} ${y}`,\n `L ${x + options.arrow.size} ${y - options.arrow.size * dir}`,\n ].join('')\n}\n\nfunction moveTo(x: number, y: number) {\n return `M${x} ${y}`\n}\n\nfunction lineTo(x: number, y: number) {\n return `L${x} ${y}`\n}\n\nfunction join(strings: string[], delim = '') {\n return strings.join(delim)\n}\n\nfunction quadCurve(x1: number, y1: number, x: number, y: number) {\n return `Q${x1} ${y1} ${x} ${y}`\n}\n\nexport function drawConnectorPath(options: ConnectorOptions, line: ConnectorLine): string {\n const {cornerRadius} = options.path\n const {from, to} = line\n const {x: fromX, y: fromY} = from\n const {x: _toX, y: toY} = to\n\n const toX = _toX - 1\n\n // Calculate divider position\n const dividerX = to.bounds.x + options.divider.offsetX\n\n // Calculate connector FROM path X position\n const fromPathX = from.isAbove || from.isBelow ? fromX + options.arrow.marginX : fromX\n\n // Calculate maximum corner radius\n const r0 = Math.min(cornerRadius, Math.abs(fromPathX - dividerX) / 2)\n const r1 = Math.min(cornerRadius, Math.abs(fromY - toY) / 2)\n\n const cmds: string[] = []\n\n // FROM\n if (from.isAbove) {\n cmds.push(\n moveTo(\n fromX + options.arrow.marginX,\n fromY - options.arrow.threshold + options.arrow.marginY\n ),\n lineTo(fromX + options.arrow.marginX, fromY - r0),\n quadCurve(fromX + options.arrow.marginX, fromY, fromX + options.arrow.marginX + r0, fromY)\n )\n } else if (from.isBelow) {\n cmds.push(\n moveTo(\n fromX + options.arrow.marginX,\n fromY + options.arrow.threshold - options.arrow.marginY\n ),\n lineTo(fromX + options.arrow.marginX, fromY + r0),\n quadCurve(fromX + options.arrow.marginX, fromY, fromX + options.arrow.marginX + r0, fromY)\n )\n } else {\n cmds.push(moveTo(fromX, fromY))\n }\n\n // TO\n if (to.isAbove) {\n if (fromY < to.bounds.y) {\n cmds.push(\n lineTo(dividerX - r1, fromY),\n quadCurve(dividerX, fromY, dividerX, fromY + r1),\n lineTo(dividerX, toY - r1),\n quadCurve(dividerX, toY, dividerX + r1, toY),\n lineTo(dividerX - cornerRadius, toY),\n quadCurve(dividerX, toY, dividerX, toY - cornerRadius),\n lineTo(dividerX, toY - options.arrow.threshold + options.arrow.marginY)\n )\n } else {\n cmds.push(\n lineTo(dividerX - cornerRadius, fromY),\n quadCurve(dividerX, fromY, dividerX, fromY - cornerRadius),\n lineTo(dividerX, toY - options.arrow.threshold + options.arrow.marginY)\n )\n }\n } else if (to.isBelow) {\n if (fromY > to.bounds.y + to.bounds.h) {\n // curl around\n cmds.push(\n lineTo(dividerX - options.arrow.marginX - r1, fromY),\n quadCurve(\n dividerX - options.arrow.marginX,\n fromY,\n dividerX - options.arrow.marginX,\n fromY - r1\n ),\n lineTo(dividerX - options.arrow.marginX, toY + r1),\n quadCurve(\n dividerX - options.arrow.marginX,\n toY,\n dividerX - options.arrow.marginX + r1,\n toY\n ),\n lineTo(dividerX - cornerRadius, toY),\n quadCurve(dividerX, toY, dividerX, toY + cornerRadius),\n lineTo(dividerX, toY + options.arrow.threshold - options.arrow.marginY)\n )\n } else {\n cmds.push(\n lineTo(dividerX - cornerRadius, fromY),\n quadCurve(dividerX, fromY, dividerX, fromY + cornerRadius),\n lineTo(dividerX, toY + options.arrow.threshold - options.arrow.marginY)\n )\n }\n } else if (fromY < toY) {\n cmds.push(\n lineTo(dividerX - r0, fromY),\n quadCurve(dividerX, fromY, dividerX, fromY + r1),\n lineTo(dividerX, toY - r1),\n quadCurve(dividerX, toY, dividerX + r1, toY),\n lineTo(toX, toY)\n )\n } else {\n cmds.push(\n lineTo(dividerX - Math.min(r0, r1), fromY),\n quadCurve(dividerX, fromY, dividerX, fromY - Math.min(r0, r1)),\n lineTo(dividerX, toY + r1),\n quadCurve(dividerX, toY, dividerX + r1, toY),\n lineTo(toX, toY)\n )\n }\n\n return join(cmds)\n}\n","import {rgba, useTheme} from '@sanity/ui'\nimport {useMemo} from 'react'\nimport {ConnectorOptions, mapConnectorToLine, Rect} from '../_lib/connector'\nimport {arrowPath} from './draw/arrowPath'\nimport {drawConnectorPath} from './draw/connectorPath'\n\nexport function ConnectorPath(props: {\n from: {bounds: Rect; element: Rect}\n to: {bounds: Rect; element: Rect}\n options: ConnectorOptions\n}) {\n const {from, options, to} = props\n const {strokeWidth} = options.path\n const theme = useTheme()\n\n const line = useMemo(() => mapConnectorToLine(options, {from, to}), [from, options, to])\n\n return (\n <>\n <path\n d={drawConnectorPath(options, line)}\n stroke={theme.sanity.color.base.bg}\n strokeWidth={strokeWidth + 4}\n />\n\n <path\n d={drawConnectorPath(options, line)}\n stroke={rgba(theme.sanity.color.base.border, 0.5)}\n strokeWidth={strokeWidth}\n />\n\n {line.from.isAbove && (\n <path\n d={arrowPath(\n options,\n line.from.x + options.arrow.marginX,\n line.from.bounds.y - options.arrow.threshold + options.arrow.marginY,\n -1\n )}\n stroke={theme.sanity.color.base.border}\n strokeWidth={strokeWidth}\n />\n )}\n\n {line.from.isBelow && (\n <path\n d={arrowPath(\n options,\n line.from.x + options.arrow.marginX,\n line.from.bounds.y +\n line.from.bounds.h +\n options.arrow.threshold -\n options.arrow.marginY,\n 1\n )}\n stroke={theme.sanity.color.base.border}\n strokeWidth={strokeWidth}\n />\n )}\n </>\n )\n}\n","import {Fragment, useEffect, useState} from 'react'\nimport {Connector, ConnectorOptions} from '../_lib/connector'\nimport {ConnectorPath} from './ConnectorPath'\n\nconst DEBUG = false\n\nconst options: ConnectorOptions = {\n arrow: {\n marginX: 10.5,\n marginY: 5,\n size: 4,\n threshold: 16.5,\n },\n divider: {\n offsetX: -10.5,\n },\n path: {\n cornerRadius: 3,\n marginY: 10.5,\n strokeWidth: 1,\n },\n}\n\nexport function AssistConnectorsOverlay(props: {connectors: Connector[]}) {\n const {connectors} = props\n // const zIndexes = connectors.map((connector) => {\n // const zIndex = connector.from.payload?.zIndex\n\n // if (typeof zIndex === 'number') {\n // return zIndex\n // }\n\n // return 1\n // })\n const [, setRedraw] = useState(false)\n useEffect(() => {\n // hacky workaround to force redraw for connectors on initial render\n // this seem to improve initial measurements of elements\n setRedraw(true)\n }, [])\n\n // const zIndex = zIndexes.length ? Math.max(...zIndexes) : 1\n\n return (\n <>\n <svg\n fill=\"none\"\n width={window.innerWidth}\n height={window.innerHeight}\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n pointerEvents: 'none',\n zIndex: 150,\n // zIndex,\n }}\n >\n {connectors.map((connector) => (\n <ConnectorPath\n from={connector.from}\n key={connector.key}\n options={options}\n to={connector.to}\n />\n ))}\n </svg>\n {DEBUG &&\n connectors.map(({key, from, to}) => {\n return (\n <Fragment key={key}>\n <div\n style={{\n position: 'fixed',\n top: from.bounds.y,\n left: from.bounds.x,\n width: from.bounds.w,\n height: from.bounds.h,\n pointerEvents: 'none',\n overflow: 'hidden',\n outline: '1px dotted red',\n outlineOffset: -1,\n zIndex: 10000000 - 1,\n }}\n >\n <div\n style={{\n position: 'absolute',\n top: from.element.y - from.bounds.y,\n left: from.element.x - from.bounds.x,\n width: from.element.w,\n height: from.element.h,\n border: '1px solid red',\n boxSizing: 'border-box',\n }}\n />\n </div>\n\n <div\n style={{\n position: 'fixed',\n top: to.bounds.y,\n left: to.bounds.x,\n width: to.bounds.w,\n height: to.bounds.h,\n pointerEvents: 'none',\n overflow: 'hidden',\n outline: '1px dotted teal',\n outlineOffset: -1,\n zIndex: 10000000 - 1,\n }}\n >\n <div\n style={{\n position: 'absolute',\n top: to.element.y - to.bounds.y,\n left: to.element.x - to.bounds.x,\n width: to.element.w,\n height: to.element.h,\n border: '1px solid teal',\n boxSizing: 'border-box',\n }}\n />\n </div>\n </Fragment>\n )\n })}\n </>\n )\n}\n","import {SanityDocument} from 'sanity'\nimport {PortableTextBlock, PortableTextMarkDefinition, PortableTextSpan} from '@portabletext/types'\n\n//id prefixes\nexport const legacyAssistDocumentIdPrefix = 'sanity.ai.'\n\nexport const legacyAssistDocumentTypeName = 'sanity.ai.docType' as const\nconst aiFieldTypeName = 'sanity.ai.docType.field' as const\nconst instructionTypeName = 'sanity.ai.field.instruction' as const\n\nconst userInputTypeName = 'sanity.ai.prompt.userInput' as const\nconst promptContextTypeName = 'sanity.ai.prompt.context' as const\nconst fieldReferenceTypeName = 'sanity.ai.prompt.fieldRef' as const\n\nexport const legacyContextDocumentTypeName = 'ai.instruction.context' as const\n\nexport const legacyAssistStatusDocumentTypeName = 'sanity.ai.instructionStatus' as const\n\nexport interface FieldPrompts {\n _key: string\n _type: typeof aiFieldTypeName\n path?: string\n instructions?: LegacyInstruction[]\n}\n\nexport interface LegacyAssistDocument extends SanityDocument {\n fields: FieldPrompts[]\n}\n\nexport interface LegacyFieldRef extends PortableTextMarkDefinition {\n _type: typeof fieldReferenceTypeName\n path?: string\n}\n\nexport interface LegacyContextBlock {\n _type: typeof promptContextTypeName\n reference?: {\n _type: 'reference'\n _ref?: string\n }\n}\n\nexport interface LegacyUserInputBlock {\n _type: typeof userInputTypeName\n _key: string\n message?: string\n description?: string\n}\n\nexport type LegacyPromptTextBlock = PortableTextBlock<\n never,\n PortableTextSpan | LegacyFieldRef | LegacyUserInputBlock | LegacyContextBlock,\n 'normal',\n never\n>\n\nexport type LegacyPromptBlock =\n | LegacyPromptTextBlock\n | LegacyFieldRef\n | LegacyContextBlock\n | LegacyUserInputBlock\n\nexport interface LegacyInstruction {\n _key: string\n _type: typeof instructionTypeName\n prompt?: LegacyPromptBlock[]\n\n icon?: string\n userId?: string\n title?: string\n placeholder?: string\n}\n","import {SanityClient, SanityDocument, useClient} from 'sanity'\nimport {useCallback, useEffect, useState} from 'react'\nimport {Box, Button, Card, Dialog, Spinner, Stack, Text, useToast} from '@sanity/ui'\nimport {CheckmarkIcon} from '@sanity/icons'\nimport {\n LegacyAssistDocument,\n legacyAssistDocumentIdPrefix,\n legacyAssistDocumentTypeName,\n legacyAssistStatusDocumentTypeName,\n LegacyContextBlock,\n legacyContextDocumentTypeName,\n LegacyFieldRef,\n LegacyPromptBlock,\n LegacyPromptTextBlock,\n LegacyUserInputBlock,\n} from '../legacy-types'\nimport {assistDocumentId} from '../helpers/ids'\nimport {\n assistDocumentIdPrefix,\n assistDocumentTypeName,\n AssistField,\n assistFieldTypeName,\n contextDocumentTypeName,\n fieldReferenceTypeName,\n InlinePromptBlock,\n instructionContextTypeName,\n instructionTypeName,\n PromptBlock,\n userInputTypeName,\n} from '../types'\nimport {PortableTextSpan} from '@portabletext/types'\nimport {pluginTitle} from '../constants'\n\nconst NO_ASSIST_DOCS: LegacyAssistDocument[] = []\nconst NO_CONTEXT_DOCS: SanityDocument[] = []\nconst NO_IDS: string[] = []\n\ninterface MigratedContextDoc {\n _id: string\n _alphaId: string\n}\n\ntype Task = (subtaskProgress: (percentage: number) => void) => Promise<void>\n\nexport function AlphaMigration() {\n const [alphaAssistDocs, setAlphaAssistDocs] = useState(NO_ASSIST_DOCS)\n const [contextDocs, setContextDocs] = useState(NO_CONTEXT_DOCS)\n const [staleStatusDocIds, setStaleStatusDocs] = useState(NO_IDS)\n const [error, setError] = useState<Error | undefined>(undefined)\n const [progress, setProgress] = useState<number | undefined>(undefined)\n const toast = useToast()\n const client = useClient({apiVersion: '2023-06-01'})\n\n useEffect(() => {\n let canUpdate = true\n client\n .fetch<{\n assistDocs?: LegacyAssistDocument[]\n staleStatusDocIds?: string[]\n contextDocs?: SanityDocument[]\n }>(\n `\n {\n \"assistDocs\": *[_type==\"${legacyAssistDocumentTypeName}\"],\n \"staleStatusDocIds\": *[_type==\"${legacyAssistStatusDocumentTypeName}\"]._id,\n \"contextDocs\": *[_type==\"${legacyContextDocumentTypeName}\"],\n }\n `\n )\n .then((result) => {\n if (!canUpdate || !result) {\n return\n }\n setAlphaAssistDocs(result?.assistDocs ?? NO_ASSIST_DOCS)\n setStaleStatusDocs(result?.staleStatusDocIds ?? NO_IDS)\n setContextDocs(result?.contextDocs ?? NO_CONTEXT_DOCS)\n })\n return () => {\n canUpdate = false\n }\n }, [client, setAlphaAssistDocs, setStaleStatusDocs, setContextDocs])\n\n const convert = useCallback(async () => {\n try {\n setProgress(0.0001)\n\n const tasks: Task[] = [\n () => convertContextDocs(client, contextDocs),\n (subtaskProgress) => deleteDocs(client, staleStatusDocIds, subtaskProgress),\n (subtaskProgress) => convertDocs(client, alphaAssistDocs, subtaskProgress),\n (subtaskProgress) =>\n deleteDocs(\n client,\n contextDocs.map((d) => d._id),\n subtaskProgress\n ),\n ]\n\n const taskSize = 1 / tasks.length\n for (let i = 0; i < tasks.length; i++) {\n const startProgress = i / tasks.length\n await tasks[i]((subProgress) => setProgress(startProgress + subProgress * taskSize))\n setProgress((i + 1) / tasks.length)\n }\n\n setProgress(1)\n setAlphaAssistDocs(NO_ASSIST_DOCS)\n setContextDocs(NO_CONTEXT_DOCS)\n setStaleStatusDocs(NO_IDS)\n toast.push({\n title: `Converted instructions to new format.`,\n status: 'success',\n closable: true,\n })\n } catch (e: any) {\n console.error(e)\n toast.push({\n title: `An error occurred`,\n status: 'error',\n closable: true,\n })\n setError(e)\n setProgress(undefined)\n }\n }, [contextDocs, client, alphaAssistDocs, staleStatusDocIds, setProgress, toast])\n\n if (\n (alphaAssistDocs.length || staleStatusDocIds.length || contextDocs.length) &&\n (!progress || progress < 1)\n ) {\n return (\n <Dialog id=\"outdated-assist-docs\" header={pluginTitle}>\n <Card padding={3}>\n <Stack space={4} style={{maxWidth: 500}}>\n <Text size={1}>\n It seems like this workspace contains documents from an{' '}\n <strong>older version of {pluginTitle}</strong>.\n </Text>\n <Text size={1}>Cleanup is required.</Text>\n {error ? (\n <Card padding={2} tone=\"critical\" border>\n <Text size={1}>An error occurred. See console for details.</Text>{' '}\n </Card>\n ) : null}\n <Button\n icon={\n progress ? (\n <Box style={{marginTop: 5}}>\n <Spinner />\n </Box>\n ) : (\n CheckmarkIcon\n )\n }\n disabled={!!progress}\n text={progress ? `${Math.floor(progress * 100)}%` : 'Ok, convert to new format!'}\n tone=\"primary\"\n onClick={convert}\n />\n </Stack>\n </Card>\n </Dialog>\n )\n }\n\n return null\n}\n\nasync function deleteDocs(\n client: SanityClient,\n ids: string[],\n updateProgress: (percentage: number) => void\n) {\n const chunkSize = 50\n for (let i = 0; i < ids.length; i += chunkSize) {\n const progressCount = Math.min(ids.length, i + chunkSize)\n const chunk = ids.slice(i, progressCount)\n const trans = client.transaction()\n chunk.forEach((id) => trans.delete(id))\n await trans.commit()\n updateProgress(progressCount / ids.length)\n }\n}\n\nasync function convertContextDocs(client: SanityClient, docs: SanityDocument[]) {\n const trans = client.transaction()\n\n for (const doc of docs) {\n const {_id, _type, ...rest} = doc\n trans.createOrReplace({\n ...rest,\n _id: `port.${_id}`,\n _alphaId: _id,\n _type: contextDocumentTypeName,\n })\n }\n\n await trans.commit()\n}\n\nasync function convertDocs(\n client: SanityClient,\n docs: LegacyAssistDocument[],\n updateProgress: (percentage: number) => void\n) {\n const chunkSize = 10\n for (let i = 0; i < docs.length; i += chunkSize) {\n const progressCount = Math.min(docs.length, i + chunkSize)\n const chunk = docs.slice(i, progressCount)\n\n const trans = client.transaction()\n const contextDocs: MigratedContextDoc[] = await client.fetch(\n `*[_type==\"${contextDocumentTypeName}\" && _alphaId != null]{_id, _alphaId}`\n )\n\n chunk.forEach((oldDoc) => {\n const documentType = oldDoc._id.replace(\n new RegExp(`^(${legacyAssistDocumentIdPrefix}|${assistDocumentIdPrefix})`),\n ''\n )\n\n const id = assistDocumentId(documentType)\n\n const fields: AssistField[] = (oldDoc.fields ?? [])\n .filter((field) => field.instructions?.length)\n .map((oldField) => {\n const instructions = (oldField.instructions ?? []).map((inst) => {\n // eslint-disable-next-line max-nested-callbacks\n const prompt = (inst.prompt ?? []).map((block) => {\n return mapBlock(block, contextDocs) as PromptBlock\n })\n return {\n ...inst,\n _type: instructionTypeName,\n prompt,\n }\n })\n return {\n ...oldField,\n _type: assistFieldTypeName,\n instructions,\n }\n })\n\n if (fields.length) {\n trans.createOrReplace({\n _id: id,\n _type: assistDocumentTypeName,\n fields,\n })\n }\n trans.delete(oldDoc._id)\n })\n await trans.commit()\n updateProgress(progressCount / docs.length)\n }\n}\n\ntype Blocks = LegacyPromptBlock | LegacyPromptTextBlock | PortableTextSpan\n\nfunction isFieldRef(block: Blocks): block is LegacyFieldRef {\n return block._type === 'sanity.ai.prompt.fieldRef'\n}\n\nfunction isContext(block: Blocks): block is LegacyContextBlock {\n return block._type === 'sanity.ai.prompt.context'\n}\n\nfunction isUserInput(block: Blocks): block is LegacyUserInputBlock {\n return block._type === 'sanity.ai.prompt.userInput'\n}\n\nfunction isSpan(block: Blocks): block is PortableTextSpan {\n return block._type === 'span'\n}\n\nfunction mapBlock(\n block: Blocks,\n migratedContexts: MigratedContextDoc[]\n): PromptBlock | InlinePromptBlock {\n if (isFieldRef(block)) {\n return {...block, _type: fieldReferenceTypeName}\n }\n if (isUserInput(block)) {\n return {...block, _type: userInputTypeName}\n }\n if (isContext(block)) {\n const newBlock = {\n ...block,\n _type: instructionContextTypeName,\n reference: {\n _type: 'reference',\n _ref:\n migratedContexts.find((c) => c._alphaId === block.reference?._ref)?._id ??\n block.reference?._ref,\n },\n } as const\n return newBlock\n }\n if (isSpan(block)) {\n return block\n }\n const textBlock = block\n return {\n ...textBlock,\n children: (textBlock.children ?? []).map(\n (child) => mapBlock(child, migratedContexts) as InlinePromptBlock\n ),\n }\n}\n","import {useState} from 'react'\nimport {LayoutProps} from 'sanity'\nimport {Connector, ConnectorsProvider} from '../_lib/connector'\nimport {AssistConnectorsOverlay} from '../assistConnectors'\nimport {AssistPluginConfig} from '../plugin'\nimport {AiAssistanceConfigProvider} from './AiAssistanceConfigContext'\nimport {RunInstructionRequest} from '../useApiClient'\nimport {StudioInstruction} from '../types'\nimport {RunInstructionProvider} from './RunInstructionProvider'\nimport {ThemeProvider} from '@sanity/ui'\nimport {AlphaMigration} from './AlphaMigration'\n\nexport interface AIStudioLayoutProps extends LayoutProps {\n config: AssistPluginConfig\n}\n\nexport type RunInstructionArgs = Omit<RunInstructionRequest, 'instructionKey' | 'userText'> & {\n instruction: StudioInstruction\n}\n\nexport function AssistLayout(props: AIStudioLayoutProps) {\n const [connectors, setConnectors] = useState<Connector[]>([])\n const migrate = props.config.alphaMigration ?? true\n\n return (\n <AiAssistanceConfigProvider config={props.config}>\n {migrate ? <AlphaMigration /> : null}\n <RunInstructionProvider>\n <ConnectorsProvider onConnectorsChange={setConnectors}>\n {props.renderDefault(props)}\n <ThemeProvider tone=\"default\">\n <AssistConnectorsOverlay connectors={connectors} />\n </ThemeProvider>\n </ConnectorsProvider>\n </RunInstructionProvider>\n </AiAssistanceConfigProvider>\n )\n}\n","import {InputProps, isArraySchemaType, PatchEvent, unset} from 'sanity'\nimport {ErrorInfo, PropsWithChildren, useCallback, useMemo, useState} from 'react'\nimport {Box, Button, Card, ErrorBoundary, Flex, Stack, Text} from '@sanity/ui'\nimport {isPortableTextArray} from '../helpers/typeUtils'\nimport styled from 'styled-components'\n\nconst WrapPreCard = styled(Card)`\n & pre {\n white-space: pre-wrap !important;\n }\n`\n\nexport function SafeValueInput(props: InputProps) {\n return (\n <ErrorWrapper onChange={props.onChange}>\n <PteValueFixer {...props} />\n </ErrorWrapper>\n )\n}\n\nexport function ErrorWrapper(\n props: PropsWithChildren<{onChange: (patchEvent: PatchEvent) => void}>\n) {\n const {onChange} = props\n const [error, setError] = useState<Error | undefined>()\n\n const catchError = useCallback(\n (params: {error: Error; info: ErrorInfo}) => {\n setError(params.error)\n },\n [setError]\n )\n\n const unsetValue = useCallback(() => onChange(PatchEvent.from(unset())), [onChange])\n const dismiss = useCallback(() => setError(undefined), [])\n const catcher = <ErrorBoundary onCatch={catchError}>{props.children}</ErrorBoundary>\n\n return error ? (\n <Card border tone=\"critical\" padding={2} contentEditable={false}>\n <Stack space={3}>\n <Text muted weight=\"semibold\">\n An error occurred.\n </Text>\n\n <WrapPreCard flex={1} padding={2} tone=\"critical\" border>\n {catcher}\n </WrapPreCard>\n\n <Flex width=\"fill\" flex={1} gap={3}>\n <Box flex={1}>\n <Button text=\"Dismiss\" onClick={dismiss} tone=\"primary\" />\n </Box>\n <Button text=\"Unset value\" onClick={unsetValue} tone=\"critical\" />\n </Flex>\n </Stack>\n </Card>\n ) : (\n catcher\n )\n}\n\nfunction PteValueFixer(props: InputProps) {\n const isPortableText = useMemo(\n () => isArraySchemaType(props.schemaType) && isPortableTextArray(props.schemaType),\n [props.schemaType]\n )\n const value = props.value\n if (isPortableText && value && !(value as any[]).length) {\n return props.renderDefault({...props, value: undefined})\n }\n\n return props.renderDefault(props)\n}\n","import {BlockProps, PatchEvent, useFormCallbacks} from 'sanity'\nimport {useAssistPresence} from '../presence/useAssistPresence'\nimport {Box, Flex} from '@sanity/ui'\nimport {ErrorWrapper} from '../components/SafeValueInput'\nimport {useCallback} from 'react'\nimport {AiFieldPresence} from '../presence/AiFieldPresence'\n\nexport function AssistFormBlock(props: BlockProps) {\n const presence = useAssistPresence(props.path, true)\n const {onChange} = useFormCallbacks()\n const key = props.value._key\n const localOnChange = useCallback(\n (patchEvent: PatchEvent) => {\n if (!key) {\n return\n }\n onChange(PatchEvent.from(patchEvent).prefixAll({_key: key}))\n },\n [onChange, key]\n )\n return (\n <ErrorWrapper onChange={localOnChange}>\n <Flex align=\"center\" justify=\"space-between\">\n <Box flex={1}>{props.renderDefault(props)}</Box>\n {presence.map((pre) => (\n <AiFieldPresence key={pre.lastActiveAt} presence={pre} />\n ))}\n </Flex>\n </ErrorWrapper>\n )\n}\n","import {ItemProps} from 'sanity'\nimport {useAssistPresence} from '../presence/useAssistPresence'\nimport {Box, Flex} from '@sanity/ui'\nimport {AiFieldPresence} from '../presence/AiFieldPresence'\n\nexport function AssistItem(props: ItemProps) {\n const {path} = props\n const presence = useAssistPresence(path, true)\n\n return (\n <Flex align=\"center\" width=\"fill\" style={{position: 'relative'}}>\n <Box flex={1}>{props.renderDefault({...props})}</Box>\n {presence.map((pre) => (\n <Box key={pre.user.id} style={{position: 'absolute', right: 35}}>\n <AiFieldPresence presence={pre} />\n </Box>\n ))}\n </Flex>\n )\n}\n","import {ArrowLeftIcon} from '@sanity/icons'\nimport {Button} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {instructionParam} from '../../../types'\nimport {useDocumentPane} from 'sanity/desk'\nimport {aiInspectorId} from '../../../assistInspector/constants'\n\nexport function BackToInstructionListLink() {\n const {openInspector} = useDocumentPane()\n\n const goBack = useCallback(\n () => openInspector(aiInspectorId, {[instructionParam]: undefined as any}),\n [openInspector]\n )\n\n return (\n <div>\n <Button\n as=\"a\"\n fontSize={1}\n icon={ArrowLeftIcon}\n mode=\"bleed\"\n padding={1}\n space={2}\n onClick={goBack}\n text=\" Instructions\"\n textAlign=\"left\"\n />\n </div>\n )\n}\n","import {\n assistFieldTypeName,\n AssistInspectorRouteParams,\n AssistDocument,\n documentRootKey,\n fieldPathParam,\n AssistField,\n instructionParam,\n} from '../../types'\nimport {useEffect, useMemo, useRef} from 'react'\nimport {\n FormCallbacksProvider,\n FormCallbacksValue,\n FormInput,\n insert,\n KeyedSegment,\n ObjectInputProps,\n ObjectSchemaType,\n Path,\n SchemaType,\n set,\n setIfMissing,\n stringToPath,\n typed,\n useFormCallbacks,\n useSchema,\n} from 'sanity'\nimport {BackToInstructionListLink} from './instruction/BackToInstructionsLink'\nimport {useAiPaneRouter} from '../../assistInspector/helpers'\nimport {SelectedFieldContextProvider, SelectedFieldContextValue} from './SelectedFieldContext'\nimport {Stack} from '@sanity/ui'\nimport {documentTypeFromAiDocumentId} from '../../helpers/ids'\n\nconst EMPTY_FIELDS: AssistField[] = []\n\nexport function AssistDocumentForm(props: ObjectInputProps) {\n const {onChange} = props\n const value = props.value as AssistDocument | undefined\n const id = value?._id\n const fields = value?.fields\n\n const targetDocumentType = useMemo(() => {\n if (!id) {\n return undefined\n }\n return documentTypeFromAiDocumentId(id)\n }, [id])\n\n const {params, setParams} = useAiPaneRouter()\n const pathKey = params[fieldPathParam]\n const instruction = params[instructionParam]\n\n const activeKey = useMemo(\n () => (fields ?? EMPTY_FIELDS).find((f) => f.path === pathKey)?._key,\n [fields, pathKey]\n )\n\n const activePath: Path | undefined = useMemo(() => {\n if (!activeKey) {\n return undefined\n }\n const base = ['fields', {_key: activeKey}]\n return instruction ? [...base, 'instructions', {_key: instruction}] : base\n }, [activeKey, instruction])\n\n const schema = useSchema()\n const documentSchema: ObjectSchemaType | undefined = useMemo(() => {\n if (!targetDocumentType) {\n return undefined\n }\n return schema.get(targetDocumentType) as ObjectSchemaType\n }, [schema, targetDocumentType])\n\n const fieldSchema = useSelectedSchema(pathKey, documentSchema)\n const context: SelectedFieldContextValue = useMemo(\n () => ({\n documentSchema,\n fieldSchema: fieldSchema ?? documentSchema,\n }),\n [fieldSchema, documentSchema]\n )\n\n const title = value?.title\n\n useEffect(() => {\n if (!title && documentSchema && !id?.startsWith('drafts.')) {\n onChange(set(documentSchema.title ?? documentSchema.name, ['title']))\n }\n }, [title, documentSchema, onChange, id])\n\n const fieldExists = !!fields?.some((f) => f._key === pathKey)\n\n const {onPathOpen, ...formCallbacks} = useFormCallbacks()\n\n const newCallbacks: FormCallbacksValue = useMemo(\n () => ({\n ...formCallbacks,\n onPathOpen: (path) => {\n if (!instruction && path.length === 4 && path[2] === 'instructions') {\n setParams(\n typed<AssistInspectorRouteParams>({\n ...params,\n [instructionParam]: (path[3] as KeyedSegment)?._key,\n }) as Record<keyof AssistInspectorRouteParams, string | undefined>\n )\n onPathOpen([])\n } else {\n setTimeout(() => onPathOpen(path), 0)\n }\n },\n }),\n [formCallbacks, onPathOpen, params, setParams, instruction]\n )\n\n useEffect(() => {\n if (activePath && !instruction) {\n onPathOpen([])\n }\n }, [activePath, instruction, onPathOpen])\n\n return (\n <SelectedFieldContextProvider value={context}>\n <Stack space={5}>\n <FieldsInitializer\n key={pathKey}\n pathKey={pathKey}\n activePath={activePath}\n fieldExists={fieldExists}\n onChange={onChange}\n />\n {instruction && <BackToInstructionListLink />}\n\n {activePath && (\n <FormCallbacksProvider {...newCallbacks}>\n <div style={{lineHeight: '1.25em'}}>\n <FormInput {...props} absolutePath={activePath} />\n </div>\n </FormCallbacksProvider>\n )}\n\n {!activePath && props.renderDefault(props)}\n </Stack>\n </SelectedFieldContextProvider>\n )\n}\n\nfunction useSelectedSchema(\n fieldPath: string | undefined,\n documentSchema: ObjectSchemaType | undefined\n): SchemaType | undefined {\n return useMemo(() => {\n if (!fieldPath) {\n return undefined\n }\n if (fieldPath === documentRootKey) {\n return documentSchema\n }\n\n const path = stringToPath(fieldPath)\n let currentSchema: ObjectSchemaType | undefined = documentSchema\n for (let i = 0; i < path.length; i++) {\n const segment = path[i]\n const field = currentSchema?.fields.find((f) => f.name === segment)\n if (!field) {\n return undefined\n }\n if (i === path.length - 1) {\n return field.type\n }\n if (field.type.jsonType !== 'object') {\n return undefined\n }\n currentSchema = field.type\n }\n return currentSchema\n }, [documentSchema, fieldPath])\n}\n\nfunction FieldsInitializer({\n pathKey,\n activePath,\n fieldExists,\n onChange,\n}: {\n pathKey?: string\n activePath?: Path\n fieldExists: boolean\n onChange: ObjectInputProps['onChange']\n}) {\n // need this to not fire onChange twice in React strict mode\n const initialized = useRef(false)\n useEffect(() => {\n if (initialized.current || fieldExists || activePath || !pathKey) {\n return\n }\n onChange([\n setIfMissing([], ['fields']),\n insert(\n [\n typed<AssistField>({\n _key: pathKey,\n _type: assistFieldTypeName,\n path: pathKey,\n }),\n ],\n 'after',\n ['fields', -1]\n ),\n ])\n initialized.current = true\n }, [activePath, onChange, pathKey, fieldExists])\n\n return null\n}\n","import {FieldError, FieldMember, FieldSetMember, ObjectMember} from 'sanity'\n\nexport function findFieldMember(\n members: ObjectMember[],\n fieldName: string\n): FieldMember | FieldError | undefined {\n return members.find(\n (m): m is FieldMember | FieldError =>\n (m.kind === 'field' && m.name === fieldName) ||\n (m.kind === 'error' && m.fieldName === fieldName)\n )\n}\n\nexport function findFieldsetMember(\n members: ObjectMember[],\n fieldsetName: string\n): FieldSetMember | undefined {\n return members.find(\n (m): m is FieldSetMember => m.kind === 'fieldSet' && m.fieldSet.name === fieldsetName\n )\n}\n","import {FieldError, FieldMember, ObjectInputMember, ObjectInputProps} from 'sanity'\nimport {findFieldMember, findFieldsetMember} from '../helpers'\nimport {Box, Flex, Stack, Text} from '@sanity/ui'\nimport {useId, useMemo} from 'react'\n\nexport function InstructionInput(props: ObjectInputProps) {\n return (\n <Stack space={[4, 4, 4, 5]}>\n <NameField {...props} />\n <ShareField {...props} />\n <PromptField {...props} />\n </Stack>\n )\n}\n\nfunction PromptField(props: ObjectInputProps) {\n const promptMember = findFieldMember(props.members, 'prompt')\n return promptMember ? <ObjectInputMember {...props} member={promptMember} /> : null\n}\n\nconst NONE: (FieldMember | FieldError)[] = []\n\nfunction NameField(props: ObjectInputProps) {\n const fieldsetMember = findFieldsetMember(props.members, 'appearance')\n const titleId = useId()\n\n const members = fieldsetMember?.fieldSet.members ?? NONE\n const iconMember = findFieldMember(members, 'icon')\n const titleMember = findFieldMember(members, 'title')\n\n const titlePlaceholder = 'Untitled'\n const moddedTitleMember = useMemo(() => {\n if (!titleMember) {\n return undefined\n }\n if (titleMember.kind === 'error') {\n return titleMember\n }\n return {\n ...titleMember,\n field: {\n ...titleMember?.field,\n schemaType: {\n ...titleMember?.field.schemaType,\n placeholder: titlePlaceholder,\n },\n },\n }\n }, [titleMember, titlePlaceholder])\n\n return (\n <Stack space={5}>\n <Stack space={2}>\n <Flex gap={1}>\n <Text as=\"label\" weight=\"semibold\" size={1} htmlFor={titleId}>\n Name\n </Text>\n </Flex>\n\n <Text muted size={1}>\n How this instruction appears in menus\n </Text>\n\n <Flex align=\"center\">\n {iconMember && (\n <Box flex=\"none\">\n <ObjectInputMember {...props} member={iconMember} />\n </Box>\n )}\n {moddedTitleMember && (\n <Box flex={1} style={{marginLeft: -1}}>\n <ObjectInputMember {...props} member={moddedTitleMember} />\n </Box>\n )}\n </Flex>\n </Stack>\n </Stack>\n )\n}\n\nfunction ShareField(props: ObjectInputProps) {\n const fieldsetMember = findFieldsetMember(props.members, 'appearance')\n const members = fieldsetMember?.fieldSet.members ?? NONE\n const visibilityMember = findFieldMember(members, 'userId')\n\n return <>{visibilityMember && <ObjectInputMember {...props} member={visibilityMember} />}</>\n}\n","import {FieldProps} from 'sanity'\n\nexport function HiddenFieldTitle(props: FieldProps) {\n return props.renderDefault({...props, title: '', level: props.level - 2, changed: false})\n}\n","import {set, StringInputProps, unset, useCurrentUser} from 'sanity'\nimport {Card, Flex, Switch, Text} from '@sanity/ui'\nimport {useCallback, useId} from 'react'\n\nexport function InstructionVisibility(props: StringInputProps) {\n const {value, onChange} = props\n\n const user = useCurrentUser()\n\n const handleChange = useCallback(() => {\n const newValue = value ? '' : user?.id ?? ''\n onChange(newValue ? set(newValue) : unset())\n }, [onChange, user, value])\n\n const id = useId()\n\n return (\n <Card>\n <Flex gap={2} align=\"flex-start\">\n <div style={{margin: '-3px 0'}}>\n <Switch\n {...props.elementProps}\n id={id}\n value={`${!value}`}\n checked={!value}\n onChange={handleChange}\n disabled={props.elementProps.readOnly}\n />\n </div>\n\n <Text muted size={1} weight=\"medium\">\n <label htmlFor={id}>Make visible to all Studio members</label>\n </Text>\n </Flex>\n </Card>\n )\n}\n","import {icons} from '@sanity/icons'\nimport {set, StringInputProps} from 'sanity'\nimport {Button, Menu, MenuButton, MenuItem} from '@sanity/ui'\nimport {ElementType, ReactNode, useCallback, useId, useMemo} from 'react'\n\nexport function IconInput(props: StringInputProps) {\n const {value, onChange} = props\n const id = useId()\n const items = useMemo(\n () =>\n Object.entries(icons).map(([key, icon]) => (\n <IconItem key={key} iconKey={key} icon={icon} onChange={onChange} />\n )),\n [onChange]\n )\n\n const selectedIcon = useMemo(() => getIcon(value), [value])\n\n return (\n <MenuButton\n button={\n <Button icon={selectedIcon} title=\"Select icon\" padding={3} mode=\"ghost\" radius={1} />\n }\n id={id}\n menu={<Menu style={{maxHeight: 300}}>{items}</Menu>}\n popover={{portal: true}}\n />\n )\n}\n\nfunction IconItem({\n icon,\n iconKey: key,\n onChange,\n}: {\n iconKey: string\n icon: ElementType | ReactNode\n onChange: StringInputProps['onChange']\n}) {\n const onClick = useCallback(() => onChange(set(key)), [onChange, key])\n return <MenuItem icon={icon} title={key} text={key} onClick={onClick} />\n}\n\nexport function getIcon(iconName?: string) {\n return Object.entries(icons).find(([key]) => key === iconName)?.[1] ?? icons.sparkles\n}\n","import {SearchIcon} from '@sanity/icons'\nimport {Autocomplete, Box, Breadcrumbs, Card, Flex, Text} from '@sanity/ui'\nimport {createElement, useCallback, useMemo} from 'react'\nimport {FieldRef, getFieldRefs, getFieldRefsWithDocument} from './helpers'\nimport {ObjectSchemaType} from 'sanity'\nimport {isType} from '../helpers/typeUtils'\n\ninterface FieldSelectorProps {\n id: string\n schemaType: ObjectSchemaType\n fieldPath?: string\n onSelect: (path: string) => void\n includeDocument?: boolean\n}\n\nexport function FieldAutocomplete(props: FieldSelectorProps) {\n const {id, schemaType, fieldPath, onSelect, includeDocument} = props\n\n const fieldNames = useMemo(() => {\n if (includeDocument) {\n return getFieldRefsWithDocument(schemaType)\n }\n return getFieldRefs(schemaType)\n }, [schemaType, includeDocument])\n const currentField = useMemo(\n () => fieldNames.find((f) => f.key === fieldPath),\n [fieldPath, fieldNames]\n )\n\n const autocompleteOptions = useMemo(\n () => fieldNames.map((field) => ({value: field.key, field})),\n [fieldNames]\n )\n\n const renderOption = useCallback((option: {value: string; field: FieldRef}) => {\n const {value, field} = option\n\n if (!value) {\n return (\n <Card as=\"button\" padding={3} radius={1}>\n <Text accent size={1}>\n {option.value}\n </Text>\n </Card>\n )\n }\n\n if (isType(field.schemaType, 'document')) {\n return (\n <Card as=\"button\" padding={3} radius={1}>\n <Text size={1} weight=\"semibold\">\n The entire document\n </Text>\n </Card>\n )\n }\n\n const splitTitle = field.title.split('/')\n return (\n <Card as=\"button\" padding={3} radius={1}>\n <Flex gap={3}>\n <Text size={1}>{createElement(field.icon)}</Text>\n\n <Box flex=\"none\">\n <Breadcrumbs\n separator={\n <Text muted size={1}>\n /\n </Text>\n }\n space={1}\n >\n {splitTitle.slice(0, splitTitle.length - 1).map((pt, i) => (\n // eslint-disable-next-line react/no-array-index-key\n <Text key={i} muted size={1}>\n {pt.trim()}\n </Text>\n ))}\n\n <Text size={1} weight=\"medium\">\n {splitTitle[splitTitle.length - 1]}\n </Text>\n </Breadcrumbs>\n </Box>\n </Flex>\n </Card>\n )\n }, [])\n\n const renderValue = useCallback((value: string, option?: {value: string; field: FieldRef}) => {\n return option?.field.title ?? value\n }, [])\n\n const filterOption = useCallback((query: string, option: {value: string; field: FieldRef}) => {\n const lQuery = query.toLowerCase()\n return (\n option?.value?.toLowerCase().includes(lQuery) ||\n option?.field?.title?.toLowerCase().includes(lQuery)\n )\n }, [])\n\n // const id = useId()\n return (\n <Autocomplete\n fontSize={1}\n icon={currentField ? currentField.icon : SearchIcon}\n onChange={onSelect}\n openButton\n id={id}\n options={autocompleteOptions}\n placeholder=\"Search for a field\"\n radius={2}\n renderOption={renderOption}\n renderValue={renderValue}\n value={currentField?.key}\n filterOption={filterOption}\n />\n )\n}\n","import {set, StringInputProps} from 'sanity'\nimport {useCallback, useContext, useEffect, useId, useRef} from 'react'\nimport {Box} from '@sanity/ui'\nimport {SelectedFieldContext} from '../SelectedFieldContext'\nimport {FieldAutocomplete} from '../../../assistInspector/FieldAutocomplete'\n\nexport function FieldRefPathInput(props: StringInputProps) {\n const documentSchema = useContext(SelectedFieldContext)?.documentSchema\n const ref = useRef<HTMLDivElement>(null)\n const id = useId()\n const {onChange} = props\n\n useEffect(() => {\n ref.current?.querySelector('input')?.focus()\n }, [])\n\n const onSelect = useCallback((path: string) => onChange(set(path)), [onChange])\n\n if (!documentSchema) {\n return props.renderDefault(props)\n }\n\n return (\n <Box flex={1} style={{minWidth: 200}} ref={ref}>\n <FieldAutocomplete\n id={id}\n schemaType={documentSchema}\n onSelect={onSelect}\n fieldPath={props.value}\n />\n </Box>\n )\n}\n","import {ArrayOfObjectsInputProps, useCurrentUser} from 'sanity'\nimport {useMemo} from 'react'\nimport {StudioInstruction} from '../../types'\n\nexport function InstructionsArrayInput(props: ArrayOfObjectsInputProps) {\n const user = useCurrentUser()\n\n const originalValue = props.value as StudioInstruction[] | undefined\n const originalMembers = props.members\n const value = useMemo(\n () => (originalValue ?? []).filter((v) => !v.userId || v.userId === user?.id),\n [originalValue, user]\n )\n const members = useMemo(\n () =>\n (originalMembers ?? []).filter((v) => {\n if (v.kind === 'error') {\n return true\n }\n const value = v?.item?.value as any\n return !value.userId || value.userId === user?.id\n }),\n [originalMembers, user]\n )\n return props.renderDefault({...props, value, members})\n}\n","import {BlockProps} from 'sanity'\nimport {Box} from '@sanity/ui'\nimport {createContext} from 'react'\n\n// workaround for preview value sometimes lagging behind\nexport const InlineBlockValueContext = createContext<unknown>(undefined)\n\nexport function AssistInlineFormBlock(props: BlockProps) {\n return (\n <InlineBlockValueContext.Provider value={props.value}>\n <Box flex={1}>{props.renderDefault(props)}</Box>\n </InlineBlockValueContext.Provider>\n )\n}\n","import {useContext} from 'react'\nimport {useSelectedField} from '../../assistInspector/helpers'\nimport {Box, Flex, Text} from '@sanity/ui'\nimport {PreviewProps} from 'sanity'\nimport {SelectedFieldContext} from './SelectedFieldContext'\nimport {InlineBlockValueContext} from '../../assistFormComponents/AssistInlineFormBlock'\n\nexport function FieldRefPreview(props: PreviewProps & {path?: string}) {\n const documentSchema = useContext(SelectedFieldContext)?.documentSchema\n const path = (useContext(InlineBlockValueContext) as {path?: string})?.path ?? props.path\n const selectedField = useSelectedField(documentSchema, path)\n return (\n <Flex gap={2} align=\"center\" style={{width: '100%'}}>\n <Flex flex={1} gap={2} align=\"center\" paddingY={3} paddingX={1}>\n {/*<Box>\n <Text>{selectedField?.icon ? createElement(selectedField?.icon) : <CodeIcon />}</Text>\n </Box>*/}\n <Box>\n <Text size={1} textOverflow=\"ellipsis\">\n {selectedField?.title ?? 'Select field'}\n </Text>\n </Box>\n </Flex>\n <>{props.actions}</>\n </Flex>\n )\n}\n","import {ObjectInputProps} from 'sanity'\nimport {Box} from '@sanity/ui'\nimport {useEffect, useRef} from 'react'\n\nexport function HideReferenceChangedBannerInput(props: ObjectInputProps) {\n const ref = useRef<HTMLDivElement>(null)\n\n // hides \"reference was changed\" banner (it is incorrectly flashing because the pane handler does not support the way wie use the assist pane)\n useEffect(() => {\n const parent = ref.current?.closest('[data-testid=\"pane-content\"]')\n if (!parent) {\n return\n }\n const style = document.createElement('style')\n const parentId = `id-${Math.random()}`.replace('.', '-')\n parent.id = parentId\n\n style.innerText = `\n #${parentId} [data-testid=\"reference-changed-banner\"] { display: none; }\n `\n parent.prepend(style)\n }, [ref])\n\n return <Box ref={ref}>{props.renderDefault(props)}</Box>\n}\n","import {defineArrayMember, defineField, defineType} from 'sanity'\nimport {contextDocumentTypeName} from '../types'\nimport {DocumentTextIcon, TokenIcon} from '@sanity/icons'\nimport {HideReferenceChangedBannerInput} from '../components/HideReferenceChangedBannerInput'\n\nexport const contextDocumentSchema = defineType({\n type: 'document',\n name: contextDocumentTypeName,\n title: 'AI context',\n liveEdit: true,\n icon: TokenIcon,\n components: {\n input: HideReferenceChangedBannerInput,\n },\n fields: [\n defineField({\n type: 'string',\n name: 'title',\n title: 'Title',\n }),\n defineField({\n name: 'context',\n type: 'array',\n title: 'Context',\n of: [\n defineArrayMember({\n type: 'block',\n styles: [{title: 'Normal', value: 'normal'}],\n lists: [],\n marks: {\n decorators: [],\n annotations: [],\n },\n }),\n ],\n }),\n ],\n preview: {\n select: {\n title: 'title',\n context: 'context',\n },\n prepare({title, context}) {\n const text = context\n ?.flatMap((block: any) => block?.children)\n .flatMap((child: any) => child?.text?.split(' '))\n .filter(Boolean)\n const words = text?.length ?? 0\n return {\n title,\n subtitle: `Words: ${words}`,\n media: DocumentTextIcon,\n }\n },\n },\n})\n","// Strict ESM env, designed to run outside Node.js in envs that provide WebCrypto (deno, browsers, etc)\n\nexport default function getRandomValues(typedArray) {\n return window.crypto.getRandomValues(typedArray)\n}\n","import getRandomValues from 'get-random-values-esm'\n\n// WHATWG crypto RNG - https://w3c.github.io/webcrypto/Overview.html\nfunction whatwgRNG(length = 16) {\n const rnds8 = new Uint8Array(length)\n getRandomValues(rnds8)\n return rnds8\n}\n\nconst getByteHexTable = (() => {\n let table: string[]\n return () => {\n if (table) {\n return table\n }\n table = []\n for (let i = 0; i < 256; ++i) {\n table[i] = (i + 0x100).toString(16).substring(1)\n }\n return table\n }\n})()\n\nexport function randomKey(length?: number) {\n const table = getByteHexTable()\n return whatwgRNG(length)\n .reduce((str, n) => str + table[n], '')\n .slice(0, length)\n}\n","import {ArrayOfObjectsInputProps, set, typed} from 'sanity'\nimport {Box} from '@sanity/ui'\nimport styled from 'styled-components'\nimport {useEffect} from 'react'\nimport {ContextBlock, FieldRef, PromptBlock, PromptTextBlock, UserInputBlock} from '../../../types'\nimport {randomKey} from '../../../_lib/randomKey'\n\nconst PteMods = styled(Box)`\n & [data-testid='pt-editor__toolbar-card'] > div > div:last-child {\n display: none;\n }\n & [data-testid='pt-editor'] {\n min-height: 300px;\n }\n & [data-testid='pt-editor'] .pt-inline-object * {\n max-width: 400px;\n }\n`\n\nexport function PromptInput(props: ArrayOfObjectsInputProps) {\n // quickfixes the model (converts blocks to inline blocks for alpha customers)\n // backend supports both types, but this prevents \"missing block\" schema errors\n useOnlyInlineBlocks(props)\n return <PteMods>{props.renderDefault(props)}</PteMods>\n}\n\nfunction useOnlyInlineBlocks(props: ArrayOfObjectsInputProps) {\n useEffect(() => {\n let needsFix = false\n const val = ((props.value as PromptBlock[]) ?? []).map((block) => {\n if (block._type === 'block') {\n return block\n }\n\n needsFix = true\n return typed<PromptTextBlock>({\n _key: randomKey(12),\n _type: 'block',\n level: 0,\n markDefs: [],\n style: 'normal',\n children: [block as FieldRef | ContextBlock | UserInputBlock],\n })\n })\n\n if (needsFix) {\n props.onChange(set(val))\n }\n // only run this once when loading the field\n // eslint-disable-next-line\n }, [])\n}\n","import {ArrayFieldProps} from 'sanity'\n\nexport function InstructionsArrayField(props: ArrayFieldProps) {\n return props.renderDefault({\n ...props,\n title: undefined,\n })\n}\n","import {defineArrayMember, defineField, defineType, ObjectSchemaType} from 'sanity'\nimport {\n ArrowRightIcon,\n CodeIcon,\n ComposeIcon,\n icons,\n IconSymbol,\n LockIcon,\n SparklesIcon,\n ThListIcon,\n} from '@sanity/icons'\nimport {\n assistDocumentIdPrefix,\n assistDocumentTypeName,\n assistFieldTypeName,\n assistTasksStatusTypeName,\n fieldReferenceTypeName,\n instructionContextTypeName,\n instructionTaskTypeName,\n instructionTypeName,\n promptTypeName,\n userInputTypeName,\n} from '../types'\nimport {Box, Flex, Stack, Text, Tooltip} from '@sanity/ui'\nimport {getInstructionTitle} from '../helpers/misc'\nimport {AssistDocumentForm} from '../assistDocument/components/AssistDocumentForm'\nimport {InstructionInput} from '../assistDocument/components/instruction/InstructionInput'\nimport {HiddenFieldTitle} from '../assistDocument/components/generic/HiddenFieldTitle'\nimport {InstructionVisibility} from '../assistDocument/components/instruction/appearance/InstructionVisibility'\nimport {IconInput} from '../assistDocument/components/instruction/appearance/IconInput'\nimport {FieldRefPathInput} from '../assistDocument/components/instruction/FieldRefInput'\nimport {InstructionsArrayInput} from '../assistDocument/components/InstructionsArrayInput'\nimport {FieldRefPreview} from '../assistDocument/components/FieldRefPreview'\nimport {createElement} from 'react'\nimport {contextDocumentSchema} from './contextDocumentSchema'\nimport {PromptInput} from '../assistDocument/components/instruction/PromptInput'\nimport {instructionGuideUrl} from '../constants'\nimport {InstructionsArrayField} from '../assistDocument/components/InstructionsArrayField'\nimport {getFieldRefsWithDocument} from '../assistInspector/helpers'\n\nexport const fieldReference = defineType({\n type: 'object',\n name: fieldReferenceTypeName,\n title: 'Document field',\n icon: ThListIcon,\n\n fields: [\n defineField({\n type: 'string',\n name: 'path',\n title: 'Field',\n components: {\n input: FieldRefPathInput,\n },\n validation: (rule) =>\n rule.custom((value, context) => {\n if (!value) {\n return 'Please select a field'\n }\n try {\n const docId = context.document?._id\n if (!docId) {\n return `Field reference cannot be used outside document inspector context. Could not resolve document id.`\n }\n const targetDocType = docId.replace(new RegExp(`^${assistDocumentIdPrefix}`), '')\n const schema = context.schema.get(targetDocType)\n if (!schema) {\n return `Field reference cannot be used outside document inspector context. Could not resolve schema: ${targetDocType}`\n }\n const refs = getFieldRefsWithDocument(schema as ObjectSchemaType)\n const fieldRef = refs.find((r) => r.key === value)\n if (!fieldRef) {\n return `Field with path \"${value}\" does not exist in the schema.`\n }\n return true\n } catch (e) {\n console.error('Failed to resolve field reference', e)\n return 'Invalid field reference.'\n }\n }),\n }),\n ],\n preview: {\n select: {\n path: 'path',\n },\n prepare({path}) {\n return {\n title: path,\n path,\n icon: CodeIcon,\n }\n },\n },\n components: {\n preview: FieldRefPreview,\n },\n options: {\n modal: {\n type: 'popover',\n },\n },\n})\n\nexport const userInput = defineType({\n type: 'object',\n name: userInputTypeName,\n title: 'User input',\n icon: ComposeIcon,\n fields: [\n defineField({\n type: 'string',\n name: 'message',\n title: 'User input title',\n placeholder: 'Provide instruction text',\n description: 'The header above the user input text field',\n validation: (rule) => rule.required(),\n }),\n defineField({\n type: 'text',\n rows: 3,\n name: 'description',\n title: 'User input description',\n description: 'The description above the user input text field',\n }),\n ],\n preview: {\n select: {\n title: 'message',\n },\n },\n options: {\n modal: {\n type: 'popover',\n width: 1,\n },\n },\n})\n\nexport const promptContext = defineType({\n type: 'object',\n name: instructionContextTypeName,\n title: contextDocumentSchema.title,\n icon: contextDocumentSchema.icon,\n fields: [\n defineField({\n type: 'reference',\n name: 'reference',\n to: [{type: contextDocumentSchema.name}],\n title: 'Context',\n description: 'The referenced context will be inserted into the instruction',\n validation: (rule) => rule.required(),\n components: {\n input: function Fix(props) {\n return <Box style={{maxWidth: 300}}>{props.renderDefault(props)}</Box>\n },\n },\n }),\n ],\n preview: {\n select: {\n ref: 'reference._ref',\n title: 'reference.title',\n context: 'reference.context',\n },\n prepare(select) {\n return select.ref\n ? contextDocumentSchema?.preview?.prepare?.(select) ?? select\n : {title: 'No reference selected', media: contextDocumentSchema.icon}\n },\n },\n options: {\n modal: {\n type: 'popover',\n width: 'auto',\n },\n },\n})\n\nexport const prompt = defineType({\n type: 'array',\n name: promptTypeName,\n title: 'Prompt',\n of: [\n defineArrayMember({\n type: 'block',\n styles: [{title: 'Normal', value: 'normal'}],\n lists: [],\n marks: {\n decorators: [],\n annotations: [],\n },\n of: [\n defineArrayMember({\n type: fieldReference.name,\n }),\n defineArrayMember({\n type: promptContext.name,\n }),\n defineArrayMember({\n type: userInput.name,\n }),\n ],\n }),\n /* defineArrayMember({\n type: fieldReference.name,\n }),\n defineArrayMember({\n type: promptContext.name,\n }),\n defineArrayMember({\n type: userInput.name,\n }),*/\n ],\n})\n\nexport const instruction = defineType({\n type: 'object',\n name: instructionTypeName,\n title: 'Instruction',\n fieldsets: [\n {name: 'appearance', title: 'Appearance', options: {collapsible: true, collapsed: true}},\n ],\n preview: {\n select: {\n icon: 'icon',\n title: 'title',\n userId: 'userId',\n },\n prepare: ({icon, title, userId}) => {\n return {\n title,\n icon: icon ? icons[icon as IconSymbol] : SparklesIcon,\n userId,\n }\n },\n },\n components: {\n input: InstructionInput,\n preview: (props: any) => {\n return (\n <Flex gap={3} align=\"center\" padding={2}>\n {props.icon && (\n <Box flex=\"none\">\n <Text size={1}>{createElement(props.icon)}</Text>\n </Box>\n )}\n\n <Stack flex={1} space={2}>\n <Text size={1} textOverflow=\"ellipsis\" weight=\"medium\">\n {getInstructionTitle(props)}\n </Text>\n </Stack>\n\n {props.userId && (\n <Text size={1}>\n <Tooltip\n content={<Text size={1}>Only visible to you</Text>}\n padding={2}\n placement=\"top\"\n portal\n >\n <LockIcon />\n </Tooltip>\n </Text>\n )}\n </Flex>\n )\n },\n },\n fields: [\n defineField({\n type: prompt.name,\n name: 'prompt',\n title: 'Instruction',\n description: (\n <>\n Learn from{' '}\n <a href={instructionGuideUrl} target=\"_blank\" rel=\"noreferrer\">\n our instruction guide <ArrowRightIcon />\n </a>\n </>\n ),\n components: {\n input: PromptInput,\n },\n }),\n defineField({\n type: 'string',\n name: 'icon',\n title: 'Icon',\n fieldset: 'appearance',\n components: {\n field: HiddenFieldTitle,\n input: IconInput,\n },\n }),\n defineField({\n type: 'string',\n name: 'title',\n title: 'Title',\n fieldset: 'appearance',\n components: {\n field: HiddenFieldTitle,\n },\n }),\n defineField({\n type: 'string',\n name: 'userId',\n title: 'Visibility',\n fieldset: 'appearance',\n components: {\n field: HiddenFieldTitle,\n input: InstructionVisibility,\n },\n initialValue: (params, context) => context.currentUser?.id ?? '',\n readOnly: (context) =>\n Boolean(\n context.parent?.createdById && context.parent?.createdById !== context.currentUser?.id\n ),\n }),\n defineField({\n type: 'string',\n name: 'createdById',\n title: 'Created by',\n hidden: true,\n fieldset: 'appearance',\n initialValue: (params, context) => {\n return context.currentUser?.id ?? ''\n },\n }),\n ],\n})\n\nexport const fieldInstructions = defineType({\n type: 'object',\n name: assistFieldTypeName,\n title: 'Field prompt',\n /* components: {\n input: FieldPromptInput,\n },*/\n fields: [\n defineField({\n type: 'string',\n name: 'path',\n title: 'Path',\n readOnly: true,\n hidden: true,\n }),\n defineField({\n type: 'array',\n name: 'instructions',\n title: 'Instructions',\n of: [{type: instruction.name}],\n components: {\n field: InstructionsArrayField,\n input: InstructionsArrayInput,\n },\n }),\n ],\n preview: {\n select: {\n title: 'path',\n },\n },\n})\n\nexport const assistDocumentSchema = defineType({\n //NOTE: this is a document type. Using object here ensures it does not appear in structure menus\n type: 'object',\n //workaround for using object and not document\n ...({liveEdit: true} as any),\n name: assistDocumentTypeName,\n title: 'AI Document',\n\n components: {\n input: AssistDocumentForm,\n field: (props) => {\n return props.renderDefault({...props, title: ''})\n },\n },\n fields: [\n defineField({\n type: 'string',\n name: 'title',\n title: 'Title',\n }),\n defineField({\n type: 'array',\n name: 'fields',\n title: 'Fields',\n of: [{type: fieldInstructions.name}],\n }),\n ],\n preview: {\n select: {\n title: 'title',\n },\n },\n})\n\nexport const instructionTask = defineType({\n type: 'object',\n name: instructionTaskTypeName,\n title: 'Instruction task',\n fields: [\n defineField({\n type: 'string',\n name: 'path',\n title: 'Path',\n }),\n defineField({\n type: 'string',\n name: 'instructionKey',\n title: 'Instruction key',\n }),\n defineField({\n type: 'datetime',\n name: 'started',\n title: 'Started',\n }),\n defineField({\n type: 'datetime',\n name: 'updated',\n title: 'Updated',\n }),\n defineField({\n type: 'string',\n name: 'info',\n title: 'Info',\n }),\n ],\n})\n\nexport const documentInstructionStatus = defineType({\n //NOTE: this is a document type. Using object here ensures it does not appear in structure menus\n type: 'object',\n //workaround for using object and not document\n ...({liveEdit: true} as any),\n name: assistTasksStatusTypeName,\n title: 'Document instruction status',\n fields: [\n defineField({\n type: 'array',\n name: 'tasks',\n title: 'Tasks',\n of: [{type: instructionTask.name}],\n }),\n ],\n})\n","import {\n assistDocumentSchema,\n documentInstructionStatus,\n fieldInstructions,\n fieldReference,\n instruction,\n instructionTask,\n prompt,\n promptContext,\n userInput,\n} from './assistDocumentSchema'\nimport {contextDocumentSchema} from './contextDocumentSchema'\n\nexport const schemaTypes = [\n fieldInstructions,\n assistDocumentSchema,\n prompt,\n fieldReference,\n instruction,\n documentInstructionStatus,\n instructionTask,\n contextDocumentSchema,\n userInput,\n promptContext,\n]\n","import {Path, SchemaType} from 'sanity'\nimport {useMemo} from 'react'\nimport {isAssistSupported} from './assistSupported'\n\nexport function useAssistSupported(path: Path, schemaType: SchemaType) {\n return useMemo(\n () => path.every((p) => typeof p === 'string') && isAssistSupported(schemaType),\n [path, schemaType]\n )\n}\n","import {getPublishedId, ObjectSchemaType, useEditState} from 'sanity'\nimport {useStudioAssistDocument} from './useStudioAssistDocument'\nimport {AssistDocumentContextValue} from '../AssistDocumentContext'\nimport {useMemo} from 'react'\nimport {isDocAssistable} from '../RequestRunInstructionProvider'\nimport {useDocumentPane} from 'sanity/desk'\nimport {useAiPaneRouter} from '../../assistInspector/helpers'\nimport {fieldPathParam} from '../../types'\n\nexport function useAssistDocumentContextValue(\n documentId: string,\n documentSchemaType: ObjectSchemaType\n) {\n const {published, draft} = useEditState(\n getPublishedId(documentId),\n documentSchemaType.name,\n 'low'\n )\n const assistableDocumentId = draft?._id || published?._id || documentId\n const documentIsNew = Boolean(!draft?._id && !published?._id)\n const documentIsAssistable = isDocAssistable(documentSchemaType, published, draft)\n\n const {params} = useAiPaneRouter()\n const selectedPath = params[fieldPathParam]\n const {openInspector, closeInspector, inspector, onChange: documentOnChange} = useDocumentPane()\n\n const assistDocument = useStudioAssistDocument({\n documentId,\n schemaType: documentSchemaType,\n })\n\n const value: AssistDocumentContextValue = useMemo(() => {\n const base = {\n documentId,\n assistableDocumentId,\n documentSchemaType,\n documentIsNew,\n documentIsAssistable,\n openInspector,\n closeInspector,\n inspector,\n documentOnChange,\n selectedPath,\n }\n if (!assistDocument) {\n return {...base, loading: true, assistDocument: undefined}\n }\n return {\n ...base,\n loading: false,\n assistDocument: assistDocument,\n }\n }, [\n assistDocument,\n documentIsAssistable,\n documentId,\n assistableDocumentId,\n documentSchemaType,\n documentIsNew,\n openInspector,\n closeInspector,\n inspector,\n documentOnChange,\n selectedPath,\n ])\n\n return value\n}\n","import {LockIcon} from '@sanity/icons'\nimport {Text, Tooltip} from '@sanity/ui'\n\nexport function PrivateIcon() {\n return (\n <Tooltip\n content={\n <Text size={1} style={{whiteSpace: 'nowrap'}}>\n Only visible to you\n </Text>\n }\n fallbackPlacements={['bottom']}\n padding={2}\n placement=\"top\"\n portal\n >\n <LockIcon />\n </Tooltip>\n )\n}\n","import {createContext, useEffect, useMemo, useState} from 'react'\nimport {InputProps, pathToString} from 'sanity'\nimport {getCaptionFieldOption} from '../helpers/typeUtils'\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {useApiClient, useGenerateCaption} from '../useApiClient'\nimport {useAiAssistanceConfig} from '../assistLayout/AiAssistanceConfigContext'\n\nexport interface ImageContextValue {\n captionPath: string\n assetRef?: string\n}\n\nexport const ImageContext = createContext<ImageContextValue | undefined>(undefined)\n\nexport function ImageContextProvider(props: InputProps) {\n const {schemaType, path, value} = props\n const assetRef = (value as any)?.asset?._ref\n const [assetRefState, setAssetRefState] = useState<string | undefined>(assetRef)\n\n const {documentId} = useAssistDocumentContext()\n const {config} = useAiAssistanceConfig()\n const apiClient = useApiClient(config?.__customApiClient)\n const {generateCaption} = useGenerateCaption(apiClient)\n\n useEffect(() => {\n const captionField = getCaptionFieldOption(schemaType)\n if (assetRef && documentId && captionField && assetRef !== assetRefState) {\n setAssetRefState(assetRef)\n generateCaption({path: pathToString([...path, captionField]), documentId: documentId})\n }\n }, [schemaType, path, assetRef, assetRefState, documentId, generateCaption])\n\n const context: ImageContextValue | undefined = useMemo(() => {\n const captionField = getCaptionFieldOption(schemaType)\n return captionField ? {captionPath: pathToString([...path, captionField]), assetRef} : undefined\n }, [schemaType, path, assetRef])\n\n return <ImageContext.Provider value={context}>{props.renderDefault(props)}</ImageContext.Provider>\n}\n","import {DocumentFieldAction, DocumentFieldActionGroup, DocumentFieldActionItem} from 'sanity'\nimport {ImageIcon} from '@sanity/icons'\nimport {useContext, useMemo} from 'react'\nimport {usePathKey} from '../helpers/misc'\nimport {useApiClient, useGenerateCaption} from '../useApiClient'\nimport {useAiAssistanceConfig} from '../assistLayout/AiAssistanceConfigContext'\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {ImageContext} from '../components/ImageContext'\nimport {Box, Spinner} from '@sanity/ui'\n\nfunction node(node: DocumentFieldActionItem | DocumentFieldActionGroup) {\n return node\n}\n\nexport const generateCaptionsActions: DocumentFieldAction = {\n name: 'sanity-assist-generate-captions',\n useAction(props) {\n const pathKey = usePathKey(props.path)\n\n const {config} = useAiAssistanceConfig()\n const apiClient = useApiClient(config?.__customApiClient)\n const {generateCaption, loading} = useGenerateCaption(apiClient)\n\n const imageContext = useContext(ImageContext)\n\n if (imageContext && pathKey === imageContext?.captionPath) {\n //if this is true, it is stable, and not breaking rules of hooks\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const {documentId} = useAssistDocumentContext()\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useMemo(() => {\n return node({\n type: 'action',\n icon: loading\n ? () => (\n <Box style={{height: 17}}>\n <Spinner style={{transform: 'translateY(6px)'}} />\n </Box>\n )\n : ImageIcon,\n title: 'Generate caption',\n onAction: () => {\n if (loading) {\n return\n }\n generateCaption({path: pathKey, documentId: documentId ?? ''})\n },\n renderAsButton: true,\n disabled: loading,\n hidden: !imageContext.assetRef,\n })\n }, [generateCaption, pathKey, documentId, loading, imageContext])\n }\n\n // works but not supported by types\n return undefined as unknown as DocumentFieldActionItem\n },\n}\n","import {\n DocumentFieldAction,\n DocumentFieldActionGroup,\n DocumentFieldActionItem,\n ObjectSchemaType,\n useCurrentUser,\n} from 'sanity'\nimport {ControlsIcon, SparklesIcon} from '@sanity/icons'\nimport {useCallback, useMemo} from 'react'\nimport {pluginTitle, pluginTitleShort} from '../constants'\nimport {useAssistSupported} from '../helpers/useAssistSupported'\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {getInstructionTitle, usePathKey} from '../helpers/misc'\nimport {fieldPathParam, instructionParam, StudioInstruction} from '../types'\nimport {aiInspectorId} from '../assistInspector/constants'\nimport {getIcon} from '../assistDocument/components/instruction/appearance/IconInput'\nimport {useAssistDocumentContextValue} from '../assistDocument/hooks/useAssistDocumentContextValue'\nimport {\n getAssistableDocId,\n useRequestRunInstruction,\n} from '../assistDocument/RequestRunInstructionProvider'\nimport {PrivateIcon} from './PrivateIcon'\nimport {generateCaptionsActions} from './generateCaptionActions'\n\nfunction node(node: DocumentFieldActionItem | DocumentFieldActionGroup) {\n return node\n}\n\nexport const assistFieldActions: DocumentFieldAction = {\n name: 'sanity-assist-actions',\n useAction(props) {\n const {schemaType} = props\n const assistSupported = useAssistSupported(props.path, schemaType)\n\n const isDocumentLevel = props.path.length === 0\n\n const {\n assistDocument,\n documentIsNew,\n documentIsAssistable,\n openInspector,\n closeInspector,\n inspector,\n documentOnChange,\n documentSchemaType,\n documentId,\n selectedPath,\n } =\n // document field actions do not have access to the document context\n // conditional hook _should_ be safe here since the logical path will be stable\n isDocumentLevel\n ? // eslint-disable-next-line react-hooks/rules-of-hooks\n useAssistDocumentContextValue(props.documentId, schemaType as ObjectSchemaType)\n : // eslint-disable-next-line react-hooks/rules-of-hooks\n useAssistDocumentContext()\n\n const currentUser = useCurrentUser()\n const isHidden = !assistDocument\n const pathKey = usePathKey(props.path)\n const assistDocumentId = assistDocument?._id\n\n const assistableDocId = getAssistableDocId(documentSchemaType, documentId)\n const {requestRunInstruction} = useRequestRunInstruction({\n documentOnChange,\n isDocAssistable: documentIsAssistable ?? false,\n })\n\n const fieldAssist = useMemo(\n () => (assistDocument?.fields ?? []).find((f) => f.path == pathKey),\n [assistDocument?.fields, pathKey]\n )\n const fieldAssistKey = fieldAssist?._key\n const isInspectorOpen = inspector?.name === aiInspectorId\n const isPathSelected = pathKey === selectedPath\n const isSelected = isInspectorOpen && isPathSelected\n\n const imageCaptionAction = generateCaptionsActions.useAction(props)\n\n const manageInstructions = useCallback(\n () =>\n isSelected\n ? closeInspector(aiInspectorId)\n : openInspector(aiInspectorId, {\n [fieldPathParam]: pathKey,\n [instructionParam]: undefined as any,\n }),\n [openInspector, closeInspector, isSelected, pathKey]\n )\n\n const onInstructionAction = useCallback(\n (instruction: StudioInstruction) => {\n if (!pathKey || !fieldAssistKey || !assistDocumentId || !assistableDocId) {\n return\n }\n requestRunInstruction({\n documentId: assistableDocId,\n assistDocumentId,\n path: pathKey,\n instruction,\n })\n },\n [requestRunInstruction, assistableDocId, pathKey, assistDocumentId, fieldAssistKey]\n )\n\n const privateInstructions = useMemo(\n () =>\n fieldAssist?.instructions?.filter((i) => i.userId && i.userId === currentUser?.id) || [],\n [fieldAssist?.instructions, currentUser]\n )\n\n const sharedInstructions = useMemo(\n () => fieldAssist?.instructions?.filter((i) => !i.userId) || [],\n [fieldAssist?.instructions]\n )\n\n const instructions = useMemo(\n () => [...privateInstructions, ...sharedInstructions],\n [privateInstructions, sharedInstructions]\n )\n\n const runInstructionsGroup = useMemo(() => {\n return instructions?.length\n ? node({\n type: 'group',\n icon: () => null,\n title: 'Run instructions',\n children: [\n ...instructions.map((instruction) =>\n instructionItem({\n instruction,\n isPrivate: Boolean(instruction.userId && instruction.userId === currentUser?.id),\n onInstructionAction,\n hidden: isHidden,\n documentIsNew: !!documentIsNew,\n assistSupported,\n })\n ),\n imageCaptionAction,\n ].filter(Boolean),\n expanded: true,\n })\n : undefined\n }, [\n instructions,\n currentUser?.id,\n onInstructionAction,\n isHidden,\n documentIsNew,\n assistSupported,\n imageCaptionAction,\n ])\n\n const instructionsLength = instructions?.length || 0\n\n const manageInstructionsItem = useMemo(\n () =>\n node({\n type: 'action',\n icon: ControlsIcon,\n title: 'Manage instructions',\n onAction: manageInstructions,\n selected: isSelected,\n }),\n [manageInstructions, isSelected]\n )\n\n const group = useMemo(\n () =>\n node({\n type: 'group',\n icon: SparklesIcon,\n title: pluginTitleShort,\n children: [\n runInstructionsGroup,\n /* documentIsNew && {\n type: 'action',\n disabled: true,\n title: `Document is new. Make an edit to enable `,\n icon: WarningOutlineIcon,\n tone: 'caution',\n status: 'warning',\n onAction: () => {},\n },*/\n manageInstructionsItem,\n ].filter((c): c is DocumentFieldActionItem | DocumentFieldActionGroup => !!c),\n expanded: false,\n renderAsButton: true,\n hidden: !assistSupported,\n }),\n [\n //documentIsNew,\n runInstructionsGroup,\n manageInstructionsItem,\n assistSupported,\n ]\n )\n\n const emptyAction = useMemo(\n () =>\n node({\n type: 'action',\n hidden: !assistSupported,\n icon: SparklesIcon,\n onAction: manageInstructions,\n renderAsButton: true,\n title: pluginTitleShort,\n selected: isSelected,\n }),\n [assistSupported, manageInstructions, isSelected]\n )\n\n // If there are no instructions, we don't want to render the group\n if (instructionsLength === 0 && !imageCaptionAction) {\n return emptyAction\n }\n\n return group\n },\n}\n\nfunction instructionItem(props: {\n instruction: StudioInstruction\n isPrivate: boolean\n onInstructionAction: (ins: StudioInstruction) => void\n assistSupported: boolean\n documentIsNew: boolean\n hidden: boolean\n}) {\n const {hidden, isPrivate, onInstructionAction, assistSupported, instruction} = props\n return node({\n type: 'action',\n icon: getIcon(instruction.icon),\n iconRight: isPrivate ? PrivateIcon : undefined,\n title: getInstructionTitle(instruction),\n onAction: () => onInstructionAction(instruction),\n disabled: assistSupported ? false : {reason: `${pluginTitle} is not supported for this field`},\n hidden,\n })\n}\n","import {ObjectSchemaType} from 'sanity'\nimport {AssistDocumentContext} from './AssistDocumentContext'\nimport {useAssistDocumentContextValue} from './hooks/useAssistDocumentContextValue'\nimport {PropsWithChildren} from 'react'\n\nexport interface AIDocumentInputProps {\n documentId: string\n schemaType: ObjectSchemaType\n}\n\nexport function AssistDocumentContextProvider(props: PropsWithChildren<AIDocumentInputProps>) {\n const {documentId, schemaType} = props\n const value = useAssistDocumentContextValue(documentId, schemaType)\n return (\n <AssistDocumentContext.Provider value={value}>{props.children}</AssistDocumentContext.Provider>\n )\n}\n","import {useEffect, useRef} from 'react'\nimport {InstructionTask} from '../../types'\nimport {addSeconds, isAfter} from 'date-fns'\nimport {getInstructionTitle} from '../../helpers/misc'\nimport {useStudioAssistDocument} from './useStudioAssistDocument'\nimport {ObjectSchemaType, useCurrentUser} from 'sanity'\nimport {useToast} from '@sanity/ui'\n\nconst NO_TASKS: InstructionTask[] = []\n\nexport function useInstructionToaster(documentId: string, documentSchemaType: ObjectSchemaType) {\n const assistDocument = useStudioAssistDocument({documentId, schemaType: documentSchemaType})\n\n const assistDocLoaded = !!assistDocument\n const currentUser = useCurrentUser()\n const toast = useToast()\n const tasks = assistDocument?.tasks\n const previousTasks = useRef<InstructionTask[] | undefined | 'initial'>('initial')\n\n useEffect(() => {\n if (!assistDocLoaded) {\n return\n }\n\n if (previousTasks.current !== 'initial') {\n const prevTaskByKey = Object.fromEntries(\n (previousTasks.current ?? NO_TASKS).map((run) => [run._key, run])\n )\n const endedTasks = tasks\n ?.filter((task) => task.startedByUserId === currentUser?.id)\n .filter((task) => {\n const prevTask = prevTaskByKey[task._key]\n return (!prevTask && task.ended) || (!prevTask?.ended && task.ended)\n })\n // filter out old stuff\n .filter((task) => task.ended && isAfter(addSeconds(new Date(task.ended), 30), new Date()))\n\n endedTasks?.forEach((task) => {\n const title = task.title ?? getInstructionTitle(task.instruction)\n if (task.reason === 'error') {\n toast.push({\n title: `Failed: ${title}`,\n status: 'error',\n description: `Instruction failed. ${task.message ?? ''}`,\n closable: true,\n duration: 10000,\n })\n } else if (task.reason === 'timeout') {\n toast.push({\n title: `Timeout: ${title}`,\n status: 'error',\n description: `Instruction timed out.`,\n closable: true,\n })\n } else if (task.reason === 'success') {\n toast.push({\n title: `Success: ${title}`,\n status: 'success',\n description: `Instruction completed.`,\n closable: true,\n })\n } else if (task.reason === 'aborted') {\n toast.push({\n title: `Canceled: ${title}`,\n status: 'warning',\n description: `Instruction canceled.`,\n closable: true,\n })\n }\n })\n }\n previousTasks.current = tasks\n }, [tasks, previousTasks, toast, currentUser, assistDocLoaded])\n}\n","import {InputProps, ObjectInputProps} from 'sanity'\nimport {AssistDocumentContextProvider} from './AssistDocumentContextProvider'\nimport {FirstAssistedPathProvider} from '../onboarding/FirstAssistedPathProvider'\nimport {useInstructionToaster} from './hooks/useInstructionToaster'\nimport {isType} from '../helpers/typeUtils'\nimport {useLayer} from '@sanity/ui'\nimport {useDocumentPane} from 'sanity/desk'\nimport {usePathKey} from '../helpers/misc'\nimport {ConnectFromRegion} from '../_lib/connector'\n\nexport function AssistDocumentInputWrapper(props: InputProps) {\n if (!isType(props.schemaType, 'document') && props.id !== 'root') {\n return <AssistInput {...props} />\n }\n\n const documentId = (props.value as any)?._id as string | undefined\n if (!documentId) {\n return props.renderDefault(props)\n }\n\n return <AssistDocumentInput {...(props as ObjectInputProps)} documentId={documentId} />\n}\n\nfunction AssistDocumentInput({documentId, ...props}: ObjectInputProps & {documentId: string}) {\n useInstructionToaster(documentId, props.schemaType)\n\n return (\n <FirstAssistedPathProvider members={props.members}>\n <AssistDocumentContextProvider schemaType={props.schemaType} documentId={documentId}>\n {props.renderDefault(props)}\n </AssistDocumentContextProvider>\n </FirstAssistedPathProvider>\n )\n}\n\nfunction AssistInput(props: InputProps) {\n const {zIndex} = useLayer()\n const {paneKey} = useDocumentPane()\n const pathKey = usePathKey(props.path)\n\n return (\n <ConnectFromRegion _key={`${paneKey}_${pathKey}`} zIndex={zIndex} style={{minWidth: 0}}>\n {props.renderDefault(props)}\n </ConnectFromRegion>\n )\n}\n","import {ObjectSchemaType} from 'sanity'\nimport {useMemo} from 'react'\nimport {useAssistDocumentContextValue} from '../assistDocument/hooks/useAssistDocumentContextValue'\nimport {aiPresence} from './useAssistPresence'\nimport {documentRootKey, fieldPresenceTypeName} from '../types'\nimport {Card, Flex} from '@sanity/ui'\nimport {AiFieldPresence} from './AiFieldPresence'\n\nexport function createAssistDocumentPresence(\n documentId: string | undefined,\n schemaType: ObjectSchemaType\n) {\n return function AssistDocumentPresenceWrapper() {\n return documentId ? (\n <AssistDocumentPresence documentId={documentId} schemaType={schemaType} />\n ) : null\n }\n}\n\nfunction AssistDocumentPresence(props: {documentId: string; schemaType: ObjectSchemaType}) {\n const {assistDocument} = useAssistDocumentContextValue(\n props.documentId,\n props.schemaType as ObjectSchemaType\n )\n const anyPresence = useMemo(() => {\n const anyPresence = assistDocument?.tasks\n ?.filter((run) => !run.ended && !run.reason)\n ?.flatMap((run) => run.presence ?? [])\n .find((f) => f.started && new Date().getTime() - new Date(f.started).getTime() < 30000)\n if (anyPresence) {\n return aiPresence(anyPresence, [])\n }\n const anyRun = assistDocument?.tasks\n ?.filter((run) => !run.ended && !run.reason)\n ?.find((f) => f.started && new Date().getTime() - new Date(f.started).getTime() < 30000)\n return anyRun\n ? aiPresence(\n {\n started: anyRun.started,\n path: documentRootKey,\n _key: anyRun._key,\n _type: fieldPresenceTypeName,\n },\n []\n )\n : undefined\n }, [assistDocument?.tasks])\n\n return (\n <Card>\n <Flex flex={1} justify=\"flex-end\">\n <Flex gap={2} align={'center'}>\n {anyPresence && <AiFieldPresence presence={anyPresence} />}\n </Flex>\n </Flex>\n </Card>\n )\n}\n","import {definePlugin, ObjectSchemaType} from 'sanity'\nimport {assistInspector} from './assistInspector'\nimport {AssistFieldWrapper} from './assistFormComponents/AssistField'\nimport {AssistLayout} from './assistLayout/AssistLayout'\nimport {AssistFormBlock} from './assistFormComponents/AssistFormBlock'\nimport {AssistItem} from './assistFormComponents/AssistItem'\nimport {SanityClient} from '@sanity/client'\nimport {SafeValueInput} from './components/SafeValueInput'\nimport {schemaTypes} from './schemas'\nimport {AssistInlineFormBlock} from './assistFormComponents/AssistInlineFormBlock'\nimport {assistFieldActions} from './fieldActions/assistFieldActions'\nimport {packageName} from './constants'\nimport {AssistDocumentInputWrapper} from './assistDocument/AssistDocumentInput'\nimport {createAssistDocumentPresence} from './presence/AssistDocumentPresence'\nimport {isSchemaAssistEnabled} from './helpers/assistSupported'\nimport {isImage} from './helpers/typeUtils'\nimport {ImageContextProvider} from './components/ImageContext'\n\nexport interface AssistPluginConfig {\n /**\n * Set this to false to disable model migration from the alpha version of this plugin\n */\n alphaMigration?: boolean\n\n /**\n * @internal\n */\n __customApiClient?: (defaultClient: SanityClient) => SanityClient\n}\n\nexport const assist = definePlugin<AssistPluginConfig | void>((config) => {\n const configWithDefaults = config ?? {}\n return {\n name: packageName,\n\n schema: {\n types: schemaTypes,\n },\n\n document: {\n inspectors: (prev, context) => {\n const docSchema = context.schema.get(context.documentType)\n if (docSchema && isSchemaAssistEnabled(docSchema)) {\n return [...prev, assistInspector]\n }\n return prev\n },\n unstable_fieldActions: (prev) => {\n return [...prev, assistFieldActions]\n },\n unstable_languageFilter: (prev, {documentId, schema, schemaType}) => {\n const docSchema = schema.get(schemaType) as ObjectSchemaType\n return [...prev, createAssistDocumentPresence(documentId, docSchema)]\n },\n },\n\n studio: {\n components: {\n layout: function Layout(props) {\n return <AssistLayout {...props} config={configWithDefaults} />\n },\n },\n },\n\n form: {\n components: {\n input: AssistDocumentInputWrapper,\n field: AssistFieldWrapper,\n item: AssistItem,\n block: AssistFormBlock,\n inlineBlock: AssistInlineFormBlock,\n },\n },\n\n plugins: [\n definePlugin({\n name: `${packageName}/safe-value-input`,\n form: {components: {input: SafeValueInput}},\n })(),\n\n definePlugin({\n name: `${packageName}/generate-caption`,\n form: {\n components: {\n input: (props) => {\n const {schemaType} = props\n\n if (isImage(schemaType)) {\n return <ImageContextProvider {...props} />\n }\n return props.renderDefault(props)\n },\n },\n },\n })(),\n ],\n }\n})\n"],"names":["assistDocumentIdPrefix","assistDocumentStatusIdPrefix","assistSchemaIdPrefix","assistDocumentTypeName","assistFieldTypeName","instructionTypeName","promptTypeName","userInputTypeName","instructionContextTypeName","fieldReferenceTypeName","contextDocumentTypeName","assistTasksStatusTypeName","instructionTaskTypeName","fieldPresenceTypeName","assistSerializedTypeName","assistSerializedFieldTypeName","fieldPathParam","instructionParam","documentRootKey","fetch","client","query","params","options","defer","observable","tag","filterResponse","listen","events","includeResult","visibility","isWelcomeEvent","event","type","listenQuery","arguments","length","undefined","fetchQuery","listenerQuery","fetchOnce$","events$","pipe","mergeMap","ev","i","isFirst","throwError","Error","concat","of","share","welcome$","mutationAndReconnect$","partition","isRelevantEvent","transitions","includes","transition","merge","take","filter","switchMap","delay","throttleTime","exhaustMapToWithTrailing","DEFAULT_PARAMS","DEFAULT_OPTIONS","apiVersion","useListeningQuery","loading","setLoading","useState","error","setError","data","setData","subscription","useRef","useClient","useEffect","current","distinctUntilChanged","isEqual","catchError","err","console","subscribe","documents","unsubscribe","hiddenTypes","isPortableTextArray","find","t","isType","schemaType","typeName","name","isImage","getCaptionFieldOption","_a","captionField","isSchemaAssistEnabled","_b","aiWritingAssistance","exclude","isAssistSupported","allowReadonlyHidden","isDisabled","jsonType","unsupportedArray","every","unsupportedObject","fields","field","readonlyHidden","readOnly","hidden","isUnsupportedType","inlineTypes","serializeSchema","schema","list","getTypeNames","startsWith","map","get","getSchemaStub","to","sort","a","b","localeCompare","baseSchema","leanFormat","_id","_type","title","getBaseFields","removeUndef","_c","imagePromptField","values","v","value","arrayOf","refToTypeNames","serializeFields","f","serializeMember","typeNameExists","arrayType","typed","obj","Object","keys","forEach","key","NO_DATA","defaultTitle","SchemaTypeTool","useSchema","saving","setSaving","syncTitle","setSyncTitle","types","useMemo","storeTypes","useCallback","canSave","store","transaction","createOrReplace","commit","reset","catch","finally","jsx","Card","padding","overflow","style","height","children","jsxs","Stack","space","Box","Button","icon","Spinner","marginTop","SyncIcon","text","disabled","onClick","Flex","gap","Label","SchemaEntry","schemaStub","_ref","out","JSON","stringify","aiInspectorId","preventDefault","DocumentForm","props","collapsedFieldSets","collapsedPaths","displayed","documentId","documentType","editState","formState","onBlur","onChange","onFocus","onPathOpen","onSetActiveFieldGroup","onSetCollapsedFieldSet","onSetCollapsedPath","ready","validation","useDocumentPane","documentStore","useDocumentStore","presence","useDocumentPresence","patchChannel","createPatchChannel","isLocked","transactionSyncLock","enabled","sub","pair","documentEvents","tap","publish","prepareMutationEvent","prepareRebaseEvent","hasRev","Boolean","_rev","patches","snapshot","formRef","focusFirstDescendant","as","ref","align","direction","justify","sizing","Text","size","onSubmit","FormBuilder","__internal_patchChannel","focusPath","changed","focused","groups","id","members","onFieldGroupSelect","onPathBlur","onPathFocus","onSetFieldSetCollapsed","onSetPathCollapsed","muted","mutations","mut","patch","document","fromMutationPatches","origin","remotePatches","remoteMutations","localPatches","localMutations","SelectedFieldContext","createContext","SelectedFieldContextProvider","Provider","maxDepth","getTypeIcon","LinkIcon","ImageIcon","BlockContentIcon","OlistIcon","BlockquoteIcon","StringIcon","DocumentIcon","getFieldRefsWithDocument","getFieldRefs","path","parent","depth","flatMap","fieldRef","pathToString","join","useSelectedField","documentSchemaType","selectableFields","isObjectSchemaType","getFieldTitle","useAiPaneRouter","paneRouter","usePaneRouter","useDocumentState","docType","state","useEditState","draft","published","aiDocPrefixPattern","RegExp","publicId","replace","assistDocumentId","documentTypeFromAiDocumentId","assistTasksStatusId","releaseAnnouncementUrl","instructionGuideUrl","giveFeedbackUrl","salesUrl","packageName","pluginTitle","pluginTitleShort","maxHistoryVisibilityMs","minutesToMilliseconds","useStudioAssistDocument","_ref2","documentTypeName","currentUser","useCurrentUser","useValidationStatus","assistDocument","assistTasksStatus","createIfNotExists","tasks","assistField","task","instructions","p","userId","instruction","asStudioInstruction","_key","instructionKey","run","errors","marker","level","fieldRefs","prompt","block","c","started","Date","getTime","r","useInterval","ms","tick","update","useReducer","n","setInterval","clearInterval","TimeAgo","_ref3","date","timeSince","formatDistanceToNow","usePathKey","Array","isArray","getInstructionTitle","rotate","keyframes","__template","SyncSpinningIcon","styled","default","TASK_CONFIG","aborted","CloseCircleIcon","tone","ErrorOutlineIcon","success","CheckmarkCircleIcon","timeout","ClockIcon","InstructionTaskHistoryButton","showTitles","cancelRun","taskKey","statusDocId","basePath","set","toISOString","titledTasks","cancel","isRunning","some","ended","hasErrors","reason","open","setOpen","toggleOpen","button","setButton","popover","setPopover","handleClickOutside","useClickOutside","handleEscape","focus","Popover","constrainSize","content","TaskList","onEscape","placement","portal","width","TaskStatusButton","selected","TASK_STATUS_BUTTON_TOOLTIP_PROPS","forwardRef","StatusButton","label","mode","fontSize","tooltip","isTopLayer","useLayer","useGlobalKeyDown","TaskItem","taskType","radius","flex","createElement","weight","Fragment","message","editorialAiFieldActionFeature","useApiClient","customApiClient","useGenerateCaption","apiClient","user","toast","useToast","generateCaption","_ref4","request","method","url","config","dataset","projectId","body","e","push","status","description","setTimeout","useGetInstructStatus","projectClient","getInstructStatus","features","useInitInstruct","initInstruct","useRunInstructionApi","runInstruction","AiAssistanceConfigContext","useAiAssistanceConfig","context","useContext","AiAssistanceConfigProvider","setStatus","__customApiClient","statusLoading","initLoading","then","s","init","NO_INPUT","RunInstructionContext","instructionLoading","useRunInstruction","isUserInputBlock","RunInstructionProvider","runInstructionRequest","useId","inputs","setInputs","runRequest","setRunRequest","req","userInputBlocks","userTexts","close","runWithInput","entries","_ref5","blockKey","userInput","runDisabled","_ref6","runButton","PlayIcon","contextValue","Dialog","onClose","header","footer","Tooltip","UserInput","autoFocus","textAreaRef","currentTarget","target","FormFieldHeaderText","TextArea","rows","resize","isDocAssistable","liveEdit","getAssistableDocId","baseId","useRequestRunInstruction","args","documentOnChange","queuedTask","setQueuedTask","requestRunInstruction","PatchEvent","from","unset","SparklesIllustration","SparklesIcon","strokeWidth","InspectorOnboarding","onDismiss","Container","textAlign","href","rel","inspectorOnboardingKey","fieldOnboardingKey","isFeatureOnboardingDismissed","featureKey","localStorage","getItem","dismissFeatureOnboarding","setItem","useOnboardingFeature","showOnboarding","setShowOnboarding","dismissOnboarding","CardWithShadowBelow","CardWithShadowAbove","AssistInspectorWrapper","DocumentInspectorHeader","closeButtonLabel","initialized","validToken","RetryIcon","AssistInspector","boundary","pathKey","documentPane","assistableDocId","selectedField","aiDocId","promptValue","isEmptyPrompt","firstBlock","paneNode","runCurrentInstruction","Region","_props","lineHeight","AiInspectorHeader","fieldTitle","minHeight","PresenceOverlay","VirtualizerScrollInstanceProvider","scrollElement","containerElement","DocumentPaneProvider","paneKey","index","itemId","pane","whiteSpace","ArrowRightIcon","paddingX","paddingY","justifySelf","border","margin","CloseIcon","assistInspector","useMenuItem","showAsAction","component","_ref7","AssistDocumentContext","useAssistDocumentContext","NO_PRESENCE","useAssistPresence","showFocusWithin","activePresence","statusPath","stringToPath","pathSegment","statusSegment","isKeySegment","aiPresence","displayName","sessionId","lastActiveAt","fadeIn","FadeInDiv","div","FadeInContent","FadeInContent2","_ref8","durationMs","animationDuration","purple","hex","_d","Root","span","dash","Outline","svg","IconDisc","AssistAvatar","scheme","useColorSchemeValue","viewBox","fill","xmlns","cx","cy","color","AiFieldPresence","position","background","contentEditable","FirstAssistedPathContext","FirstAssistedPathProvider","firstAssistedPath","firstAssisted","member","kind","AssistFeatureBadge","Badge","FieldActionsOnboarding","isFirstAssisted","AssistOnboardingPopover","AssistIntroCard","dismiss","placeholder","buttonRef","CheckmarkIcon","AssistFieldWrapper","isSupported","renderDefault","inputId","AssistField","isPortableText","isArraySchemaType","actions","pre","ConnectorsStoreContext","useConnectorsStore","hasOverflowScroll","el","getComputedStyle","useRegionRects","relativeBoundsRect","setRelativeBoundsRect","relativeElementRect","setRelativeElementRect","boundsScroll","setBoundsScroll","x","y","scroll","setScroll","boundsScrollXRef","boundsScrollYRef","elementScrollXRef","elementScrollYRef","scrollParents","parentElement","handleResize","scrollParent","boundsRect","getBoundingClientRect","window","innerWidth","innerHeight","domRect","w","h","handleScroll","scrollX","scrollY","scrollLeft","scrollTop","addEventListener","passive","ro","ResizeObserver","observe","unobserve","removeEventListener","disconnect","bounds","element","ConnectorRegion","onRectsChange","restProps","ConnectFromRegion","zIndex","rects","setRects","next","createConnectorsStore","configKeys","fieldKeys","channels","Map","payloads","observers","notifyObservers","connectors","toRects","toPayload","fromRects","fromPayload","payload","observer","delete","idx","indexOf","splice","ConnectorsProvider","onConnectorsChange","getConnectorLinePoint","rect","centerY","isAbove","arrow","marginY","isBelow","startY","endY","outOfBounds","mapConnectorToLine","connector","fromBounds","threshold","fromBottom","toBounds","toBottom","maxStartY","Math","max","min","arrowPath","dir","moveTo","lineTo","strings","delim","quadCurve","x1","y1","drawConnectorPath","line","cornerRadius","fromX","fromY","_toX","toY","toX","dividerX","divider","offsetX","fromPathX","marginX","r0","abs","r1","cmds","ConnectorPath","theme","useTheme","d","stroke","sanity","base","bg","rgba","DEBUG","AssistConnectorsOverlay","setRedraw","top","left","pointerEvents","legacyAssistDocumentIdPrefix","legacyAssistDocumentTypeName","legacyContextDocumentTypeName","legacyAssistStatusDocumentTypeName","NO_ASSIST_DOCS","NO_CONTEXT_DOCS","NO_IDS","AlphaMigration","alphaAssistDocs","setAlphaAssistDocs","contextDocs","setContextDocs","staleStatusDocIds","setStaleStatusDocs","progress","setProgress","canUpdate","result","assistDocs","convert","convertContextDocs","subtaskProgress","deleteDocs","convertDocs","taskSize","startProgress","subProgress","closable","maxWidth","floor","ids","updateProgress","chunkSize","progressCount","chunk","slice","trans","docs","doc","rest","_alphaId","oldDoc","oldField","inst","mapBlock","isFieldRef","isContext","isUserInput","isSpan","migratedContexts","newBlock","reference","textBlock","child","AssistLayout","setConnectors","migrate","alphaMigration","ThemeProvider","WrapPreCard","SafeValueInput","ErrorWrapper","PteValueFixer","unsetValue","catcher","ErrorBoundary","onCatch","AssistFormBlock","useFormCallbacks","localOnChange","patchEvent","prefixAll","AssistItem","right","BackToInstructionListLink","openInspector","goBack","ArrowLeftIcon","EMPTY_FIELDS","AssistDocumentForm","targetDocumentType","setParams","activeKey","activePath","documentSchema","fieldSchema","useSelectedSchema","fieldExists","formCallbacks","newCallbacks","FieldsInitializer","FormCallbacksProvider","FormInput","absolutePath","fieldPath","currentSchema","segment","_ref9","setIfMissing","insert","findFieldMember","fieldName","m","findFieldsetMember","fieldsetName","fieldSet","InstructionInput","NameField","ShareField","PromptField","promptMember","ObjectInputMember","NONE","fieldsetMember","titleId","iconMember","titleMember","titlePlaceholder","moddedTitleMember","htmlFor","marginLeft","visibilityMember","HiddenFieldTitle","InstructionVisibility","handleChange","newValue","Switch","elementProps","checked","IconInput","items","icons","_ref10","IconItem","iconKey","selectedIcon","getIcon","MenuButton","menu","Menu","maxHeight","_ref11","MenuItem","iconName","_ref12","sparkles","FieldAutocomplete","onSelect","includeDocument","fieldNames","currentField","autocompleteOptions","renderOption","option","accent","splitTitle","split","Breadcrumbs","separator","pt","trim","renderValue","filterOption","lQuery","toLowerCase","Autocomplete","SearchIcon","openButton","FieldRefPathInput","querySelector","minWidth","InstructionsArrayInput","originalValue","originalMembers","item","InlineBlockValueContext","AssistInlineFormBlock","FieldRefPreview","textOverflow","HideReferenceChangedBannerInput","closest","parentId","random","innerText","prepend","contextDocumentSchema","defineType","TokenIcon","components","input","defineField","defineArrayMember","styles","lists","marks","decorators","annotations","preview","select","prepare","_ref13","words","subtitle","media","DocumentTextIcon","getRandomValues","typedArray","crypto","whatwgRNG","rnds8","Uint8Array","getByteHexTable","table","toString","substring","randomKey","reduce","str","PteMods","PromptInput","useOnlyInlineBlocks","needsFix","val","markDefs","InstructionsArrayField","fieldReference","ThListIcon","rule","custom","docId","targetDocType","refs","_ref14","CodeIcon","modal","ComposeIcon","required","promptContext","Fix","call","fieldsets","collapsible","collapsed","_ref15","LockIcon","fieldset","initialValue","createdById","fieldInstructions","assistDocumentSchema","instructionTask","documentInstructionStatus","schemaTypes","useAssistSupported","useAssistDocumentContextValue","getPublishedId","assistableDocumentId","documentIsNew","documentIsAssistable","selectedPath","closeInspector","inspector","PrivateIcon","fallbackPlacements","ImageContext","ImageContextProvider","assetRef","asset","assetRefState","setAssetRefState","captionPath","node","generateCaptionsActions","useAction","imageContext","transform","onAction","renderAsButton","assistFieldActions","assistSupported","isDocumentLevel","isHidden","fieldAssist","fieldAssistKey","isInspectorOpen","isPathSelected","isSelected","imageCaptionAction","manageInstructions","onInstructionAction","privateInstructions","sharedInstructions","runInstructionsGroup","instructionItem","isPrivate","expanded","instructionsLength","manageInstructionsItem","ControlsIcon","group","emptyAction","iconRight","AssistDocumentContextProvider","NO_TASKS","useInstructionToaster","assistDocLoaded","previousTasks","prevTaskByKey","fromEntries","endedTasks","startedByUserId","prevTask","isAfter","addSeconds","duration","AssistDocumentInputWrapper","AssistInput","AssistDocumentInput","_ref16","createAssistDocumentPresence","AssistDocumentPresenceWrapper","AssistDocumentPresence","anyPresence","anyRun","assist","definePlugin","configWithDefaults","inspectors","prev","docSchema","unstable_fieldActions","unstable_languageFilter","_ref17","studio","layout","Layout","form","inlineBlock","plugins"],"mappings":"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","x_google_ignoreList":[30,70]}
1
+ {"version":3,"file":"index.js","sources":["../src/types.ts","../src/_lib/fixedListenQuery.ts","../src/_lib/useListeningQuery.ts","../src/schemas/serialize/schemaUtils.ts","../src/helpers/typeUtils.ts","../src/helpers/assistSupported.ts","../src/schemas/serialize/serializeSchema.ts","../src/schemas/serialize/SchemTypeTool.tsx","../src/assistInspector/constants.ts","../src/_lib/form/DocumentForm.tsx","../src/assistDocument/components/SelectedFieldContext.tsx","../src/assistInspector/helpers.ts","../src/assistDocument/hooks/useDocumentState.ts","../src/helpers/ids.ts","../src/constants.ts","../src/assistDocument/hooks/useStudioAssistDocument.ts","../src/components/TimeAgo.tsx","../src/helpers/misc.ts","../src/assistInspector/InstructionTaskHistoryButton.tsx","../src/useApiClient.ts","../src/assistLayout/AiAssistanceConfigContext.tsx","../src/assistLayout/RunInstructionProvider.tsx","../src/assistDocument/RequestRunInstructionProvider.tsx","../src/onboarding/InspectorOnboarding.tsx","../src/onboarding/onboardingStore.ts","../src/assistInspector/AssistInspector.tsx","../src/assistInspector/index.ts","../src/assistDocument/AssistDocumentContext.tsx","../src/presence/useAssistPresence.ts","../src/components/FadeInContent.tsx","../../node_modules/@sanity/color/dist/index.js","../src/presence/AssistAvatar.tsx","../src/presence/AiFieldPresence.tsx","../src/components/AssistFeatureBadge.tsx","../src/onboarding/FieldActionsOnboarding.tsx","../src/onboarding/FirstAssistedPathProvider.tsx","../src/assistFormComponents/AssistField.tsx","../src/_lib/connector/ConnectorsStoreContext.ts","../src/_lib/connector/useConnectorsStore.ts","../src/_lib/connector/helpers.ts","../src/_lib/connector/useRegionRects.ts","../src/_lib/connector/ConnectorRegion.tsx","../src/_lib/connector/ConnectFromRegion.tsx","../src/_lib/connector/ConnectorsStore.ts","../src/_lib/connector/ConnectorsProvider.tsx","../src/_lib/connector/mapConnectorToLine.ts","../src/assistConnectors/draw/arrowPath.ts","../src/assistConnectors/draw/connectorPath.ts","../src/assistConnectors/ConnectorPath.tsx","../src/assistConnectors/AssistConnectorsOverlay.tsx","../src/legacy-types.ts","../src/assistLayout/AlphaMigration.tsx","../src/assistLayout/AssistLayout.tsx","../src/components/SafeValueInput.tsx","../src/assistFormComponents/AssistFormBlock.tsx","../src/assistFormComponents/AssistItem.tsx","../src/assistDocument/components/instruction/BackToInstructionsLink.tsx","../src/assistDocument/components/AssistDocumentForm.tsx","../src/assistDocument/components/helpers.ts","../src/assistDocument/components/instruction/InstructionInput.tsx","../src/assistDocument/components/generic/HiddenFieldTitle.tsx","../src/assistDocument/components/instruction/appearance/InstructionVisibility.tsx","../src/assistDocument/components/instruction/appearance/IconInput.tsx","../src/assistInspector/FieldAutocomplete.tsx","../src/assistDocument/components/instruction/FieldRefInput.tsx","../src/assistDocument/components/InstructionsArrayInput.tsx","../src/assistFormComponents/AssistInlineFormBlock.tsx","../src/assistDocument/components/FieldRefPreview.tsx","../src/components/HideReferenceChangedBannerInput.tsx","../src/schemas/contextDocumentSchema.tsx","../../node_modules/get-random-values-esm/index.mjs","../src/_lib/randomKey.ts","../src/assistDocument/components/instruction/PromptInput.tsx","../src/assistDocument/components/InstructionsArrayField.tsx","../src/schemas/assistDocumentSchema.tsx","../src/schemas/index.ts","../src/helpers/useAssistSupported.ts","../src/assistDocument/hooks/useAssistDocumentContextValue.tsx","../src/fieldActions/PrivateIcon.tsx","../src/components/ImageContext.tsx","../src/fieldActions/generateCaptionActions.tsx","../src/fieldActions/assistFieldActions.tsx","../src/assistDocument/AssistDocumentContextProvider.tsx","../src/assistDocument/hooks/useInstructionToaster.tsx","../src/assistDocument/AssistDocumentInput.tsx","../src/presence/AssistDocumentPresence.tsx","../src/plugin.tsx"],"sourcesContent":["import {SanityDocument, ValidationMarker} from 'sanity'\nimport {PortableTextBlock, PortableTextMarkDefinition, PortableTextSpan} from '@portabletext/types'\n\n//id prefixes\nexport const assistDocumentIdPrefix = 'sanity.assist.schemaType.'\nexport const assistDocumentStatusIdPrefix = 'sanity.assist.status.'\nexport const assistSchemaIdPrefix = 'sanity.assist.schema.'\n\n// type names\nexport const assistDocumentTypeName = 'sanity.assist.schemaType.annotations' as const\nexport const assistFieldTypeName = 'sanity.assist.schemaType.field' as const\nexport const instructionTypeName = 'sanity.assist.instruction' as const\nexport const promptTypeName = 'sanity.assist.instruction.prompt' as const\n\nexport const userInputTypeName = 'sanity.assist.instruction.userInput' as const\nexport const instructionContextTypeName = 'sanity.assist.instruction.context' as const\nexport const fieldReferenceTypeName = 'sanity.assist.instruction.fieldRef' as const\n\n// user-facing type. Intentionally does not have sanity. prefix\nexport const contextDocumentTypeName = 'assist.instruction.context' as const\n\nexport const assistTasksStatusTypeName = 'sanity.assist.task.status' as const\nexport const instructionTaskTypeName = 'sanity.assist.instructionTask' as const\nexport const fieldPresenceTypeName = 'sanity.assist.instructionTask.presence' as const\n\nexport const assistSerializedTypeName = 'sanity.assist.serialized.type' as const\nexport const assistSerializedFieldTypeName = 'sanity.assist.serialized.field' as const\n\n//url params\nexport const inspectParam = 'inspect' as const\nexport const fieldPathParam = 'pathKey' as const\nexport const instructionParam = 'instruction' as const\n\n// other constants\nexport const documentRootKey = '<document>'\n\nexport interface SerializedSchemaMember {\n _type?: typeof assistSerializedFieldTypeName\n type: string\n name: string\n title?: string\n values?: string[]\n of?: SerializedSchemaMember[]\n to?: {type: string}[]\n}\n\nexport interface SerializedSchemaType {\n _type?: typeof assistSerializedTypeName\n _id?: string\n type: string\n title?: string\n name?: string\n fields?: SerializedSchemaMember[]\n of?: {type: string}[]\n to?: {type: string}[]\n options?: {\n imagePromptField?: string\n }\n}\n\nexport interface AssistDocument extends SanityDocument {\n fields?: AssistField[]\n instructions?: StudioInstruction[]\n}\n\nexport interface StudioAssistDocument {\n _id: string\n _type: typeof assistDocumentTypeName\n fields?: StudioAssistField[]\n\n // added\n tasks?: InstructionTask[]\n}\nexport interface AssistField {\n _key: string\n _type: typeof assistFieldTypeName\n path?: string\n instructions?: StudioInstruction[]\n}\n\nexport interface StudioAssistField {\n _key: string\n path?: string\n instructions?: StudioInstruction[]\n\n // added\n tasks?: InstructionTask[]\n}\n\nexport interface FieldRef extends PortableTextMarkDefinition {\n _type: typeof fieldReferenceTypeName\n path?: string\n}\n\nexport interface ContextBlock {\n _type: typeof instructionContextTypeName\n reference?: {\n _type: 'reference'\n _ref?: string\n }\n}\n\nexport interface UserInputBlock {\n _type: typeof userInputTypeName\n _key: string\n message?: string\n description?: string\n}\n\nexport type InlinePromptBlock = PortableTextSpan | FieldRef | UserInputBlock | ContextBlock\nexport type PromptTextBlock = PortableTextBlock<never, InlinePromptBlock, 'normal', never>\n\nexport type PromptBlock = PromptTextBlock | FieldRef | ContextBlock | UserInputBlock\n\nexport interface AiPresence {\n _key: string\n _type: typeof fieldPresenceTypeName\n path?: string\n started?: string\n}\n\nexport type TaskEndedReason = 'success' | 'error' | 'aborted' | 'timeout'\n\nexport interface InstructionTask {\n _key: string\n _type: typeof instructionTaskTypeName\n instructionKey?: string\n title?: string\n path?: string\n started?: string\n updated?: string\n ended?: string\n message?: string\n reason?: TaskEndedReason\n presence?: AiPresence[]\n startedByUserId?: string\n\n //added by studio\n // eslint-disable-next-line no-use-before-define\n instruction?: StudioInstruction\n}\n\nexport interface StudioInstruction {\n _key: string\n _type: typeof instructionTypeName\n prompt?: PromptBlock[]\n\n icon?: string\n userId?: string\n title?: string\n placeholder?: string\n\n //added after query / synthetic fields\n tasks?: InstructionTask[]\n validation?: ValidationMarker[]\n}\n\nexport interface AssistTasksStatus {\n _id: string\n _type: typeof assistTasksStatusTypeName\n tasks?: InstructionTask[]\n}\n\nexport interface AssistInspectorRouteParams {\n [inspectParam]?: string\n [fieldPathParam]?: string\n [instructionParam]?: string\n}\n","import {SanityClient} from '@sanity/client'\nimport {defer, delay, merge, Observable, of, partition, switchMap, throwError} from 'rxjs'\nimport {filter, mergeMap, share, take} from 'rxjs/operators'\nimport {exhaustMapToWithTrailing} from 'rxjs-exhaustmap-with-trailing'\nimport {MutationEvent, ReconnectEvent, WelcomeEvent} from 'sanity'\n\n/** @internal */\nexport type ListenQueryParams = Record<string, string | number | boolean | string[]>\n\n/** @beta */\nexport interface ListenQueryOptions {\n tag?: string\n apiVersion?: string\n throttleTime?: number\n transitions?: ('update' | 'appear' | 'disappear')[]\n}\n\nconst fetch = (\n client: SanityClient,\n query: string,\n params: ListenQueryParams,\n options: ListenQueryOptions\n) =>\n defer(() =>\n // getVersionedClient(options.apiVersion)\n client.observable.fetch(query, params, {\n tag: options.tag,\n filterResponse: true,\n })\n )\n\nconst listen = (\n client: SanityClient,\n query: string,\n params: ListenQueryParams,\n options: ListenQueryOptions\n) =>\n defer(() =>\n // getVersionedClient(options.apiVersion)\n client.listen(query, params, {\n events: ['welcome', 'mutation', 'reconnect'],\n includeResult: false,\n visibility: 'query',\n tag: options.tag,\n })\n ) as Observable<ReconnectEvent | WelcomeEvent | MutationEvent>\n\nfunction isWelcomeEvent(\n event: MutationEvent | ReconnectEvent | WelcomeEvent\n): event is WelcomeEvent {\n return event.type === 'welcome'\n}\n\n/** @internal */\nexport const listenQuery = (\n client: SanityClient,\n query: string | {fetch: string; listen: string},\n params: ListenQueryParams = {},\n options: ListenQueryOptions = {}\n) => {\n const fetchQuery = typeof query === 'string' ? query : query.fetch\n const listenerQuery = typeof query === 'string' ? query : query.listen\n\n const fetchOnce$ = fetch(client, fetchQuery, params, options)\n\n const events$ = listen(client, listenerQuery, params, options).pipe(\n mergeMap((ev, i) => {\n const isFirst = i === 0\n if (isFirst && !isWelcomeEvent(ev)) {\n // if the first event is not welcome, it is most likely a reconnect and\n // if it's not a reconnect something is very wrong\n return throwError(\n new Error(\n ev.type === 'reconnect'\n ? 'Could not establish EventSource connection'\n : `Received unexpected type of first event \"${ev.type}\"`\n )\n )\n }\n return of(ev)\n }),\n share()\n )\n\n const [welcome$, mutationAndReconnect$] = partition(events$, isWelcomeEvent)\n const isRelevantEvent = (event: MutationEvent | ReconnectEvent | WelcomeEvent): boolean => {\n if (!options.transitions || event.type !== 'mutation') {\n return true\n }\n\n return options.transitions.includes(event.transition)\n }\n\n return merge(\n welcome$.pipe(take(1)),\n mutationAndReconnect$.pipe(\n filter(isRelevantEvent),\n switchMap((event) => merge(of(event), of(event).pipe(delay(options.throttleTime || 1000))))\n )\n ).pipe(exhaustMapToWithTrailing(fetchOnce$))\n}\n","import {useEffect, useRef, useState} from 'react'\nimport {catchError, distinctUntilChanged} from 'rxjs/operators'\nimport isEqual from 'react-fast-compare'\nimport {ListenQueryOptions, useClient} from 'sanity'\nimport {listenQuery} from './fixedListenQuery'\n\ntype Params = Record<string, string | number | boolean | string[]>\n\ntype ReturnShape<T> = {\n loading: boolean\n error: boolean\n data: T | null\n}\n\ntype Observable = {\n unsubscribe: () => void\n}\n\nconst DEFAULT_PARAMS = {}\nconst DEFAULT_OPTIONS: ListenQueryOptions = {apiVersion: `v2022-05-09`}\n\nexport function useListeningQuery<T>(\n query: string,\n params: Params = DEFAULT_PARAMS,\n options: ListenQueryOptions = DEFAULT_OPTIONS\n): ReturnShape<T> {\n const [loading, setLoading] = useState(true)\n const [error, setError] = useState(false)\n const [data, setData] = useState<T | null>(null)\n const subscription = useRef<null | Observable>(null)\n\n const client = useClient({apiVersion: `v2022-05-09`})\n\n useEffect(() => {\n if (query) {\n subscription.current = listenQuery(client, query, params, options)\n .pipe(\n distinctUntilChanged(isEqual),\n catchError((err) => {\n console.error(err)\n setError(err)\n setLoading(false)\n setData(null)\n\n return err\n })\n )\n .subscribe((documents) => {\n setData((current) => (isEqual(current, documents) ? current : documents))\n setLoading(false)\n setError(false)\n })\n }\n\n return () => {\n return subscription.current ? subscription.current.unsubscribe() : undefined\n }\n }, [query, params, options, client])\n\n return {loading, error, data}\n}\n","import {assistSerializedFieldTypeName, assistSerializedTypeName} from '../../types'\n\nexport const hiddenTypes = [\n 'any',\n 'array',\n 'block',\n 'boolean',\n 'crossDatasetReference',\n 'date',\n 'datetime',\n 'document',\n 'email',\n 'file',\n 'image',\n 'number',\n 'object',\n 'reference',\n 'span',\n 'string',\n 'text',\n 'url',\n 'slug',\n 'geopoint',\n 'sanity.assetSourceData',\n 'sanity.imageAsset',\n 'sanity.fileAsset',\n 'sanity.imageCrop',\n 'sanity.imageHotspot',\n 'sanity.imageMetadata',\n 'sanity.imageDimensions',\n 'sanity.imagePalette',\n 'sanity.imagePaletteSwatch',\n\n assistSerializedTypeName,\n assistSerializedFieldTypeName,\n 'sanity-agent.job.document',\n]\n","import {ArraySchemaType, ImageOptions, SchemaType} from 'sanity'\n\nexport function isPortableTextArray(type: ArraySchemaType) {\n return type.of.find((t) => isType(t, 'block'))\n}\n\nexport function isType(schemaType: SchemaType, typeName: string): boolean {\n if (schemaType.name === typeName) {\n return true\n }\n if (!schemaType.type) {\n return false\n }\n return isType(schemaType.type, typeName)\n}\n\nexport function isImage(schemaType: SchemaType) {\n return isType(schemaType, 'image')\n}\n\nexport function getCaptionFieldOption(schemaType: SchemaType | undefined): string | undefined {\n if (!schemaType) {\n return undefined\n }\n const captionField = (schemaType.options as ImageOptions)?.captionField\n if (captionField) {\n return captionField\n }\n return getCaptionFieldOption(schemaType.type)\n}\n","import {SchemaType} from 'sanity'\nimport {AssistOptions} from '../schemas/typeDefExtensions'\nimport {isType} from './typeUtils'\n\nexport function isSchemaAssistEnabled(type: SchemaType) {\n return !(type.options as AssistOptions | undefined)?.aiWritingAssistance?.exclude\n}\n\nexport function isAssistSupported(type: SchemaType, allowReadonlyHidden = false) {\n if (!isSchemaAssistEnabled(type)) {\n return false\n }\n\n if (isDisabled(type, allowReadonlyHidden)) {\n return false\n }\n\n if (type.jsonType === 'array') {\n const unsupportedArray = type.of.every((t) => isDisabled(t, allowReadonlyHidden))\n return !unsupportedArray\n }\n\n if (type.jsonType === 'object') {\n const unsupportedObject = type.fields.every((field) =>\n isDisabled(field.type, allowReadonlyHidden)\n )\n return !unsupportedObject\n }\n return true\n}\n\nfunction isDisabled(type: SchemaType, allowReadonlyHidden: boolean) {\n const readonlyHidden = !!type.readOnly || !!type.hidden\n return (\n !isSchemaAssistEnabled(type) ||\n isUnsupportedType(type) ||\n (!allowReadonlyHidden && readonlyHidden)\n )\n}\n\nfunction isUnsupportedType(type: SchemaType) {\n return (\n type.jsonType === 'number' ||\n type.name === 'sanity.imageCrop' ||\n type.name === 'sanity.imageHotspot' ||\n isType(type, 'reference') ||\n isType(type, 'crossDatasetReference') ||\n isType(type, 'slug') ||\n isType(type, 'url') ||\n isType(type, 'date') ||\n isType(type, 'datetime') ||\n isType(type, 'file')\n )\n}\n","import {\n ArraySchemaType,\n ImageOptions,\n ObjectSchemaType,\n ReferenceSchemaType,\n Schema,\n SchemaType,\n typed,\n} from 'sanity'\nimport {\n assistSerializedFieldTypeName,\n assistSerializedTypeName,\n SerializedSchemaMember,\n SerializedSchemaType,\n assistSchemaIdPrefix,\n} from '../../types'\nimport {hiddenTypes} from './schemaUtils'\nimport {isAssistSupported} from '../../helpers/assistSupported'\n\ninterface Options {\n leanFormat?: boolean\n}\n\nconst inlineTypes = ['document', 'object', 'image', 'file']\n\nexport function serializeSchema(schema: Schema, options?: Options): SerializedSchemaType[] {\n const list = schema\n .getTypeNames()\n .filter((t) => !(hiddenTypes.includes(t) || t.startsWith('sanity.')))\n .map((t) => schema.get(t))\n .filter((t): t is SchemaType => !!t)\n .filter((t) => !t.hidden && !t.readOnly)\n .map((t) => getSchemaStub(t, schema, options))\n .filter((t) => {\n if ('to' in t && t.to && !t.to.length) {\n return false\n }\n if ('of' in t && t.of && !t.of.length) {\n return false\n }\n if ('fields' in t && t.fields && !t.fields.length) {\n return false\n }\n return true\n })\n list.sort((a, b) => (a?.name ?? '').localeCompare(b?.name ?? ''))\n return list\n}\n\nfunction getSchemaStub(\n schemaType: SchemaType,\n schema: Schema,\n options?: Options\n): SerializedSchemaType {\n if (!schemaType.type?.name) {\n console.error('Missing type name', schemaType.type)\n throw new Error('Type is missing name!')\n }\n const baseSchema: SerializedSchemaType = {\n // we dont need type or id when we send using POST, so leave these out to save bandwidth\n ...(options?.leanFormat\n ? {}\n : {_id: `${assistSchemaIdPrefix}${schemaType.name}`, _type: assistSerializedTypeName}),\n name: schemaType.name,\n title: schemaType.title,\n type: schemaType.type.name,\n ...getBaseFields(schema, schemaType, schemaType.type.name, options),\n }\n\n return removeUndef(baseSchema)\n}\n\nfunction getBaseFields(\n schema: Schema,\n type: SchemaType,\n typeName: string,\n options: Options | undefined\n) {\n const imagePromptField = (type.options as ImageOptions)?.imagePromptField\n return removeUndef({\n options: imagePromptField\n ? {\n imagePromptField: imagePromptField,\n }\n : undefined,\n values:\n type.jsonType === 'string' && type?.options?.list\n ? type?.options?.list.map((v) => (typeof v === 'string' ? v : v.value ?? `${v.title}`))\n : undefined,\n of: 'of' in type && typeName === 'array' ? arrayOf(type, schema, options) : undefined,\n to:\n 'to' in type && typeName === 'reference'\n ? refToTypeNames(type as ReferenceSchemaType)\n : undefined,\n fields:\n 'fields' in type && inlineTypes.includes(typeName)\n ? serializeFields(schema, type, options)\n : undefined,\n })\n}\n\nfunction serializeFields(\n schema: Schema,\n schemaType: ObjectSchemaType,\n options: Options | undefined\n) {\n return schemaType.fields\n .filter((f) => !['sanity.imageHotspot', 'sanity.imageCrop'].includes(f.type?.name ?? ''))\n .filter((f) => isAssistSupported(f.type))\n .filter((f) => !f.type.hidden && !f.type.readOnly)\n .map((field) => serializeMember(schema, field.type, field.name, options))\n}\n\nfunction serializeMember(\n schema: Schema,\n type: SchemaType,\n name: string,\n options: Options | undefined\n): SerializedSchemaMember {\n const typeNameExists = !!schema.get(type?.name)\n const typeName = typeNameExists ? type.name : type.type?.name ?? ''\n return removeUndef({\n ...(options?.leanFormat ? {} : {_type: assistSerializedFieldTypeName}),\n name: name,\n type: typeName,\n title: type.title,\n ...getBaseFields(schema, type, typeName, options),\n })\n}\n\nfunction arrayOf(\n arrayType: ArraySchemaType,\n schema: Schema,\n options: Options | undefined\n): SerializedSchemaMember[] {\n return arrayType.of\n .filter((type) => isAssistSupported(type))\n .map((t) => {\n return serializeMember(schema, t, t.name, options)\n })\n}\n\nfunction refToTypeNames(type: ReferenceSchemaType) {\n return type.to.map((t) => ({\n type: typed<string>(t.name),\n }))\n}\n\nfunction removeUndef<T extends Record<string, any>>(obj: T): T {\n Object.keys(obj).forEach((key) => (obj[key] === undefined ? delete obj[key] : {}))\n return obj\n}\n","import {useClient, useSchema} from 'sanity'\nimport {Box, Button, Card, Flex, Label, Spinner, Stack} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\nimport {assistSerializedTypeName, SerializedSchemaType} from '../../types'\nimport {SyncIcon} from '@sanity/icons'\nimport {useListeningQuery} from '../../_lib/useListeningQuery'\nimport {serializeSchema} from './serializeSchema'\n\nconst NO_DATA: SerializedSchemaType[] = []\n\nconst defaultTitle = 'Sync schema'\n\nexport function SchemaTypeTool() {\n const schema = useSchema()\n const client = useClient({apiVersion: '2023-01-01'})\n const [saving, setSaving] = useState(false)\n const [syncTitle, setSyncTitle] = useState(defaultTitle)\n\n const {data} = useListeningQuery<SerializedSchemaType[]>('*[_type==$type] | order(_type)', {\n type: assistSerializedTypeName,\n })\n\n const types = useMemo(() => {\n return serializeSchema(schema)\n }, [schema])\n\n const storeTypes = useCallback(() => {\n setSaving(true)\n let canSave = true\n async function store() {\n setSyncTitle(`Syncing 0/${types.length}`)\n const transaction = client.transaction()\n for (let i = 0; i < types.length; i++) {\n if (!canSave) {\n break\n }\n const type = types[i]\n await transaction.createOrReplace(type as Required<typeof type>)\n if (i > 0 && i % 50 === 0) {\n await transaction.commit()\n transaction.reset()\n setSyncTitle(`Syncing ${i}/${types.length}`)\n }\n }\n await transaction.commit()\n }\n store()\n .catch(console.error)\n .finally(() => {\n setSaving(false)\n setSyncTitle(defaultTitle)\n })\n return () => {\n canSave = false\n setSaving(false)\n setSyncTitle(defaultTitle)\n }\n }, [types, client, setSaving, setSyncTitle])\n\n return (\n <Card padding={4} overflow=\"auto\" style={{height: 'calc(100vh - 81px)'}}>\n <Stack space={4}>\n <Box>\n <Button\n icon={saving ? <Spinner style={{marginTop: 5}} /> : SyncIcon}\n text={syncTitle}\n disabled={saving}\n onClick={storeTypes}\n />\n </Box>\n <Flex gap={2}>\n <Stack space={2}>\n <Label>Studio schema</Label>\n <ul>\n {types.map((type) => (\n <li key={type.name}>\n <SchemaEntry schemaStub={type} />\n </li>\n ))}\n </ul>\n </Stack>\n\n <Stack space={2}>\n <Label>Stored schema</Label>\n <ul>\n {(data ?? NO_DATA).map((type) => (\n <li key={type.name}>\n <SchemaEntry schemaStub={type} />\n </li>\n ))}\n </ul>\n </Stack>\n </Flex>\n </Stack>\n </Card>\n )\n}\n\nfunction SchemaEntry({schemaStub}: {schemaStub: SerializedSchemaType}) {\n const out = useMemo(() => JSON.stringify(schemaStub, null, 2), [schemaStub])\n return <pre>{out}</pre>\n}\n","export const aiInspectorId = 'ai-assistance'\n","import {Box, BoxProps, Flex, focusFirstDescendant, Spinner, Text} from '@sanity/ui'\nimport React, {HTMLProps, useEffect, useMemo, useRef} from 'react'\nimport {tap} from 'rxjs/operators'\nimport {\n createPatchChannel,\n DocumentMutationEvent,\n DocumentRebaseEvent,\n FormBuilder,\n fromMutationPatches,\n PatchMsg,\n useDocumentPresence,\n useDocumentStore,\n} from 'sanity'\nimport {useDocumentPane} from 'sanity/desk'\n\nconst preventDefault = (ev: React.FormEvent) => ev.preventDefault()\n\nexport function DocumentForm(\n props: Omit<BoxProps, 'as'> & Omit<HTMLProps<HTMLDivElement>, 'as' | 'onSubmit' | 'ref'>\n) {\n const {\n collapsedFieldSets,\n collapsedPaths,\n displayed: value,\n documentId,\n documentType,\n editState,\n formState,\n onBlur,\n onChange,\n onFocus,\n onPathOpen,\n onSetActiveFieldGroup,\n onSetCollapsedFieldSet,\n onSetCollapsedPath,\n ready,\n validation,\n } = useDocumentPane()\n\n const documentStore = useDocumentStore()\n const presence = useDocumentPresence(documentId)\n\n // The `patchChannel` is an INTERNAL publish/subscribe channel that we use to notify form-builder\n // nodes about both remote and local patches.\n // - Used by the Portable Text input to modify selections.\n // - Used by `withDocument` to reset value.\n const patchChannel = useMemo(() => createPatchChannel(), [])\n\n const isLocked = editState?.transactionSyncLock?.enabled\n\n useEffect(() => {\n const sub = documentStore.pair\n .documentEvents(documentId, documentType)\n .pipe(\n tap((event) => {\n if (event.type === 'mutation') {\n patchChannel.publish(prepareMutationEvent(event))\n }\n\n if (event.type === 'rebase') {\n patchChannel.publish(prepareRebaseEvent(event))\n }\n })\n )\n .subscribe()\n\n return () => {\n sub.unsubscribe()\n }\n }, [documentId, documentStore, documentType, patchChannel])\n\n const hasRev = Boolean(value?._rev)\n useEffect(() => {\n if (hasRev) {\n // this is a workaround for an issue that caused the document pushed to withDocument to get\n // stuck at the first initial value.\n // This effect is triggered only when the document goes from not having a revision, to getting one\n // so it will kick in as soon as the document is received from the backend\n patchChannel.publish({\n type: 'mutation',\n patches: [],\n snapshot: value,\n })\n }\n // React to changes in hasRev only\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [hasRev])\n\n const formRef = useRef<null | HTMLDivElement>(null)\n\n useEffect(() => {\n focusFirstDescendant(formRef.current!)\n }, [])\n\n if (isLocked) {\n return (\n <Box as=\"form\" {...props} ref={formRef}>\n <Flex\n align=\"center\"\n direction=\"column\"\n height=\"fill\"\n justify=\"center\"\n padding={3}\n sizing=\"border\"\n >\n <Text size={1}>\n Please hold tight while the document is synced. This usually happens right after the\n document has been published, and it shouldn’t take more than a few seconds\n </Text>\n </Flex>\n </Box>\n )\n }\n\n return (\n <Box as=\"form\" {...props} onSubmit={preventDefault} ref={formRef}>\n {ready ? (\n formState === null ? (\n <Flex\n align=\"center\"\n direction=\"column\"\n height=\"fill\"\n justify=\"center\"\n padding={3}\n sizing=\"border\"\n >\n <Text size={1}>This form is hidden</Text>\n </Flex>\n ) : (\n <FormBuilder\n __internal_patchChannel={patchChannel}\n collapsedFieldSets={collapsedFieldSets}\n collapsedPaths={collapsedPaths}\n focusPath={formState.focusPath}\n changed={formState.changed}\n focused={formState.focused}\n groups={formState.groups}\n id=\"root\"\n members={formState.members}\n onChange={onChange}\n onFieldGroupSelect={onSetActiveFieldGroup}\n onPathBlur={onBlur}\n onPathFocus={onFocus}\n onPathOpen={onPathOpen}\n onSetFieldSetCollapsed={onSetCollapsedFieldSet}\n onSetPathCollapsed={onSetCollapsedPath}\n presence={presence}\n readOnly={formState.readOnly}\n schemaType={formState.schemaType}\n validation={validation}\n value={formState.value}\n />\n )\n ) : (\n <Flex\n align=\"center\"\n direction=\"column\"\n height=\"fill\"\n justify=\"center\"\n padding={3}\n sizing=\"border\"\n >\n <Spinner muted />\n\n <Box marginTop={3}>\n <Text align=\"center\" muted size={1}>\n Loading document\n </Text>\n </Box>\n </Flex>\n )}\n </Box>\n )\n}\n\nfunction prepareMutationEvent(event: DocumentMutationEvent): PatchMsg {\n const patches = event.mutations.map((mut) => mut.patch).filter(Boolean)\n\n return {\n type: 'mutation',\n snapshot: event.document,\n patches: fromMutationPatches(event.origin, patches),\n }\n}\n\nfunction prepareRebaseEvent(event: DocumentRebaseEvent): PatchMsg {\n const remotePatches = event.remoteMutations.map((mut) => mut.patch).filter(Boolean)\n const localPatches = event.localMutations.map((mut) => mut.patch).filter(Boolean)\n\n return {\n type: 'rebase',\n snapshot: event.document,\n patches: fromMutationPatches('remote', remotePatches).concat(\n fromMutationPatches('local', localPatches)\n ),\n }\n}\n","import {ObjectSchemaType, SchemaType} from 'sanity'\nimport {createContext} from 'react'\n\nexport interface SelectedFieldContextValue {\n documentSchema?: ObjectSchemaType\n fieldSchema?: SchemaType\n}\n\nexport const SelectedFieldContext = createContext<SelectedFieldContextValue | undefined>(undefined)\nexport const SelectedFieldContextProvider = SelectedFieldContext.Provider\n","import {\n BlockContentIcon,\n BlockquoteIcon,\n DocumentIcon,\n ImageIcon,\n LinkIcon,\n OlistIcon,\n StringIcon,\n} from '@sanity/icons'\nimport {isObjectSchemaType, ObjectSchemaType, Path, pathToString, SchemaType} from 'sanity'\nimport {ComponentType, useContext, useMemo} from 'react'\nimport {AssistInspectorRouteParams, documentRootKey, fieldPathParam} from '../types'\nimport {usePaneRouter} from 'sanity/desk'\nimport {isAssistSupported} from '../helpers/assistSupported'\nimport {isPortableTextArray, isType} from '../helpers/typeUtils'\nimport {SelectedFieldContext} from '../assistDocument/components/SelectedFieldContext'\n\nexport interface FieldRef {\n key: string\n path: Path\n title: string\n schemaType: SchemaType\n icon: ComponentType\n}\n\nconst maxDepth = 4\n\nexport function getTypeIcon(schemaType: SchemaType) {\n let t: SchemaType | undefined = schemaType\n\n while (t) {\n if (t.icon) return t.icon\n t = t.type\n }\n\n if (isType(schemaType, 'slug')) return LinkIcon\n if (isType(schemaType, 'image')) return ImageIcon\n if (schemaType.jsonType === 'array' && isPortableTextArray(schemaType)) return BlockContentIcon\n\n if (schemaType.jsonType === 'array') return OlistIcon\n if (schemaType.jsonType === 'object') return BlockquoteIcon\n if (schemaType.jsonType === 'string') return StringIcon\n\n return DocumentIcon\n}\n\nexport function getFieldRefsWithDocument(schemaType: ObjectSchemaType): FieldRef[] {\n const fields = getFieldRefs(schemaType)\n return [\n {\n key: documentRootKey,\n icon: schemaType.icon ?? DocumentIcon,\n title: `The entire document`,\n path: [],\n schemaType: schemaType,\n },\n\n ...fields,\n ]\n}\n\nexport function getFieldRefs(\n schemaType: ObjectSchemaType,\n parent?: FieldRef,\n depth = 0\n): FieldRef[] {\n if (depth >= maxDepth) {\n return []\n }\n return schemaType.fields\n .filter((f) => !f.name.startsWith('_'))\n .flatMap((field) => {\n const path: Path = parent ? [...parent.path, field.name] : [field.name]\n const title = field.type.title ?? field.name\n const fieldRef: FieldRef = {\n key: pathToString(path),\n path,\n title: parent ? [parent.title, title].join(' / ') : title,\n schemaType: field.type,\n icon: getTypeIcon(field.type),\n }\n const fields =\n field.type.jsonType === 'object' ? getFieldRefs(field.type, fieldRef, depth + 1) : []\n\n if (!isAssistSupported(field.type, true)) {\n return fields\n }\n return [fieldRef, ...fields]\n })\n}\n\nexport function useSelectedField(\n documentSchemaType?: SchemaType,\n path?: string\n): FieldRef | undefined {\n const selectableFields = useMemo(\n () =>\n documentSchemaType && isObjectSchemaType(documentSchemaType)\n ? getFieldRefsWithDocument(documentSchemaType)\n : [],\n [documentSchemaType]\n )\n\n return useMemo(() => {\n return path ? selectableFields?.find((f) => f.key === path) : undefined\n }, [selectableFields, path])\n}\n\nexport function useSelectedFieldTitle() {\n const {params} = useAiPaneRouter()\n const {documentSchema} = useContext(SelectedFieldContext) ?? {}\n const selectedField = useSelectedField(documentSchema, params[fieldPathParam])\n return getFieldTitle(selectedField)\n}\n\nexport function getFieldTitle(field?: FieldRef) {\n const schemaType = field?.schemaType\n return schemaType?.title ?? schemaType?.name ?? 'Untitled'\n}\n\nexport function useAiPaneRouter() {\n const paneRouter = usePaneRouter()\n\n return useMemo(\n () =>\n ({...paneRouter, params: paneRouter.params ?? {}} as Omit<\n typeof paneRouter,\n 'setParams' | 'params'\n > & {\n params: AssistInspectorRouteParams\n setParams: (p: Record<keyof AssistInspectorRouteParams, string | undefined>) => void\n }),\n [paneRouter]\n )\n}\n","import {useEditState} from 'sanity'\n\nexport function useDocumentState<T>(id: string, docType: string): T | undefined {\n const state = useEditState(id, docType)\n return (state.draft || state.published) as T | undefined\n}\n","import {assistDocumentIdPrefix, assistDocumentStatusIdPrefix} from '../types'\n\nconst aiDocPrefixPattern = new RegExp(`^${assistDocumentIdPrefix}`)\n\nexport function publicId(id: string) {\n return id.replace('drafts.', '')\n}\n\nexport function assistDocumentId(documentType: string) {\n return `${assistDocumentIdPrefix}${documentType}`\n}\n\nexport function documentTypeFromAiDocumentId(id: string) {\n return id.replace(aiDocPrefixPattern, '')\n}\n\nexport function assistTasksStatusId(documentId: string) {\n return `${assistDocumentStatusIdPrefix}${publicId(documentId)}`\n}\n","import {minutesToMilliseconds} from 'date-fns'\n\nexport const releaseAnnouncementUrl =\n 'https://www.sanity.io/blog/sanity-ai-assist-announcement?utm_source=sanity-assist-plugin&utm_medium=organic_social&utm_campaign=ai-assist&utm_content='\n\nexport const instructionGuideUrl =\n 'https://sanity.io/guides/getting-started-with-ai-assist-instructions?utm_source=sanity-assist-plugin&utm_medium=organic_social&utm_campaign=ai-assist&utm_content='\n\nexport const giveFeedbackUrl = 'https://forms.gle/Kwz7CThxGeA2GiEU8'\n\nexport const salesUrl =\n 'https://www.sanity.io/contact/sales?utm_source=sanity-assist-plugin&utm_medium=organic_social&utm_campaign=ai-assist&utm_content='\n\nexport const packageName = '@sanity/assist'\n\nexport const pluginTitle = 'Sanity AI Assist'\n\nexport const pluginTitleShort = 'AI Assist'\n\nexport const maxHistoryVisibilityMs = minutesToMilliseconds(30)\n","import {useEffect, useMemo} from 'react'\nimport {\n assistDocumentTypeName,\n AssistTasksStatus,\n assistTasksStatusTypeName,\n FieldRef,\n fieldReferenceTypeName,\n InstructionTask,\n StudioAssistDocument,\n StudioAssistField,\n StudioInstruction,\n} from '../../types'\nimport {\n ObjectSchemaType,\n pathToString,\n typed,\n useClient,\n useCurrentUser,\n useValidationStatus,\n ValidationMarker,\n} from 'sanity'\nimport {useDocumentState} from './useDocumentState'\nimport {assistDocumentId, assistTasksStatusId, publicId} from '../../helpers/ids'\nimport {maxHistoryVisibilityMs} from '../../constants'\n\ninterface UseAssistDocumentProps {\n documentId: string\n schemaType: ObjectSchemaType\n}\n\nexport function useStudioAssistDocument({\n documentId,\n schemaType,\n}: UseAssistDocumentProps): StudioAssistDocument | undefined {\n const documentTypeName = schemaType.name\n const currentUser = useCurrentUser()\n\n const validation = useValidationStatus(publicId(documentId), schemaType.name).validation\n const assistDocument = useDocumentState<StudioAssistDocument>(\n assistDocumentId(documentTypeName),\n assistDocumentTypeName\n )\n const assistTasksStatus = useDocumentState<AssistTasksStatus>(\n assistTasksStatusId(documentId ?? ''),\n assistTasksStatusTypeName\n )\n\n const client = useClient({apiVersion: '2023-01-01'})\n\n useEffect(() => {\n if (!assistDocument) {\n client.createIfNotExists({\n _id: assistDocumentId(documentTypeName),\n _type: assistDocumentTypeName,\n })\n }\n }, [client, assistDocument, documentTypeName])\n\n return useMemo(() => {\n if (!assistDocument) {\n return undefined\n }\n const tasks = assistTasksStatus?.tasks ?? []\n const fields = (assistDocument?.fields ?? []).map((assistField): StudioAssistField => {\n return {\n ...assistField,\n tasks: tasks.filter((task) => task.path === assistField.path),\n instructions: assistField.instructions\n ?.filter((p) => !p.userId || p.userId === currentUser?.id)\n .map((instruction) => asStudioInstruction(instruction, tasks, validation)),\n }\n })\n return typed<StudioAssistDocument>({\n ...assistDocument,\n tasks: tasks?.map((task) => {\n const instruction = fields\n .find((f) => f.path === task.path)\n ?.instructions?.find((i) => i._key === task.instructionKey)\n return {\n ...task,\n instruction,\n }\n }),\n fields: fields,\n })\n }, [assistDocument, assistTasksStatus, currentUser, validation])\n}\n\nfunction asStudioInstruction(\n instruction: StudioInstruction,\n run: InstructionTask[],\n validation: ValidationMarker[]\n): StudioInstruction {\n const errors = validation.filter((marker) => marker.level === 'error')\n\n const fieldRefs: FieldRef[] = (instruction?.prompt ?? []).flatMap((block) => {\n if (block._type === 'block') {\n return block.children.filter((c): c is FieldRef => c._type === fieldReferenceTypeName)\n }\n return []\n })\n\n return {\n ...instruction,\n tasks: run\n .filter((task) => task.instructionKey === instruction._key)\n .filter(\n (task) =>\n task.started &&\n new Date().getTime() - new Date(task.started).getTime() < maxHistoryVisibilityMs\n ),\n validation: errors.filter((marker) =>\n fieldRefs\n .map((r) => r.path)\n .filter((p): p is string => !!p)\n .find((path) => pathToString(marker.path) === path)\n ),\n }\n}\n","import {useEffect, useReducer} from 'react'\nimport formatDistanceToNow from 'date-fns/formatDistanceToNow'\n\nfunction useInterval(ms: number) {\n const [tick, update] = useReducer((n) => n + 1, 0)\n\n useEffect(() => {\n const i = setInterval(update, ms)\n return () => clearInterval(i)\n }, [ms])\n return tick\n}\n\nexport function TimeAgo({date}: {date?: string}) {\n useInterval(1000)\n const timeSince = formatDistanceToNow(date ? new Date(date) : new Date())\n return <span title={timeSince}>{timeSince} ago</span>\n}\n","import {documentRootKey, StudioInstruction} from '../types'\nimport {Path, pathToString} from 'sanity'\nimport {useMemo} from 'react'\n\nexport function usePathKey(path: Path | string) {\n return useMemo(() => {\n if (path.length) {\n return Array.isArray(path) ? pathToString(path) : path\n }\n return documentRootKey\n }, [path])\n}\n\nexport function getInstructionTitle(instruction?: StudioInstruction) {\n return instruction?.title ?? 'Untitled'\n}\n","import {AssistTasksStatus, InstructionTask, StudioInstruction, TaskEndedReason} from '../types'\nimport {createElement, ForwardedRef, forwardRef, useCallback, useMemo, useState} from 'react'\nimport {\n Box,\n Button,\n Card,\n Flex,\n Popover,\n Spinner,\n Stack,\n Text,\n useClickOutside,\n useGlobalKeyDown,\n useLayer,\n} from '@sanity/ui'\nimport {\n CheckmarkCircleIcon,\n ClockIcon,\n CloseCircleIcon,\n ErrorOutlineIcon,\n SyncIcon,\n} from '@sanity/icons'\nimport {TimeAgo} from '../components/TimeAgo'\nimport {StatusButton, StatusButtonProps, typed, useClient} from 'sanity'\nimport {getInstructionTitle} from '../helpers/misc'\nimport styled, {keyframes} from 'styled-components'\nimport {assistTasksStatusId} from '../helpers/ids'\nimport {maxHistoryVisibilityMs, pluginTitle} from '../constants'\n\nexport interface InstructionTaskHistoryButtonProps {\n documentId?: string\n tasks: InstructionTask[] | undefined\n instructions: StudioInstruction[] | undefined\n showTitles: boolean\n}\n\ninterface CancelableInstructionTask extends InstructionTask {\n cancel: () => void\n title?: string\n}\n\nconst rotate = keyframes`\n 0% {\n transform: rotate(0);\n }\n 100% {\n transform: rotate(360deg);\n }\n`\n\nconst SyncSpinningIcon = styled(SyncIcon)`\n animation: ${rotate} 1s linear infinite;\n`\n\nconst TASK_CONFIG = {\n aborted: {\n title: 'Canceled',\n icon: CloseCircleIcon,\n tone: 'transparent',\n },\n error: {\n title: 'Error',\n icon: ErrorOutlineIcon,\n tone: 'critical',\n },\n success: {\n title: 'Completed',\n icon: CheckmarkCircleIcon,\n tone: 'positive',\n },\n timeout: {\n title: 'Timeout',\n icon: ClockIcon,\n tone: 'caution',\n },\n} as const\n\nexport function InstructionTaskHistoryButton(props: InstructionTaskHistoryButtonProps) {\n const {tasks, instructions, documentId, showTitles} = props\n\n const client = useClient({apiVersion: '2023-01-01'})\n const cancelRun = useCallback(\n (taskKey: string) => {\n if (!documentId) {\n return\n }\n const statusDocId = assistTasksStatusId(documentId)\n const basePath = `${typed<keyof AssistTasksStatus>('tasks')}[_key==\"${taskKey}\"]`\n client\n .patch(statusDocId)\n .set({\n [`${basePath}.${typed<keyof InstructionTask>('ended')}`]: new Date().toISOString(),\n [`${basePath}.${typed<keyof InstructionTask>('reason')}`]:\n typed<TaskEndedReason>('aborted'),\n })\n .commit()\n .catch(console.error)\n },\n [client, documentId]\n )\n\n const titledTasks = useMemo(() => {\n const t =\n tasks\n ?.filter(\n (task) =>\n task.started &&\n new Date().getTime() - new Date(task.started).getTime() < maxHistoryVisibilityMs\n )\n .map((task): CancelableInstructionTask => {\n const instruction = instructions?.find((i) => i._key === task.instructionKey)\n return {\n ...task,\n title: showTitles ? task.title ?? getInstructionTitle(instruction) : undefined,\n cancel: () => cancelRun(task._key),\n }\n }) ?? []\n t.sort((a, b) => new Date(b.started ?? '').getTime() - new Date(a.started ?? '').getTime())\n return t\n }, [tasks, instructions, cancelRun, showTitles])\n\n // const id = useId()\n\n const isRunning = useMemo(() => titledTasks.some((r) => !r.ended), [titledTasks])\n const hasErrors = useMemo(\n () => titledTasks.some((r) => r.reason === 'error' || r.reason === 'timeout'),\n [titledTasks]\n )\n\n const [open, setOpen] = useState(false)\n\n const toggleOpen = useCallback(() => setOpen((v) => !v), [])\n\n const [button, setButton] = useState<HTMLButtonElement | null>(null)\n const [popover, setPopover] = useState<HTMLDivElement | null>(null)\n\n const handleClickOutside = useCallback(() => {\n setOpen(false)\n }, [])\n\n useClickOutside(handleClickOutside, [button, popover])\n\n const handleEscape = useCallback(() => {\n setOpen(false)\n button?.focus()\n }, [button])\n\n return (\n <Popover\n constrainSize\n content={<TaskList onEscape={handleEscape} tasks={titledTasks} />}\n open={open && !!titledTasks?.length}\n placement=\"top\"\n portal\n ref={setPopover}\n width={0}\n >\n <TaskStatusButton\n disabled={!titledTasks?.length}\n hasErrors={hasErrors}\n isRunning={isRunning}\n onClick={toggleOpen}\n ref={setButton}\n selected={open}\n />\n </Popover>\n )\n}\n\nconst TASK_STATUS_BUTTON_TOOLTIP_PROPS: StatusButtonProps['tooltip'] = {\n placement: 'top',\n}\n\nconst TaskStatusButton = forwardRef(function TaskStatusButton(\n props: {\n disabled: boolean\n hasErrors: boolean\n isRunning: boolean\n onClick: () => void\n selected: boolean\n },\n ref: ForwardedRef<HTMLButtonElement>\n) {\n const {disabled, hasErrors, isRunning, onClick, selected} = props\n\n return (\n <StatusButton\n label={`${pluginTitle} status`}\n icon={isRunning ? SyncSpinningIcon : hasErrors ? ErrorOutlineIcon : CheckmarkCircleIcon}\n mode=\"bleed\"\n onClick={onClick}\n tone={hasErrors ? 'critical' : undefined}\n fontSize={1}\n disabled={disabled}\n ref={ref}\n selected={selected}\n tooltip={TASK_STATUS_BUTTON_TOOLTIP_PROPS}\n />\n )\n})\n\nfunction TaskList(props: {onEscape: () => void; tasks: CancelableInstructionTask[]}) {\n const {onEscape, tasks} = props\n\n const {isTopLayer} = useLayer()\n\n useGlobalKeyDown(\n useCallback(\n (event) => {\n if (isTopLayer && event.key === 'Escape') {\n onEscape()\n }\n },\n [isTopLayer, onEscape]\n )\n )\n\n return (\n <Stack padding={1} space={1}>\n {tasks.map((task) => (\n <TaskItem key={task._key} task={task} />\n ))}\n </Stack>\n )\n}\n\nfunction TaskItem(props: {task: CancelableInstructionTask}) {\n const {task} = props\n\n const taskType = task.reason && TASK_CONFIG[task.reason]\n return (\n <Card radius={2} tone={taskType && taskType?.tone}>\n <Flex align=\"center\" gap={1}>\n <Flex align=\"flex-start\" flex={1} gap={3} padding={3}>\n <Box flex=\"none\">\n <Text size={1}>\n {taskType && createElement(taskType.icon)}\n {!task.reason && <Spinner />}\n </Text>\n </Box>\n <Stack flex={1} space={2}>\n <Text size={1} weight=\"medium\">\n {taskType ? taskType.title : 'Running'}\n {task.title && <>: {task.title}</>}\n </Text>\n {task.message ? <Text size={1}>{task.message}</Text> : null}\n <Text muted size={1}>\n <TimeAgo date={task.ended ?? task.started} />\n </Text>\n </Stack>\n </Flex>\n\n {!task.ended && (\n <Box flex=\"none\" padding={1}>\n <Button fontSize={1} mode=\"bleed\" onClick={task.cancel} text=\"Cancel\" />\n </Box>\n )}\n </Flex>\n </Card>\n )\n}\n","import {useClient, useCurrentUser, useSchema} from 'sanity'\nimport {useCallback, useMemo, useState} from 'react'\nimport {serializeSchema} from './schemas/serialize/serializeSchema'\nimport {useToast} from '@sanity/ui'\nimport {SanityClient} from '@sanity/client'\n\nexport interface UserTextInstance {\n blockKey: string\n userInput: string\n}\n\nexport interface RunInstructionRequest {\n documentId: string\n assistDocumentId: string\n path: string\n instructionKey: string\n userId?: string\n userTexts?: UserTextInstance[]\n}\n\nexport interface InstructStatus {\n enabled: boolean\n initialized: boolean\n validToken: boolean\n}\n\nconst basePath = '/assist/tasks/instruction'\nconst editorialAiFieldActionFeature = 'editorialAiFieldActions'\n\nexport function useApiClient(customApiClient?: (defaultClient: SanityClient) => SanityClient) {\n const client = useClient({apiVersion: '2023-06-05'})\n return useMemo(\n () => (customApiClient ? customApiClient(client) : client),\n [client, customApiClient]\n )\n}\n\nexport function useGenerateCaption(apiClient: SanityClient) {\n const [loading, setLoading] = useState(false)\n const user = useCurrentUser()\n const schema = useSchema()\n const types = useMemo(() => serializeSchema(schema, {leanFormat: true}), [schema])\n const toast = useToast()\n\n const generateCaption = useCallback(\n ({path, documentId}: {path: string; documentId: string}) => {\n setLoading(true)\n\n return apiClient\n .request({\n method: 'POST',\n url: `/assist/tasks/generate-caption/${apiClient.config().dataset}?projectId=${\n apiClient.config().projectId\n }`,\n body: {\n path,\n documentId,\n types,\n userId: user?.id,\n },\n })\n .catch((e) => {\n toast.push({\n status: 'error',\n title: 'Generate caption failed',\n description: e.message,\n })\n setLoading(false)\n throw e\n })\n .finally(() => {\n // adding some artificial delay here\n // server responds with 201 then proceeds; we dont need to allow spamming the button\n setTimeout(() => {\n setLoading(false)\n }, 2000)\n })\n },\n [setLoading, apiClient, toast, user, types]\n )\n\n return useMemo(\n () => ({\n generateCaption,\n loading,\n }),\n [generateCaption, loading]\n )\n}\n\nexport function useGetInstructStatus(apiClient: SanityClient) {\n const [loading, setLoading] = useState(true)\n const projectClient = useClient({apiVersion: '2023-06-05'})\n\n const getInstructStatus = useCallback(async () => {\n setLoading(true)\n\n const projectId = apiClient.config().projectId\n try {\n const features = await projectClient.request<string[]>({\n method: 'GET',\n url: `/projects/${projectId}/features`,\n })\n\n const enabled = features.some((f) => f === editorialAiFieldActionFeature)\n\n const status = await apiClient.request<Omit<InstructStatus, 'enabled'>>({\n method: 'GET',\n url: `${basePath}/${apiClient.config().dataset}/status?projectId=${projectId}`,\n })\n\n return {\n ...status,\n enabled,\n }\n } finally {\n setLoading(false)\n }\n }, [setLoading, apiClient, projectClient])\n\n return {\n loading,\n getInstructStatus,\n }\n}\n\nexport function useInitInstruct(apiClient: SanityClient) {\n const [loading, setLoading] = useState(false)\n const initInstruct = useCallback(() => {\n setLoading(true)\n return apiClient\n .request({\n method: 'GET',\n url: `${basePath}/${apiClient.config().dataset}/init?projectId=${\n apiClient.config().projectId\n }`,\n })\n .finally(() => {\n setLoading(false)\n })\n }, [setLoading, apiClient])\n\n return {\n loading,\n initInstruct,\n }\n}\n\nexport function useRunInstructionApi(apiClient: SanityClient) {\n const toast = useToast()\n const [loading, setLoading] = useState(false)\n const user = useCurrentUser()\n const schema = useSchema()\n const types = useMemo(() => serializeSchema(schema, {leanFormat: true}), [schema])\n\n const runInstruction = useCallback(\n (request: RunInstructionRequest) => {\n setLoading(true)\n return apiClient\n .request({\n method: 'POST',\n url: `${basePath}/${apiClient.config().dataset}?projectId=${\n apiClient.config().projectId\n }`,\n body: {\n ...request,\n types,\n userId: user?.id,\n },\n })\n .catch((e) => {\n toast.push({\n status: 'error',\n title: 'Instruction failed',\n description: e.message,\n })\n throw e\n })\n .finally(() => {\n setLoading(false)\n })\n },\n [apiClient, types, user, toast]\n )\n\n return useMemo(\n () => ({\n runInstruction,\n loading,\n }),\n [runInstruction, loading]\n )\n}\n","import {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react'\nimport {AssistPluginConfig} from '../plugin'\nimport {InstructStatus, useApiClient, useGetInstructStatus, useInitInstruct} from '../useApiClient'\n\nexport interface AiAssistanceConfigContextValue {\n config: AssistPluginConfig\n status?: InstructStatus\n statusLoading: boolean\n initLoading: boolean\n init: () => void\n error?: Error\n}\n\nexport const AiAssistanceConfigContext = createContext<AiAssistanceConfigContextValue>({} as any)\n\nexport function useAiAssistanceConfig() {\n const context = useContext(AiAssistanceConfigContext)\n if (!context) {\n throw new Error('Missing AiAssistanceConfigContext')\n }\n return context\n}\n\nexport function AiAssistanceConfigProvider(props: {\n children?: ReactNode\n config: AssistPluginConfig\n}) {\n const [status, setStatus] = useState<InstructStatus | undefined>()\n const [error, setError] = useState<Error | undefined>()\n\n const apiClient = useApiClient(props.config?.__customApiClient)\n const {getInstructStatus, loading: statusLoading} = useGetInstructStatus(apiClient)\n const {initInstruct, loading: initLoading} = useInitInstruct(apiClient)\n\n useEffect(() => {\n getInstructStatus()\n .then((s) => setStatus(s))\n .catch((e) => {\n console.error(e)\n setError(e as Error)\n })\n }, [getInstructStatus])\n\n const init = useCallback(async () => {\n setError(undefined)\n try {\n await initInstruct()\n const status = await getInstructStatus()\n setStatus(status)\n } catch (e) {\n console.error('Failed to init ai assistance', e)\n setError(e as Error)\n }\n }, [initInstruct, getInstructStatus, setStatus])\n\n const {config, children} = props\n const context = useMemo<AiAssistanceConfigContextValue>(() => {\n return {\n config,\n status,\n statusLoading,\n init,\n initLoading,\n error,\n }\n }, [config, status, init, statusLoading, initLoading, error])\n\n return (\n <AiAssistanceConfigContext.Provider value={context}>\n {children}\n </AiAssistanceConfigContext.Provider>\n )\n}\n","import {Button, Dialog, Flex, Stack, Text, TextArea, Tooltip} from '@sanity/ui'\nimport {getInstructionTitle} from '../helpers/misc'\nimport {PlayIcon} from '@sanity/icons'\nimport {\n createContext,\n Dispatch,\n FormEvent,\n PropsWithChildren,\n SetStateAction,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {UserInputBlock, userInputTypeName} from '../types'\nimport {RunInstructionArgs} from './AssistLayout'\nimport {useApiClient, useRunInstructionApi} from '../useApiClient'\nimport {useAiAssistanceConfig} from './AiAssistanceConfigContext'\nimport {FormFieldHeaderText} from 'sanity'\n\ntype BlockInputs = Record<string, string>\nconst NO_INPUT: BlockInputs = {}\n\nexport interface RunInstructionContextValue {\n runInstruction: (req: RunInstructionArgs) => void\n instructionLoading: boolean\n}\n\nexport const RunInstructionContext = createContext<RunInstructionContextValue>({\n runInstruction: () => {},\n instructionLoading: false,\n})\n\nexport function useRunInstruction() {\n return useContext(RunInstructionContext)\n}\n\nfunction isUserInputBlock(block: {_type: string}): block is UserInputBlock {\n return block._type === userInputTypeName\n}\n\nexport function RunInstructionProvider(props: PropsWithChildren<{}>) {\n const {config} = useAiAssistanceConfig()\n const apiClient = useApiClient(config?.__customApiClient)\n const {runInstruction: runInstructionRequest, loading} = useRunInstructionApi(apiClient)\n\n const id = useId()\n\n const [inputs, setInputs] = useState(NO_INPUT)\n const [runRequest, setRunRequest] = useState<\n (RunInstructionArgs & {userInputBlocks: UserInputBlock[]}) | undefined\n >()\n\n const runInstruction = useCallback(\n (req: RunInstructionArgs) => {\n if (loading) {\n return\n }\n const {instruction, ...request} = req\n const instructionKey = instruction._key\n const userInputBlocks = instruction?.prompt\n ?.flatMap((block) =>\n block._type === 'block' ? block.children.filter(isUserInputBlock) : [block]\n )\n .filter(isUserInputBlock)\n\n if (!userInputBlocks?.length) {\n runInstructionRequest({\n ...request,\n instructionKey,\n userTexts: undefined,\n })\n return\n }\n\n setRunRequest({\n ...req,\n userInputBlocks,\n })\n },\n [setRunRequest, runInstructionRequest, loading]\n )\n\n const close = useCallback(() => {\n setRunRequest(undefined)\n setInputs(NO_INPUT)\n }, [setRunRequest, setInputs])\n\n const runWithInput = useCallback(() => {\n if (runRequest) {\n const {instruction, userTexts, ...request} = runRequest\n runInstructionRequest({\n ...request,\n instructionKey: instruction._key,\n userTexts: Object.entries(inputs).map(([key, value]) => ({\n blockKey: key,\n userInput: value,\n })),\n })\n }\n close()\n }, [close, runInstructionRequest, runRequest, inputs])\n\n const open = !!runRequest\n\n const runDisabled = useMemo(\n () =>\n (runRequest?.userInputBlocks?.length ?? 0) >\n Object.entries(inputs).filter(([, value]) => !!value).length,\n [runRequest?.userInputBlocks, inputs]\n )\n\n const runButton = (\n <Button\n text=\"Run instruction\"\n onClick={runWithInput}\n tone=\"primary\"\n icon={PlayIcon}\n style={{width: '100%'}}\n disabled={runDisabled}\n />\n )\n\n const contextValue: RunInstructionContextValue = useMemo(\n () => ({runInstruction, instructionLoading: loading}),\n [runInstruction, loading]\n )\n\n return (\n <RunInstructionContext.Provider value={contextValue}>\n {open ? (\n <Dialog\n id={id}\n open={open}\n onClose={close}\n width={1}\n header={getInstructionTitle(runRequest?.instruction)}\n footer={\n <Flex justify=\"space-between\" padding={2} flex={1}>\n {runDisabled ? (\n <Tooltip\n content={\n <Flex padding={2}>\n <Text>Unable to run instruction. All fields must have a value.</Text>\n </Flex>\n }\n placement=\"top\"\n >\n <Flex flex={1}>{runButton}</Flex>\n </Tooltip>\n ) : (\n runButton\n )}\n </Flex>\n }\n >\n <Stack padding={4} space={2}>\n {runRequest?.userInputBlocks?.map((block, i) => (\n <UserInput\n key={block._key}\n block={block}\n autoFocus={i === 0}\n inputs={inputs}\n setInputs={setInputs}\n />\n ))}\n </Stack>\n </Dialog>\n ) : null}\n {props.children}\n </RunInstructionContext.Provider>\n )\n}\n\nfunction UserInput(props: {\n block: UserInputBlock\n inputs: BlockInputs\n setInputs: Dispatch<SetStateAction<BlockInputs>>\n autoFocus?: boolean\n}) {\n const {block, autoFocus, setInputs, inputs} = props\n const key = block._key\n const textAreaRef = useRef<HTMLTextAreaElement>(null)\n\n const onChange = useCallback(\n (e: FormEvent<HTMLTextAreaElement>) => {\n setInputs((current) => ({\n ...current,\n [key]: (e.currentTarget ?? e.target).value,\n }))\n },\n [key, setInputs]\n )\n\n const value = useMemo(() => inputs[key], [inputs, key])\n\n useEffect(() => {\n if (!autoFocus) {\n return\n }\n setTimeout(() => textAreaRef.current?.focus(), 0)\n }, [autoFocus])\n\n return (\n <Stack padding={2} space={3}>\n <FormFieldHeaderText\n title={block?.message ?? 'Provide more context'}\n description={block.description}\n />\n <TextArea\n ref={textAreaRef}\n rows={4}\n value={value}\n onChange={onChange}\n style={{resize: 'vertical'}}\n />\n </Stack>\n )\n}\n","import {useRunInstruction} from '../assistLayout/RunInstructionProvider'\nimport {useCallback, useEffect, useState} from 'react'\nimport {ObjectSchemaType, PatchEvent, SanityDocument, unset} from 'sanity'\nimport {RunInstructionArgs} from '../assistLayout/AssistLayout'\nimport {publicId} from '../helpers/ids'\n\nexport interface DocumentArgs {\n documentOnChange: (event: PatchEvent) => void\n // indicates if the document is a draft or liveEditable currently\n isDocAssistable: boolean\n}\n\nexport function isDocAssistable(\n documentSchemaType: ObjectSchemaType,\n published?: SanityDocument | null,\n draft?: SanityDocument | null\n) {\n return !!(documentSchemaType.liveEdit ? published : draft)\n}\n\nexport function getAssistableDocId(documentSchemaType: ObjectSchemaType, documentId: string) {\n const baseId = publicId(documentId)\n return documentSchemaType.liveEdit ? baseId : `drafts.${baseId}`\n}\n\nexport function useRequestRunInstruction(args: DocumentArgs) {\n const {documentOnChange, isDocAssistable} = args\n\n const {runInstruction, instructionLoading} = useRunInstruction()\n const [queuedTask, setQueuedTask] = useState<RunInstructionArgs | undefined>(undefined)\n\n useEffect(() => {\n if (queuedTask && isDocAssistable) {\n runInstruction(queuedTask)\n setQueuedTask(undefined)\n }\n }, [queuedTask, isDocAssistable, runInstruction])\n\n return {\n instructionLoading,\n requestRunInstruction: useCallback(\n (task: RunInstructionArgs) => {\n // make a dummy edit: this will trigger the document/draft to be created\n documentOnChange(PatchEvent.from([unset(['_force_document_creation'])]))\n setQueuedTask(task)\n },\n [setQueuedTask, documentOnChange]\n ),\n }\n}\n","import {Box, Button, Container, Flex, Stack, Text} from '@sanity/ui'\nimport {SparklesIcon} from '@sanity/icons'\nimport {releaseAnnouncementUrl} from '../constants'\nimport styled from 'styled-components'\n\nconst SparklesIllustration = styled(SparklesIcon)({\n fontSize: '3.125em',\n '& path': {\n strokeWidth: `0.6px !important`,\n },\n})\n\nexport function InspectorOnboarding(props: {onDismiss: () => void}) {\n const {onDismiss} = props\n return (\n <Box padding={4}>\n <Container width={0}>\n <Stack space={4}>\n <div style={{textAlign: 'center'}}>\n <SparklesIllustration />\n </div>\n <Text align=\"center\" size={1}>\n Create reusable AI instructions that can be applied across all documents of a certain\n type.\n </Text>\n\n <Flex align=\"center\" gap={2} justify=\"center\">\n <Button\n as=\"a\"\n href={releaseAnnouncementUrl}\n rel=\"noreferrer\"\n target=\"_blank\"\n fontSize={1}\n mode=\"default\"\n onClick={onDismiss}\n padding={2}\n text=\"Learn more\"\n tone=\"primary\"\n />\n <Button fontSize={1} mode=\"bleed\" onClick={onDismiss} padding={2} text=\"Dismiss\" />\n </Flex>\n </Stack>\n </Container>\n </Box>\n )\n}\n","import {useCallback, useState} from 'react'\n\nexport const inspectorOnboardingKey = 'sanityStudio:assist:inspector:onboarding:dismissed'\nexport const fieldOnboardingKey = 'sanityStudio:assist:field:onboarding:dismissed'\n\nexport function isFeatureOnboardingDismissed(featureKey: string): boolean {\n if (typeof localStorage === 'undefined') {\n return false\n }\n\n const value = localStorage.getItem(featureKey)\n return value === 'true'\n}\n\nexport function dismissFeatureOnboarding(featureKey: string) {\n if (typeof localStorage === 'undefined') {\n return\n }\n\n localStorage.setItem(featureKey, 'true')\n}\n\nexport function useOnboardingFeature(featureKey: string) {\n const [showOnboarding, setShowOnboarding] = useState(\n () => !isFeatureOnboardingDismissed(featureKey)\n )\n const dismissOnboarding = useCallback(() => {\n setShowOnboarding(false)\n dismissFeatureOnboarding(featureKey)\n }, [setShowOnboarding, featureKey])\n\n return {showOnboarding, dismissOnboarding}\n}\n","import {ArrowRightIcon, CloseIcon, PlayIcon, RetryIcon} from '@sanity/icons'\nimport {Box, Button, Card, Flex, Spinner, Stack, Text} from '@sanity/ui'\nimport {useCallback, useMemo, useRef} from 'react'\nimport {\n DocumentInspectorProps,\n PresenceOverlay,\n useEditState,\n VirtualizerScrollInstanceProvider,\n} from 'sanity'\nimport {\n DocumentInspectorHeader,\n DocumentPaneNode,\n DocumentPaneProvider,\n useDocumentPane,\n} from 'sanity/desk'\nimport {DocumentForm} from '../_lib/form'\nimport {assistDocumentTypeName, fieldPathParam, instructionParam} from '../types'\nimport {getFieldTitle, useAiPaneRouter, useSelectedField} from './helpers'\nimport styled from 'styled-components'\nimport {useStudioAssistDocument} from '../assistDocument/hooks/useStudioAssistDocument'\nimport {InstructionTaskHistoryButton} from './InstructionTaskHistoryButton'\nimport {useAiAssistanceConfig} from '../assistLayout/AiAssistanceConfigContext'\nimport {giveFeedbackUrl, pluginTitle, releaseAnnouncementUrl, salesUrl} from '../constants'\nimport {assistDocumentId} from '../helpers/ids'\nimport {\n getAssistableDocId,\n isDocAssistable,\n useRequestRunInstruction,\n} from '../assistDocument/RequestRunInstructionProvider'\nimport {InspectorOnboarding} from '../onboarding/InspectorOnboarding'\nimport {inspectorOnboardingKey, useOnboardingFeature} from '../onboarding/onboardingStore'\n\nconst CardWithShadowBelow = styled(Card)`\n position: relative;\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n bottom: -1px;\n border-bottom: 1px solid var(--card-border-color);\n opacity: 0.5;\n z-index: 100;\n }\n`\n\nconst CardWithShadowAbove = styled(Card)`\n position: relative;\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n top: -1px;\n border-top: 1px solid var(--card-border-color);\n opacity: 0.5;\n z-index: 100;\n }\n`\n\nexport function AssistInspectorWrapper(props: DocumentInspectorProps) {\n const context = useAiAssistanceConfig()\n\n if (context.statusLoading) {\n return (\n <Flex align=\"center\" height=\"fill\" justify=\"center\" padding={4} sizing=\"border\">\n <Stack space={3} style={{textAlign: 'center'}}>\n <Spinner muted />\n <Text muted size={1}>\n Loading {pluginTitle}...\n </Text>\n </Stack>\n </Flex>\n )\n }\n\n const status = context.status\n\n if (!status?.enabled) {\n return (\n <Flex direction=\"column\" height=\"fill\">\n <DocumentInspectorHeader\n closeButtonLabel=\"Close\"\n onClose={props.onClose}\n title={pluginTitle}\n />\n\n <Stack flex={1} overflow=\"auto\" padding={4} space={3}>\n <Text as=\"p\" size={1} weight=\"semibold\">\n {pluginTitle} is not available\n </Text>\n\n <Text as=\"p\" muted size={1}>\n Please get in touch with a Sanity account manager or{' '}\n <a href={salesUrl} target=\"_blank\" rel=\"noreferrer\">\n contact our sales team\n </a>{' '}\n to get started with {pluginTitle}.{' '}\n <a href={releaseAnnouncementUrl} target=\"_blank\" rel=\"noreferrer\">\n Learn more &rarr;\n </a>\n </Text>\n </Stack>\n </Flex>\n )\n }\n\n if (!status?.initialized || !status.validToken) {\n return (\n <Flex direction=\"column\" height=\"fill\">\n <DocumentInspectorHeader\n closeButtonLabel=\"Close\"\n onClose={props.onClose}\n title={pluginTitle}\n />\n\n <Stack padding={4} space={3}>\n {context.error ? (\n <Text size={1} weight=\"semibold\">\n Failed to start {pluginTitle}\n </Text>\n ) : null}\n\n {!context.error && !status?.initialized ? (\n <Text size={1} weight=\"semibold\">\n {pluginTitle} is not enabled\n </Text>\n ) : null}\n\n {!context.error && status?.initialized && !status.validToken ? (\n <>\n <Text size={1} weight=\"semibold\">\n Invalid token\n </Text>\n <Text muted size={1}>\n The token used by the AI Assistant is not valid and has to be regenerated.\n </Text>\n </>\n ) : null}\n\n {context.error && (\n <Text muted size={1}>\n Something went wrong. See console for details.\n </Text>\n )}\n\n {!context.error && !status?.initialized && (\n <Text size={1} muted>\n Please enable {pluginTitle}.\n </Text>\n )}\n\n <Button\n fontSize={1}\n icon={\n context.initLoading ? (\n <Box marginTop={1}>\n <Spinner />\n </Box>\n ) : context.error ? (\n RetryIcon\n ) : undefined\n }\n text={\n context.error\n ? 'Retry'\n : status?.initialized && !status.validToken\n ? `Restore ${pluginTitle}`\n : `Enable ${pluginTitle} now`\n }\n tone=\"primary\"\n onClick={context.init}\n disabled={context.initLoading}\n />\n </Stack>\n </Flex>\n )\n }\n\n return <AssistInspector {...props} />\n}\n\nexport function AssistInspector(props: DocumentInspectorProps) {\n const {params} = useAiPaneRouter()\n\n const boundary = useRef<HTMLDivElement | null>(null)\n const pathKey = params?.[fieldPathParam]\n const instructionKey = params?.[instructionParam]\n const documentPane = useDocumentPane()\n const {documentId, documentType, schemaType, onChange: documentOnChange} = documentPane\n const {published, draft} = useEditState(documentId, documentType, 'low')\n\n const assistableDocId = getAssistableDocId(schemaType, documentId)\n const {instructionLoading, requestRunInstruction} = useRequestRunInstruction({\n documentOnChange,\n isDocAssistable: isDocAssistable(schemaType, published, draft),\n })\n const selectedField = useSelectedField(schemaType, params[fieldPathParam])\n\n const aiDocId = assistDocumentId(documentType)\n\n const assistDocument = useStudioAssistDocument({documentId, schemaType})\n const assistField = assistDocument?.fields?.find((f) => f.path === pathKey)\n const instruction = assistField?.instructions?.find((i) => i._key === instructionKey)\n const tasks = useMemo(\n () =>\n assistDocument?.tasks?.filter((i) => !instructionKey || i.instructionKey === instructionKey),\n [assistDocument?.tasks, instructionKey]\n )\n const instructions = useMemo(\n () => assistDocument?.fields?.flatMap((f) => f.instructions ?? []),\n [assistDocument?.fields]\n )\n\n const promptValue = instruction?.prompt\n const isEmptyPrompt = useMemo(() => {\n if (!promptValue?.length) {\n return true\n }\n const firstBlock = promptValue[0] as any\n const children = firstBlock?.children\n\n return promptValue.length == 1 && children?.length === 1 && !children?.[0]?.text?.length\n }, [promptValue])\n\n const paneNode: DocumentPaneNode = useMemo(\n () => ({\n type: 'document',\n id: aiDocId,\n title: pluginTitle,\n options: {\n id: aiDocId,\n type: assistDocumentTypeName,\n },\n }),\n [aiDocId]\n )\n\n const runCurrentInstruction = useCallback(\n () =>\n instruction &&\n pathKey &&\n requestRunInstruction({\n documentId: assistableDocId,\n path: pathKey,\n assistDocumentId: assistDocumentId(documentType),\n instruction,\n }),\n [instruction, pathKey, documentType, assistableDocId, requestRunInstruction]\n )\n\n const Region = useCallback((_props: any) => {\n // disabled for now\n /* return (\n <ConnectToRegion\n {..._props}\n _key={`${paneKey}_${selectedField?.key || '_field'}`}\n style={{height: '100%', flex: 1, overflow: 'auto'}}\n />\n )*/\n return <div {..._props} style={{height: '100%', flex: 1, overflow: 'auto'}} />\n }, [])\n\n if (!documentId || !schemaType || schemaType.jsonType !== 'object') {\n return (\n <Card flex={1} padding={4}>\n <Text>Document not ready yet.</Text>\n </Card>\n )\n }\n\n return (\n <Flex\n ref={boundary}\n direction=\"column\"\n height=\"fill\"\n overflow=\"hidden\"\n sizing=\"border\"\n style={{lineHeight: 0}}\n >\n <AiInspectorHeader onClose={props.onClose} fieldTitle={getFieldTitle(selectedField)} />\n\n <Card as={Region} flex={1} overflow=\"auto\">\n <Flex direction=\"column\" style={{minHeight: '100%'}}>\n <Box flex={1}>\n <PresenceOverlay>\n <Box padding={4}>\n {selectedField && (\n <VirtualizerScrollInstanceProvider\n scrollElement={boundary.current}\n containerElement={boundary}\n >\n <DocumentPaneProvider\n paneKey={documentPane.paneKey}\n index={documentPane.index}\n itemId=\"ai\"\n pane={paneNode}\n >\n <DocumentForm />\n </DocumentPaneProvider>\n </VirtualizerScrollInstanceProvider>\n )}\n </Box>\n </PresenceOverlay>\n </Box>\n\n <Box flex=\"none\" padding={4}>\n <Text muted size={1}>\n How is Sanity AI Assist working for you?{' '}\n <a\n href={giveFeedbackUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n style={{whiteSpace: 'nowrap'}}\n >\n Let us know <ArrowRightIcon />\n </a>\n </Text>\n </Box>\n </Flex>\n </Card>\n\n <CardWithShadowAbove flex=\"none\" paddingX={4} paddingY={3} style={{justifySelf: 'flex-end'}}>\n <Flex gap={2} flex={1} justify=\"flex-end\">\n {schemaType?.name && pathKey && instructionKey && (\n <Stack flex={1}>\n <Button\n mode=\"ghost\"\n disabled={isEmptyPrompt || instructionLoading}\n fontSize={1}\n icon={instructionLoading ? <Spinner /> : PlayIcon}\n onClick={runCurrentInstruction}\n padding={3}\n text={'Run instruction'}\n />\n </Stack>\n )}\n\n <InstructionTaskHistoryButton\n documentId={assistableDocId}\n tasks={tasks}\n instructions={instructions}\n showTitles={!instructionKey}\n />\n </Flex>\n </CardWithShadowAbove>\n </Flex>\n )\n}\n\nfunction AiInspectorHeader(props: {fieldTitle: string; onClose: () => void}) {\n const {onClose, fieldTitle} = props\n const {showOnboarding, dismissOnboarding} = useOnboardingFeature(inspectorOnboardingKey)\n\n return (\n <CardWithShadowBelow flex=\"none\" padding={2}>\n <Flex flex={1} align=\"center\">\n <Flex flex={1} padding={3} gap={2} align=\"center\">\n <Flex gap={1} align=\"center\">\n <Text size={1} weight=\"semibold\">\n AI instructions for\n </Text>\n <Card radius={2} border padding={1} style={{margin: '-4px 0'}}>\n <Text size={1} weight=\"semibold\">\n {fieldTitle}\n </Text>\n </Card>\n </Flex>\n </Flex>\n <Box flex=\"none\">\n <Button fontSize={1} icon={CloseIcon} mode=\"bleed\" onClick={onClose} />\n </Box>\n </Flex>\n\n {showOnboarding && <InspectorOnboarding onDismiss={dismissOnboarding} />}\n </CardWithShadowBelow>\n )\n}\n","import {SparklesIcon} from '@sanity/icons'\nimport {DocumentInspector, typed} from 'sanity'\nimport {aiInspectorId} from './constants'\nimport {AssistInspectorWrapper} from './AssistInspector'\nimport {AssistInspectorRouteParams, fieldPathParam, instructionParam} from '../types'\nimport {pluginTitle} from '../constants'\n\nexport const assistInspector: DocumentInspector = {\n name: aiInspectorId,\n useMenuItem: () => ({\n icon: SparklesIcon,\n title: pluginTitle,\n hidden: true,\n showAsAction: false,\n }),\n component: AssistInspectorWrapper,\n onClose({params}) {\n return {\n params: typed<AssistInspectorRouteParams>({\n ...params,\n [fieldPathParam]: undefined,\n [instructionParam]: undefined,\n }) as typeof params,\n }\n },\n}\n","import {DocumentInspector, ObjectSchemaType, PatchEvent} from 'sanity'\nimport {createContext, useContext} from 'react'\nimport {StudioAssistDocument} from '../types'\n\nexport type AssistDocumentContextValue = (\n | {assistDocument: StudioAssistDocument; loading: false}\n | {assistDocument: undefined; loading: true}\n) & {\n documentIsNew: boolean\n assistableDocumentId: string\n documentIsAssistable: boolean\n documentId: string\n documentSchemaType: ObjectSchemaType\n openInspector: (inspectorName: string, paneParams?: Record<string, string>) => void\n closeInspector: (inspectorName?: string) => void\n inspector: DocumentInspector | null\n selectedPath?: string\n documentOnChange: (event: PatchEvent) => void\n}\n\nexport const AssistDocumentContext = createContext<AssistDocumentContextValue | undefined>(\n undefined\n)\n\nexport function useAssistDocumentContext(): AssistDocumentContextValue {\n const context = useContext(AssistDocumentContext)\n if (!context) {\n throw new Error('AssistDocumentContext value is missing')\n }\n return context\n}\n","import {useMemo} from 'react'\nimport {FormNodePresence, isKeySegment, Path, stringToPath} from 'sanity'\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {AiPresence} from '../types'\nimport {maxHistoryVisibilityMs, pluginTitle} from '../constants'\n\nconst NO_PRESENCE: FormNodePresence[] = []\n\nexport function useAssistPresence(path: Path, showFocusWithin?: boolean): FormNodePresence[] {\n const context = useAssistDocumentContext()\n const assistDocument = context && 'assistDocument' in context ? context.assistDocument : undefined\n const tasks = assistDocument?.tasks\n\n return useMemo(() => {\n const activePresence = tasks\n ?.filter((task) => !task.ended)\n ?.flatMap((task) => task.presence ?? [])\n ?.filter(\n (p) =>\n p.started && new Date().getTime() - new Date(p.started).getTime() < maxHistoryVisibilityMs\n )\n .filter((presence) => {\n if (!presence.path || !path.length) {\n return false\n }\n const statusPath = stringToPath(presence.path)\n\n if (!showFocusWithin && statusPath.length !== path.length) {\n return false\n }\n\n return path.every((pathSegment, i) => {\n const statusSegment = statusPath[i]\n if (typeof pathSegment === 'string') {\n return pathSegment === statusSegment\n }\n if (isKeySegment(pathSegment) && isKeySegment(statusSegment)) {\n return pathSegment._key === statusSegment._key\n }\n return false\n })\n })\n if (!activePresence?.length) {\n return NO_PRESENCE\n }\n\n return activePresence.map((status) => aiPresence(status, path))\n }, [showFocusWithin, tasks, path])\n}\n\nexport function aiPresence(presence: AiPresence, path: Path, title?: string): FormNodePresence {\n return {\n user: {\n id: `sanity-assistant_${presence._key}`,\n displayName: pluginTitle,\n },\n path: path,\n sessionId: 'not-available',\n lastActiveAt: presence?.started ?? new Date().toISOString(),\n }\n}\n","import {forwardRef, ReactElement, ReactNode} from 'react'\nimport styled, {keyframes} from 'styled-components'\n\nconst fadeIn = keyframes`\n 0% {\n opacity: 0;\n transform: scale(0.75);\n }\n 40% {\n opacity: 0;\n transform: scale(0.75);\n }\n 100% {\n opacity: 1;\n transform: scale(1);\n }\n`\n\nconst FadeInDiv = styled.div`\n animation-name: ${fadeIn};\n animation-timing-function: ease-in-out;\n`\n\nexport const FadeInContent = forwardRef(function FadeInContent(\n {\n children,\n durationMs = 250,\n }: {\n children?: ReactNode\n ms?: number\n durationMs?: number\n },\n ref: any\n): ReactElement {\n return (\n <FadeInDiv ref={ref} style={{animationDuration: `${durationMs}ms`}}>\n {children}\n </FadeInDiv>\n )\n})\n","const black$1 = \"#101112\";\nconst white$1 = \"#fff\";\nconst gray = {\n \"50\": {\n title: \"Gray 50\",\n hex: \"#f2f3f5\"\n },\n \"100\": {\n title: \"Gray 100\",\n hex: \"#e6e8ec\"\n },\n \"200\": {\n title: \"Gray 200\",\n hex: \"#ced2d9\"\n },\n \"300\": {\n title: \"Gray 300\",\n hex: \"#b6bcc6\"\n },\n \"400\": {\n title: \"Gray 400\",\n hex: \"#9ea6b3\"\n },\n \"500\": {\n title: \"Gray 500\",\n hex: \"#8690a0\"\n },\n \"600\": {\n title: \"Gray 600\",\n hex: \"#6e7683\"\n },\n \"700\": {\n title: \"Gray 700\",\n hex: \"#565d67\"\n },\n \"800\": {\n title: \"Gray 800\",\n hex: \"#3f434a\"\n },\n \"900\": {\n title: \"Gray 900\",\n hex: \"#272a2e\"\n },\n \"950\": {\n title: \"Gray 950\",\n hex: \"#1b1d20\"\n }\n};\nconst blue = {\n \"50\": {\n title: \"Blue 50\",\n hex: \"#e8f1fe\"\n },\n \"100\": {\n title: \"Blue 100\",\n hex: \"#d2e3fe\"\n },\n \"200\": {\n title: \"Blue 200\",\n hex: \"#a6c8fd\"\n },\n \"300\": {\n title: \"Blue 300\",\n hex: \"#7aacfd\"\n },\n \"400\": {\n title: \"Blue 400\",\n hex: \"#4e91fc\"\n },\n \"500\": {\n title: \"Blue 500\",\n hex: \"#2276fc\"\n },\n \"600\": {\n title: \"Blue 600\",\n hex: \"#1e61cd\"\n },\n \"700\": {\n title: \"Blue 700\",\n hex: \"#1a4d9e\"\n },\n \"800\": {\n title: \"Blue 800\",\n hex: \"#17396f\"\n },\n \"900\": {\n title: \"Blue 900\",\n hex: \"#132540\"\n },\n \"950\": {\n title: \"Blue 950\",\n hex: \"#111b29\"\n }\n};\nconst purple = {\n \"50\": {\n title: \"Purple 50\",\n hex: \"#f8e9fe\"\n },\n \"100\": {\n title: \"Purple 100\",\n hex: \"#f2d3fe\"\n },\n \"200\": {\n title: \"Purple 200\",\n hex: \"#e6a7fd\"\n },\n \"300\": {\n title: \"Purple 300\",\n hex: \"#d97bfd\"\n },\n \"400\": {\n title: \"Purple 400\",\n hex: \"#cd4efc\"\n },\n \"500\": {\n title: \"Purple 500\",\n hex: \"#c123fc\"\n },\n \"600\": {\n title: \"Purple 600\",\n hex: \"#9d1fcd\"\n },\n \"700\": {\n title: \"Purple 700\",\n hex: \"#7a1b9e\"\n },\n \"800\": {\n title: \"Purple 800\",\n hex: \"#56186f\"\n },\n \"900\": {\n title: \"Purple 900\",\n hex: \"#331440\"\n },\n \"950\": {\n title: \"Purple 950\",\n hex: \"#211229\"\n }\n};\nconst magenta = {\n \"50\": {\n title: \"Magenta 50\",\n hex: \"#fcebf5\"\n },\n \"100\": {\n title: \"Magenta 100\",\n hex: \"#f9d7eb\"\n },\n \"200\": {\n title: \"Magenta 200\",\n hex: \"#f4afd8\"\n },\n \"300\": {\n title: \"Magenta 300\",\n hex: \"#ef87c4\"\n },\n \"400\": {\n title: \"Magenta 400\",\n hex: \"#ea5fb1\"\n },\n \"500\": {\n title: \"Magenta 500\",\n hex: \"#e5389e\"\n },\n \"600\": {\n title: \"Magenta 600\",\n hex: \"#ba3082\"\n },\n \"700\": {\n title: \"Magenta 700\",\n hex: \"#8f2866\"\n },\n \"800\": {\n title: \"Magenta 800\",\n hex: \"#65204a\"\n },\n \"900\": {\n title: \"Magenta 900\",\n hex: \"#3a182d\"\n },\n \"950\": {\n title: \"Magenta 950\",\n hex: \"#25141f\"\n }\n};\nconst red = {\n \"50\": {\n title: \"Red 50\",\n hex: \"#fdebea\"\n },\n \"100\": {\n title: \"Red 100\",\n hex: \"#fcd8d5\"\n },\n \"200\": {\n title: \"Red 200\",\n hex: \"#f9b1ab\"\n },\n \"300\": {\n title: \"Red 300\",\n hex: \"#f68b82\"\n },\n \"400\": {\n title: \"Red 400\",\n hex: \"#f36458\"\n },\n \"500\": {\n title: \"Red 500\",\n hex: \"#f03e2f\"\n },\n \"600\": {\n title: \"Red 600\",\n hex: \"#c33529\"\n },\n \"700\": {\n title: \"Red 700\",\n hex: \"#962c23\"\n },\n \"800\": {\n title: \"Red 800\",\n hex: \"#69231d\"\n },\n \"900\": {\n title: \"Red 900\",\n hex: \"#3c1a17\"\n },\n \"950\": {\n title: \"Red 950\",\n hex: \"#261514\"\n }\n};\nconst orange = {\n \"50\": {\n title: \"Orange 50\",\n hex: \"#fef0e6\"\n },\n \"100\": {\n title: \"Orange 100\",\n hex: \"#fee2ce\"\n },\n \"200\": {\n title: \"Orange 200\",\n hex: \"#fdc59d\"\n },\n \"300\": {\n title: \"Orange 300\",\n hex: \"#fca86d\"\n },\n \"400\": {\n title: \"Orange 400\",\n hex: \"#fb8b3c\"\n },\n \"500\": {\n title: \"Orange 500\",\n hex: \"#e57322\"\n },\n \"600\": {\n title: \"Orange 600\",\n hex: \"#ba5f1f\"\n },\n \"700\": {\n title: \"Orange 700\",\n hex: \"#904b1b\"\n },\n \"800\": {\n title: \"Orange 800\",\n hex: \"#653818\"\n },\n \"900\": {\n title: \"Orange 900\",\n hex: \"#3a2415\"\n },\n \"950\": {\n title: \"Orange 950\",\n hex: \"#251a13\"\n }\n};\nconst yellow = {\n \"50\": {\n title: \"Yellow 50\",\n hex: \"#fef7da\"\n },\n \"100\": {\n title: \"Yellow 100\",\n hex: \"#fdefb6\"\n },\n \"200\": {\n title: \"Yellow 200\",\n hex: \"#fcdf6d\"\n },\n \"300\": {\n title: \"Yellow 300\",\n hex: \"#fbd024\"\n },\n \"400\": {\n title: \"Yellow 400\",\n hex: \"#d9b421\"\n },\n \"500\": {\n title: \"Yellow 500\",\n hex: \"#b7991e\"\n },\n \"600\": {\n title: \"Yellow 600\",\n hex: \"#967e1c\"\n },\n \"700\": {\n title: \"Yellow 700\",\n hex: \"#746219\"\n },\n \"800\": {\n title: \"Yellow 800\",\n hex: \"#534717\"\n },\n \"900\": {\n title: \"Yellow 900\",\n hex: \"#312c14\"\n },\n \"950\": {\n title: \"Yellow 950\",\n hex: \"#201e13\"\n }\n};\nconst green = {\n \"50\": {\n title: \"Green 50\",\n hex: \"#e7f9ed\"\n },\n \"100\": {\n title: \"Green 100\",\n hex: \"#d0f4dc\"\n },\n \"200\": {\n title: \"Green 200\",\n hex: \"#a1eaba\"\n },\n \"300\": {\n title: \"Green 300\",\n hex: \"#72e097\"\n },\n \"400\": {\n title: \"Green 400\",\n hex: \"#43d675\"\n },\n \"500\": {\n title: \"Green 500\",\n hex: \"#3ab564\"\n },\n \"600\": {\n title: \"Green 600\",\n hex: \"#329454\"\n },\n \"700\": {\n title: \"Green 700\",\n hex: \"#297343\"\n },\n \"800\": {\n title: \"Green 800\",\n hex: \"#215233\"\n },\n \"900\": {\n title: \"Green 900\",\n hex: \"#183122\"\n },\n \"950\": {\n title: \"Green 950\",\n hex: \"#14211a\"\n }\n};\nconst cyan = {\n \"50\": {\n title: \"Cyan 50\",\n hex: \"#e3fafd\"\n },\n \"100\": {\n title: \"Cyan 100\",\n hex: \"#c7f5fc\"\n },\n \"200\": {\n title: \"Cyan 200\",\n hex: \"#90ecf9\"\n },\n \"300\": {\n title: \"Cyan 300\",\n hex: \"#59e3f6\"\n },\n \"400\": {\n title: \"Cyan 400\",\n hex: \"#22daf4\"\n },\n \"500\": {\n title: \"Cyan 500\",\n hex: \"#1fb8ce\"\n },\n \"600\": {\n title: \"Cyan 600\",\n hex: \"#1c97a8\"\n },\n \"700\": {\n title: \"Cyan 700\",\n hex: \"#197583\"\n },\n \"800\": {\n title: \"Cyan 800\",\n hex: \"#16545d\"\n },\n \"900\": {\n title: \"Cyan 900\",\n hex: \"#133237\"\n },\n \"950\": {\n title: \"Cyan 950\",\n hex: \"#112124\"\n }\n};\nconst hues = {\n gray,\n blue,\n purple,\n magenta,\n red,\n orange,\n yellow,\n green,\n cyan\n};\nconst COLOR_HUES = [\"gray\", \"blue\", \"purple\", \"magenta\", \"red\", \"orange\", \"yellow\", \"green\", \"cyan\"];\nconst COLOR_TINTS = [\"50\", \"100\", \"200\", \"300\", \"400\", \"500\", \"600\", \"700\", \"800\", \"900\", \"950\"];\nconst black = {\n title: \"Black\",\n hex: black$1\n};\nconst white = {\n title: \"White\",\n hex: white$1\n};\nexport { COLOR_HUES, COLOR_TINTS, black, blue, cyan, gray, green, hues, magenta, orange, purple, red, white, yellow };\n//# sourceMappingURL=index.js.map\n","import {purple} from '@sanity/color'\nimport {SparklesIcon} from '@sanity/icons'\nimport {Text} from '@sanity/ui'\nimport {CSSProperties, useMemo} from 'react'\nimport {useColorSchemeValue} from 'sanity'\nimport styled, {keyframes} from 'styled-components'\n\nconst Root = styled.span`\n display: block;\n width: 25px;\n height: 25px;\n position: relative;\n`\n\nconst dash = keyframes`\n 0% {\n transform: rotate(0);\n }\n 100% {\n transform: rotate(43deg);\n }\n`\n\nconst Outline = styled.svg`\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n\n & > circle {\n stroke: var(--ai-avatar-stroke-color);\n stroke-width: 1.5px;\n stroke-linecap: round;\n transform-origin: center;\n animation: ${dash} 500ms ease-in-out infinite;\n transition: stroke-dasharray 200ms ease-in-out;\n\n stroke-dasharray: 2.34px 0;\n\n [data-state='active'] > & {\n stroke-dasharray: 2px 2.34px;\n }\n }\n`\n\nconst IconDisc = styled.span`\n background: var(--ai-avatar-disc-color);\n color: white;\n width: 21px;\n height: 21px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 10.5px;\n position: absolute;\n top: 2px;\n left: 2px;\n`\n\nexport function AssistAvatar(props: {state?: 'present' | 'active'}) {\n const {state = 'present'} = props\n const scheme = useColorSchemeValue()\n\n const style = useMemo(() => {\n if (scheme === 'dark') {\n return {\n [`--ai-avatar-stroke-color`]: purple[400].hex,\n [`--ai-avatar-disc-color`]: purple[600].hex,\n } as CSSProperties\n }\n\n return {\n [`--ai-avatar-stroke-color`]: purple[500].hex,\n [`--ai-avatar-disc-color`]: purple[600].hex,\n } as CSSProperties\n }, [scheme])\n\n return (\n <Root data-state={state} style={style}>\n <Outline\n width=\"25\"\n height=\"25\"\n viewBox=\"0 0 25 25\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"12.5\" cy=\"12.5\" r=\"11.75\" />\n </Outline>\n <IconDisc>\n <Text as=\"span\" size={0} style={{color: 'inherit'}}>\n <SparklesIcon />\n </Text>\n </IconDisc>\n </Root>\n )\n}\n","// eslint-disable-next-line react/no-unused-prop-types\nimport {FormNodePresence} from 'sanity'\nimport {Card, Flex, Text, Tooltip} from '@sanity/ui'\nimport {FadeInContent} from '../components/FadeInContent'\nimport {AssistAvatar} from './AssistAvatar'\n\nexport function AiFieldPresence(props: {presence: FormNodePresence}) {\n return (\n <Card style={{position: 'relative', background: 'transparent'}} contentEditable={false}>\n <Tooltip\n placement=\"left\"\n content={\n <Card padding={3} border>\n <Flex align=\"center\">\n <Text size={1}>Running instruction...</Text>\n </Flex>\n </Card>\n }\n >\n <FadeInContent durationMs={300}>\n <AssistAvatar state=\"active\" />\n </FadeInContent>\n </Tooltip>\n </Card>\n )\n}\n","import {Badge} from '@sanity/ui'\n\nexport function AssistFeatureBadge() {\n return (\n <Badge fontSize={0} style={{margin: '-2px 0'}} tone=\"primary\">\n Beta\n </Badge>\n )\n}\n","import {Button, Card, Flex, Popover, Stack, Text} from '@sanity/ui'\nimport {useRef} from 'react'\nimport {AssistFeatureBadge} from '../components/AssistFeatureBadge'\nimport {ArrowRightIcon, CheckmarkIcon, SparklesIcon} from '@sanity/icons'\nimport {pluginTitle, releaseAnnouncementUrl} from '../constants'\n\nexport interface FieldActionsOnboardingProps {\n dismiss: () => void\n}\n\nexport function AssistOnboardingPopover(props: FieldActionsOnboardingProps) {\n const {dismiss} = props\n\n return (\n <Popover\n content={<AssistIntroCard dismiss={dismiss} />}\n open\n portal\n placeholder=\"bottom\"\n tone=\"default\"\n width={0}\n >\n <Card radius={2} shadow={2} style={{padding: 2, lineHeight: 0}}>\n <Button disabled fontSize={1} icon={SparklesIcon} mode=\"bleed\" padding={2} />\n </Card>\n </Popover>\n )\n}\n\nfunction AssistIntroCard(props: {dismiss: () => void}) {\n const buttonRef = useRef<HTMLButtonElement>(null)\n\n return (\n <Stack as=\"section\" padding={3} space={3}>\n <Stack padding={2} space={4}>\n <Flex gap={2} align=\"center\">\n <Text as=\"h1\" size={1} weight=\"semibold\">\n {pluginTitle}\n </Text>\n <div aria-hidden style={{margin: '-3px 0', lineHeight: 0}}>\n <AssistFeatureBadge />\n </div>\n </Flex>\n\n <Stack space={3}>\n <Text as=\"p\" muted size={1}>\n Manage reusable AI instructions to boost your content creation and reduce amount of\n repetitive chores.{' '}\n <a href={releaseAnnouncementUrl} target=\"_blank\" rel=\"noreferrer\">\n Learn more <ArrowRightIcon />\n </a>\n </Text>\n </Stack>\n </Stack>\n\n <Button\n fontSize={1}\n icon={CheckmarkIcon}\n onClick={props.dismiss}\n padding={3}\n ref={buttonRef}\n text=\"Ok, good to know!\"\n tone=\"primary\"\n />\n </Stack>\n )\n}\n","import {ObjectInputProps, FieldMember, pathToString} from 'sanity'\nimport {createContext, PropsWithChildren, useMemo} from 'react'\nimport {isAssistSupported} from '../helpers/assistSupported'\n\nexport const FirstAssistedPathContext = createContext<string | undefined>(undefined)\n\nexport interface FirstAssistedPathProviderProps {\n members: ObjectInputProps['members']\n}\n\nexport function FirstAssistedPathProvider(\n props: PropsWithChildren<FirstAssistedPathProviderProps>\n) {\n const {members} = props\n\n const firstAssistedPath = useMemo(() => {\n const firstAssisted = members.find(\n (member): member is FieldMember =>\n member.kind === 'field' && isAssistSupported(member.field.schemaType)\n )\n return firstAssisted?.field.path ? pathToString(firstAssisted?.field.path) : undefined\n }, [members])\n\n return (\n <FirstAssistedPathContext.Provider value={firstAssistedPath}>\n {props.children}\n </FirstAssistedPathContext.Provider>\n )\n}\n","import {FieldProps, isArraySchemaType, pathToString} from 'sanity'\nimport {useAssistPresence} from '../presence/useAssistPresence'\nimport {useContext, useMemo} from 'react'\nimport {Box, Flex} from '@sanity/ui'\nimport {contextDocumentTypeName} from '../types'\nimport {isAssistSupported} from '../helpers/assistSupported'\nimport {isPortableTextArray, isType} from '../helpers/typeUtils'\nimport {AiFieldPresence} from '../presence/AiFieldPresence'\nimport {AssistOnboardingPopover} from '../onboarding/FieldActionsOnboarding'\nimport {FirstAssistedPathContext} from '../onboarding/FirstAssistedPathProvider'\nimport {fieldOnboardingKey, useOnboardingFeature} from '../onboarding/onboardingStore'\n\nexport function AssistFieldWrapper(props: FieldProps) {\n const {schemaType} = props\n\n const isSupported = useMemo(() => isAssistSupported(schemaType), [schemaType])\n\n if (\n !isSupported ||\n schemaType.name.startsWith('sanity.') ||\n schemaType.name === contextDocumentTypeName\n ) {\n return props.renderDefault(props)\n }\n if (!isType(props.schemaType, 'document') && props.inputId !== 'root') {\n return <AssistField {...props}>{props.children}</AssistField>\n }\n\n return props.renderDefault(props)\n}\n\nexport function AssistField(props: FieldProps) {\n const {path} = props\n\n const isPortableText = useMemo(\n () => !!(isArraySchemaType(props.schemaType) && isPortableTextArray(props.schemaType)),\n [props.schemaType]\n )\n\n const presence = useAssistPresence(props.path, isPortableText)\n\n const firstAssistedPath = useContext(FirstAssistedPathContext)\n const isFirstAssisted = useMemo(\n () => pathToString(path) === firstAssistedPath,\n [path, firstAssistedPath]\n )\n\n const {showOnboarding, dismissOnboarding} = useOnboardingFeature(fieldOnboardingKey)\n\n const actions = (\n <Flex gap={2} align=\"center\" justify=\"space-between\">\n {presence.map((pre) => (\n <Box key={pre.user.id}>\n <AiFieldPresence key={pre.lastActiveAt} presence={pre} />\n </Box>\n ))}\n\n {isFirstAssisted && showOnboarding && <AssistOnboardingPopover dismiss={dismissOnboarding} />}\n </Flex>\n )\n\n return props.renderDefault({\n ...props,\n\n // When showing the onboarding, prevent default field actions from being rendered\n actions: isFirstAssisted && showOnboarding ? [] : props.actions,\n\n // Render presence (and possibly onboarding) in the internal slot (between presence and the field actions)\n // eslint-disable-next-line camelcase\n __internal_slot: actions,\n })\n}\n","import {createContext} from 'react'\nimport {ConnectorsStore} from './ConnectorsStore'\n\nexport const ConnectorsStoreContext = createContext<ConnectorsStore | null>(null)\n","import {useContext} from 'react'\nimport {ConnectorsStoreContext} from './ConnectorsStoreContext'\nimport {ConnectorsStore} from './ConnectorsStore'\n\nexport function useConnectorsStore(): ConnectorsStore {\n const store = useContext(ConnectorsStoreContext)\n\n if (!store) {\n throw new Error('Missing connectors store context')\n }\n\n return store\n}\n","export function hasOverflowScroll(el: HTMLElement): boolean {\n const overflow = getComputedStyle(el).overflow\n\n return overflow.includes('auto') || overflow.includes('hidden') || overflow.includes('scroll')\n}\n","import {useEffect, useMemo, useRef, useState} from 'react'\nimport {Rect, Scroll} from './types'\nimport {hasOverflowScroll} from './helpers'\n\nexport function useRegionRects() {\n const ref = useRef<HTMLDivElement>(null)\n\n const [relativeBoundsRect, setRelativeBoundsRect] = useState<Rect | null>(null)\n const [relativeElementRect, setRelativeElementRect] = useState<Rect | null>(null)\n const [boundsScroll, setBoundsScroll] = useState<Scroll>({x: 0, y: 0})\n const [scroll, setScroll] = useState<Scroll>({x: 0, y: 0})\n\n const boundsScrollXRef = useRef(0)\n const boundsScrollYRef = useRef(0)\n\n const elementScrollXRef = useRef(0)\n const elementScrollYRef = useRef(0)\n\n useEffect(() => {\n const el = ref.current\n\n if (!el) return undefined\n\n const scrollParents: HTMLElement[] = []\n let parent = el.parentElement\n\n while (parent && parent !== document.body) {\n if (\n hasOverflowScroll(parent)\n // || parent.scrollHeight > parent.clientHeight\n ) {\n scrollParents.push(parent)\n }\n\n parent = parent.parentElement\n }\n\n function handleResize() {\n const scrollParent = scrollParents[0]\n\n const boundsRect = scrollParent?.getBoundingClientRect() || {\n x: 0,\n y: 0,\n width: window.innerWidth,\n height: window.innerHeight,\n }\n\n const domRect = el!.getBoundingClientRect()\n\n setRelativeBoundsRect({\n x: boundsRect.x + boundsScrollXRef.current,\n y: boundsRect.y + boundsScrollYRef.current,\n w: boundsRect.width,\n h: boundsRect.height,\n })\n\n setRelativeElementRect({\n x: domRect.x + elementScrollXRef.current,\n y: domRect.y + elementScrollYRef.current,\n w: domRect.width,\n h: domRect.height,\n })\n }\n\n function handleScroll() {\n let scrollX = window.scrollX\n let scrollY = window.scrollY\n\n for (const scrollParent of scrollParents) {\n scrollX += scrollParent.scrollLeft\n scrollY += scrollParent.scrollTop\n }\n\n const scrollParent = scrollParents[0]\n\n boundsScrollXRef.current = scrollX - (scrollParent?.scrollLeft || window.scrollX)\n\n boundsScrollYRef.current = scrollY - (scrollParent?.scrollTop || window.scrollY)\n\n setBoundsScroll({\n x: boundsScrollXRef.current,\n y: boundsScrollYRef.current,\n })\n\n elementScrollXRef.current = scrollX\n elementScrollYRef.current = scrollY\n\n setScroll({x: scrollX, y: scrollY})\n }\n\n window.addEventListener('scroll', handleScroll, {passive: true})\n\n const ro = new ResizeObserver(handleResize)\n\n ro.observe(el)\n\n for (const scrollParent of scrollParents) {\n scrollParent.addEventListener('scroll', handleScroll, {passive: true})\n ro.observe(scrollParent)\n }\n\n handleScroll()\n\n return () => {\n ro.unobserve(el)\n\n for (const scrollParent of scrollParents) {\n ro.unobserve(scrollParent)\n scrollParent.removeEventListener('scroll', handleScroll)\n }\n\n ro.disconnect()\n\n window.removeEventListener('scroll', handleScroll)\n }\n }, [])\n\n const bounds: Rect | null = useMemo(\n () =>\n relativeBoundsRect && {\n x: relativeBoundsRect.x - boundsScroll.x,\n y: relativeBoundsRect.y - boundsScroll.y,\n w: relativeBoundsRect.w,\n h: relativeBoundsRect.h,\n },\n [relativeBoundsRect, boundsScroll]\n )\n\n const element: Rect | null = useMemo(\n () =>\n relativeElementRect && {\n x: relativeElementRect.x - scroll.x,\n y: relativeElementRect.y - scroll.y,\n w: relativeElementRect.w,\n h: relativeElementRect.h,\n },\n [relativeElementRect, scroll]\n )\n\n return {bounds, element, ref}\n}\n","import {HTMLProps, useEffect} from 'react'\nimport {ConnectorRegionRects} from './types'\nimport {useRegionRects} from './useRegionRects'\n\nexport function ConnectorRegion(\n props: {\n onRectsChange?: (rects: ConnectorRegionRects | null) => void\n } & HTMLProps<HTMLDivElement>\n) {\n const {children, onRectsChange, ...restProps} = props\n\n const {bounds, element, ref} = useRegionRects()\n\n useEffect(() => {\n onRectsChange?.(bounds && element ? {bounds, element} : null)\n }, [bounds, element, onRectsChange])\n\n return (\n <div {...restProps} ref={ref}>\n {children}\n </div>\n )\n}\n","import {HTMLProps, useEffect, useState} from 'react'\nimport {useConnectorsStore} from './useConnectorsStore'\nimport {ConnectorRegionRects} from './types'\nimport {ConnectorRegion} from './ConnectorRegion'\n\nexport function ConnectFromRegion(\n props: {_key: string; zIndex: number} & HTMLProps<HTMLDivElement>\n) {\n const {children, _key: key, zIndex, ...restProps} = props\n const store = useConnectorsStore()\n const [rects, setRects] = useState<ConnectorRegionRects | null>(null)\n\n useEffect(() => store.from.subscribe(key, {zIndex}), [key, store, zIndex])\n\n useEffect(() => {\n if (rects) store.from.next(key, rects)\n }, [key, rects, store])\n\n return (\n <ConnectorRegion {...restProps} onRectsChange={setRects}>\n {children}\n </ConnectorRegion>\n )\n}\n","import {Connector, ConnectorRegionRects} from './types'\n\nexport interface ConnectorsStore {\n connectors: {\n subscribe: (observer: (connectors: Connector[]) => void) => () => void\n }\n\n from: {\n subscribe: (key: string, payload?: Record<string, unknown>) => () => void\n next: (key: string, rects: ConnectorRegionRects) => void\n }\n\n to: {\n subscribe: (key: string, payload?: Record<string, unknown>) => () => void\n next: (key: string, rects: ConnectorRegionRects) => void\n }\n}\n\nexport function createConnectorsStore(): ConnectorsStore {\n const configKeys: string[] = []\n const fieldKeys: string[] = []\n\n const channels = {\n from: new Map<string, ConnectorRegionRects | null>(),\n to: new Map<string, ConnectorRegionRects | null>(),\n }\n\n const payloads = {\n from: new Map<string, Record<string, unknown> | undefined>(),\n to: new Map<string, Record<string, unknown> | undefined>(),\n }\n\n const observers: ((connectors: Connector[]) => void)[] = []\n\n function notifyObservers() {\n const connectors: Connector[] = []\n\n for (const key of configKeys) {\n const toRects = channels.to.get(key)\n const toPayload = payloads.from.get(key)\n\n const fromRects = channels.from.get(key)\n const fromPayload = payloads.from.get(key)\n\n if (toRects && fromRects) {\n connectors.push({\n key,\n from: {...fromRects, payload: fromPayload},\n to: {...toRects, payload: toPayload},\n })\n }\n }\n\n for (const observer of observers) {\n observer(connectors)\n }\n }\n\n return {\n to: {\n subscribe(key, payload) {\n channels.to.set(key, null)\n payloads.to.set(key, payload)\n\n configKeys.push(key)\n\n return () => {\n channels.to.delete(key)\n payloads.to.delete(key)\n\n const idx = configKeys.indexOf(key)\n\n if (idx > -1) configKeys.splice(idx, 1)\n\n notifyObservers()\n }\n },\n next(key, rects) {\n channels.to.set(key, rects)\n\n if (fieldKeys.includes(key)) notifyObservers()\n },\n },\n\n connectors: {\n subscribe(observer) {\n observers.push(observer)\n\n return () => {\n const idx = observers.indexOf(observer)\n\n if (idx > -1) observers.splice(idx, 1)\n }\n },\n },\n\n from: {\n subscribe(key, payload) {\n channels.from.set(key, null)\n payloads.from.set(key, payload)\n\n fieldKeys.push(key)\n\n return () => {\n channels.from.delete(key)\n payloads.from.delete(key)\n\n const idx = fieldKeys.indexOf(key)\n\n if (idx > -1) fieldKeys.splice(idx, 1)\n\n notifyObservers()\n }\n },\n next(key, rects) {\n channels.from.set(key, rects)\n\n if (configKeys.includes(key)) notifyObservers()\n },\n },\n }\n}\n","import {ReactNode, useEffect, useMemo} from 'react'\nimport {ConnectorsStore, createConnectorsStore} from './ConnectorsStore'\nimport {ConnectorsStoreContext} from './ConnectorsStoreContext'\nimport {Connector} from './types'\n\nexport function ConnectorsProvider(props: {\n children?: ReactNode\n onConnectorsChange?: (connectors: Connector[]) => void\n}) {\n const {children, onConnectorsChange} = props\n const store: ConnectorsStore = useMemo(() => createConnectorsStore(), [])\n\n useEffect(\n () => onConnectorsChange && store.connectors.subscribe(onConnectorsChange),\n [onConnectorsChange, store]\n )\n\n return <ConnectorsStoreContext.Provider value={store}>{children}</ConnectorsStoreContext.Provider>\n}\n","import {\n ConnectorLine,\n ConnectorLinePoint,\n ConnectorOptions,\n ConnectorRegionRects,\n Rect,\n} from './types'\n\nfunction getConnectorLinePoint(\n options: ConnectorOptions,\n rect: Rect,\n bounds: Rect\n): ConnectorLinePoint {\n const centerY = rect.y + rect.h / 2\n const isAbove = rect.y + rect.h < bounds.y + options.arrow.marginY\n const isBelow = rect.y > bounds.y + bounds.h - options.arrow.marginY\n\n return {\n bounds,\n x: rect.x,\n y: centerY,\n centerY,\n startY: rect.y + options.path.marginY,\n endY: rect.y + rect.h - options.path.marginY,\n isAbove,\n isBelow,\n outOfBounds: isAbove || isBelow,\n }\n}\n\nexport function mapConnectorToLine(\n options: ConnectorOptions,\n connector: {from: ConnectorRegionRects; to: ConnectorRegionRects}\n): ConnectorLine {\n const fromBounds: Rect = {\n y: connector.from.bounds.y + options.arrow.threshold,\n // bottom: connector.from.bounds.y + connector.from.bounds.h - options.arrow.threshold,\n x: connector.from.bounds.x,\n // right: connector.from.bounds.x + connector.from.bounds.w,\n w: connector.from.bounds.w,\n h: connector.from.bounds.h - options.arrow.threshold * 2,\n }\n\n const from = getConnectorLinePoint(options, connector.from.element, fromBounds)\n from.x = connector.from.element.x + connector.from.element.w // + 1\n\n const fromBottom = fromBounds.y + fromBounds.h\n\n const toBounds: Rect = {\n y: connector.to.bounds.y + options.arrow.threshold,\n // bottom: connector.to.bounds.y + connector.to.bounds.h - options.arrow.threshold,\n x: connector.to.bounds.x,\n // right: connector.to.bounds.x + connector.to.bounds.w,\n w: connector.to.bounds.w,\n h: connector.to.bounds.h - options.arrow.threshold * 2,\n }\n\n const toBottom = toBounds.y + toBounds.h\n\n const to = getConnectorLinePoint(options, connector.to.element, toBounds)\n\n const maxStartY = Math.max(to.startY, from.startY)\n\n // Align from <-> to vertically\n from.y = Math.min(maxStartY, from.endY)\n if (from.y < toBounds.y) {\n from.y = Math.min(toBounds.y, from.endY)\n } else if (from.y > toBottom) {\n from.y = Math.max(toBottom, from.startY)\n }\n to.y = Math.min(maxStartY, to.endY)\n if (to.y < fromBounds.y) {\n to.y = Math.min(fromBounds.y, to.endY)\n } else if (to.y > fromBottom) {\n to.y = Math.max(fromBottom, to.startY)\n }\n\n // Keep within bounds\n from.y = Math.min(Math.max(from.y, fromBounds.y), fromBottom)\n to.y = Math.min(Math.max(to.y, toBounds.y), toBottom)\n\n return {from, to}\n}\n","import {ConnectorOptions} from '../../_lib/connector'\n\nexport function arrowPath(options: ConnectorOptions, x: number, y: number, dir: 1 | -1): string {\n return [\n `M ${x - options.arrow.size} ${y - options.arrow.size * dir} `,\n `L ${x} ${y}`,\n `L ${x + options.arrow.size} ${y - options.arrow.size * dir}`,\n ].join('')\n}\n","import {ConnectorLine, ConnectorOptions} from '../../_lib/connector'\n\nexport function drawArrowPath(\n options: ConnectorOptions,\n x: number,\n y: number,\n dir: number\n): string {\n return [\n `M ${x - options.arrow.size} ${y - options.arrow.size * dir} `,\n `L ${x} ${y}`,\n `L ${x + options.arrow.size} ${y - options.arrow.size * dir}`,\n ].join('')\n}\n\nfunction moveTo(x: number, y: number) {\n return `M${x} ${y}`\n}\n\nfunction lineTo(x: number, y: number) {\n return `L${x} ${y}`\n}\n\nfunction join(strings: string[], delim = '') {\n return strings.join(delim)\n}\n\nfunction quadCurve(x1: number, y1: number, x: number, y: number) {\n return `Q${x1} ${y1} ${x} ${y}`\n}\n\nexport function drawConnectorPath(options: ConnectorOptions, line: ConnectorLine): string {\n const {cornerRadius} = options.path\n const {from, to} = line\n const {x: fromX, y: fromY} = from\n const {x: _toX, y: toY} = to\n\n const toX = _toX - 1\n\n // Calculate divider position\n const dividerX = to.bounds.x + options.divider.offsetX\n\n // Calculate connector FROM path X position\n const fromPathX = from.isAbove || from.isBelow ? fromX + options.arrow.marginX : fromX\n\n // Calculate maximum corner radius\n const r0 = Math.min(cornerRadius, Math.abs(fromPathX - dividerX) / 2)\n const r1 = Math.min(cornerRadius, Math.abs(fromY - toY) / 2)\n\n const cmds: string[] = []\n\n // FROM\n if (from.isAbove) {\n cmds.push(\n moveTo(\n fromX + options.arrow.marginX,\n fromY - options.arrow.threshold + options.arrow.marginY\n ),\n lineTo(fromX + options.arrow.marginX, fromY - r0),\n quadCurve(fromX + options.arrow.marginX, fromY, fromX + options.arrow.marginX + r0, fromY)\n )\n } else if (from.isBelow) {\n cmds.push(\n moveTo(\n fromX + options.arrow.marginX,\n fromY + options.arrow.threshold - options.arrow.marginY\n ),\n lineTo(fromX + options.arrow.marginX, fromY + r0),\n quadCurve(fromX + options.arrow.marginX, fromY, fromX + options.arrow.marginX + r0, fromY)\n )\n } else {\n cmds.push(moveTo(fromX, fromY))\n }\n\n // TO\n if (to.isAbove) {\n if (fromY < to.bounds.y) {\n cmds.push(\n lineTo(dividerX - r1, fromY),\n quadCurve(dividerX, fromY, dividerX, fromY + r1),\n lineTo(dividerX, toY - r1),\n quadCurve(dividerX, toY, dividerX + r1, toY),\n lineTo(dividerX - cornerRadius, toY),\n quadCurve(dividerX, toY, dividerX, toY - cornerRadius),\n lineTo(dividerX, toY - options.arrow.threshold + options.arrow.marginY)\n )\n } else {\n cmds.push(\n lineTo(dividerX - cornerRadius, fromY),\n quadCurve(dividerX, fromY, dividerX, fromY - cornerRadius),\n lineTo(dividerX, toY - options.arrow.threshold + options.arrow.marginY)\n )\n }\n } else if (to.isBelow) {\n if (fromY > to.bounds.y + to.bounds.h) {\n // curl around\n cmds.push(\n lineTo(dividerX - options.arrow.marginX - r1, fromY),\n quadCurve(\n dividerX - options.arrow.marginX,\n fromY,\n dividerX - options.arrow.marginX,\n fromY - r1\n ),\n lineTo(dividerX - options.arrow.marginX, toY + r1),\n quadCurve(\n dividerX - options.arrow.marginX,\n toY,\n dividerX - options.arrow.marginX + r1,\n toY\n ),\n lineTo(dividerX - cornerRadius, toY),\n quadCurve(dividerX, toY, dividerX, toY + cornerRadius),\n lineTo(dividerX, toY + options.arrow.threshold - options.arrow.marginY)\n )\n } else {\n cmds.push(\n lineTo(dividerX - cornerRadius, fromY),\n quadCurve(dividerX, fromY, dividerX, fromY + cornerRadius),\n lineTo(dividerX, toY + options.arrow.threshold - options.arrow.marginY)\n )\n }\n } else if (fromY < toY) {\n cmds.push(\n lineTo(dividerX - r0, fromY),\n quadCurve(dividerX, fromY, dividerX, fromY + r1),\n lineTo(dividerX, toY - r1),\n quadCurve(dividerX, toY, dividerX + r1, toY),\n lineTo(toX, toY)\n )\n } else {\n cmds.push(\n lineTo(dividerX - Math.min(r0, r1), fromY),\n quadCurve(dividerX, fromY, dividerX, fromY - Math.min(r0, r1)),\n lineTo(dividerX, toY + r1),\n quadCurve(dividerX, toY, dividerX + r1, toY),\n lineTo(toX, toY)\n )\n }\n\n return join(cmds)\n}\n","import {rgba, useTheme} from '@sanity/ui'\nimport {useMemo} from 'react'\nimport {ConnectorOptions, mapConnectorToLine, Rect} from '../_lib/connector'\nimport {arrowPath} from './draw/arrowPath'\nimport {drawConnectorPath} from './draw/connectorPath'\n\nexport function ConnectorPath(props: {\n from: {bounds: Rect; element: Rect}\n to: {bounds: Rect; element: Rect}\n options: ConnectorOptions\n}) {\n const {from, options, to} = props\n const {strokeWidth} = options.path\n const theme = useTheme()\n\n const line = useMemo(() => mapConnectorToLine(options, {from, to}), [from, options, to])\n\n return (\n <>\n <path\n d={drawConnectorPath(options, line)}\n stroke={theme.sanity.color.base.bg}\n strokeWidth={strokeWidth + 4}\n />\n\n <path\n d={drawConnectorPath(options, line)}\n stroke={rgba(theme.sanity.color.base.border, 0.5)}\n strokeWidth={strokeWidth}\n />\n\n {line.from.isAbove && (\n <path\n d={arrowPath(\n options,\n line.from.x + options.arrow.marginX,\n line.from.bounds.y - options.arrow.threshold + options.arrow.marginY,\n -1\n )}\n stroke={theme.sanity.color.base.border}\n strokeWidth={strokeWidth}\n />\n )}\n\n {line.from.isBelow && (\n <path\n d={arrowPath(\n options,\n line.from.x + options.arrow.marginX,\n line.from.bounds.y +\n line.from.bounds.h +\n options.arrow.threshold -\n options.arrow.marginY,\n 1\n )}\n stroke={theme.sanity.color.base.border}\n strokeWidth={strokeWidth}\n />\n )}\n </>\n )\n}\n","import {Fragment, useEffect, useState} from 'react'\nimport {Connector, ConnectorOptions} from '../_lib/connector'\nimport {ConnectorPath} from './ConnectorPath'\n\nconst DEBUG = false\n\nconst options: ConnectorOptions = {\n arrow: {\n marginX: 10.5,\n marginY: 5,\n size: 4,\n threshold: 16.5,\n },\n divider: {\n offsetX: -10.5,\n },\n path: {\n cornerRadius: 3,\n marginY: 10.5,\n strokeWidth: 1,\n },\n}\n\nexport function AssistConnectorsOverlay(props: {connectors: Connector[]}) {\n const {connectors} = props\n // const zIndexes = connectors.map((connector) => {\n // const zIndex = connector.from.payload?.zIndex\n\n // if (typeof zIndex === 'number') {\n // return zIndex\n // }\n\n // return 1\n // })\n const [, setRedraw] = useState(false)\n useEffect(() => {\n // hacky workaround to force redraw for connectors on initial render\n // this seem to improve initial measurements of elements\n setRedraw(true)\n }, [])\n\n // const zIndex = zIndexes.length ? Math.max(...zIndexes) : 1\n\n return (\n <>\n <svg\n fill=\"none\"\n width={window.innerWidth}\n height={window.innerHeight}\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n pointerEvents: 'none',\n zIndex: 150,\n // zIndex,\n }}\n >\n {connectors.map((connector) => (\n <ConnectorPath\n from={connector.from}\n key={connector.key}\n options={options}\n to={connector.to}\n />\n ))}\n </svg>\n {DEBUG &&\n connectors.map(({key, from, to}) => {\n return (\n <Fragment key={key}>\n <div\n style={{\n position: 'fixed',\n top: from.bounds.y,\n left: from.bounds.x,\n width: from.bounds.w,\n height: from.bounds.h,\n pointerEvents: 'none',\n overflow: 'hidden',\n outline: '1px dotted red',\n outlineOffset: -1,\n zIndex: 10000000 - 1,\n }}\n >\n <div\n style={{\n position: 'absolute',\n top: from.element.y - from.bounds.y,\n left: from.element.x - from.bounds.x,\n width: from.element.w,\n height: from.element.h,\n border: '1px solid red',\n boxSizing: 'border-box',\n }}\n />\n </div>\n\n <div\n style={{\n position: 'fixed',\n top: to.bounds.y,\n left: to.bounds.x,\n width: to.bounds.w,\n height: to.bounds.h,\n pointerEvents: 'none',\n overflow: 'hidden',\n outline: '1px dotted teal',\n outlineOffset: -1,\n zIndex: 10000000 - 1,\n }}\n >\n <div\n style={{\n position: 'absolute',\n top: to.element.y - to.bounds.y,\n left: to.element.x - to.bounds.x,\n width: to.element.w,\n height: to.element.h,\n border: '1px solid teal',\n boxSizing: 'border-box',\n }}\n />\n </div>\n </Fragment>\n )\n })}\n </>\n )\n}\n","import {SanityDocument} from 'sanity'\nimport {PortableTextBlock, PortableTextMarkDefinition, PortableTextSpan} from '@portabletext/types'\n\n//id prefixes\nexport const legacyAssistDocumentIdPrefix = 'sanity.ai.'\n\nexport const legacyAssistDocumentTypeName = 'sanity.ai.docType' as const\nconst aiFieldTypeName = 'sanity.ai.docType.field' as const\nconst instructionTypeName = 'sanity.ai.field.instruction' as const\n\nconst userInputTypeName = 'sanity.ai.prompt.userInput' as const\nconst promptContextTypeName = 'sanity.ai.prompt.context' as const\nconst fieldReferenceTypeName = 'sanity.ai.prompt.fieldRef' as const\n\nexport const legacyContextDocumentTypeName = 'ai.instruction.context' as const\n\nexport const legacyAssistStatusDocumentTypeName = 'sanity.ai.instructionStatus' as const\n\nexport interface FieldPrompts {\n _key: string\n _type: typeof aiFieldTypeName\n path?: string\n instructions?: LegacyInstruction[]\n}\n\nexport interface LegacyAssistDocument extends SanityDocument {\n fields: FieldPrompts[]\n}\n\nexport interface LegacyFieldRef extends PortableTextMarkDefinition {\n _type: typeof fieldReferenceTypeName\n path?: string\n}\n\nexport interface LegacyContextBlock {\n _type: typeof promptContextTypeName\n reference?: {\n _type: 'reference'\n _ref?: string\n }\n}\n\nexport interface LegacyUserInputBlock {\n _type: typeof userInputTypeName\n _key: string\n message?: string\n description?: string\n}\n\nexport type LegacyPromptTextBlock = PortableTextBlock<\n never,\n PortableTextSpan | LegacyFieldRef | LegacyUserInputBlock | LegacyContextBlock,\n 'normal',\n never\n>\n\nexport type LegacyPromptBlock =\n | LegacyPromptTextBlock\n | LegacyFieldRef\n | LegacyContextBlock\n | LegacyUserInputBlock\n\nexport interface LegacyInstruction {\n _key: string\n _type: typeof instructionTypeName\n prompt?: LegacyPromptBlock[]\n\n icon?: string\n userId?: string\n title?: string\n placeholder?: string\n}\n","import {SanityClient, SanityDocument, useClient} from 'sanity'\nimport {useCallback, useEffect, useState} from 'react'\nimport {Box, Button, Card, Dialog, Spinner, Stack, Text, useToast} from '@sanity/ui'\nimport {CheckmarkIcon} from '@sanity/icons'\nimport {\n LegacyAssistDocument,\n legacyAssistDocumentIdPrefix,\n legacyAssistDocumentTypeName,\n legacyAssistStatusDocumentTypeName,\n LegacyContextBlock,\n legacyContextDocumentTypeName,\n LegacyFieldRef,\n LegacyPromptBlock,\n LegacyPromptTextBlock,\n LegacyUserInputBlock,\n} from '../legacy-types'\nimport {assistDocumentId} from '../helpers/ids'\nimport {\n assistDocumentIdPrefix,\n assistDocumentTypeName,\n AssistField,\n assistFieldTypeName,\n contextDocumentTypeName,\n fieldReferenceTypeName,\n InlinePromptBlock,\n instructionContextTypeName,\n instructionTypeName,\n PromptBlock,\n userInputTypeName,\n} from '../types'\nimport {PortableTextSpan} from '@portabletext/types'\nimport {pluginTitle} from '../constants'\n\nconst NO_ASSIST_DOCS: LegacyAssistDocument[] = []\nconst NO_CONTEXT_DOCS: SanityDocument[] = []\nconst NO_IDS: string[] = []\n\ninterface MigratedContextDoc {\n _id: string\n _alphaId: string\n}\n\ntype Task = (subtaskProgress: (percentage: number) => void) => Promise<void>\n\nexport function AlphaMigration() {\n const [alphaAssistDocs, setAlphaAssistDocs] = useState(NO_ASSIST_DOCS)\n const [contextDocs, setContextDocs] = useState(NO_CONTEXT_DOCS)\n const [staleStatusDocIds, setStaleStatusDocs] = useState(NO_IDS)\n const [error, setError] = useState<Error | undefined>(undefined)\n const [progress, setProgress] = useState<number | undefined>(undefined)\n const toast = useToast()\n const client = useClient({apiVersion: '2023-06-01'})\n\n useEffect(() => {\n let canUpdate = true\n client\n .fetch<{\n assistDocs?: LegacyAssistDocument[]\n staleStatusDocIds?: string[]\n contextDocs?: SanityDocument[]\n }>(\n `\n {\n \"assistDocs\": *[_type==\"${legacyAssistDocumentTypeName}\"],\n \"staleStatusDocIds\": *[_type==\"${legacyAssistStatusDocumentTypeName}\"]._id,\n \"contextDocs\": *[_type==\"${legacyContextDocumentTypeName}\"],\n }\n `\n )\n .then((result) => {\n if (!canUpdate || !result) {\n return\n }\n setAlphaAssistDocs(result?.assistDocs ?? NO_ASSIST_DOCS)\n setStaleStatusDocs(result?.staleStatusDocIds ?? NO_IDS)\n setContextDocs(result?.contextDocs ?? NO_CONTEXT_DOCS)\n })\n return () => {\n canUpdate = false\n }\n }, [client, setAlphaAssistDocs, setStaleStatusDocs, setContextDocs])\n\n const convert = useCallback(async () => {\n try {\n setProgress(0.0001)\n\n const tasks: Task[] = [\n () => convertContextDocs(client, contextDocs),\n (subtaskProgress) => deleteDocs(client, staleStatusDocIds, subtaskProgress),\n (subtaskProgress) => convertDocs(client, alphaAssistDocs, subtaskProgress),\n (subtaskProgress) =>\n deleteDocs(\n client,\n contextDocs.map((d) => d._id),\n subtaskProgress\n ),\n ]\n\n const taskSize = 1 / tasks.length\n for (let i = 0; i < tasks.length; i++) {\n const startProgress = i / tasks.length\n await tasks[i]((subProgress) => setProgress(startProgress + subProgress * taskSize))\n setProgress((i + 1) / tasks.length)\n }\n\n setProgress(1)\n setAlphaAssistDocs(NO_ASSIST_DOCS)\n setContextDocs(NO_CONTEXT_DOCS)\n setStaleStatusDocs(NO_IDS)\n toast.push({\n title: `Converted instructions to new format.`,\n status: 'success',\n closable: true,\n })\n } catch (e: any) {\n console.error(e)\n toast.push({\n title: `An error occurred`,\n status: 'error',\n closable: true,\n })\n setError(e)\n setProgress(undefined)\n }\n }, [contextDocs, client, alphaAssistDocs, staleStatusDocIds, setProgress, toast])\n\n if (\n (alphaAssistDocs.length || staleStatusDocIds.length || contextDocs.length) &&\n (!progress || progress < 1)\n ) {\n return (\n <Dialog id=\"outdated-assist-docs\" header={pluginTitle}>\n <Card padding={3}>\n <Stack space={4} style={{maxWidth: 500}}>\n <Text size={1}>\n It seems like this workspace contains documents from an{' '}\n <strong>older version of {pluginTitle}</strong>.\n </Text>\n <Text size={1}>Cleanup is required.</Text>\n {error ? (\n <Card padding={2} tone=\"critical\" border>\n <Text size={1}>An error occurred. See console for details.</Text>{' '}\n </Card>\n ) : null}\n <Button\n icon={\n progress ? (\n <Box style={{marginTop: 5}}>\n <Spinner />\n </Box>\n ) : (\n CheckmarkIcon\n )\n }\n disabled={!!progress}\n text={progress ? `${Math.floor(progress * 100)}%` : 'Ok, convert to new format!'}\n tone=\"primary\"\n onClick={convert}\n />\n </Stack>\n </Card>\n </Dialog>\n )\n }\n\n return null\n}\n\nasync function deleteDocs(\n client: SanityClient,\n ids: string[],\n updateProgress: (percentage: number) => void\n) {\n const chunkSize = 50\n for (let i = 0; i < ids.length; i += chunkSize) {\n const progressCount = Math.min(ids.length, i + chunkSize)\n const chunk = ids.slice(i, progressCount)\n const trans = client.transaction()\n chunk.forEach((id) => trans.delete(id))\n await trans.commit()\n updateProgress(progressCount / ids.length)\n }\n}\n\nasync function convertContextDocs(client: SanityClient, docs: SanityDocument[]) {\n const trans = client.transaction()\n\n for (const doc of docs) {\n const {_id, _type, ...rest} = doc\n trans.createOrReplace({\n ...rest,\n _id: `port.${_id}`,\n _alphaId: _id,\n _type: contextDocumentTypeName,\n })\n }\n\n await trans.commit()\n}\n\nasync function convertDocs(\n client: SanityClient,\n docs: LegacyAssistDocument[],\n updateProgress: (percentage: number) => void\n) {\n const chunkSize = 10\n for (let i = 0; i < docs.length; i += chunkSize) {\n const progressCount = Math.min(docs.length, i + chunkSize)\n const chunk = docs.slice(i, progressCount)\n\n const trans = client.transaction()\n const contextDocs: MigratedContextDoc[] = await client.fetch(\n `*[_type==\"${contextDocumentTypeName}\" && _alphaId != null]{_id, _alphaId}`\n )\n\n chunk.forEach((oldDoc) => {\n const documentType = oldDoc._id.replace(\n new RegExp(`^(${legacyAssistDocumentIdPrefix}|${assistDocumentIdPrefix})`),\n ''\n )\n\n const id = assistDocumentId(documentType)\n\n const fields: AssistField[] = (oldDoc.fields ?? [])\n .filter((field) => field.instructions?.length)\n .map((oldField) => {\n const instructions = (oldField.instructions ?? []).map((inst) => {\n // eslint-disable-next-line max-nested-callbacks\n const prompt = (inst.prompt ?? []).map((block) => {\n return mapBlock(block, contextDocs) as PromptBlock\n })\n return {\n ...inst,\n _type: instructionTypeName,\n prompt,\n }\n })\n return {\n ...oldField,\n _type: assistFieldTypeName,\n instructions,\n }\n })\n\n if (fields.length) {\n trans.createOrReplace({\n _id: id,\n _type: assistDocumentTypeName,\n fields,\n })\n }\n trans.delete(oldDoc._id)\n })\n await trans.commit()\n updateProgress(progressCount / docs.length)\n }\n}\n\ntype Blocks = LegacyPromptBlock | LegacyPromptTextBlock | PortableTextSpan\n\nfunction isFieldRef(block: Blocks): block is LegacyFieldRef {\n return block._type === 'sanity.ai.prompt.fieldRef'\n}\n\nfunction isContext(block: Blocks): block is LegacyContextBlock {\n return block._type === 'sanity.ai.prompt.context'\n}\n\nfunction isUserInput(block: Blocks): block is LegacyUserInputBlock {\n return block._type === 'sanity.ai.prompt.userInput'\n}\n\nfunction isSpan(block: Blocks): block is PortableTextSpan {\n return block._type === 'span'\n}\n\nfunction mapBlock(\n block: Blocks,\n migratedContexts: MigratedContextDoc[]\n): PromptBlock | InlinePromptBlock {\n if (isFieldRef(block)) {\n return {...block, _type: fieldReferenceTypeName}\n }\n if (isUserInput(block)) {\n return {...block, _type: userInputTypeName}\n }\n if (isContext(block)) {\n const newBlock = {\n ...block,\n _type: instructionContextTypeName,\n reference: {\n _type: 'reference',\n _ref:\n migratedContexts.find((c) => c._alphaId === block.reference?._ref)?._id ??\n block.reference?._ref,\n },\n } as const\n return newBlock\n }\n if (isSpan(block)) {\n return block\n }\n const textBlock = block\n return {\n ...textBlock,\n children: (textBlock.children ?? []).map(\n (child) => mapBlock(child, migratedContexts) as InlinePromptBlock\n ),\n }\n}\n","import {useState} from 'react'\nimport {LayoutProps} from 'sanity'\nimport {Connector, ConnectorsProvider} from '../_lib/connector'\nimport {AssistConnectorsOverlay} from '../assistConnectors'\nimport {AssistPluginConfig} from '../plugin'\nimport {AiAssistanceConfigProvider} from './AiAssistanceConfigContext'\nimport {RunInstructionRequest} from '../useApiClient'\nimport {StudioInstruction} from '../types'\nimport {RunInstructionProvider} from './RunInstructionProvider'\nimport {ThemeProvider} from '@sanity/ui'\nimport {AlphaMigration} from './AlphaMigration'\n\nexport interface AIStudioLayoutProps extends LayoutProps {\n config: AssistPluginConfig\n}\n\nexport type RunInstructionArgs = Omit<RunInstructionRequest, 'instructionKey' | 'userText'> & {\n instruction: StudioInstruction\n}\n\nexport function AssistLayout(props: AIStudioLayoutProps) {\n const [connectors, setConnectors] = useState<Connector[]>([])\n const migrate = props.config.alphaMigration ?? true\n\n return (\n <AiAssistanceConfigProvider config={props.config}>\n {migrate ? <AlphaMigration /> : null}\n <RunInstructionProvider>\n <ConnectorsProvider onConnectorsChange={setConnectors}>\n {props.renderDefault(props)}\n <ThemeProvider tone=\"default\">\n <AssistConnectorsOverlay connectors={connectors} />\n </ThemeProvider>\n </ConnectorsProvider>\n </RunInstructionProvider>\n </AiAssistanceConfigProvider>\n )\n}\n","import {InputProps, isArraySchemaType, PatchEvent, unset} from 'sanity'\nimport {ErrorInfo, PropsWithChildren, useCallback, useMemo, useState} from 'react'\nimport {Box, Button, Card, ErrorBoundary, Flex, Stack, Text} from '@sanity/ui'\nimport {isPortableTextArray} from '../helpers/typeUtils'\nimport styled from 'styled-components'\n\nconst WrapPreCard = styled(Card)`\n & pre {\n white-space: pre-wrap !important;\n }\n`\n\nexport function SafeValueInput(props: InputProps) {\n return (\n <ErrorWrapper onChange={props.onChange}>\n <PteValueFixer {...props} />\n </ErrorWrapper>\n )\n}\n\nexport function ErrorWrapper(\n props: PropsWithChildren<{onChange: (patchEvent: PatchEvent) => void}>\n) {\n const {onChange} = props\n const [error, setError] = useState<Error | undefined>()\n\n const catchError = useCallback(\n (params: {error: Error; info: ErrorInfo}) => {\n setError(params.error)\n },\n [setError]\n )\n\n const unsetValue = useCallback(() => onChange(PatchEvent.from(unset())), [onChange])\n const dismiss = useCallback(() => setError(undefined), [])\n const catcher = <ErrorBoundary onCatch={catchError}>{props.children}</ErrorBoundary>\n\n return error ? (\n <Card border tone=\"critical\" padding={2} contentEditable={false}>\n <Stack space={3}>\n <Text muted weight=\"semibold\">\n An error occurred.\n </Text>\n\n <WrapPreCard flex={1} padding={2} tone=\"critical\" border>\n {catcher}\n </WrapPreCard>\n\n <Flex width=\"fill\" flex={1} gap={3}>\n <Box flex={1}>\n <Button text=\"Dismiss\" onClick={dismiss} tone=\"primary\" />\n </Box>\n <Button text=\"Unset value\" onClick={unsetValue} tone=\"critical\" />\n </Flex>\n </Stack>\n </Card>\n ) : (\n catcher\n )\n}\n\nfunction PteValueFixer(props: InputProps) {\n const isPortableText = useMemo(\n () => isArraySchemaType(props.schemaType) && isPortableTextArray(props.schemaType),\n [props.schemaType]\n )\n const value = props.value\n if (isPortableText && value && !(value as any[]).length) {\n return props.renderDefault({...props, value: undefined})\n }\n\n return props.renderDefault(props)\n}\n","import {BlockProps, PatchEvent, useFormCallbacks} from 'sanity'\nimport {useAssistPresence} from '../presence/useAssistPresence'\nimport {Box, Flex} from '@sanity/ui'\nimport {ErrorWrapper} from '../components/SafeValueInput'\nimport {useCallback} from 'react'\nimport {AiFieldPresence} from '../presence/AiFieldPresence'\n\nexport function AssistFormBlock(props: BlockProps) {\n const presence = useAssistPresence(props.path, true)\n const {onChange} = useFormCallbacks()\n const key = props.value._key\n const localOnChange = useCallback(\n (patchEvent: PatchEvent) => {\n if (!key) {\n return\n }\n onChange(PatchEvent.from(patchEvent).prefixAll({_key: key}))\n },\n [onChange, key]\n )\n return (\n <ErrorWrapper onChange={localOnChange}>\n <Flex align=\"center\" justify=\"space-between\">\n <Box flex={1}>{props.renderDefault(props)}</Box>\n {presence.map((pre) => (\n <AiFieldPresence key={pre.lastActiveAt} presence={pre} />\n ))}\n </Flex>\n </ErrorWrapper>\n )\n}\n","import {ItemProps} from 'sanity'\nimport {useAssistPresence} from '../presence/useAssistPresence'\nimport {Box, Flex} from '@sanity/ui'\nimport {AiFieldPresence} from '../presence/AiFieldPresence'\n\nexport function AssistItem(props: ItemProps) {\n const {path} = props\n const presence = useAssistPresence(path, true)\n\n return (\n <Flex align=\"center\" width=\"fill\" style={{position: 'relative'}}>\n <Box flex={1}>{props.renderDefault({...props})}</Box>\n {presence.map((pre) => (\n <Box key={pre.user.id} style={{position: 'absolute', right: 35}}>\n <AiFieldPresence presence={pre} />\n </Box>\n ))}\n </Flex>\n )\n}\n","import {ArrowLeftIcon} from '@sanity/icons'\nimport {Button} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {instructionParam} from '../../../types'\nimport {useDocumentPane} from 'sanity/desk'\nimport {aiInspectorId} from '../../../assistInspector/constants'\n\nexport function BackToInstructionListLink() {\n const {openInspector} = useDocumentPane()\n\n const goBack = useCallback(\n () => openInspector(aiInspectorId, {[instructionParam]: undefined as any}),\n [openInspector]\n )\n\n return (\n <div>\n <Button\n as=\"a\"\n fontSize={1}\n icon={ArrowLeftIcon}\n mode=\"bleed\"\n padding={1}\n space={2}\n onClick={goBack}\n text=\" Instructions\"\n textAlign=\"left\"\n />\n </div>\n )\n}\n","import {\n assistFieldTypeName,\n AssistInspectorRouteParams,\n AssistDocument,\n documentRootKey,\n fieldPathParam,\n AssistField,\n instructionParam,\n} from '../../types'\nimport {useEffect, useMemo, useRef} from 'react'\nimport {\n FormCallbacksProvider,\n FormCallbacksValue,\n FormInput,\n insert,\n KeyedSegment,\n ObjectInputProps,\n ObjectSchemaType,\n Path,\n SchemaType,\n set,\n setIfMissing,\n stringToPath,\n typed,\n useFormCallbacks,\n useSchema,\n} from 'sanity'\nimport {BackToInstructionListLink} from './instruction/BackToInstructionsLink'\nimport {useAiPaneRouter} from '../../assistInspector/helpers'\nimport {SelectedFieldContextProvider, SelectedFieldContextValue} from './SelectedFieldContext'\nimport {Stack} from '@sanity/ui'\nimport {documentTypeFromAiDocumentId} from '../../helpers/ids'\n\nconst EMPTY_FIELDS: AssistField[] = []\n\nexport function AssistDocumentForm(props: ObjectInputProps) {\n const {onChange} = props\n const value = props.value as AssistDocument | undefined\n const id = value?._id\n const fields = value?.fields\n\n const targetDocumentType = useMemo(() => {\n if (!id) {\n return undefined\n }\n return documentTypeFromAiDocumentId(id)\n }, [id])\n\n const {params, setParams} = useAiPaneRouter()\n const pathKey = params[fieldPathParam]\n const instruction = params[instructionParam]\n\n const activeKey = useMemo(\n () => (fields ?? EMPTY_FIELDS).find((f) => f.path === pathKey)?._key,\n [fields, pathKey]\n )\n\n const activePath: Path | undefined = useMemo(() => {\n if (!activeKey) {\n return undefined\n }\n const base = ['fields', {_key: activeKey}]\n return instruction ? [...base, 'instructions', {_key: instruction}] : base\n }, [activeKey, instruction])\n\n const schema = useSchema()\n const documentSchema: ObjectSchemaType | undefined = useMemo(() => {\n if (!targetDocumentType) {\n return undefined\n }\n return schema.get(targetDocumentType) as ObjectSchemaType\n }, [schema, targetDocumentType])\n\n const fieldSchema = useSelectedSchema(pathKey, documentSchema)\n const context: SelectedFieldContextValue = useMemo(\n () => ({\n documentSchema,\n fieldSchema: fieldSchema ?? documentSchema,\n }),\n [fieldSchema, documentSchema]\n )\n\n const title = value?.title\n\n useEffect(() => {\n if (!title && documentSchema && !id?.startsWith('drafts.')) {\n onChange(set(documentSchema.title ?? documentSchema.name, ['title']))\n }\n }, [title, documentSchema, onChange, id])\n\n const fieldExists = !!fields?.some((f) => f._key === pathKey)\n\n const {onPathOpen, ...formCallbacks} = useFormCallbacks()\n\n const newCallbacks: FormCallbacksValue = useMemo(\n () => ({\n ...formCallbacks,\n onPathOpen: (path) => {\n if (!instruction && path.length === 4 && path[2] === 'instructions') {\n setParams(\n typed<AssistInspectorRouteParams>({\n ...params,\n [instructionParam]: (path[3] as KeyedSegment)?._key,\n }) as Record<keyof AssistInspectorRouteParams, string | undefined>\n )\n onPathOpen([])\n } else {\n setTimeout(() => onPathOpen(path), 0)\n }\n },\n }),\n [formCallbacks, onPathOpen, params, setParams, instruction]\n )\n\n useEffect(() => {\n if (activePath && !instruction) {\n onPathOpen([])\n }\n }, [activePath, instruction, onPathOpen])\n\n return (\n <SelectedFieldContextProvider value={context}>\n <Stack space={5}>\n <FieldsInitializer\n key={pathKey}\n pathKey={pathKey}\n activePath={activePath}\n fieldExists={fieldExists}\n onChange={onChange}\n />\n {instruction && <BackToInstructionListLink />}\n\n {activePath && (\n <FormCallbacksProvider {...newCallbacks}>\n <div style={{lineHeight: '1.25em'}}>\n <FormInput {...props} absolutePath={activePath} />\n </div>\n </FormCallbacksProvider>\n )}\n\n {!activePath && props.renderDefault(props)}\n </Stack>\n </SelectedFieldContextProvider>\n )\n}\n\nfunction useSelectedSchema(\n fieldPath: string | undefined,\n documentSchema: ObjectSchemaType | undefined\n): SchemaType | undefined {\n return useMemo(() => {\n if (!fieldPath) {\n return undefined\n }\n if (fieldPath === documentRootKey) {\n return documentSchema\n }\n\n const path = stringToPath(fieldPath)\n let currentSchema: ObjectSchemaType | undefined = documentSchema\n for (let i = 0; i < path.length; i++) {\n const segment = path[i]\n const field = currentSchema?.fields.find((f) => f.name === segment)\n if (!field) {\n return undefined\n }\n if (i === path.length - 1) {\n return field.type\n }\n if (field.type.jsonType !== 'object') {\n return undefined\n }\n currentSchema = field.type\n }\n return currentSchema\n }, [documentSchema, fieldPath])\n}\n\nfunction FieldsInitializer({\n pathKey,\n activePath,\n fieldExists,\n onChange,\n}: {\n pathKey?: string\n activePath?: Path\n fieldExists: boolean\n onChange: ObjectInputProps['onChange']\n}) {\n // need this to not fire onChange twice in React strict mode\n const initialized = useRef(false)\n useEffect(() => {\n if (initialized.current || fieldExists || activePath || !pathKey) {\n return\n }\n onChange([\n setIfMissing([], ['fields']),\n insert(\n [\n typed<AssistField>({\n _key: pathKey,\n _type: assistFieldTypeName,\n path: pathKey,\n }),\n ],\n 'after',\n ['fields', -1]\n ),\n ])\n initialized.current = true\n }, [activePath, onChange, pathKey, fieldExists])\n\n return null\n}\n","import {FieldError, FieldMember, FieldSetMember, ObjectMember} from 'sanity'\n\nexport function findFieldMember(\n members: ObjectMember[],\n fieldName: string\n): FieldMember | FieldError | undefined {\n return members.find(\n (m): m is FieldMember | FieldError =>\n (m.kind === 'field' && m.name === fieldName) ||\n (m.kind === 'error' && m.fieldName === fieldName)\n )\n}\n\nexport function findFieldsetMember(\n members: ObjectMember[],\n fieldsetName: string\n): FieldSetMember | undefined {\n return members.find(\n (m): m is FieldSetMember => m.kind === 'fieldSet' && m.fieldSet.name === fieldsetName\n )\n}\n","import {FieldError, FieldMember, ObjectInputMember, ObjectInputProps} from 'sanity'\nimport {findFieldMember, findFieldsetMember} from '../helpers'\nimport {Box, Flex, Stack, Text} from '@sanity/ui'\nimport {useId, useMemo} from 'react'\n\nexport function InstructionInput(props: ObjectInputProps) {\n return (\n <Stack space={[4, 4, 4, 5]}>\n <NameField {...props} />\n <ShareField {...props} />\n <PromptField {...props} />\n </Stack>\n )\n}\n\nfunction PromptField(props: ObjectInputProps) {\n const promptMember = findFieldMember(props.members, 'prompt')\n return promptMember ? <ObjectInputMember {...props} member={promptMember} /> : null\n}\n\nconst NONE: (FieldMember | FieldError)[] = []\n\nfunction NameField(props: ObjectInputProps) {\n const fieldsetMember = findFieldsetMember(props.members, 'appearance')\n const titleId = useId()\n\n const members = fieldsetMember?.fieldSet.members ?? NONE\n const iconMember = findFieldMember(members, 'icon')\n const titleMember = findFieldMember(members, 'title')\n\n const titlePlaceholder = 'Untitled'\n const moddedTitleMember = useMemo(() => {\n if (!titleMember) {\n return undefined\n }\n if (titleMember.kind === 'error') {\n return titleMember\n }\n return {\n ...titleMember,\n field: {\n ...titleMember?.field,\n schemaType: {\n ...titleMember?.field.schemaType,\n placeholder: titlePlaceholder,\n },\n },\n }\n }, [titleMember, titlePlaceholder])\n\n return (\n <Stack space={5}>\n <Stack space={2}>\n <Flex gap={1}>\n <Text as=\"label\" weight=\"semibold\" size={1} htmlFor={titleId}>\n Name\n </Text>\n </Flex>\n\n <Text muted size={1}>\n How this instruction appears in menus\n </Text>\n\n <Flex align=\"center\">\n {iconMember && (\n <Box flex=\"none\">\n <ObjectInputMember {...props} member={iconMember} />\n </Box>\n )}\n {moddedTitleMember && (\n <Box flex={1} style={{marginLeft: -1}}>\n <ObjectInputMember {...props} member={moddedTitleMember} />\n </Box>\n )}\n </Flex>\n </Stack>\n </Stack>\n )\n}\n\nfunction ShareField(props: ObjectInputProps) {\n const fieldsetMember = findFieldsetMember(props.members, 'appearance')\n const members = fieldsetMember?.fieldSet.members ?? NONE\n const visibilityMember = findFieldMember(members, 'userId')\n\n return <>{visibilityMember && <ObjectInputMember {...props} member={visibilityMember} />}</>\n}\n","import {FieldProps} from 'sanity'\n\nexport function HiddenFieldTitle(props: FieldProps) {\n return props.renderDefault({...props, title: '', level: props.level - 2, changed: false})\n}\n","import {set, StringInputProps, unset, useCurrentUser} from 'sanity'\nimport {Card, Flex, Switch, Text} from '@sanity/ui'\nimport {useCallback, useId} from 'react'\n\nexport function InstructionVisibility(props: StringInputProps) {\n const {value, onChange} = props\n\n const user = useCurrentUser()\n\n const handleChange = useCallback(() => {\n const newValue = value ? '' : user?.id ?? ''\n onChange(newValue ? set(newValue) : unset())\n }, [onChange, user, value])\n\n const id = useId()\n\n return (\n <Card>\n <Flex gap={2} align=\"flex-start\">\n <div style={{margin: '-3px 0'}}>\n <Switch\n {...props.elementProps}\n id={id}\n value={`${!value}`}\n checked={!value}\n onChange={handleChange}\n disabled={props.elementProps.readOnly}\n />\n </div>\n\n <Text muted size={1} weight=\"medium\">\n <label htmlFor={id}>Make visible to all Studio members</label>\n </Text>\n </Flex>\n </Card>\n )\n}\n","import {icons} from '@sanity/icons'\nimport {set, StringInputProps} from 'sanity'\nimport {Button, Menu, MenuButton, MenuItem} from '@sanity/ui'\nimport {ElementType, ReactNode, useCallback, useId, useMemo} from 'react'\n\nexport function IconInput(props: StringInputProps) {\n const {value, onChange} = props\n const id = useId()\n const items = useMemo(\n () =>\n Object.entries(icons).map(([key, icon]) => (\n <IconItem key={key} iconKey={key} icon={icon} onChange={onChange} />\n )),\n [onChange]\n )\n\n const selectedIcon = useMemo(() => getIcon(value), [value])\n\n return (\n <MenuButton\n button={\n <Button icon={selectedIcon} title=\"Select icon\" padding={3} mode=\"ghost\" radius={1} />\n }\n id={id}\n menu={<Menu style={{maxHeight: 300}}>{items}</Menu>}\n popover={{portal: true}}\n />\n )\n}\n\nfunction IconItem({\n icon,\n iconKey: key,\n onChange,\n}: {\n iconKey: string\n icon: ElementType | ReactNode\n onChange: StringInputProps['onChange']\n}) {\n const onClick = useCallback(() => onChange(set(key)), [onChange, key])\n return <MenuItem icon={icon} title={key} text={key} onClick={onClick} />\n}\n\nexport function getIcon(iconName?: string) {\n return Object.entries(icons).find(([key]) => key === iconName)?.[1] ?? icons.sparkles\n}\n","import {SearchIcon} from '@sanity/icons'\nimport {Autocomplete, Box, Breadcrumbs, Card, Flex, Text} from '@sanity/ui'\nimport {createElement, useCallback, useMemo} from 'react'\nimport {FieldRef, getFieldRefs, getFieldRefsWithDocument} from './helpers'\nimport {ObjectSchemaType} from 'sanity'\nimport {isType} from '../helpers/typeUtils'\n\ninterface FieldSelectorProps {\n id: string\n schemaType: ObjectSchemaType\n fieldPath?: string\n onSelect: (path: string) => void\n includeDocument?: boolean\n}\n\nexport function FieldAutocomplete(props: FieldSelectorProps) {\n const {id, schemaType, fieldPath, onSelect, includeDocument} = props\n\n const fieldNames = useMemo(() => {\n if (includeDocument) {\n return getFieldRefsWithDocument(schemaType)\n }\n return getFieldRefs(schemaType)\n }, [schemaType, includeDocument])\n const currentField = useMemo(\n () => fieldNames.find((f) => f.key === fieldPath),\n [fieldPath, fieldNames]\n )\n\n const autocompleteOptions = useMemo(\n () => fieldNames.map((field) => ({value: field.key, field})),\n [fieldNames]\n )\n\n const renderOption = useCallback((option: {value: string; field: FieldRef}) => {\n const {value, field} = option\n\n if (!value) {\n return (\n <Card as=\"button\" padding={3} radius={1}>\n <Text accent size={1}>\n {option.value}\n </Text>\n </Card>\n )\n }\n\n if (isType(field.schemaType, 'document')) {\n return (\n <Card as=\"button\" padding={3} radius={1}>\n <Text size={1} weight=\"semibold\">\n The entire document\n </Text>\n </Card>\n )\n }\n\n const splitTitle = field.title.split('/')\n return (\n <Card as=\"button\" padding={3} radius={1}>\n <Flex gap={3}>\n <Text size={1}>{createElement(field.icon)}</Text>\n\n <Box flex=\"none\">\n <Breadcrumbs\n separator={\n <Text muted size={1}>\n /\n </Text>\n }\n space={1}\n >\n {splitTitle.slice(0, splitTitle.length - 1).map((pt, i) => (\n // eslint-disable-next-line react/no-array-index-key\n <Text key={i} muted size={1}>\n {pt.trim()}\n </Text>\n ))}\n\n <Text size={1} weight=\"medium\">\n {splitTitle[splitTitle.length - 1]}\n </Text>\n </Breadcrumbs>\n </Box>\n </Flex>\n </Card>\n )\n }, [])\n\n const renderValue = useCallback((value: string, option?: {value: string; field: FieldRef}) => {\n return option?.field.title ?? value\n }, [])\n\n const filterOption = useCallback((query: string, option: {value: string; field: FieldRef}) => {\n const lQuery = query.toLowerCase()\n return (\n option?.value?.toLowerCase().includes(lQuery) ||\n option?.field?.title?.toLowerCase().includes(lQuery)\n )\n }, [])\n\n // const id = useId()\n return (\n <Autocomplete\n fontSize={1}\n icon={currentField ? currentField.icon : SearchIcon}\n onChange={onSelect}\n openButton\n id={id}\n options={autocompleteOptions}\n placeholder=\"Search for a field\"\n radius={2}\n renderOption={renderOption}\n renderValue={renderValue}\n value={currentField?.key}\n filterOption={filterOption}\n />\n )\n}\n","import {set, StringInputProps} from 'sanity'\nimport {useCallback, useContext, useEffect, useId, useRef} from 'react'\nimport {Box} from '@sanity/ui'\nimport {SelectedFieldContext} from '../SelectedFieldContext'\nimport {FieldAutocomplete} from '../../../assistInspector/FieldAutocomplete'\n\nexport function FieldRefPathInput(props: StringInputProps) {\n const documentSchema = useContext(SelectedFieldContext)?.documentSchema\n const ref = useRef<HTMLDivElement>(null)\n const id = useId()\n const {onChange} = props\n\n useEffect(() => {\n ref.current?.querySelector('input')?.focus()\n }, [])\n\n const onSelect = useCallback((path: string) => onChange(set(path)), [onChange])\n\n if (!documentSchema) {\n return props.renderDefault(props)\n }\n\n return (\n <Box flex={1} style={{minWidth: 200}} ref={ref}>\n <FieldAutocomplete\n id={id}\n schemaType={documentSchema}\n onSelect={onSelect}\n fieldPath={props.value}\n />\n </Box>\n )\n}\n","import {ArrayOfObjectsInputProps, useCurrentUser} from 'sanity'\nimport {useMemo} from 'react'\nimport {StudioInstruction} from '../../types'\n\nexport function InstructionsArrayInput(props: ArrayOfObjectsInputProps) {\n const user = useCurrentUser()\n\n const originalValue = props.value as StudioInstruction[] | undefined\n const originalMembers = props.members\n const value = useMemo(\n () => (originalValue ?? []).filter((v) => !v.userId || v.userId === user?.id),\n [originalValue, user]\n )\n const members = useMemo(\n () =>\n (originalMembers ?? []).filter((v) => {\n if (v.kind === 'error') {\n return true\n }\n const value = v?.item?.value as any\n return !value.userId || value.userId === user?.id\n }),\n [originalMembers, user]\n )\n return props.renderDefault({...props, value, members})\n}\n","import {BlockProps} from 'sanity'\nimport {Box} from '@sanity/ui'\nimport {createContext} from 'react'\n\n// workaround for preview value sometimes lagging behind\nexport const InlineBlockValueContext = createContext<unknown>(undefined)\n\nexport function AssistInlineFormBlock(props: BlockProps) {\n return (\n <InlineBlockValueContext.Provider value={props.value}>\n <Box flex={1}>{props.renderDefault(props)}</Box>\n </InlineBlockValueContext.Provider>\n )\n}\n","import {useContext} from 'react'\nimport {useSelectedField} from '../../assistInspector/helpers'\nimport {Box, Flex, Text} from '@sanity/ui'\nimport {PreviewProps} from 'sanity'\nimport {SelectedFieldContext} from './SelectedFieldContext'\nimport {InlineBlockValueContext} from '../../assistFormComponents/AssistInlineFormBlock'\n\nexport function FieldRefPreview(props: PreviewProps & {path?: string}) {\n const documentSchema = useContext(SelectedFieldContext)?.documentSchema\n const path = (useContext(InlineBlockValueContext) as {path?: string})?.path ?? props.path\n const selectedField = useSelectedField(documentSchema, path)\n return (\n <Flex gap={2} align=\"center\" style={{width: '100%'}}>\n <Flex flex={1} gap={2} align=\"center\" paddingY={3} paddingX={1}>\n {/*<Box>\n <Text>{selectedField?.icon ? createElement(selectedField?.icon) : <CodeIcon />}</Text>\n </Box>*/}\n <Box>\n <Text size={1} textOverflow=\"ellipsis\">\n {selectedField?.title ?? 'Select field'}\n </Text>\n </Box>\n </Flex>\n <>{props.actions}</>\n </Flex>\n )\n}\n","import {ObjectInputProps} from 'sanity'\nimport {Box} from '@sanity/ui'\nimport {useEffect, useRef} from 'react'\n\nexport function HideReferenceChangedBannerInput(props: ObjectInputProps) {\n const ref = useRef<HTMLDivElement>(null)\n\n // hides \"reference was changed\" banner (it is incorrectly flashing because the pane handler does not support the way wie use the assist pane)\n useEffect(() => {\n const parent = ref.current?.closest('[data-testid=\"pane-content\"]')\n if (!parent) {\n return\n }\n const style = document.createElement('style')\n const parentId = `id-${Math.random()}`.replace('.', '-')\n parent.id = parentId\n\n style.innerText = `\n #${parentId} [data-testid=\"reference-changed-banner\"] { display: none; }\n `\n parent.prepend(style)\n }, [ref])\n\n return <Box ref={ref}>{props.renderDefault(props)}</Box>\n}\n","import {defineArrayMember, defineField, defineType} from 'sanity'\nimport {contextDocumentTypeName} from '../types'\nimport {DocumentTextIcon, TokenIcon} from '@sanity/icons'\nimport {HideReferenceChangedBannerInput} from '../components/HideReferenceChangedBannerInput'\n\nexport const contextDocumentSchema = defineType({\n type: 'document',\n name: contextDocumentTypeName,\n title: 'AI context',\n liveEdit: true,\n icon: TokenIcon,\n components: {\n input: HideReferenceChangedBannerInput,\n },\n fields: [\n defineField({\n type: 'string',\n name: 'title',\n title: 'Title',\n }),\n defineField({\n name: 'context',\n type: 'array',\n title: 'Context',\n of: [\n defineArrayMember({\n type: 'block',\n styles: [{title: 'Normal', value: 'normal'}],\n lists: [],\n marks: {\n decorators: [],\n annotations: [],\n },\n }),\n ],\n }),\n ],\n preview: {\n select: {\n title: 'title',\n context: 'context',\n },\n prepare({title, context}) {\n const text = context\n ?.flatMap((block: any) => block?.children)\n .flatMap((child: any) => child?.text?.split(' '))\n .filter(Boolean)\n const words = text?.length ?? 0\n return {\n title,\n subtitle: `Words: ${words}`,\n media: DocumentTextIcon,\n }\n },\n },\n})\n","// Strict ESM env, designed to run outside Node.js in envs that provide WebCrypto (deno, browsers, etc)\n\nexport default function getRandomValues(typedArray) {\n return window.crypto.getRandomValues(typedArray)\n}\n","import getRandomValues from 'get-random-values-esm'\n\n// WHATWG crypto RNG - https://w3c.github.io/webcrypto/Overview.html\nfunction whatwgRNG(length = 16) {\n const rnds8 = new Uint8Array(length)\n getRandomValues(rnds8)\n return rnds8\n}\n\nconst getByteHexTable = (() => {\n let table: string[]\n return () => {\n if (table) {\n return table\n }\n table = []\n for (let i = 0; i < 256; ++i) {\n table[i] = (i + 0x100).toString(16).substring(1)\n }\n return table\n }\n})()\n\nexport function randomKey(length?: number) {\n const table = getByteHexTable()\n return whatwgRNG(length)\n .reduce((str, n) => str + table[n], '')\n .slice(0, length)\n}\n","import {ArrayOfObjectsInputProps, set, typed} from 'sanity'\nimport {Box} from '@sanity/ui'\nimport styled from 'styled-components'\nimport {useEffect} from 'react'\nimport {ContextBlock, FieldRef, PromptBlock, PromptTextBlock, UserInputBlock} from '../../../types'\nimport {randomKey} from '../../../_lib/randomKey'\n\nconst PteMods = styled(Box)`\n & [data-testid='pt-editor__toolbar-card'] > div > div:last-child {\n display: none;\n }\n & [data-testid='pt-editor'] {\n min-height: 300px;\n }\n & [data-testid='pt-editor'] .pt-inline-object * {\n max-width: 400px;\n }\n`\n\nexport function PromptInput(props: ArrayOfObjectsInputProps) {\n // quickfixes the model (converts blocks to inline blocks for alpha customers)\n // backend supports both types, but this prevents \"missing block\" schema errors\n useOnlyInlineBlocks(props)\n return <PteMods>{props.renderDefault(props)}</PteMods>\n}\n\nfunction useOnlyInlineBlocks(props: ArrayOfObjectsInputProps) {\n useEffect(() => {\n let needsFix = false\n const val = ((props.value as PromptBlock[]) ?? []).map((block) => {\n if (block._type === 'block') {\n return block\n }\n\n needsFix = true\n return typed<PromptTextBlock>({\n _key: randomKey(12),\n _type: 'block',\n level: 0,\n markDefs: [],\n style: 'normal',\n children: [block as FieldRef | ContextBlock | UserInputBlock],\n })\n })\n\n if (needsFix) {\n props.onChange(set(val))\n }\n // only run this once when loading the field\n // eslint-disable-next-line\n }, [])\n}\n","import {ArrayFieldProps} from 'sanity'\n\nexport function InstructionsArrayField(props: ArrayFieldProps) {\n return props.renderDefault({\n ...props,\n title: undefined,\n })\n}\n","import {defineArrayMember, defineField, defineType, ObjectSchemaType} from 'sanity'\nimport {\n ArrowRightIcon,\n CodeIcon,\n ComposeIcon,\n icons,\n IconSymbol,\n LockIcon,\n SparklesIcon,\n ThListIcon,\n} from '@sanity/icons'\nimport {\n assistDocumentIdPrefix,\n assistDocumentTypeName,\n assistFieldTypeName,\n assistTasksStatusTypeName,\n fieldReferenceTypeName,\n instructionContextTypeName,\n instructionTaskTypeName,\n instructionTypeName,\n promptTypeName,\n userInputTypeName,\n} from '../types'\nimport {Box, Flex, Stack, Text, Tooltip} from '@sanity/ui'\nimport {getInstructionTitle} from '../helpers/misc'\nimport {AssistDocumentForm} from '../assistDocument/components/AssistDocumentForm'\nimport {InstructionInput} from '../assistDocument/components/instruction/InstructionInput'\nimport {HiddenFieldTitle} from '../assistDocument/components/generic/HiddenFieldTitle'\nimport {InstructionVisibility} from '../assistDocument/components/instruction/appearance/InstructionVisibility'\nimport {IconInput} from '../assistDocument/components/instruction/appearance/IconInput'\nimport {FieldRefPathInput} from '../assistDocument/components/instruction/FieldRefInput'\nimport {InstructionsArrayInput} from '../assistDocument/components/InstructionsArrayInput'\nimport {FieldRefPreview} from '../assistDocument/components/FieldRefPreview'\nimport {createElement} from 'react'\nimport {contextDocumentSchema} from './contextDocumentSchema'\nimport {PromptInput} from '../assistDocument/components/instruction/PromptInput'\nimport {instructionGuideUrl} from '../constants'\nimport {InstructionsArrayField} from '../assistDocument/components/InstructionsArrayField'\nimport {getFieldRefsWithDocument} from '../assistInspector/helpers'\n\nexport const fieldReference = defineType({\n type: 'object',\n name: fieldReferenceTypeName,\n title: 'Document field',\n icon: ThListIcon,\n\n fields: [\n defineField({\n type: 'string',\n name: 'path',\n title: 'Field',\n components: {\n input: FieldRefPathInput,\n },\n validation: (rule) =>\n rule.custom((value, context) => {\n if (!value) {\n return 'Please select a field'\n }\n try {\n const docId = context.document?._id\n if (!docId) {\n return `Field reference cannot be used outside document inspector context. Could not resolve document id.`\n }\n const targetDocType = docId.replace(new RegExp(`^${assistDocumentIdPrefix}`), '')\n const schema = context.schema.get(targetDocType)\n if (!schema) {\n return `Field reference cannot be used outside document inspector context. Could not resolve schema: ${targetDocType}`\n }\n const refs = getFieldRefsWithDocument(schema as ObjectSchemaType)\n const fieldRef = refs.find((r) => r.key === value)\n if (!fieldRef) {\n return `Field with path \"${value}\" does not exist in the schema.`\n }\n return true\n } catch (e) {\n console.error('Failed to resolve field reference', e)\n return 'Invalid field reference.'\n }\n }),\n }),\n ],\n preview: {\n select: {\n path: 'path',\n },\n prepare({path}) {\n return {\n title: path,\n path,\n icon: CodeIcon,\n }\n },\n },\n components: {\n preview: FieldRefPreview,\n },\n options: {\n modal: {\n type: 'popover',\n },\n },\n})\n\nexport const userInput = defineType({\n type: 'object',\n name: userInputTypeName,\n title: 'User input',\n icon: ComposeIcon,\n fields: [\n defineField({\n type: 'string',\n name: 'message',\n title: 'User input title',\n placeholder: 'Provide instruction text',\n description: 'The header above the user input text field',\n validation: (rule) => rule.required(),\n }),\n defineField({\n type: 'text',\n rows: 3,\n name: 'description',\n title: 'User input description',\n description: 'The description above the user input text field',\n }),\n ],\n preview: {\n select: {\n title: 'message',\n },\n },\n options: {\n modal: {\n type: 'popover',\n width: 1,\n },\n },\n})\n\nexport const promptContext = defineType({\n type: 'object',\n name: instructionContextTypeName,\n title: contextDocumentSchema.title,\n icon: contextDocumentSchema.icon,\n fields: [\n defineField({\n type: 'reference',\n name: 'reference',\n to: [{type: contextDocumentSchema.name}],\n title: 'Context',\n description: 'The referenced context will be inserted into the instruction',\n validation: (rule) => rule.required(),\n components: {\n input: function Fix(props) {\n return <Box style={{maxWidth: 300}}>{props.renderDefault(props)}</Box>\n },\n },\n }),\n ],\n preview: {\n select: {\n ref: 'reference._ref',\n title: 'reference.title',\n context: 'reference.context',\n },\n prepare(select) {\n return select.ref\n ? contextDocumentSchema?.preview?.prepare?.(select) ?? select\n : {title: 'No reference selected', media: contextDocumentSchema.icon}\n },\n },\n options: {\n modal: {\n type: 'popover',\n width: 'auto',\n },\n },\n})\n\nexport const prompt = defineType({\n type: 'array',\n name: promptTypeName,\n title: 'Prompt',\n of: [\n defineArrayMember({\n type: 'block',\n styles: [{title: 'Normal', value: 'normal'}],\n lists: [],\n marks: {\n decorators: [],\n annotations: [],\n },\n of: [\n defineArrayMember({\n type: fieldReference.name,\n }),\n defineArrayMember({\n type: promptContext.name,\n }),\n defineArrayMember({\n type: userInput.name,\n }),\n ],\n }),\n /* defineArrayMember({\n type: fieldReference.name,\n }),\n defineArrayMember({\n type: promptContext.name,\n }),\n defineArrayMember({\n type: userInput.name,\n }),*/\n ],\n})\n\nexport const instruction = defineType({\n type: 'object',\n name: instructionTypeName,\n title: 'Instruction',\n fieldsets: [\n {name: 'appearance', title: 'Appearance', options: {collapsible: true, collapsed: true}},\n ],\n preview: {\n select: {\n icon: 'icon',\n title: 'title',\n userId: 'userId',\n },\n prepare: ({icon, title, userId}) => {\n return {\n title,\n icon: icon ? icons[icon as IconSymbol] : SparklesIcon,\n userId,\n }\n },\n },\n components: {\n input: InstructionInput,\n preview: (props: any) => {\n return (\n <Flex gap={3} align=\"center\" padding={2}>\n {props.icon && (\n <Box flex=\"none\">\n <Text size={1}>{createElement(props.icon)}</Text>\n </Box>\n )}\n\n <Stack flex={1} space={2}>\n <Text size={1} textOverflow=\"ellipsis\" weight=\"medium\">\n {getInstructionTitle(props)}\n </Text>\n </Stack>\n\n {props.userId && (\n <Text size={1}>\n <Tooltip\n content={<Text size={1}>Only visible to you</Text>}\n padding={2}\n placement=\"top\"\n portal\n >\n <LockIcon />\n </Tooltip>\n </Text>\n )}\n </Flex>\n )\n },\n },\n fields: [\n defineField({\n type: prompt.name,\n name: 'prompt',\n title: 'Instruction',\n description: (\n <>\n Learn from{' '}\n <a href={instructionGuideUrl} target=\"_blank\" rel=\"noreferrer\">\n our instruction guide <ArrowRightIcon />\n </a>\n </>\n ),\n components: {\n input: PromptInput,\n },\n }),\n defineField({\n type: 'string',\n name: 'icon',\n title: 'Icon',\n fieldset: 'appearance',\n components: {\n field: HiddenFieldTitle,\n input: IconInput,\n },\n }),\n defineField({\n type: 'string',\n name: 'title',\n title: 'Title',\n fieldset: 'appearance',\n components: {\n field: HiddenFieldTitle,\n },\n }),\n defineField({\n type: 'string',\n name: 'userId',\n title: 'Visibility',\n fieldset: 'appearance',\n components: {\n field: HiddenFieldTitle,\n input: InstructionVisibility,\n },\n initialValue: (params, context) => context.currentUser?.id ?? '',\n readOnly: (context) =>\n Boolean(\n context.parent?.createdById && context.parent?.createdById !== context.currentUser?.id\n ),\n }),\n defineField({\n type: 'string',\n name: 'createdById',\n title: 'Created by',\n hidden: true,\n fieldset: 'appearance',\n initialValue: (params, context) => {\n return context.currentUser?.id ?? ''\n },\n }),\n ],\n})\n\nexport const fieldInstructions = defineType({\n type: 'object',\n name: assistFieldTypeName,\n title: 'Field prompt',\n /* components: {\n input: FieldPromptInput,\n },*/\n fields: [\n defineField({\n type: 'string',\n name: 'path',\n title: 'Path',\n readOnly: true,\n hidden: true,\n }),\n defineField({\n type: 'array',\n name: 'instructions',\n title: 'Instructions',\n of: [{type: instruction.name}],\n components: {\n field: InstructionsArrayField,\n input: InstructionsArrayInput,\n },\n }),\n ],\n preview: {\n select: {\n title: 'path',\n },\n },\n})\n\nexport const assistDocumentSchema = defineType({\n //NOTE: this is a document type. Using object here ensures it does not appear in structure menus\n type: 'object',\n //workaround for using object and not document\n ...({liveEdit: true} as any),\n name: assistDocumentTypeName,\n title: 'AI Document',\n\n components: {\n input: AssistDocumentForm,\n field: (props) => {\n return props.renderDefault({...props, title: ''})\n },\n },\n fields: [\n defineField({\n type: 'string',\n name: 'title',\n title: 'Title',\n }),\n defineField({\n type: 'array',\n name: 'fields',\n title: 'Fields',\n of: [{type: fieldInstructions.name}],\n }),\n ],\n preview: {\n select: {\n title: 'title',\n },\n },\n})\n\nexport const instructionTask = defineType({\n type: 'object',\n name: instructionTaskTypeName,\n title: 'Instruction task',\n fields: [\n defineField({\n type: 'string',\n name: 'path',\n title: 'Path',\n }),\n defineField({\n type: 'string',\n name: 'instructionKey',\n title: 'Instruction key',\n }),\n defineField({\n type: 'datetime',\n name: 'started',\n title: 'Started',\n }),\n defineField({\n type: 'datetime',\n name: 'updated',\n title: 'Updated',\n }),\n defineField({\n type: 'string',\n name: 'info',\n title: 'Info',\n }),\n ],\n})\n\nexport const documentInstructionStatus = defineType({\n //NOTE: this is a document type. Using object here ensures it does not appear in structure menus\n type: 'object',\n //workaround for using object and not document\n ...({liveEdit: true} as any),\n name: assistTasksStatusTypeName,\n title: 'Document instruction status',\n fields: [\n defineField({\n type: 'array',\n name: 'tasks',\n title: 'Tasks',\n of: [{type: instructionTask.name}],\n }),\n ],\n})\n","import {\n assistDocumentSchema,\n documentInstructionStatus,\n fieldInstructions,\n fieldReference,\n instruction,\n instructionTask,\n prompt,\n promptContext,\n userInput,\n} from './assistDocumentSchema'\nimport {contextDocumentSchema} from './contextDocumentSchema'\n\nexport const schemaTypes = [\n fieldInstructions,\n assistDocumentSchema,\n prompt,\n fieldReference,\n instruction,\n documentInstructionStatus,\n instructionTask,\n contextDocumentSchema,\n userInput,\n promptContext,\n]\n","import {Path, SchemaType} from 'sanity'\nimport {useMemo} from 'react'\nimport {isAssistSupported} from './assistSupported'\n\nexport function useAssistSupported(path: Path, schemaType: SchemaType) {\n return useMemo(\n () => path.every((p) => typeof p === 'string') && isAssistSupported(schemaType),\n [path, schemaType]\n )\n}\n","import {getPublishedId, ObjectSchemaType, useEditState} from 'sanity'\nimport {useStudioAssistDocument} from './useStudioAssistDocument'\nimport {AssistDocumentContextValue} from '../AssistDocumentContext'\nimport {useMemo} from 'react'\nimport {isDocAssistable} from '../RequestRunInstructionProvider'\nimport {useDocumentPane} from 'sanity/desk'\nimport {useAiPaneRouter} from '../../assistInspector/helpers'\nimport {fieldPathParam} from '../../types'\n\nexport function useAssistDocumentContextValue(\n documentId: string,\n documentSchemaType: ObjectSchemaType\n) {\n const {published, draft} = useEditState(\n getPublishedId(documentId),\n documentSchemaType.name,\n 'low'\n )\n const assistableDocumentId = draft?._id || published?._id || documentId\n const documentIsNew = Boolean(!draft?._id && !published?._id)\n const documentIsAssistable = isDocAssistable(documentSchemaType, published, draft)\n\n const {params} = useAiPaneRouter()\n const selectedPath = params[fieldPathParam]\n const {openInspector, closeInspector, inspector, onChange: documentOnChange} = useDocumentPane()\n\n const assistDocument = useStudioAssistDocument({\n documentId,\n schemaType: documentSchemaType,\n })\n\n const value: AssistDocumentContextValue = useMemo(() => {\n const base = {\n documentId,\n assistableDocumentId,\n documentSchemaType,\n documentIsNew,\n documentIsAssistable,\n openInspector,\n closeInspector,\n inspector,\n documentOnChange,\n selectedPath,\n }\n if (!assistDocument) {\n return {...base, loading: true, assistDocument: undefined}\n }\n return {\n ...base,\n loading: false,\n assistDocument: assistDocument,\n }\n }, [\n assistDocument,\n documentIsAssistable,\n documentId,\n assistableDocumentId,\n documentSchemaType,\n documentIsNew,\n openInspector,\n closeInspector,\n inspector,\n documentOnChange,\n selectedPath,\n ])\n\n return value\n}\n","import {LockIcon} from '@sanity/icons'\nimport {Text, Tooltip} from '@sanity/ui'\n\nexport function PrivateIcon() {\n return (\n <Tooltip\n content={\n <Text size={1} style={{whiteSpace: 'nowrap'}}>\n Only visible to you\n </Text>\n }\n fallbackPlacements={['bottom']}\n padding={2}\n placement=\"top\"\n portal\n >\n <LockIcon />\n </Tooltip>\n )\n}\n","import {createContext, useEffect, useMemo, useState} from 'react'\nimport {InputProps, pathToString} from 'sanity'\nimport {getCaptionFieldOption} from '../helpers/typeUtils'\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {useApiClient, useGenerateCaption} from '../useApiClient'\nimport {useAiAssistanceConfig} from '../assistLayout/AiAssistanceConfigContext'\n\nexport interface ImageContextValue {\n captionPath: string\n assetRef?: string\n}\n\nexport const ImageContext = createContext<ImageContextValue | undefined>(undefined)\n\nexport function ImageContextProvider(props: InputProps) {\n const {schemaType, path, value} = props\n const assetRef = (value as any)?.asset?._ref\n const [assetRefState, setAssetRefState] = useState<string | undefined>(assetRef)\n\n const {documentId} = useAssistDocumentContext()\n const {config} = useAiAssistanceConfig()\n const apiClient = useApiClient(config?.__customApiClient)\n const {generateCaption} = useGenerateCaption(apiClient)\n\n useEffect(() => {\n const captionField = getCaptionFieldOption(schemaType)\n if (assetRef && documentId && captionField && assetRef !== assetRefState) {\n setAssetRefState(assetRef)\n generateCaption({path: pathToString([...path, captionField]), documentId: documentId})\n }\n }, [schemaType, path, assetRef, assetRefState, documentId, generateCaption])\n\n const context: ImageContextValue | undefined = useMemo(() => {\n const captionField = getCaptionFieldOption(schemaType)\n return captionField ? {captionPath: pathToString([...path, captionField]), assetRef} : undefined\n }, [schemaType, path, assetRef])\n\n return <ImageContext.Provider value={context}>{props.renderDefault(props)}</ImageContext.Provider>\n}\n","import {DocumentFieldAction, DocumentFieldActionGroup, DocumentFieldActionItem} from 'sanity'\nimport {ImageIcon} from '@sanity/icons'\nimport {useContext, useMemo} from 'react'\nimport {usePathKey} from '../helpers/misc'\nimport {useApiClient, useGenerateCaption} from '../useApiClient'\nimport {useAiAssistanceConfig} from '../assistLayout/AiAssistanceConfigContext'\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {ImageContext} from '../components/ImageContext'\nimport {Box, Spinner} from '@sanity/ui'\n\nfunction node(node: DocumentFieldActionItem | DocumentFieldActionGroup) {\n return node\n}\n\nexport const generateCaptionsActions: DocumentFieldAction = {\n name: 'sanity-assist-generate-captions',\n useAction(props) {\n const pathKey = usePathKey(props.path)\n\n const {config} = useAiAssistanceConfig()\n const apiClient = useApiClient(config?.__customApiClient)\n const {generateCaption, loading} = useGenerateCaption(apiClient)\n\n const imageContext = useContext(ImageContext)\n\n if (imageContext && pathKey === imageContext?.captionPath) {\n //if this is true, it is stable, and not breaking rules of hooks\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const {documentId} = useAssistDocumentContext()\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useMemo(() => {\n return node({\n type: 'action',\n icon: loading\n ? () => (\n <Box style={{height: 17}}>\n <Spinner style={{transform: 'translateY(6px)'}} />\n </Box>\n )\n : ImageIcon,\n title: 'Generate caption',\n onAction: () => {\n if (loading) {\n return\n }\n generateCaption({path: pathKey, documentId: documentId ?? ''})\n },\n renderAsButton: true,\n disabled: loading,\n hidden: !imageContext.assetRef,\n })\n }, [generateCaption, pathKey, documentId, loading, imageContext])\n }\n\n // works but not supported by types\n return undefined as unknown as DocumentFieldActionItem\n },\n}\n","import {\n DocumentFieldAction,\n DocumentFieldActionGroup,\n DocumentFieldActionItem,\n ObjectSchemaType,\n useCurrentUser,\n} from 'sanity'\nimport {ControlsIcon, SparklesIcon} from '@sanity/icons'\nimport {useCallback, useMemo} from 'react'\nimport {pluginTitle, pluginTitleShort} from '../constants'\nimport {useAssistSupported} from '../helpers/useAssistSupported'\nimport {useAssistDocumentContext} from '../assistDocument/AssistDocumentContext'\nimport {getInstructionTitle, usePathKey} from '../helpers/misc'\nimport {fieldPathParam, instructionParam, StudioInstruction} from '../types'\nimport {aiInspectorId} from '../assistInspector/constants'\nimport {getIcon} from '../assistDocument/components/instruction/appearance/IconInput'\nimport {useAssistDocumentContextValue} from '../assistDocument/hooks/useAssistDocumentContextValue'\nimport {\n getAssistableDocId,\n useRequestRunInstruction,\n} from '../assistDocument/RequestRunInstructionProvider'\nimport {PrivateIcon} from './PrivateIcon'\nimport {generateCaptionsActions} from './generateCaptionActions'\n\nfunction node(node: DocumentFieldActionItem | DocumentFieldActionGroup) {\n return node\n}\n\nexport const assistFieldActions: DocumentFieldAction = {\n name: 'sanity-assist-actions',\n useAction(props) {\n const {schemaType} = props\n const assistSupported = useAssistSupported(props.path, schemaType)\n\n const isDocumentLevel = props.path.length === 0\n\n const {\n assistDocument,\n documentIsNew,\n documentIsAssistable,\n openInspector,\n closeInspector,\n inspector,\n documentOnChange,\n documentSchemaType,\n documentId,\n selectedPath,\n } =\n // document field actions do not have access to the document context\n // conditional hook _should_ be safe here since the logical path will be stable\n isDocumentLevel\n ? // eslint-disable-next-line react-hooks/rules-of-hooks\n useAssistDocumentContextValue(props.documentId, schemaType as ObjectSchemaType)\n : // eslint-disable-next-line react-hooks/rules-of-hooks\n useAssistDocumentContext()\n\n const currentUser = useCurrentUser()\n const isHidden = !assistDocument\n const pathKey = usePathKey(props.path)\n const assistDocumentId = assistDocument?._id\n\n const assistableDocId = getAssistableDocId(documentSchemaType, documentId)\n const {requestRunInstruction} = useRequestRunInstruction({\n documentOnChange,\n isDocAssistable: documentIsAssistable ?? false,\n })\n\n const fieldAssist = useMemo(\n () => (assistDocument?.fields ?? []).find((f) => f.path == pathKey),\n [assistDocument?.fields, pathKey]\n )\n const fieldAssistKey = fieldAssist?._key\n const isInspectorOpen = inspector?.name === aiInspectorId\n const isPathSelected = pathKey === selectedPath\n const isSelected = isInspectorOpen && isPathSelected\n\n const imageCaptionAction = generateCaptionsActions.useAction(props)\n\n const manageInstructions = useCallback(\n () =>\n isSelected\n ? closeInspector(aiInspectorId)\n : openInspector(aiInspectorId, {\n [fieldPathParam]: pathKey,\n [instructionParam]: undefined as any,\n }),\n [openInspector, closeInspector, isSelected, pathKey]\n )\n\n const onInstructionAction = useCallback(\n (instruction: StudioInstruction) => {\n if (!pathKey || !fieldAssistKey || !assistDocumentId || !assistableDocId) {\n return\n }\n requestRunInstruction({\n documentId: assistableDocId,\n assistDocumentId,\n path: pathKey,\n instruction,\n })\n },\n [requestRunInstruction, assistableDocId, pathKey, assistDocumentId, fieldAssistKey]\n )\n\n const privateInstructions = useMemo(\n () =>\n fieldAssist?.instructions?.filter((i) => i.userId && i.userId === currentUser?.id) || [],\n [fieldAssist?.instructions, currentUser]\n )\n\n const sharedInstructions = useMemo(\n () => fieldAssist?.instructions?.filter((i) => !i.userId) || [],\n [fieldAssist?.instructions]\n )\n\n const instructions = useMemo(\n () => [...privateInstructions, ...sharedInstructions],\n [privateInstructions, sharedInstructions]\n )\n\n const runInstructionsGroup = useMemo(() => {\n return instructions?.length || imageCaptionAction\n ? node({\n type: 'group',\n icon: () => null,\n title: 'Run instructions',\n children: [\n ...instructions?.map((instruction) =>\n instructionItem({\n instruction,\n isPrivate: Boolean(instruction.userId && instruction.userId === currentUser?.id),\n onInstructionAction,\n hidden: isHidden,\n documentIsNew: !!documentIsNew,\n assistSupported,\n })\n ),\n imageCaptionAction,\n ].filter(Boolean),\n expanded: true,\n })\n : undefined\n }, [\n instructions,\n currentUser?.id,\n onInstructionAction,\n isHidden,\n documentIsNew,\n assistSupported,\n imageCaptionAction,\n ])\n\n const instructionsLength = instructions?.length || 0\n\n const manageInstructionsItem = useMemo(\n () =>\n node({\n type: 'action',\n icon: ControlsIcon,\n title: 'Manage instructions',\n onAction: manageInstructions,\n selected: isSelected,\n }),\n [manageInstructions, isSelected]\n )\n\n const group = useMemo(\n () =>\n node({\n type: 'group',\n icon: SparklesIcon,\n title: pluginTitleShort,\n children: [runInstructionsGroup, assistSupported && manageInstructionsItem].filter(\n (c): c is DocumentFieldActionItem | DocumentFieldActionGroup => !!c\n ),\n expanded: false,\n renderAsButton: true,\n hidden: !assistSupported && !imageCaptionAction,\n }),\n [\n //documentIsNew,\n runInstructionsGroup,\n manageInstructionsItem,\n assistSupported,\n imageCaptionAction,\n ]\n )\n\n const emptyAction = useMemo(\n () =>\n node({\n type: 'action',\n hidden: !assistSupported,\n icon: SparklesIcon,\n onAction: manageInstructions,\n renderAsButton: true,\n title: pluginTitleShort,\n selected: isSelected,\n }),\n [assistSupported, manageInstructions, isSelected]\n )\n\n // If there are no instructions, we don't want to render the group\n if (instructionsLength === 0 && !imageCaptionAction) {\n return emptyAction\n }\n\n return group\n },\n}\n\nfunction instructionItem(props: {\n instruction: StudioInstruction\n isPrivate: boolean\n onInstructionAction: (ins: StudioInstruction) => void\n assistSupported: boolean\n documentIsNew: boolean\n hidden: boolean\n}) {\n const {hidden, isPrivate, onInstructionAction, assistSupported, instruction} = props\n return node({\n type: 'action',\n icon: getIcon(instruction.icon),\n iconRight: isPrivate ? PrivateIcon : undefined,\n title: getInstructionTitle(instruction),\n onAction: () => onInstructionAction(instruction),\n disabled: assistSupported ? false : {reason: `${pluginTitle} is not supported for this field`},\n hidden,\n })\n}\n","import {ObjectSchemaType} from 'sanity'\nimport {AssistDocumentContext} from './AssistDocumentContext'\nimport {useAssistDocumentContextValue} from './hooks/useAssistDocumentContextValue'\nimport {PropsWithChildren} from 'react'\n\nexport interface AIDocumentInputProps {\n documentId: string\n schemaType: ObjectSchemaType\n}\n\nexport function AssistDocumentContextProvider(props: PropsWithChildren<AIDocumentInputProps>) {\n const {documentId, schemaType} = props\n const value = useAssistDocumentContextValue(documentId, schemaType)\n return (\n <AssistDocumentContext.Provider value={value}>{props.children}</AssistDocumentContext.Provider>\n )\n}\n","import {useEffect, useRef} from 'react'\nimport {InstructionTask} from '../../types'\nimport {addSeconds, isAfter} from 'date-fns'\nimport {getInstructionTitle} from '../../helpers/misc'\nimport {useStudioAssistDocument} from './useStudioAssistDocument'\nimport {ObjectSchemaType, useCurrentUser} from 'sanity'\nimport {useToast} from '@sanity/ui'\n\nconst NO_TASKS: InstructionTask[] = []\n\nexport function useInstructionToaster(documentId: string, documentSchemaType: ObjectSchemaType) {\n const assistDocument = useStudioAssistDocument({documentId, schemaType: documentSchemaType})\n\n const assistDocLoaded = !!assistDocument\n const currentUser = useCurrentUser()\n const toast = useToast()\n const tasks = assistDocument?.tasks\n const previousTasks = useRef<InstructionTask[] | undefined | 'initial'>('initial')\n\n useEffect(() => {\n if (!assistDocLoaded) {\n return\n }\n\n if (previousTasks.current !== 'initial') {\n const prevTaskByKey = Object.fromEntries(\n (previousTasks.current ?? NO_TASKS).map((run) => [run._key, run])\n )\n const endedTasks = tasks\n ?.filter((task) => task.startedByUserId === currentUser?.id)\n .filter((task) => {\n const prevTask = prevTaskByKey[task._key]\n return (!prevTask && task.ended) || (!prevTask?.ended && task.ended)\n })\n // filter out old stuff\n .filter((task) => task.ended && isAfter(addSeconds(new Date(task.ended), 30), new Date()))\n\n endedTasks?.forEach((task) => {\n const title = task.title ?? getInstructionTitle(task.instruction)\n if (task.reason === 'error') {\n toast.push({\n title: `Failed: ${title}`,\n status: 'error',\n description: `Instruction failed. ${task.message ?? ''}`,\n closable: true,\n duration: 10000,\n })\n } else if (task.reason === 'timeout') {\n toast.push({\n title: `Timeout: ${title}`,\n status: 'error',\n description: `Instruction timed out.`,\n closable: true,\n })\n } else if (task.reason === 'success') {\n toast.push({\n title: `Success: ${title}`,\n status: 'success',\n description: `Instruction completed.`,\n closable: true,\n })\n } else if (task.reason === 'aborted') {\n toast.push({\n title: `Canceled: ${title}`,\n status: 'warning',\n description: `Instruction canceled.`,\n closable: true,\n })\n }\n })\n }\n previousTasks.current = tasks\n }, [tasks, previousTasks, toast, currentUser, assistDocLoaded])\n}\n","import {InputProps, ObjectInputProps} from 'sanity'\nimport {AssistDocumentContextProvider} from './AssistDocumentContextProvider'\nimport {FirstAssistedPathProvider} from '../onboarding/FirstAssistedPathProvider'\nimport {useInstructionToaster} from './hooks/useInstructionToaster'\nimport {isType} from '../helpers/typeUtils'\nimport {useLayer} from '@sanity/ui'\nimport {useDocumentPane} from 'sanity/desk'\nimport {usePathKey} from '../helpers/misc'\nimport {ConnectFromRegion} from '../_lib/connector'\n\nexport function AssistDocumentInputWrapper(props: InputProps) {\n if (!isType(props.schemaType, 'document') && props.id !== 'root') {\n return <AssistInput {...props} />\n }\n\n const documentId = (props.value as any)?._id as string | undefined\n if (!documentId) {\n return props.renderDefault(props)\n }\n\n return <AssistDocumentInput {...(props as ObjectInputProps)} documentId={documentId} />\n}\n\nfunction AssistDocumentInput({documentId, ...props}: ObjectInputProps & {documentId: string}) {\n useInstructionToaster(documentId, props.schemaType)\n\n return (\n <FirstAssistedPathProvider members={props.members}>\n <AssistDocumentContextProvider schemaType={props.schemaType} documentId={documentId}>\n {props.renderDefault(props)}\n </AssistDocumentContextProvider>\n </FirstAssistedPathProvider>\n )\n}\n\nfunction AssistInput(props: InputProps) {\n const {zIndex} = useLayer()\n const {paneKey} = useDocumentPane()\n const pathKey = usePathKey(props.path)\n\n return (\n <ConnectFromRegion _key={`${paneKey}_${pathKey}`} zIndex={zIndex} style={{minWidth: 0}}>\n {props.renderDefault(props)}\n </ConnectFromRegion>\n )\n}\n","import {ObjectSchemaType} from 'sanity'\nimport {useMemo} from 'react'\nimport {useAssistDocumentContextValue} from '../assistDocument/hooks/useAssistDocumentContextValue'\nimport {aiPresence} from './useAssistPresence'\nimport {documentRootKey, fieldPresenceTypeName} from '../types'\nimport {Card, Flex} from '@sanity/ui'\nimport {AiFieldPresence} from './AiFieldPresence'\n\nexport function createAssistDocumentPresence(\n documentId: string | undefined,\n schemaType: ObjectSchemaType\n) {\n return function AssistDocumentPresenceWrapper() {\n return documentId ? (\n <AssistDocumentPresence documentId={documentId} schemaType={schemaType} />\n ) : null\n }\n}\n\nfunction AssistDocumentPresence(props: {documentId: string; schemaType: ObjectSchemaType}) {\n const {assistDocument} = useAssistDocumentContextValue(\n props.documentId,\n props.schemaType as ObjectSchemaType\n )\n const anyPresence = useMemo(() => {\n const anyPresence = assistDocument?.tasks\n ?.filter((run) => !run.ended && !run.reason)\n ?.flatMap((run) => run.presence ?? [])\n .find((f) => f.started && new Date().getTime() - new Date(f.started).getTime() < 30000)\n if (anyPresence) {\n return aiPresence(anyPresence, [])\n }\n const anyRun = assistDocument?.tasks\n ?.filter((run) => !run.ended && !run.reason)\n ?.find((f) => f.started && new Date().getTime() - new Date(f.started).getTime() < 30000)\n return anyRun\n ? aiPresence(\n {\n started: anyRun.started,\n path: documentRootKey,\n _key: anyRun._key,\n _type: fieldPresenceTypeName,\n },\n []\n )\n : undefined\n }, [assistDocument?.tasks])\n\n return (\n <Card>\n <Flex flex={1} justify=\"flex-end\">\n <Flex gap={2} align={'center'}>\n {anyPresence && <AiFieldPresence presence={anyPresence} />}\n </Flex>\n </Flex>\n </Card>\n )\n}\n","import {definePlugin, ObjectSchemaType} from 'sanity'\nimport {assistInspector} from './assistInspector'\nimport {AssistFieldWrapper} from './assistFormComponents/AssistField'\nimport {AssistLayout} from './assistLayout/AssistLayout'\nimport {AssistFormBlock} from './assistFormComponents/AssistFormBlock'\nimport {AssistItem} from './assistFormComponents/AssistItem'\nimport {SanityClient} from '@sanity/client'\nimport {SafeValueInput} from './components/SafeValueInput'\nimport {schemaTypes} from './schemas'\nimport {AssistInlineFormBlock} from './assistFormComponents/AssistInlineFormBlock'\nimport {assistFieldActions} from './fieldActions/assistFieldActions'\nimport {packageName} from './constants'\nimport {AssistDocumentInputWrapper} from './assistDocument/AssistDocumentInput'\nimport {createAssistDocumentPresence} from './presence/AssistDocumentPresence'\nimport {isSchemaAssistEnabled} from './helpers/assistSupported'\nimport {isImage} from './helpers/typeUtils'\nimport {ImageContextProvider} from './components/ImageContext'\n\nexport interface AssistPluginConfig {\n /**\n * Set this to false to disable model migration from the alpha version of this plugin\n */\n alphaMigration?: boolean\n\n /**\n * @internal\n */\n __customApiClient?: (defaultClient: SanityClient) => SanityClient\n}\n\nexport const assist = definePlugin<AssistPluginConfig | void>((config) => {\n const configWithDefaults = config ?? {}\n return {\n name: packageName,\n\n schema: {\n types: schemaTypes,\n },\n\n document: {\n inspectors: (prev, context) => {\n const docSchema = context.schema.get(context.documentType)\n if (docSchema && isSchemaAssistEnabled(docSchema)) {\n return [...prev, assistInspector]\n }\n return prev\n },\n unstable_fieldActions: (prev) => {\n return [...prev, assistFieldActions]\n },\n unstable_languageFilter: (prev, {documentId, schema, schemaType}) => {\n const docSchema = schema.get(schemaType) as ObjectSchemaType\n return [...prev, createAssistDocumentPresence(documentId, docSchema)]\n },\n },\n\n studio: {\n components: {\n layout: function Layout(props) {\n return <AssistLayout {...props} config={configWithDefaults} />\n },\n },\n },\n\n form: {\n components: {\n input: AssistDocumentInputWrapper,\n field: AssistFieldWrapper,\n item: AssistItem,\n block: AssistFormBlock,\n inlineBlock: AssistInlineFormBlock,\n },\n },\n\n plugins: [\n definePlugin({\n name: `${packageName}/safe-value-input`,\n form: {components: {input: SafeValueInput}},\n })(),\n\n definePlugin({\n name: `${packageName}/generate-caption`,\n form: {\n components: {\n input: (props) => {\n const {schemaType} = props\n\n if (isImage(schemaType)) {\n return <ImageContextProvider {...props} />\n }\n return props.renderDefault(props)\n },\n },\n },\n })(),\n ],\n }\n})\n"],"names":["assistDocumentIdPrefix","assistDocumentStatusIdPrefix","assistSchemaIdPrefix","assistDocumentTypeName","assistFieldTypeName","instructionTypeName","promptTypeName","userInputTypeName","instructionContextTypeName","fieldReferenceTypeName","contextDocumentTypeName","assistTasksStatusTypeName","instructionTaskTypeName","fieldPresenceTypeName","assistSerializedTypeName","assistSerializedFieldTypeName","fieldPathParam","instructionParam","documentRootKey","fetch","client","query","params","options","defer","observable","tag","filterResponse","listen","events","includeResult","visibility","isWelcomeEvent","event","type","listenQuery","arguments","length","undefined","fetchQuery","listenerQuery","fetchOnce$","events$","pipe","mergeMap","ev","i","isFirst","throwError","Error","concat","of","share","welcome$","mutationAndReconnect$","partition","isRelevantEvent","transitions","includes","transition","merge","take","filter","switchMap","delay","throttleTime","exhaustMapToWithTrailing","DEFAULT_PARAMS","DEFAULT_OPTIONS","apiVersion","useListeningQuery","loading","setLoading","useState","error","setError","data","setData","subscription","useRef","useClient","useEffect","current","distinctUntilChanged","isEqual","catchError","err","console","subscribe","documents","unsubscribe","hiddenTypes","isPortableTextArray","find","t","isType","schemaType","typeName","name","isImage","getCaptionFieldOption","_a","captionField","isSchemaAssistEnabled","_b","aiWritingAssistance","exclude","isAssistSupported","allowReadonlyHidden","isDisabled","jsonType","unsupportedArray","every","unsupportedObject","fields","field","readonlyHidden","readOnly","hidden","isUnsupportedType","inlineTypes","serializeSchema","schema","list","getTypeNames","startsWith","map","get","getSchemaStub","to","sort","a","b","localeCompare","baseSchema","leanFormat","_id","_type","title","getBaseFields","removeUndef","_c","imagePromptField","values","v","value","arrayOf","refToTypeNames","serializeFields","f","serializeMember","typeNameExists","arrayType","typed","obj","Object","keys","forEach","key","NO_DATA","defaultTitle","SchemaTypeTool","useSchema","saving","setSaving","syncTitle","setSyncTitle","types","useMemo","storeTypes","useCallback","canSave","store","transaction","createOrReplace","commit","reset","catch","finally","jsx","Card","padding","overflow","style","height","children","jsxs","Stack","space","Box","Button","icon","Spinner","marginTop","SyncIcon","text","disabled","onClick","Flex","gap","Label","SchemaEntry","schemaStub","_ref","out","JSON","stringify","aiInspectorId","preventDefault","DocumentForm","props","collapsedFieldSets","collapsedPaths","displayed","documentId","documentType","editState","formState","onBlur","onChange","onFocus","onPathOpen","onSetActiveFieldGroup","onSetCollapsedFieldSet","onSetCollapsedPath","ready","validation","useDocumentPane","documentStore","useDocumentStore","presence","useDocumentPresence","patchChannel","createPatchChannel","isLocked","transactionSyncLock","enabled","sub","pair","documentEvents","tap","publish","prepareMutationEvent","prepareRebaseEvent","hasRev","Boolean","_rev","patches","snapshot","formRef","focusFirstDescendant","as","ref","align","direction","justify","sizing","Text","size","onSubmit","FormBuilder","__internal_patchChannel","focusPath","changed","focused","groups","id","members","onFieldGroupSelect","onPathBlur","onPathFocus","onSetFieldSetCollapsed","onSetPathCollapsed","muted","mutations","mut","patch","document","fromMutationPatches","origin","remotePatches","remoteMutations","localPatches","localMutations","SelectedFieldContext","createContext","SelectedFieldContextProvider","Provider","maxDepth","getTypeIcon","LinkIcon","ImageIcon","BlockContentIcon","OlistIcon","BlockquoteIcon","StringIcon","DocumentIcon","getFieldRefsWithDocument","getFieldRefs","path","parent","depth","flatMap","fieldRef","pathToString","join","useSelectedField","documentSchemaType","selectableFields","isObjectSchemaType","getFieldTitle","useAiPaneRouter","paneRouter","usePaneRouter","useDocumentState","docType","state","useEditState","draft","published","aiDocPrefixPattern","RegExp","publicId","replace","assistDocumentId","documentTypeFromAiDocumentId","assistTasksStatusId","releaseAnnouncementUrl","instructionGuideUrl","giveFeedbackUrl","salesUrl","packageName","pluginTitle","pluginTitleShort","maxHistoryVisibilityMs","minutesToMilliseconds","useStudioAssistDocument","_ref2","documentTypeName","currentUser","useCurrentUser","useValidationStatus","assistDocument","assistTasksStatus","createIfNotExists","tasks","assistField","task","instructions","p","userId","instruction","asStudioInstruction","_key","instructionKey","run","errors","marker","level","fieldRefs","prompt","block","c","started","Date","getTime","r","useInterval","ms","tick","update","useReducer","n","setInterval","clearInterval","TimeAgo","_ref3","date","timeSince","formatDistanceToNow","usePathKey","Array","isArray","getInstructionTitle","rotate","keyframes","__template","SyncSpinningIcon","styled","default","TASK_CONFIG","aborted","CloseCircleIcon","tone","ErrorOutlineIcon","success","CheckmarkCircleIcon","timeout","ClockIcon","InstructionTaskHistoryButton","showTitles","cancelRun","taskKey","statusDocId","basePath","set","toISOString","titledTasks","cancel","isRunning","some","ended","hasErrors","reason","open","setOpen","toggleOpen","button","setButton","popover","setPopover","handleClickOutside","useClickOutside","handleEscape","focus","Popover","constrainSize","content","TaskList","onEscape","placement","portal","width","TaskStatusButton","selected","TASK_STATUS_BUTTON_TOOLTIP_PROPS","forwardRef","StatusButton","label","mode","fontSize","tooltip","isTopLayer","useLayer","useGlobalKeyDown","TaskItem","taskType","radius","flex","createElement","weight","Fragment","message","editorialAiFieldActionFeature","useApiClient","customApiClient","useGenerateCaption","apiClient","user","toast","useToast","generateCaption","_ref4","request","method","url","config","dataset","projectId","body","e","push","status","description","setTimeout","useGetInstructStatus","projectClient","getInstructStatus","features","useInitInstruct","initInstruct","useRunInstructionApi","runInstruction","AiAssistanceConfigContext","useAiAssistanceConfig","context","useContext","AiAssistanceConfigProvider","setStatus","__customApiClient","statusLoading","initLoading","then","s","init","NO_INPUT","RunInstructionContext","instructionLoading","useRunInstruction","isUserInputBlock","RunInstructionProvider","runInstructionRequest","useId","inputs","setInputs","runRequest","setRunRequest","req","userInputBlocks","userTexts","close","runWithInput","entries","_ref5","blockKey","userInput","runDisabled","_ref6","runButton","PlayIcon","contextValue","Dialog","onClose","header","footer","Tooltip","UserInput","autoFocus","textAreaRef","currentTarget","target","FormFieldHeaderText","TextArea","rows","resize","isDocAssistable","liveEdit","getAssistableDocId","baseId","useRequestRunInstruction","args","documentOnChange","queuedTask","setQueuedTask","requestRunInstruction","PatchEvent","from","unset","SparklesIllustration","SparklesIcon","strokeWidth","InspectorOnboarding","onDismiss","Container","textAlign","href","rel","inspectorOnboardingKey","fieldOnboardingKey","isFeatureOnboardingDismissed","featureKey","localStorage","getItem","dismissFeatureOnboarding","setItem","useOnboardingFeature","showOnboarding","setShowOnboarding","dismissOnboarding","CardWithShadowBelow","CardWithShadowAbove","AssistInspectorWrapper","DocumentInspectorHeader","closeButtonLabel","initialized","validToken","RetryIcon","AssistInspector","boundary","pathKey","documentPane","assistableDocId","selectedField","aiDocId","promptValue","isEmptyPrompt","firstBlock","paneNode","runCurrentInstruction","Region","_props","lineHeight","AiInspectorHeader","fieldTitle","minHeight","PresenceOverlay","VirtualizerScrollInstanceProvider","scrollElement","containerElement","DocumentPaneProvider","paneKey","index","itemId","pane","whiteSpace","ArrowRightIcon","paddingX","paddingY","justifySelf","border","margin","CloseIcon","assistInspector","useMenuItem","showAsAction","component","_ref7","AssistDocumentContext","useAssistDocumentContext","NO_PRESENCE","useAssistPresence","showFocusWithin","activePresence","statusPath","stringToPath","pathSegment","statusSegment","isKeySegment","aiPresence","displayName","sessionId","lastActiveAt","fadeIn","FadeInDiv","div","FadeInContent","FadeInContent2","_ref8","durationMs","animationDuration","purple","hex","_d","Root","span","dash","Outline","svg","IconDisc","AssistAvatar","scheme","useColorSchemeValue","viewBox","fill","xmlns","cx","cy","color","AiFieldPresence","position","background","contentEditable","AssistFeatureBadge","Badge","AssistOnboardingPopover","dismiss","AssistIntroCard","placeholder","shadow","buttonRef","CheckmarkIcon","FirstAssistedPathContext","FirstAssistedPathProvider","firstAssistedPath","firstAssisted","member","kind","AssistFieldWrapper","isSupported","renderDefault","inputId","AssistField","isPortableText","isArraySchemaType","isFirstAssisted","actions","pre","__internal_slot","ConnectorsStoreContext","useConnectorsStore","hasOverflowScroll","el","getComputedStyle","useRegionRects","relativeBoundsRect","setRelativeBoundsRect","relativeElementRect","setRelativeElementRect","boundsScroll","setBoundsScroll","x","y","scroll","setScroll","boundsScrollXRef","boundsScrollYRef","elementScrollXRef","elementScrollYRef","scrollParents","parentElement","handleResize","scrollParent","boundsRect","getBoundingClientRect","window","innerWidth","innerHeight","domRect","w","h","handleScroll","scrollX","scrollY","scrollLeft","scrollTop","addEventListener","passive","ro","ResizeObserver","observe","unobserve","removeEventListener","disconnect","bounds","element","ConnectorRegion","onRectsChange","restProps","ConnectFromRegion","zIndex","rects","setRects","next","createConnectorsStore","configKeys","fieldKeys","channels","Map","payloads","observers","notifyObservers","connectors","toRects","toPayload","fromRects","fromPayload","payload","observer","delete","idx","indexOf","splice","ConnectorsProvider","onConnectorsChange","getConnectorLinePoint","rect","centerY","isAbove","arrow","marginY","isBelow","startY","endY","outOfBounds","mapConnectorToLine","connector","fromBounds","threshold","fromBottom","toBounds","toBottom","maxStartY","Math","max","min","arrowPath","dir","moveTo","lineTo","strings","delim","quadCurve","x1","y1","drawConnectorPath","line","cornerRadius","fromX","fromY","_toX","toY","toX","dividerX","divider","offsetX","fromPathX","marginX","r0","abs","r1","cmds","ConnectorPath","theme","useTheme","d","stroke","sanity","base","bg","rgba","DEBUG","AssistConnectorsOverlay","setRedraw","top","left","pointerEvents","legacyAssistDocumentIdPrefix","legacyAssistDocumentTypeName","legacyContextDocumentTypeName","legacyAssistStatusDocumentTypeName","NO_ASSIST_DOCS","NO_CONTEXT_DOCS","NO_IDS","AlphaMigration","alphaAssistDocs","setAlphaAssistDocs","contextDocs","setContextDocs","staleStatusDocIds","setStaleStatusDocs","progress","setProgress","canUpdate","result","assistDocs","convert","convertContextDocs","subtaskProgress","deleteDocs","convertDocs","taskSize","startProgress","subProgress","closable","maxWidth","floor","ids","updateProgress","chunkSize","progressCount","chunk","slice","trans","docs","doc","rest","_alphaId","oldDoc","oldField","inst","mapBlock","isFieldRef","isContext","isUserInput","isSpan","migratedContexts","newBlock","reference","textBlock","child","AssistLayout","setConnectors","migrate","alphaMigration","ThemeProvider","WrapPreCard","SafeValueInput","ErrorWrapper","PteValueFixer","unsetValue","catcher","ErrorBoundary","onCatch","AssistFormBlock","useFormCallbacks","localOnChange","patchEvent","prefixAll","AssistItem","right","BackToInstructionListLink","openInspector","goBack","ArrowLeftIcon","EMPTY_FIELDS","AssistDocumentForm","targetDocumentType","setParams","activeKey","activePath","documentSchema","fieldSchema","useSelectedSchema","fieldExists","formCallbacks","newCallbacks","FieldsInitializer","FormCallbacksProvider","FormInput","absolutePath","fieldPath","currentSchema","segment","_ref9","setIfMissing","insert","findFieldMember","fieldName","m","findFieldsetMember","fieldsetName","fieldSet","InstructionInput","NameField","ShareField","PromptField","promptMember","ObjectInputMember","NONE","fieldsetMember","titleId","iconMember","titleMember","titlePlaceholder","moddedTitleMember","htmlFor","marginLeft","visibilityMember","HiddenFieldTitle","InstructionVisibility","handleChange","newValue","Switch","elementProps","checked","IconInput","items","icons","_ref10","IconItem","iconKey","selectedIcon","getIcon","MenuButton","menu","Menu","maxHeight","_ref11","MenuItem","iconName","_ref12","sparkles","FieldAutocomplete","onSelect","includeDocument","fieldNames","currentField","autocompleteOptions","renderOption","option","accent","splitTitle","split","Breadcrumbs","separator","pt","trim","renderValue","filterOption","lQuery","toLowerCase","Autocomplete","SearchIcon","openButton","FieldRefPathInput","querySelector","minWidth","InstructionsArrayInput","originalValue","originalMembers","item","InlineBlockValueContext","AssistInlineFormBlock","FieldRefPreview","textOverflow","HideReferenceChangedBannerInput","closest","parentId","random","innerText","prepend","contextDocumentSchema","defineType","TokenIcon","components","input","defineField","defineArrayMember","styles","lists","marks","decorators","annotations","preview","select","prepare","_ref13","words","subtitle","media","DocumentTextIcon","getRandomValues","typedArray","crypto","whatwgRNG","rnds8","Uint8Array","getByteHexTable","table","toString","substring","randomKey","reduce","str","PteMods","PromptInput","useOnlyInlineBlocks","needsFix","val","markDefs","InstructionsArrayField","fieldReference","ThListIcon","rule","custom","docId","targetDocType","refs","_ref14","CodeIcon","modal","ComposeIcon","required","promptContext","Fix","call","fieldsets","collapsible","collapsed","_ref15","LockIcon","fieldset","initialValue","createdById","fieldInstructions","assistDocumentSchema","instructionTask","documentInstructionStatus","schemaTypes","useAssistSupported","useAssistDocumentContextValue","getPublishedId","assistableDocumentId","documentIsNew","documentIsAssistable","selectedPath","closeInspector","inspector","PrivateIcon","fallbackPlacements","ImageContext","ImageContextProvider","assetRef","asset","assetRefState","setAssetRefState","captionPath","node","generateCaptionsActions","useAction","imageContext","transform","onAction","renderAsButton","assistFieldActions","assistSupported","isDocumentLevel","isHidden","fieldAssist","fieldAssistKey","isInspectorOpen","isPathSelected","isSelected","imageCaptionAction","manageInstructions","onInstructionAction","privateInstructions","sharedInstructions","runInstructionsGroup","instructionItem","isPrivate","expanded","instructionsLength","manageInstructionsItem","ControlsIcon","group","emptyAction","iconRight","AssistDocumentContextProvider","NO_TASKS","useInstructionToaster","assistDocLoaded","previousTasks","prevTaskByKey","fromEntries","endedTasks","startedByUserId","prevTask","isAfter","addSeconds","duration","AssistDocumentInputWrapper","AssistInput","AssistDocumentInput","_ref16","createAssistDocumentPresence","AssistDocumentPresenceWrapper","AssistDocumentPresence","anyPresence","anyRun","assist","definePlugin","configWithDefaults","inspectors","prev","docSchema","unstable_fieldActions","unstable_languageFilter","_ref17","studio","layout","Layout","form","inlineBlock","plugins"],"mappings":"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","x_google_ignoreList":[30,70]}