@agent-native/toolkit 0.200.0 → 0.200.1-nightly-20261002213029
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/app/chat/AgentKitAssistantChat.js +2 -0
- package/dist/app/chat/AgentKitAssistantChat.js.map +1 -1
- package/dist/app/chat/AgentPanel.d.ts.map +1 -1
- package/dist/app/chat/AgentPanel.js +12 -99
- package/dist/app/chat/AgentPanel.js.map +1 -1
- package/dist/app/chat/ConnectBuilderCard.js +2 -2
- package/dist/app/chat/ConnectBuilderCard.js.map +1 -1
- package/dist/app/i18n/catalogs/ar-SA.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/ar-SA.js +36 -26
- package/dist/app/i18n/catalogs/ar-SA.js.map +1 -1
- package/dist/app/i18n/catalogs/de-DE.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/de-DE.js +36 -26
- package/dist/app/i18n/catalogs/de-DE.js.map +1 -1
- package/dist/app/i18n/catalogs/en-US.d.ts +36 -26
- package/dist/app/i18n/catalogs/en-US.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/en-US.js +36 -26
- package/dist/app/i18n/catalogs/en-US.js.map +1 -1
- package/dist/app/i18n/catalogs/es-ES.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/es-ES.js +36 -26
- package/dist/app/i18n/catalogs/es-ES.js.map +1 -1
- package/dist/app/i18n/catalogs/fr-FR.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/fr-FR.js +36 -26
- package/dist/app/i18n/catalogs/fr-FR.js.map +1 -1
- package/dist/app/i18n/catalogs/hi-IN.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/hi-IN.js +36 -26
- package/dist/app/i18n/catalogs/hi-IN.js.map +1 -1
- package/dist/app/i18n/catalogs/ja-JP.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/ja-JP.js +36 -26
- package/dist/app/i18n/catalogs/ja-JP.js.map +1 -1
- package/dist/app/i18n/catalogs/ko-KR.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/ko-KR.js +36 -26
- package/dist/app/i18n/catalogs/ko-KR.js.map +1 -1
- package/dist/app/i18n/catalogs/pt-BR.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/pt-BR.js +36 -26
- package/dist/app/i18n/catalogs/pt-BR.js.map +1 -1
- package/dist/app/i18n/catalogs/zh-CN.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/zh-CN.js +36 -26
- package/dist/app/i18n/catalogs/zh-CN.js.map +1 -1
- package/dist/app/i18n/catalogs/zh-TW.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/zh-TW.js +36 -26
- package/dist/app/i18n/catalogs/zh-TW.js.map +1 -1
- package/dist/app/onboarding/FirstRunOnboarding.d.ts.map +1 -1
- package/dist/app/onboarding/FirstRunOnboarding.js +3 -5
- package/dist/app/onboarding/FirstRunOnboarding.js.map +1 -1
- package/dist/app/onboarding/NewWorkspaceAppFlow.d.ts.map +1 -1
- package/dist/app/onboarding/NewWorkspaceAppFlow.js +4 -2
- package/dist/app/onboarding/NewWorkspaceAppFlow.js.map +1 -1
- package/dist/app/onboarding/OnboardingPanel.d.ts.map +1 -1
- package/dist/app/onboarding/OnboardingPanel.js +3 -1
- package/dist/app/onboarding/OnboardingPanel.js.map +1 -1
- package/dist/app/settings/BuilderConnectPopover.d.ts +1 -0
- package/dist/app/settings/BuilderConnectPopover.d.ts.map +1 -1
- package/dist/app/settings/BuilderConnectPopover.js +11 -4
- package/dist/app/settings/BuilderConnectPopover.js.map +1 -1
- package/dist/app/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/app/settings/SettingsPanel.js +16 -8
- package/dist/app/settings/SettingsPanel.js.map +1 -1
- package/dist/app/settings/VoiceTranscriptionSection.d.ts.map +1 -1
- package/dist/app/settings/VoiceTranscriptionSection.js +7 -6
- package/dist/app/settings/VoiceTranscriptionSection.js.map +1 -1
- package/dist/app/settings/infra/InfrastructureSettingsPage.js +2 -2
- package/dist/app/settings/infra/InfrastructureSettingsPage.js.map +1 -1
- package/dist/app/settings/model/ModelSettingsPage.js +4 -2
- package/dist/app/settings/model/ModelSettingsPage.js.map +1 -1
- package/dist/app/settings/useBuilderStatus.d.ts +1 -0
- package/dist/app/settings/useBuilderStatus.d.ts.map +1 -1
- package/dist/app/settings/useBuilderStatus.js +43 -29
- package/dist/app/settings/useBuilderStatus.js.map +1 -1
- package/dist/app/setup-connections/SetupConnectionsPage.d.ts.map +1 -1
- package/dist/app/setup-connections/SetupConnectionsPage.js +4 -2
- package/dist/app/setup-connections/SetupConnectionsPage.js.map +1 -1
- package/dist/app/setup-connections/useBuilderConnectCardController.d.ts +1 -1
- package/dist/app/setup-connections/useBuilderConnectCardController.d.ts.map +1 -1
- package/dist/app/setup-connections/useBuilderConnectCardController.js +7 -6
- package/dist/app/setup-connections/useBuilderConnectCardController.js.map +1 -1
- package/dist/app/transcription/BuilderTranscriptionCta.d.ts.map +1 -1
- package/dist/app/transcription/BuilderTranscriptionCta.js +3 -1
- package/dist/app/transcription/BuilderTranscriptionCta.js.map +1 -1
- package/dist/composer/MessageQueueDrawer.d.ts +1 -1
- package/dist/composer/MessageQueueDrawer.d.ts.map +1 -1
- package/dist/composer/MessageQueueDrawer.js +10 -1
- package/dist/composer/MessageQueueDrawer.js.map +1 -1
- package/dist/composer/PromptComposer.d.ts +1 -1
- package/dist/composer/TiptapComposer.d.ts +1 -1
- package/dist/composer/TiptapComposer.js +4 -4
- package/dist/composer/TiptapComposer.js.map +1 -1
- package/dist/composer/useRealtimeVoiceMode.js +2 -2
- package/dist/composer/useRealtimeVoiceMode.js.map +1 -1
- package/package.json +4 -4
- package/src/app/chat/AgentKitAssistantChat.spec.tsx +30 -5
- package/src/app/chat/AgentKitAssistantChat.tsx +1 -0
- package/src/app/chat/AgentPanel.tsx +33 -112
- package/src/app/chat/ConnectBuilderCard.tsx +2 -2
- package/src/app/chat/chat/run-recovery.spec.tsx +8 -8
- package/src/app/i18n/catalogs/ar-SA.ts +46 -26
- package/src/app/i18n/catalogs/de-DE.ts +47 -26
- package/src/app/i18n/catalogs/en-US.ts +47 -26
- package/src/app/i18n/catalogs/es-ES.ts +47 -26
- package/src/app/i18n/catalogs/fr-FR.ts +48 -26
- package/src/app/i18n/catalogs/hi-IN.ts +47 -26
- package/src/app/i18n/catalogs/ja-JP.ts +47 -26
- package/src/app/i18n/catalogs/ko-KR.ts +47 -26
- package/src/app/i18n/catalogs/pt-BR.ts +48 -26
- package/src/app/i18n/catalogs/zh-CN.ts +47 -26
- package/src/app/i18n/catalogs/zh-TW.ts +47 -26
- package/src/app/integrations/BuilderIntegrationPage.spec.tsx +11 -7
- package/src/app/onboarding/FirstRunOnboarding.spec.tsx +24 -12
- package/src/app/onboarding/FirstRunOnboarding.tsx +14 -16
- package/src/app/onboarding/NewWorkspaceAppFlow.spec.ts +23 -7
- package/src/app/onboarding/NewWorkspaceAppFlow.tsx +4 -2
- package/src/app/onboarding/OnboardingPanel.tsx +4 -8
- package/src/app/settings/BuilderConnectPopover.spec.tsx +41 -1
- package/src/app/settings/BuilderConnectPopover.tsx +21 -4
- package/src/app/settings/SettingsPanel.connections.spec.tsx +2 -2
- package/src/app/settings/SettingsPanel.tsx +16 -8
- package/src/app/settings/VoiceTranscriptionSection.tsx +8 -7
- package/src/app/settings/infra/InfrastructureSettingsPage.spec.tsx +4 -4
- package/src/app/settings/infra/InfrastructureSettingsPage.tsx +5 -2
- package/src/app/settings/model/ModelSettingsPage.spec.tsx +7 -5
- package/src/app/settings/model/ModelSettingsPage.tsx +4 -2
- package/src/app/settings/useBuilderStatus.spec.tsx +82 -52
- package/src/app/settings/useBuilderStatus.ts +44 -54
- package/src/app/setup-connections/BuilderConnectCard.spec.tsx +11 -11
- package/src/app/setup-connections/SetupConnectionsPage.tsx +4 -2
- package/src/app/setup-connections/useBuilderConnectCardController.spec.tsx +19 -6
- package/src/app/setup-connections/useBuilderConnectCardController.ts +10 -9
- package/src/app/transcription/BuilderTranscriptionCta.tsx +4 -2
- package/src/composer/MessageQueueDrawer.spec.tsx +108 -0
- package/src/composer/MessageQueueDrawer.tsx +22 -2
- package/src/composer/PromptComposer.tsx +1 -1
- package/src/composer/RealtimeVoiceMode.spec.tsx +4 -4
- package/src/composer/TiptapComposer.tsx +5 -5
- package/src/composer/useRealtimeVoiceMode.tsx +2 -2
|
@@ -75,9 +75,7 @@ import {
|
|
|
75
75
|
getAgentChatViewTransitionStyle,
|
|
76
76
|
} from "@agent-native/core/client/agent-chat";
|
|
77
77
|
import { useDevMode } from "@agent-native/core/client/agent-chat";
|
|
78
|
-
import { trackEvent } from "@agent-native/core/client/analytics";
|
|
79
78
|
import { agentNativePath, appPath } from "@agent-native/core/client/api-path";
|
|
80
|
-
import { fetchBuilderStatus } from "@agent-native/core/client/client-status-requests";
|
|
81
79
|
import { getFramePostMessageTargetOrigin } from "@agent-native/core/client/host";
|
|
82
80
|
import { useT } from "@agent-native/core/client/i18n";
|
|
83
81
|
import { isFirstRunOnboardingEnabled } from "@agent-native/core/client/onboarding";
|
|
@@ -87,8 +85,9 @@ import { cn } from "@agent-native/toolkit/utils";
|
|
|
87
85
|
|
|
88
86
|
import { useFirstRunOnboardingGateOwnsSurface } from "../onboarding/first-run-startup-gate.js";
|
|
89
87
|
import {
|
|
88
|
+
BuilderConnectPopover,
|
|
90
89
|
SETTINGS_SECTION_STATE_KEY,
|
|
91
|
-
|
|
90
|
+
useBuilderConnectFlow,
|
|
92
91
|
} from "../settings/index.js";
|
|
93
92
|
import { RouterSidebarLink } from "../shared/index.js";
|
|
94
93
|
import { AgentSidebarOnboardingContext } from "./agent-sidebar-context.js";
|
|
@@ -529,85 +528,6 @@ export interface AgentPanelCodeAccess {
|
|
|
529
528
|
unavailableComposerPlaceholder?: string;
|
|
530
529
|
}
|
|
531
530
|
|
|
532
|
-
function useBuilderConnectUrl() {
|
|
533
|
-
const [connectUrl, setConnectUrl] = useState<string | null>(null);
|
|
534
|
-
const [configured, setConfigured] = useState(false);
|
|
535
|
-
|
|
536
|
-
useEffect(() => {
|
|
537
|
-
let cancelled = false;
|
|
538
|
-
let lastConfigured = false;
|
|
539
|
-
const refresh = () => {
|
|
540
|
-
fetchBuilderStatus<{
|
|
541
|
-
connectUrl?: string;
|
|
542
|
-
configured?: boolean;
|
|
543
|
-
}>()
|
|
544
|
-
.then((result) => (result.state === "available" ? result.value : null))
|
|
545
|
-
.then((data) => {
|
|
546
|
-
if (cancelled || !data) return;
|
|
547
|
-
const nextConnectUrl = data.connectUrl;
|
|
548
|
-
if (nextConnectUrl) setConnectUrl(nextConnectUrl);
|
|
549
|
-
const nextConfigured = !!data.configured;
|
|
550
|
-
setConfigured(nextConfigured);
|
|
551
|
-
if (nextConfigured && !lastConfigured) {
|
|
552
|
-
lastConfigured = true;
|
|
553
|
-
window.dispatchEvent(
|
|
554
|
-
new CustomEvent("agent-engine:configured-changed", {
|
|
555
|
-
detail: { source: "builder-status" },
|
|
556
|
-
}),
|
|
557
|
-
);
|
|
558
|
-
} else if (!nextConfigured) {
|
|
559
|
-
lastConfigured = false;
|
|
560
|
-
}
|
|
561
|
-
})
|
|
562
|
-
.catch(() => {});
|
|
563
|
-
};
|
|
564
|
-
refresh();
|
|
565
|
-
const onFocus = () => refresh();
|
|
566
|
-
const onVisibility = () => {
|
|
567
|
-
if (document.visibilityState === "visible") refresh();
|
|
568
|
-
};
|
|
569
|
-
const onConfigured = (e: Event) => {
|
|
570
|
-
const detail = (e as CustomEvent).detail as
|
|
571
|
-
| { source?: string }
|
|
572
|
-
| undefined;
|
|
573
|
-
if (detail?.source === "builder-status") return;
|
|
574
|
-
refresh();
|
|
575
|
-
};
|
|
576
|
-
window.addEventListener("focus", onFocus);
|
|
577
|
-
document.addEventListener("visibilitychange", onVisibility);
|
|
578
|
-
window.addEventListener("agent-engine:configured-changed", onConfigured);
|
|
579
|
-
let channel: BroadcastChannel | null = null;
|
|
580
|
-
try {
|
|
581
|
-
channel = new BroadcastChannel(`builder-connect:${window.location.host}`);
|
|
582
|
-
channel.onmessage = (e: MessageEvent) => {
|
|
583
|
-
const data = e.data as { type?: string } | undefined;
|
|
584
|
-
if (data?.type === "builder-connect-success") refresh();
|
|
585
|
-
};
|
|
586
|
-
} catch {
|
|
587
|
-
// BroadcastChannel missing — focus/visibility refresh still covers it.
|
|
588
|
-
}
|
|
589
|
-
const onMessage = (e: MessageEvent) => {
|
|
590
|
-
if (e.origin !== window.location.origin) return;
|
|
591
|
-
const data = e.data as { type?: string } | undefined;
|
|
592
|
-
if (data?.type === "builder-connect-success") refresh();
|
|
593
|
-
};
|
|
594
|
-
window.addEventListener("message", onMessage);
|
|
595
|
-
return () => {
|
|
596
|
-
cancelled = true;
|
|
597
|
-
window.removeEventListener("focus", onFocus);
|
|
598
|
-
document.removeEventListener("visibilitychange", onVisibility);
|
|
599
|
-
window.removeEventListener(
|
|
600
|
-
"agent-engine:configured-changed",
|
|
601
|
-
onConfigured,
|
|
602
|
-
);
|
|
603
|
-
window.removeEventListener("message", onMessage);
|
|
604
|
-
channel?.close();
|
|
605
|
-
};
|
|
606
|
-
}, []);
|
|
607
|
-
|
|
608
|
-
return { connectUrl, configured };
|
|
609
|
-
}
|
|
610
|
-
|
|
611
531
|
export interface AgentPanelProps extends Omit<
|
|
612
532
|
AssistantChatProps,
|
|
613
533
|
"onSwitchToCli"
|
|
@@ -706,7 +626,7 @@ function CodeAccessUnavailablePanel({
|
|
|
706
626
|
description,
|
|
707
627
|
ctaLabel,
|
|
708
628
|
ctaHref,
|
|
709
|
-
secondaryCtaLabel
|
|
629
|
+
secondaryCtaLabel,
|
|
710
630
|
secondaryCtaHref,
|
|
711
631
|
compact = false,
|
|
712
632
|
}: {
|
|
@@ -714,24 +634,21 @@ function CodeAccessUnavailablePanel({
|
|
|
714
634
|
description: string;
|
|
715
635
|
ctaLabel: string;
|
|
716
636
|
ctaHref?: string;
|
|
717
|
-
secondaryCtaLabel
|
|
637
|
+
secondaryCtaLabel: string;
|
|
718
638
|
secondaryCtaHref?: string;
|
|
719
639
|
compact?: boolean;
|
|
720
640
|
}) {
|
|
721
|
-
const
|
|
722
|
-
|
|
641
|
+
const builderFlow = useBuilderConnectFlow({
|
|
642
|
+
provisionAccount: true,
|
|
643
|
+
trackingSource: "code_access_unavailable_panel",
|
|
644
|
+
trackingFlow: "background_agent",
|
|
645
|
+
});
|
|
646
|
+
const secondaryHref = secondaryCtaHref
|
|
723
647
|
? withBuilderUtmTrackingParams(secondaryCtaHref, {
|
|
724
648
|
campaign: "product",
|
|
725
649
|
content: "code_access_unavailable_panel",
|
|
726
650
|
})
|
|
727
|
-
:
|
|
728
|
-
? withBuilderConnectTrackingParams(builderConnectUrl, {
|
|
729
|
-
source: "code_access_unavailable_panel",
|
|
730
|
-
flow: "background_agent",
|
|
731
|
-
})
|
|
732
|
-
: withBuilderUtmTrackingParams("https://builder.io", {
|
|
733
|
-
content: "code_access_unavailable_panel",
|
|
734
|
-
});
|
|
651
|
+
: null;
|
|
735
652
|
|
|
736
653
|
return (
|
|
737
654
|
<div
|
|
@@ -769,23 +686,26 @@ function CodeAccessUnavailablePanel({
|
|
|
769
686
|
<IconExternalLink className="h-3 w-3" />
|
|
770
687
|
</a>
|
|
771
688
|
) : null}
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
689
|
+
{secondaryHref ? (
|
|
690
|
+
<a
|
|
691
|
+
href={secondaryHref}
|
|
692
|
+
target="_blank"
|
|
693
|
+
rel="noreferrer"
|
|
694
|
+
className="inline-flex items-center gap-1.5 rounded-md border border-border bg-background px-3 py-1.5 text-xs font-medium text-foreground hover:bg-accent"
|
|
695
|
+
>
|
|
696
|
+
{secondaryCtaLabel}
|
|
697
|
+
<IconExternalLink className="h-3 w-3" />
|
|
698
|
+
</a>
|
|
699
|
+
) : (
|
|
700
|
+
<BuilderConnectPopover flow={builderFlow}>
|
|
701
|
+
<button
|
|
702
|
+
type="button"
|
|
703
|
+
className="inline-flex items-center gap-1.5 rounded-md border border-border bg-background px-3 py-1.5 text-xs font-medium text-foreground hover:bg-accent"
|
|
704
|
+
>
|
|
705
|
+
{secondaryCtaLabel}
|
|
706
|
+
</button>
|
|
707
|
+
</BuilderConnectPopover>
|
|
708
|
+
)}
|
|
789
709
|
</div>
|
|
790
710
|
</div>
|
|
791
711
|
);
|
|
@@ -1098,7 +1018,8 @@ function AgentPanelInner({
|
|
|
1098
1018
|
const codeUnavailableCtaHref =
|
|
1099
1019
|
codeAccess?.unavailableCtaHref ?? "https://www.agent-native.com/download";
|
|
1100
1020
|
const codeUnavailableSecondaryCtaLabel =
|
|
1101
|
-
codeAccess?.unavailableSecondaryCtaLabel ??
|
|
1021
|
+
codeAccess?.unavailableSecondaryCtaLabel ??
|
|
1022
|
+
t("agentPanel.connectBuilderIo");
|
|
1102
1023
|
const codeUnavailableSecondaryCtaHref =
|
|
1103
1024
|
codeAccess?.unavailableSecondaryCtaHref;
|
|
1104
1025
|
const canUseCodeTools =
|
|
@@ -316,7 +316,7 @@ export function ConnectBuilderCard({
|
|
|
316
316
|
</>
|
|
317
317
|
);
|
|
318
318
|
} else {
|
|
319
|
-
title = "
|
|
319
|
+
title = t("agentChat.setup.connectBuilder");
|
|
320
320
|
subtitle = <>Builder.io's free tier includes AI credits.</>;
|
|
321
321
|
}
|
|
322
322
|
|
|
@@ -547,7 +547,7 @@ export function ConnectBuilderCard({
|
|
|
547
547
|
Waiting for Builder…
|
|
548
548
|
</>
|
|
549
549
|
) : (
|
|
550
|
-
"
|
|
550
|
+
t("agentChat.setup.connectBuilder")
|
|
551
551
|
)}
|
|
552
552
|
</button>
|
|
553
553
|
</DeferredBuilderConnectPopover>
|
|
@@ -79,7 +79,7 @@ vi.mock("@agent-native/core/client/i18n", () => ({
|
|
|
79
79
|
useT: () => (key: string, options?: Record<string, unknown>) => {
|
|
80
80
|
const translations: Record<string, Record<string, string>> = {
|
|
81
81
|
"en-US": {
|
|
82
|
-
"agentChat.setup.connectBuilder": "
|
|
82
|
+
"agentChat.setup.connectBuilder": "Use Builder.io",
|
|
83
83
|
"agentPanel.connectAi": "Connect AI",
|
|
84
84
|
"agentPanel.builderOrOwnKeys": "Choose Builder.io or custom keys.",
|
|
85
85
|
"agentPanel.addOwnKeys": "Custom keys",
|
|
@@ -103,8 +103,8 @@ vi.mock("@agent-native/core/client/i18n", () => ({
|
|
|
103
103
|
"The provider rejected the credential used for this request; it is skipped on the next attempt. Retry, or update your provider key if it keeps failing.",
|
|
104
104
|
"agentChat.recovery.newChatHint":
|
|
105
105
|
"This run can be continued in a new chat.",
|
|
106
|
-
"agentChat.recovery.reconnectBuilder": "
|
|
107
|
-
"agentChat.recovery.connectingBuilder": "
|
|
106
|
+
"agentChat.recovery.reconnectBuilder": "Use Builder.io",
|
|
107
|
+
"agentChat.recovery.connectingBuilder": "Setting up Builder.io",
|
|
108
108
|
"agentChat.error.stopped": "The agent stopped before finishing",
|
|
109
109
|
"agentChat.error.failed": "The agent run failed before it finished.",
|
|
110
110
|
"agentChat.limit.reached": "Step limit reached",
|
|
@@ -564,7 +564,7 @@ describe("run recovery surfaces", () => {
|
|
|
564
564
|
});
|
|
565
565
|
|
|
566
566
|
expect(container.textContent).toContain("Connect AI");
|
|
567
|
-
expect(container.textContent).toContain("
|
|
567
|
+
expect(container.textContent).toContain("Use Builder.io");
|
|
568
568
|
expect(container.textContent).toContain("Custom keys");
|
|
569
569
|
expect(container.textContent).not.toContain(
|
|
570
570
|
"The agent stopped before finishing",
|
|
@@ -601,7 +601,7 @@ describe("run recovery surfaces", () => {
|
|
|
601
601
|
);
|
|
602
602
|
});
|
|
603
603
|
|
|
604
|
-
expect(container.textContent).toContain("
|
|
604
|
+
expect(container.textContent).toContain("Use Builder.io");
|
|
605
605
|
expect(container.textContent).not.toContain("Connect AI");
|
|
606
606
|
expect(container.textContent).not.toContain("Custom keys");
|
|
607
607
|
});
|
|
@@ -620,7 +620,7 @@ describe("run recovery surfaces", () => {
|
|
|
620
620
|
});
|
|
621
621
|
|
|
622
622
|
expect(container.textContent).toContain("Connect AI");
|
|
623
|
-
expect(container.textContent).toContain("
|
|
623
|
+
expect(container.textContent).toContain("Use Builder.io");
|
|
624
624
|
|
|
625
625
|
const customKeysLink = container.querySelector<HTMLAnchorElement>(
|
|
626
626
|
'a[href="/settings/keys"]',
|
|
@@ -856,7 +856,7 @@ describe("run recovery surfaces", () => {
|
|
|
856
856
|
);
|
|
857
857
|
});
|
|
858
858
|
|
|
859
|
-
expect(container.textContent).toContain("
|
|
859
|
+
expect(container.textContent).toContain("Use Builder.io");
|
|
860
860
|
expect(container.textContent).toContain("Custom keys");
|
|
861
861
|
|
|
862
862
|
const retryButton = container.querySelector<HTMLButtonElement>(
|
|
@@ -1060,7 +1060,7 @@ describe("run recovery surfaces", () => {
|
|
|
1060
1060
|
});
|
|
1061
1061
|
|
|
1062
1062
|
expect(container.textContent).toContain("Connect AI");
|
|
1063
|
-
expect(container.textContent).toContain("
|
|
1063
|
+
expect(container.textContent).toContain("Use Builder.io");
|
|
1064
1064
|
expect(container.textContent).not.toContain("The agent hit an error");
|
|
1065
1065
|
});
|
|
1066
1066
|
|
|
@@ -130,13 +130,15 @@ const messages: ToolkitAgentChatTranslation = {
|
|
|
130
130
|
"onboarding.builderActiveCredits":
|
|
131
131
|
"مضمّنة مع أرصدة Builder.io المجانية النشطة",
|
|
132
132
|
"onboarding.builderCredits": "مضمّنة مع أرصدة Builder.io المجانية",
|
|
133
|
+
"onboarding.builderIncludedFreeWithAccount": "مُضمّن مجانًا مع حساب Builder.io",
|
|
134
|
+
"onboarding.builderMonthlyCredits": "60 رصيد Agent شهريًا",
|
|
133
135
|
"onboarding.builderActivateTitle": "تفعيل الأرصدة المجانية",
|
|
134
136
|
"onboarding.builderAccountExistsTitle": "لديك حساب Builder.io بالفعل",
|
|
135
|
-
"onboarding.builderAccountExistsDescription": "سجّل الدخول
|
|
137
|
+
"onboarding.builderAccountExistsDescription": "سجّل الدخول لاستخدام حسابك.",
|
|
136
138
|
"onboarding.builderActivationDescription":
|
|
137
139
|
"سننشئ حساب Builder.io الخاص بك تلقائيًا بنقرة واحدة.",
|
|
138
140
|
"onboarding.builderOrgActivationDescription":
|
|
139
|
-
"سننشئ حساب Builder.io الخاص بك بنقرة واحدة
|
|
141
|
+
"سننشئ حساب Builder.io الخاص بك بنقرة واحدة ليتمكن مؤسستك من استخدامه.",
|
|
140
142
|
"onboarding.builderCreateAndActivate": "إنشاء وتفعيل",
|
|
141
143
|
"onboarding.builderConsentPrefix": "بإنشاء حساب Builder.io، فإنك توافق على",
|
|
142
144
|
"onboarding.builderTerms": "شروط الخدمة",
|
|
@@ -144,7 +146,7 @@ const messages: ToolkitAgentChatTranslation = {
|
|
|
144
146
|
"onboarding.builderConsentAnd": "و",
|
|
145
147
|
"onboarding.builderExistingAccount": "لدي حساب Builder.io",
|
|
146
148
|
"onboarding.builderActivating": "جارٍ تفعيل أرصدة Builder.io المجانية",
|
|
147
|
-
"onboarding.builderConnecting": "جارٍ
|
|
149
|
+
"onboarding.builderConnecting": "جارٍ إعداد أرصدة Builder.io المجانية",
|
|
148
150
|
"onboarding.builderProvisioningDescription":
|
|
149
151
|
"جارٍ إنشاء حساب Builder.io الخاص بك أو إعادة استخدامه. يستغرق ذلك عادةً بضع ثوانٍ.",
|
|
150
152
|
"onboarding.builderConnectionDescription":
|
|
@@ -159,8 +161,8 @@ const messages: ToolkitAgentChatTranslation = {
|
|
|
159
161
|
"onboarding.fileStorage.title": "اختر تخزين الملفات",
|
|
160
162
|
"onboarding.fileStorage.statusUnavailable": "تعذّر التحقق من التخزين",
|
|
161
163
|
"onboarding.fileStorage.description":
|
|
162
|
-
"
|
|
163
|
-
"onboarding.fileStorage.reconnectBuilder": "
|
|
164
|
+
"استخدم Builder.io (مجانًا) أو أعدّ تخزين كائنات متوافقًا مع S3 خاصًا بك.",
|
|
165
|
+
"onboarding.fileStorage.reconnectBuilder": "استخدم Builder.io",
|
|
164
166
|
"onboarding.fileStorage.custom": "استخدم مفاتيح مخصصة",
|
|
165
167
|
"onboarding.fileStorage.customDescription":
|
|
166
168
|
"اضبط حاوية متوافقة مع S3 باستخدام عنوان URL عام ثابت.",
|
|
@@ -383,9 +385,9 @@ const messages: ToolkitAgentChatTranslation = {
|
|
|
383
385
|
"composer.closePreview": "إغلاق المعاينة",
|
|
384
386
|
"composer.configureProviderKeys": "إعداد Anthropic أو OpenAI أو مزوّد آخر",
|
|
385
387
|
"composer.connectAbove": "اتصل بالذكاء الاصطناعي أعلاه للمتابعة...",
|
|
386
|
-
"composer.connectBuilder": "
|
|
388
|
+
"composer.connectBuilder": "استخدم Builder.io",
|
|
387
389
|
"composer.connectKeys": "ربط المفاتيح",
|
|
388
|
-
"composer.connectingBuilder": "جارٍ
|
|
390
|
+
"composer.connectingBuilder": "جارٍ إعداد Builder.io…",
|
|
389
391
|
"composer.costHigher": "تكلفة أعلى",
|
|
390
392
|
"composer.costLower": "تكلفة أقل",
|
|
391
393
|
"composer.costMedium": "تكلفة متوسطة",
|
|
@@ -511,7 +513,7 @@ const messages: ToolkitAgentChatTranslation = {
|
|
|
511
513
|
"voice.dictation.start": "إملاء ({{shortcut}})",
|
|
512
514
|
"voice.dictation.stopRecording": "إيقاف التسجيل",
|
|
513
515
|
"voice.dictation.transcribing": "جارٍ النسخ…",
|
|
514
|
-
"voiceMode.connectBuilder": "
|
|
516
|
+
"voiceMode.connectBuilder": "استخدم Builder.io",
|
|
515
517
|
"voiceMode.end": "إنهاء الوضع الصوتي",
|
|
516
518
|
"voiceMode.entryButtonLabel": "استخدام الميكروفون",
|
|
517
519
|
"voiceMode.errors.channelDisconnected":
|
|
@@ -564,7 +566,15 @@ const messages: ToolkitAgentChatTranslation = {
|
|
|
564
566
|
"voiceMode.settings.voiceDescriptions.verse": "معبّر ومتعدد الاستخدامات",
|
|
565
567
|
"voiceMode.settings.voiceStyle": "نمط الصوت",
|
|
566
568
|
"voiceMode.setupDescription":
|
|
567
|
-
"
|
|
569
|
+
"استخدم Builder.io للصوت المُدار مع أرصدة مجانية، أو أضف مفاتيحك الخاصة.",
|
|
570
|
+
"transcription.builderCtaDescription":
|
|
571
|
+
"استخدم Builder.io للحصول على نسخ صوتي أعلى جودة مع أرصدة مجانية ومن دون مفتاح API.",
|
|
572
|
+
"voiceMode.googleRealtimeDescription":
|
|
573
|
+
"بيانات اعتماد Google مُعدّة. استخدم Builder.io (الخطة المجانية متاحة) لإنشاء جلسة الوقت الفعلي المُدارة.",
|
|
574
|
+
"voiceMode.serviceAccountRealtimeDescription":
|
|
575
|
+
"ملف JSON لحساب الخدمة مُعدّ. استخدم Builder.io (الخطة المجانية متاحة) لإنشاء جلسة WebSocket مُدارة في الوقت الفعلي.",
|
|
576
|
+
"voiceMode.builderGeminiDescription":
|
|
577
|
+
"استخدم Builder.io للنسخ الصوتي عبر Gemini Flash-Lite وتنظيف النص عبر Luna. لا حاجة إلى مفتاح Google.",
|
|
568
578
|
"voiceMode.setupTitle": "إعداد الوضع الصوتي",
|
|
569
579
|
"voiceMode.showChat": "إظهار المحادثة",
|
|
570
580
|
"voiceMode.start": "بدء محادثة صوتية",
|
|
@@ -594,7 +604,7 @@ const messages: ToolkitAgentChatTranslation = {
|
|
|
594
604
|
"errorMessages.attachmentPasswordProtected":
|
|
595
605
|
"ملف PDF هذا محمي بكلمة مرور، لذا لا يمكن قراءته. أزل الحماية بكلمة المرور أو الصق النص المطلوب، ثم أعد المحاولة.",
|
|
596
606
|
"errorMessages.builderAuthentication":
|
|
597
|
-
"رفض Builder بيانات الاعتماد المتصلة.
|
|
607
|
+
"رفض Builder بيانات الاعتماد المتصلة. استخدم Builder.io من الإعدادات مرة أخرى، ثم أعد المحاولة.",
|
|
598
608
|
"errorMessages.builderModelUnauthorized":
|
|
599
609
|
"رفض المزوّد الذي يشغّل هذا النموذج الطلب. اختر نموذجًا آخر، ثم أعد المحاولة.",
|
|
600
610
|
"errorMessages.errorPrefix": "خطأ: {{message}}",
|
|
@@ -621,7 +631,7 @@ const messages: ToolkitAgentChatTranslation = {
|
|
|
621
631
|
"errorMessages.malformedRequestAttachment":
|
|
622
632
|
"رفض النموذج ملفًا مرفقًا، لذلك لم تُرسل هذه الرسالة إطلاقًا. أزل المرفق وأعد المحاولة — تُقرأ ملفات PDF والنصوص العادية وصور JPEG وPNG وGIF وWebP مباشرةً، أما الصيغ الأخرى فيجب رفعها والإشارة إليها برابط.",
|
|
623
633
|
"errorMessages.noProviderConnected":
|
|
624
|
-
"لا يوجد
|
|
634
|
+
"لا يوجد موفّر LLM متصل. افتح الإعدادات > الوكيل > موفّرو الذكاء الاصطناعي، ثم استخدم Builder.io (الخطة المجانية متاحة) أو أضف مفتاح موفّر.",
|
|
625
635
|
"errorMessages.openBuilderSpaceSettings": "فتح إعدادات مساحة Builder",
|
|
626
636
|
"errorMessages.providerAuthentication":
|
|
627
637
|
"رفض مزوّد النموذج مفتاح API المحفوظ. حدّث المفتاح من الإعدادات ← عمليات التكامل ← مفاتيح API، ثم أعد المحاولة.",
|
|
@@ -1102,7 +1112,7 @@ const messages: ToolkitAgentChatTranslation = {
|
|
|
1102
1112
|
"queue.steerHint": "إرسال هذه الرسالة التالية",
|
|
1103
1113
|
"queue.moreActions": "إجراءات إضافية",
|
|
1104
1114
|
"queue.moveToTop": "نقل إلى الأعلى",
|
|
1105
|
-
"recovery.connectingBuilder": "جارٍ
|
|
1115
|
+
"recovery.connectingBuilder": "جارٍ إعداد Builder.io",
|
|
1106
1116
|
"recovery.copyDebug": "نسخ معلومات التصحيح",
|
|
1107
1117
|
"recovery.copyFailed": "فشل النسخ",
|
|
1108
1118
|
"recovery.retryAttachmentUnavailable":
|
|
@@ -1112,7 +1122,7 @@ const messages: ToolkitAgentChatTranslation = {
|
|
|
1112
1122
|
"recovery.credentialRejected":
|
|
1113
1123
|
"رفض مزوّد النموذج بيانات الاعتماد المحفوظة. حدّث اتصال Builder.io أو مفتاح المزوّد، ثم أعد محاولة إرسال هذه الرسالة.",
|
|
1114
1124
|
"codeRequired.builderAgentNotConnected":
|
|
1115
|
-
"خدمة Builder Cloud Agents غير متصلة.
|
|
1125
|
+
"خدمة Builder Cloud Agents غير متصلة. استخدم Builder.io من الإعدادات لتنفيذ عملية تغيير التعليمات البرمجية المستضافة هذه. تظل مفاتيح مزوّدي النماذج صالحة للدردشة وميزات الذكاء الاصطناعي الأخرى، لكنها لا تمنح صلاحية استخدام Builder Cloud Agent.",
|
|
1116
1126
|
"recovery.diagnoseRetry": "تشخيص المشكلة وإعادة المحاولة",
|
|
1117
1127
|
"recovery.forkDescription": "تفريع هذه المحادثة إلى سلسلة محادثة منفصلة.",
|
|
1118
1128
|
"recovery.forkFailed": "تعذّر تفريع هذه المحادثة. جرّب بدء محادثة جديدة.",
|
|
@@ -1133,7 +1143,7 @@ const messages: ToolkitAgentChatTranslation = {
|
|
|
1133
1143
|
"تعذّر الوصول إلى الخادم للتحقق مما إذا كان الوكيل لا يزال يعمل. أرسل رسالتك مجددًا لإعادة المحاولة.",
|
|
1134
1144
|
"recovery.streamEnded":
|
|
1135
1145
|
"انتهى تدفق الوكيل السابق أثناء استرداد التشغيل. تابع أو أعد المحاولة لإعادة الاتصال بالتشغيل.",
|
|
1136
|
-
"recovery.reconnectBuilder": "
|
|
1146
|
+
"recovery.reconnectBuilder": "استخدم Builder.io",
|
|
1137
1147
|
"secrets.addCustomKeyNamed": 'إضافة "{{name}}" كمفتاح مخصص',
|
|
1138
1148
|
"secrets.chooseKey": "اختر مفتاحًا",
|
|
1139
1149
|
"secrets.customKey": "مفتاح مخصص",
|
|
@@ -1178,7 +1188,9 @@ const messages: ToolkitAgentChatTranslation = {
|
|
|
1178
1188
|
"setup.builderOrOwnKeys":
|
|
1179
1189
|
"استخدم Builder.io (بأرصدة مجانية)، أو أضف مفاتيح مزوّديك الخاصة.",
|
|
1180
1190
|
"setup.connectAi": "اتصال بالذكاء الاصطناعي",
|
|
1181
|
-
"setup.connectBuilder": "
|
|
1191
|
+
"setup.connectBuilder": "استخدم Builder.io",
|
|
1192
|
+
"setup.connectionsDescription":
|
|
1193
|
+
"أدر حالة الإعداد وإمكانية الوصول إلى Builder.io وأسرار التطبيق واتصالات مساحة العمل من مكان واحد.",
|
|
1182
1194
|
"setup.connectPlaceholder": "اتصل بالذكاء الاصطناعي لبدء المحادثة...",
|
|
1183
1195
|
"setup.connectToChat": "اتصل بالذكاء الاصطناعي للمحادثة",
|
|
1184
1196
|
"setup.connectToStart": "اتصل بالذكاء الاصطناعي لبدء المحادثة",
|
|
@@ -2120,7 +2132,7 @@ const messages: ToolkitAgentChatTranslation = {
|
|
|
2120
2132
|
"settingsShell.appGroup.whatsNewViewAll": "عرض كل التحديثات",
|
|
2121
2133
|
"settingsShell.backToApp": "العودة إلى {{app}}",
|
|
2122
2134
|
"settingsShell.breadcrumbLabel": "مسار التنقل",
|
|
2123
|
-
"settingsShell.builder.connect": "
|
|
2135
|
+
"settingsShell.builder.connect": "استخدم Builder.io",
|
|
2124
2136
|
"settingsShell.builder.connected": "مرتبط",
|
|
2125
2137
|
"settingsShell.builder.connectedTo": "مرتبط · {{space}}",
|
|
2126
2138
|
"settingsShell.builder.connection": "الاتصال",
|
|
@@ -2131,6 +2143,12 @@ const messages: ToolkitAgentChatTranslation = {
|
|
|
2131
2143
|
"settingsShell.builder.disconnectFailed": "تعذّر قطع اتصال Builder.io.",
|
|
2132
2144
|
"settingsShell.builder.disconnectTitle": "هل تريد قطع اتصال Builder.io؟",
|
|
2133
2145
|
"settingsShell.builder.grantsFailed": "تعذّرت قراءة اتصالات Builder.io.",
|
|
2146
|
+
"settingsShell.builder.setupStartFailed":
|
|
2147
|
+
"تعذّر بدء إعداد Builder.io. حدّث هذه الصفحة وحاول مرة أخرى.",
|
|
2148
|
+
"settingsShell.builder.setupHostFailed":
|
|
2149
|
+
"تعذّر فتح Builder من مضيف المحادثة هذا. افتح التطبيق في علامة تبويب بالمتصفح وأعد محاولة إعداد Builder.io (الخطة المجانية متاحة).",
|
|
2150
|
+
"settingsShell.builder.setupFailed":
|
|
2151
|
+
"لم يكتمل إعداد Builder.io. حاول مرة أخرى، أو استخدم مفاتيحك الخاصة.",
|
|
2134
2152
|
"settingsShell.builder.loss.defaultStops":
|
|
2135
2153
|
"تتوقف المحادثات حتى تضيف موفرًا للمؤسسة.",
|
|
2136
2154
|
"settingsShell.builder.loss.defaultSwitches":
|
|
@@ -2145,9 +2163,9 @@ const messages: ToolkitAgentChatTranslation = {
|
|
|
2145
2163
|
"settingsShell.builder.needsReconnect": "يجب إعادة ربطه.",
|
|
2146
2164
|
"settingsShell.builder.orgFallback": "مؤسستك",
|
|
2147
2165
|
"settingsShell.builder.orgNotConnectedAdmin":
|
|
2148
|
-
"غير
|
|
2166
|
+
"غير متصل. استخدم Builder.io لتمكين الجميع في {{org}} من الوصول.",
|
|
2149
2167
|
"settingsShell.builder.orgNotConnectedMember":
|
|
2150
|
-
"غير
|
|
2168
|
+
"غير متصل. يمكن لمالك أو مسؤول تمكين Builder.io للجميع.",
|
|
2151
2169
|
"settingsShell.builder.organization": "المؤسسة",
|
|
2152
2170
|
"settingsShell.builder.personal": "شخصي",
|
|
2153
2171
|
"settingsShell.builder.personalConnected": "مرتبط. أنت وحدك تستخدمه.",
|
|
@@ -2158,7 +2176,7 @@ const messages: ToolkitAgentChatTranslation = {
|
|
|
2158
2176
|
"settingsShell.builder.personalConnectedToOverOrg":
|
|
2159
2177
|
"مرتبط · {{space}}. أنت وحدك تستخدمه بدلًا من اتصال المؤسسة.",
|
|
2160
2178
|
"settingsShell.builder.personalNotConnected":
|
|
2161
|
-
"
|
|
2179
|
+
"استخدم حساب Builder.io الخاص بك. أنت وحدك تستخدمه.",
|
|
2162
2180
|
"settingsShell.builder.personalRestricted":
|
|
2163
2181
|
"قيّد المالكون والمسؤولون مفاتيح API الشخصية.",
|
|
2164
2182
|
"settingsShell.builder.personalRestrictedUnused":
|
|
@@ -2687,7 +2705,11 @@ const messages: ToolkitAgentChatTranslation = {
|
|
|
2687
2705
|
"settingsInfra.builderConnected":
|
|
2688
2706
|
"متصل. رصيد حسابك يشغّل كل خدمة عليها علامة Builder.io.",
|
|
2689
2707
|
"settingsInfra.builderNotConnected":
|
|
2690
|
-
"غير متصل. أعدّ كل خدمة بنفسك، أو
|
|
2708
|
+
"غير متصل. أعدّ كل خدمة بنفسك، أو استخدم Builder.io لتطبيق أرصدة حسابك.",
|
|
2709
|
+
"settingsInfra.builderOverrideDescription":
|
|
2710
|
+
"الرجوع إلى إعدادات النشر متاح. استخدم حساب Builder.io الخاص بك لتجاوزه.",
|
|
2711
|
+
"settingsInfra.builderStorageHint":
|
|
2712
|
+
"يحافظ تخزين الكائنات على الملفات المرفوعة ويجعل عناوين URL الخاصة بها قابلة لإعادة الاستخدام خلال المحادثة. استخدم Builder.io أو حاوية متوافقة مع S3 أدناه.",
|
|
2691
2713
|
"settingsInfra.builderUnknown": "تعذّر التحقق من اتصال Builder.io.",
|
|
2692
2714
|
"settingsInfra.manage": "إدارة",
|
|
2693
2715
|
"settingsInfra.connect": "توصيل",
|
|
@@ -2858,13 +2880,13 @@ const messages: ToolkitAgentChatTranslation = {
|
|
|
2858
2880
|
"settingsModel.builderConnected": "متصل · {{space}}",
|
|
2859
2881
|
"settingsModel.builderConnectedPlain": "متصل",
|
|
2860
2882
|
"settingsModel.builderOrgNotConnectedAdmin":
|
|
2861
|
-
"غير متصل.
|
|
2883
|
+
"غير متصل. استخدم Builder.io لتمكين الجميع في {{org}} من الوصول.",
|
|
2862
2884
|
"settingsModel.builderOrgNotConnectedMember":
|
|
2863
|
-
"غير متصل. يمكن لمالك أو مسؤول
|
|
2885
|
+
"غير متصل. يمكن لمالك أو مسؤول تمكين Builder.io للجميع.",
|
|
2864
2886
|
"settingsModel.builderPersonalConnect":
|
|
2865
|
-
"
|
|
2887
|
+
"استخدم حساب Builder.io الخاص بك للوصول إلى أرصدته.",
|
|
2866
2888
|
"settingsModel.builderPersonalInsteadOfOrg":
|
|
2867
|
-
"
|
|
2889
|
+
"استخدم حساب Builder.io الخاص بك بدلًا من اتصال المؤسسة.",
|
|
2868
2890
|
"settingsModel.builderPersonalOverOrg":
|
|
2869
2891
|
"متصل · {{space}}. يُستخدم بدلًا من اتصال المؤسسة.",
|
|
2870
2892
|
"settingsModel.builderPersonalOverOrgPlain":
|
|
@@ -2908,8 +2930,6 @@ const messages: ToolkitAgentChatTranslation = {
|
|
|
2908
2930
|
"settingsModel.checkingSaved": "جارٍ التحقق من المفتاح المحفوظ",
|
|
2909
2931
|
"settingsModel.chooseModel": "اختر نموذجًا",
|
|
2910
2932
|
"settingsModel.clear": "مسح",
|
|
2911
|
-
"settingsModel.connect": "توصيل",
|
|
2912
|
-
"settingsModel.connecting": "جارٍ التوصيل…",
|
|
2913
2933
|
"settingsModel.defaultModelDescription":
|
|
2914
2934
|
"يُستخدم في كل تطبيق ما لم يحدد التطبيق نموذجه الخاص.",
|
|
2915
2935
|
"settingsModel.defaultModelNeedsProvider": "أضف مزوّدًا لاختيار نموذج افتراضي.",
|