@agent-native/dispatch 0.13.9 → 0.13.11
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 +7 -28
- package/dist/actions/navigate.js +1 -1
- package/dist/actions/navigate.js.map +1 -1
- package/dist/components/agents-panel.js +3 -3
- package/dist/components/agents-panel.js.map +1 -1
- package/dist/components/app-keys-popover.d.ts.map +1 -1
- package/dist/components/app-keys-popover.js +3 -3
- package/dist/components/app-keys-popover.js.map +1 -1
- package/dist/components/create-app-popover.d.ts.map +1 -1
- package/dist/components/create-app-popover.js +2 -2
- package/dist/components/create-app-popover.js.map +1 -1
- package/dist/components/dispatch-control-plane.d.ts.map +1 -1
- package/dist/components/dispatch-control-plane.js +19 -7
- package/dist/components/dispatch-control-plane.js.map +1 -1
- package/dist/components/dispatch-shell.d.ts.map +1 -1
- package/dist/components/dispatch-shell.js +2 -2
- package/dist/components/dispatch-shell.js.map +1 -1
- package/dist/components/layout/Header.js +2 -1
- package/dist/components/layout/Header.js.map +1 -1
- package/dist/components/layout/Layout.d.ts.map +1 -1
- package/dist/components/layout/Layout.js +12 -5
- package/dist/components/layout/Layout.js.map +1 -1
- package/dist/components/messaging-setup-panel.d.ts.map +1 -1
- package/dist/components/messaging-setup-panel.js +4 -4
- package/dist/components/messaging-setup-panel.js.map +1 -1
- package/dist/components/task-queue-health.d.ts +2 -0
- package/dist/components/task-queue-health.d.ts.map +1 -0
- package/dist/components/task-queue-health.js +49 -0
- package/dist/components/task-queue-health.js.map +1 -0
- package/dist/components/ui/accordion.js.map +1 -1
- package/dist/components/ui/alert-dialog.js +1 -1
- package/dist/components/ui/alert-dialog.js.map +1 -1
- package/dist/components/ui/alert.js.map +1 -1
- package/dist/components/ui/avatar.js.map +1 -1
- package/dist/components/ui/badge.js.map +1 -1
- package/dist/components/ui/breadcrumb.js.map +1 -1
- package/dist/components/ui/button.js.map +1 -1
- package/dist/components/ui/calendar.js +1 -1
- package/dist/components/ui/calendar.js.map +1 -1
- package/dist/components/ui/card.js.map +1 -1
- package/dist/components/ui/carousel.d.ts +2 -2
- package/dist/components/ui/carousel.d.ts.map +1 -1
- package/dist/components/ui/carousel.js +1 -1
- package/dist/components/ui/carousel.js.map +1 -1
- package/dist/components/ui/chart.js.map +1 -1
- package/dist/components/ui/checkbox.js.map +1 -1
- package/dist/components/ui/command.js +1 -1
- package/dist/components/ui/command.js.map +1 -1
- package/dist/components/ui/context-menu.js.map +1 -1
- package/dist/components/ui/dialog.js.map +1 -1
- package/dist/components/ui/drawer.js.map +1 -1
- package/dist/components/ui/dropdown-menu.js.map +1 -1
- package/dist/components/ui/form.js +1 -1
- package/dist/components/ui/form.js.map +1 -1
- package/dist/components/ui/hover-card.js.map +1 -1
- package/dist/components/ui/input-otp.js.map +1 -1
- package/dist/components/ui/input.js.map +1 -1
- package/dist/components/ui/label.js.map +1 -1
- package/dist/components/ui/menubar.js.map +1 -1
- package/dist/components/ui/navigation-menu.js.map +1 -1
- package/dist/components/ui/pagination.d.ts +1 -1
- package/dist/components/ui/pagination.d.ts.map +1 -1
- package/dist/components/ui/pagination.js +1 -1
- package/dist/components/ui/pagination.js.map +1 -1
- package/dist/components/ui/popover.js.map +1 -1
- package/dist/components/ui/progress.js.map +1 -1
- package/dist/components/ui/radio-group.js.map +1 -1
- package/dist/components/ui/resizable.js.map +1 -1
- package/dist/components/ui/scroll-area.js.map +1 -1
- package/dist/components/ui/select.js.map +1 -1
- package/dist/components/ui/separator.js.map +1 -1
- package/dist/components/ui/sheet.js.map +1 -1
- package/dist/components/ui/sidebar.d.ts +2 -2
- package/dist/components/ui/sidebar.d.ts.map +1 -1
- package/dist/components/ui/sidebar.js +6 -6
- package/dist/components/ui/sidebar.js.map +1 -1
- package/dist/components/ui/skeleton.js.map +1 -1
- package/dist/components/ui/slider.js.map +1 -1
- package/dist/components/ui/sonner.js.map +1 -1
- package/dist/components/ui/spinner.js.map +1 -1
- package/dist/components/ui/switch.js.map +1 -1
- package/dist/components/ui/table.js.map +1 -1
- package/dist/components/ui/tabs.js.map +1 -1
- package/dist/components/ui/textarea.js.map +1 -1
- package/dist/components/ui/toast.js.map +1 -1
- package/dist/components/ui/toaster.js +1 -1
- package/dist/components/ui/toaster.js.map +1 -1
- package/dist/components/ui/toggle-group.js +1 -1
- package/dist/components/ui/toggle-group.js.map +1 -1
- package/dist/components/ui/toggle.js.map +1 -1
- package/dist/components/ui/tooltip.js.map +1 -1
- package/dist/components/ui/use-toast.d.ts.map +1 -1
- package/dist/components/ui/use-toast.js.map +1 -1
- package/dist/components/workspace-app-card.d.ts.map +1 -1
- package/dist/components/workspace-app-card.js +10 -10
- package/dist/components/workspace-app-card.js.map +1 -1
- package/dist/components/workspace-resource-effective-stack.js +1 -1
- package/dist/components/workspace-resource-effective-stack.js.map +1 -1
- package/dist/components/workspace-resource-impact-preview.d.ts.map +1 -1
- package/dist/components/workspace-resource-impact-preview.js +2 -2
- package/dist/components/workspace-resource-impact-preview.js.map +1 -1
- package/dist/hooks/use-navigation-state.js +5 -0
- package/dist/hooks/use-navigation-state.js.map +1 -1
- package/dist/hooks/use-toast.d.ts.map +1 -1
- package/dist/hooks/use-toast.js.map +1 -1
- package/dist/lib/automation-display.d.ts +13 -0
- package/dist/lib/automation-display.d.ts.map +1 -0
- package/dist/lib/automation-display.js +62 -0
- package/dist/lib/automation-display.js.map +1 -0
- package/dist/lib/task-queue.d.ts +19 -0
- package/dist/lib/task-queue.d.ts.map +1 -0
- package/dist/lib/task-queue.js +54 -0
- package/dist/lib/task-queue.js.map +1 -0
- package/dist/routes/index.d.ts.map +1 -1
- package/dist/routes/index.js +1 -0
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/pages/$appId.js.map +1 -1
- package/dist/routes/pages/_index.js.map +1 -1
- package/dist/routes/pages/agents.d.ts.map +1 -1
- package/dist/routes/pages/agents.js +1 -1
- package/dist/routes/pages/agents.js.map +1 -1
- package/dist/routes/pages/approval.js.map +1 -1
- package/dist/routes/pages/approvals.js.map +1 -1
- package/dist/routes/pages/apps.$appId.js.map +1 -1
- package/dist/routes/pages/apps.js.map +1 -1
- package/dist/routes/pages/audit.js.map +1 -1
- package/dist/routes/pages/automations.d.ts +5 -0
- package/dist/routes/pages/automations.d.ts.map +1 -0
- package/dist/routes/pages/automations.js +106 -0
- package/dist/routes/pages/automations.js.map +1 -0
- package/dist/routes/pages/chat.js.map +1 -1
- package/dist/routes/pages/destinations.d.ts.map +1 -1
- package/dist/routes/pages/destinations.js +31 -27
- package/dist/routes/pages/destinations.js.map +1 -1
- package/dist/routes/pages/dreams.d.ts.map +1 -1
- package/dist/routes/pages/dreams.js +1 -1
- package/dist/routes/pages/dreams.js.map +1 -1
- package/dist/routes/pages/identities.js.map +1 -1
- package/dist/routes/pages/integrations.js.map +1 -1
- package/dist/routes/pages/messaging.js.map +1 -1
- package/dist/routes/pages/metrics.js.map +1 -1
- package/dist/routes/pages/new-app.js.map +1 -1
- package/dist/routes/pages/overview.d.ts +2 -2
- package/dist/routes/pages/overview.js.map +1 -1
- package/dist/routes/pages/settings.d.ts.map +1 -1
- package/dist/routes/pages/settings.js +2 -2
- package/dist/routes/pages/settings.js.map +1 -1
- package/dist/routes/pages/thread-debug.d.ts.map +1 -1
- package/dist/routes/pages/thread-debug.js +1 -1
- package/dist/routes/pages/thread-debug.js.map +1 -1
- package/dist/routes/pages/vault.d.ts.map +1 -1
- package/dist/routes/pages/vault.js +1 -1
- package/dist/routes/pages/vault.js.map +1 -1
- package/dist/routes/pages/workspace.d.ts.map +1 -1
- package/dist/routes/pages/workspace.js +1 -1
- package/dist/routes/pages/workspace.js.map +1 -1
- package/dist/server/lib/dispatch-integrations.d.ts.map +1 -1
- package/dist/server/lib/dispatch-integrations.js +39 -0
- package/dist/server/lib/dispatch-integrations.js.map +1 -1
- package/dist/server/lib/pre-auth-routing.d.ts.map +1 -1
- package/dist/server/lib/pre-auth-routing.js +1 -0
- package/dist/server/lib/pre-auth-routing.js.map +1 -1
- package/dist/server/plugins/integrations.d.ts.map +1 -1
- package/dist/server/plugins/integrations.js +12 -1
- package/dist/server/plugins/integrations.js.map +1 -1
- package/package.json +7 -7
- package/src/actions/navigate.ts +1 -1
- package/src/components/agents-panel.tsx +3 -3
- package/src/components/app-keys-popover.tsx +3 -7
- package/src/components/create-app-popover.tsx +2 -6
- package/src/components/dispatch-control-plane.tsx +48 -7
- package/src/components/dispatch-shell.tsx +2 -6
- package/src/components/layout/Header.tsx +2 -2
- package/src/components/layout/Layout.tsx +13 -15
- package/src/components/messaging-setup-panel.tsx +4 -8
- package/src/components/task-queue-health.tsx +166 -0
- package/src/components/ui/accordion.tsx +1 -1
- package/src/components/ui/alert-dialog.tsx +2 -2
- package/src/components/ui/alert.tsx +1 -1
- package/src/components/ui/avatar.tsx +1 -1
- package/src/components/ui/badge.tsx +1 -1
- package/src/components/ui/breadcrumb.tsx +1 -1
- package/src/components/ui/button.tsx +1 -1
- package/src/components/ui/calendar.tsx +2 -2
- package/src/components/ui/card.tsx +1 -1
- package/src/components/ui/carousel.tsx +2 -2
- package/src/components/ui/chart.tsx +1 -1
- package/src/components/ui/checkbox.tsx +1 -1
- package/src/components/ui/command.tsx +2 -2
- package/src/components/ui/context-menu.tsx +1 -1
- package/src/components/ui/dialog.tsx +1 -1
- package/src/components/ui/drawer.tsx +1 -1
- package/src/components/ui/dropdown-menu.tsx +1 -1
- package/src/components/ui/form.tsx +2 -2
- package/src/components/ui/hover-card.tsx +1 -1
- package/src/components/ui/input-otp.tsx +1 -1
- package/src/components/ui/input.tsx +1 -1
- package/src/components/ui/label.tsx +1 -1
- package/src/components/ui/menubar.tsx +1 -1
- package/src/components/ui/navigation-menu.tsx +1 -1
- package/src/components/ui/pagination.tsx +2 -2
- package/src/components/ui/popover.tsx +1 -1
- package/src/components/ui/progress.tsx +1 -1
- package/src/components/ui/radio-group.tsx +1 -1
- package/src/components/ui/resizable.tsx +1 -1
- package/src/components/ui/scroll-area.tsx +1 -1
- package/src/components/ui/select.tsx +1 -1
- package/src/components/ui/separator.tsx +1 -1
- package/src/components/ui/sheet.tsx +1 -1
- package/src/components/ui/sidebar.tsx +8 -13
- package/src/components/ui/skeleton.tsx +1 -1
- package/src/components/ui/slider.tsx +1 -1
- package/src/components/ui/sonner.tsx +1 -1
- package/src/components/ui/spinner.tsx +1 -1
- package/src/components/ui/switch.tsx +1 -1
- package/src/components/ui/table.tsx +1 -1
- package/src/components/ui/tabs.tsx +1 -1
- package/src/components/ui/textarea.tsx +1 -1
- package/src/components/ui/toast.tsx +1 -1
- package/src/components/ui/toaster.tsx +2 -2
- package/src/components/ui/toggle-group.tsx +2 -2
- package/src/components/ui/toggle.tsx +1 -1
- package/src/components/ui/tooltip.tsx +1 -1
- package/src/components/ui/use-toast.ts +1 -1
- package/src/components/workspace-app-card.tsx +16 -20
- package/src/components/workspace-resource-effective-stack.tsx +2 -2
- package/src/components/workspace-resource-impact-preview.tsx +2 -3
- package/src/hooks/use-navigation-state.spec.ts +7 -0
- package/src/hooks/use-navigation-state.ts +4 -0
- package/src/hooks/use-toast.ts +1 -1
- package/src/lib/automation-display.spec.ts +95 -0
- package/src/lib/automation-display.ts +70 -0
- package/src/lib/task-queue.spec.ts +57 -0
- package/src/lib/task-queue.ts +72 -0
- package/src/routes/index.ts +1 -0
- package/src/routes/pages/$appId.tsx +6 -6
- package/src/routes/pages/_index.tsx +1 -1
- package/src/routes/pages/agents.tsx +8 -5
- package/src/routes/pages/approval.tsx +4 -4
- package/src/routes/pages/approvals.tsx +4 -4
- package/src/routes/pages/apps.$appId.tsx +5 -5
- package/src/routes/pages/apps.tsx +8 -8
- package/src/routes/pages/audit.tsx +1 -1
- package/src/routes/pages/automations.tsx +280 -0
- package/src/routes/pages/chat.tsx +1 -1
- package/src/routes/pages/destinations.tsx +163 -154
- package/src/routes/pages/dreams.tsx +22 -18
- package/src/routes/pages/identities.tsx +2 -2
- package/src/routes/pages/integrations.tsx +8 -8
- package/src/routes/pages/messaging.tsx +2 -2
- package/src/routes/pages/metrics.tsx +6 -6
- package/src/routes/pages/new-app.tsx +1 -1
- package/src/routes/pages/overview.tsx +1 -1
- package/src/routes/pages/settings.tsx +37 -6
- package/src/routes/pages/thread-debug.tsx +14 -9
- package/src/routes/pages/vault.tsx +17 -12
- package/src/routes/pages/workspace.tsx +17 -12
- package/src/server/lib/dispatch-integrations.spec.ts +92 -1
- package/src/server/lib/dispatch-integrations.ts +48 -0
- package/src/server/lib/pre-auth-routing.ts +1 -0
- package/src/server/plugins/integrations.ts +13 -1
|
@@ -2,7 +2,7 @@ import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
|
|
|
2
2
|
import { IconCheck } from "@tabler/icons-react";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
|
|
5
|
-
import { cn } from "
|
|
5
|
+
import { cn } from "../../lib/utils";
|
|
6
6
|
|
|
7
7
|
const Checkbox = React.forwardRef<
|
|
8
8
|
React.ElementRef<typeof CheckboxPrimitive.Root>,
|
|
@@ -3,8 +3,8 @@ import { IconSearch } from "@tabler/icons-react";
|
|
|
3
3
|
import { Command as CommandPrimitive } from "cmdk";
|
|
4
4
|
import * as React from "react";
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { cn } from "../../lib/utils";
|
|
7
|
+
import { Dialog, DialogContent, DialogTitle } from "./dialog";
|
|
8
8
|
|
|
9
9
|
const Command = React.forwardRef<
|
|
10
10
|
React.ElementRef<typeof CommandPrimitive>,
|
|
@@ -2,7 +2,7 @@ import * as ContextMenuPrimitive from "@radix-ui/react-context-menu";
|
|
|
2
2
|
import { IconCheck, IconChevronRight, IconCircle } from "@tabler/icons-react";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
|
|
5
|
-
import { cn } from "
|
|
5
|
+
import { cn } from "../../lib/utils";
|
|
6
6
|
|
|
7
7
|
const ContextMenu = ContextMenuPrimitive.Root;
|
|
8
8
|
|
|
@@ -2,7 +2,7 @@ import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
|
2
2
|
import { IconCheck, IconChevronRight, IconCircle } from "@tabler/icons-react";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
|
|
5
|
-
import { cn } from "
|
|
5
|
+
import { cn } from "../../lib/utils";
|
|
6
6
|
|
|
7
7
|
const DropdownMenu = DropdownMenuPrimitive.Root;
|
|
8
8
|
|
|
@@ -10,8 +10,8 @@ import {
|
|
|
10
10
|
useFormContext,
|
|
11
11
|
} from "react-hook-form";
|
|
12
12
|
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
13
|
+
import { cn } from "../../lib/utils";
|
|
14
|
+
import { Label } from "./label";
|
|
15
15
|
|
|
16
16
|
const Form = FormProvider;
|
|
17
17
|
|
|
@@ -2,7 +2,7 @@ import { IconPoint } from "@tabler/icons-react";
|
|
|
2
2
|
import { OTPInput, OTPInputContext } from "input-otp";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
|
|
5
|
-
import { cn } from "
|
|
5
|
+
import { cn } from "../../lib/utils";
|
|
6
6
|
|
|
7
7
|
const InputOTP = React.forwardRef<
|
|
8
8
|
React.ElementRef<typeof OTPInput>,
|
|
@@ -2,7 +2,7 @@ import * as LabelPrimitive from "@radix-ui/react-label";
|
|
|
2
2
|
import { cva, type VariantProps } from "class-variance-authority";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
|
|
5
|
-
import { cn } from "
|
|
5
|
+
import { cn } from "../../lib/utils";
|
|
6
6
|
|
|
7
7
|
const labelVariants = cva(
|
|
8
8
|
"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
|
|
@@ -2,7 +2,7 @@ import * as MenubarPrimitive from "@radix-ui/react-menubar";
|
|
|
2
2
|
import { IconCheck, IconChevronRight, IconCircle } from "@tabler/icons-react";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
|
|
5
|
-
import { cn } from "
|
|
5
|
+
import { cn } from "../../lib/utils";
|
|
6
6
|
|
|
7
7
|
// Explicit type annotations needed because TS can't generate portable .d.ts
|
|
8
8
|
// declarations for these without referencing internal Radix types from a
|
|
@@ -3,7 +3,7 @@ import { IconChevronDown } from "@tabler/icons-react";
|
|
|
3
3
|
import { cva } from "class-variance-authority";
|
|
4
4
|
import * as React from "react";
|
|
5
5
|
|
|
6
|
-
import { cn } from "
|
|
6
|
+
import { cn } from "../../lib/utils";
|
|
7
7
|
|
|
8
8
|
const NavigationMenu = React.forwardRef<
|
|
9
9
|
React.ElementRef<typeof NavigationMenuPrimitive.Root>,
|
|
@@ -5,8 +5,8 @@ import {
|
|
|
5
5
|
} from "@tabler/icons-react";
|
|
6
6
|
import * as React from "react";
|
|
7
7
|
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
8
|
+
import { cn } from "../../lib/utils";
|
|
9
|
+
import { ButtonProps, buttonVariants } from "./button";
|
|
10
10
|
|
|
11
11
|
const Pagination = ({ className, ...props }: React.ComponentProps<"nav">) => (
|
|
12
12
|
<nav
|
|
@@ -2,7 +2,7 @@ import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
|
|
|
2
2
|
import { IconCircle } from "@tabler/icons-react";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
|
|
5
|
-
import { cn } from "
|
|
5
|
+
import { cn } from "../../lib/utils";
|
|
6
6
|
|
|
7
7
|
const RadioGroup = React.forwardRef<
|
|
8
8
|
React.ElementRef<typeof RadioGroupPrimitive.Root>,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
|
|
4
|
-
import { cn } from "
|
|
4
|
+
import { cn } from "../../lib/utils";
|
|
5
5
|
|
|
6
6
|
const ScrollArea = React.forwardRef<
|
|
7
7
|
React.ElementRef<typeof ScrollAreaPrimitive.Root>,
|
|
@@ -2,7 +2,7 @@ import * as SelectPrimitive from "@radix-ui/react-select";
|
|
|
2
2
|
import { IconCheck, IconChevronDown, IconChevronUp } from "@tabler/icons-react";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
|
|
5
|
-
import { cn } from "
|
|
5
|
+
import { cn } from "../../lib/utils";
|
|
6
6
|
|
|
7
7
|
const Select = SelectPrimitive.Root;
|
|
8
8
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as SeparatorPrimitive from "@radix-ui/react-separator";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
|
|
4
|
-
import { cn } from "
|
|
4
|
+
import { cn } from "../../lib/utils";
|
|
5
5
|
|
|
6
6
|
const Separator = React.forwardRef<
|
|
7
7
|
React.ElementRef<typeof SeparatorPrimitive.Root>,
|
|
@@ -3,24 +3,19 @@ import { IconLayoutSidebar } from "@tabler/icons-react";
|
|
|
3
3
|
import { VariantProps, cva } from "class-variance-authority";
|
|
4
4
|
import * as React from "react";
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
SheetTitle,
|
|
14
|
-
} from "@/components/ui/sheet";
|
|
15
|
-
import { Skeleton } from "@/components/ui/skeleton";
|
|
6
|
+
import { useIsMobile } from "../../hooks/use-mobile";
|
|
7
|
+
import { cn } from "../../lib/utils";
|
|
8
|
+
import { Button } from "./button";
|
|
9
|
+
import { Input } from "./input";
|
|
10
|
+
import { Separator } from "./separator";
|
|
11
|
+
import { Sheet, SheetContent, SheetDescription, SheetTitle } from "./sheet";
|
|
12
|
+
import { Skeleton } from "./skeleton";
|
|
16
13
|
import {
|
|
17
14
|
Tooltip,
|
|
18
15
|
TooltipContent,
|
|
19
16
|
TooltipProvider,
|
|
20
17
|
TooltipTrigger,
|
|
21
|
-
} from "
|
|
22
|
-
import { useIsMobile } from "@/hooks/use-mobile";
|
|
23
|
-
import { cn } from "@/lib/utils";
|
|
18
|
+
} from "./tooltip";
|
|
24
19
|
|
|
25
20
|
const SIDEBAR_COOKIE_NAME = "sidebar:state";
|
|
26
21
|
const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
|
|
@@ -3,7 +3,7 @@ import { IconX } from "@tabler/icons-react";
|
|
|
3
3
|
import { cva, type VariantProps } from "class-variance-authority";
|
|
4
4
|
import * as React from "react";
|
|
5
5
|
|
|
6
|
-
import { cn } from "
|
|
6
|
+
import { cn } from "../../lib/utils";
|
|
7
7
|
|
|
8
8
|
const ToastProvider = ToastPrimitives.Provider;
|
|
9
9
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { useToast } from "../../hooks/use-toast";
|
|
1
2
|
import {
|
|
2
3
|
Toast,
|
|
3
4
|
ToastClose,
|
|
@@ -5,8 +6,7 @@ import {
|
|
|
5
6
|
ToastProvider,
|
|
6
7
|
ToastTitle,
|
|
7
8
|
ToastViewport,
|
|
8
|
-
} from "
|
|
9
|
-
import { useToast } from "@/hooks/use-toast";
|
|
9
|
+
} from "./toast";
|
|
10
10
|
|
|
11
11
|
export function Toaster() {
|
|
12
12
|
const { toasts } = useToast();
|
|
@@ -2,8 +2,8 @@ import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
|
|
|
2
2
|
import { type VariantProps } from "class-variance-authority";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import { cn } from "../../lib/utils";
|
|
6
|
+
import { toggleVariants } from "./toggle";
|
|
7
7
|
|
|
8
8
|
const ToggleGroupContext = React.createContext<
|
|
9
9
|
VariantProps<typeof toggleVariants>
|
|
@@ -2,7 +2,7 @@ import * as TogglePrimitive from "@radix-ui/react-toggle";
|
|
|
2
2
|
import { cva, type VariantProps } from "class-variance-authority";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
|
|
5
|
-
import { cn } from "
|
|
5
|
+
import { cn } from "../../lib/utils";
|
|
6
6
|
|
|
7
7
|
const toggleVariants = cva(
|
|
8
8
|
"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground",
|
|
@@ -15,9 +15,15 @@ import {
|
|
|
15
15
|
import { useEffect, useState, type FormEvent } from "react";
|
|
16
16
|
import { toast } from "sonner";
|
|
17
17
|
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
|
|
18
|
+
import { cn } from "../lib/utils";
|
|
19
|
+
import {
|
|
20
|
+
isPendingBuilderHref,
|
|
21
|
+
workspaceAppHref,
|
|
22
|
+
type WorkspaceAppSummary,
|
|
23
|
+
} from "../lib/workspace-apps";
|
|
24
|
+
import { AppKeysPopover } from "./app-keys-popover";
|
|
25
|
+
import { Badge } from "./ui/badge";
|
|
26
|
+
import { Button } from "./ui/button";
|
|
21
27
|
import {
|
|
22
28
|
Dialog,
|
|
23
29
|
DialogContent,
|
|
@@ -26,28 +32,18 @@ import {
|
|
|
26
32
|
DialogHeader,
|
|
27
33
|
DialogTitle,
|
|
28
34
|
DialogTrigger,
|
|
29
|
-
} from "
|
|
35
|
+
} from "./ui/dialog";
|
|
30
36
|
import {
|
|
31
37
|
DropdownMenu,
|
|
32
38
|
DropdownMenuContent,
|
|
33
39
|
DropdownMenuItem,
|
|
34
40
|
DropdownMenuTrigger,
|
|
35
|
-
} from "
|
|
36
|
-
import { Input } from "
|
|
37
|
-
import { Label } from "
|
|
38
|
-
import { Textarea } from "
|
|
39
|
-
import {
|
|
40
|
-
|
|
41
|
-
TooltipContent,
|
|
42
|
-
TooltipTrigger,
|
|
43
|
-
} from "@/components/ui/tooltip";
|
|
44
|
-
import { AppResourceEffectiveStack } from "@/components/workspace-resource-effective-stack";
|
|
45
|
-
import { cn } from "@/lib/utils";
|
|
46
|
-
import {
|
|
47
|
-
isPendingBuilderHref,
|
|
48
|
-
workspaceAppHref,
|
|
49
|
-
type WorkspaceAppSummary,
|
|
50
|
-
} from "@/lib/workspace-apps";
|
|
41
|
+
} from "./ui/dropdown-menu";
|
|
42
|
+
import { Input } from "./ui/input";
|
|
43
|
+
import { Label } from "./ui/label";
|
|
44
|
+
import { Textarea } from "./ui/textarea";
|
|
45
|
+
import { Tooltip, TooltipContent, TooltipTrigger } from "./ui/tooltip";
|
|
46
|
+
import { AppResourceEffectiveStack } from "./workspace-resource-effective-stack";
|
|
51
47
|
|
|
52
48
|
export function WorkspaceAppCard({
|
|
53
49
|
app,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useActionQuery } from "@agent-native/core/client";
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { cn } from "../lib/utils";
|
|
4
|
+
import { Badge } from "./ui/badge";
|
|
5
5
|
|
|
6
6
|
export function appAvailabilityLabel(value?: string) {
|
|
7
7
|
switch (value) {
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { useActionQuery } from "@agent-native/core/client";
|
|
2
2
|
|
|
3
|
-
import { Badge } from "
|
|
4
|
-
import { Skeleton } from "
|
|
5
|
-
|
|
3
|
+
import { Badge } from "./ui/badge";
|
|
4
|
+
import { Skeleton } from "./ui/skeleton";
|
|
6
5
|
import { formatResourceTimestamp } from "./workspace-resource-effective-stack";
|
|
7
6
|
|
|
8
7
|
function isApprovalRequest(result: any): boolean {
|
|
@@ -35,4 +35,11 @@ describe("buildDispatchNavigationState", () => {
|
|
|
35
35
|
query: "focus",
|
|
36
36
|
});
|
|
37
37
|
});
|
|
38
|
+
|
|
39
|
+
it("recognizes the automations route", () => {
|
|
40
|
+
expect(buildDispatchNavigationState("/automations")).toEqual({
|
|
41
|
+
view: "automations",
|
|
42
|
+
path: "/automations",
|
|
43
|
+
});
|
|
44
|
+
});
|
|
38
45
|
});
|
|
@@ -216,6 +216,7 @@ function resolveView(
|
|
|
216
216
|
if (pathname.startsWith("/destinations")) return "destinations";
|
|
217
217
|
if (pathname.startsWith("/identities")) return "identities";
|
|
218
218
|
if (pathname.startsWith("/approvals")) return "approvals";
|
|
219
|
+
if (pathname.startsWith("/automations")) return "automations";
|
|
219
220
|
if (pathname.startsWith("/audit")) return "audit";
|
|
220
221
|
if (pathname.startsWith("/dreams")) return "dreams";
|
|
221
222
|
if (pathname.startsWith("/thread-debug")) return "thread-debug";
|
|
@@ -263,6 +264,9 @@ function resolvePath(
|
|
|
263
264
|
return "/identities";
|
|
264
265
|
case "approvals":
|
|
265
266
|
return "/approvals";
|
|
267
|
+
case "automations":
|
|
268
|
+
case "jobs":
|
|
269
|
+
return "/automations";
|
|
266
270
|
case "audit":
|
|
267
271
|
return "/audit";
|
|
268
272
|
case "dreams":
|
package/src/hooks/use-toast.ts
CHANGED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
automationIdentity,
|
|
5
|
+
automationNextRun,
|
|
6
|
+
automationStatus,
|
|
7
|
+
automationTarget,
|
|
8
|
+
sortAutomations,
|
|
9
|
+
} from "./automation-display.js";
|
|
10
|
+
import type { DispatchAutomationItem } from "./automations.js";
|
|
11
|
+
|
|
12
|
+
function item(
|
|
13
|
+
overrides: Partial<DispatchAutomationItem> &
|
|
14
|
+
Pick<DispatchAutomationItem, "id" | "name" | "path" | "owner">,
|
|
15
|
+
): DispatchAutomationItem {
|
|
16
|
+
return {
|
|
17
|
+
enabled: true,
|
|
18
|
+
...overrides,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
describe("automation-display", () => {
|
|
23
|
+
it("builds a stable owner:path identity", () => {
|
|
24
|
+
expect(
|
|
25
|
+
automationIdentity({ owner: "user@example.com", path: "jobs/digest.md" }),
|
|
26
|
+
).toBe("user@example.com:jobs/digest.md");
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it("prefers event names, then schedule descriptions", () => {
|
|
30
|
+
expect(
|
|
31
|
+
automationTarget(
|
|
32
|
+
item({
|
|
33
|
+
id: "1",
|
|
34
|
+
name: "Alert",
|
|
35
|
+
path: "jobs/alert.md",
|
|
36
|
+
owner: "user@example.com",
|
|
37
|
+
triggerType: "event",
|
|
38
|
+
event: "calendar.booking.created",
|
|
39
|
+
}),
|
|
40
|
+
),
|
|
41
|
+
).toBe("calendar.booking.created");
|
|
42
|
+
|
|
43
|
+
expect(
|
|
44
|
+
automationTarget(
|
|
45
|
+
item({
|
|
46
|
+
id: "2",
|
|
47
|
+
name: "Digest",
|
|
48
|
+
path: "jobs/digest.md",
|
|
49
|
+
owner: "user@example.com",
|
|
50
|
+
scheduleDescription: "Weekdays at 9am",
|
|
51
|
+
schedule: "0 9 * * 1-5",
|
|
52
|
+
}),
|
|
53
|
+
),
|
|
54
|
+
).toBe("Weekdays at 9am");
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
it("reports paused next-run and status for disabled automations", () => {
|
|
58
|
+
const paused = item({
|
|
59
|
+
id: "3",
|
|
60
|
+
name: "Paused",
|
|
61
|
+
path: "jobs/paused.md",
|
|
62
|
+
owner: "user@example.com",
|
|
63
|
+
enabled: false,
|
|
64
|
+
lastStatus: "success",
|
|
65
|
+
});
|
|
66
|
+
expect(automationNextRun(paused)).toBe("paused");
|
|
67
|
+
expect(automationStatus(paused)).toEqual({
|
|
68
|
+
label: "Paused",
|
|
69
|
+
tone: "muted",
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it("sorts enabled errors ahead of healthy runs", () => {
|
|
74
|
+
const healthy = item({
|
|
75
|
+
id: "healthy",
|
|
76
|
+
name: "Healthy",
|
|
77
|
+
path: "jobs/healthy.md",
|
|
78
|
+
owner: "user@example.com",
|
|
79
|
+
lastStatus: "success",
|
|
80
|
+
lastRun: "2026-07-08T10:00:00.000Z",
|
|
81
|
+
});
|
|
82
|
+
const errored = item({
|
|
83
|
+
id: "error",
|
|
84
|
+
name: "Broken",
|
|
85
|
+
path: "jobs/broken.md",
|
|
86
|
+
owner: "user@example.com",
|
|
87
|
+
lastStatus: "error",
|
|
88
|
+
lastRun: "2026-07-08T09:00:00.000Z",
|
|
89
|
+
});
|
|
90
|
+
expect(sortAutomations([healthy, errored]).map((row) => row.id)).toEqual([
|
|
91
|
+
"error",
|
|
92
|
+
"healthy",
|
|
93
|
+
]);
|
|
94
|
+
});
|
|
95
|
+
});
|