From f13b8f3dcd29ccd4faafb739f9d771c08d12d6c6 Mon Sep 17 00:00:00 2001 From: centdix Date: Wed, 28 May 2025 10:52:29 +0200 Subject: [PATCH] make more things available --- .../src/lib/components/AppConnectInner.svelte | 7 +- .../src/lib/components/DropdownV2Inner.svelte | 2 +- frontend/src/lib/components/EditorBar.svelte | 12 ++ .../src/lib/components/ScriptBuilder.svelte | 14 +- frontend/src/lib/components/chat/core.ts | 47 +++++-- .../components/common/table/ScriptRow.svelte | 4 + .../src/lib/components/common/tabs/Tab.svelte | 55 +++++--- .../renderers/triggers/TriggersBadge.svelte | 3 + .../meltComponents/MeltButton.svelte | 36 +++-- .../components/meltComponents/MenuItem.svelte | 73 ++++++---- .../lib/components/sidebar/MenuButton.svelte | 131 ++++++++++-------- .../lib/components/sidebar/MenuLink.svelte | 130 +++++++++-------- .../components/sidebar/SidebarContent.svelte | 131 +++++++++++++++--- .../(root)/(logged)/resources/+page.svelte | 17 ++- .../(root)/(logged)/schedules/+page.svelte | 10 +- .../(logged)/workspace_settings/+page.svelte | 84 +++++++++-- 16 files changed, 524 insertions(+), 232 deletions(-) diff --git a/frontend/src/lib/components/AppConnectInner.svelte b/frontend/src/lib/components/AppConnectInner.svelte index 6f73fff916..217d5981f3 100644 --- a/frontend/src/lib/components/AppConnectInner.svelte +++ b/frontend/src/lib/components/AppConnectInner.svelte @@ -63,7 +63,7 @@ (x) => passwords.includes(x) || ['token', 'secret', 'key', 'pass', 'private'].some((y) => x.toLowerCase().includes(y)) - ) + ) } let linkedSecret: string | undefined = undefined @@ -487,6 +487,8 @@ {#if !nativeLanguagesCategory.includes(key)} + + diff --git a/frontend/src/lib/components/graph/renderers/triggers/TriggersBadge.svelte b/frontend/src/lib/components/graph/renderers/triggers/TriggersBadge.svelte index 4f9d2b4467..1eb3a28913 100644 --- a/frontend/src/lib/components/graph/renderers/triggers/TriggersBadge.svelte +++ b/frontend/src/lib/components/graph/renderers/triggers/TriggersBadge.svelte @@ -140,6 +140,7 @@ if (allTriggerTypes) { numberOfTriggers = allTriggerTypes?.length } + console.log(allTriggerTypes) }) @@ -237,6 +238,8 @@ {@const { icon: SvelteComponent, countKey } = triggerTypeConfig[type]} import { type AnyMeltElement } from '@melt-ui/svelte' import { conditionalMelt } from '$lib/utils' + import TriggerableByAI from '$lib/components/TriggerableByAI.svelte' + export let aiId: string | undefined = undefined + export let aiDescription: string | undefined = undefined export let meltElement: AnyMeltElement | undefined = undefined export let type: 'button' | 'submit' | 'reset' | null | undefined = undefined export let title: string = '' export let id: string | undefined = undefined + + $: console.log(aiId, aiDescription) + + let buttonRef: HTMLButtonElement | undefined = undefined - + + diff --git a/frontend/src/lib/components/meltComponents/MenuItem.svelte b/frontend/src/lib/components/meltComponents/MenuItem.svelte index 2edcd755ae..642e790804 100644 --- a/frontend/src/lib/components/meltComponents/MenuItem.svelte +++ b/frontend/src/lib/components/meltComponents/MenuItem.svelte @@ -1,37 +1,56 @@ -{#if href} - - - -{:else} - -{/if} + { + if (href) { + goto(href) + } else { + dispatch('click') + } + }} +> + {#if href} + + + + {:else} + + {/if} + diff --git a/frontend/src/lib/components/sidebar/MenuButton.svelte b/frontend/src/lib/components/sidebar/MenuButton.svelte index 456416aa49..6260866b9e 100644 --- a/frontend/src/lib/components/sidebar/MenuButton.svelte +++ b/frontend/src/lib/components/sidebar/MenuButton.svelte @@ -6,7 +6,10 @@ import { goto } from '$app/navigation' import { conditionalMelt } from '$lib/utils' import type { MenubarMenuElements } from '@melt-ui/svelte' + import TriggerableByAI from '$lib/components/TriggerableByAI.svelte' + export let aiId: string | undefined = undefined + export let aiDescription: string | undefined = undefined export let label: string | undefined = undefined export let icon: any | undefined = undefined export let isCollapsed: boolean @@ -19,6 +22,8 @@ export let trigger: MenubarMenuElements['trigger'] | undefined = undefined export let href: string | undefined = undefined + let buttonRef: HTMLButtonElement | undefined = undefined + let dispatch = createEventDispatcher() @@ -30,68 +35,82 @@ disablePopup={!isCollapsed} placement="right" > - + - {#if isCollapsed && notificationsCount > 0} -
- -
- {:else if notificationsCount > 0} -
- -
- {/if} - {#if label} {label} diff --git a/frontend/src/lib/components/sidebar/MenuLink.svelte b/frontend/src/lib/components/sidebar/MenuLink.svelte index 23cbe38093..88c8bb3070 100644 --- a/frontend/src/lib/components/sidebar/MenuLink.svelte +++ b/frontend/src/lib/components/sidebar/MenuLink.svelte @@ -4,7 +4,11 @@ import { navigating, page } from '$app/stores' import Popover from '../Popover.svelte' import { base } from '$app/paths' + import TriggerableByAI from '$lib/components/TriggerableByAI.svelte' + import { goto } from '$app/navigation' + export let aiId: string | undefined = undefined + export let aiDescription: string | undefined = undefined export let label: string export let href: string export let icon: any | undefined = undefined @@ -25,65 +29,73 @@ {#if !disabled} - - { + goto(href) + }} + > + + - {#if icon} - - {/if} + 'hover:transition-all', + $$props.class + )} + target={href.includes('http') ? '_blank' : null} + title={isCollapsed ? undefined : label} + use:conditionalMelt={item} + {...$item} + > + {#if icon} + + {/if} - {#if !isCollapsed} - - {label} - - {/if} - - - {label} - - + {#if !isCollapsed} + + {label} + + {/if} + + + {label} + + + {/if} diff --git a/frontend/src/lib/components/sidebar/SidebarContent.svelte b/frontend/src/lib/components/sidebar/SidebarContent.svelte index 2c4d32139e..e1536cf137 100644 --- a/frontend/src/lib/components/sidebar/SidebarContent.svelte +++ b/frontend/src/lib/components/sidebar/SidebarContent.svelte @@ -65,15 +65,36 @@ export let numUnacknowledgedCriticalAlerts = 0 $: mainMenuLinks = [ - { label: 'Home', href: `${base}/`, icon: Home }, - { label: 'Runs', href: `${base}/runs`, icon: Play }, + { + label: 'Home', + href: `${base}/`, + icon: Home, + aiId: 'sidebar-menu-link-home', + aiDescription: 'Button to navigate to home' + }, + { + label: 'Runs', + href: `${base}/runs`, + icon: Play, + aiId: 'sidebar-menu-link-runs', + aiDescription: 'Button to navigate to runs' + }, { label: 'Variables', href: `${base}/variables`, icon: DollarSign, - disabled: $userStore?.operator + disabled: $userStore?.operator, + aiId: 'sidebar-menu-link-variables', + aiDescription: 'Button to navigate to variables' }, - { label: 'Resources', href: `${base}/resources`, icon: Boxes, disabled: $userStore?.operator } + { + label: 'Resources', + href: `${base}/resources`, + icon: Boxes, + disabled: $userStore?.operator, + aiId: 'sidebar-menu-link-resources', + aiDescription: 'Button to navigate to resources' + } ] $: triggerMenuLinks = [ @@ -81,7 +102,9 @@ label: 'Schedules', href: `${base}/schedules`, icon: Calendar, - disabled: !SIDEBAR_SHOW_SCHEDULES || $userStore?.operator + disabled: !SIDEBAR_SHOW_SCHEDULES || $userStore?.operator, + aiId: 'sidebar-menu-link-schedules', + aiDescription: 'Button to navigate to schedules' }, ...defaultExtraTriggerLinks.filter( (link) => $usedTriggerKinds.includes(link.kind) || $page.url.pathname.includes(link.href) @@ -100,56 +123,72 @@ href: '/routes', icon: Route, disabled: $userStore?.operator, - kind: 'http' + kind: 'http', + aiId: 'sidebar-menu-link-http', + aiDescription: 'Button to navigate to http routes' }, { label: 'WebSockets', href: '/websocket_triggers', icon: Unplug, disabled: $userStore?.operator, - kind: 'ws' + kind: 'ws', + aiId: 'sidebar-menu-link-ws', + aiDescription: 'Button to navigate to websocket triggers' }, { label: 'Postgres', href: '/postgres_triggers', icon: Database, disabled: $userStore?.operator, - kind: 'postgres' + kind: 'postgres', + aiId: 'sidebar-menu-link-postgres', + aiDescription: 'Button to navigate to postgres triggers' }, { label: 'Kafka' + ($enterpriseLicense ? '' : ' (EE)'), href: '/kafka_triggers', icon: KafkaIcon, disabled: $userStore?.operator || !$enterpriseLicense, - kind: 'kafka' + kind: 'kafka', + aiId: 'sidebar-menu-link-kafka', + aiDescription: 'Button to navigate to kafka triggers' }, { label: 'NATS' + ($enterpriseLicense ? '' : ' (EE)'), href: '/nats_triggers', icon: NatsIcon, disabled: $userStore?.operator || !$enterpriseLicense, - kind: 'nats' + kind: 'nats', + aiId: 'sidebar-menu-link-nats', + aiDescription: 'Button to navigate to nats triggers' }, { label: 'SQS' + ($enterpriseLicense ? '' : ' (EE)'), href: '/sqs_triggers', icon: AwsIcon, disabled: $userStore?.operator || !$enterpriseLicense, - kind: 'sqs' + kind: 'sqs', + aiId: 'sidebar-menu-link-sqs', + aiDescription: 'Button to navigate to sqs triggers' }, { label: 'GCP Pub/Sub' + ($enterpriseLicense ? '' : ' (EE)'), href: '/gcp_triggers', icon: GoogleCloudIcon, disabled: $userStore?.operator || !$enterpriseLicense, - kind: 'gcp' + kind: 'gcp', + aiId: 'sidebar-menu-link-gcp', + aiDescription: 'Button to navigate to gcp triggers' }, { label: 'MQTT', href: '/mqtt_triggers', icon: MqttIcon, disabled: $userStore?.operator, - kind: 'mqtt' + kind: 'mqtt', + aiId: 'sidebar-menu-link-mqtt', + aiDescription: 'Button to navigate to mqtt triggers' } ] @@ -166,11 +205,16 @@ { label: 'Settings', icon: Settings, + aiId: 'sidebar-menu-link-settings', + aiDescription: + 'Button to navigate to settings, including account, workspace, and instance settings', subItems: [ { label: 'Account', href: '#user-settings', icon: UserCog, + aiId: 'sidebar-menu-link-account', + aiDescription: 'Button to navigate to account settings', faIcon: undefined }, ...($userStore?.is_admin || $superadmin @@ -179,6 +223,8 @@ label: 'Workspace', href: `${base}/workspace_settings`, icon: FolderCog, + aiId: 'sidebar-menu-link-workspace', + aiDescription: 'Button to navigate to workspace settings', faIcon: undefined } ] @@ -189,6 +235,8 @@ label: 'Instance', href: '#superadmin-settings', icon: ServerCog, + aiId: 'sidebar-menu-link-instance', + aiDescription: 'Button to navigate to instance settings', faIcon: undefined } ] @@ -209,16 +257,27 @@ ], disabled: $userStore?.operator }, - { label: 'Workers', href: `${base}/workers`, icon: Bot, disabled: $userStore?.operator }, + { + label: 'Workers', + href: `${base}/workers`, + icon: Bot, + disabled: $userStore?.operator, + aiId: 'sidebar-menu-link-workers', + aiDescription: 'Button to navigate to workers' + }, { label: 'Folders & Groups', icon: FolderOpen, + aiId: 'sidebar-menu-link-folders-groups', + aiDescription: 'Button to navigate to folders and groups', subItems: [ { label: 'Folders', href: `${base}/folders`, icon: FolderOpen, disabled: $userStore?.operator, + aiId: 'sidebar-menu-link-folders', + aiDescription: 'Button to navigate to folders', faIcon: undefined }, { @@ -226,6 +285,8 @@ href: `${base}/groups`, icon: UserCog, disabled: $userStore?.operator, + aiId: 'sidebar-menu-link-groups', + aiDescription: 'Button to navigate to groups', faIcon: undefined } ], @@ -235,18 +296,24 @@ ? { label: 'Logs', icon: Logs, + aiId: 'sidebar-menu-link-logs', + aiDescription: 'Button to navigate to logs', subItems: [ { label: 'Audit logs', href: `${base}/audit_logs`, - icon: Eye + icon: Eye, + aiId: 'sidebar-menu-link-audit-logs', + aiDescription: 'Button to navigate to audit logs' }, ...($devopsRole ? [ { label: 'Service logs', href: `${base}/service_logs`, - icon: Logs + icon: Logs, + aiId: 'sidebar-menu-link-service-logs', + aiDescription: 'Button to navigate to service logs' } ] : []), @@ -258,7 +325,9 @@ isCriticalAlertsUIOpen.set(true) }, icon: AlertCircle, - notificationCount: numUnacknowledgedCriticalAlerts + notificationCount: numUnacknowledgedCriticalAlerts, + aiId: 'sidebar-menu-link-critical-alerts', + aiDescription: 'Button to navigate to critical alerts' } ] : []) @@ -268,7 +337,9 @@ label: 'Audit logs', href: `${base}/audit_logs`, icon: Eye, - disabled: $userStore?.operator + disabled: $userStore?.operator, + aiId: 'sidebar-menu-link-audit-logs', + aiDescription: 'Button to navigate to audit logs' } ] @@ -298,21 +369,33 @@ label: 'Help', icon: HelpCircle, subItems: [ - { label: 'Docs', href: 'https://www.windmill.dev/docs/intro/', icon: BookOpen }, + { + label: 'Docs', + href: 'https://www.windmill.dev/docs/intro/', + icon: BookOpen, + aiId: 'sidebar-menu-link-docs', + aiDescription: 'Button to navigate to docs' + }, { label: 'Feedbacks', href: 'https://discord.gg/V7PM2YHsPB', - icon: DiscordIcon + icon: DiscordIcon, + aiId: 'sidebar-menu-link-feedbacks', + aiDescription: 'Button to navigate to feedbacks' }, { label: 'Issues', href: 'https://github.com/windmill-labs/windmill/issues/new', - icon: Github + icon: Github, + aiId: 'sidebar-menu-link-issues', + aiDescription: 'Button to navigate to issues' }, { label: 'Changelog', href: 'https://www.windmill.dev/changelog/', - icon: Newspaper + icon: Newspaper, + aiId: 'sidebar-menu-link-changelog', + aiDescription: 'Button to navigate to changelog' } ] } @@ -370,6 +453,8 @@ {#each extraTriggerLinks as subItem (subItem.href ?? subItem.label)} { subItem?.['action']?.() }} + aiId={subItem.aiId} + aiDescription={subItem.aiDescription} >
{#if subItem.icon} diff --git a/frontend/src/routes/(root)/(logged)/resources/+page.svelte b/frontend/src/routes/(root)/(logged)/resources/+page.svelte index 5816ba85f9..05fa69eba7 100644 --- a/frontend/src/routes/(root)/(logged)/resources/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/resources/+page.svelte @@ -616,10 +616,23 @@ documentationLink="https://www.windmill.dev/docs/core_concepts/resources_and_types" >
- -
diff --git a/frontend/src/routes/(root)/(logged)/schedules/+page.svelte b/frontend/src/routes/(root)/(logged)/schedules/+page.svelte index ec1feb8aff..4b59add981 100644 --- a/frontend/src/routes/(root)/(logged)/schedules/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/schedules/+page.svelte @@ -256,8 +256,14 @@ tooltip="Trigger Scripts and Flows according to a cron schedule" documentationLink="https://www.windmill.dev/docs/core_concepts/scheduling" > -
diff --git a/frontend/src/routes/(root)/(logged)/workspace_settings/+page.svelte b/frontend/src/routes/(root)/(logged)/workspace_settings/+page.svelte index 77593756cc..539018a5ab 100644 --- a/frontend/src/routes/(root)/(logged)/workspace_settings/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/workspace_settings/+page.svelte @@ -644,46 +644,106 @@ goto(`?${$page.url.searchParams.toString()}`) }} > - +
Users
- +
Git Sync
- +
Deployment UI
{#if WORKSPACE_SHOW_SLACK_CMD} - +
Slack / Teams
{/if} {#if isCloudHosted()} - +
Premium Plans
{/if} {#if WORKSPACE_SHOW_WEBHOOK_CLI_SYNC} - +
Webhook
{/if} - +
Error Handler
- +
Windmill AI
- +
Object Storage (S3)
- +
Default App
- +
Encryption
- +
General