@uipath/apollo-vertex 1.4.0 → 2.0.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.
package/README.md CHANGED
@@ -26,15 +26,10 @@ import { Button, DataTable } from "@uipath/apollo-vertex";
26
26
  Everything, including the app shell, charts, feature flags, Solution Tests and AI chat, is exported
27
27
  from the package root. Translation JSON files are available at `@uipath/apollo-vertex/locales/*`.
28
28
 
29
- npm 7+ and pnpm install the packages in `peerDependencies` automatically. Install these three
30
- yourself:
31
-
32
- - `@uipath/vs-core`
33
- - `@tanstack/react-db`
34
- - `@uipath/proteus-client`
35
-
36
- They are declared only in `peerDependenciesMeta` (as optional) so that pnpm does not try to install them
37
- in this workspace. The two `@uipath` packages are not on the public npm registry.
29
+ The Proteus feature flag adapter, `createProteusProvider`, is exported from
30
+ `@uipath/apollo-vertex/proteus` instead of the root. It needs `@uipath/proteus-client`, which is not on
31
+ the public npm registry, so it is declared only in `peerDependenciesMeta` (as optional). Install it
32
+ yourself if you import that subpath.
38
33
 
39
34
  ## Layout
40
35
 
@@ -106,7 +106,6 @@ export { FeatureFlagGuard } from "../registry/feature-flag-guard/feature-flag-gu
106
106
  export { ProtectedFeatureRoute } from "../registry/protected-feature-route/protected-feature-route";
107
107
  export { useFeatureFlag } from "../registry/use-feature-flag/use-feature-flag";
108
108
  export type { FeatureFlagProviderConfig, FeatureFlagUserContext, } from "../registry/feature-flag-provider/types";
109
- export { createProteusProvider, type FlagMapping, type ProteusFeatureFlagValues, } from "../registry/feature-flag-provider/proteus-adapter";
110
109
  export { SolutionTestsView } from "../registry/solution-tests/solution-tests-view";
111
110
  export type { SolutionTestsViewProps } from "../registry/solution-tests/solution-tests-view";
112
111
  export { SaveAsTestButton } from "../registry/solution-tests/save-as-test-button";
@@ -27,7 +27,6 @@ import { FeatureFlagContext, FeatureFlagProvider, useFeatureFlagProvider } from
27
27
  import { FeatureFlagGuard } from "../registry/feature-flag-guard/feature-flag-guard.js";
28
28
  import { ProtectedFeatureRoute } from "../registry/protected-feature-route/protected-feature-route.js";
29
29
  import { useFeatureFlag } from "../registry/use-feature-flag/use-feature-flag.js";
30
- import { createProteusProvider } from "../registry/feature-flag-provider/proteus-adapter.js";
31
30
  import { SolutionTestsView } from "../registry/solution-tests/solution-tests-view.js";
32
31
  import { SaveAsTestButton } from "../registry/solution-tests/save-as-test-button.js";
33
32
  import { SolutionTestActionError } from "../registry/solution-tests/errors.js";
@@ -145,4 +144,4 @@ export * from "../registry/ai-chat/tools/data-fabric-line/index.js";
145
144
  export * from "../registry/ai-chat/tools/data-fabric-multi-line/index.js";
146
145
  export * from "../registry/ai-chat/tools/data-fabric-table/index.js";
147
146
  export * from "../registry/ai-chat/tools/data-fabric/index.js";
148
- export { AiChat, AiChatEmptyState, AiChatLoading, AiChatMarkdown, AiChatThinking, ApolloShell, AuthContext, AutopilotGradientIcon, BaselineCompare, CASE_EVALUATION_EVALUATOR_ID, CASE_EVALUATION_OUTPUT_RENDERER, CaseEvaluationDetailsSchema, CaseEvaluationOutputResult, CaseEvaluationOutputSchema, CheckboxField, EvaluationPairStatus, ExpandedAgents, ExpandedAgentsView, ExpandedRunTests, ExpandedRunTestsView, FeatureFlagContext, FeatureFlagGuard, FeatureFlagProvider, FieldError as FormFieldError, GENERIC_RENDERER, GroupMembershipGuard, IXP_EXTRACTION_EVALUATOR_ID, IXP_OUTPUT_RENDERER, IxpDetailsSchema, IxpDocStatus, IxpOutputResult, IxpOutputSchema, IxpVerdict, JSON_SIMILARITY_EVALUATOR_ID, JobRole, LLM_JUDGE_EVALUATOR_ID, LocaleProvider, MembershipDenied, NoDataMessage, ProcessOutputView, ProtectedFeatureRoute, RadioGroupField, Role, RunDetails, RunDetailsView, RunResultStatus, RunStatus, STALE_TIME_MS, STORAGE_KEYS, SUPPORTED_LOCALES, SaveAsTestButton, SelectField, ShellAuthProvider, ShellLayout, ShellLogin, ShellSidebar, ShellUserProvider, SolutionTestActionError, SolutionTestStatus, SolutionTests, SolutionTestsProvider, SolutionTestsView, SubmitButton, SummaryVerdict, SwitchField, TOKEN_QUERY_KEY, TextField, TextareaField, ThemeProvider, VerifyingMembership, VersionDeltaGlyph, addVertexTranslations, assertDateOrString, assertString, cn, configurei18n, createAgentHubConnection, createConversationalAgentConnection, createProteusProvider, ensureValidToken, genericRenderer, getStoredIdToken, getTokenQueryKey, login, logout, makeProcessOutputRenderer, makeRenderer, resolveEvaluatorRenderer, resolveProcessOutputRenderer, resolveReturnPath, toCodedAppFilePath, useAccessToken, useAdoptJob, useAppForm, useAuth, useBaselineJobs, useCreateTest, useDataTable, useDeleteTest, useEntityColumns, useEntityDataTable, useFeatureFlag, useFeatureFlagProvider, useFieldContext, useForceStopBatch, useForceStopRun, useFormContext, useGroupId, useGroupMembers, useIsGroupMember, useIsMobile, useJobExpectedOutput, useRemoveJobBaseline, useResultAttachment, useRunResults, useRunTests, useSolutionTestBatchRuns, useSolutionTestRuns, useSolutionTests, useSolutionTestsConfig, useSolutionTestsContext, useTheme, useToggleTestActive, useTranslatedErrors, useUpdateBaseline, useUser, versionDelta, withForm };
147
+ export { AiChat, AiChatEmptyState, AiChatLoading, AiChatMarkdown, AiChatThinking, ApolloShell, AuthContext, AutopilotGradientIcon, BaselineCompare, CASE_EVALUATION_EVALUATOR_ID, CASE_EVALUATION_OUTPUT_RENDERER, CaseEvaluationDetailsSchema, CaseEvaluationOutputResult, CaseEvaluationOutputSchema, CheckboxField, EvaluationPairStatus, ExpandedAgents, ExpandedAgentsView, ExpandedRunTests, ExpandedRunTestsView, FeatureFlagContext, FeatureFlagGuard, FeatureFlagProvider, FieldError as FormFieldError, GENERIC_RENDERER, GroupMembershipGuard, IXP_EXTRACTION_EVALUATOR_ID, IXP_OUTPUT_RENDERER, IxpDetailsSchema, IxpDocStatus, IxpOutputResult, IxpOutputSchema, IxpVerdict, JSON_SIMILARITY_EVALUATOR_ID, JobRole, LLM_JUDGE_EVALUATOR_ID, LocaleProvider, MembershipDenied, NoDataMessage, ProcessOutputView, ProtectedFeatureRoute, RadioGroupField, Role, RunDetails, RunDetailsView, RunResultStatus, RunStatus, STALE_TIME_MS, STORAGE_KEYS, SUPPORTED_LOCALES, SaveAsTestButton, SelectField, ShellAuthProvider, ShellLayout, ShellLogin, ShellSidebar, ShellUserProvider, SolutionTestActionError, SolutionTestStatus, SolutionTests, SolutionTestsProvider, SolutionTestsView, SubmitButton, SummaryVerdict, SwitchField, TOKEN_QUERY_KEY, TextField, TextareaField, ThemeProvider, VerifyingMembership, VersionDeltaGlyph, addVertexTranslations, assertDateOrString, assertString, cn, configurei18n, createAgentHubConnection, createConversationalAgentConnection, ensureValidToken, genericRenderer, getStoredIdToken, getTokenQueryKey, login, logout, makeProcessOutputRenderer, makeRenderer, resolveEvaluatorRenderer, resolveProcessOutputRenderer, resolveReturnPath, toCodedAppFilePath, useAccessToken, useAdoptJob, useAppForm, useAuth, useBaselineJobs, useCreateTest, useDataTable, useDeleteTest, useEntityColumns, useEntityDataTable, useFeatureFlag, useFeatureFlagProvider, useFieldContext, useForceStopBatch, useForceStopRun, useFormContext, useGroupId, useGroupMembers, useIsGroupMember, useIsMobile, useJobExpectedOutput, useRemoveJobBaseline, useResultAttachment, useRunResults, useRunTests, useSolutionTestBatchRuns, useSolutionTestRuns, useSolutionTests, useSolutionTestsConfig, useSolutionTestsContext, useTheme, useToggleTestActive, useTranslatedErrors, useUpdateBaseline, useUser, versionDelta, withForm };
@@ -0,0 +1 @@
1
+ export { createProteusProvider, type FlagMapping, type ProteusFeatureFlagValues, } from "../registry/feature-flag-provider/proteus-adapter";
@@ -0,0 +1,2 @@
1
+ import { createProteusProvider } from "../registry/feature-flag-provider/proteus-adapter.js";
2
+ export { createProteusProvider };
@@ -4,6 +4,7 @@
4
4
  * outside a SolutionProvider or when the named collection is not registered.
5
5
  */
6
6
  import type { Collection } from "@tanstack/react-db";
7
+ import { useSolution } from "@uipath/vs-core";
7
8
  import { ENTITY } from "./constants";
8
9
  import type { SolutionTest, SolutionTestBatchRun, SolutionTestJob, SolutionTestRun, SolutionTestRunResult } from "./types";
9
10
  /** Row type stored in each Solution Tests collection, keyed by its entity name. */
@@ -14,5 +15,9 @@ type SolutionTestRow = {
14
15
  [ENTITY.jobs]: SolutionTestJob;
15
16
  [ENTITY.runResults]: SolutionTestRunResult;
16
17
  };
17
- export declare function useSolutionTestCollection<K extends keyof SolutionTestRow>(entity: K): Collection<SolutionTestRow[K]>;
18
+ type SolutionTestCollection<T extends object> = Collection<T, string, {
19
+ refetch: () => Promise<void>;
20
+ }>;
21
+ export declare function getSolutionTestCollection<K extends keyof SolutionTestRow>(solution: ReturnType<typeof useSolution>, entity: K): SolutionTestCollection<SolutionTestRow[K]> | undefined;
22
+ export declare function useSolutionTestCollection<K extends keyof SolutionTestRow>(entity: K): SolutionTestCollection<SolutionTestRow[K]>;
18
23
  export {};
@@ -1,11 +1,14 @@
1
1
  "use client";
2
2
  import { useSolution } from "@uipath/vs-core";
3
+ function getSolutionTestCollection(solution, entity) {
4
+ const collections = solution.api.collections.solutionTests;
5
+ return collections[entity];
6
+ }
3
7
  function useSolutionTestCollection(entity) {
4
8
  const solution = useSolution();
5
9
  if (!solution) throw new Error("useSolutionTestCollection must be used within a SolutionProvider.");
6
- const selected = solution.api.collections.solutionTests[entity];
7
- const collection = selected;
10
+ const collection = getSolutionTestCollection(solution, entity);
8
11
  if (!collection) throw new Error(`Solution Tests collection "${entity}" is unavailable.`);
9
12
  return collection;
10
13
  }
11
- export { useSolutionTestCollection };
14
+ export { getSolutionTestCollection, useSolutionTestCollection };
@@ -4,7 +4,7 @@ import { useMutation } from "@tanstack/react-query";
4
4
  import { useSolution } from "@uipath/vs-core";
5
5
  import { ENTITY } from "./constants.js";
6
6
  import { useSolutionTestsActions, useSolutionTestsConfig } from "./context.js";
7
- import { useSolutionTestCollection } from "./use-solution-test-collection.js";
7
+ import { getSolutionTestCollection, useSolutionTestCollection } from "./use-solution-test-collection.js";
8
8
  function useSolutionTests() {
9
9
  const collection = useSolutionTestCollection(ENTITY.tests);
10
10
  const { data, isLoading } = useLiveQuery((q)=>q.from({
@@ -47,7 +47,7 @@ function useToggleTestActive() {
47
47
  const { track } = useSolutionTestsConfig();
48
48
  return useMutation({
49
49
  mutationFn: async ({ testId, isActive })=>{
50
- const collection = solution?.api.collections.solutionTests[ENTITY.tests];
50
+ const collection = solution && getSolutionTestCollection(solution, ENTITY.tests);
51
51
  if (!collection) throw new Error("Solution Tests collection is unavailable.");
52
52
  const transaction = collection.update(testId, (draft)=>{
53
53
  draft.IsActive = isActive;
@@ -2,7 +2,6 @@
2
2
  import { jsx } from "react/jsx-runtime";
3
3
  import { CircleCheckIcon, InfoIcon, Loader2Icon, OctagonXIcon, TriangleAlertIcon } from "lucide-react";
4
4
  import { Toaster } from "sonner";
5
- import { useTheme } from "../shell/shell-theme-provider.js";
6
5
  const iconAlign = "[&>[data-icon]]:!items-start [&>[data-icon]>svg]:!mt-0.5";
7
6
  const statusTextClasses = "[&>[data-icon]>svg]:!text-[oklch(0.166_0.0283_203.34)] dark:[&>[data-icon]>svg]:!text-foreground [&_[data-title]]:!text-[oklch(0.166_0.0283_203.34)] dark:[&_[data-title]]:!text-foreground [&_[data-description]]:!text-[oklch(0.166_0.0283_203.34)] dark:[&_[data-description]]:!text-foreground [&_[data-close-button]]:!text-[oklch(0.166_0.0283_203.34)] dark:[&_[data-close-button]]:!text-foreground";
8
7
  const apolloToastClassNames = {
@@ -10,12 +9,11 @@ const apolloToastClassNames = {
10
9
  success: `!border-success !bg-[color-mix(in_srgb,var(--success)_25%,var(--card)_75%)] dark:!bg-[color-mix(in_srgb,var(--success)_25%,var(--popover)_75%)] ${statusTextClasses} ${iconAlign}`,
11
10
  warning: `!border-warning !bg-[color-mix(in_srgb,var(--warning)_60%,var(--card)_40%)] dark:!bg-[color-mix(in_srgb,var(--warning)_60%,var(--popover)_40%)] ${statusTextClasses} ${iconAlign}`,
12
11
  error: `!border-destructive !bg-[color-mix(in_srgb,var(--destructive)_50%,var(--card)_50%)] dark:!bg-[color-mix(in_srgb,var(--destructive)_50%,var(--popover)_50%)] ${statusTextClasses} ${iconAlign}`,
13
- closeButton: "!left-auto !right-2 !top-2 !transform-none !border-none !bg-transparent !rounded-sm"
12
+ description: "!text-popover-foreground",
13
+ cancelButton: "dark:!bg-white/30",
14
+ closeButton: "!left-auto !right-2 !top-2 !transform-none !border-none !bg-transparent !rounded-sm !text-popover-foreground"
14
15
  };
15
- const sonner_Toaster = ({ theme: _theme, ...props })=>{
16
- const { resolvedTheme } = useTheme();
17
- return /*#__PURE__*/ jsx(Toaster, {
18
- theme: resolvedTheme,
16
+ const sonner_Toaster = ({ theme: _theme, ...props })=>/*#__PURE__*/ jsx(Toaster, {
19
17
  className: "toaster group",
20
18
  position: "top-center",
21
19
  duration: 5000,
@@ -48,5 +46,4 @@ const sonner_Toaster = ({ theme: _theme, ...props })=>{
48
46
  },
49
47
  ...props
50
48
  });
51
- };
52
49
  export { sonner_Toaster as Toaster, apolloToastClassNames };
@@ -10,7 +10,12 @@ export interface UseEntityDataTableOptions<TRecord extends EntityRecord = Entity
10
10
  columnOverrides?: Record<string, (baseDef: ColumnDefWithAccessorKey<TRecord>) => ColumnDefWithAccessorKey<TRecord>>;
11
11
  }
12
12
  export declare function useEntityDataTable<TRecord extends EntityRecord = EntityRecord>({ entity, storageKey: storageKeyProp, initialVisibleColumnCount, systemFields, columnOrder: columnOrderProp, extraColumns, columnOverrides, }: UseEntityDataTableOptions<TRecord>): {
13
- data: Record<string, unknown>[];
13
+ data: {
14
+ readonly $synced: boolean;
15
+ readonly $origin: import("@tanstack/react-db").VirtualOrigin;
16
+ readonly $key: string;
17
+ readonly $collectionId: string;
18
+ }[];
14
19
  isLoading: boolean;
15
20
  columns: import("../data-table").ColumnDef<TRecord>[];
16
21
  sorting: import("@tanstack/react-table").SortingState;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uipath/apollo-vertex",
3
- "version": "1.4.0",
3
+ "version": "2.0.0",
4
4
  "description": "UiPath Apollo Vertex design system components",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -17,6 +17,10 @@
17
17
  "types": "./dist/entries/index.d.ts",
18
18
  "default": "./dist/entries/index.js"
19
19
  },
20
+ "./proteus": {
21
+ "types": "./dist/entries/proteus.d.ts",
22
+ "default": "./dist/entries/proteus.js"
23
+ },
20
24
  "./theme.css": "./dist/theme.css",
21
25
  "./tailwind.css": "./dist/tailwind.css",
22
26
  "./locales/*": "./dist/locales/*"
@@ -80,10 +84,12 @@
80
84
  "peerDependencies": {
81
85
  "@tanstack/ai": "^0.14.0",
82
86
  "@tanstack/ai-client": "^0.8.0",
87
+ "@tanstack/react-db": "^0.1.83",
83
88
  "@tanstack/react-query": "^5.90.21",
84
89
  "@tanstack/react-router": "^1.132.31",
85
90
  "@ts-rest/core": "^3.53.0-rc.1",
86
91
  "@uipath/uipath-typescript": "^1.7.1",
92
+ "@uipath/vs-core": "^4.4.0",
87
93
  "eventsource-parser": "^3.0.6",
88
94
  "highlight.js": "^11.11.1",
89
95
  "i18next": "^25.8.1 || ^26.0.0",
@@ -100,14 +106,8 @@
100
106
  "tailwindcss": "^4.0.0"
101
107
  },
102
108
  "peerDependenciesMeta": {
103
- "@tanstack/react-db": {
104
- "optional": true
105
- },
106
109
  "@uipath/proteus-client": {
107
110
  "optional": true
108
- },
109
- "@uipath/vs-core": {
110
- "optional": true
111
111
  }
112
112
  },
113
113
  "devDependencies": {
@@ -116,8 +116,11 @@
116
116
  "@rslib/core": "^0.19.6",
117
117
  "@tanstack/ai": "0.14.0",
118
118
  "@tanstack/ai-client": "0.8.0",
119
+ "@tanstack/db": "0.6.5",
119
120
  "@tanstack/intent": "0.4.0",
120
- "@tanstack/react-query": "^5.104.0",
121
+ "@tanstack/query-db-collection": "1.0.36",
122
+ "@tanstack/react-db": "0.1.83",
123
+ "@tanstack/react-query": "^5.104.1",
121
124
  "@tanstack/react-router": "^1.170.40",
122
125
  "@testing-library/dom": "^10.4.1",
123
126
  "@testing-library/react": "^16.3.0",
@@ -126,6 +129,7 @@
126
129
  "@types/react": "^19.2.6",
127
130
  "@types/react-dom": "^19.2.2",
128
131
  "@uipath/uipath-typescript": "^1.8.0",
132
+ "@uipath/vs-core": "^4.5.0",
129
133
  "@vitest/coverage-v8": "^4.1.5",
130
134
  "dependency-cruiser": "^17.3.6",
131
135
  "eslint-plugin-react": "^7.37.5",
@@ -30,14 +30,16 @@ Install `@uipath/apollo-vertex` if the project doesn't have it yet.
30
30
 
31
31
  Then read `peerDependencies` in
32
32
  `node_modules/@uipath/apollo-vertex/package.json` and make sure the app has
33
- every package listed there, in a version that matches the range. Also install
34
- every package listed in `peerDependenciesMeta`, even the ones marked optional
35
- or missing from `peerDependencies`: the package entry imports them, so the
36
- app's bundler fails to resolve the entry without them.
33
+ every package listed there, in a version that matches the range. Install
34
+ `@uipath/proteus-client` only if the app uses Proteus feature flags (it imports
35
+ `@uipath/apollo-vertex/proteus`).
37
36
 
38
37
  - If the app already has a peer in a version outside the range, tell the user
39
38
  about the conflict instead of upgrading it on your own.
40
- - Some `@uipath` peers are not on the public npm registry. If installing one
39
+ - Pick the `@tanstack/react-db` release whose `@tanstack/db` dependency matches
40
+ the one `@tanstack/query-db-collection` uses in the app. Each release pins an
41
+ exact `@tanstack/db`, and two copies do not work together.
42
+ - `@uipath/proteus-client` is not on the public npm registry. If installing it
41
43
  fails with a 404 or an authentication error, stop and ask the user for access
42
44
  to UiPath's package registry. Do not install look-alike packages from npm.
43
45
  - If the app doesn't use Tailwind yet, set it up for the app's bundler with