@smart-cloud/ai-kit-ui 1.1.30 → 1.1.32
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.cjs +6 -6
- package/dist/index.js +6 -6
- package/package.json +2 -2
- package/src/ai-chatbot/AiChatbot.tsx +11 -6
- package/src/ai-feature/AiFeature.tsx +33 -6
- package/src/i18n/ar.ts +1 -0
- package/src/i18n/de.ts +1 -0
- package/src/i18n/en.ts +1 -0
- package/src/i18n/es.ts +1 -0
- package/src/i18n/fr.ts +1 -0
- package/src/i18n/he.ts +1 -0
- package/src/i18n/hi.ts +1 -0
- package/src/i18n/id.ts +1 -0
- package/src/i18n/it.ts +1 -0
- package/src/i18n/ja.ts +1 -0
- package/src/i18n/ko.ts +1 -0
- package/src/i18n/nl.ts +1 -0
- package/src/i18n/pl.ts +1 -0
- package/src/i18n/pt.ts +1 -0
- package/src/i18n/ru.ts +1 -0
- package/src/i18n/sv.ts +1 -0
- package/src/i18n/th.ts +1 -0
- package/src/i18n/tr.ts +1 -0
- package/src/i18n/ua.ts +1 -0
- package/src/i18n/zh.ts +1 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@smart-cloud/ai-kit-ui",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.32",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.cjs",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"@emotion/cache": "^11.14.0",
|
|
21
21
|
"@emotion/react": "^11.14.0",
|
|
22
22
|
"@mantine/colors-generator": "^8.3.14",
|
|
23
|
-
"@smart-cloud/ai-kit-core": "^1.1.
|
|
23
|
+
"@smart-cloud/ai-kit-core": "^1.1.17",
|
|
24
24
|
"@smart-cloud/wpsuite-core": "^2.1.2",
|
|
25
25
|
"@tabler/icons-react": "^3.36.1",
|
|
26
26
|
"chroma-js": "^3.2.0",
|
|
@@ -69,6 +69,7 @@ export const DEFAULT_CHATBOT_LABELS: Required<AiChatbotLabels> = {
|
|
|
69
69
|
|
|
70
70
|
userLabel: "User",
|
|
71
71
|
assistantLabel: "Assistant",
|
|
72
|
+
assistantThinkingLabel: "Assistant is thinking...",
|
|
72
73
|
|
|
73
74
|
askMeLabel: "Ask me",
|
|
74
75
|
|
|
@@ -179,7 +180,10 @@ const isAbortLike = (e: Error & { code?: string }) => {
|
|
|
179
180
|
);
|
|
180
181
|
};
|
|
181
182
|
|
|
182
|
-
const formatStatusEvent = (
|
|
183
|
+
const formatStatusEvent = (
|
|
184
|
+
event: AiKitStatusEvent | null,
|
|
185
|
+
labels: AiChatbotLabels,
|
|
186
|
+
): string | null => {
|
|
183
187
|
if (!event) return null;
|
|
184
188
|
|
|
185
189
|
const step = event.step;
|
|
@@ -201,11 +205,12 @@ const formatStatusEvent = (event?: AiKitStatusEvent | null): string | null => {
|
|
|
201
205
|
case "on-device:run":
|
|
202
206
|
return msg || I18n.get("Running on-device...");
|
|
203
207
|
case "backend:request":
|
|
204
|
-
return msg || I18n.get("Sending request to server...");
|
|
205
208
|
case "backend:waiting":
|
|
206
|
-
return msg || I18n.get("Waiting for response...");
|
|
207
209
|
case "backend:response":
|
|
208
|
-
return
|
|
210
|
+
return I18n.get(
|
|
211
|
+
labels.assistantThinkingLabel ??
|
|
212
|
+
DEFAULT_CHATBOT_LABELS.assistantThinkingLabel,
|
|
213
|
+
);
|
|
209
214
|
case "done":
|
|
210
215
|
return msg || I18n.get("Done.");
|
|
211
216
|
case "error":
|
|
@@ -525,8 +530,8 @@ const AiChatbotBase: FC<AiChatbotProps & AiKitShellInjectedProps> = (props) => {
|
|
|
525
530
|
|
|
526
531
|
const statusText = useMemo(() => {
|
|
527
532
|
if (!ai.busy) return null;
|
|
528
|
-
return formatStatusEvent(ai.statusEvent) || I18n.get("Working…");
|
|
529
|
-
}, [ai.busy, ai.statusEvent, language]);
|
|
533
|
+
return formatStatusEvent(ai.statusEvent, labels) || I18n.get("Working…");
|
|
534
|
+
}, [ai.busy, ai.statusEvent, language, labels]);
|
|
530
535
|
|
|
531
536
|
const lastCanceledUserMessageId = useMemo(() => {
|
|
532
537
|
for (let i = messages.length - 1; i >= 0; i--) {
|
|
@@ -333,6 +333,7 @@ const AiFeatureBase: FC<AiFeatureProps & AiKitShellInjectedProps> = (props) => {
|
|
|
333
333
|
);
|
|
334
334
|
}, [allowOverride]);
|
|
335
335
|
|
|
336
|
+
const [state, setState] = useState<string>();
|
|
336
337
|
const [featureOpen, setFeatureOpen] = useState<boolean>(!showOpenButton);
|
|
337
338
|
const [optionsOpen, setOptionsOpen] = useState<boolean>(false);
|
|
338
339
|
const [backendConfigured, setBackendConfigured] = useState(false);
|
|
@@ -396,7 +397,7 @@ const AiFeatureBase: FC<AiFeatureProps & AiKitShellInjectedProps> = (props) => {
|
|
|
396
397
|
|
|
397
398
|
const formatAiKitStatus = useCallback(
|
|
398
399
|
(e: AiKitStatusEvent | null): string | null => {
|
|
399
|
-
if (!e) return null;
|
|
400
|
+
if (!e || e.silent) return null;
|
|
400
401
|
|
|
401
402
|
const step = e.step;
|
|
402
403
|
const msg = I18n.get((e.message ?? "").trim());
|
|
@@ -420,11 +421,23 @@ const AiFeatureBase: FC<AiFeatureProps & AiKitShellInjectedProps> = (props) => {
|
|
|
420
421
|
case "on-device:run":
|
|
421
422
|
return msg || I18n.get("Generating...");
|
|
422
423
|
case "backend:request":
|
|
423
|
-
return msg || I18n.get("Sending request to backend...");
|
|
424
424
|
case "backend:waiting":
|
|
425
|
-
return msg || I18n.get("Waiting for backend response...");
|
|
426
425
|
case "backend:response":
|
|
427
|
-
|
|
426
|
+
switch (mode) {
|
|
427
|
+
case "translate":
|
|
428
|
+
return I18n.get("Translating text");
|
|
429
|
+
case "rewrite":
|
|
430
|
+
return I18n.get("Rewriting text");
|
|
431
|
+
case "summarize":
|
|
432
|
+
return I18n.get("Summarizing");
|
|
433
|
+
case "proofread":
|
|
434
|
+
return I18n.get("Proofreading");
|
|
435
|
+
case "write":
|
|
436
|
+
case "generatePostMetadata":
|
|
437
|
+
case "generateImageMetadata":
|
|
438
|
+
default:
|
|
439
|
+
return I18n.get("Generating text");
|
|
440
|
+
}
|
|
428
441
|
case "done":
|
|
429
442
|
return msg || I18n.get("Done.");
|
|
430
443
|
case "error":
|
|
@@ -433,7 +446,7 @@ const AiFeatureBase: FC<AiFeatureProps & AiKitShellInjectedProps> = (props) => {
|
|
|
433
446
|
return msg || I18n.get("Working...");
|
|
434
447
|
}
|
|
435
448
|
},
|
|
436
|
-
[language],
|
|
449
|
+
[language, mode],
|
|
437
450
|
);
|
|
438
451
|
|
|
439
452
|
const inputText = useMemo(() => {
|
|
@@ -463,7 +476,8 @@ const AiFeatureBase: FC<AiFeatureProps & AiKitShellInjectedProps> = (props) => {
|
|
|
463
476
|
}, [inputText, mode, image, inputLanguage, outputLanguage]);
|
|
464
477
|
|
|
465
478
|
const ai = useAiRun();
|
|
466
|
-
const statusText =
|
|
479
|
+
const statusText =
|
|
480
|
+
formatAiKitStatus(ai.statusEvent) ?? (state ? I18n.get(state) : null);
|
|
467
481
|
|
|
468
482
|
const runGenerate = useCallback(
|
|
469
483
|
async (modeOverride?: AiModePreference) => {
|
|
@@ -516,6 +530,7 @@ const AiFeatureBase: FC<AiFeatureProps & AiKitShellInjectedProps> = (props) => {
|
|
|
516
530
|
context,
|
|
517
531
|
modeOverride,
|
|
518
532
|
onDeviceTimeoutOverride: onDeviceTimeout,
|
|
533
|
+
silent: true,
|
|
519
534
|
},
|
|
520
535
|
);
|
|
521
536
|
const langCodes = res.result?.candidates
|
|
@@ -545,11 +560,13 @@ const AiFeatureBase: FC<AiFeatureProps & AiKitShellInjectedProps> = (props) => {
|
|
|
545
560
|
const res = await ai.run(async ({ signal, onStatus }) => {
|
|
546
561
|
let inputLang = inputLanguage ?? "auto";
|
|
547
562
|
if (inputLang === "auto") {
|
|
563
|
+
setState("Detecting input language...");
|
|
548
564
|
inputLang = await detectTopLanguage(text!.trim(), {
|
|
549
565
|
signal,
|
|
550
566
|
context,
|
|
551
567
|
modeOverride,
|
|
552
568
|
onDeviceTimeoutOverride: onDeviceTimeout,
|
|
569
|
+
silent: true,
|
|
553
570
|
});
|
|
554
571
|
setInputLanguage(inputLang);
|
|
555
572
|
}
|
|
@@ -589,11 +606,13 @@ const AiFeatureBase: FC<AiFeatureProps & AiKitShellInjectedProps> = (props) => {
|
|
|
589
606
|
? outputLanguage
|
|
590
607
|
: null) || readDefaultOutputLanguage();
|
|
591
608
|
if (outputLanguage === "auto") {
|
|
609
|
+
setState("Detecting input language...");
|
|
592
610
|
outLang = await detectTopLanguage(text!.trim(), {
|
|
593
611
|
signal,
|
|
594
612
|
context,
|
|
595
613
|
modeOverride,
|
|
596
614
|
onDeviceTimeoutOverride: onDeviceTimeout,
|
|
615
|
+
silent: true,
|
|
597
616
|
});
|
|
598
617
|
setOutputLanguage(outLang);
|
|
599
618
|
}
|
|
@@ -637,12 +656,15 @@ const AiFeatureBase: FC<AiFeatureProps & AiKitShellInjectedProps> = (props) => {
|
|
|
637
656
|
context,
|
|
638
657
|
modeOverride,
|
|
639
658
|
onDeviceTimeoutOverride: onDeviceTimeout,
|
|
659
|
+
silent: true,
|
|
640
660
|
};
|
|
661
|
+
setState("Detecting input language...");
|
|
641
662
|
const inLang = await detectTopLanguage(
|
|
642
663
|
text!.trim() + "\n" + (instructions?.trim() || ""),
|
|
643
664
|
langFeatureOptions,
|
|
644
665
|
);
|
|
645
666
|
if (inLang !== outLang && inLang !== "en") {
|
|
667
|
+
setState("Translating instructions...");
|
|
646
668
|
args.prompt = (
|
|
647
669
|
await translate(
|
|
648
670
|
{
|
|
@@ -727,6 +749,7 @@ Follow these additional instructions: ${instructions}`
|
|
|
727
749
|
? outputLanguage
|
|
728
750
|
: null) || readDefaultOutputLanguage();
|
|
729
751
|
try {
|
|
752
|
+
setState("Translating result...");
|
|
730
753
|
const parsed = (await ai.run(async ({ signal }) => {
|
|
731
754
|
return await parsePostMetadataFromPromptResult(
|
|
732
755
|
cleaned,
|
|
@@ -736,6 +759,7 @@ Follow these additional instructions: ${instructions}`
|
|
|
736
759
|
context,
|
|
737
760
|
modeOverride,
|
|
738
761
|
onDeviceTimeoutOverride: onDeviceTimeout,
|
|
762
|
+
silent: true,
|
|
739
763
|
},
|
|
740
764
|
);
|
|
741
765
|
})) as string | null;
|
|
@@ -811,6 +835,7 @@ Follow these additional instructions: ${instructions}`
|
|
|
811
835
|
|
|
812
836
|
const cleaned = stripCodeFence(res).trim();
|
|
813
837
|
try {
|
|
838
|
+
setState("Translating result...");
|
|
814
839
|
const parsed = (await ai.run(async ({ signal }) => {
|
|
815
840
|
return await parseImageMetadataFromPromptResult(
|
|
816
841
|
cleaned,
|
|
@@ -820,6 +845,7 @@ Follow these additional instructions: ${instructions}`
|
|
|
820
845
|
context,
|
|
821
846
|
modeOverride,
|
|
822
847
|
onDeviceTimeoutOverride: onDeviceTimeout,
|
|
848
|
+
silent: true,
|
|
823
849
|
},
|
|
824
850
|
);
|
|
825
851
|
})) as string | null;
|
|
@@ -840,6 +866,7 @@ Follow these additional instructions: ${instructions}`
|
|
|
840
866
|
: I18n.get("An unknown error occurred."),
|
|
841
867
|
);
|
|
842
868
|
}
|
|
869
|
+
setState(undefined);
|
|
843
870
|
},
|
|
844
871
|
[
|
|
845
872
|
language,
|
package/src/i18n/ar.ts
CHANGED
|
@@ -13,6 +13,7 @@ export const arDict: Record<string, string> = {
|
|
|
13
13
|
"Ask anything…": "اسأل أي شيء…",
|
|
14
14
|
"Ask me": "اسألني",
|
|
15
15
|
Assistant: "المساعد",
|
|
16
|
+
"Assistant is thinking...": "المساعد يفكر...",
|
|
16
17
|
"Auto-detect": "الكشف التلقائي",
|
|
17
18
|
Cancel: "يلغي",
|
|
18
19
|
Caption: "التسمية التوضيحية",
|
package/src/i18n/de.ts
CHANGED
|
@@ -13,6 +13,7 @@ export const deDict: Record<string, string> = {
|
|
|
13
13
|
"Ask anything…": "Frag mich alles…",
|
|
14
14
|
"Ask me": "Frag mich",
|
|
15
15
|
Assistant: "Assistent",
|
|
16
|
+
"Assistant is thinking...": "Der Assistent denkt nach...",
|
|
16
17
|
"Auto-detect": "Automatisch erkennen",
|
|
17
18
|
Cancel: "Abbrechen",
|
|
18
19
|
Caption: "Bildunterschrift",
|
package/src/i18n/en.ts
CHANGED
|
@@ -13,6 +13,7 @@ export const enDict: Record<string, string> = {
|
|
|
13
13
|
"Ask anything…": "Ask anything…",
|
|
14
14
|
"Ask me": "Ask me",
|
|
15
15
|
Assistant: "Assistant",
|
|
16
|
+
"Assistant is thinking...": "Assistant is thinking...",
|
|
16
17
|
"Auto-detect": "Auto-detect",
|
|
17
18
|
Cancel: "Cancel",
|
|
18
19
|
Caption: "Caption",
|
package/src/i18n/es.ts
CHANGED
|
@@ -13,6 +13,7 @@ export const esDict: Record<string, string> = {
|
|
|
13
13
|
"Ask anything…": "Pregunta lo que sea…",
|
|
14
14
|
"Ask me": "Pregúntame",
|
|
15
15
|
Assistant: "Asistente",
|
|
16
|
+
"Assistant is thinking...": "El asistente está pensando...",
|
|
16
17
|
"Auto-detect": "Detección automática",
|
|
17
18
|
Cancel: "Cancelar",
|
|
18
19
|
Caption: "Subtítulo",
|
package/src/i18n/fr.ts
CHANGED
|
@@ -13,6 +13,7 @@ export const frDict: Record<string, string> = {
|
|
|
13
13
|
"Ask anything…": "Demandez n’importe quoi…",
|
|
14
14
|
"Ask me": "Demandez-moi",
|
|
15
15
|
Assistant: "Assistant",
|
|
16
|
+
"Assistant is thinking...": "L'assistant réfléchit...",
|
|
16
17
|
"Auto-detect": "Détection automatique",
|
|
17
18
|
Cancel: "Annuler",
|
|
18
19
|
Caption: "Légende",
|
package/src/i18n/he.ts
CHANGED
package/src/i18n/hi.ts
CHANGED
|
@@ -13,6 +13,7 @@ export const hiDict: Record<string, string> = {
|
|
|
13
13
|
"Ask anything…": "कुछ भी पूछें…",
|
|
14
14
|
"Ask me": "मुझसे पूछें",
|
|
15
15
|
Assistant: "सहायक",
|
|
16
|
+
"Assistant is thinking...": "सहायक सोच रहा है...",
|
|
16
17
|
"Auto-detect": "ऑटो का पता लगाने",
|
|
17
18
|
Cancel: "रद्द करना",
|
|
18
19
|
Caption: "कैप्शन",
|
package/src/i18n/id.ts
CHANGED
|
@@ -13,6 +13,7 @@ export const idDict: Record<string, string> = {
|
|
|
13
13
|
"Ask anything…": "Tanyakan apa saja…",
|
|
14
14
|
"Ask me": "Tanya saya",
|
|
15
15
|
Assistant: "Asisten",
|
|
16
|
+
"Assistant is thinking...": "Asisten sedang berpikir...",
|
|
16
17
|
"Auto-detect": "Deteksi otomatis",
|
|
17
18
|
Cancel: "Membatalkan",
|
|
18
19
|
Caption: "Keterangan",
|
package/src/i18n/it.ts
CHANGED
|
@@ -13,6 +13,7 @@ export const itDict: Record<string, string> = {
|
|
|
13
13
|
"Ask anything…": "Chiedi qualsiasi cosa…",
|
|
14
14
|
"Ask me": "Chiedimi",
|
|
15
15
|
Assistant: "Assistente",
|
|
16
|
+
"Assistant is thinking...": "L'assistente sta pensando...",
|
|
16
17
|
"Auto-detect": "Rilevamento automatico",
|
|
17
18
|
Cancel: "Cancellare",
|
|
18
19
|
Caption: "Didascalia",
|
package/src/i18n/ja.ts
CHANGED
package/src/i18n/ko.ts
CHANGED
package/src/i18n/nl.ts
CHANGED
|
@@ -13,6 +13,7 @@ export const nlDict: Record<string, string> = {
|
|
|
13
13
|
"Ask anything…": "Vraag maar raak…",
|
|
14
14
|
"Ask me": "Vraag me",
|
|
15
15
|
Assistant: "Assistent",
|
|
16
|
+
"Assistant is thinking...": "De assistent denkt na...",
|
|
16
17
|
"Auto-detect": "Automatische detectie",
|
|
17
18
|
Cancel: "Annuleren",
|
|
18
19
|
Caption: "Ondertiteling",
|
package/src/i18n/pl.ts
CHANGED
|
@@ -13,6 +13,7 @@ export const plDict: Record<string, string> = {
|
|
|
13
13
|
"Ask anything…": "Zapytaj o cokolwiek…",
|
|
14
14
|
"Ask me": "Zapytaj mnie",
|
|
15
15
|
Assistant: "Asystent",
|
|
16
|
+
"Assistant is thinking...": "Asystent myśli...",
|
|
16
17
|
"Auto-detect": "Automatyczne wykrywanie",
|
|
17
18
|
Cancel: "Anulować",
|
|
18
19
|
Caption: "Podpis",
|
package/src/i18n/pt.ts
CHANGED
|
@@ -13,6 +13,7 @@ export const ptDict: Record<string, string> = {
|
|
|
13
13
|
"Ask anything…": "Pergunte qualquer coisa…",
|
|
14
14
|
"Ask me": "Pergunte-me",
|
|
15
15
|
Assistant: "Assistente",
|
|
16
|
+
"Assistant is thinking...": "O assistente está pensando...",
|
|
16
17
|
"Auto-detect": "Detecção automática",
|
|
17
18
|
Cancel: "Cancelar",
|
|
18
19
|
Caption: "Rubrica",
|
package/src/i18n/ru.ts
CHANGED
|
@@ -13,6 +13,7 @@ export const ruDict: Record<string, string> = {
|
|
|
13
13
|
"Ask anything…": "Спросите что угодно…",
|
|
14
14
|
"Ask me": "Спросите меня",
|
|
15
15
|
Assistant: "Ассистент",
|
|
16
|
+
"Assistant is thinking...": "Ассистент размышляет...",
|
|
16
17
|
"Auto-detect": "Автоматическое определение",
|
|
17
18
|
Cancel: "Отмена",
|
|
18
19
|
Caption: "Подпись",
|
package/src/i18n/sv.ts
CHANGED
|
@@ -13,6 +13,7 @@ export const svDict: Record<string, string> = {
|
|
|
13
13
|
"Ask anything…": "Fråga vad som helst…",
|
|
14
14
|
"Ask me": "Fråga mig",
|
|
15
15
|
Assistant: "Assistent",
|
|
16
|
+
"Assistant is thinking...": "Assistenten funderar...",
|
|
16
17
|
"Auto-detect": "Automatisk identifiering",
|
|
17
18
|
Cancel: "Avboka",
|
|
18
19
|
Caption: "Rubrik",
|
package/src/i18n/th.ts
CHANGED
|
@@ -13,6 +13,7 @@ export const thDict: Record<string, string> = {
|
|
|
13
13
|
"Ask anything…": "ถามอะไรก็ได้…",
|
|
14
14
|
"Ask me": "ถามฉัน",
|
|
15
15
|
Assistant: "ผู้ช่วย",
|
|
16
|
+
"Assistant is thinking...": "ผู้ช่วยกำลังคิด...",
|
|
16
17
|
"Auto-detect": "ตรวจจับอัตโนมัติ",
|
|
17
18
|
Cancel: "ยกเลิก",
|
|
18
19
|
Caption: "คำบรรยายภาพ",
|
package/src/i18n/tr.ts
CHANGED
|
@@ -13,6 +13,7 @@ export const trDict: Record<string, string> = {
|
|
|
13
13
|
"Ask anything…": "Her şeyi sor…",
|
|
14
14
|
"Ask me": "Bana sor",
|
|
15
15
|
Assistant: "Asistan",
|
|
16
|
+
"Assistant is thinking...": "Asistan düşünüyor...",
|
|
16
17
|
"Auto-detect": "Otomatik algılama",
|
|
17
18
|
Cancel: "İptal etmek",
|
|
18
19
|
Caption: "Altyazı",
|
package/src/i18n/ua.ts
CHANGED
|
@@ -13,6 +13,7 @@ export const uaDict: Record<string, string> = {
|
|
|
13
13
|
"Ask anything…": "Запитайте будь-що…",
|
|
14
14
|
"Ask me": "Запитайте мене",
|
|
15
15
|
Assistant: "Асистент",
|
|
16
|
+
"Assistant is thinking...": "Асистент думає...",
|
|
16
17
|
"Auto-detect": "Автоматичне визначення",
|
|
17
18
|
Cancel: "Скасувати",
|
|
18
19
|
Caption: "Підпис",
|