@uipath/apollo-vertex 0.3.0 → 0.4.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
@@ -60,6 +60,7 @@ pnpm build # Generate theme.css, build dist/ with rslib, check every exp
60
60
  pnpm build:check # List the external packages each public entry reaches
61
61
  pnpm lint # oxlint (type-aware)
62
62
  pnpm lint:deps # Check that registry files only import from registry/ and lib/
63
+ pnpm -w knip # Find unused files, exports and dependencies (both workspaces)
63
64
  pnpm typecheck # tsc --noEmit
64
65
  pnpm format # Biome
65
66
  ```
@@ -58,7 +58,7 @@ export * from "../registry/toggle-group/toggle-group";
58
58
  export * from "../registry/tooltip/tooltip";
59
59
  export * from "../registry/confidence-signal/confidence-signal";
60
60
  export * from "../registry/data-table";
61
- export { CheckboxField, type CheckboxFieldProps, type FieldOption, RadioGroupField, type RadioGroupFieldProps, SelectField, type SelectFieldProps, SubmitButton, type SubmitButtonProps, SwitchField, type SwitchFieldProps, TextareaField, type TextareaFieldProps, TextField, type TextFieldProps, useAppForm, useFieldContext, useFormContext, useTranslatedErrors, withForm, } from "../registry/form";
61
+ export { CheckboxField, type CheckboxFieldProps, FieldError as FormFieldError, type FieldErrorProps as FormFieldErrorProps, type FieldOption, RadioGroupField, type RadioGroupFieldProps, SelectField, type SelectFieldProps, SubmitButton, type SubmitButtonProps, SwitchField, type SwitchFieldProps, TextareaField, type TextareaFieldProps, TextField, type TextFieldProps, useAppForm, useFieldContext, useFormContext, useTranslatedErrors, withForm, } from "../registry/form";
62
62
  export * from "../registry/form-wizard";
63
63
  export * from "../registry/onboarding-tour-joyride";
64
64
  export * from "../registry/sidebar/sidebar";
@@ -67,6 +67,8 @@ export * from "../registry/timeline";
67
67
  export { useIsMobile } from "../registry/use-mobile/use-mobile";
68
68
  export { type UseDataTableOptions, useDataTable, } from "../registry/use-data-table/useDataTable";
69
69
  export { cn } from "../lib/utils";
70
+ export { assertDateOrString } from "../lib/asserts/assert-date-or-string";
71
+ export { assertString } from "../lib/asserts/assert-string";
70
72
  export { addVertexTranslations } from "../lib/i18n";
71
73
  export * from "../registry/chart/chart";
72
74
  export * from "../registry/bar-chart/bar-chart";
@@ -84,19 +86,20 @@ export { LocaleProvider } from "../registry/shell/shell-locale-provider";
84
86
  export { ThemeProvider } from "../registry/shell/shell-theme-provider";
85
87
  export { MembershipDenied, VerifyingMembership, type MembershipDeniedProps, } from "../registry/shell/group-membership-screens";
86
88
  export { Role } from "../registry/shell/shell-roles";
89
+ export { STALE_TIME_MS } from "../registry/shell/shell-constants";
87
90
  export { useAccessToken } from "../registry/shell/shell-auth-provider";
88
91
  export { useTheme } from "../registry/shell/shell-theme-provider";
89
92
  export { ShellLogin } from "../registry/shell/shell-login";
90
93
  export { ShellLayout } from "../registry/shell/shell-layout";
91
94
  export { ShellSidebar } from "../registry/shell/shell-sidebar";
92
- export { ShellUserProvider } from "../registry/shell/shell-user-provider";
95
+ export { ShellUserProvider, useUser, type User, } from "../registry/shell/shell-user-provider";
93
96
  export { SUPPORTED_LOCALES, configurei18n, type SupportedLocale, } from "../lib/i18n";
94
- export { STORAGE_KEYS, TOKEN_QUERY_KEY, ensureValidToken, login, logout, resolveReturnPath, toCodedAppFilePath, } from "../lib/auth";
95
- export { GroupMembershipGuard } from "../registry/shell/group-membership-guard";
96
- export { useGroupId } from "../registry/shell/use-group-id";
97
- export { useGroupMembers } from "../registry/shell/use-group-members";
97
+ export { STORAGE_KEYS, TOKEN_QUERY_KEY, type TokenData, ensureValidToken, login, logout, resolveReturnPath, toCodedAppFilePath, } from "../lib/auth";
98
+ export { GroupMembershipGuard, type GroupMembershipGuardProps, } from "../registry/shell/group-membership-guard";
99
+ export { useGroupId, type UseGroupIdOptions, type UseGroupIdResult, } from "../registry/shell/use-group-id";
100
+ export { useGroupMembers, type UseGroupMembersOptions, type UseGroupMembersResult, } from "../registry/shell/use-group-members";
98
101
  export { useIsGroupMember } from "../registry/shell/use-is-group-member";
99
- export { useEntityDataTable } from "../registry/use-data-table/useEntityDataTable";
102
+ export { useEntityDataTable, type UseEntityDataTableOptions, } from "../registry/use-data-table/useEntityDataTable";
100
103
  export { useEntityColumns } from "../registry/use-data-table/useEntityColumns";
101
104
  export { FeatureFlagContext, FeatureFlagProvider, useFeatureFlagProvider, } from "../registry/feature-flag-provider/feature-flag-provider";
102
105
  export { FeatureFlagGuard } from "../registry/feature-flag-guard/feature-flag-guard";
@@ -128,7 +131,7 @@ export { CaseEvaluationOutputSchema } from "../registry/solution-tests/outputs/c
128
131
  export type { CaseEvaluationOutput, EvaluationRecord, } from "../registry/solution-tests/outputs/case-evaluation/schema";
129
132
  export type { IxpOutput, IxpDocumentExtraction, IxpExtractionGroup, IxpFieldValue, } from "../registry/solution-tests/outputs/ixp-extraction/schema";
130
133
  export { SolutionTestStatus, RunStatus, RunResultStatus, JobRole, } from "../registry/solution-tests/types";
131
- export type { SolutionTest, SolutionTestJob, SolutionTestRun, SolutionTestBatchRun, SolutionTestRunResult, UserMessageItem, ResultAttachmentField, } from "../registry/solution-tests/types";
134
+ export type { SolutionTest, SolutionTestJob, SolutionTestRun, SolutionTestBatchRun, SolutionTestRunResult, UserMessageItem, ResultAttachmentField, SolutionTestStatusValue, RunStatusValue, RunResultStatusValue, JobRoleValue, } from "../registry/solution-tests/types";
132
135
  export type { RunConfirmTarget } from "../registry/solution-tests/solution-tests-view";
133
136
  export { RunDetailsView } from "../registry/solution-tests/run-details-view";
134
137
  export type { BaselineJobMap, RunDetailsViewProps, } from "../registry/solution-tests/run-details-view";
@@ -152,9 +155,11 @@ export { createConversationalAgentConnection } from "../registry/ai-chat/adapter
152
155
  export type { ConversationalAgentAdapterConfig } from "../registry/ai-chat/adapters/conversational-agent/adapter";
153
156
  export { AiChat } from "../registry/ai-chat/components/ai-chat";
154
157
  export { AiChatEmptyState } from "../registry/ai-chat/components/ai-chat-empty-state";
158
+ export { NoDataMessage } from "../registry/ai-chat/charts/no-data-message";
155
159
  export { AutopilotGradientIcon } from "../registry/ai-chat/components/icons/autopilot-gradient";
156
160
  export * from "../registry/ai-chat/tools/choices";
157
161
  export type { Entity } from "../registry/ai-chat/tools/data-fabric/util/entities";
162
+ export type { JoinInput } from "../registry/ai-chat/tools/data-fabric/util/joins";
158
163
  export * from "../registry/ai-chat/tools/data-fabric-bar";
159
164
  export * from "../registry/ai-chat/tools/data-fabric-distribution";
160
165
  export * from "../registry/ai-chat/tools/data-fabric-kpi";
@@ -1,7 +1,9 @@
1
- import { CheckboxField, RadioGroupField, SelectField, SubmitButton, SwitchField, TextField, TextareaField, useAppForm, useFieldContext, useFormContext, useTranslatedErrors, withForm } from "../registry/form/index.js";
1
+ import { CheckboxField, FieldError, RadioGroupField, SelectField, SubmitButton, SwitchField, TextField, TextareaField, useAppForm, useFieldContext, useFormContext, useTranslatedErrors, withForm } from "../registry/form/index.js";
2
2
  import { useIsMobile } from "../registry/use-mobile/use-mobile.js";
3
3
  import { useDataTable } from "../registry/use-data-table/useDataTable.js";
4
4
  import { cn } from "../lib/utils.js";
5
+ import { assertDateOrString } from "../lib/asserts/assert-date-or-string.js";
6
+ import { assertString } from "../lib/asserts/assert-string.js";
5
7
  import { SUPPORTED_LOCALES, addVertexTranslations, configurei18n } from "../lib/i18n.js";
6
8
  import { ApolloShell } from "../registry/shell/shell.js";
7
9
  import { AuthContext, ShellAuthProvider, useAccessToken, useAuth } from "../registry/shell/shell-auth-provider.js";
@@ -9,10 +11,11 @@ import { LocaleProvider } from "../registry/shell/shell-locale-provider.js";
9
11
  import { ThemeProvider, useTheme } from "../registry/shell/shell-theme-provider.js";
10
12
  import { MembershipDenied, VerifyingMembership } from "../registry/shell/group-membership-screens.js";
11
13
  import { Role } from "../registry/shell/shell-roles.js";
14
+ import { STALE_TIME_MS } from "../registry/shell/shell-constants.js";
12
15
  import { ShellLogin } from "../registry/shell/shell-login.js";
13
16
  import { ShellLayout } from "../registry/shell/shell-layout.js";
14
17
  import { ShellSidebar } from "../registry/shell/shell-sidebar.js";
15
- import { ShellUserProvider } from "../registry/shell/shell-user-provider.js";
18
+ import { ShellUserProvider, useUser } from "../registry/shell/shell-user-provider.js";
16
19
  import { STORAGE_KEYS, TOKEN_QUERY_KEY, ensureValidToken, login, logout, resolveReturnPath, toCodedAppFilePath } from "../lib/auth.js";
17
20
  import { GroupMembershipGuard } from "../registry/shell/group-membership-guard.js";
18
21
  import { useGroupId } from "../registry/shell/use-group-id.js";
@@ -54,6 +57,7 @@ import { createAgentHubConnection } from "../registry/ai-chat/adapters/agenthub/
54
57
  import { createConversationalAgentConnection } from "../registry/ai-chat/adapters/conversational-agent/adapter.js";
55
58
  import { AiChat } from "../registry/ai-chat/components/ai-chat.js";
56
59
  import { AiChatEmptyState } from "../registry/ai-chat/components/ai-chat-empty-state.js";
60
+ import { NoDataMessage } from "../registry/ai-chat/charts/no-data-message.js";
57
61
  import { AutopilotGradientIcon } from "../registry/ai-chat/components/icons/autopilot-gradient.js";
58
62
  export * from "../registry/accordion/accordion.js";
59
63
  export * from "../registry/ai-caveat/ai-caveat.js";
@@ -138,4 +142,4 @@ export * from "../registry/ai-chat/tools/data-fabric-line/index.js";
138
142
  export * from "../registry/ai-chat/tools/data-fabric-multi-line/index.js";
139
143
  export * from "../registry/ai-chat/tools/data-fabric-table/index.js";
140
144
  export * from "../registry/ai-chat/tools/data-fabric/index.js";
141
- export { AiChat, AiChatEmptyState, ApolloShell, AuthContext, AutopilotGradientIcon, BaselineCompare, CASE_EVALUATION_EVALUATOR_ID, CASE_EVALUATION_OUTPUT_RENDERER, CaseEvaluationDetailsSchema, CaseEvaluationOutputResult, CaseEvaluationOutputSchema, CheckboxField, EvaluationPairStatus, ExpandedAgents, ExpandedAgentsView, ExpandedRunTests, ExpandedRunTestsView, FeatureFlagContext, FeatureFlagGuard, FeatureFlagProvider, 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, ProcessOutputView, ProtectedFeatureRoute, RadioGroupField, Role, RunDetails, RunDetailsView, RunResultStatus, RunStatus, 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, cn, configurei18n, createAgentHubConnection, createConversationalAgentConnection, createProteusProvider, ensureValidToken, genericRenderer, 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, versionDelta, withForm };
145
+ export { AiChat, AiChatEmptyState, 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, 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 };
@@ -7,8 +7,10 @@ declare const cardVariants: (props?: ({
7
7
  interface CardProps extends React.ComponentProps<"div">, VariantProps<typeof cardVariants> {
8
8
  selectable?: "standard" | "ai";
9
9
  selected?: boolean;
10
+ /** Classes for the outermost element, e.g. `col-span-*`. When `selectable` is set, `className` and all other props go to the inner button. */
11
+ wrapperClassName?: string;
10
12
  }
11
- declare function Card({ className, variant, selectable, selected, children, ...props }: CardProps): import("react/jsx-runtime").JSX.Element;
13
+ declare function Card({ className, wrapperClassName, variant, selectable, selected, children, ...props }: CardProps): import("react/jsx-runtime").JSX.Element;
12
14
  declare function CardHeader({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
13
15
  declare function CardTitle({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
14
16
  declare function CardDescription({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
@@ -24,11 +24,11 @@ const cardVariants = cva("flex flex-col gap-6 py-6 text-card-foreground", {
24
24
  variant: "default"
25
25
  }
26
26
  });
27
- function Card({ className, variant, selectable, selected = false, children, ...props }) {
27
+ function Card({ className, wrapperClassName, variant, selectable, selected = false, children, ...props }) {
28
28
  if (selectable) {
29
29
  const isAi = "ai" === selectable;
30
30
  return /*#__PURE__*/ jsxs("div", {
31
- className: "relative group/card h-full",
31
+ className: cn("relative group/card h-full", wrapperClassName),
32
32
  "data-slot": "card",
33
33
  "data-variant": variant,
34
34
  "data-selectable": selectable,
@@ -58,9 +58,8 @@ function Card({ className, variant, selectable, selected = false, children, ...p
58
58
  "data-slot": "card",
59
59
  "data-variant": variant,
60
60
  className: cn(cardVariants({
61
- variant,
62
- className
63
- })),
61
+ variant
62
+ }), className, wrapperClassName),
64
63
  ...props,
65
64
  children: children
66
65
  });
@@ -15,8 +15,8 @@ export { type LineChartConfiguration, LineChartConfigurationSchema, } from "./mo
15
15
  export { type MultiLineChartConfiguration, MultiLineChartConfigurationSchema, } from "./models/configurations/multi-line-chart-configuration";
16
16
  export { type TableChartConfiguration, TableChartConfigurationSchema, } from "./models/configurations/table-chart-configuration";
17
17
  export type { DataModelAggregate, AggregationKind, MetricExpression, } from "./models/expression";
18
- export type { ListFilter } from "./models/filter";
19
- export type { FilterValues } from "./models/filter-values";
18
+ export type { ListFilter, PeriodFilter } from "./models/filter";
19
+ export type { BooleanListFilterValues, FilterValues, ListFilterValues, NumberListFilterValues, NumberRangeFilterValues, PeriodFilterValues, StringListFilterValues, StringSearchFilterValues, } from "./models/filter-values";
20
20
  export { type FromConfig, FromConfigSchema, type JoinConfig, JoinConfigSchema, } from "./models/join-schema";
21
21
  export type { PrimitiveValue } from "./models/primitive-value";
22
22
  export { SpinnerWithChildren } from "./spinner-with-children";
@@ -45,4 +45,5 @@ interface DataTableProps<TData, TValue> {
45
45
  declare function DataTable<TData, TValue>({ columns, data, className, isLoading, onRowClick, sorting, onSortingChange, columnFilters, onColumnFiltersChange, columnVisibility, onColumnVisibilityChange, columnOrder, onColumnOrderChange, rowSelection, onRowSelectionChange, globalFilter, onGlobalFilterChange, pagination, onPaginationChange, getRowId, globalFilterFn, enableSearch, enableViewOptions, enableColumnResizing, toolbarContent, noResultsMessage, stickyHeader, expanded, onExpandedChange, renderExpandedRow, getRowClassName, skeletonColumnWidths, plain, }: DataTableProps<TData, TValue>): import("react/jsx-runtime").JSX.Element;
46
46
  export { DataTable };
47
47
  export type { DataTableProps };
48
+ /** @public */
48
49
  export { DataTableColumnHeader } from "./data-table-column-header";
@@ -26,4 +26,3 @@ export { useRunResults, useAdoptJob, useUpdateBaseline, useResultAttachment, } f
26
26
  export type { UseRunResultsResult } from "./use-run-results";
27
27
  export { useForceStopBatch, useForceStopRun } from "./use-force-stop";
28
28
  export type { MutationHook, AttachmentFetcher } from "./mutations";
29
- export type { ResultAttachmentField } from "./types";
@@ -1,7 +1 @@
1
- export { Stepper, type StepperProps, stepperVariants } from "./stepper";
2
- export { StepperContent, StepperDescription, StepperTitle, } from "./stepper-content";
3
- export type { StepperItemState, StepperOrientation, } from "./stepper-context";
4
- export { StepperIndicator } from "./stepper-indicator";
5
- export { StepperItem, type StepperItemProps, stepperItemVariants, } from "./stepper-item";
6
- export { StepperSeparator } from "./stepper-separator";
7
- export { StepperTrigger } from "./stepper-trigger";
1
+ export { Stepper, StepperContent, StepperDescription, StepperIndicator, StepperItem, type StepperItemProps, type StepperItemState, type StepperOrientation, type StepperProps, StepperSeparator, StepperTitle, StepperTrigger, stepperItemVariants, stepperVariants, } from "./stepper";
@@ -1,7 +1,2 @@
1
- import { Stepper, stepperVariants } from "./stepper.js";
2
- import { StepperContent, StepperDescription, StepperTitle } from "./stepper-content.js";
3
- import { StepperIndicator } from "./stepper-indicator.js";
4
- import { StepperItem, stepperItemVariants } from "./stepper-item.js";
5
- import { StepperSeparator } from "./stepper-separator.js";
6
- import { StepperTrigger } from "./stepper-trigger.js";
1
+ import { Stepper, StepperContent, StepperDescription, StepperIndicator, StepperItem, StepperSeparator, StepperTitle, StepperTrigger, stepperItemVariants, stepperVariants } from "./stepper.js";
7
2
  export { Stepper, StepperContent, StepperDescription, StepperIndicator, StepperItem, StepperSeparator, StepperTitle, StepperTrigger, stepperItemVariants, stepperVariants };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uipath/apollo-vertex",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "UiPath Apollo Vertex design system components",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -120,16 +120,20 @@
120
120
  "@tanstack/intent": "0.4.0",
121
121
  "@tanstack/react-query": "^5.104.0",
122
122
  "@tanstack/react-router": "^1.170.40",
123
+ "@testing-library/dom": "^10.4.1",
124
+ "@testing-library/react": "^16.3.0",
123
125
  "@ts-rest/core": "^3.53.0-rc.1",
124
126
  "@types/node": "^24.10.1",
125
127
  "@types/react": "^19.2.6",
126
128
  "@types/react-dom": "^19.2.2",
127
129
  "@uipath/uipath-typescript": "^1.8.0",
130
+ "@vitest/coverage-v8": "^4.1.5",
128
131
  "dependency-cruiser": "^17.3.6",
129
132
  "eslint-plugin-react": "^7.37.5",
130
133
  "eventsource-parser": "^3.0.6",
131
134
  "highlight.js": "^11.11.1",
132
135
  "i18next": "^26.4.2",
136
+ "jsdom": "^27.2.0",
133
137
  "jwt-decode": "^4.0.0",
134
138
  "oxlint": "^1.38.0",
135
139
  "oxlint-tsgolint": "^0.18.1",
@@ -142,7 +146,9 @@
142
146
  "recharts": "2.15.4",
143
147
  "remark-breaks": "^4.0.0",
144
148
  "remark-gfm": "^4.0.1",
145
- "tailwindcss": "^4.1.17"
149
+ "tailwindcss": "^4.1.17",
150
+ "typescript": "^5.9.3",
151
+ "vitest": "^4.1.11"
146
152
  },
147
153
  "publishConfig": {
148
154
  "access": "public"
@@ -164,6 +170,8 @@
164
170
  "lint:fix": "oxlint --fix --type-aware",
165
171
  "lint:deps": "depcruise registry --config .dependency-cruiser.cjs",
166
172
  "typecheck": "tsc --noEmit",
167
- "lint:skills": "intent validate skills"
173
+ "lint:skills": "intent validate skills",
174
+ "test": "vitest run",
175
+ "test:coverage": "vitest run --coverage"
168
176
  }
169
177
  }