@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.
Files changed (133) hide show
  1. package/dist/app/chat/AgentKitAssistantChat.js +2 -0
  2. package/dist/app/chat/AgentKitAssistantChat.js.map +1 -1
  3. package/dist/app/chat/AgentPanel.d.ts.map +1 -1
  4. package/dist/app/chat/AgentPanel.js +12 -99
  5. package/dist/app/chat/AgentPanel.js.map +1 -1
  6. package/dist/app/chat/ConnectBuilderCard.js +2 -2
  7. package/dist/app/chat/ConnectBuilderCard.js.map +1 -1
  8. package/dist/app/i18n/catalogs/ar-SA.d.ts.map +1 -1
  9. package/dist/app/i18n/catalogs/ar-SA.js +36 -26
  10. package/dist/app/i18n/catalogs/ar-SA.js.map +1 -1
  11. package/dist/app/i18n/catalogs/de-DE.d.ts.map +1 -1
  12. package/dist/app/i18n/catalogs/de-DE.js +36 -26
  13. package/dist/app/i18n/catalogs/de-DE.js.map +1 -1
  14. package/dist/app/i18n/catalogs/en-US.d.ts +36 -26
  15. package/dist/app/i18n/catalogs/en-US.d.ts.map +1 -1
  16. package/dist/app/i18n/catalogs/en-US.js +36 -26
  17. package/dist/app/i18n/catalogs/en-US.js.map +1 -1
  18. package/dist/app/i18n/catalogs/es-ES.d.ts.map +1 -1
  19. package/dist/app/i18n/catalogs/es-ES.js +36 -26
  20. package/dist/app/i18n/catalogs/es-ES.js.map +1 -1
  21. package/dist/app/i18n/catalogs/fr-FR.d.ts.map +1 -1
  22. package/dist/app/i18n/catalogs/fr-FR.js +36 -26
  23. package/dist/app/i18n/catalogs/fr-FR.js.map +1 -1
  24. package/dist/app/i18n/catalogs/hi-IN.d.ts.map +1 -1
  25. package/dist/app/i18n/catalogs/hi-IN.js +36 -26
  26. package/dist/app/i18n/catalogs/hi-IN.js.map +1 -1
  27. package/dist/app/i18n/catalogs/ja-JP.d.ts.map +1 -1
  28. package/dist/app/i18n/catalogs/ja-JP.js +36 -26
  29. package/dist/app/i18n/catalogs/ja-JP.js.map +1 -1
  30. package/dist/app/i18n/catalogs/ko-KR.d.ts.map +1 -1
  31. package/dist/app/i18n/catalogs/ko-KR.js +36 -26
  32. package/dist/app/i18n/catalogs/ko-KR.js.map +1 -1
  33. package/dist/app/i18n/catalogs/pt-BR.d.ts.map +1 -1
  34. package/dist/app/i18n/catalogs/pt-BR.js +36 -26
  35. package/dist/app/i18n/catalogs/pt-BR.js.map +1 -1
  36. package/dist/app/i18n/catalogs/zh-CN.d.ts.map +1 -1
  37. package/dist/app/i18n/catalogs/zh-CN.js +36 -26
  38. package/dist/app/i18n/catalogs/zh-CN.js.map +1 -1
  39. package/dist/app/i18n/catalogs/zh-TW.d.ts.map +1 -1
  40. package/dist/app/i18n/catalogs/zh-TW.js +36 -26
  41. package/dist/app/i18n/catalogs/zh-TW.js.map +1 -1
  42. package/dist/app/onboarding/FirstRunOnboarding.d.ts.map +1 -1
  43. package/dist/app/onboarding/FirstRunOnboarding.js +3 -5
  44. package/dist/app/onboarding/FirstRunOnboarding.js.map +1 -1
  45. package/dist/app/onboarding/NewWorkspaceAppFlow.d.ts.map +1 -1
  46. package/dist/app/onboarding/NewWorkspaceAppFlow.js +4 -2
  47. package/dist/app/onboarding/NewWorkspaceAppFlow.js.map +1 -1
  48. package/dist/app/onboarding/OnboardingPanel.d.ts.map +1 -1
  49. package/dist/app/onboarding/OnboardingPanel.js +3 -1
  50. package/dist/app/onboarding/OnboardingPanel.js.map +1 -1
  51. package/dist/app/settings/BuilderConnectPopover.d.ts +1 -0
  52. package/dist/app/settings/BuilderConnectPopover.d.ts.map +1 -1
  53. package/dist/app/settings/BuilderConnectPopover.js +11 -4
  54. package/dist/app/settings/BuilderConnectPopover.js.map +1 -1
  55. package/dist/app/settings/SettingsPanel.d.ts.map +1 -1
  56. package/dist/app/settings/SettingsPanel.js +16 -8
  57. package/dist/app/settings/SettingsPanel.js.map +1 -1
  58. package/dist/app/settings/VoiceTranscriptionSection.d.ts.map +1 -1
  59. package/dist/app/settings/VoiceTranscriptionSection.js +7 -6
  60. package/dist/app/settings/VoiceTranscriptionSection.js.map +1 -1
  61. package/dist/app/settings/infra/InfrastructureSettingsPage.js +2 -2
  62. package/dist/app/settings/infra/InfrastructureSettingsPage.js.map +1 -1
  63. package/dist/app/settings/model/ModelSettingsPage.js +4 -2
  64. package/dist/app/settings/model/ModelSettingsPage.js.map +1 -1
  65. package/dist/app/settings/useBuilderStatus.d.ts +1 -0
  66. package/dist/app/settings/useBuilderStatus.d.ts.map +1 -1
  67. package/dist/app/settings/useBuilderStatus.js +43 -29
  68. package/dist/app/settings/useBuilderStatus.js.map +1 -1
  69. package/dist/app/setup-connections/SetupConnectionsPage.d.ts.map +1 -1
  70. package/dist/app/setup-connections/SetupConnectionsPage.js +4 -2
  71. package/dist/app/setup-connections/SetupConnectionsPage.js.map +1 -1
  72. package/dist/app/setup-connections/useBuilderConnectCardController.d.ts +1 -1
  73. package/dist/app/setup-connections/useBuilderConnectCardController.d.ts.map +1 -1
  74. package/dist/app/setup-connections/useBuilderConnectCardController.js +7 -6
  75. package/dist/app/setup-connections/useBuilderConnectCardController.js.map +1 -1
  76. package/dist/app/transcription/BuilderTranscriptionCta.d.ts.map +1 -1
  77. package/dist/app/transcription/BuilderTranscriptionCta.js +3 -1
  78. package/dist/app/transcription/BuilderTranscriptionCta.js.map +1 -1
  79. package/dist/composer/MessageQueueDrawer.d.ts +1 -1
  80. package/dist/composer/MessageQueueDrawer.d.ts.map +1 -1
  81. package/dist/composer/MessageQueueDrawer.js +10 -1
  82. package/dist/composer/MessageQueueDrawer.js.map +1 -1
  83. package/dist/composer/PromptComposer.d.ts +1 -1
  84. package/dist/composer/TiptapComposer.d.ts +1 -1
  85. package/dist/composer/TiptapComposer.js +4 -4
  86. package/dist/composer/TiptapComposer.js.map +1 -1
  87. package/dist/composer/useRealtimeVoiceMode.js +2 -2
  88. package/dist/composer/useRealtimeVoiceMode.js.map +1 -1
  89. package/package.json +4 -4
  90. package/src/app/chat/AgentKitAssistantChat.spec.tsx +30 -5
  91. package/src/app/chat/AgentKitAssistantChat.tsx +1 -0
  92. package/src/app/chat/AgentPanel.tsx +33 -112
  93. package/src/app/chat/ConnectBuilderCard.tsx +2 -2
  94. package/src/app/chat/chat/run-recovery.spec.tsx +8 -8
  95. package/src/app/i18n/catalogs/ar-SA.ts +46 -26
  96. package/src/app/i18n/catalogs/de-DE.ts +47 -26
  97. package/src/app/i18n/catalogs/en-US.ts +47 -26
  98. package/src/app/i18n/catalogs/es-ES.ts +47 -26
  99. package/src/app/i18n/catalogs/fr-FR.ts +48 -26
  100. package/src/app/i18n/catalogs/hi-IN.ts +47 -26
  101. package/src/app/i18n/catalogs/ja-JP.ts +47 -26
  102. package/src/app/i18n/catalogs/ko-KR.ts +47 -26
  103. package/src/app/i18n/catalogs/pt-BR.ts +48 -26
  104. package/src/app/i18n/catalogs/zh-CN.ts +47 -26
  105. package/src/app/i18n/catalogs/zh-TW.ts +47 -26
  106. package/src/app/integrations/BuilderIntegrationPage.spec.tsx +11 -7
  107. package/src/app/onboarding/FirstRunOnboarding.spec.tsx +24 -12
  108. package/src/app/onboarding/FirstRunOnboarding.tsx +14 -16
  109. package/src/app/onboarding/NewWorkspaceAppFlow.spec.ts +23 -7
  110. package/src/app/onboarding/NewWorkspaceAppFlow.tsx +4 -2
  111. package/src/app/onboarding/OnboardingPanel.tsx +4 -8
  112. package/src/app/settings/BuilderConnectPopover.spec.tsx +41 -1
  113. package/src/app/settings/BuilderConnectPopover.tsx +21 -4
  114. package/src/app/settings/SettingsPanel.connections.spec.tsx +2 -2
  115. package/src/app/settings/SettingsPanel.tsx +16 -8
  116. package/src/app/settings/VoiceTranscriptionSection.tsx +8 -7
  117. package/src/app/settings/infra/InfrastructureSettingsPage.spec.tsx +4 -4
  118. package/src/app/settings/infra/InfrastructureSettingsPage.tsx +5 -2
  119. package/src/app/settings/model/ModelSettingsPage.spec.tsx +7 -5
  120. package/src/app/settings/model/ModelSettingsPage.tsx +4 -2
  121. package/src/app/settings/useBuilderStatus.spec.tsx +82 -52
  122. package/src/app/settings/useBuilderStatus.ts +44 -54
  123. package/src/app/setup-connections/BuilderConnectCard.spec.tsx +11 -11
  124. package/src/app/setup-connections/SetupConnectionsPage.tsx +4 -2
  125. package/src/app/setup-connections/useBuilderConnectCardController.spec.tsx +19 -6
  126. package/src/app/setup-connections/useBuilderConnectCardController.ts +10 -9
  127. package/src/app/transcription/BuilderTranscriptionCta.tsx +4 -2
  128. package/src/composer/MessageQueueDrawer.spec.tsx +108 -0
  129. package/src/composer/MessageQueueDrawer.tsx +22 -2
  130. package/src/composer/PromptComposer.tsx +1 -1
  131. package/src/composer/RealtimeVoiceMode.spec.tsx +4 -4
  132. package/src/composer/TiptapComposer.tsx +5 -5
  133. 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
- withBuilderConnectTrackingParams,
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 = "Use Builder",
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?: string;
637
+ secondaryCtaLabel: string;
718
638
  secondaryCtaHref?: string;
719
639
  compact?: boolean;
720
640
  }) {
721
- const { connectUrl: builderConnectUrl } = useBuilderConnectUrl();
722
- const builderHref = secondaryCtaHref
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
- : builderConnectUrl
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
- <a
773
- href={builderHref}
774
- target="_blank"
775
- rel="noreferrer"
776
- onClick={() => {
777
- trackEvent("builder connect clicked", {
778
- feature: "builder",
779
- stage: "client",
780
- source: "code_access_unavailable_panel",
781
- flow: "background_agent",
782
- connect_url_kind: builderConnectUrl ? "provided" : "fallback",
783
- });
784
- }}
785
- 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"
786
- >
787
- {secondaryCtaLabel}
788
- </a>
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 ?? t("agentPanel.useBuilder");
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 = "Connect Builder.io";
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
- "Connect Builder"
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": "Connect Builder.io",
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": "Reconnect Builder.io",
107
- "agentChat.recovery.connectingBuilder": "Connecting Builder.io",
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("Connect Builder.io");
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("Reconnect Builder.io");
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("Connect Builder.io");
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("Connect Builder.io");
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("Connect Builder.io");
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": "جارٍ الاتصال بأرصدة Builder.io المجانية",
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
- "اختر تخزين Builder المُدار أو مفاتيح تخزين مخصصة لحاويتك المتوافقة مع S3.",
163
- "onboarding.fileStorage.reconnectBuilder": "أعد ربط Builder.io",
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": "الاتصال بـ Builder.io",
388
+ "composer.connectBuilder": "استخدم Builder.io",
387
389
  "composer.connectKeys": "ربط المفاتيح",
388
- "composer.connectingBuilder": "جارٍ الاتصال بـ Builder.io…",
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": "الاتصال بـ Builder.io",
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
- "اتصل بـ Builder.io لاستخدام الصوت المُدار بأرصدة مجانية، أو أضف مفاتيحك الخاصة.",
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 بيانات الاعتماد المتصلة. أعد الاتصال بـ Builder.io من الإعدادات، ثم أعد المحاولة.",
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
- "لا يوجد مزوّد LLM متصل. افتح الإعدادات > الوكيل > مزوّدو الذكاء الاصطناعي، ثم اربط Builder.io (تتوفر خطة مجانية) أو أضف مفتاح مزوّد.",
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": "جارٍ الاتصال بـ Builder.io",
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 غير متصلة. اتصل بـ Builder.io من الإعدادات لتنفيذ عملية تغيير التعليمات البرمجية المستضافة هذه. تظل مفاتيح مزوّدي النماذج صالحة للدردشة وميزات الذكاء الاصطناعي الأخرى، لكنها لا تمنح صلاحية استخدام Builder Cloud Agent.",
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": "إعادة الاتصال بـ Builder.io",
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": "الاتصال بـ Builder.io",
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
- "غير مرتبط. عند ربطه يمكن لكل من في {{org}} استخدامه.",
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
- "غير متصل. أعدّ كل خدمة بنفسك، أو صِل Builder.io لاستخدام رصيد حسابك.",
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
- "غير متصل. عند توصيله، يمكن للجميع في {{org}} استخدامه.",
2883
+ "غير متصل. استخدم Builder.io لتمكين الجميع في {{org}} من الوصول.",
2862
2884
  "settingsModel.builderOrgNotConnectedMember":
2863
- "غير متصل. يمكن لمالك أو مسؤول توصيله.",
2885
+ "غير متصل. يمكن لمالك أو مسؤول تمكين Builder.io للجميع.",
2864
2886
  "settingsModel.builderPersonalConnect":
2865
- "صِل حسابك الخاص لاستخدام أرصدة Builder.io الخاصة بك.",
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": "أضف مزوّدًا لاختيار نموذج افتراضي.",