mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-08-25 08:00:59 +00:00
cbba8297cd
* feat: ai flow chat * youpi * feat: preprocessor and error handler support * fix: reactivity * Add GlobalChat component with drawer functionality - Create GlobalChat.svelte with placeholder chat functionality - Create GlobalChatDrawer.svelte as drawer wrapper - Add global chat button to sidebar menu (both mobile and desktop) - Integrate global chat state management in main layout - Include message history, loading states, and error handling - Implement responsive design and proper drawer behavior 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com> * draft * use triggerable by ai compoennt * make drawer triggerable * implement logic * add inkeep tool * cleaner code * make more things available * more integrations + better system prompt * fix docs fetching * small fix * cleaning * add ask in search bar + right top icon on homepage + suggestions * fix button * disable chat if no ai providers * add inkeep endpoint * draft working stuff * cleaner code * better chat * fix * send license and uid * better anim * move logic * parse links in chat * add missing integration * add reset button * fix * rm file * integrate navigator mode * integrate all changes * add hide button * adjust drawer size * add script ai chat integration * fix drawer * small fixes * small fixes * draft * merge script ai chat with global one * cleaning * fixes * working draft * add aichat service * cleaning more * remove left over from store * more descriptive states * better icon * fix * use pending prompt * cleaning * cleaning * small fix * add inkeep file * clean * add route * Update backend/windmill-api/src/lib.rs Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com> * cleaning * fix drawer * save open state in local storage * small fix * fixes * small fixes * move chat request to manager * renaming * move flow effects in manager * move chat effects in manager * remove log * Update frontend/src/lib/components/copilot/CronGen.svelte Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * Update frontend/src/lib/components/copilot/chat/flow/core.ts Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * change askaibutton folder * define button * ifelse * no any + no default size * use tailwind * use splitpanes * move effects * remove deprecated file * wording * add back disable ai * add error message * modify system prompt * handle confirmation modal * fix * fix * close script settings * fix icon color * fix * fix history manager * fix test panel * save size * remove floating button * fix delete chat * fix * better fix --------- Co-authored-by: HugoCasa <hugo@casademont.ch> Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com> Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com> Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
77 lines
1.9 KiB
Svelte
77 lines
1.9 KiB
Svelte
<script lang="ts">
|
|
import { goto } from '$lib/navigation'
|
|
import { base } from '$lib/base'
|
|
import BarsStaggered from '$lib/components/icons/BarsStaggered.svelte'
|
|
|
|
import { Button } from '$lib/components/common'
|
|
import Drawer from '$lib/components/common/drawer/Drawer.svelte'
|
|
import DrawerContent from '$lib/components/common/drawer/DrawerContent.svelte'
|
|
import { importFlowStore } from '$lib/components/flows/flowStore'
|
|
import { Loader2, Plus } from 'lucide-svelte'
|
|
import YAML from 'yaml'
|
|
|
|
let drawer: Drawer | undefined = undefined
|
|
let pendingRaw: string
|
|
let importType: 'yaml' | 'json' = 'yaml'
|
|
|
|
async function importRaw() {
|
|
$importFlowStore = importType === 'yaml' ? YAML.parse(pendingRaw) : JSON.parse(pendingRaw)
|
|
await goto('/flows/add')
|
|
drawer?.closeDrawer?.()
|
|
}
|
|
</script>
|
|
|
|
<!-- Buttons -->
|
|
<div class="flex flex-row gap-2">
|
|
<Button
|
|
aiId="flows-create-actions-flow"
|
|
aiDescription="Create a new flow"
|
|
size="sm"
|
|
spacingSize="xl"
|
|
startIcon={{ icon: Plus }}
|
|
endIcon={{ icon: BarsStaggered }}
|
|
href="{base}/flows/add?nodraft=true"
|
|
color="marine"
|
|
dropdownItems={[
|
|
{
|
|
label: 'Import from YAML',
|
|
onClick: () => {
|
|
drawer?.toggleDrawer?.()
|
|
importType = 'yaml'
|
|
}
|
|
},
|
|
{
|
|
label: 'Import from JSON',
|
|
onClick: () => {
|
|
drawer?.toggleDrawer?.()
|
|
importType = 'json'
|
|
}
|
|
}
|
|
]}
|
|
>
|
|
Flow
|
|
</Button>
|
|
</div>
|
|
|
|
<!-- Raw JSON -->
|
|
<Drawer bind:this={drawer} size="800px">
|
|
<DrawerContent
|
|
title={'Import flow from ' + (importType === 'yaml' ? 'YAML' : 'JSON')}
|
|
on:close={() => drawer?.toggleDrawer?.()}
|
|
>
|
|
{#await import('$lib/components/SimpleEditor.svelte')}
|
|
<Loader2 class="animate-spin" />
|
|
{:then Module}
|
|
<Module.default
|
|
bind:code={pendingRaw}
|
|
lang={importType}
|
|
class="h-full"
|
|
fixedOverflowWidgets={false}
|
|
/>
|
|
{/await}
|
|
<svelte:fragment slot="actions">
|
|
<Button size="sm" on:click={importRaw}>Import</Button>
|
|
</svelte:fragment>
|
|
</DrawerContent>
|
|
</Drawer>
|