@uipath/apollo-vertex 0.1.0 → 0.3.0

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 (113) hide show
  1. package/README.md +14 -21
  2. package/dist/entries/index.d.ts +96 -0
  3. package/dist/entries/index.js +72 -1
  4. package/dist/lib/i18n.d.ts +11 -0
  5. package/dist/lib/i18n.js +32 -2
  6. package/dist/lib/vertex-translation.d.ts +14 -0
  7. package/dist/lib/vertex-translation.js +4 -0
  8. package/dist/registry/ai-caveat/ai-caveat.js +2 -2
  9. package/dist/registry/ai-chat/charts/no-data-message.js +2 -2
  10. package/dist/registry/ai-chat/charts/tool-resolution-error.js +2 -2
  11. package/dist/registry/ai-chat/components/ai-chat-code-block.js +2 -2
  12. package/dist/registry/ai-chat/components/ai-chat-empty-state.js +2 -2
  13. package/dist/registry/ai-chat/components/ai-chat-error-banner.js +2 -2
  14. package/dist/registry/ai-chat/components/ai-chat-header.js +2 -2
  15. package/dist/registry/ai-chat/components/ai-chat-image-preview.js +2 -2
  16. package/dist/registry/ai-chat/components/ai-chat-input.js +2 -2
  17. package/dist/registry/ai-chat/components/ai-chat-loading.js +2 -2
  18. package/dist/registry/ai-chat/components/ai-chat-message-actions.js +3 -3
  19. package/dist/registry/ai-chat/components/ai-chat-message.js +2 -2
  20. package/dist/registry/ai-chat/components/ai-chat-pending-files.js +2 -2
  21. package/dist/registry/ai-chat/components/ai-chat-scroll-to-bottom-button.js +2 -2
  22. package/dist/registry/ai-chat/components/ai-chat-selection-menu.js +2 -2
  23. package/dist/registry/ai-chat/components/ai-chat.js +2 -2
  24. package/dist/registry/bar-chart/bar-chart-with-adapter.js +2 -2
  25. package/dist/registry/breadcrumb/breadcrumb.js +2 -2
  26. package/dist/registry/carousel/carousel.js +3 -3
  27. package/dist/registry/charts-core/error-boundary.js +2 -2
  28. package/dist/registry/combobox/combobox.js +2 -2
  29. package/dist/registry/confidence-signal/confidence-signal.js +2 -2
  30. package/dist/registry/data-fabric-adapter/contract.d.ts +1 -1
  31. package/dist/registry/data-fabric-adapter/schemas/query-schema.d.ts +2 -2
  32. package/dist/registry/data-table/data-table-expand-toggle.js +2 -2
  33. package/dist/registry/data-table/data-table-pagination.js +2 -2
  34. package/dist/registry/data-table/data-table-search.js +2 -2
  35. package/dist/registry/data-table/data-table-view-options.js +2 -2
  36. package/dist/registry/data-table/data-table.js +2 -2
  37. package/dist/registry/date-picker/date-picker.js +2 -2
  38. package/dist/registry/dialog/dialog.js +2 -2
  39. package/dist/registry/distribution-chart/distribution-chart-with-adapter.js +2 -2
  40. package/dist/registry/filter-dropdown/filter-dropdown.js +2 -2
  41. package/dist/registry/form/use-translated-errors.js +2 -2
  42. package/dist/registry/form-wizard/form-wizard-nav.js +2 -2
  43. package/dist/registry/kpi-chart/kpi-chart-with-adapter.js +2 -2
  44. package/dist/registry/line-chart/line-chart-with-adapter.js +2 -2
  45. package/dist/registry/multi-line-chart/multi-line-chart-with-adapter.js +2 -2
  46. package/dist/registry/pagination/pagination.js +4 -4
  47. package/dist/registry/sheet/sheet.js +2 -2
  48. package/dist/registry/shell/group-membership-guard.js +1 -0
  49. package/dist/registry/shell/group-membership-screens.js +4 -3
  50. package/dist/registry/shell/shell-auth-provider.js +1 -0
  51. package/dist/registry/shell/shell-company.js +3 -3
  52. package/dist/registry/shell/shell-layout.js +1 -0
  53. package/dist/registry/shell/shell-locale-provider.js +3 -2
  54. package/dist/registry/shell/shell-login.js +3 -2
  55. package/dist/registry/shell/shell-sidebar.js +3 -2
  56. package/dist/registry/shell/shell-text.js +4 -2
  57. package/dist/registry/shell/shell-theme-provider.js +1 -0
  58. package/dist/registry/shell/shell-user-profile-menu-items.js +2 -2
  59. package/dist/registry/shell/shell-user-profile.js +2 -2
  60. package/dist/registry/shell/shell-user-provider.js +1 -0
  61. package/dist/registry/shell/shell.js +1 -0
  62. package/dist/registry/shell/use-group-id.js +1 -0
  63. package/dist/registry/shell/use-group-members.js +1 -0
  64. package/dist/registry/shell/use-is-group-member.js +1 -0
  65. package/dist/registry/sidebar/sidebar-trigger.js +2 -2
  66. package/dist/registry/sidebar/sidebar.js +2 -2
  67. package/dist/registry/solution-tests/baseline-compare.js +2 -2
  68. package/dist/registry/solution-tests/delete-confirm-dialog.js +2 -2
  69. package/dist/registry/solution-tests/evaluators/case-evaluation/case-evaluation-result.js +7 -7
  70. package/dist/registry/solution-tests/evaluators/generic-evaluator-result.js +2 -2
  71. package/dist/registry/solution-tests/evaluators/ixp-extraction/internal/document-row.js +3 -3
  72. package/dist/registry/solution-tests/evaluators/ixp-extraction/internal/field-group.js +2 -2
  73. package/dist/registry/solution-tests/evaluators/ixp-extraction/internal/provenance-bar.js +2 -2
  74. package/dist/registry/solution-tests/evaluators/ixp-extraction/internal/summary-bar.js +2 -2
  75. package/dist/registry/solution-tests/evaluators/ixp-extraction/internal/verdict-badge.js +2 -2
  76. package/dist/registry/solution-tests/evaluators/ixp-extraction/ixp-extraction-result.js +2 -2
  77. package/dist/registry/solution-tests/expanded-agents-view.js +2 -2
  78. package/dist/registry/solution-tests/expanded-run-tests-view.js +2 -2
  79. package/dist/registry/solution-tests/expanded-run-tests.js +2 -2
  80. package/dist/registry/solution-tests/kpi-bar.js +2 -2
  81. package/dist/registry/solution-tests/outputs/case-evaluation/case-evaluation-output.js +3 -3
  82. package/dist/registry/solution-tests/outputs/ixp-extraction/ixp-output-result.js +5 -5
  83. package/dist/registry/solution-tests/process-results-viewer-dialog.js +2 -2
  84. package/dist/registry/solution-tests/result-expanded-content.js +2 -2
  85. package/dist/registry/solution-tests/run-confirm-dialog.js +2 -2
  86. package/dist/registry/solution-tests/run-details-agent-list.js +2 -2
  87. package/dist/registry/solution-tests/run-details-view.js +4 -4
  88. package/dist/registry/solution-tests/run-details.js +2 -2
  89. package/dist/registry/solution-tests/save-as-test-button.js +2 -2
  90. package/dist/registry/solution-tests/solution-tests-view.js +2 -2
  91. package/dist/registry/solution-tests/solution-tests.js +2 -2
  92. package/dist/registry/solution-tests/user-messages-view.js +3 -3
  93. package/dist/registry/solution-tests/version-delta-glyph.js +2 -2
  94. package/dist/registry/table-chart/table-chart-view.js +2 -2
  95. package/dist/registry/table-chart/table-chart-with-adapter.js +2 -2
  96. package/package.json +18 -87
  97. package/skills/use-vertex-components/SKILL.md +168 -0
  98. package/dist/entries/ai-chat/index.d.ts +0 -17
  99. package/dist/entries/ai-chat/index.js +0 -14
  100. package/dist/entries/charts/index.d.ts +0 -10
  101. package/dist/entries/charts/index.js +0 -10
  102. package/dist/entries/feature-flags/index.d.ts +0 -5
  103. package/dist/entries/feature-flags/index.js +0 -5
  104. package/dist/entries/feature-flags/proteus.d.ts +0 -1
  105. package/dist/entries/feature-flags/proteus.js +0 -2
  106. package/dist/entries/shell/entities.d.ts +0 -6
  107. package/dist/entries/shell/entities.js +0 -8
  108. package/dist/entries/shell/index.d.ts +0 -14
  109. package/dist/entries/shell/index.js +0 -14
  110. package/dist/entries/solution-tests/data.d.ts +0 -6
  111. package/dist/entries/solution-tests/data.js +0 -6
  112. package/dist/entries/solution-tests/index.d.ts +0 -36
  113. package/dist/entries/solution-tests/index.js +0 -21
@@ -1,6 +1,6 @@
1
1
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
2
  import { Globe, LogOut, Monitor, Moon, Sun } from "lucide-react";
3
- import { useTranslation } from "react-i18next";
3
+ import { useVertexTranslation } from "../../lib/vertex-translation.js";
4
4
  import { DropdownMenuItem, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger } from "../dropdown-menu/dropdown-menu.js";
5
5
  import { cn } from "../../lib/utils.js";
6
6
  import { useAuth } from "./shell-auth-provider.js";
@@ -8,7 +8,7 @@ import { LANGUAGE_CHANGED_EVENT, LOCALE_OPTIONS } from "./shell-constants.js";
8
8
  import { Text } from "./shell-text.js";
9
9
  import { useTheme } from "./shell-theme-provider.js";
10
10
  const UserProfileMenuItems = ()=>{
11
- const { t, i18n } = useTranslation();
11
+ const { t, i18n } = useVertexTranslation();
12
12
  const { logout } = useAuth();
13
13
  const { setTheme } = useTheme();
14
14
  const language = i18n.language;
@@ -1,13 +1,13 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { AnimatePresence, motion } from "framer-motion";
3
- import { useTranslation } from "react-i18next";
3
+ import { useVertexTranslation } from "../../lib/vertex-translation.js";
4
4
  import { Avatar, AvatarFallback } from "../avatar/avatar.js";
5
5
  import { DropdownMenu, DropdownMenuContent, DropdownMenuSeparator, DropdownMenuTrigger } from "../dropdown-menu/dropdown-menu.js";
6
6
  import { sidebarSpring } from "./shell-animations.js";
7
7
  import { UserProfileMenuItems } from "./shell-user-profile-menu-items.js";
8
8
  import { useUser } from "./shell-user-provider.js";
9
9
  const UserProfile = ({ isCollapsed, collapsedMenuSide = "top", collapsedMenuAlign = "start" })=>{
10
- const { t } = useTranslation();
10
+ const { t } = useVertexTranslation();
11
11
  const { user } = useUser();
12
12
  const userInitials = user ? user.name.split(" ").map((n)=>n[0]).join("").toUpperCase().slice(0, 2) : "U";
13
13
  const firstName = user?.first_name ?? t("business_user");
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsx } from "react/jsx-runtime";
2
3
  import { createContext, useContext, useEffect, useState } from "react";
3
4
  import { useAuth } from "./shell-auth-provider.js";
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsx, jsxs } from "react/jsx-runtime";
2
3
  import { useContext } from "react";
3
4
  import { Skeleton } from "../skeleton/skeleton.js";
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { useLiveQuery } from "@tanstack/react-db";
2
3
  import { useSolution } from "@uipath/vs-core";
3
4
  const useGroupId = ({ role, roleGroupMap })=>{
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { eq, useLiveQuery } from "@tanstack/react-db";
2
3
  import { useSolution } from "@uipath/vs-core";
3
4
  const useGroupMembers = ({ groupId })=>{
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { useQuery } from "@tanstack/react-query";
2
3
  import { useSolution } from "@uipath/vs-core";
3
4
  import { useAuth } from "./shell-auth-provider.js";
@@ -2,12 +2,12 @@
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { PanelLeftIcon } from "lucide-react";
4
4
  import "react";
5
- import { useTranslation } from "react-i18next";
5
+ import { useVertexTranslation } from "../../lib/vertex-translation.js";
6
6
  import { Button } from "../button/button.js";
7
7
  import { cn } from "../../lib/utils.js";
8
8
  import { useSidebar } from "./sidebar-provider.js";
9
9
  function SidebarTrigger({ className, onClick, ...props }) {
10
- const { t } = useTranslation();
10
+ const { t } = useVertexTranslation();
11
11
  const { toggleSidebar } = useSidebar();
12
12
  return /*#__PURE__*/ jsxs(Button, {
13
13
  "data-sidebar": "trigger",
@@ -2,7 +2,7 @@
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { motion } from "framer-motion";
4
4
  import "react";
5
- import { useTranslation } from "react-i18next";
5
+ import { useVertexTranslation } from "../../lib/vertex-translation.js";
6
6
  import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from "../sheet/sheet.js";
7
7
  import { cn } from "../../lib/utils.js";
8
8
  import { SidebarProvider, useSidebar } from "./sidebar-provider.js";
@@ -35,7 +35,7 @@ const sidebarSpring = {
35
35
  };
36
36
  const SIDEBAR_WIDTH_MOBILE = "18rem";
37
37
  function Sidebar({ side = "left", variant = "sidebar", collapsible = "offcanvas", className, children, ...props }) {
38
- const { t } = useTranslation();
38
+ const { t } = useVertexTranslation();
39
39
  const { isMobile, state, openMobile, setOpenMobile, sidebarWidthPx, sidebarWidthIconPx } = useSidebar();
40
40
  if ("none" === collapsible) return /*#__PURE__*/ jsx("div", {
41
41
  "data-slot": "sidebar",
@@ -1,11 +1,11 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { useTranslation } from "react-i18next";
3
+ import { useVertexTranslation } from "../../lib/vertex-translation.js";
4
4
  import { cn } from "../../lib/utils.js";
5
5
  import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "../table/table.js";
6
6
  import { EMPTY_VALUE } from "./constants.js";
7
7
  const BaselineCompare = ({ rows })=>{
8
- const { t } = useTranslation();
8
+ const { t } = useVertexTranslation();
9
9
  const visible = rows.filter((row)=>null != row.baseline || null != row.current);
10
10
  if (0 === visible.length) return null;
11
11
  return /*#__PURE__*/ jsx("div", {
@@ -1,11 +1,11 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { useTranslation } from "react-i18next";
3
+ import { useVertexTranslation } from "../../lib/vertex-translation.js";
4
4
  import { Button } from "../button/button.js";
5
5
  import { Spinner } from "../spinner/spinner.js";
6
6
  import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from "../dialog/dialog.js";
7
7
  const DeleteConfirmDialog = ({ open, deleting, onConfirm, onCancel })=>{
8
- const { t } = useTranslation();
8
+ const { t } = useVertexTranslation();
9
9
  return /*#__PURE__*/ jsx(Dialog, {
10
10
  open: open,
11
11
  onOpenChange: (isOpen)=>{
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { AlertCircle, Check, TriangleAlert } from "lucide-react";
4
- import { useTranslation } from "react-i18next";
4
+ import { useVertexTranslation } from "../../../../lib/vertex-translation.js";
5
5
  import { Alert, AlertDescription, AlertTitle } from "../../../alert/alert.js";
6
6
  import { Badge } from "../../../badge/badge.js";
7
7
  import { BaselineCompare } from "../../baseline-compare.js";
@@ -18,7 +18,7 @@ const presentOrNull = (value)=>{
18
18
  return value;
19
19
  };
20
20
  const ChangedBadge = ({ status })=>{
21
- const { t } = useTranslation();
21
+ const { t } = useVertexTranslation();
22
22
  return /*#__PURE__*/ jsx(Badge, {
23
23
  status: status,
24
24
  variant: "secondary",
@@ -26,7 +26,7 @@ const ChangedBadge = ({ status })=>{
26
26
  });
27
27
  };
28
28
  const PairFields = ({ pair })=>{
29
- const { t } = useTranslation();
29
+ const { t } = useVertexTranslation();
30
30
  const { expected, actual } = pair;
31
31
  const compared = pair.status === EvaluationPairStatus.Compared;
32
32
  const modelChanged = (expected?.decision_model_id ?? "") !== (actual?.decision_model_id ?? "");
@@ -70,7 +70,7 @@ const SummarySide = ({ label, view })=>/*#__PURE__*/ jsxs("div", {
70
70
  ]
71
71
  });
72
72
  const SummaryCard = ({ view })=>{
73
- const { t } = useTranslation();
73
+ const { t } = useVertexTranslation();
74
74
  if (!view) return /*#__PURE__*/ jsx("div", {
75
75
  className: "flex min-w-0 items-center justify-center rounded-md border border-dashed bg-muted/20 p-3",
76
76
  children: /*#__PURE__*/ jsx(Badge, {
@@ -108,7 +108,7 @@ const SummaryCard = ({ view })=>{
108
108
  });
109
109
  };
110
110
  const SummaryComparison = ({ pair })=>{
111
- const { t } = useTranslation();
111
+ const { t } = useVertexTranslation();
112
112
  const compared = pair.status === EvaluationPairStatus.Compared;
113
113
  const same = pair.summary_verdict === SummaryVerdict.Same;
114
114
  return /*#__PURE__*/ jsxs("div", {
@@ -173,7 +173,7 @@ const SummaryComparison = ({ pair })=>{
173
173
  });
174
174
  };
175
175
  const PairRow = ({ pair })=>{
176
- const { t } = useTranslation();
176
+ const { t } = useVertexTranslation();
177
177
  const oneSided = pair.status !== EvaluationPairStatus.Compared;
178
178
  return /*#__PURE__*/ jsxs("div", {
179
179
  className: "flex min-w-0 flex-col gap-3 rounded-md border p-3",
@@ -206,7 +206,7 @@ const PairRow = ({ pair })=>{
206
206
  });
207
207
  };
208
208
  const CaseEvaluationResult = ({ evaluatorDetails })=>{
209
- const { t } = useTranslation();
209
+ const { t } = useVertexTranslation();
210
210
  const { pairs, count_mismatch, expected_count, actual_count, same_count, outcome_mismatch_count, summary_differs_count, missing_count, added_count } = evaluatorDetails;
211
211
  const summary = [
212
212
  {
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { z } from "zod";
4
- import { useTranslation } from "react-i18next";
4
+ import { useVertexTranslation } from "../../../lib/vertex-translation.js";
5
5
  import { EMPTY_VALUE } from "../constants.js";
6
6
  import { useSolutionTestsConfig } from "../context.js";
7
7
  import { JsonPanel } from "./output-panels.js";
@@ -13,7 +13,7 @@ function scoreColorClass(score, passThreshold) {
13
13
  return score >= passThreshold ? "text-success" : "text-destructive";
14
14
  }
15
15
  const GenericEvaluatorResult = ({ evaluatorId, label, score, evaluatorDetails, expectedOutput, actualOutput })=>{
16
- const { t } = useTranslation();
16
+ const { t } = useVertexTranslation();
17
17
  const { passThreshold } = useSolutionTestsConfig();
18
18
  const displayLabel = label ?? evaluatorId;
19
19
  const justification = evaluatorDetails.justification;
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { useTranslation } from "react-i18next";
3
+ import { useVertexTranslation } from "../../../../../lib/vertex-translation.js";
4
4
  import { Badge } from "../../../../badge/badge.js";
5
5
  import { Tooltip, TooltipContent, TooltipTrigger } from "../../../../tooltip/tooltip.js";
6
6
  import { DocumentSection } from "../../../ixp/shared/document-section.js";
@@ -20,7 +20,7 @@ function groupFields(fields) {
20
20
  ];
21
21
  }
22
22
  const DocumentSummary = ({ doc, different, semanticallySame })=>{
23
- const { t } = useTranslation();
23
+ const { t } = useVertexTranslation();
24
24
  if (doc.status === IxpDocStatus.MissingInActual) return /*#__PURE__*/ jsx(Badge, {
25
25
  status: "error",
26
26
  children: t("ixp_doc_missing")
@@ -72,7 +72,7 @@ const DocumentSummary = ({ doc, different, semanticallySame })=>{
72
72
  });
73
73
  };
74
74
  const DocumentRow = ({ doc })=>{
75
- const { t } = useTranslation();
75
+ const { t } = useVertexTranslation();
76
76
  const verdictCounts = doc.fields.reduce((acc, f)=>{
77
77
  acc[f.verdict] = (acc[f.verdict] ?? 0) + 1;
78
78
  return acc;
@@ -1,14 +1,14 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { useState } from "react";
4
- import { useTranslation } from "react-i18next";
4
+ import { useVertexTranslation } from "../../../../../lib/vertex-translation.js";
5
5
  import { Button } from "../../../../button/button.js";
6
6
  import { FieldCell, FieldGroupHeading, FieldRow, FieldTable } from "../../../ixp/shared/field-table.js";
7
7
  import { formatFieldValues } from "../../../ixp/shared/format-values.js";
8
8
  import { IxpVerdict } from "../schema.js";
9
9
  import { VerdictBadge } from "./verdict-badge.js";
10
10
  const FieldGroup = ({ group, fields })=>{
11
- const { t } = useTranslation();
11
+ const { t } = useVertexTranslation();
12
12
  const [showUnchanged, setShowUnchanged] = useState(false);
13
13
  const changed = fields.filter((f)=>f.verdict !== IxpVerdict.Identical);
14
14
  const identicalCount = fields.length - changed.length;
@@ -1,11 +1,11 @@
1
1
  "use client";
2
2
  import { jsx } from "react/jsx-runtime";
3
- import { useTranslation } from "react-i18next";
3
+ import { useVertexTranslation } from "../../../../../lib/vertex-translation.js";
4
4
  import { BaselineCompare } from "../../../baseline-compare.js";
5
5
  import { versionDelta } from "../../../utils.js";
6
6
  import { VersionDeltaGlyph } from "../../../version-delta-glyph.js";
7
7
  const ProvenanceBar = ({ expected, actual })=>{
8
- const { t } = useTranslation();
8
+ const { t } = useVertexTranslation();
9
9
  const baselineVersion = formatVersion(expected?.resolved_project_version);
10
10
  const currentVersion = formatVersion(actual?.resolved_project_version);
11
11
  const { direction } = versionDelta(expected?.resolved_project_version, actual?.resolved_project_version);
@@ -1,9 +1,9 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { useTranslation } from "react-i18next";
3
+ import { useVertexTranslation } from "../../../../../lib/vertex-translation.js";
4
4
  import { Badge } from "../../../../badge/badge.js";
5
5
  const SummaryBar = ({ different, semanticallySame, identical })=>{
6
- const { t } = useTranslation();
6
+ const { t } = useVertexTranslation();
7
7
  return /*#__PURE__*/ jsxs("div", {
8
8
  className: "flex flex-wrap items-center gap-2",
9
9
  children: [
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { jsx } from "react/jsx-runtime";
3
- import { useTranslation } from "react-i18next";
3
+ import { useVertexTranslation } from "../../../../../lib/vertex-translation.js";
4
4
  import { Badge } from "../../../../badge/badge.js";
5
5
  import { IxpVerdict } from "../schema.js";
6
6
  const VERDICT_CONFIG = {
@@ -18,7 +18,7 @@ const VERDICT_CONFIG = {
18
18
  }
19
19
  };
20
20
  const VerdictBadge = ({ verdict })=>{
21
- const { t } = useTranslation();
21
+ const { t } = useVertexTranslation();
22
22
  const config = VERDICT_CONFIG[verdict];
23
23
  return /*#__PURE__*/ jsx(Badge, {
24
24
  status: config?.status ?? "info",
@@ -1,11 +1,11 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { useTranslation } from "react-i18next";
3
+ import { useVertexTranslation } from "../../../../lib/vertex-translation.js";
4
4
  import { ProvenanceBar } from "./internal/provenance-bar.js";
5
5
  import { SummaryBar } from "./internal/summary-bar.js";
6
6
  import { DocumentRow } from "./internal/document-row.js";
7
7
  const IxpExtractionResult = ({ evaluatorDetails })=>{
8
- const { t } = useTranslation();
8
+ const { t } = useVertexTranslation();
9
9
  const { documents, different_field_count, semantically_same_field_count, identical_field_count, expected_provenance, actual_provenance } = evaluatorDetails;
10
10
  return /*#__PURE__*/ jsxs("div", {
11
11
  className: "flex flex-col gap-4",
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { useTranslation } from "react-i18next";
3
+ import { useVertexTranslation } from "../../lib/vertex-translation.js";
4
4
  import { Eye } from "lucide-react";
5
5
  import { Button } from "../button/button.js";
6
6
  import { Alert, AlertDescription } from "../alert/alert.js";
@@ -10,7 +10,7 @@ import { SolutionTestStatus } from "./types.js";
10
10
  import { ProcessResultsViewerDialog } from "./process-results-viewer-dialog.js";
11
11
  import { ProcessOutputView } from "./outputs/process-output-view.js";
12
12
  const ExpandedAgentsView = ({ test, baselines, isLoading, noOutputJobIds, viewing, onViewExpected, onCloseViewer })=>{
13
- const { t } = useTranslation();
13
+ const { t } = useVertexTranslation();
14
14
  if (isLoading) return /*#__PURE__*/ jsx("div", {
15
15
  className: "p-4",
16
16
  children: /*#__PURE__*/ jsxs("div", {
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { useTranslation } from "react-i18next";
3
+ import { useVertexTranslation } from "../../lib/vertex-translation.js";
4
4
  import { Info, Square } from "lucide-react";
5
5
  import { Button } from "../button/button.js";
6
6
  import { Badge } from "../badge/badge.js";
@@ -13,7 +13,7 @@ import { runStatusBadgeMap } from "./status-maps.js";
13
13
  import { isRunDone } from "./utils.js";
14
14
  import { UserMessagesIcon } from "./user-messages-view.js";
15
15
  const ExpandedRunTestsView = ({ runs, tests, stoppingRunId, onOpenDetails, onForceStop })=>{
16
- const { t } = useTranslation();
16
+ const { t } = useVertexTranslation();
17
17
  return /*#__PURE__*/ jsx("div", {
18
18
  className: "p-4",
19
19
  children: /*#__PURE__*/ jsx("div", {
@@ -1,12 +1,12 @@
1
1
  "use client";
2
2
  import { jsx } from "react/jsx-runtime";
3
- import { useTranslation } from "react-i18next";
3
+ import { useVertexTranslation } from "../../lib/vertex-translation.js";
4
4
  import { toast } from "sonner";
5
5
  import { useSolutionTestsConfig } from "./context.js";
6
6
  import { useForceStopRun } from "./hooks.js";
7
7
  import { ExpandedRunTestsView } from "./expanded-run-tests-view.js";
8
8
  const ExpandedRunTests = ({ runs, tests })=>{
9
- const { t } = useTranslation();
9
+ const { t } = useVertexTranslation();
10
10
  const { track, onOpenRun } = useSolutionTestsConfig();
11
11
  const forceStopRun = useForceStopRun();
12
12
  const stoppingRunId = forceStopRun.isPending ? forceStopRun.variables ?? null : null;
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { useTranslation } from "react-i18next";
3
+ import { useVertexTranslation } from "../../lib/vertex-translation.js";
4
4
  import { TrendingUp } from "lucide-react";
5
5
  import { CartesianGrid, Line, LineChart, ReferenceLine, XAxis, YAxis } from "recharts";
6
6
  import { Card, CardContent, CardHeader, CardTitle } from "../card/card.js";
@@ -15,7 +15,7 @@ function isCompletedBatch(batch) {
15
15
  return batch.Status === RunStatus.Passed || batch.Status === RunStatus.Failed;
16
16
  }
17
17
  const KpiBar = ({ batchRuns, loading = false })=>{
18
- const { t } = useTranslation();
18
+ const { t } = useVertexTranslation();
19
19
  const { subjectNoun, passThreshold } = useSolutionTestsConfig();
20
20
  const scoreTrendChartConfig = {
21
21
  score: {
@@ -1,11 +1,11 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { useTranslation } from "react-i18next";
3
+ import { useVertexTranslation } from "../../../../lib/vertex-translation.js";
4
4
  import { Badge } from "../../../badge/badge.js";
5
5
  import { makeProcessOutputRenderer } from "../registry.js";
6
6
  import { CaseEvaluationOutputSchema } from "./schema.js";
7
7
  const EvaluationCard = ({ evaluation })=>{
8
- const { t } = useTranslation();
8
+ const { t } = useVertexTranslation();
9
9
  const faulted = "faulted" === evaluation.STATUS;
10
10
  const outcome = evaluation.OUTCOME || t("pe_output_no_outcome");
11
11
  const confidence = null == evaluation.OUTCOMECONFIDENCE ? null : Math.round(100 * evaluation.OUTCOMECONFIDENCE);
@@ -44,7 +44,7 @@ const EvaluationCard = ({ evaluation })=>{
44
44
  });
45
45
  };
46
46
  const CaseEvaluationOutputResult = ({ output })=>{
47
- const { t } = useTranslation();
47
+ const { t } = useVertexTranslation();
48
48
  if (0 === output.evaluations.length) return /*#__PURE__*/ jsx("p", {
49
49
  className: "text-sm text-muted-foreground",
50
50
  children: t("pe_output_no_evaluations")
@@ -1,13 +1,13 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { useTranslation } from "react-i18next";
3
+ import { useVertexTranslation } from "../../../../lib/vertex-translation.js";
4
4
  import { DocumentSection } from "../../ixp/shared/document-section.js";
5
5
  import { FieldCell, FieldGroupHeading, FieldRow, FieldTable } from "../../ixp/shared/field-table.js";
6
6
  import { formatFieldValues } from "../../ixp/shared/format-values.js";
7
7
  import { makeProcessOutputRenderer } from "../registry.js";
8
8
  import { IxpOutputSchema } from "./schema.js";
9
9
  const IxpOutputResult = ({ output })=>{
10
- const { t } = useTranslation();
10
+ const { t } = useVertexTranslation();
11
11
  const documents = Object.entries(output.document_extractions);
12
12
  return /*#__PURE__*/ jsxs("div", {
13
13
  className: "flex flex-col gap-4",
@@ -29,7 +29,7 @@ const IxpOutputResult = ({ output })=>{
29
29
  });
30
30
  };
31
31
  const OutputSummary = ({ output, documentCount })=>{
32
- const { t } = useTranslation();
32
+ const { t } = useVertexTranslation();
33
33
  const parts = [
34
34
  t("ixp_output_total_files", {
35
35
  count: output.total_files ?? documentCount
@@ -47,7 +47,7 @@ const OutputSummary = ({ output, documentCount })=>{
47
47
  });
48
48
  };
49
49
  const DocumentExtractionRow = ({ doc })=>{
50
- const { t } = useTranslation();
50
+ const { t } = useVertexTranslation();
51
51
  const fieldCount = doc.extractions.reduce((total, group)=>total + group.fieldValues.length, 0);
52
52
  return /*#__PURE__*/ jsx(DocumentSection, {
53
53
  title: doc.documentName,
@@ -63,7 +63,7 @@ const DocumentExtractionRow = ({ doc })=>{
63
63
  });
64
64
  };
65
65
  const ExtractionGroup = ({ group })=>{
66
- const { t } = useTranslation();
66
+ const { t } = useVertexTranslation();
67
67
  return /*#__PURE__*/ jsxs("div", {
68
68
  className: "mt-3 first:mt-0",
69
69
  children: [
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { useTranslation } from "react-i18next";
3
+ import { useVertexTranslation } from "../../lib/vertex-translation.js";
4
4
  import { Skeleton } from "../skeleton/skeleton.js";
5
5
  import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from "../dialog/dialog.js";
6
6
  const ProcessResultsViewerDialog = ({ open, onClose, title, data, loading, renderData })=>{
7
- const { t } = useTranslation();
7
+ const { t } = useVertexTranslation();
8
8
  return /*#__PURE__*/ jsx(Dialog, {
9
9
  open: open,
10
10
  onOpenChange: (isOpen)=>{
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
3
  import { useState } from "react";
4
- import { useTranslation } from "react-i18next";
4
+ import { useVertexTranslation } from "../../lib/vertex-translation.js";
5
5
  import { ChevronRight } from "lucide-react";
6
6
  import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "../collapsible/collapsible.js";
7
7
  import { Empty, EmptyDescription } from "../empty/empty.js";
@@ -14,7 +14,7 @@ import { EvaluatorResultsView, parseEvaluatorResults } from "./evaluator-results
14
14
  import { JsonPanel } from "./evaluators/output-panels.js";
15
15
  import { ProcessOutputView } from "./outputs/process-output-view.js";
16
16
  const ResultExpandedContent = ({ result, data })=>{
17
- const { t } = useTranslation();
17
+ const { t } = useVertexTranslation();
18
18
  const { showDebug } = useSolutionTestsConfig();
19
19
  const [debugOpen, setDebugOpen] = useState(false);
20
20
  const status = result.Status;
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { useTranslation } from "react-i18next";
3
+ import { useVertexTranslation } from "../../lib/vertex-translation.js";
4
4
  import { Button } from "../button/button.js";
5
5
  import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from "../dialog/dialog.js";
6
6
  const RunConfirmDialog = ({ open, confirmLabel, onConfirm, onCancel })=>{
7
- const { t } = useTranslation();
7
+ const { t } = useVertexTranslation();
8
8
  return /*#__PURE__*/ jsx(Dialog, {
9
9
  open: open,
10
10
  onOpenChange: (isOpen)=>{
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { useTranslation } from "react-i18next";
3
+ import { useVertexTranslation } from "../../lib/vertex-translation.js";
4
4
  import { Badge } from "../badge/badge.js";
5
5
  import { Empty, EmptyDescription } from "../empty/empty.js";
6
6
  import { Skeleton } from "../skeleton/skeleton.js";
@@ -10,7 +10,7 @@ import { defaultRunResultStatusLabels } from "./constants.js";
10
10
  import { resultBadgeClassMap, runResultStatusBadgeMap } from "./status-maps.js";
11
11
  import { RunResultStatus } from "./types.js";
12
12
  const RunDetailsAgentList = ({ results, selectedResultId, isLoading, onSelect })=>{
13
- const { t } = useTranslation();
13
+ const { t } = useVertexTranslation();
14
14
  return /*#__PURE__*/ jsxs("div", {
15
15
  className: "flex w-[320px] min-h-0 shrink-0 flex-col border-r border-border",
16
16
  children: [
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { ArrowLeftRight, Plus, Trash2 } from "lucide-react";
4
- import { useTranslation } from "react-i18next";
4
+ import { useVertexTranslation } from "../../lib/vertex-translation.js";
5
5
  import { Badge } from "../badge/badge.js";
6
6
  import { Button } from "../button/button.js";
7
7
  import { Empty, EmptyDescription } from "../empty/empty.js";
@@ -17,7 +17,7 @@ import { RunResultStatus } from "./types.js";
17
17
  import { versionDelta } from "./utils.js";
18
18
  import { VersionDeltaGlyph } from "./version-delta-glyph.js";
19
19
  const RunDetailsView = ({ subjectLabel, run, results, isLoading, baselineJobMap, selectedResultId, selectedRowData, adoptingResultId, updatingResultId, removingBaselineId, onBack, onSelect, onAdopt, onUpdateBaseline, onRemoveBaseline })=>{
20
- const { t } = useTranslation();
20
+ const { t } = useVertexTranslation();
21
21
  const title = t("subject_run_results", {
22
22
  subject: subjectLabel
23
23
  });
@@ -118,7 +118,7 @@ const RunDetailsView = ({ subjectLabel, run, results, isLoading, baselineJobMap,
118
118
  });
119
119
  };
120
120
  const RunDetailsPane = ({ result, data, baselineJobMap, adoptPending, updatePending, removePendingId, onAdopt, onUpdateBaseline, onRemoveBaseline })=>{
121
- const { t } = useTranslation();
121
+ const { t } = useVertexTranslation();
122
122
  const status = result.Status;
123
123
  const showBaselineVersion = status !== RunResultStatus.NoBaseline;
124
124
  const showActualVersion = status !== RunResultStatus.Missing;
@@ -244,7 +244,7 @@ const ActionButton = ({ loading, icon, label, onClick })=>/*#__PURE__*/ jsxs(But
244
244
  ]
245
245
  });
246
246
  const BaselineStateLabel = ({ isBaselineSource, inBaseline, hadBaseline })=>{
247
- const { t } = useTranslation();
247
+ const { t } = useVertexTranslation();
248
248
  if (isBaselineSource) return /*#__PURE__*/ jsx("span", {
249
249
  className: "text-xs font-medium text-info",
250
250
  children: t("current_baseline")
@@ -2,7 +2,7 @@
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { useQuery } from "@tanstack/react-query";
4
4
  import { useEffect, useMemo, useState } from "react";
5
- import { useTranslation } from "react-i18next";
5
+ import { useVertexTranslation } from "../../lib/vertex-translation.js";
6
6
  import { toast } from "sonner";
7
7
  import { Button } from "../button/button.js";
8
8
  import { Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyTitle } from "../empty/empty.js";
@@ -37,7 +37,7 @@ async function fetchResultAttachments(result, attachment, showDebug) {
37
37
  return {};
38
38
  }
39
39
  const RunDetails = ({ runId, onBack })=>{
40
- const { t } = useTranslation();
40
+ const { t } = useVertexTranslation();
41
41
  const { showDebug, track } = useSolutionTestsConfig();
42
42
  const { runs, isLoading: runsLoading } = useSolutionTestRuns();
43
43
  const { tests } = useSolutionTests();
@@ -1,11 +1,11 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { Check, FlaskConical } from "lucide-react";
4
- import { useTranslation } from "react-i18next";
4
+ import { useVertexTranslation } from "../../lib/vertex-translation.js";
5
5
  import { Button } from "../button/button.js";
6
6
  import { Spinner } from "../spinner/spinner.js";
7
7
  const SaveAsTestButton = ({ isSaved, isSaving, onSave, disabled = false })=>{
8
- const { t } = useTranslation();
8
+ const { t } = useVertexTranslation();
9
9
  return /*#__PURE__*/ jsxs(Button, {
10
10
  type: "button",
11
11
  variant: "outline",
@@ -3,7 +3,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { Link } from "@tanstack/react-router";
4
4
  import { ChevronRightIcon, Play, PlayCircle, Square, Trash2 } from "lucide-react";
5
5
  import { useState } from "react";
6
- import { useTranslation } from "react-i18next";
6
+ import { useVertexTranslation } from "../../lib/vertex-translation.js";
7
7
  import { Alert, AlertDescription } from "../alert/alert.js";
8
8
  import { Badge } from "../badge/badge.js";
9
9
  import { Button } from "../button/button.js";
@@ -56,7 +56,7 @@ function useControlledTable(initialSorting = []) {
56
56
  };
57
57
  }
58
58
  const SolutionTestsView = ({ tests, batchRuns, loading, error, hasActiveRuns, runningAll, runningSelected, runningTestId, togglingTestId, isDeleting, forceStoppingBatchId, deleteConfirmId, setDeleteConfirmId, runConfirm, setRunConfirm, onConfirmRun, onToggleActive, onDeleteTest, onForceStopBatch, renderExpandedTest, renderExpandedRun, activeTab: activeTabProp, onTabChange })=>{
59
- const { t } = useTranslation();
59
+ const { t } = useVertexTranslation();
60
60
  const config = useSolutionTestsConfig();
61
61
  const [internalTab, setInternalTab] = useState("cases");
62
62
  const activeTab = activeTabProp ?? internalTab;
@@ -3,7 +3,7 @@ import { jsx } from "react/jsx-runtime";
3
3
  import { useNavigate, useSearch } from "@tanstack/react-router";
4
4
  import { useState } from "react";
5
5
  import { toast } from "sonner";
6
- import { useTranslation } from "react-i18next";
6
+ import { useVertexTranslation } from "../../lib/vertex-translation.js";
7
7
  import { normalizeTab } from "./tabs.js";
8
8
  import { RunStatus } from "./types.js";
9
9
  import { useDeleteTest, useForceStopBatch, useRunTests, useSolutionTestBatchRuns, useSolutionTestRuns, useSolutionTests, useToggleTestActive } from "./hooks.js";
@@ -14,7 +14,7 @@ function getRunsForBatch(batchId, allRuns) {
14
14
  return allRuns.filter((r)=>r.RunBatchId === batchId);
15
15
  }
16
16
  const SolutionTests = ()=>{
17
- const { t } = useTranslation();
17
+ const { t } = useVertexTranslation();
18
18
  const { tests, isLoading: testsLoading } = useSolutionTests();
19
19
  const { batchRuns, isLoading: batchLoading } = useSolutionTestBatchRuns();
20
20
  const { runs: allRuns } = useSolutionTestRuns();