windmill-components 1.531.1 → 1.537.1
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/package/components/ArgInput.svelte +69 -19
- package/package/components/Auth0Setting.svelte +8 -3
- package/package/components/Dev.svelte +5 -4
- package/package/components/DiffDrawer.svelte +2 -2
- package/package/components/DiffEditor.svelte +34 -37
- package/package/components/DiffEditor.svelte.d.ts +23 -39
- package/package/components/EditableSchemaForm.svelte +67 -67
- package/package/components/EditableSchemaForm.svelte.d.ts +3 -3
- package/package/components/Editor.svelte +32 -11
- package/package/components/Editor.svelte.d.ts +6 -0
- package/package/components/EditorBar.svelte +2 -2
- package/package/components/EditorBar.svelte.d.ts +1 -0
- package/package/components/FieldHeader.svelte +1 -1
- package/package/components/FlowBuilder.svelte +7 -4
- package/package/components/FlowPreviewContent.svelte +3 -3
- package/package/components/FlowStatusViewer.svelte +28 -0
- package/package/components/FlowStatusViewerInner.svelte +72 -20
- package/package/components/FlowStatusViewerInner.svelte.d.ts +7 -0
- package/package/components/ModulePreview.svelte +2 -1
- package/package/components/ModulePreview.svelte.d.ts +1 -0
- package/package/components/ModulePreviewForm.svelte +72 -65
- package/package/components/ModulePreviewResultViewer.svelte +13 -18
- package/package/components/ModuleTest.svelte +10 -6
- package/package/components/ModuleTest.svelte.d.ts +1 -0
- package/package/components/OktaSetting.svelte +8 -3
- package/package/components/Portal.svelte +11 -7
- package/package/components/Portal.svelte.d.ts +19 -39
- package/package/components/ResourceEditor.svelte +4 -0
- package/package/components/RunForm.svelte +2 -2
- package/package/components/RunForm.svelte.d.ts +1 -1
- package/package/components/RunFormAdvancedPopup.svelte +13 -1
- package/package/components/SchemaForm.svelte +1 -2
- package/package/components/ScriptBuilder.svelte +1 -1
- package/package/components/ScriptEditor.svelte +22 -7
- package/package/components/SimpleEditor.svelte +0 -1
- package/package/components/StringTypeNarrowing.svelte.d.ts +1 -1
- package/package/components/apps/components/layout/AppModal.svelte +2 -2
- package/package/components/apps/editor/component/ComponentNavigation.svelte +3 -2
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +0 -1
- package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +3 -1
- package/package/components/apps/editor/settingsPanel/GridCondition.svelte +3 -1
- package/package/components/apps/editor/settingsPanel/GridNavbar.svelte +3 -1
- package/package/components/apps/editor/settingsPanel/GridTab.svelte +3 -1
- package/package/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte +55 -53
- package/package/components/apps/editor/settingsPanel/TableActions.svelte +3 -1
- package/package/components/common/button/model.d.ts +1 -1
- package/package/components/common/drawer/Disposable.svelte +51 -30
- package/package/components/common/drawer/Disposable.svelte.d.ts +12 -44
- package/package/components/common/drawer/Drawer.svelte +15 -11
- package/package/components/copilot/FlowInlineScriptAIButton.svelte +4 -2
- package/package/components/copilot/FlowInlineScriptAIButton.svelte.d.ts +4 -1
- package/package/components/copilot/MetadataGen.svelte +14 -3
- package/package/components/copilot/autocomplete/Autocompletor.js +0 -2
- package/package/components/copilot/chat/AIChat.svelte +2 -4
- package/package/components/copilot/chat/AIChatInput.svelte +3 -3
- package/package/components/copilot/chat/AIChatManager.svelte.js +24 -12
- package/package/components/copilot/chat/AvailableContextList.svelte +243 -26
- package/package/components/copilot/chat/AvailableContextList.svelte.d.ts +2 -1
- package/package/components/copilot/chat/ContextElementBadge.svelte +31 -15
- package/package/components/copilot/chat/ContextElementBadge.svelte.d.ts +5 -20
- package/package/components/copilot/chat/ContextManager.svelte.d.ts +15 -2
- package/package/components/copilot/chat/ContextManager.svelte.js +134 -24
- package/package/components/copilot/chat/ContextTextarea.svelte +22 -49
- package/package/components/copilot/chat/ToolContentDisplay.svelte +10 -1
- package/package/components/copilot/chat/ToolExecutionDisplay.svelte +3 -3
- package/package/components/copilot/chat/context.d.ts +19 -1
- package/package/components/copilot/chat/context.js +1 -0
- package/package/components/copilot/chat/flow/FlowAIChat.svelte +109 -7
- package/package/components/copilot/chat/flow/core.d.ts +13 -1
- package/package/components/copilot/chat/flow/core.js +171 -19
- package/package/components/copilot/chat/flow/uiIntents.d.ts +8 -0
- package/package/components/copilot/chat/flow/uiIntents.js +5 -0
- package/package/components/copilot/chat/flow/useUiIntent.d.ts +5 -0
- package/package/components/copilot/chat/flow/useUiIntent.js +12 -0
- package/package/components/copilot/chat/monaco-adapter.d.ts +22 -4
- package/package/components/copilot/chat/monaco-adapter.js +55 -16
- package/package/components/copilot/chat/script/core.d.ts +2 -2
- package/package/components/copilot/chat/script/core.js +54 -124
- package/package/components/copilot/chat/shared.d.ts +14 -2
- package/package/components/copilot/chat/shared.js +170 -7
- package/package/components/copilot/lib.js +12 -7
- package/package/components/copilot/shared.d.ts +1 -1
- package/package/components/copilot/shared.js +16 -10
- package/package/components/flows/FlowEditor.svelte +15 -1
- package/package/components/flows/FlowEditor.svelte.d.ts +1 -0
- package/package/components/flows/FlowModuleIcon.svelte +39 -0
- package/package/components/flows/FlowModuleIcon.svelte.d.ts +10 -0
- package/package/components/flows/common/FlowCardHeader.svelte +4 -1
- package/package/components/flows/content/FlowBranchesAllWrapper.svelte +6 -0
- package/package/components/flows/content/FlowBranchesOneWrapper.svelte +6 -0
- package/package/components/flows/content/FlowEditorPanel.svelte +2 -1
- package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowInput.svelte +31 -34
- package/package/components/flows/content/FlowInput.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowLoop.svelte +7 -0
- package/package/components/flows/content/FlowModuleComponent.svelte +39 -44
- package/package/components/flows/content/FlowModuleScript.svelte +1 -1
- package/package/components/flows/content/FlowModuleSuspend.svelte +16 -18
- package/package/components/flows/content/FlowWhileLoop.svelte +6 -0
- package/package/components/flows/content/ScriptEditorDrawer.svelte +9 -11
- package/package/components/flows/dfs.d.ts +1 -1
- package/package/components/flows/dfs.js +6 -6
- package/package/components/flows/flowInfers.js +7 -7
- package/package/components/flows/flowStateUtils.svelte.js +1 -2
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +12 -26
- package/package/components/flows/map/MapItem.svelte +12 -39
- package/package/components/flows/map/VirtualItem.svelte +1 -1
- package/package/components/flows/pickers/TopLevelNode.svelte +1 -1
- package/package/components/flows/propPicker/InputPickerInner.svelte +5 -5
- package/package/components/flows/propPicker/OutputPickerInner.svelte +143 -118
- package/package/components/flows/propPicker/OutputPickerInner.svelte.d.ts +7 -16
- package/package/components/flows/{testSteps.svelte.d.ts → stepsInputArgs.svelte.d.ts} +2 -1
- package/package/components/flows/{testSteps.svelte.js → stepsInputArgs.svelte.js} +15 -3
- package/package/components/flows/types.d.ts +16 -3
- package/package/components/flows/utils.js +3 -0
- package/package/components/graph/FlowGraphV2.svelte +1 -1
- package/package/components/graph/renderers/nodes/AIToolNode.svelte +4 -4
- package/package/components/graph/renderers/nodes/NewAIToolNode.svelte +71 -54
- package/package/components/propertyPicker/ObjectViewer.svelte +11 -3
- package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +1 -1
- package/package/components/schema/AddPropertyV2.svelte +2 -7
- package/package/components/schema/AddPropertyV2.svelte.d.ts +3 -20
- package/package/components/schema/EditableSchemaDrawer.svelte +109 -115
- package/package/components/schema/EditableSchemaDrawer.svelte.d.ts +2 -1
- package/package/components/schema/EditableSchemaSdkWrapper.svelte +16 -3
- package/package/components/schema/EditableSchemaSdkWrapper.svelte.d.ts +4 -1
- package/package/components/schema/EditableSchemaWrapper.svelte +3 -10
- package/package/components/schema/FlowPropertyEditor.svelte +83 -57
- package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -1
- package/package/components/schema/PropertyEditor.svelte.d.ts +1 -1
- package/package/components/schema/SchemaFormDND.svelte +11 -10
- package/package/components/schema/SchemaFormDND.svelte.d.ts +3 -2
- package/package/components/schema/editable_schema_wrapper.d.ts +0 -3
- package/package/components/schema/jsonSchemaResource.svelte.d.ts +2 -0
- package/package/components/schema/jsonSchemaResource.svelte.js +40 -0
- package/package/components/settings/PremiumInfo.svelte +7 -2
- package/package/components/triggers/CaptureWrapper.svelte +2 -13
- package/package/components/triggers/CaptureWrapper.svelte.d.ts +1 -1
- package/package/components/triggers/TriggersWrapper.svelte +1 -0
- package/package/components/triggers/http/RouteEditorInner.svelte +1 -1
- package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +23 -20
- package/package/components/triggers/nats/NatsTriggersConfigSection.svelte +15 -27
- package/package/components/triggers/nats/NatsTriggersConfigSection.svelte.d.ts +7 -5
- package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +16 -16
- package/package/hubPaths.json +3 -1
- package/package/script_helpers.d.ts +2 -2
- package/package/script_helpers.js +2 -0
- package/package/stores.d.ts +1 -0
- package/package/stores.js +8 -1
- package/package/utils.d.ts +1 -1
- package/package.json +14 -14
- package/package/components/ModulePreviewResultViewer.svelte.d.ts +0 -28
|
@@ -1,52 +1,20 @@
|
|
|
1
|
-
export declare let openedDrawers:
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
} & Exports;
|
|
6
|
-
(internal: unknown, props: Props & {
|
|
7
|
-
$$events?: Events;
|
|
8
|
-
$$slots?: Slots;
|
|
9
|
-
}): Exports & {
|
|
10
|
-
$set?: any;
|
|
11
|
-
$on?: any;
|
|
12
|
-
};
|
|
13
|
-
z_$$bindings?: Bindings;
|
|
14
|
-
}
|
|
15
|
-
type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
|
|
16
|
-
default: any;
|
|
17
|
-
} ? Props extends Record<string, never> ? any : {
|
|
18
|
-
children?: any;
|
|
19
|
-
} : {});
|
|
20
|
-
declare const Disposable: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
|
|
1
|
+
export declare let openedDrawers: {
|
|
2
|
+
val: string[];
|
|
3
|
+
};
|
|
4
|
+
interface Props {
|
|
21
5
|
open?: boolean;
|
|
22
|
-
id?:
|
|
6
|
+
id?: any;
|
|
23
7
|
preventEscape?: boolean;
|
|
24
8
|
initialOffset?: number;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
default: {
|
|
31
|
-
handleClickAway: (e: any) => void;
|
|
32
|
-
zIndex: number;
|
|
33
|
-
closeDrawer: () => void;
|
|
34
|
-
open: boolean;
|
|
35
|
-
};
|
|
36
|
-
}>, {
|
|
37
|
-
[evt: string]: CustomEvent<any>;
|
|
38
|
-
}, {
|
|
39
|
-
default: {
|
|
40
|
-
handleClickAway: (e: any) => void;
|
|
41
|
-
zIndex: number;
|
|
42
|
-
closeDrawer: () => void;
|
|
43
|
-
open: boolean;
|
|
44
|
-
};
|
|
45
|
-
}, {
|
|
9
|
+
children?: import('svelte').Snippet<[any]>;
|
|
10
|
+
onOpen?: () => void;
|
|
11
|
+
onClose?: () => void;
|
|
12
|
+
}
|
|
13
|
+
declare const Disposable: import("svelte").Component<Props, {
|
|
46
14
|
toggleDrawer: () => void;
|
|
47
15
|
openDrawer: () => void;
|
|
48
16
|
closeDrawer: () => void;
|
|
49
17
|
isOpen: () => boolean;
|
|
50
|
-
},
|
|
51
|
-
type Disposable =
|
|
18
|
+
}, "open">;
|
|
19
|
+
type Disposable = ReturnType<typeof Disposable>;
|
|
52
20
|
export default Disposable;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
<script lang="ts">import { onMount, createEventDispatcher } from 'svelte';
|
|
1
|
+
<script lang="ts">import { onMount, createEventDispatcher, untrack } from 'svelte';
|
|
2
2
|
import { BROWSER } from 'esm-env';
|
|
3
3
|
import Disposable from './Disposable.svelte';
|
|
4
4
|
import ConditionalPortal from './ConditionalPortal.svelte';
|
|
5
5
|
import { chatState } from '../../copilot/chat/sharedChatState.svelte';
|
|
6
|
-
let { open = $bindable(undefined), duration = 0.3, placement = 'right', size = '600px', alwaysOpen = false, shouldUsePortal = true, offset = 0, preventEscape = false, disableChatOffset = false, class: clazz = '', positionClass = undefined, children } = $props();
|
|
6
|
+
let { open = $bindable(undefined), duration = 0.3, placement = 'right', size = '600px', alwaysOpen = false, shouldUsePortal = true, offset = 0, preventEscape = false, disableChatOffset = false, class: clazz = '', positionClass = undefined, children: children_render } = $props();
|
|
7
7
|
if (open === undefined) {
|
|
8
8
|
open = false;
|
|
9
9
|
}
|
|
@@ -16,10 +16,12 @@ export function openDrawer() {
|
|
|
16
16
|
disposable?.openDrawer();
|
|
17
17
|
}
|
|
18
18
|
export function closeDrawer() {
|
|
19
|
+
if (open) {
|
|
20
|
+
setTimeout(() => {
|
|
21
|
+
dispatch('afterClose');
|
|
22
|
+
}, durationMs);
|
|
23
|
+
}
|
|
19
24
|
disposable?.closeDrawer();
|
|
20
|
-
setTimeout(() => {
|
|
21
|
-
dispatch('afterClose');
|
|
22
|
-
}, durationMs);
|
|
23
25
|
}
|
|
24
26
|
export function isOpen() {
|
|
25
27
|
return open;
|
|
@@ -39,7 +41,10 @@ $effect(() => {
|
|
|
39
41
|
scrollLock(open ?? false);
|
|
40
42
|
});
|
|
41
43
|
$effect(() => {
|
|
42
|
-
open
|
|
44
|
+
open;
|
|
45
|
+
untrack(() => {
|
|
46
|
+
open ? openDrawer() : closeDrawer();
|
|
47
|
+
});
|
|
43
48
|
});
|
|
44
49
|
let timeout = $state(true);
|
|
45
50
|
$effect(() => {
|
|
@@ -48,7 +53,6 @@ $effect(() => {
|
|
|
48
53
|
onMount(() => {
|
|
49
54
|
mounted = true;
|
|
50
55
|
});
|
|
51
|
-
const children_render = $derived(children);
|
|
52
56
|
const aiChatOpen = $derived(chatState.size > 0);
|
|
53
57
|
</script>
|
|
54
58
|
|
|
@@ -57,11 +61,11 @@ const aiChatOpen = $derived(chatState.size > 0);
|
|
|
57
61
|
initialOffset={offset}
|
|
58
62
|
bind:open
|
|
59
63
|
bind:this={disposable}
|
|
60
|
-
|
|
61
|
-
|
|
64
|
+
onOpen={() => dispatch('open')}
|
|
65
|
+
onClose={() => dispatch('close')}
|
|
62
66
|
{preventEscape}
|
|
63
67
|
>
|
|
64
|
-
{#snippet children({ handleClickAway, zIndex })}
|
|
68
|
+
{#snippet children({ handleClickAway, zIndex, isTop })}
|
|
65
69
|
<aside
|
|
66
70
|
class="drawer windmill-app windmill-drawer {clazz ?? ''} {positionClass ?? ''} {aiChatOpen
|
|
67
71
|
? 'respect-global-chat'
|
|
@@ -76,7 +80,7 @@ const aiChatOpen = $derived(chatState.size > 0);
|
|
|
76
80
|
<div class="overlay {positionClass ?? ''}" onclick={handleClickAway}></div>
|
|
77
81
|
<div class="panel {placement} {positionClass}" class:size>
|
|
78
82
|
{#if open || !timeout || alwaysOpen}
|
|
79
|
-
{@render children_render?.({ open })}
|
|
83
|
+
{@render children_render?.({ open, isTop })}
|
|
80
84
|
{/if}
|
|
81
85
|
</div>
|
|
82
86
|
</aside>
|
|
@@ -6,6 +6,7 @@ import { ExternalLink, WandSparkles } from 'lucide-svelte';
|
|
|
6
6
|
import { base } from '../../base';
|
|
7
7
|
import { twMerge } from 'tailwind-merge';
|
|
8
8
|
import { aiChatManager, AIMode } from './chat/AIChatManager.svelte';
|
|
9
|
+
const { moduleId } = $props();
|
|
9
10
|
const aiChatScriptModeClasses = $derived(aiChatManager.mode === AIMode.SCRIPT && aiChatManager.isOpen
|
|
10
11
|
? 'dark:bg-violet-900 bg-violet-100'
|
|
11
12
|
: '');
|
|
@@ -18,7 +19,7 @@ const aiChatScriptModeClasses = $derived(aiChatManager.mode === AIMode.SCRIPT &&
|
|
|
18
19
|
btnClasses={twMerge('!px-2', aiChatScriptModeClasses)}
|
|
19
20
|
{onClick}
|
|
20
21
|
iconOnly
|
|
21
|
-
title="Open AI chat
|
|
22
|
+
title="Open AI chat"
|
|
22
23
|
startIcon={{ icon: WandSparkles, classes: 'text-violet-800 dark:text-violet-400' }}
|
|
23
24
|
/>
|
|
24
25
|
{/snippet}
|
|
@@ -26,7 +27,8 @@ const aiChatScriptModeClasses = $derived(aiChatManager.mode === AIMode.SCRIPT &&
|
|
|
26
27
|
{#if $copilotInfo.enabled}
|
|
27
28
|
{@render button(() => {
|
|
28
29
|
aiChatManager.openChat()
|
|
29
|
-
aiChatManager.
|
|
30
|
+
const availableContext = aiChatManager.contextManager.getAvailableContext()
|
|
31
|
+
aiChatManager.contextManager.setSelectedModuleContext(moduleId, availableContext)
|
|
30
32
|
})}
|
|
31
33
|
{:else}
|
|
32
34
|
<Popover
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
interface Props {
|
|
2
|
+
moduleId?: string;
|
|
3
|
+
}
|
|
4
|
+
declare const FlowInlineScriptAiButton: import("svelte").Component<Props, {}, "">;
|
|
2
5
|
type FlowInlineScriptAiButton = ReturnType<typeof FlowInlineScriptAiButton>;
|
|
3
6
|
export default FlowInlineScriptAiButton;
|
|
@@ -16,6 +16,7 @@ const promptConfigs = {
|
|
|
16
16
|
You are a helpful AI assistant. You generate very brief summaries from scripts.
|
|
17
17
|
The summaries need to be as short as possible (maximum 8 words) and only give a global idea. Do not specify the programming language. Do not use any punctation. Avoid using prepositions and articles.
|
|
18
18
|
Examples: List the commits of a GitHub repository, Divide a number by 16, etc..
|
|
19
|
+
**Return only the summary, no other text.**
|
|
19
20
|
`,
|
|
20
21
|
user: `
|
|
21
22
|
Generate a very short summary for the script below:
|
|
@@ -32,6 +33,7 @@ These descriptions are used to explain to other users what the script does and h
|
|
|
32
33
|
Be as short as possible to give a global idea, maximum 3-4 sentences.
|
|
33
34
|
All scripts export an asynchronous function called main, do not include it in the description.
|
|
34
35
|
Do not describe how to call it either.
|
|
36
|
+
**Return only the description, no other text.**
|
|
35
37
|
`,
|
|
36
38
|
user: `
|
|
37
39
|
Generate a description for the script below:
|
|
@@ -45,6 +47,7 @@ Generate a description for the script below:
|
|
|
45
47
|
system: `
|
|
46
48
|
You are a helpful AI assistant. You generate very brief summaries from scripts.
|
|
47
49
|
The summaries need to be as short as possible (maximum 8 words) and only give a global idea. Do not use any punctation. Avoid using prepositions and articles.
|
|
50
|
+
**Return only the summary, no other text.**
|
|
48
51
|
`,
|
|
49
52
|
user: `
|
|
50
53
|
Summarize the flow below in one very short sentence without punctation:
|
|
@@ -57,6 +60,7 @@ You are a helpful AI assistant. You generate descriptions from flow.
|
|
|
57
60
|
These descriptions are used to explain to other users what the flow does and how to use it.
|
|
58
61
|
Be as short as possible to give a global idea, maximum 3-4 sentences.
|
|
59
62
|
Do not include line breaks.
|
|
63
|
+
**Return only the description, no other text.**
|
|
60
64
|
`,
|
|
61
65
|
user: `
|
|
62
66
|
Generate a description for the flow below:
|
|
@@ -65,13 +69,15 @@ Generate a description for the flow below:
|
|
|
65
69
|
},
|
|
66
70
|
agentToolFunctionName: {
|
|
67
71
|
system: `
|
|
68
|
-
You are a helpful AI assistant. You generate
|
|
69
|
-
These
|
|
72
|
+
You are a helpful AI assistant. You generate tool names from scripts.
|
|
73
|
+
These tool names will be used by an AI agent to call this tool.
|
|
74
|
+
It has to be based on the script code content not on the main function name.
|
|
70
75
|
It has to respect the following regex: /[a-zA-Z0-9_]+/
|
|
71
76
|
Examples: generate_image, classify_image, summarize_text, etc.
|
|
77
|
+
**Return only the tool name, no other text.**
|
|
72
78
|
`,
|
|
73
79
|
user: `
|
|
74
|
-
Generate a
|
|
80
|
+
Generate a tool name for the script below:
|
|
75
81
|
{code}`,
|
|
76
82
|
placeholderName: 'code'
|
|
77
83
|
}
|
|
@@ -290,6 +296,11 @@ onDestroy(() => {
|
|
|
290
296
|
on:focus={() => (focused = true)}
|
|
291
297
|
on:blur={() => (focused = false)}
|
|
292
298
|
/>
|
|
299
|
+
{#if promptConfigName === 'agentToolFunctionName' && !validateToolName(content ?? '')}
|
|
300
|
+
<div class="text-3xs text-red-400 absolute -bottom-4">
|
|
301
|
+
Invalid tool name, should only contain letters, numbers and underscores
|
|
302
|
+
</div>
|
|
303
|
+
{/if}
|
|
293
304
|
{/if}
|
|
294
305
|
<!-- <slot {updateFocus} {active} {generatedContent} classNames={active ? '!indent-[8.8rem]' : ''} /> -->
|
|
295
306
|
</div>
|
|
@@ -128,9 +128,7 @@ export class Autocompletor {
|
|
|
128
128
|
]
|
|
129
129
|
};
|
|
130
130
|
},
|
|
131
|
-
// @ts-ignore
|
|
132
131
|
disposeInlineCompletions: () => { },
|
|
133
|
-
freeInlineCompletions: () => { }
|
|
134
132
|
});
|
|
135
133
|
this.#cursorDisposable = editor.onDidChangeCursorPosition(async (e) => {
|
|
136
134
|
deletionsCues.clear();
|
|
@@ -47,7 +47,7 @@ $effect(() => {
|
|
|
47
47
|
aiChatManager.listenForDbSchemasChanges($dbSchemas);
|
|
48
48
|
});
|
|
49
49
|
$effect(() => {
|
|
50
|
-
aiChatManager.
|
|
50
|
+
aiChatManager.listenForContextChange($dbSchemas, $workspaceStore, $copilotSessionModel);
|
|
51
51
|
});
|
|
52
52
|
$effect(() => {
|
|
53
53
|
aiChatManager.updateMode(untrack(() => aiChatManager.mode));
|
|
@@ -80,9 +80,7 @@ $effect(() => {
|
|
|
80
80
|
pastChats={historyManager.getPastChats()}
|
|
81
81
|
bind:selectedContext={
|
|
82
82
|
() => aiChatManager.contextManager.getSelectedContext(),
|
|
83
|
-
(sc) =>
|
|
84
|
-
aiChatManager.scriptEditorOptions && aiChatManager.contextManager.setSelectedContext(sc)
|
|
85
|
-
}
|
|
83
|
+
(sc) => aiChatManager.contextManager.setSelectedContext(sc)
|
|
86
84
|
}
|
|
87
85
|
availableContext={aiChatManager.contextManager.getAvailableContext()}
|
|
88
86
|
messages={aiChatManager.currentReply
|
|
@@ -33,7 +33,7 @@ let contextTextareaComponent = $state();
|
|
|
33
33
|
let instructionsTextareaComponent = $state();
|
|
34
34
|
let instructions = $state(initialInstructions);
|
|
35
35
|
export function focusInput() {
|
|
36
|
-
if (aiChatManager.mode === AIMode.SCRIPT) {
|
|
36
|
+
if (aiChatManager.mode === AIMode.SCRIPT || aiChatManager.mode === AIMode.FLOW) {
|
|
37
37
|
contextTextareaComponent?.focus();
|
|
38
38
|
}
|
|
39
39
|
else {
|
|
@@ -82,7 +82,7 @@ $effect(() => {
|
|
|
82
82
|
</script>
|
|
83
83
|
|
|
84
84
|
<div use:clickOutside class="relative">
|
|
85
|
-
{#if aiChatManager.mode === AIMode.SCRIPT}
|
|
85
|
+
{#if aiChatManager.mode === AIMode.SCRIPT || aiChatManager.mode === AIMode.FLOW}
|
|
86
86
|
{#if showContext}
|
|
87
87
|
<div class="flex flex-row gap-1 mb-1 overflow-scroll pt-2 no-scrollbar">
|
|
88
88
|
<Popover>
|
|
@@ -107,7 +107,7 @@ $effect(() => {
|
|
|
107
107
|
<ContextElementBadge
|
|
108
108
|
contextElement={element}
|
|
109
109
|
deletable
|
|
110
|
-
|
|
110
|
+
onDelete={() => {
|
|
111
111
|
selectedContext = selectedContext?.filter(
|
|
112
112
|
(c) => c.type !== element.type || c.title !== element.title
|
|
113
113
|
)
|
|
@@ -12,10 +12,9 @@ import { getCompletion, getModelContextWindow } from '../lib';
|
|
|
12
12
|
import { dfs } from '../../flows/previousResults';
|
|
13
13
|
import { getStringError } from './utils';
|
|
14
14
|
import { untrack } from 'svelte';
|
|
15
|
-
import {
|
|
15
|
+
import { getCurrentModel } from '../../../stores';
|
|
16
16
|
import { askTools, prepareAskSystemMessage, prepareAskUserMessage } from './ask/core';
|
|
17
17
|
import { chatState, DEFAULT_SIZE, triggerablesByAi } from './sharedChatState.svelte';
|
|
18
|
-
import { get } from 'svelte/store';
|
|
19
18
|
import { prepareApiSystemMessage, prepareApiUserMessage } from './api/core';
|
|
20
19
|
// If the estimated token usage is greater than the model context window - the threshold, we delete the oldest message
|
|
21
20
|
const MAX_TOKENS_THRESHOLD_PERCENTAGE = 0.05;
|
|
@@ -53,6 +52,7 @@ class AIChatManager {
|
|
|
53
52
|
tools = $state([]);
|
|
54
53
|
helpers = $state(undefined);
|
|
55
54
|
scriptEditorOptions = $state(undefined);
|
|
55
|
+
flowOptions = $state(undefined);
|
|
56
56
|
scriptEditorApplyCode = $state(undefined);
|
|
57
57
|
scriptEditorShowDiffMode = $state(undefined);
|
|
58
58
|
flowAiChatHelpers = $state(undefined);
|
|
@@ -61,7 +61,7 @@ class AIChatManager {
|
|
|
61
61
|
aiChatInput = $state(null);
|
|
62
62
|
confirmationCallback = $state(undefined);
|
|
63
63
|
allowedModes = $derived({
|
|
64
|
-
script: this.scriptEditorOptions !== undefined,
|
|
64
|
+
script: this.flowAiChatHelpers === undefined && this.scriptEditorOptions !== undefined,
|
|
65
65
|
flow: this.flowAiChatHelpers !== undefined,
|
|
66
66
|
navigator: true,
|
|
67
67
|
ask: true,
|
|
@@ -82,7 +82,8 @@ class AIChatManager {
|
|
|
82
82
|
}
|
|
83
83
|
return acc;
|
|
84
84
|
}, 0);
|
|
85
|
-
const
|
|
85
|
+
const model = getCurrentModel();
|
|
86
|
+
const modelContextWindow = getModelContextWindow(model.model);
|
|
86
87
|
return (estimatedTokens >
|
|
87
88
|
modelContextWindow -
|
|
88
89
|
Math.max(modelContextWindow * MAX_TOKENS_THRESHOLD_PERCENTAGE, MAX_TOKENS_HARD_LIMIT));
|
|
@@ -507,7 +508,7 @@ class AIChatManager {
|
|
|
507
508
|
}
|
|
508
509
|
try {
|
|
509
510
|
const oldSelectedContext = this.contextManager?.getSelectedContext() ?? [];
|
|
510
|
-
if (this.mode === AIMode.SCRIPT) {
|
|
511
|
+
if (this.mode === AIMode.SCRIPT || this.mode === AIMode.FLOW) {
|
|
511
512
|
this.contextManager?.updateContextOnRequest(options);
|
|
512
513
|
}
|
|
513
514
|
this.loading = true;
|
|
@@ -527,7 +528,9 @@ class AIChatManager {
|
|
|
527
528
|
{
|
|
528
529
|
role: 'user',
|
|
529
530
|
content: this.instructions,
|
|
530
|
-
contextElements: this.mode === AIMode.SCRIPT
|
|
531
|
+
contextElements: this.mode === AIMode.SCRIPT || this.mode === AIMode.FLOW
|
|
532
|
+
? oldSelectedContext
|
|
533
|
+
: undefined,
|
|
531
534
|
snapshot,
|
|
532
535
|
index: this.messages.length // matching with actual messages index. not -1 because it's not yet added to the messages array
|
|
533
536
|
}
|
|
@@ -545,7 +548,7 @@ class AIChatManager {
|
|
|
545
548
|
};
|
|
546
549
|
switch (this.mode) {
|
|
547
550
|
case AIMode.FLOW:
|
|
548
|
-
userMessage = prepareFlowUserMessage(oldInstructions, this.flowAiChatHelpers.getFlowAndSelectedId());
|
|
551
|
+
userMessage = prepareFlowUserMessage(oldInstructions, this.flowAiChatHelpers.getFlowAndSelectedId(), oldSelectedContext);
|
|
549
552
|
break;
|
|
550
553
|
case AIMode.NAVIGATOR:
|
|
551
554
|
userMessage = prepareNavigatorUserMessage(oldInstructions);
|
|
@@ -672,12 +675,14 @@ class AIChatManager {
|
|
|
672
675
|
this.contextManager?.setFixContext();
|
|
673
676
|
this.sendRequest();
|
|
674
677
|
};
|
|
675
|
-
addSelectedLinesToContext = (lines, startLine, endLine) => {
|
|
678
|
+
addSelectedLinesToContext = (lines, startLine, endLine, moduleId) => {
|
|
676
679
|
if (!this.open) {
|
|
677
680
|
this.toggleOpen();
|
|
678
681
|
}
|
|
679
|
-
|
|
680
|
-
|
|
682
|
+
if (!moduleId) {
|
|
683
|
+
this.changeMode(AIMode.SCRIPT);
|
|
684
|
+
}
|
|
685
|
+
this.contextManager?.addSelectedLinesToContext(lines, startLine, endLine, moduleId);
|
|
681
686
|
this.focusInput();
|
|
682
687
|
};
|
|
683
688
|
saveAndClear = async () => {
|
|
@@ -712,10 +717,16 @@ class AIChatManager {
|
|
|
712
717
|
isPreprocessor: moduleId === 'preprocessor'
|
|
713
718
|
});
|
|
714
719
|
};
|
|
715
|
-
|
|
716
|
-
if (this.scriptEditorOptions) {
|
|
720
|
+
listenForContextChange = (dbSchemas, workspaceStore, copilotSessionModel) => {
|
|
721
|
+
if (this.mode === AIMode.SCRIPT && this.scriptEditorOptions) {
|
|
717
722
|
this.contextManager.updateAvailableContext(this.scriptEditorOptions, dbSchemas, workspaceStore ?? '', !copilotSessionModel?.model.endsWith('/thinking'), untrack(() => this.contextManager.getSelectedContext()));
|
|
718
723
|
}
|
|
724
|
+
else if (this.mode === AIMode.FLOW && this.flowOptions) {
|
|
725
|
+
this.contextManager.updateAvailableContextForFlow(this.flowOptions, dbSchemas, workspaceStore ?? '', !copilotSessionModel?.model.endsWith('/thinking'), untrack(() => this.contextManager.getSelectedContext()));
|
|
726
|
+
}
|
|
727
|
+
if (this.scriptEditorOptions) {
|
|
728
|
+
this.contextManager.setScriptOptions(this.scriptEditorOptions);
|
|
729
|
+
}
|
|
719
730
|
};
|
|
720
731
|
listenForDbSchemasChanges = (dbSchemas) => {
|
|
721
732
|
this.displayMessages = ContextManager.updateDisplayMessages(untrack(() => this.displayMessages), dbSchemas);
|
|
@@ -792,6 +803,7 @@ class AIChatManager {
|
|
|
792
803
|
else {
|
|
793
804
|
this.scriptEditorOptions = undefined;
|
|
794
805
|
}
|
|
806
|
+
untrack(() => this.contextManager?.setSelectedModuleContext(selectedId, untrack(() => this.contextManager.getAvailableContext())));
|
|
795
807
|
return () => {
|
|
796
808
|
this.scriptEditorOptions = undefined;
|
|
797
809
|
};
|