@agent-native/core 0.92.5 → 0.92.7
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/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +19 -0
- package/corpus/core/docs/content/template-assets.mdx +139 -0
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/agent/production-agent.ts +96 -6
- package/corpus/core/src/cli/sync-builder-starter-manifest.ts +1 -1
- package/corpus/core/src/client/AssistantChat.tsx +127 -15
- package/corpus/core/src/client/chat/tool-call-display.tsx +9 -3
- package/corpus/core/src/client/org/TeamPage.tsx +274 -177
- package/corpus/core/src/client/settings/DemoModeSection.tsx +6 -6
- package/corpus/core/src/client/settings/SettingsPanel.tsx +1 -1
- package/corpus/core/src/client/settings/SettingsTabsPage.tsx +49 -1
- package/corpus/core/src/demo/actions/toggle-demo-mode.ts +2 -2
- package/corpus/core/src/demo/config.ts +3 -3
- package/corpus/core/src/demo/redact.ts +720 -0
- package/corpus/core/src/extensions/url-safety.ts +13 -1
- package/corpus/core/src/localization/default-messages.ts +7 -0
- package/corpus/core/src/templates/default/app/i18n/ar-SA.ts +7 -0
- package/corpus/core/src/templates/default/app/i18n/de-DE.ts +7 -0
- package/corpus/core/src/templates/default/app/i18n/en-US.ts +7 -0
- package/corpus/core/src/templates/default/app/i18n/es-ES.ts +7 -0
- package/corpus/core/src/templates/default/app/i18n/fr-FR.ts +7 -0
- package/corpus/core/src/templates/default/app/i18n/hi-IN.ts +7 -0
- package/corpus/core/src/templates/default/app/i18n/ja-JP.ts +7 -0
- package/corpus/core/src/templates/default/app/i18n/ko-KR.ts +7 -0
- package/corpus/core/src/templates/default/app/i18n/pt-BR.ts +7 -0
- package/corpus/core/src/templates/default/app/i18n/zh-CN.ts +7 -0
- package/corpus/core/src/templates/default/app/i18n/zh-TW.ts +7 -0
- package/corpus/templates/analytics/AGENTS.md +6 -3
- package/corpus/templates/analytics/changelog/2026-07-09-uptime-monitors-use-scheduled-workers-in-production-serverless.md +6 -0
- package/corpus/templates/analytics/docs/uptime-monitoring.md +5 -0
- package/corpus/templates/analytics/server/plugins/uptime-monitor-jobs.ts +14 -2
- package/corpus/templates/assets/.agents/skills/image-generation/SKILL.md +35 -0
- package/corpus/templates/assets/.agents/skills/library-management/SKILL.md +19 -0
- package/corpus/templates/assets/AGENTS.md +13 -0
- package/corpus/templates/assets/actions/_generation-preset-settings.ts +73 -0
- package/corpus/templates/assets/actions/_preset-skeleton-validation.ts +63 -0
- package/corpus/templates/assets/actions/create-generation-preset.ts +22 -8
- package/corpus/templates/assets/actions/duplicate-library.ts +49 -1
- package/corpus/templates/assets/actions/generate-image-batch.ts +14 -1
- package/corpus/templates/assets/actions/generate-image.ts +195 -26
- package/corpus/templates/assets/actions/import-asset-from-url.ts +323 -0
- package/corpus/templates/assets/actions/list-generation-presets.ts +1 -1
- package/corpus/templates/assets/actions/rerun-generation-run.ts +37 -0
- package/corpus/templates/assets/actions/update-generation-preset.ts +19 -1
- package/corpus/templates/assets/app/i18n/ar-SA.ts +1 -0
- package/corpus/templates/assets/app/i18n/de-DE.ts +1 -0
- package/corpus/templates/assets/app/i18n/es-ES.ts +1 -0
- package/corpus/templates/assets/app/i18n/fr-FR.ts +1 -0
- package/corpus/templates/assets/app/i18n/hi-IN.ts +1 -0
- package/corpus/templates/assets/app/i18n/ja-JP.ts +1 -0
- package/corpus/templates/assets/app/i18n/ko-KR.ts +1 -0
- package/corpus/templates/assets/app/i18n/pt-BR.ts +1 -0
- package/corpus/templates/assets/app/i18n/zh-CN.ts +1 -0
- package/corpus/templates/assets/app/i18n/zh-TW.ts +41 -0
- package/corpus/templates/assets/app/i18n-data.ts +93 -0
- package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +66 -11
- package/corpus/templates/assets/app/routes/brand-kits.$id_.presets.$presetId.tsx +959 -24
- package/corpus/templates/assets/changelog/2026-07-07-preset-skeleton-controls-fit-correctly-on-narrower-edit-page.md +6 -0
- package/corpus/templates/assets/changelog/2026-07-09-import-reference-images-from-url.md +6 -0
- package/corpus/templates/assets/changelog/2026-07-09-preset-reference-board.md +6 -0
- package/corpus/templates/assets/server/handlers/assets.ts +7 -27
- package/corpus/templates/assets/server/lib/generation.ts +83 -2
- package/corpus/templates/assets/server/lib/preset-chat-context.ts +17 -4
- package/corpus/templates/assets/server/lib/preset-references.ts +182 -0
- package/corpus/templates/assets/server/lib/upload-validation.ts +38 -0
- package/corpus/templates/assets/shared/api.ts +20 -0
- package/corpus/templates/calendar/.agents/skills/event-management/SKILL.md +6 -0
- package/corpus/templates/calendar/actions/create-event.ts +8 -2
- package/corpus/templates/calendar/app/components/calendar/CreateEventDialog.tsx +22 -7
- package/corpus/templates/calendar/changelog/2026-07-09-calendar-events-with-guests-now-automatically-get-a-google-m.md +6 -0
- package/corpus/templates/calendar/changelog/2026-07-09-new-events-now-mark-the-creator-rsvp-as-yes.md +6 -0
- package/corpus/templates/calendar/server/handlers/events.ts +9 -2
- package/corpus/templates/calendar/server/lib/event-video-conferencing.ts +58 -0
- package/corpus/templates/calendar/server/lib/google-calendar.ts +1 -0
- package/corpus/templates/clips/changelog/2026-07-09-meeting-reminder-popovers-can-now-be-dismissed-with-a-top-le.md +6 -0
- package/corpus/templates/clips/desktop/src/overlays/meeting-notification.tsx +3 -1
- package/corpus/templates/clips/desktop/src/styles.css +13 -9
- package/corpus/templates/clips/desktop/src-tauri/src/notifications.rs +5 -2
- package/dist/agent/production-agent.d.ts +34 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +58 -5
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/cli/sync-builder-starter-manifest.js +1 -1
- package/dist/cli/sync-builder-starter-manifest.js.map +1 -1
- package/dist/client/AssistantChat.d.ts +3 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +96 -15
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/chat/tool-call-display.d.ts.map +1 -1
- package/dist/client/chat/tool-call-display.js +5 -1
- package/dist/client/chat/tool-call-display.js.map +1 -1
- package/dist/client/org/TeamPage.d.ts.map +1 -1
- package/dist/client/org/TeamPage.js +32 -13
- package/dist/client/org/TeamPage.js.map +1 -1
- package/dist/client/settings/DemoModeSection.d.ts +3 -3
- package/dist/client/settings/DemoModeSection.js +4 -4
- package/dist/client/settings/DemoModeSection.js.map +1 -1
- package/dist/client/settings/SettingsPanel.js +1 -1
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/settings/SettingsTabsPage.d.ts.map +1 -1
- package/dist/client/settings/SettingsTabsPage.js +38 -2
- package/dist/client/settings/SettingsTabsPage.js.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/demo/actions/toggle-demo-mode.js +2 -2
- package/dist/demo/actions/toggle-demo-mode.js.map +1 -1
- package/dist/demo/config.js +3 -3
- package/dist/demo/config.js.map +1 -1
- package/dist/demo/redact.d.ts +1 -1
- package/dist/demo/redact.d.ts.map +1 -1
- package/dist/demo/redact.js +0 -0
- package/dist/demo/redact.js.map +1 -1
- package/dist/extensions/url-safety.d.ts +5 -0
- package/dist/extensions/url-safety.d.ts.map +1 -1
- package/dist/extensions/url-safety.js +10 -0
- package/dist/extensions/url-safety.js.map +1 -1
- package/dist/localization/default-messages.d.ts +7 -0
- package/dist/localization/default-messages.d.ts.map +1 -1
- package/dist/localization/default-messages.js +7 -0
- package/dist/localization/default-messages.js.map +1 -1
- package/dist/notifications/routes.d.ts +2 -2
- package/dist/provider-api/corpus-jobs.d.ts +2 -2
- package/dist/resources/handlers.d.ts +2 -2
- package/dist/templates/default/app/i18n/ar-SA.ts +7 -0
- package/dist/templates/default/app/i18n/de-DE.ts +7 -0
- package/dist/templates/default/app/i18n/en-US.ts +7 -0
- package/dist/templates/default/app/i18n/es-ES.ts +7 -0
- package/dist/templates/default/app/i18n/fr-FR.ts +7 -0
- package/dist/templates/default/app/i18n/hi-IN.ts +7 -0
- package/dist/templates/default/app/i18n/ja-JP.ts +7 -0
- package/dist/templates/default/app/i18n/ko-KR.ts +7 -0
- package/dist/templates/default/app/i18n/pt-BR.ts +7 -0
- package/dist/templates/default/app/i18n/zh-CN.ts +7 -0
- package/dist/templates/default/app/i18n/zh-TW.ts +7 -0
- package/docs/content/template-assets.mdx +139 -0
- package/package.json +1 -1
- package/src/templates/default/app/i18n/ar-SA.ts +7 -0
- package/src/templates/default/app/i18n/de-DE.ts +7 -0
- package/src/templates/default/app/i18n/en-US.ts +7 -0
- package/src/templates/default/app/i18n/es-ES.ts +7 -0
- package/src/templates/default/app/i18n/fr-FR.ts +7 -0
- package/src/templates/default/app/i18n/hi-IN.ts +7 -0
- package/src/templates/default/app/i18n/ja-JP.ts +7 -0
- package/src/templates/default/app/i18n/ko-KR.ts +7 -0
- package/src/templates/default/app/i18n/pt-BR.ts +7 -0
- package/src/templates/default/app/i18n/zh-CN.ts +7 -0
- package/src/templates/default/app/i18n/zh-TW.ts +7 -0
|
@@ -169,6 +169,46 @@ const brandKitDetailEnUS = {
|
|
|
169
169
|
lowerLeft: "Lower left",
|
|
170
170
|
skeletonEnabled: "Enabled",
|
|
171
171
|
skeletonOff: "Off",
|
|
172
|
+
addReference: "Add reference",
|
|
173
|
+
referenceBoard: "Reference board",
|
|
174
|
+
referenceBoardEmptyDescription:
|
|
175
|
+
'Add named visual slots like "Steve" so every run can use the right people, products, or style references.',
|
|
176
|
+
referenceDefaultLabel: "Reference",
|
|
177
|
+
referenceImageCount: "{{count}}/{{max}} images",
|
|
178
|
+
referenceSubjectImageCount: "{{count}}/{{max}} subject images",
|
|
179
|
+
moreImagesCount: "+{{count}}",
|
|
180
|
+
referenceLabel: "Label",
|
|
181
|
+
referenceRoleLabel: "Role",
|
|
182
|
+
referenceRole_subject: "Subject",
|
|
183
|
+
referenceRole_style: "Style",
|
|
184
|
+
referenceRole_product: "Product",
|
|
185
|
+
referenceRole_background: "Background",
|
|
186
|
+
referenceRole_composition: "Composition",
|
|
187
|
+
referenceDescription: "Description",
|
|
188
|
+
referenceDescriptionPlaceholder:
|
|
189
|
+
"e.g. This is Steve, our usual host. Render him faithfully.",
|
|
190
|
+
referenceMode: "Reference mode",
|
|
191
|
+
fixedReference: "Fixed",
|
|
192
|
+
swappableReference: "Swappable",
|
|
193
|
+
requiredPerRun: "Required",
|
|
194
|
+
required: "Required",
|
|
195
|
+
filledPerGeneration: "Filled per generation",
|
|
196
|
+
noReferenceImages: "No reference images",
|
|
197
|
+
chooseReferenceImage: "Choose from library",
|
|
198
|
+
searchLibraryImages: "Search library images",
|
|
199
|
+
editReference: "Edit reference",
|
|
200
|
+
uploadReferenceImage: "Upload image",
|
|
201
|
+
uploadingReferenceImage: "Uploading...",
|
|
202
|
+
referenceImageUploaded: "Reference image uploaded.",
|
|
203
|
+
couldNotUploadReferenceImage: "Could not upload reference image.",
|
|
204
|
+
removeReference: "Remove reference",
|
|
205
|
+
removeReferenceImage: "Remove reference image",
|
|
206
|
+
referenceBoardTotalLimitError:
|
|
207
|
+
"The reference board may attach at most 8 images total.",
|
|
208
|
+
referenceBoardSubjectLimitError:
|
|
209
|
+
"Subject reference entries may attach at most 4 images total.",
|
|
210
|
+
subjectReferenceModelTip:
|
|
211
|
+
"Tip: gemini-3-pro-image holds up to 5 people consistent — best for photo references.",
|
|
172
212
|
openChat: "Open chat",
|
|
173
213
|
defaultTextPolicy:
|
|
174
214
|
"Prefer no embedded text. Keep any requested text short and readable.",
|
|
@@ -1003,6 +1043,50 @@ type PartialMessages = {
|
|
|
1003
1043
|
};
|
|
1004
1044
|
};
|
|
1005
1045
|
|
|
1046
|
+
// TODO(l10n): translate after QA.
|
|
1047
|
+
const referenceBoardL10nTodo = {
|
|
1048
|
+
addReference: "Add reference",
|
|
1049
|
+
referenceBoard: "Reference board",
|
|
1050
|
+
referenceBoardEmptyDescription:
|
|
1051
|
+
'Add named visual slots like "Steve" so every run can use the right people, products, or style references.',
|
|
1052
|
+
referenceDefaultLabel: "Reference",
|
|
1053
|
+
referenceImageCount: "{{count}}/{{max}} images",
|
|
1054
|
+
referenceSubjectImageCount: "{{count}}/{{max}} subject images",
|
|
1055
|
+
moreImagesCount: "+{{count}}",
|
|
1056
|
+
referenceLabel: "Label",
|
|
1057
|
+
referenceRoleLabel: "Role",
|
|
1058
|
+
referenceRole_subject: "Subject",
|
|
1059
|
+
referenceRole_style: "Style",
|
|
1060
|
+
referenceRole_product: "Product",
|
|
1061
|
+
referenceRole_background: "Background",
|
|
1062
|
+
referenceRole_composition: "Composition",
|
|
1063
|
+
referenceDescription: "Description",
|
|
1064
|
+
referenceDescriptionPlaceholder:
|
|
1065
|
+
"e.g. This is Steve, our usual host. Render him faithfully.",
|
|
1066
|
+
referenceMode: "Reference mode",
|
|
1067
|
+
fixedReference: "Fixed",
|
|
1068
|
+
swappableReference: "Swappable",
|
|
1069
|
+
requiredPerRun: "Required",
|
|
1070
|
+
required: "Required",
|
|
1071
|
+
filledPerGeneration: "Filled per generation",
|
|
1072
|
+
noReferenceImages: "No reference images",
|
|
1073
|
+
chooseReferenceImage: "Choose from library",
|
|
1074
|
+
searchLibraryImages: "Search library images",
|
|
1075
|
+
editReference: "Edit reference",
|
|
1076
|
+
uploadReferenceImage: "Upload image",
|
|
1077
|
+
uploadingReferenceImage: "Uploading...",
|
|
1078
|
+
referenceImageUploaded: "Reference image uploaded.",
|
|
1079
|
+
couldNotUploadReferenceImage: "Could not upload reference image.",
|
|
1080
|
+
removeReference: "Remove reference",
|
|
1081
|
+
removeReferenceImage: "Remove reference image",
|
|
1082
|
+
referenceBoardTotalLimitError:
|
|
1083
|
+
"The reference board may attach at most 8 images total.",
|
|
1084
|
+
referenceBoardSubjectLimitError:
|
|
1085
|
+
"Subject reference entries may attach at most 4 images total.",
|
|
1086
|
+
subjectReferenceModelTip:
|
|
1087
|
+
"Tip: gemini-3-pro-image holds up to 5 people consistent — best for photo references.",
|
|
1088
|
+
} satisfies Partial<Messages["brandKitDetail"]>;
|
|
1089
|
+
|
|
1006
1090
|
const brandKitDetailArSA = {
|
|
1007
1091
|
addAssetsDescription:
|
|
1008
1092
|
"قم بتحميل المواد المصدرية أو قم بإنشاء مرشحين، ثم حدد فقط الأصول التي يجب أن توجه الأجيال القادمة كمراجع.",
|
|
@@ -1081,6 +1165,7 @@ const brandKitDetailArSA = {
|
|
|
1081
1165
|
lowerLeft: "أسفل اليسار",
|
|
1082
1166
|
skeletonEnabled: "مفعل",
|
|
1083
1167
|
skeletonOff: "متوقف",
|
|
1168
|
+
...referenceBoardL10nTodo,
|
|
1084
1169
|
couldNotAddSelectedToReferences: "لا يمكن إضافة الأصول المحددة إلى المراجع.",
|
|
1085
1170
|
couldNotAddToReferences: "لا يمكن إضافة الأصل إلى المراجع.",
|
|
1086
1171
|
couldNotArchiveBrandKit: "تعذر أرشفة مجموعة العلامة التجارية.",
|
|
@@ -1317,6 +1402,7 @@ const brandKitDetailDeDE = {
|
|
|
1317
1402
|
lowerLeft: "Unten links",
|
|
1318
1403
|
skeletonEnabled: "Aktiviert",
|
|
1319
1404
|
skeletonOff: "Aus",
|
|
1405
|
+
...referenceBoardL10nTodo,
|
|
1320
1406
|
couldNotAddSelectedToReferences:
|
|
1321
1407
|
"Ausgewählte Assets konnten nicht zu Referenzen hinzugefügt werden.",
|
|
1322
1408
|
couldNotAddToReferences:
|
|
@@ -1559,6 +1645,7 @@ const brandKitDetailEsES = {
|
|
|
1559
1645
|
lowerLeft: "Inferior izquierda",
|
|
1560
1646
|
skeletonEnabled: "Activado",
|
|
1561
1647
|
skeletonOff: "Desactivado",
|
|
1648
|
+
...referenceBoardL10nTodo,
|
|
1562
1649
|
couldNotAddSelectedToReferences:
|
|
1563
1650
|
"No se pudieron agregar los recursos seleccionados a las Referencias.",
|
|
1564
1651
|
couldNotAddToReferences: "No se pudo agregar activo a Referencias.",
|
|
@@ -1804,6 +1891,7 @@ const brandKitDetailFrFR = {
|
|
|
1804
1891
|
lowerLeft: "En bas à gauche",
|
|
1805
1892
|
skeletonEnabled: "Activé",
|
|
1806
1893
|
skeletonOff: "Désactivé",
|
|
1894
|
+
...referenceBoardL10nTodo,
|
|
1807
1895
|
couldNotAddSelectedToReferences:
|
|
1808
1896
|
"Impossible d'ajouter les éléments sélectionnés aux références.",
|
|
1809
1897
|
couldNotAddToReferences: "Impossible d'ajouter un élément aux références.",
|
|
@@ -2043,6 +2131,7 @@ const brandKitDetailHiIN = {
|
|
|
2043
2131
|
lowerLeft: "नीचे बाएं",
|
|
2044
2132
|
skeletonEnabled: "सक्षम",
|
|
2045
2133
|
skeletonOff: "बंद",
|
|
2134
|
+
...referenceBoardL10nTodo,
|
|
2046
2135
|
couldNotAddSelectedToReferences:
|
|
2047
2136
|
"चयनित परिसंपत्तियों को संदर्भों में नहीं जोड़ा जा सका.",
|
|
2048
2137
|
couldNotAddToReferences: "संदर्भों में संपत्ति नहीं जोड़ी जा सकी.",
|
|
@@ -2278,6 +2367,7 @@ const brandKitDetailJaJP = {
|
|
|
2278
2367
|
lowerLeft: "左下",
|
|
2279
2368
|
skeletonEnabled: "有効",
|
|
2280
2369
|
skeletonOff: "オフ",
|
|
2370
|
+
...referenceBoardL10nTodo,
|
|
2281
2371
|
couldNotAddSelectedToReferences:
|
|
2282
2372
|
"選択したアセットを参照に追加できませんでした。",
|
|
2283
2373
|
couldNotAddToReferences: "アセットを参照に追加できませんでした。",
|
|
@@ -2518,6 +2608,7 @@ const brandKitDetailKoKR = {
|
|
|
2518
2608
|
lowerLeft: "왼쪽 아래",
|
|
2519
2609
|
skeletonEnabled: "활성화됨",
|
|
2520
2610
|
skeletonOff: "꺼짐",
|
|
2611
|
+
...referenceBoardL10nTodo,
|
|
2521
2612
|
couldNotAddSelectedToReferences: "선택한 자산을 참조에 추가할 수 없습니다.",
|
|
2522
2613
|
couldNotAddToReferences: "참조에 자산을 추가할 수 없습니다.",
|
|
2523
2614
|
couldNotArchiveBrandKit: "브랜드 키트를 보관할 수 없습니다.",
|
|
@@ -2754,6 +2845,7 @@ const brandKitDetailPtBR = {
|
|
|
2754
2845
|
lowerLeft: "Inferior esquerda",
|
|
2755
2846
|
skeletonEnabled: "Ativado",
|
|
2756
2847
|
skeletonOff: "Desativado",
|
|
2848
|
+
...referenceBoardL10nTodo,
|
|
2757
2849
|
couldNotAddSelectedToReferences:
|
|
2758
2850
|
"Não foi possível adicionar os ativos selecionados às referências.",
|
|
2759
2851
|
couldNotAddToReferences: "Não foi possível adicionar recurso às referências.",
|
|
@@ -3950,6 +4042,7 @@ export const messagesByLocale = {
|
|
|
3950
4042
|
lowerLeft: "左下",
|
|
3951
4043
|
skeletonEnabled: "已启用",
|
|
3952
4044
|
skeletonOff: "关闭",
|
|
4045
|
+
...referenceBoardL10nTodo,
|
|
3953
4046
|
openChat: "打开聊天",
|
|
3954
4047
|
defaultTextPolicy: "尽量不要嵌入文字。如需文字,请保持简短且易读。",
|
|
3955
4048
|
generationPresetCreated: "生成预设已创建。",
|
|
@@ -1475,7 +1475,7 @@ export function BrandKitDetailRoute({
|
|
|
1475
1475
|
<RunCard
|
|
1476
1476
|
key={run.id}
|
|
1477
1477
|
run={run}
|
|
1478
|
-
|
|
1478
|
+
assetById={assetById}
|
|
1479
1479
|
rerunning={
|
|
1480
1480
|
rerunGeneration.isPending || refreshGeneration.isPending
|
|
1481
1481
|
}
|
|
@@ -1644,13 +1644,13 @@ type LaneGalleryItem = {
|
|
|
1644
1644
|
|
|
1645
1645
|
function RunCard({
|
|
1646
1646
|
run,
|
|
1647
|
-
|
|
1647
|
+
assetById,
|
|
1648
1648
|
onRerun,
|
|
1649
1649
|
onCreateHandoff,
|
|
1650
1650
|
rerunning,
|
|
1651
1651
|
}: {
|
|
1652
1652
|
run: any;
|
|
1653
|
-
|
|
1653
|
+
assetById?: Map<string, any>;
|
|
1654
1654
|
onRerun: () => void;
|
|
1655
1655
|
onCreateHandoff: () => void;
|
|
1656
1656
|
rerunning?: boolean;
|
|
@@ -1661,14 +1661,16 @@ function RunCard({
|
|
|
1661
1661
|
string,
|
|
1662
1662
|
unknown
|
|
1663
1663
|
>;
|
|
1664
|
-
const selectedReferenceIds = Array.isArray(
|
|
1664
|
+
const selectedReferenceIds: string[] = Array.isArray(
|
|
1665
1665
|
referenceSelection.selectedAssetIds,
|
|
1666
1666
|
)
|
|
1667
1667
|
? referenceSelection.selectedAssetIds.filter(
|
|
1668
1668
|
(id): id is string => typeof id === "string",
|
|
1669
1669
|
)
|
|
1670
1670
|
: Array.isArray(run.referenceAssetIds)
|
|
1671
|
-
? run.referenceAssetIds
|
|
1671
|
+
? run.referenceAssetIds.filter(
|
|
1672
|
+
(id: unknown): id is string => typeof id === "string",
|
|
1673
|
+
)
|
|
1672
1674
|
: [];
|
|
1673
1675
|
const outputIds = Array.isArray(run.output?.assetIds)
|
|
1674
1676
|
? run.output.assetIds.filter(
|
|
@@ -1778,7 +1780,7 @@ function RunCard({
|
|
|
1778
1780
|
{outputIds.length ? (
|
|
1779
1781
|
<div className="mt-2 flex flex-wrap gap-2">
|
|
1780
1782
|
{outputIds.map((assetId: any) => {
|
|
1781
|
-
const outputAsset =
|
|
1783
|
+
const outputAsset = assetById?.get(assetId);
|
|
1782
1784
|
return (
|
|
1783
1785
|
<Button
|
|
1784
1786
|
key={assetId}
|
|
@@ -1812,11 +1814,21 @@ function RunCard({
|
|
|
1812
1814
|
<div className="text-xs font-medium text-muted-foreground">
|
|
1813
1815
|
{t("brandKitDetail.references")}
|
|
1814
1816
|
</div>
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1817
|
+
{selectedReferenceIds.length ? (
|
|
1818
|
+
<div className="mt-2 flex flex-wrap gap-2">
|
|
1819
|
+
{selectedReferenceIds.map((assetId) => (
|
|
1820
|
+
<RunReferenceTile
|
|
1821
|
+
key={assetId}
|
|
1822
|
+
assetId={assetId}
|
|
1823
|
+
asset={assetById?.get(assetId)}
|
|
1824
|
+
/>
|
|
1825
|
+
))}
|
|
1826
|
+
</div>
|
|
1827
|
+
) : (
|
|
1828
|
+
<p className="mt-2 text-xs text-muted-foreground">
|
|
1829
|
+
{t("brandKitDetail.noneSelected")}
|
|
1830
|
+
</p>
|
|
1831
|
+
)}
|
|
1820
1832
|
</div>
|
|
1821
1833
|
</div>
|
|
1822
1834
|
|
|
@@ -1834,6 +1846,49 @@ function RunCard({
|
|
|
1834
1846
|
);
|
|
1835
1847
|
}
|
|
1836
1848
|
|
|
1849
|
+
function RunReferenceTile({
|
|
1850
|
+
assetId,
|
|
1851
|
+
asset,
|
|
1852
|
+
}: {
|
|
1853
|
+
assetId: string;
|
|
1854
|
+
asset?: any;
|
|
1855
|
+
}) {
|
|
1856
|
+
const label = asset ? assetDisplayTitle(asset) : shortId(assetId);
|
|
1857
|
+
return (
|
|
1858
|
+
<Link
|
|
1859
|
+
to={asset ? `/asset/${asset.id}` : "#"}
|
|
1860
|
+
title={asset ? `${label} · ${asset.id}` : assetId}
|
|
1861
|
+
aria-disabled={!asset}
|
|
1862
|
+
className={[
|
|
1863
|
+
"group block w-20 overflow-hidden rounded-md border bg-background text-left transition",
|
|
1864
|
+
asset
|
|
1865
|
+
? "hover:border-foreground/30 hover:shadow-sm"
|
|
1866
|
+
: "pointer-events-none border-dashed",
|
|
1867
|
+
].join(" ")}
|
|
1868
|
+
>
|
|
1869
|
+
<div className="aspect-square bg-muted/40">
|
|
1870
|
+
{asset ? (
|
|
1871
|
+
<AssetPreview asset={asset} fit="cover" />
|
|
1872
|
+
) : (
|
|
1873
|
+
<div className="flex h-full w-full items-center justify-center">
|
|
1874
|
+
<IconPhoto className="h-5 w-5 text-muted-foreground" />
|
|
1875
|
+
</div>
|
|
1876
|
+
)}
|
|
1877
|
+
</div>
|
|
1878
|
+
<div className="border-t px-1.5 py-1">
|
|
1879
|
+
<div className="truncate text-[11px] font-medium text-foreground">
|
|
1880
|
+
{label}
|
|
1881
|
+
</div>
|
|
1882
|
+
{asset ? (
|
|
1883
|
+
<div className="truncate text-[10px] text-muted-foreground">
|
|
1884
|
+
{shortId(assetId)}
|
|
1885
|
+
</div>
|
|
1886
|
+
) : null}
|
|
1887
|
+
</div>
|
|
1888
|
+
</Link>
|
|
1889
|
+
);
|
|
1890
|
+
}
|
|
1891
|
+
|
|
1837
1892
|
function RunFact({ label, value }: { label: string; value: string }) {
|
|
1838
1893
|
return (
|
|
1839
1894
|
<div className="rounded-md border bg-muted/20 px-3 py-2">
|