cortena-ui 1.4.2 → 1.5.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/LICENSE +7 -0
- package/README.md +149 -1
- package/dist/a2ui/views.js +2 -2
- package/dist/agent-chat/a2ui-block.d.ts +60 -0
- package/dist/agent-chat/a2ui-block.js +69 -0
- package/dist/agent-chat/a2ui-block.js.map +1 -0
- package/dist/agent-chat/agui-client.d.ts +40 -0
- package/dist/agent-chat/agui-client.js +251 -0
- package/dist/agent-chat/agui-client.js.map +1 -0
- package/dist/agent-chat/bridge.d.ts +109 -0
- package/dist/agent-chat/bridge.js +349 -0
- package/dist/agent-chat/bridge.js.map +1 -0
- package/dist/agent-chat/session.d.ts +58 -0
- package/dist/agent-chat/session.js +249 -0
- package/dist/agent-chat/session.js.map +1 -0
- package/dist/agent-chat/store.d.ts +67 -0
- package/dist/agent-chat/store.js +548 -0
- package/dist/agent-chat/store.js.map +1 -0
- package/dist/agent-chat/types.d.ts +187 -0
- package/dist/agent-chat/types.js +17 -0
- package/dist/agent-chat/types.js.map +1 -0
- package/dist/agent-chat.d.ts +10 -0
- package/dist/agent-chat.js +10 -0
- package/dist/components/admin-permissions/admin-permissions.d.ts +66 -0
- package/dist/components/admin-permissions/admin-permissions.js +101 -0
- package/dist/components/admin-permissions/admin-permissions.js.map +1 -0
- package/dist/components/admin-permissions/context.d.ts +70 -0
- package/dist/components/admin-permissions/context.js +258 -0
- package/dist/components/admin-permissions/context.js.map +1 -0
- package/dist/components/admin-permissions/index.d.ts +10 -0
- package/dist/components/admin-permissions/licence.d.ts +15 -0
- package/dist/components/admin-permissions/licence.js +78 -0
- package/dist/components/admin-permissions/licence.js.map +1 -0
- package/dist/components/admin-permissions/matrix.d.ts +20 -0
- package/dist/components/admin-permissions/matrix.js +191 -0
- package/dist/components/admin-permissions/matrix.js.map +1 -0
- package/dist/components/admin-permissions/members.d.ts +18 -0
- package/dist/components/admin-permissions/members.js +185 -0
- package/dist/components/admin-permissions/members.js.map +1 -0
- package/dist/components/admin-permissions/role-assignment.d.ts +35 -0
- package/dist/components/admin-permissions/role-assignment.js +174 -0
- package/dist/components/admin-permissions/role-assignment.js.map +1 -0
- package/dist/components/admin-permissions/roles.d.ts +25 -0
- package/dist/components/admin-permissions/roles.js +168 -0
- package/dist/components/admin-permissions/roles.js.map +1 -0
- package/dist/components/admin-permissions/types.d.ts +152 -0
- package/dist/components/admin-permissions/types.js +63 -0
- package/dist/components/admin-permissions/types.js.map +1 -0
- package/dist/components/agent-chat-popup.d.ts +29 -0
- package/dist/components/agent-chat-popup.js +188 -0
- package/dist/components/agent-chat-popup.js.map +1 -0
- package/dist/components/agent-chat.d.ts +143 -0
- package/dist/components/agent-chat.js +578 -0
- package/dist/components/agent-chat.js.map +1 -0
- package/dist/components/app-shell.d.ts +126 -0
- package/dist/components/app-shell.js +297 -0
- package/dist/components/app-shell.js.map +1 -0
- package/dist/components/badge.d.ts +1 -1
- package/dist/components/button-link.js +1 -1
- package/dist/components/button.d.ts +2 -2
- package/dist/components/checkbox.d.ts +1 -1
- package/dist/components/combobox.d.ts +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/consent-screen.d.ts +65 -0
- package/dist/components/consent-screen.js +123 -0
- package/dist/components/consent-screen.js.map +1 -0
- package/dist/components/data-table/data-table.d.ts +15 -1
- package/dist/components/data-table/data-table.js +18 -4
- package/dist/components/data-table/data-table.js.map +1 -1
- package/dist/components/data-table/index.d.ts +4 -4
- package/dist/components/data-table/parts.d.ts +27 -3
- package/dist/components/data-table/parts.js +175 -55
- package/dist/components/data-table/parts.js.map +1 -1
- package/dist/components/data-table/types.d.ts +61 -0
- package/dist/components/data-table/use-data-table.js +91 -6
- package/dist/components/data-table/use-data-table.js.map +1 -1
- package/dist/components/data-table/use-server-source.js +119 -28
- package/dist/components/data-table/use-server-source.js.map +1 -1
- package/dist/components/help-panel.d.ts +131 -0
- package/dist/components/help-panel.js +545 -0
- package/dist/components/help-panel.js.map +1 -0
- package/dist/components/login-screen.d.ts +127 -0
- package/dist/components/login-screen.js +339 -0
- package/dist/components/login-screen.js.map +1 -0
- package/dist/components/session-guard.d.ts +268 -0
- package/dist/components/session-guard.js +632 -0
- package/dist/components/session-guard.js.map +1 -0
- package/dist/components/toast.d.ts +1 -1
- package/dist/core.d.ts +5 -1
- package/dist/core.js +11 -7
- package/dist/data-table.d.ts +13 -4
- package/dist/data-table.js +10 -2
- package/dist/hooks/use-cortena-theme.js +49 -3
- package/dist/hooks/use-cortena-theme.js.map +1 -1
- package/dist/index.d.ts +17 -4
- package/dist/index.js +21 -8
- package/dist/markdown.d.ts +2 -1
- package/dist/markdown.js +2 -1
- package/package.json +16 -4
- package/src/agent-chat/a2ui-block.ts +118 -0
- package/src/agent-chat/agui-client.ts +405 -0
- package/src/agent-chat/bridge.ts +433 -0
- package/src/agent-chat/session.ts +392 -0
- package/src/agent-chat/store.ts +738 -0
- package/src/agent-chat/types.ts +213 -0
- package/src/components/admin-permissions/admin-permissions.tsx +130 -0
- package/src/components/admin-permissions/context.tsx +376 -0
- package/src/components/admin-permissions/index.tsx +32 -0
- package/src/components/admin-permissions/licence.tsx +84 -0
- package/src/components/admin-permissions/matrix.tsx +257 -0
- package/src/components/admin-permissions/members.tsx +204 -0
- package/src/components/admin-permissions/role-assignment.tsx +239 -0
- package/src/components/admin-permissions/roles.tsx +169 -0
- package/src/components/admin-permissions/types.ts +231 -0
- package/src/components/agent-chat-popup.tsx +289 -0
- package/src/components/agent-chat.tsx +843 -0
- package/src/components/app-shell.tsx +502 -0
- package/src/components/consent-screen.tsx +239 -0
- package/src/components/data-table/data-table.tsx +36 -0
- package/src/components/data-table/index.tsx +6 -1
- package/src/components/data-table/parts.tsx +223 -47
- package/src/components/data-table/types.ts +68 -0
- package/src/components/data-table/use-data-table.ts +152 -4
- package/src/components/data-table/use-server-source.ts +150 -12
- package/src/components/help-panel.tsx +765 -0
- package/src/components/login-screen.tsx +479 -0
- package/src/components/session-guard.tsx +1071 -0
- package/src/entries/agent-chat.ts +113 -0
- package/src/entries/core.ts +8 -0
- package/src/entries/data-table.ts +41 -0
- package/src/entries/markdown.ts +25 -0
- package/src/hooks/use-cortena-theme.ts +63 -4
- package/src/index.ts +6 -0
package/dist/index.js
CHANGED
|
@@ -3,22 +3,27 @@ import { cn } from "./lib/cn.js";
|
|
|
3
3
|
import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "./components/accordion.js";
|
|
4
4
|
import { Alert, AlertDescription, AlertIcon, AlertTitle, alertVariants } from "./components/alert.js";
|
|
5
5
|
import { Avatar, AvatarFallback, AvatarImage } from "./components/avatar.js";
|
|
6
|
+
import { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger } from "./components/dropdown-menu.js";
|
|
7
|
+
import { DEFAULT_THEME_STORAGE_KEY, THEME_MESSAGE_TYPE, applyStoredTheme, applyTheme, getThemeInitScript, readStoredTheme, themeFromBackground, themeFromMessage, themeInitScript, useCortenaTheme } from "./hooks/use-cortena-theme.js";
|
|
8
|
+
import { AppShell, BottomRightCluster, BrandMark, HelpButton, ThemeToggle, documentTitle } from "./components/app-shell.js";
|
|
9
|
+
import { Button, buttonVariants } from "./components/button.js";
|
|
10
|
+
import { Input, inputClassName } from "./components/input.js";
|
|
11
|
+
import { Label, labelVariants } from "./components/label.js";
|
|
12
|
+
import { Spinner } from "./components/spinner.js";
|
|
13
|
+
import { AuthScreen, GoogleMark, LoginScreen, MicrosoftMark, httpsLogoUrl } from "./components/login-screen.js";
|
|
6
14
|
import { Badge, badgeVariants } from "./components/badge.js";
|
|
7
15
|
import { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator } from "./components/breadcrumb.js";
|
|
8
|
-
import { Button, buttonVariants } from "./components/button.js";
|
|
9
16
|
import { ButtonLink } from "./components/button-link.js";
|
|
10
17
|
import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "./components/card.js";
|
|
11
18
|
import { Checkbox } from "./components/checkbox.js";
|
|
12
19
|
import { Chip, chipVariants } from "./components/chip.js";
|
|
13
|
-
import { Input, inputClassName } from "./components/input.js";
|
|
14
20
|
import { Combobox, ComboboxChip, ComboboxChips, ComboboxClear, ComboboxCollection, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, ComboboxSeparator, ComboboxStatus, ComboboxTrigger, ComboboxValue, useComboboxFilter } from "./components/combobox.js";
|
|
15
21
|
import { Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger } from "./components/dialog.js";
|
|
16
22
|
import { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandLoading, CommandSeparator, CommandShortcut } from "./components/command.js";
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
23
|
+
import { ConsentScreen } from "./components/consent-screen.js";
|
|
24
|
+
import { DEFAULT_SESSION_POLICY, SESSION_CHANNEL_NAME, SessionExpiryDialog, SessionGuard, decodeSessionClaims, formatCountdown, useSessionGuard } from "./components/session-guard.js";
|
|
19
25
|
import { EmptyState } from "./components/empty-state.js";
|
|
20
26
|
import { ErrorBanner } from "./components/error-banner.js";
|
|
21
|
-
import { Label, labelVariants } from "./components/label.js";
|
|
22
27
|
import { Field, FieldContent, FieldControl, FieldDescription, FieldError, FieldGroup, FieldLabel, Fieldset, FieldsetLegend, fieldVariants } from "./components/field.js";
|
|
23
28
|
import { Kbd } from "./components/kbd.js";
|
|
24
29
|
import { Skeleton } from "./components/skeleton.js";
|
|
@@ -33,7 +38,6 @@ import { Segmented } from "./components/segmented.js";
|
|
|
33
38
|
import { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSeparator, SelectTrigger, SelectValue } from "./components/select.js";
|
|
34
39
|
import { Separator } from "./components/separator.js";
|
|
35
40
|
import { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, sheetVariants } from "./components/sheet.js";
|
|
36
|
-
import { Spinner } from "./components/spinner.js";
|
|
37
41
|
import { StatusDot } from "./components/status-dot.js";
|
|
38
42
|
import { Switch } from "./components/switch.js";
|
|
39
43
|
import { Tabs, TabsContent, TabsIndicator, TabsList, TabsTrigger } from "./components/tabs.js";
|
|
@@ -47,10 +51,18 @@ import { DatePicker, DateRangePicker, formatDateDefault } from "./components/dat
|
|
|
47
51
|
import { Dropzone, FileList, formatFileSize } from "./components/dropzone.js";
|
|
48
52
|
import { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, useForm, useFormField, zodResolver } from "./components/form.js";
|
|
49
53
|
import { downloadCsv, downloadExcel, toCsv, toSheet } from "./components/data-table/export.js";
|
|
50
|
-
import { DataTableColumnHeader, DataTableExportMenu, DataTableFacetedFilter, DataTablePagination, DataTableToolbar, DataTableViewOptions } from "./components/data-table/parts.js";
|
|
54
|
+
import { DataTableColumnHeader, DataTableExportMenu, DataTableFacetedFilter, DataTablePagination, DataTableRefresh, DataTableToolbar, DataTableViewOptions } from "./components/data-table/parts.js";
|
|
51
55
|
import { createColumnHelper, dataTableFeatures } from "./components/data-table/features.js";
|
|
52
56
|
import { useDataTable } from "./components/data-table/use-data-table.js";
|
|
53
57
|
import { DataTable, DataTableView } from "./components/data-table/data-table.js";
|
|
58
|
+
import { ADMIN_ROUTES, ADMIN_ROUTE_LABELS, adminErrorMessage, effectiveRolesOf, sourceGroupOf } from "./components/admin-permissions/types.js";
|
|
59
|
+
import { AdminPermissionsProvider, useAdminPermissions } from "./components/admin-permissions/context.js";
|
|
60
|
+
import { AdminLicenceScreen } from "./components/admin-permissions/licence.js";
|
|
61
|
+
import { AdminMatrix } from "./components/admin-permissions/matrix.js";
|
|
62
|
+
import { DirectRoles, EffectiveRoles, RoleAssignmentDialog } from "./components/admin-permissions/role-assignment.js";
|
|
63
|
+
import { AdminMembers } from "./components/admin-permissions/members.js";
|
|
64
|
+
import { AdminRoles } from "./components/admin-permissions/roles.js";
|
|
65
|
+
import { AdminPermissions } from "./components/admin-permissions/admin-permissions.js";
|
|
54
66
|
import { VIZ_SERIES_COUNT, chartScales, resolveColor, resolveVizSeries, toHex, vizSeriesVars, vizVar } from "./components/chart/tokens.js";
|
|
55
67
|
import { ChartContainer, ChartEmpty, ChartError, ChartLegendContent, ChartLoading, ChartTooltipContent, seriesColor, useChart } from "./components/chart/container.js";
|
|
56
68
|
import { NIVO_TYPES, RECHARTS_TYPES, chartEngine } from "./components/chart/types.js";
|
|
@@ -58,9 +70,10 @@ import { Chart } from "./components/chart/chart.js";
|
|
|
58
70
|
import { ChartLegend, ChartTooltip } from "./components/chart/recharts-parts.js";
|
|
59
71
|
import { Area, AreaChart, Bar, BarChart, CartesianGrid, Cell, ComposedChart, Funnel, FunnelChart, LabelList, Line, LineChart, Pie, PieChart, PolarAngleAxis, PolarGrid, PolarRadiusAxis, Radar, RadarChart, RechartsLegend, RechartsTooltip, ReferenceLine, ResponsiveContainer, Scatter, ScatterChart, XAxis, YAxis } from "./components/chart/index.js";
|
|
60
72
|
import { Markdown, markdownSanitizeSchema } from "./components/markdown.js";
|
|
73
|
+
import { HelpHotkeys, HelpPanel, helpPanelSlot, httpDocumentUrl, parseHelpDocument, resolveHelpTarget, useHelpHotkeys } from "./components/help-panel.js";
|
|
61
74
|
import { A2UIErrorCard } from "./a2ui/views.js";
|
|
62
75
|
import { A2UI_CATALOGUE_ID, catalogueNames, defaultCatalogue } from "./a2ui/catalogue.js";
|
|
63
76
|
import { A2UI_DEFAULT_SURFACE_ID, A2UI_VERSION, foldMessages, getAtPointer, isDataBinding, parseA2UIMessages, pointerSegments, readAction, readChildren, readComponent, resolvePointer, resolveValue, setAtPointer } from "./a2ui/message.js";
|
|
64
77
|
import { A2UIRenderer } from "./a2ui/renderer.js";
|
|
65
78
|
import { SortableHandle, SortableList, arrayMove } from "./components/sortable-list.js";
|
|
66
|
-
export { A2UIErrorCard, A2UIRenderer, A2UI_CATALOGUE_ID, A2UI_DEFAULT_SURFACE_ID, A2UI_VERSION, Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertIcon, AlertTitle, Area, AreaChart, Avatar, AvatarFallback, AvatarImage, Badge, Bar, BarChart, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonLink, Calendar, CalendarDayButton, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CartesianGrid, Cell, Chart, ChartContainer, ChartEmpty, ChartError, ChartLegend, ChartLegendContent, ChartLoading, ChartTooltip, ChartTooltipContent, Checkbox, Chip, Combobox, ComboboxChip, ComboboxChips, ComboboxClear, ComboboxCollection, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, ComboboxSeparator, ComboboxStatus, ComboboxTrigger, ComboboxValue, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandLoading, CommandSeparator, CommandShortcut, ComposedChart, DEFAULT_THEME_STORAGE_KEY, DataTable, DataTableColumnHeader, DataTableExportMenu, DataTableFacetedFilter, DataTablePagination, DataTableToolbar, DataTableView, DataTableViewOptions, DateField, DatePicker, DateRangePicker, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Dropzone, EmptyState, ErrorBanner, Field, FieldContent, FieldControl, FieldDescription, FieldError, FieldGroup, FieldLabel, Fieldset, FieldsetLegend, FileList, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Funnel, FunnelChart, Input, Kbd, Label, LabelList, Line, LineChart, LoadingSkeleton, Markdown, NIVO_TYPES, PageHeader, Pie, PieChart, PolarAngleAxis, PolarGrid, PolarRadiusAxis, Popover, PopoverClose, PopoverContent, PopoverDescription, PopoverTitle, PopoverTrigger, Progress, ProgressIndicator, ProgressLabel, ProgressTrack, ProgressValue, RECHARTS_TYPES, Radar, RadarChart, RadioGroup, RadioGroupItem, RechartsLegend, RechartsTooltip, ReferenceLine, ResponsiveContainer, Scatter, ScatterChart, ScrollArea, ScrollBar, SectionCard, Segmented, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Skeleton, SortableHandle, SortableList, Spinner, StatusDot, Switch, THEME_MESSAGE_TYPE, Tabs, TabsContent, TabsIndicator, TabsList, TabsTrigger, Textarea, Toast, Toaster, Toolbar, ToolbarEnd, ToolbarSeparator, ToolbarStart, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, VIZ_SERIES_COUNT, XAxis, YAxis, alertVariants, applyStoredTheme, applyTheme, arrayMove, badgeVariants, buttonVariants, catalogueNames, chartEngine, chartScales, chipVariants, cn, createColumnHelper, dataTableFeatures, defaultCatalogue, downloadCsv, downloadExcel, fieldVariants, foldMessages, formatDateDefault, formatDateISO, formatDateLong, formatDateShort, formatFileSize, formatRelative, getAtPointer, getThemeInitScript, inputClassName, isDataBinding, labelVariants, markdownSanitizeSchema, parseA2UIMessages, parseDateDefault, parseDateISO, pointerSegments, readAction, readChildren, readComponent, readStoredTheme, resolveColor, resolvePointer, resolveValue, resolveVizSeries, seriesColor, setAtPointer, sheetVariants, textareaClassName, themeFromBackground, themeFromMessage, themeInitScript, toCsv, toHex, toSheet, toastVariants, useChart, useComboboxFilter, useCortenaTheme, useDataTable, useForm, useFormField, useToast, vizSeriesVars, vizVar, zodResolver };
|
|
79
|
+
export { A2UIErrorCard, A2UIRenderer, A2UI_CATALOGUE_ID, A2UI_DEFAULT_SURFACE_ID, A2UI_VERSION, ADMIN_ROUTES, ADMIN_ROUTE_LABELS, Accordion, AccordionContent, AccordionItem, AccordionTrigger, AdminLicenceScreen, AdminMatrix, AdminMembers, AdminPermissions, AdminPermissionsProvider, AdminRoles, Alert, AlertDescription, AlertIcon, AlertTitle, AppShell, Area, AreaChart, AuthScreen, Avatar, AvatarFallback, AvatarImage, Badge, Bar, BarChart, BottomRightCluster, BrandMark, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonLink, Calendar, CalendarDayButton, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CartesianGrid, Cell, Chart, ChartContainer, ChartEmpty, ChartError, ChartLegend, ChartLegendContent, ChartLoading, ChartTooltip, ChartTooltipContent, Checkbox, Chip, Combobox, ComboboxChip, ComboboxChips, ComboboxClear, ComboboxCollection, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, ComboboxSeparator, ComboboxStatus, ComboboxTrigger, ComboboxValue, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandLoading, CommandSeparator, CommandShortcut, ComposedChart, ConsentScreen, DEFAULT_SESSION_POLICY, DEFAULT_THEME_STORAGE_KEY, DataTable, DataTableColumnHeader, DataTableExportMenu, DataTableFacetedFilter, DataTablePagination, DataTableRefresh, DataTableToolbar, DataTableView, DataTableViewOptions, DateField, DatePicker, DateRangePicker, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DirectRoles, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Dropzone, EffectiveRoles, EmptyState, ErrorBanner, Field, FieldContent, FieldControl, FieldDescription, FieldError, FieldGroup, FieldLabel, Fieldset, FieldsetLegend, FileList, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Funnel, FunnelChart, GoogleMark, HelpButton, HelpHotkeys, HelpPanel, Input, Kbd, Label, LabelList, Line, LineChart, LoadingSkeleton, LoginScreen, Markdown, MicrosoftMark, NIVO_TYPES, PageHeader, Pie, PieChart, PolarAngleAxis, PolarGrid, PolarRadiusAxis, Popover, PopoverClose, PopoverContent, PopoverDescription, PopoverTitle, PopoverTrigger, Progress, ProgressIndicator, ProgressLabel, ProgressTrack, ProgressValue, RECHARTS_TYPES, Radar, RadarChart, RadioGroup, RadioGroupItem, RechartsLegend, RechartsTooltip, ReferenceLine, ResponsiveContainer, RoleAssignmentDialog, SESSION_CHANNEL_NAME, Scatter, ScatterChart, ScrollArea, ScrollBar, SectionCard, Segmented, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSeparator, SelectTrigger, SelectValue, Separator, SessionExpiryDialog, SessionGuard, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Skeleton, SortableHandle, SortableList, Spinner, StatusDot, Switch, THEME_MESSAGE_TYPE, Tabs, TabsContent, TabsIndicator, TabsList, TabsTrigger, Textarea, ThemeToggle, Toast, Toaster, Toolbar, ToolbarEnd, ToolbarSeparator, ToolbarStart, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, VIZ_SERIES_COUNT, XAxis, YAxis, adminErrorMessage, alertVariants, applyStoredTheme, applyTheme, arrayMove, badgeVariants, buttonVariants, catalogueNames, chartEngine, chartScales, chipVariants, cn, createColumnHelper, dataTableFeatures, decodeSessionClaims, defaultCatalogue, documentTitle, downloadCsv, downloadExcel, effectiveRolesOf, fieldVariants, foldMessages, formatCountdown, formatDateDefault, formatDateISO, formatDateLong, formatDateShort, formatFileSize, formatRelative, getAtPointer, getThemeInitScript, helpPanelSlot, httpDocumentUrl, httpsLogoUrl, inputClassName, isDataBinding, labelVariants, markdownSanitizeSchema, parseA2UIMessages, parseDateDefault, parseDateISO, parseHelpDocument, pointerSegments, readAction, readChildren, readComponent, readStoredTheme, resolveColor, resolveHelpTarget, resolvePointer, resolveValue, resolveVizSeries, seriesColor, setAtPointer, sheetVariants, sourceGroupOf, textareaClassName, themeFromBackground, themeFromMessage, themeInitScript, toCsv, toHex, toSheet, toastVariants, useAdminPermissions, useChart, useComboboxFilter, useCortenaTheme, useDataTable, useForm, useFormField, useHelpHotkeys, useSessionGuard, useToast, vizSeriesVars, vizVar, zodResolver };
|
package/dist/markdown.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { CodeRendererProps, Markdown, MarkdownComponents as Components, MarkdownProps, markdownSanitizeSchema } from "./components/markdown.js";
|
|
3
|
-
|
|
3
|
+
import { HelpDocument, HelpHotkeys, HelpHotkeysOptions, HelpHotkeysProps, HelpPanel, HelpPanelProps, HelpPanelSlotConfig, HelpRoute, HelpSection, HelpSource, helpPanelSlot, httpDocumentUrl, parseHelpDocument, resolveHelpTarget, useHelpHotkeys } from "./components/help-panel.js";
|
|
4
|
+
export { type CodeRendererProps, type HelpDocument, HelpHotkeys, type HelpHotkeysOptions, type HelpHotkeysProps, HelpPanel, type HelpPanelProps, type HelpPanelSlotConfig, type HelpRoute, type HelpSection, type HelpSource, Markdown, type Components as MarkdownComponents, type MarkdownProps, helpPanelSlot, httpDocumentUrl, markdownSanitizeSchema, parseHelpDocument, resolveHelpTarget, useHelpHotkeys };
|
package/dist/markdown.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { Markdown, markdownSanitizeSchema } from "./components/markdown.js";
|
|
3
|
-
|
|
3
|
+
import { HelpHotkeys, HelpPanel, helpPanelSlot, httpDocumentUrl, parseHelpDocument, resolveHelpTarget, useHelpHotkeys } from "./components/help-panel.js";
|
|
4
|
+
export { HelpHotkeys, HelpPanel, Markdown, helpPanelSlot, httpDocumentUrl, markdownSanitizeSchema, parseHelpDocument, resolveHelpTarget, useHelpHotkeys };
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cortena-ui",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Cortena UI
|
|
5
|
-
"license": "
|
|
3
|
+
"version": "1.5.0",
|
|
4
|
+
"description": "Cortena UI \u2014 the shared React component library for cortenaweb and every Cortena extension. shadcn over Base UI, styled entirely from cortena-design tokens.",
|
|
5
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
8
|
"url": "git+https://github.com/AscendendenceAI/cortena-design.git",
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
"node": ">=22"
|
|
17
17
|
},
|
|
18
18
|
"files": [
|
|
19
|
+
"LICENSE",
|
|
19
20
|
"dist",
|
|
20
21
|
"src",
|
|
21
22
|
"README.md"
|
|
@@ -53,6 +54,10 @@
|
|
|
53
54
|
"types": "./dist/sortable-list.d.ts",
|
|
54
55
|
"default": "./dist/sortable-list.js"
|
|
55
56
|
},
|
|
57
|
+
"./agent-chat": {
|
|
58
|
+
"types": "./dist/agent-chat.d.ts",
|
|
59
|
+
"default": "./dist/agent-chat.js"
|
|
60
|
+
},
|
|
56
61
|
"./styles.css": "./src/styles/index.css",
|
|
57
62
|
"./package.json": "./package.json"
|
|
58
63
|
},
|
|
@@ -69,8 +74,9 @@
|
|
|
69
74
|
"bundle:probe": "node scripts/bundle-probe.mjs"
|
|
70
75
|
},
|
|
71
76
|
"peerDependencies": {
|
|
77
|
+
"@ag-ui/client": "^0.0.59",
|
|
72
78
|
"@tanstack/react-query": "^5.0.0",
|
|
73
|
-
"cortena-design": ">=3.
|
|
79
|
+
"cortena-design": ">=3.4.0",
|
|
74
80
|
"react": "^19.0.0",
|
|
75
81
|
"react-dom": "^19.0.0",
|
|
76
82
|
"zod": "^3.25.0 || ^4.0.0"
|
|
@@ -108,6 +114,7 @@
|
|
|
108
114
|
"tw-animate-css": "^1.4.0"
|
|
109
115
|
},
|
|
110
116
|
"devDependencies": {
|
|
117
|
+
"@ag-ui/client": "^0.0.59",
|
|
111
118
|
"@tailwindcss/vite": "^4.3.3",
|
|
112
119
|
"@tanstack/react-query": "^5.102.8",
|
|
113
120
|
"@types/node": "^22.20.1",
|
|
@@ -130,5 +137,10 @@
|
|
|
130
137
|
},
|
|
131
138
|
"publishConfig": {
|
|
132
139
|
"access": "public"
|
|
140
|
+
},
|
|
141
|
+
"peerDependenciesMeta": {
|
|
142
|
+
"@ag-ui/client": {
|
|
143
|
+
"optional": true
|
|
144
|
+
}
|
|
133
145
|
}
|
|
134
146
|
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2UI blocks as the chat carries them.
|
|
3
|
+
*
|
|
4
|
+
* Ported from `cortena-shared/src/a2ui/block.ts` (Cortena monorepo, DESIGN-35).
|
|
5
|
+
* `cortena-shared` is not published, so the parts this package needs are copied
|
|
6
|
+
* rather than imported; keep the two in step when either changes.
|
|
7
|
+
*
|
|
8
|
+
* An agent draws UI by writing a ```a2ui fenced block, cortenacore strips it out
|
|
9
|
+
* of the prose, and it reaches the client on a channel of its own — a
|
|
10
|
+
* `CUSTOM cortena.a2ui` event on the AG-UI transport. Both the streaming bubble
|
|
11
|
+
* and the finished message carry the result here, so the bubble has exactly one
|
|
12
|
+
* thing to render and no markdown to parse.
|
|
13
|
+
*
|
|
14
|
+
* Nothing in this module knows about React: the `messages` array is handed to
|
|
15
|
+
* `<A2UIRenderer message={...} />` verbatim, and folding a surface, validating a
|
|
16
|
+
* component and drawing it are the renderer's job.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/** One block, as the transport delivers it. */
|
|
20
|
+
export interface A2UIChatBlock {
|
|
21
|
+
/**
|
|
22
|
+
* Accumulation key: the surface id the payload names, or a key private to the
|
|
23
|
+
* block when it names none. Two blocks with the same key are two pushes to one
|
|
24
|
+
* surface and fold together.
|
|
25
|
+
*/
|
|
26
|
+
surfaceId: string;
|
|
27
|
+
/** A2UI messages, in arrival order. */
|
|
28
|
+
messages: unknown[];
|
|
29
|
+
/** Where the block came from: assistant text, or a `canvas` tool push. */
|
|
30
|
+
source?: "text" | "canvas";
|
|
31
|
+
/** Assistant message the block belonged to, when the transport knows it. */
|
|
32
|
+
messageId?: string;
|
|
33
|
+
/** Set when the fence never closed or its body did not parse. */
|
|
34
|
+
error?: string;
|
|
35
|
+
/** The raw fence body; only present with `error`. */
|
|
36
|
+
raw?: string;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function isRecord(value: unknown): value is Record<string, unknown> {
|
|
40
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** Read one block out of an unknown wire value; `null` when it is not one. */
|
|
44
|
+
export function readA2UIBlock(value: unknown): A2UIChatBlock | null {
|
|
45
|
+
if (!isRecord(value)) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
const messages = Array.isArray(value.messages) ? value.messages : [];
|
|
49
|
+
const surfaceId =
|
|
50
|
+
typeof value.surfaceId === "string" && value.surfaceId ? value.surfaceId : "@default";
|
|
51
|
+
const error = typeof value.error === "string" && value.error ? value.error : undefined;
|
|
52
|
+
if (messages.length === 0 && !error) {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
surfaceId,
|
|
57
|
+
messages,
|
|
58
|
+
...(value.source === "canvas" || value.source === "text" ? { source: value.source } : {}),
|
|
59
|
+
...(typeof value.messageId === "string" && value.messageId
|
|
60
|
+
? { messageId: value.messageId }
|
|
61
|
+
: {}),
|
|
62
|
+
...(error ? { error } : {}),
|
|
63
|
+
...(typeof value.raw === "string" ? { raw: value.raw } : {}),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Pull the `a2ui` content parts out of a chat event message.
|
|
69
|
+
*
|
|
70
|
+
* A client that does not know the type ignores it, which is what lets the same
|
|
71
|
+
* message shape carry blocks to a reader that cannot draw them.
|
|
72
|
+
*/
|
|
73
|
+
export function extractA2UIBlocks(
|
|
74
|
+
message?: { content?: Array<Record<string, unknown>> } | null,
|
|
75
|
+
): A2UIChatBlock[] {
|
|
76
|
+
const blocks: A2UIChatBlock[] = [];
|
|
77
|
+
for (const part of message?.content ?? []) {
|
|
78
|
+
if (!isRecord(part) || part.type !== "a2ui") {
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
const block = readA2UIBlock(part.a2ui ?? part);
|
|
82
|
+
if (block) {
|
|
83
|
+
blocks.push(block);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return foldA2UIBlocks(blocks);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Fold blocks that share a surface id into one, concatenating their messages.
|
|
91
|
+
*
|
|
92
|
+
* An agent that streams a surface writes the shell, then the rows, then a
|
|
93
|
+
* correction — three fences naming one surface. The renderer folds a message
|
|
94
|
+
* list onto a surface, so handing it the concatenation renders the finished
|
|
95
|
+
* surface; handing it three separate blocks would draw the shell three times.
|
|
96
|
+
*/
|
|
97
|
+
export function foldA2UIBlocks(blocks: readonly A2UIChatBlock[]): A2UIChatBlock[] {
|
|
98
|
+
const byId = new Map<string, A2UIChatBlock>();
|
|
99
|
+
const order: string[] = [];
|
|
100
|
+
for (const block of blocks) {
|
|
101
|
+
const existing = byId.get(block.surfaceId);
|
|
102
|
+
if (!existing) {
|
|
103
|
+
byId.set(block.surfaceId, { ...block, messages: [...block.messages] });
|
|
104
|
+
order.push(block.surfaceId);
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
existing.messages.push(...block.messages);
|
|
108
|
+
// The first failure is the one worth showing: later ones are usually the
|
|
109
|
+
// same malformed payload arriving again.
|
|
110
|
+
if (block.error && !existing.error) {
|
|
111
|
+
existing.error = block.error;
|
|
112
|
+
if (block.raw !== undefined) {
|
|
113
|
+
existing.raw = block.raw;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return order.map((id) => byId.get(id)!).filter(Boolean);
|
|
118
|
+
}
|