@basementstudio/sanity-ai-image-plugin 0.1.1 → 0.1.3

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.
Files changed (98) hide show
  1. package/README.md +131 -124
  2. package/package.json +1 -1
  3. package/dist/index.d.ts +0 -3
  4. package/dist/index.d.ts.map +0 -1
  5. package/dist/index.js +0 -3
  6. package/dist/index.js.map +0 -1
  7. package/dist/presets/article-featured-image.d.ts +0 -3
  8. package/dist/presets/article-featured-image.d.ts.map +0 -1
  9. package/dist/presets/article-featured-image.js +0 -17
  10. package/dist/presets/article-featured-image.js.map +0 -1
  11. package/dist/server/constants.d.ts +0 -6
  12. package/dist/server/constants.d.ts.map +0 -1
  13. package/dist/server/constants.js +0 -17
  14. package/dist/server/constants.js.map +0 -1
  15. package/dist/server/handle-request.d.ts +0 -5
  16. package/dist/server/handle-request.d.ts.map +0 -1
  17. package/dist/server/handle-request.js +0 -122
  18. package/dist/server/handle-request.js.map +0 -1
  19. package/dist/server/types.d.ts +0 -28
  20. package/dist/server/types.d.ts.map +0 -1
  21. package/dist/server/types.js +0 -2
  22. package/dist/server/types.js.map +0 -1
  23. package/dist/server/utils.d.ts +0 -50
  24. package/dist/server/utils.d.ts.map +0 -1
  25. package/dist/server/utils.js +0 -274
  26. package/dist/server/utils.js.map +0 -1
  27. package/dist/server.d.ts +0 -3
  28. package/dist/server.d.ts.map +0 -1
  29. package/dist/server.js +0 -3
  30. package/dist/server.js.map +0 -1
  31. package/dist/studio/components/asset-source.d.ts +0 -4
  32. package/dist/studio/components/asset-source.d.ts.map +0 -1
  33. package/dist/studio/components/asset-source.js +0 -169
  34. package/dist/studio/components/asset-source.js.map +0 -1
  35. package/dist/studio/components/frontend-rate-limit.d.ts +0 -29
  36. package/dist/studio/components/frontend-rate-limit.d.ts.map +0 -1
  37. package/dist/studio/components/frontend-rate-limit.js +0 -197
  38. package/dist/studio/components/frontend-rate-limit.js.map +0 -1
  39. package/dist/studio/components/generate-button-input.d.ts +0 -8
  40. package/dist/studio/components/generate-button-input.d.ts.map +0 -1
  41. package/dist/studio/components/generate-button-input.js +0 -194
  42. package/dist/studio/components/generate-button-input.js.map +0 -1
  43. package/dist/studio/components/input-router.d.ts +0 -7
  44. package/dist/studio/components/input-router.d.ts.map +0 -1
  45. package/dist/studio/components/input-router.js +0 -21
  46. package/dist/studio/components/input-router.js.map +0 -1
  47. package/dist/studio/files.d.ts +0 -9
  48. package/dist/studio/files.d.ts.map +0 -1
  49. package/dist/studio/files.js +0 -86
  50. package/dist/studio/files.js.map +0 -1
  51. package/dist/studio/frontend-rate-limit.d.ts +0 -29
  52. package/dist/studio/frontend-rate-limit.d.ts.map +0 -1
  53. package/dist/studio/frontend-rate-limit.js +0 -197
  54. package/dist/studio/frontend-rate-limit.js.map +0 -1
  55. package/dist/studio/plugin.d.ts +0 -3
  56. package/dist/studio/plugin.d.ts.map +0 -1
  57. package/dist/studio/plugin.js +0 -47
  58. package/dist/studio/plugin.js.map +0 -1
  59. package/dist/studio/settings/schema.d.ts +0 -8
  60. package/dist/studio/settings/schema.d.ts.map +0 -1
  61. package/dist/studio/settings/schema.js +0 -110
  62. package/dist/studio/settings/schema.js.map +0 -1
  63. package/dist/studio/settings/tool.d.ts +0 -3
  64. package/dist/studio/settings/tool.d.ts.map +0 -1
  65. package/dist/studio/settings/tool.js +0 -292
  66. package/dist/studio/settings/tool.js.map +0 -1
  67. package/dist/studio/settings-data.d.ts +0 -24
  68. package/dist/studio/settings-data.d.ts.map +0 -1
  69. package/dist/studio/settings-data.js +0 -99
  70. package/dist/studio/settings-data.js.map +0 -1
  71. package/dist/studio/shared-secret.d.ts +0 -9
  72. package/dist/studio/shared-secret.d.ts.map +0 -1
  73. package/dist/studio/shared-secret.js +0 -37
  74. package/dist/studio/shared-secret.js.map +0 -1
  75. package/dist/utils/config.d.ts +0 -3
  76. package/dist/utils/config.d.ts.map +0 -1
  77. package/dist/utils/config.js +0 -59
  78. package/dist/utils/config.js.map +0 -1
  79. package/dist/utils/context-fields.d.ts +0 -16
  80. package/dist/utils/context-fields.d.ts.map +0 -1
  81. package/dist/utils/context-fields.js +0 -104
  82. package/dist/utils/context-fields.js.map +0 -1
  83. package/dist/utils/document-paths.d.ts +0 -10
  84. package/dist/utils/document-paths.d.ts.map +0 -1
  85. package/dist/utils/document-paths.js +0 -33
  86. package/dist/utils/document-paths.js.map +0 -1
  87. package/dist/utils/models.d.ts +0 -22
  88. package/dist/utils/models.d.ts.map +0 -1
  89. package/dist/utils/models.js +0 -76
  90. package/dist/utils/models.js.map +0 -1
  91. package/dist/utils/prompts.d.ts +0 -2
  92. package/dist/utils/prompts.d.ts.map +0 -1
  93. package/dist/utils/prompts.js +0 -7
  94. package/dist/utils/prompts.js.map +0 -1
  95. package/dist/utils/shared.d.ts +0 -96
  96. package/dist/utils/shared.d.ts.map +0 -1
  97. package/dist/utils/shared.js +0 -17
  98. package/dist/utils/shared.js.map +0 -1
@@ -1,292 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useSecrets } from "@sanity/studio-secrets";
4
- import { Box, Button, Card, Dialog, Flex, Grid, Select, Stack, Text, TextArea, TextInput, } from "@sanity/ui";
5
- import { useEffect, useMemo, useState } from "react";
6
- import { useClient } from "sanity";
7
- import { getSharedSecretValue, saveAiImagePluginSharedSecret, SHARED_SECRET_NAMESPACE, } from "../shared-secret";
8
- import { getDefaultAllowedAiImageModel, getSupportedAiImageModelOptions, } from "../../utils/models";
9
- import { MAX_REFERENCE_IMAGES, SETTINGS_DOCUMENT_ID, SETTINGS_SCHEMA_TYPE, } from "../../utils/shared";
10
- import { appendReferenceImages, createImageReferenceValue, createToolReferenceImageFromStoredImage, fetchSettingsDocument, getErrorMessage, resolveSettingsModel, } from "../settings-data";
11
- import { convertImageFileToPng, formatFileSize } from "../files";
12
- function SettingsReferenceImageCard({ image, onRemove, }) {
13
- const [localPreviewUrl, setLocalPreviewUrl] = useState(null);
14
- useEffect(() => {
15
- if (image.previewUrl || !image.sourceFile) {
16
- setLocalPreviewUrl(null);
17
- return;
18
- }
19
- const objectUrl = URL.createObjectURL(image.sourceFile);
20
- setLocalPreviewUrl(objectUrl);
21
- return () => {
22
- URL.revokeObjectURL(objectUrl);
23
- };
24
- }, [image.previewUrl, image.sourceFile]);
25
- const previewUrl = image.previewUrl || localPreviewUrl;
26
- return (_jsx(Card, { padding: 3, radius: 2, tone: "transparent", children: _jsxs(Flex, { align: "center", gap: 3, justify: "space-between", children: [_jsxs(Flex, { align: "center", flex: 1, gap: 3, children: [_jsx(Card, { overflow: "hidden", radius: 2, style: { flexShrink: 0, height: 128, width: 128 }, tone: "default", children: previewUrl ? (_jsx("img", { alt: image.name, src: previewUrl, style: {
27
- display: "block",
28
- height: "100%",
29
- objectFit: "cover",
30
- width: "100%",
31
- } })) : (_jsx(Flex, { align: "center", justify: "center", style: { height: "100%" }, children: _jsx(Text, { muted: true, size: 1, children: "No preview" }) })) }), _jsxs(Box, { flex: 1, children: [_jsx(Text, { size: 1, weight: "medium", children: image.name }), _jsx(Text, { muted: true, size: 1, children: image.sourceFile
32
- ? formatFileSize(image.sourceFile.size)
33
- : "Stored in Sanity" })] })] }), _jsx(Button, { mode: "bleed", onClick: () => onRemove(image.id), text: "Remove" })] }) }));
34
- }
35
- function buildDefaultTargetState(options) {
36
- return Object.fromEntries([
37
- ...(options.assetSourceTarget ? [options.assetSourceTarget] : []),
38
- ...options.targets,
39
- ].map((target) => [
40
- target.id,
41
- {
42
- prompt: "",
43
- referenceImages: [],
44
- },
45
- ]));
46
- }
47
- function SettingsReferenceImagesEditor({ images, label, onAdd, onRemove, }) {
48
- return (_jsxs(Stack, { space: 3, children: [_jsxs(Stack, { space: 1, children: [_jsx(Text, { size: 1, weight: "medium", children: label }), _jsxs(Text, { muted: true, size: 1, children: ["Up to ", MAX_REFERENCE_IMAGES, " images."] })] }), _jsx("input", { accept: "image/*", multiple: true, onChange: (event) => {
49
- const files = Array.from(event.currentTarget.files || []);
50
- if (files.length > 0) {
51
- onAdd(files);
52
- }
53
- event.currentTarget.value = "";
54
- }, type: "file" }), images.length > 0 ? (_jsx(Stack, { space: 2, children: images.map((image) => (_jsx(SettingsReferenceImageCard, { image: image, onRemove: onRemove }, image.id))) })) : (_jsx(Text, { muted: true, size: 1, children: "No reference images yet." }))] }));
55
- }
56
- export function createSettingsTool(options) {
57
- return function SettingsTool() {
58
- const client = useClient({ apiVersion: options.apiVersion });
59
- const { loading: isLoadingSharedSecret, secrets } = useSecrets(SHARED_SECRET_NAMESPACE);
60
- const [isLoading, setIsLoading] = useState(true);
61
- const [isSharedSecretDialogOpen, setIsSharedSecretDialogOpen] = useState(false);
62
- const [isSavingSharedSecret, setIsSavingSharedSecret] = useState(false);
63
- const [sharedSecretDraft, setSharedSecretDraft] = useState("");
64
- const [sharedSecretError, setSharedSecretError] = useState(null);
65
- const [isSaving, setIsSaving] = useState(false);
66
- const [saveMessage, setSaveMessage] = useState(null);
67
- const [error, setError] = useState(null);
68
- const [globalModel, setGlobalModel] = useState(getDefaultAllowedAiImageModel(options.allowedModels));
69
- const [globalPrompt, setGlobalPrompt] = useState("");
70
- const [globalReferenceImages, setGlobalReferenceImages] = useState([]);
71
- const [targetState, setTargetState] = useState(() => buildDefaultTargetState(options));
72
- const sharedSecret = getSharedSecretValue(secrets);
73
- function closeSharedSecretDialog() {
74
- if (isSavingSharedSecret) {
75
- return;
76
- }
77
- setIsSharedSecretDialogOpen(false);
78
- setSharedSecretDraft("");
79
- setSharedSecretError(null);
80
- }
81
- function openSharedSecretDialog() {
82
- setSharedSecretDraft("");
83
- setSharedSecretError(null);
84
- setIsSharedSecretDialogOpen(true);
85
- }
86
- useEffect(() => {
87
- let isMounted = true;
88
- async function loadSettings() {
89
- try {
90
- const settings = await fetchSettingsDocument(client, SETTINGS_DOCUMENT_ID, SETTINGS_SCHEMA_TYPE);
91
- if (!isMounted) {
92
- return;
93
- }
94
- setGlobalModel(resolveSettingsModel({
95
- allowedModels: options.allowedModels,
96
- settings,
97
- }));
98
- setGlobalPrompt(settings?.globalPrompt || "");
99
- setGlobalReferenceImages((settings?.globalReferenceImages || [])
100
- .map(createToolReferenceImageFromStoredImage)
101
- .filter((image) => image !== null));
102
- setTargetState((currentState) => {
103
- const nextState = buildDefaultTargetState(options);
104
- for (const [targetId, state] of Object.entries(currentState)) {
105
- nextState[targetId] = state;
106
- }
107
- for (const targetConfig of settings?.targetConfigs || []) {
108
- if (!targetConfig.targetId || !nextState[targetConfig.targetId]) {
109
- continue;
110
- }
111
- nextState[targetConfig.targetId] = {
112
- prompt: targetConfig.prompt || "",
113
- referenceImages: (targetConfig.referenceImages || [])
114
- .map(createToolReferenceImageFromStoredImage)
115
- .filter((image) => image !== null),
116
- };
117
- }
118
- return nextState;
119
- });
120
- }
121
- catch (nextError) {
122
- if (!isMounted) {
123
- return;
124
- }
125
- setError(getErrorMessage(nextError, "Unable to load AI Image Plugin settings."));
126
- }
127
- finally {
128
- if (isMounted) {
129
- setIsLoading(false);
130
- }
131
- }
132
- }
133
- void loadSettings();
134
- return () => {
135
- isMounted = false;
136
- };
137
- }, [client, options]);
138
- const allTargets = useMemo(() => [
139
- ...(options.assetSourceTarget ? [options.assetSourceTarget] : []),
140
- ...options.targets,
141
- ], [options]);
142
- const allowedModelOptions = useMemo(() => getSupportedAiImageModelOptions(options.allowedModels), [options.allowedModels]);
143
- async function uploadReferenceImages(images) {
144
- return Promise.all(images.map(async (image) => {
145
- if (image.assetId || !image.sourceFile) {
146
- return image;
147
- }
148
- const normalizedFile = await convertImageFileToPng(image.sourceFile);
149
- const uploadedAsset = await client.assets.upload("image", normalizedFile, {
150
- filename: normalizedFile.name,
151
- });
152
- return {
153
- id: uploadedAsset._id,
154
- assetId: uploadedAsset._id,
155
- name: uploadedAsset.originalFilename || normalizedFile.name,
156
- previewUrl: uploadedAsset.url,
157
- };
158
- }));
159
- }
160
- async function handleSave() {
161
- setError(null);
162
- setSaveMessage(null);
163
- setIsSaving(true);
164
- try {
165
- const uploadedGlobalReferenceImages = await uploadReferenceImages(globalReferenceImages);
166
- const uploadedTargets = await Promise.all(allTargets.map(async (target) => {
167
- const currentTargetState = targetState[target.id] || {
168
- prompt: "",
169
- referenceImages: [],
170
- };
171
- const uploadedReferenceImages = await uploadReferenceImages(currentTargetState.referenceImages);
172
- return {
173
- targetId: target.id,
174
- prompt: currentTargetState.prompt.trim() || undefined,
175
- referenceImages: uploadedReferenceImages
176
- .filter((image) => image.assetId)
177
- .map((image) => createImageReferenceValue(image.assetId)),
178
- uploadedReferenceImages,
179
- };
180
- }));
181
- await client.createOrReplace({
182
- _id: SETTINGS_DOCUMENT_ID,
183
- _type: SETTINGS_SCHEMA_TYPE,
184
- title: "AI Image Plugin Settings",
185
- globalModel,
186
- globalPrompt: globalPrompt.trim() || undefined,
187
- globalReferenceImages: uploadedGlobalReferenceImages
188
- .filter((image) => image.assetId)
189
- .map((image) => createImageReferenceValue(image.assetId)),
190
- targetConfigs: uploadedTargets.map((target) => ({
191
- _type: "object",
192
- targetId: target.targetId,
193
- prompt: target.prompt,
194
- referenceImages: target.referenceImages,
195
- })),
196
- });
197
- setGlobalReferenceImages(uploadedGlobalReferenceImages);
198
- setTargetState((currentState) => Object.fromEntries(Object.entries(currentState).map(([targetId, state]) => {
199
- const uploadedTarget = uploadedTargets.find((target) => target.targetId === targetId);
200
- if (!uploadedTarget) {
201
- return [targetId, state];
202
- }
203
- return [
204
- targetId,
205
- {
206
- ...state,
207
- referenceImages: uploadedTarget.uploadedReferenceImages,
208
- },
209
- ];
210
- })));
211
- setSaveMessage("Saved AI Image Plugin settings.");
212
- }
213
- catch (nextError) {
214
- setError(getErrorMessage(nextError, "Unable to save AI Image Plugin settings."));
215
- }
216
- finally {
217
- setIsSaving(false);
218
- }
219
- }
220
- async function handleSharedSecretSave() {
221
- if (!sharedSecretDraft.trim()) {
222
- setSharedSecretError("Enter a shared secret before saving.");
223
- return;
224
- }
225
- setSharedSecretError(null);
226
- setSaveMessage(null);
227
- setIsSavingSharedSecret(true);
228
- try {
229
- await saveAiImagePluginSharedSecret(client, sharedSecretDraft);
230
- setSaveMessage("Updated AI Image Plugin shared secret.");
231
- setIsSharedSecretDialogOpen(false);
232
- setSharedSecretDraft("");
233
- }
234
- catch (nextError) {
235
- setSharedSecretError(getErrorMessage(nextError, "Unable to update the AI Image Plugin shared secret."));
236
- }
237
- finally {
238
- setIsSavingSharedSecret(false);
239
- }
240
- }
241
- if (isLoading) {
242
- return (_jsx(Box, { padding: 4, children: _jsx(Text, { children: "Loading AI Image Plugin settings..." }) }));
243
- }
244
- return (_jsxs(Box, { padding: 4, children: [_jsxs(Stack, { space: 4, children: [_jsx(Card, { padding: 4, radius: 2, tone: "primary", children: _jsxs(Stack, { space: 3, children: [_jsx(Text, { size: 3, weight: "semibold", children: "AI Image Plugin" }), _jsx(Text, { size: 1, children: "Configure reusable prompts and reference images for every AI image generation entry point without wiring extra schema or structure files into each project." })] }) }), _jsx(Card, { padding: 4, radius: 2, children: _jsxs(Stack, { space: 4, children: [_jsx(Text, { size: 2, weight: "semibold", children: "Global Defaults" }), _jsxs(Box, { children: [_jsx(Text, { size: 1, weight: "medium", children: "Default model" }), _jsx(Box, { marginTop: 2, children: _jsx(Select, { onChange: (event) => setGlobalModel(event.currentTarget.value), value: globalModel, children: allowedModelOptions.map((modelOption) => (_jsx("option", { value: modelOption.value, children: modelOption.title }, modelOption.value))) }) })] }), _jsxs(Box, { children: [_jsx(Text, { size: 1, weight: "medium", children: "Global prompt" }), _jsx(Box, { marginTop: 2, children: _jsx(TextArea, { onChange: (event) => setGlobalPrompt(event.currentTarget.value), placeholder: "High-level prompt instructions that should apply to every generation.", rows: 8, value: globalPrompt }) })] }), _jsx(SettingsReferenceImagesEditor, { images: globalReferenceImages, label: "Global reference images", onAdd: (files) => setGlobalReferenceImages((currentImages) => appendReferenceImages(currentImages, files)), onRemove: (imageId) => setGlobalReferenceImages((currentImages) => currentImages.filter((image) => image.id !== imageId)) })] }) }), _jsx(Grid, { columns: [1, 1, 2], gap: 4, children: allTargets.map((target) => {
245
- const state = targetState[target.id] || {
246
- prompt: "",
247
- referenceImages: [],
248
- };
249
- return (_jsx(Card, { padding: 4, radius: 2, children: _jsxs(Stack, { space: 4, children: [_jsxs(Stack, { space: 2, children: [_jsx(Text, { size: 2, weight: "semibold", children: target.title || target.id }), _jsx(Text, { muted: true, size: 1, children: "fieldPath" in target
250
- ? `${target.documentType}.${target.fieldPath}`
251
- : "Shared asset picker configuration" }), "fieldPath" in target &&
252
- target.suggestedContextFieldPaths?.length ? (_jsxs(Text, { muted: true, size: 1, children: ["Suggested tags:", " ", target.suggestedContextFieldPaths.join(", ")] })) : null, target.description ? (_jsx(Text, { size: 1, children: target.description })) : null] }), _jsxs(Box, { children: [_jsx(Text, { size: 1, weight: "medium", children: "Target prompt" }), _jsx(Box, { marginTop: 2, children: _jsx(TextArea, { onChange: (event) => setTargetState((currentState) => ({
253
- ...currentState,
254
- [target.id]: {
255
- ...state,
256
- prompt: event.currentTarget.value,
257
- },
258
- })), placeholder: "Optional prompt layered on top of the global defaults for this specific target.", rows: 6, value: state.prompt }) })] }), _jsx(SettingsReferenceImagesEditor, { images: state.referenceImages, label: "Target reference images", onAdd: (files) => setTargetState((currentState) => ({
259
- ...currentState,
260
- [target.id]: {
261
- ...state,
262
- referenceImages: appendReferenceImages(state.referenceImages, files),
263
- },
264
- })), onRemove: (imageId) => setTargetState((currentState) => ({
265
- ...currentState,
266
- [target.id]: {
267
- ...state,
268
- referenceImages: state.referenceImages.filter((image) => image.id !== imageId),
269
- },
270
- })) })] }) }, target.id));
271
- }) }), error ? (_jsx(Card, { padding: 3, radius: 2, tone: "critical", children: _jsx(Text, { size: 1, children: error }) })) : null, saveMessage ? (_jsx(Card, { padding: 3, radius: 2, tone: "positive", children: _jsx(Text, { size: 1, children: saveMessage }) })) : null, _jsx(Flex, { justify: "flex-end", children: _jsx(Button, { disabled: isSaving, onClick: () => void handleSave(), text: isSaving ? "Saving..." : "Save settings", tone: "primary" }) }), _jsxs(Stack, { space: 2, children: [_jsx(Text, { muted: true, size: 1, children: isLoadingSharedSecret
272
- ? "Checking shared secret status..."
273
- : sharedSecret
274
- ? "Shared secret configured."
275
- : "Shared secret missing." }), _jsx(Text, { size: 1, children: _jsx("button", { onClick: openSharedSecretDialog, style: {
276
- background: "none",
277
- border: 0,
278
- color: "inherit",
279
- cursor: "pointer",
280
- padding: 0,
281
- textDecoration: "underline",
282
- }, type: "button", children: sharedSecret ? "Update shared secret" : "Configure shared secret" }) })] })] }), isSharedSecretDialogOpen ? (_jsx(Dialog, { header: sharedSecret ? "Update shared secret" : "Configure shared secret", id: "ai-image-plugin-shared-secret-dialog", onClose: closeSharedSecretDialog, width: 1, children: _jsx(Box, { padding: 4, children: _jsxs(Stack, { space: 4, children: [_jsx(Text, { size: 1, children: "Enter the same shared secret used by your app server. The current secret is never shown here, and saving this value will replace the existing one immediately." }), _jsxs(Box, { children: [_jsx(Text, { size: 1, weight: "medium", children: "New shared secret" }), _jsx(Box, { marginTop: 2, children: _jsx(TextInput, { autoComplete: "new-password", onChange: (event) => {
283
- setSharedSecretDraft(event.currentTarget.value);
284
- setSharedSecretError(null);
285
- }, type: "password", value: sharedSecretDraft }) })] }), sharedSecretError ? (_jsx(Card, { padding: 3, radius: 2, tone: "critical", children: _jsx(Text, { size: 1, children: sharedSecretError }) })) : null, _jsxs(Flex, { gap: 3, justify: "flex-end", children: [_jsx(Button, { disabled: isSavingSharedSecret, mode: "ghost", onClick: closeSharedSecretDialog, text: "Cancel" }), _jsx(Button, { disabled: isSavingSharedSecret || isLoadingSharedSecret, onClick: () => void handleSharedSecretSave(), text: isSavingSharedSecret
286
- ? "Updating..."
287
- : sharedSecret
288
- ? "Confirm update"
289
- : "Save shared secret", tone: "primary" })] })] }) }) })) : null] }));
290
- };
291
- }
292
- //# sourceMappingURL=tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/studio/settings/tool.tsx"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- import type { ImageValue, SanityClient } from "sanity";
2
- import { type SupportedAiImageModelId } from "../utils/models";
3
- import { type SettingsTargetConfigValue, type SettingsValue, type StoredImage } from "../utils/shared";
4
- export type ToolReferenceImage = {
5
- assetId?: string;
6
- id: string;
7
- name: string;
8
- previewUrl?: string;
9
- sourceFile?: File;
10
- };
11
- export declare function createImageReferenceValue(assetId: string): ImageValue;
12
- export declare function getErrorMessage(error: unknown, fallback?: string): string;
13
- export declare function findTargetSettings(settings: SettingsValue | null, targetId: string): SettingsTargetConfigValue | undefined;
14
- export declare function resolveSettingsModel(options: {
15
- allowedModels: SupportedAiImageModelId[];
16
- settings: SettingsValue | null;
17
- }): SupportedAiImageModelId;
18
- export declare function fetchSettingsDocument(client: SanityClient, documentId: string, schemaType: string): Promise<SettingsValue | null>;
19
- export declare function downloadReferenceImageAsPng(image: StoredImage, index: number): Promise<File | null>;
20
- export declare function buildSettingsReferenceImages(settings: SettingsValue | null, targetId?: string, maxReferenceImages?: number): Promise<File[]>;
21
- export declare function createToolReferenceImageFromStoredImage(image: StoredImage, index: number): ToolReferenceImage | null;
22
- export declare function createToolReferenceImageFromFile(file: File): ToolReferenceImage;
23
- export declare function appendReferenceImages(currentImages: ToolReferenceImage[], nextFiles: File[]): ToolReferenceImage[];
24
- //# sourceMappingURL=settings-data.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"settings-data.d.ts","sourceRoot":"","sources":["../../src/studio/settings-data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACtD,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAEL,KAAK,yBAAyB,EAC9B,KAAK,aAAa,EAClB,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAA;AAGxB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,IAAI,CAAA;CAClB,CAAA;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAQrE;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,EACd,QAAQ,SAA2C,GAClD,MAAM,CAMR;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,aAAa,GAAG,IAAI,EAC9B,QAAQ,EAAE,MAAM,GACf,yBAAyB,GAAG,SAAS,CAEvC;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC5C,aAAa,EAAE,uBAAuB,EAAE,CAAA;IACxC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAA;CAC/B,GAAG,uBAAuB,CAK1B;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA+B/B;AAED,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAmBtB;AAED,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE,aAAa,GAAG,IAAI,EAC9B,QAAQ,CAAC,EAAE,MAAM,EACjB,kBAAkB,SAAuB,GACxC,OAAO,CAAC,IAAI,EAAE,CAAC,CAUjB;AAED,wBAAgB,uCAAuC,CACrD,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,MAAM,GACZ,kBAAkB,GAAG,IAAI,CAc3B;AAED,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,IAAI,GAAG,kBAAkB,CAM/E;AAED,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,kBAAkB,EAAE,EACnC,SAAS,EAAE,IAAI,EAAE,GAChB,kBAAkB,EAAE,CAKtB"}
@@ -1,99 +0,0 @@
1
- import { resolveAllowedAiImageModel, } from "../utils/models";
2
- import { MAX_REFERENCE_IMAGES, } from "../utils/shared";
3
- import { convertImageFileToPng, fileExtensionFromMimeType } from "./files";
4
- export function createImageReferenceValue(assetId) {
5
- return {
6
- _type: "image",
7
- asset: {
8
- _type: "reference",
9
- _ref: assetId,
10
- },
11
- };
12
- }
13
- export function getErrorMessage(error, fallback = "Unable to generate an image right now.") {
14
- if (error instanceof Error && error.message.trim()) {
15
- return error.message;
16
- }
17
- return fallback;
18
- }
19
- export function findTargetSettings(settings, targetId) {
20
- return settings?.targetConfigs?.find((target) => target.targetId === targetId);
21
- }
22
- export function resolveSettingsModel(options) {
23
- return resolveAllowedAiImageModel(options.settings?.globalModel, options.allowedModels);
24
- }
25
- export async function fetchSettingsDocument(client, documentId, schemaType) {
26
- return client.fetch(`*[_type == $type && _id == $id][0]{
27
- globalModel,
28
- globalPrompt,
29
- globalReferenceImages[]{
30
- "asset": {
31
- "_ref": asset._ref,
32
- "_id": asset->_id,
33
- "originalFilename": asset->originalFilename,
34
- "url": asset->url
35
- }
36
- },
37
- targetConfigs[]{
38
- targetId,
39
- prompt,
40
- referenceImages[]{
41
- "asset": {
42
- "_ref": asset._ref,
43
- "_id": asset->_id,
44
- "originalFilename": asset->originalFilename,
45
- "url": asset->url
46
- }
47
- }
48
- }
49
- }`, {
50
- id: documentId,
51
- type: schemaType,
52
- });
53
- }
54
- export async function downloadReferenceImageAsPng(image, index) {
55
- if (!image.asset?.url) {
56
- return null;
57
- }
58
- const response = await fetch(image.asset.url);
59
- if (!response.ok) {
60
- throw new Error("Failed to download AI Image Plugin reference images.");
61
- }
62
- const blob = await response.blob();
63
- const fallbackName = `reference-${index + 1}.${fileExtensionFromMimeType(blob.type || "image/png")}`;
64
- const filename = image.asset.originalFilename || fallbackName;
65
- const file = new File([blob], filename, { type: blob.type || "image/png" });
66
- return convertImageFileToPng(file);
67
- }
68
- export async function buildSettingsReferenceImages(settings, targetId, maxReferenceImages = MAX_REFERENCE_IMAGES) {
69
- const targetSettings = targetId ? findTargetSettings(settings, targetId) : null;
70
- const images = [
71
- ...(settings?.globalReferenceImages || []),
72
- ...(targetSettings?.referenceImages || []),
73
- ].slice(0, maxReferenceImages);
74
- return (await Promise.all(images.map(downloadReferenceImageAsPng))).filter((image) => image instanceof File);
75
- }
76
- export function createToolReferenceImageFromStoredImage(image, index) {
77
- const asset = image.asset;
78
- const assetId = asset?._ref || asset?._id;
79
- if (!assetId) {
80
- return null;
81
- }
82
- return {
83
- id: assetId,
84
- assetId,
85
- name: asset?.originalFilename || `reference-${index + 1}.png`,
86
- ...(asset?.url ? { previewUrl: asset.url } : {}),
87
- };
88
- }
89
- export function createToolReferenceImageFromFile(file) {
90
- return {
91
- id: `${file.name}-${file.size}-${file.lastModified}`,
92
- name: file.name,
93
- sourceFile: file,
94
- };
95
- }
96
- export function appendReferenceImages(currentImages, nextFiles) {
97
- return [...currentImages, ...nextFiles.map(createToolReferenceImageFromFile)].slice(0, MAX_REFERENCE_IMAGES);
98
- }
99
- //# sourceMappingURL=settings-data.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"settings-data.js","sourceRoot":"","sources":["../../src/studio/settings-data.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import type { SanityClient } from "sanity";
2
- export type AiImagePluginSecrets = {
3
- sharedSecret?: string;
4
- };
5
- export declare function getSharedSecretValue(secrets?: AiImagePluginSecrets): string | null;
6
- export declare function getMissingSharedSecretMessage(): string;
7
- export declare function saveAiImagePluginSharedSecret(client: SanityClient, sharedSecret: string): Promise<void>;
8
- export { SHARED_SECRET_HEADER_NAME, SHARED_SECRET_KEY, SHARED_SECRET_NAMESPACE, } from "../utils/shared";
9
- //# sourceMappingURL=shared-secret.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shared-secret.d.ts","sourceRoot":"","sources":["../../src/studio/shared-secret.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAI1C,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,wBAAgB,oBAAoB,CAClC,OAAO,CAAC,EAAE,oBAAoB,GAC7B,MAAM,GAAG,IAAI,CAUf;AAED,wBAAgB,6BAA6B,IAAI,MAAM,CAEtD;AAED,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAED,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,iBAAiB,CAAA"}
@@ -1,37 +0,0 @@
1
- import { SHARED_SECRET_KEY, SHARED_SECRET_NAMESPACE, SETTINGS_TOOL_TITLE, } from "../utils/shared";
2
- const STUDIO_SECRETS_DOCUMENT_TYPE = "pluginSecrets";
3
- export function getSharedSecretValue(secrets) {
4
- const sharedSecret = secrets?.sharedSecret;
5
- if (typeof sharedSecret !== "string") {
6
- return null;
7
- }
8
- const normalizedSharedSecret = sharedSecret.trim();
9
- return normalizedSharedSecret ? normalizedSharedSecret : null;
10
- }
11
- export function getMissingSharedSecretMessage() {
12
- return `${SETTINGS_TOOL_TITLE} shared secret is not configured. Open the ${SETTINGS_TOOL_TITLE} settings tool and add it before generating images.`;
13
- }
14
- export async function saveAiImagePluginSharedSecret(client, sharedSecret) {
15
- const normalizedSharedSecret = sharedSecret.trim();
16
- if (!normalizedSharedSecret) {
17
- throw new Error("Enter a shared secret before saving.");
18
- }
19
- const documentId = `secrets.${SHARED_SECRET_NAMESPACE}`;
20
- await client
21
- .transaction()
22
- .createIfNotExists({
23
- _id: documentId,
24
- _type: STUDIO_SECRETS_DOCUMENT_TYPE,
25
- })
26
- .patch(client.patch(documentId).set({
27
- secrets: {
28
- [SHARED_SECRET_KEY]: normalizedSharedSecret,
29
- },
30
- }))
31
- .commit({
32
- tag: "secrets.store",
33
- visibility: "sync",
34
- });
35
- }
36
- export { SHARED_SECRET_HEADER_NAME, SHARED_SECRET_KEY, SHARED_SECRET_NAMESPACE, } from "../utils/shared";
37
- //# sourceMappingURL=shared-secret.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shared-secret.js","sourceRoot":"","sources":["../../src/studio/shared-secret.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,iBAAiB,CAAA;AAGxB,MAAM,4BAA4B,GAAG,eAAe,CAAA;AAMpD,MAAM,UAAU,oBAAoB,CAClC,OAA8B;IAE9B,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,CAAA;IAE1C,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,sBAAsB,GAAG,YAAY,CAAC,IAAI,EAAE,CAAA;IAElD,OAAO,sBAAsB,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAA;AAC/D,CAAC;AAED,MAAM,UAAU,6BAA6B;IAC3C,OAAO,GAAG,mBAAmB,8CAA8C,mBAAmB,qDAAqD,CAAA;AACrJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,MAAoB,EACpB,YAAoB;IAEpB,MAAM,sBAAsB,GAAG,YAAY,CAAC,IAAI,EAAE,CAAA;IAElD,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;IACzD,CAAC;IAED,MAAM,UAAU,GAAG,WAAW,uBAAuB,EAAE,CAAA;IAEvD,MAAM,MAAM;SACT,WAAW,EAAE;SACb,iBAAiB,CAAC;QACjB,GAAG,EAAE,UAAU;QACf,KAAK,EAAE,4BAA4B;KACpC,CAAC;SACD,KAAK,CACJ,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC;QAC3B,OAAO,EAAE;YACP,CAAC,iBAAiB,CAAC,EAAE,sBAAsB;SAC5C;KACF,CAAC,CACH;SACA,MAAM,CAAC;QACN,GAAG,EAAE,eAAe;QACpB,UAAU,EAAE,MAAM;KACnB,CAAC,CAAA;AACN,CAAC;AAED,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,iBAAiB,CAAA"}
@@ -1,3 +0,0 @@
1
- import { type PluginOptions, type ResolvedOptions } from "./shared";
2
- export declare function normalizeOptions(options: PluginOptions): ResolvedOptions;
3
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,aAAa,EAElB,KAAK,eAAe,EACrB,MAAM,UAAU,CAAA;AAmCjB,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,eAAe,CA6CxE"}
@@ -1,59 +0,0 @@
1
- import { normalizeAllowedAiImageModels } from "./models";
2
- import { DEFAULT_API_ENDPOINT, DEFAULT_ASSET_SOURCE_TARGET_ID, DEFAULT_FRONTEND_RATE_LIMIT, SETTINGS_TOOL_NAME, SETTINGS_TOOL_TITLE, } from "./shared";
3
- function normalizePositiveInteger(value, fallback) {
4
- return typeof value === "number" && Number.isFinite(value) && value > 0
5
- ? Math.floor(value)
6
- : fallback;
7
- }
8
- function normalizeFrontendRateLimit(frontendRateLimit) {
9
- if (frontendRateLimit === false) {
10
- return false;
11
- }
12
- const configuredValues = frontendRateLimit && typeof frontendRateLimit === "object"
13
- ? frontendRateLimit
14
- : undefined;
15
- return {
16
- maxRequests: normalizePositiveInteger(configuredValues?.maxRequests, DEFAULT_FRONTEND_RATE_LIMIT.maxRequests),
17
- windowSecs: normalizePositiveInteger(configuredValues?.windowSecs, DEFAULT_FRONTEND_RATE_LIMIT.windowSecs),
18
- };
19
- }
20
- export function normalizeOptions(options) {
21
- const assetSource = options.assetSource === false ||
22
- (typeof options.assetSource === "object" &&
23
- options.assetSource.enabled === false)
24
- ? null
25
- : {
26
- id: typeof options.assetSource === "object"
27
- ? options.assetSource.id || DEFAULT_ASSET_SOURCE_TARGET_ID
28
- : DEFAULT_ASSET_SOURCE_TARGET_ID,
29
- type: "assetSource",
30
- title: typeof options.assetSource === "object"
31
- ? options.assetSource.title || "Image Asset Source"
32
- : "Image Asset Source",
33
- ...(typeof options.assetSource === "object" &&
34
- options.assetSource.description
35
- ? { description: options.assetSource.description }
36
- : {
37
- description: "Adds AI Image Plugin to the image asset picker.",
38
- }),
39
- promptLabel: typeof options.assetSource === "object"
40
- ? options.assetSource.promptLabel || "Prompt"
41
- : "Prompt",
42
- promptPlaceholder: typeof options.assetSource === "object"
43
- ? options.assetSource.promptPlaceholder ||
44
- "Turn these references into a clean homepage hero image with warm daylight and subtle depth."
45
- : "Turn these references into a clean homepage hero image with warm daylight and subtle depth.",
46
- };
47
- return {
48
- apiEndpoint: options.apiEndpoint || DEFAULT_API_ENDPOINT,
49
- apiVersion: options.apiVersion,
50
- allowedModels: normalizeAllowedAiImageModels(options.allowedModels),
51
- assetSourceTarget: assetSource,
52
- frontendRateLimit: normalizeFrontendRateLimit(options.frontendRateLimit),
53
- registerSettingsSchemaType: options.settingsTool?.registerSchemaType === true,
54
- settingsToolName: options.settingsTool?.name || SETTINGS_TOOL_NAME,
55
- settingsToolTitle: options.settingsTool?.title || SETTINGS_TOOL_TITLE,
56
- targets: options.targets || [],
57
- };
58
- }
59
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- export type SelectableContextField = {
2
- label: string;
3
- path: string;
4
- typeName: string;
5
- };
6
- export declare function getSelectableContextFields(documentSchema: unknown): SelectableContextField[];
7
- export declare function getDefaultSelectedContextFieldPaths(options: {
8
- selectableContextFields: SelectableContextField[];
9
- suggestedContextFieldPaths: string[] | undefined;
10
- }): string[];
11
- export declare function serializeContextFieldValue(value: unknown): string | null;
12
- export declare function buildContextFieldPrompt(options: {
13
- contextFieldPaths: string[];
14
- documentValue: Record<string, unknown> | undefined;
15
- }): string | null;
16
- //# sourceMappingURL=context-fields.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context-fields.d.ts","sourceRoot":"","sources":["../../src/utils/context-fields.ts"],"names":[],"mappings":"AA4BA,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AA6CD,wBAAgB,0BAA0B,CACxC,cAAc,EAAE,OAAO,GACtB,sBAAsB,EAAE,CAsB1B;AAED,wBAAgB,mCAAmC,CAAC,OAAO,EAAE;IAC3D,uBAAuB,EAAE,sBAAsB,EAAE,CAAA;IACjD,0BAA0B,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;CACjD,GAAG,MAAM,EAAE,CAQX;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CA8BxE;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE;IAC/C,iBAAiB,EAAE,MAAM,EAAE,CAAA;IAC3B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;CACnD,GAAG,MAAM,GAAG,IAAI,CAoBhB"}