windmill-components 1.522.0 → 1.531.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/AIAgentLogViewer.svelte +123 -0
- package/package/components/AIAgentLogViewer.svelte.d.ts +13 -0
- package/package/components/AppConnectInner.svelte +10 -10
- package/package/components/AutoscalingConfigEditor.svelte +76 -2
- package/package/components/Dev.svelte +12 -28
- package/package/components/DiffEditor.svelte +6 -3
- package/package/components/DiffEditor.svelte.d.ts +1 -0
- package/package/components/DisplayResult.svelte +16 -10
- package/package/components/DisplayResult.svelte.d.ts +1 -0
- package/package/components/EditableSchemaForm.svelte +5 -2
- package/package/components/Editor.svelte +26 -8
- package/package/components/Editor.svelte.d.ts +1 -1
- package/package/components/EditorBar.svelte +25 -5
- package/package/components/EditorSettings.svelte +6 -0
- package/package/components/FirstStepInputs.svelte +2 -2
- package/package/components/FlowBuilder.svelte +18 -36
- package/package/components/FlowGraphViewerStep.svelte +7 -0
- package/package/components/FlowJobResult.svelte +15 -63
- package/package/components/FlowJobResult.svelte.d.ts +10 -4
- package/package/components/FlowLogViewer.svelte +660 -0
- package/package/components/FlowLogViewer.svelte.d.ts +34 -0
- package/package/components/FlowLogViewerWrapper.svelte +52 -0
- package/package/components/FlowLogViewerWrapper.svelte.d.ts +21 -0
- package/package/components/FlowLoopIterationPreview.svelte +3 -3
- package/package/components/FlowPreviewContent.svelte +4 -5
- package/package/components/FlowPreviewContent.svelte.d.ts +7 -7
- package/package/components/FlowPreviewResult.svelte +4 -5
- package/package/components/FlowPreviewResult.svelte.d.ts +3 -5
- package/package/components/FlowStatusViewer.svelte +28 -16
- package/package/components/FlowStatusViewer.svelte.d.ts +19 -27
- package/package/components/FlowStatusViewerInner.svelte +483 -296
- package/package/components/FlowStatusViewerInner.svelte.d.ts +27 -33
- package/package/components/FlowTimeline.svelte +11 -13
- package/package/components/FlowTimeline.svelte.d.ts +6 -5
- package/package/components/FlowWrapper.svelte +3 -2
- package/package/components/HighlightCode.svelte +4 -1
- package/package/components/IconedResourceType.svelte +9 -5
- package/package/components/JobLoader.svelte +61 -8
- package/package/components/JobLoader.svelte.d.ts +9 -1
- package/package/components/LogViewer.svelte +8 -2
- package/package/components/LogViewer.svelte.d.ts +1 -0
- package/package/components/LogViewerHeader.svelte +32 -0
- package/package/components/LogViewerHeader.svelte.d.ts +8 -0
- package/package/components/ModulePreviewForm.svelte +10 -6
- package/package/components/ModulePreviewResultViewer.svelte +16 -0
- package/package/components/ModulePreviewResultViewer.svelte.d.ts +1 -1
- package/package/components/ModuleTest.svelte +59 -16
- package/package/components/RelativeLineNumbers.svelte +16 -0
- package/package/components/RelativeLineNumbers.svelte.d.ts +18 -0
- package/package/components/ResourceEditor.svelte +9 -4
- package/package/components/ScriptBuilder.svelte +13 -11
- package/package/components/ScriptEditor.svelte +2 -2
- package/package/components/SimpleEditor.svelte +10 -4
- package/package/components/SimpleEditor.svelte.d.ts +1 -0
- package/package/components/TemplateEditor.svelte +1 -1
- package/package/components/UserSettings.svelte +4 -4
- package/package/components/apps/components/display/AppAccordionList.svelte +1 -1
- package/package/components/apps/components/display/AppCarouselList.svelte +10 -8
- package/package/components/apps/components/display/AppJobIdFlowStatus.svelte +3 -3
- package/package/components/apps/components/display/table/AppAggridTable.svelte +2 -2
- package/package/components/apps/components/helpers/HiddenComponent.svelte +0 -1
- package/package/components/apps/components/helpers/InputValue.svelte +6 -1
- package/package/components/apps/components/helpers/NonRunnableComponent.svelte +8 -4
- package/package/components/apps/components/helpers/NonRunnableComponent.svelte.d.ts +1 -1
- package/package/components/apps/components/helpers/RunnableComponent.svelte +7 -8
- package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +1 -1
- package/package/components/apps/components/helpers/RunnableWrapper.svelte +12 -3
- package/package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +1 -1
- package/package/components/apps/components/inputs/AppCodeInputComponent.svelte +0 -5
- package/package/components/apps/components/layout/AppConditionalWrapper.svelte +1 -1
- package/package/components/apps/components/layout/AppContainer.svelte +1 -1
- package/package/components/apps/components/layout/AppDecisionTree.svelte +31 -20
- package/package/components/apps/components/layout/AppDrawer.svelte +1 -1
- package/package/components/apps/components/layout/AppList.svelte +9 -8
- package/package/components/apps/components/layout/AppModal.svelte +1 -1
- package/package/components/apps/components/layout/AppSplitpanes.svelte +5 -2
- package/package/components/apps/components/layout/AppStepper.svelte +9 -5
- package/package/components/apps/components/layout/AppTabs.svelte +2 -2
- package/package/components/apps/editor/AppJobsDrawer.svelte +2 -2
- package/package/components/apps/editor/GridEditor.svelte +24 -19
- package/package/components/apps/editor/GridEditor.svelte.d.ts +4 -1
- package/package/components/apps/editor/GridViewer.svelte +1 -1
- package/package/components/apps/editor/SubGridEditor.svelte +7 -11
- package/package/components/apps/editor/SubGridEditor.svelte.d.ts +3 -19
- package/package/components/apps/editor/appUtils.js +17 -68
- package/package/components/apps/editor/component/ComponentInner.svelte +845 -694
- package/package/components/apps/editor/component/componentCallbacks.svelte.js +8 -1
- package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +9 -46
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +29 -43
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +2 -1
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +2 -2
- package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte.d.ts +1 -0
- package/package/components/apps/svelte-grid/Grid.svelte +23 -25
- package/package/components/apps/svelte-grid/Grid.svelte.d.ts +21 -9
- package/package/components/apps/svelte-grid/MoveResize.svelte +13 -15
- package/package/components/apps/svelte-grid/MoveResize.svelte.d.ts +17 -24
- package/package/components/apps/utils.d.ts +2 -0
- package/package/components/apps/utils.js +22 -0
- package/package/components/auditLogs/AuditLogsFilters.svelte.d.ts +1 -1
- package/package/components/common/fileDownload/FileDownload.svelte +1 -3
- package/package/components/common/fileDownload/FileDownload.svelte.d.ts +4 -18
- package/package/components/common/languageIcons/LanguageIcon.svelte +5 -2
- package/package/components/copilot/FlowInlineScriptAIButton.svelte +58 -0
- package/package/components/copilot/FlowInlineScriptAIButton.svelte.d.ts +3 -0
- package/package/components/copilot/MetadataGen.svelte +19 -1
- package/package/components/copilot/MetadataGen.svelte.d.ts +1 -1
- package/package/components/copilot/ScriptGen.svelte +23 -31
- package/package/components/copilot/ScriptGen.svelte.d.ts +0 -1
- package/package/components/copilot/autocomplete/Autocompletor.js +2 -0
- package/package/components/copilot/chat/AIChatDisplay.svelte +4 -4
- package/package/components/copilot/chat/AIChatInput.svelte +29 -6
- package/package/components/copilot/chat/AIChatManager.svelte.js +110 -26
- package/package/components/copilot/chat/AIChatMessage.svelte +3 -0
- package/package/components/copilot/chat/ToolContentDisplay.svelte +84 -0
- package/package/components/copilot/chat/ToolContentDisplay.svelte.d.ts +11 -0
- package/package/components/copilot/chat/ToolExecutionDisplay.svelte +105 -0
- package/package/components/copilot/chat/ToolExecutionDisplay.svelte.d.ts +7 -0
- package/package/components/copilot/chat/api/apiTools.d.ts +7 -0
- package/package/components/copilot/chat/api/apiTools.js +192 -0
- package/package/components/copilot/chat/api/core.d.ts +7 -0
- package/package/components/copilot/chat/api/core.js +61 -0
- package/package/components/copilot/chat/flow/FlowAIChat.svelte +4 -6
- package/package/components/copilot/chat/flow/core.js +213 -42
- package/package/components/copilot/chat/flow/utils.js +3 -0
- package/package/components/copilot/chat/monaco-adapter.d.ts +1 -1
- package/package/components/copilot/chat/monaco-adapter.js +10 -4
- package/package/components/copilot/chat/navigator/core.d.ts +1 -1
- package/package/components/copilot/chat/navigator/core.js +20 -22
- package/package/components/copilot/chat/script/core.d.ts +11 -3
- package/package/components/copilot/chat/script/core.js +92 -15
- package/package/components/copilot/chat/shared.d.ts +30 -3
- package/package/components/copilot/chat/shared.js +228 -9
- package/package/components/copilot/lib.d.ts +1 -1
- package/package/components/copilot/lib.js +15 -6
- package/package/components/custom_ui.d.ts +2 -0
- package/package/components/details/DetailPageLayout.svelte +34 -33
- package/package/components/flow_builder.d.ts +1 -2
- package/package/components/flows/FlowEditor.svelte +3 -3
- package/package/components/flows/FlowEditor.svelte.d.ts +7 -6
- package/package/components/flows/common/FlowCard.svelte +2 -2
- package/package/components/flows/common/FlowCard.svelte.d.ts +1 -0
- package/package/components/flows/common/FlowCardHeader.svelte +13 -4
- package/package/components/flows/common/FlowCardHeader.svelte.d.ts +1 -0
- package/package/components/flows/content/BranchPredicateEditor.svelte +4 -7
- package/package/components/flows/content/BranchPredicateEditor.svelte.d.ts +12 -11
- package/package/components/flows/content/FlowConstants.svelte +3 -3
- package/package/components/flows/content/FlowEditorPanel.svelte +3 -3
- package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +2 -4
- package/package/components/flows/content/FlowInputsQuick.svelte +2 -1
- package/package/components/flows/content/FlowLoop.svelte +2 -2
- package/package/components/flows/content/FlowModuleComponent.svelte +130 -108
- package/package/components/flows/content/FlowModuleComponent.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowModuleEarlyStop.svelte +2 -2
- package/package/components/flows/content/FlowModuleSkip.svelte +1 -1
- package/package/components/flows/content/FlowModuleSleep.svelte +1 -1
- package/package/components/flows/content/FlowModuleSuspend.svelte +1 -1
- package/package/components/flows/content/FlowModuleWrapper.svelte +15 -5
- package/package/components/flows/content/FlowModuleWrapper.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowResult.svelte +2 -3
- package/package/components/flows/content/FlowResult.svelte.d.ts +2 -4
- package/package/components/flows/content/FlowWhileLoop.svelte +1 -1
- package/package/components/flows/dfs.d.ts +3 -1
- package/package/components/flows/dfs.js +5 -1
- package/package/components/flows/flowInfers.js +78 -0
- package/package/components/flows/flowState.d.ts +2 -3
- package/package/components/flows/flowState.js +2 -2
- package/package/components/flows/flowStateUtils.svelte.d.ts +4 -4
- package/package/components/flows/flowStateUtils.svelte.js +14 -13
- package/package/components/flows/flowStore.d.ts +3 -4
- package/package/components/flows/header/FlowPreviewButtons.svelte +2 -1
- package/package/components/flows/header/FlowYamlEditor.svelte +10 -1
- package/package/components/flows/map/FlowGraphPreviewButton.svelte +1 -1
- package/package/components/flows/map/FlowJobsMenu.svelte +7 -3
- package/package/components/flows/map/FlowJobsMenu.svelte.d.ts +1 -0
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +12 -12
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +26 -19
- package/package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +6 -4
- package/package/components/flows/map/InsertModuleInner.svelte +9 -1
- package/package/components/flows/map/InsertModuleInner.svelte.d.ts +1 -0
- package/package/components/flows/map/MapItem.svelte +4 -2
- package/package/components/flows/pickers/TopLevelNode.svelte +4 -1
- package/package/components/flows/propPicker/InputPickerInner.svelte +5 -4
- package/package/components/flows/propPicker/OutputBadge.svelte +11 -9
- package/package/components/flows/propPicker/OutputPickerInner.svelte +10 -1
- package/package/components/flows/propPicker/OutputPickerInner.svelte.d.ts +1 -1
- package/package/components/flows/testSteps.svelte.d.ts +3 -2
- package/package/components/flows/testSteps.svelte.js +26 -23
- package/package/components/flows/types.d.ts +1 -1
- package/package/components/flows/utils.d.ts +3 -5
- package/package/components/flows/utils.js +3 -4
- package/package/components/git_sync/GitSyncContext.svelte.js +2 -1
- package/package/components/graph/FlowGraphV2.svelte +44 -24
- package/package/components/graph/FlowGraphV2.svelte.d.ts +5 -2
- package/package/components/graph/graphBuilder.svelte.d.ts +49 -17
- package/package/components/graph/graphBuilder.svelte.js +30 -14
- package/package/components/graph/model.d.ts +9 -6
- package/package/components/graph/renderers/edges/BaseEdge.svelte +3 -3
- package/package/components/graph/renderers/edges/BaseEdge.svelte.d.ts +2 -3
- package/package/components/graph/renderers/nodes/AIToolNode.svelte +234 -0
- package/package/components/graph/renderers/nodes/AIToolNode.svelte.d.ts +24 -0
- package/package/components/graph/renderers/nodes/AssetNode.svelte +15 -10
- package/package/components/graph/renderers/nodes/AssetNode.svelte.d.ts +18 -1
- package/package/components/graph/renderers/nodes/BranchAllEndNode.svelte +1 -1
- package/package/components/graph/renderers/nodes/BranchAllStart.svelte +1 -1
- package/package/components/graph/renderers/nodes/BranchOneStart.svelte +1 -1
- package/package/components/graph/renderers/nodes/ForLoopEndNode.svelte +2 -2
- package/package/components/graph/renderers/nodes/ForLoopStartNode.svelte +1 -1
- package/package/components/graph/renderers/nodes/ModuleNode.svelte +21 -21
- package/package/components/graph/renderers/nodes/NewAIToolNode.svelte +64 -0
- package/package/components/graph/renderers/nodes/NewAIToolNode.svelte.d.ts +7 -0
- package/package/components/graph/renderers/nodes/branchOneEndNode.svelte +1 -1
- package/package/components/icons/RubyIcon.svelte +656 -0
- package/package/components/icons/RubyIcon.svelte.d.ts +7 -0
- package/package/components/instanceSettings.js +9 -0
- package/package/components/modulesTest.svelte.d.ts +6 -3
- package/package/components/modulesTest.svelte.js +32 -0
- package/package/components/preview/FlowPreviewStatus.svelte +3 -1
- package/package/components/raw_apps/RawAppEditor.svelte +27 -26
- package/package/components/raw_apps/RawAppEditor.svelte.d.ts +17 -17
- package/package/components/runs/{JobPreview.svelte → JobRunsPreview.svelte} +1 -4
- package/package/components/runs/{JobPreview.svelte.d.ts → JobRunsPreview.svelte.d.ts} +3 -3
- package/package/components/runs/RunRow.svelte +5 -1
- package/package/components/schema/AddProperty.svelte +41 -36
- package/package/components/schema/AddProperty.svelte.d.ts +2 -2
- package/package/components/schema/AddPropertyV2.svelte +41 -37
- package/package/components/schema/AddPropertyV2.svelte.d.ts +1 -1
- package/package/components/schema/FlowPropertyEditor.svelte +8 -6
- package/package/components/search/RunsSearch.svelte +1 -1
- package/package/components/settings/CreateToken.svelte +132 -12
- package/package/components/settings/CreateToken.svelte.d.ts +3 -20
- package/package/components/settings/TokenDisplay.svelte +18 -42
- package/package/components/settings/TokenDisplay.svelte.d.ts +0 -1
- package/package/components/settings/TokensTable.svelte +2 -4
- package/package/components/settings/TokensTable.svelte.d.ts +3 -19
- package/package/components/settings/WorkspaceUserSettings.svelte +428 -69
- package/package/components/sidebar/MenuButton.svelte +12 -10
- package/package/components/stepHistoryLoader.svelte.d.ts +2 -2
- package/package/components/stepHistoryLoader.svelte.js +7 -12
- package/package/components/triggers/http/OpenAPISpecGenerator.svelte +2 -2
- package/package/components/tutorials/FlowBuilderTutorialBranchOne.svelte +1 -1
- package/package/components/tutorials/FlowBuilderTutorialForLoop.svelte +4 -4
- package/package/components/tutorials/utils.js +3 -0
- package/package/components/worker_group.d.ts +4 -1
- package/package/components/worker_group.js +3 -2
- package/package/editorLangUtils.d.ts +1 -1
- package/package/editorLangUtils.js +2 -0
- package/package/editorUtils.d.ts +2 -1
- package/package/editorUtils.js +2 -1
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +296 -8
- package/package/gen/schemas.gen.js +364 -70
- package/package/gen/services.gen.d.ts +118 -16
- package/package/gen/services.gen.js +226 -19
- package/package/gen/types.gen.d.ts +660 -16
- package/package/hubPaths.json +7 -4
- package/package/infer.js +10 -1
- package/package/monaco_workers/graphql.worker.bundle.js +144 -110
- package/package/script_helpers.d.ts +3 -0
- package/package/script_helpers.js +58 -3
- package/package/scripts.d.ts +1 -1
- package/package/scripts.js +3 -2
- package/package/stores.d.ts +2 -0
- package/package/stores.js +2 -0
- package/package/svelte5Utils.svelte.d.ts +16 -0
- package/package/svelte5Utils.svelte.js +26 -0
- package/package/utils.d.ts +1 -1
- package/package.json +20 -19
- package/package/components/AllFlowLogs.svelte +0 -31
- package/package/components/AllFlowLogs.svelte.d.ts +0 -8
- package/package/components/copilot/chat/navigator/apiTools.d.ts +0 -68
- package/package/components/copilot/chat/navigator/apiTools.js +0 -258
|
@@ -41,6 +41,84 @@ export async function loadSchemaFromModule(module) {
|
|
|
41
41
|
schema: schema ?? emptySchema()
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
|
+
else if (mod.type === 'aiagent') {
|
|
45
|
+
const schema = {
|
|
46
|
+
$schema: 'https://json-schema.org/draft/2020-12/schema',
|
|
47
|
+
properties: {
|
|
48
|
+
provider: {
|
|
49
|
+
type: 'object',
|
|
50
|
+
oneOf: [
|
|
51
|
+
{
|
|
52
|
+
type: 'object',
|
|
53
|
+
title: 'OpenAI',
|
|
54
|
+
properties: {
|
|
55
|
+
kind: { type: 'string', enum: ['OpenAI'] },
|
|
56
|
+
resource: {
|
|
57
|
+
type: 'object',
|
|
58
|
+
format: 'resource-openai'
|
|
59
|
+
},
|
|
60
|
+
model: {
|
|
61
|
+
type: 'string',
|
|
62
|
+
enum: ['gpt-5', 'gpt-5-mini', 'gpt-5-nano', 'gpt-4.1', 'gpt-4o', 'gpt-4o-mini']
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
required: ['kind', 'resource', 'model']
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
type: 'object',
|
|
69
|
+
title: 'Anthropic',
|
|
70
|
+
properties: {
|
|
71
|
+
kind: { type: 'string', enum: ['Anthropic'] },
|
|
72
|
+
resource: {
|
|
73
|
+
type: 'object',
|
|
74
|
+
format: 'resource-anthropic'
|
|
75
|
+
},
|
|
76
|
+
model: {
|
|
77
|
+
type: 'string',
|
|
78
|
+
enum: ['claude-sonnet-4-0', 'claude-3-7-sonnet-latest', 'claude-3-5-haiku-latest']
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
required: ['kind', 'resource', 'model']
|
|
82
|
+
}
|
|
83
|
+
]
|
|
84
|
+
},
|
|
85
|
+
system_prompt: {
|
|
86
|
+
type: 'string',
|
|
87
|
+
default: 'You are a helpful assistant'
|
|
88
|
+
},
|
|
89
|
+
user_message: {
|
|
90
|
+
type: 'string'
|
|
91
|
+
},
|
|
92
|
+
max_completion_tokens: {
|
|
93
|
+
type: 'number'
|
|
94
|
+
},
|
|
95
|
+
temperature: {
|
|
96
|
+
type: 'number'
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
required: ['provider', 'model', 'system_prompt', 'user_message'],
|
|
100
|
+
type: 'object',
|
|
101
|
+
order: [
|
|
102
|
+
'provider',
|
|
103
|
+
'model',
|
|
104
|
+
'system_prompt',
|
|
105
|
+
'user_message',
|
|
106
|
+
'max_completion_tokens',
|
|
107
|
+
'temperature'
|
|
108
|
+
]
|
|
109
|
+
};
|
|
110
|
+
let input_transforms = mod.input_transforms ?? {};
|
|
111
|
+
return {
|
|
112
|
+
input_transforms: Object.keys(schema?.properties ?? {}).reduce((accu, key) => {
|
|
113
|
+
accu[key] = input_transforms[key] ?? {
|
|
114
|
+
type: 'static',
|
|
115
|
+
value: undefined
|
|
116
|
+
};
|
|
117
|
+
return accu;
|
|
118
|
+
}, {}),
|
|
119
|
+
schema
|
|
120
|
+
};
|
|
121
|
+
}
|
|
44
122
|
return {
|
|
45
123
|
input_transforms: {},
|
|
46
124
|
schema: emptySchema()
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import type { Schema } from '../../common';
|
|
2
2
|
import type { Flow } from '../../gen';
|
|
3
|
-
import type {
|
|
3
|
+
import type { StateStore } from '../../utils';
|
|
4
4
|
export type FlowModuleState = {
|
|
5
5
|
schema?: Schema;
|
|
6
6
|
previewResult?: any;
|
|
7
7
|
previewArgs?: any;
|
|
8
8
|
previewJobId?: string;
|
|
9
|
-
previewWorkspaceId?: string;
|
|
10
9
|
previewSuccess?: boolean;
|
|
11
10
|
};
|
|
12
11
|
export type FlowState = Record<string, FlowModuleState>;
|
|
@@ -15,4 +14,4 @@ export type FlowState = Record<string, FlowModuleState>;
|
|
|
15
14
|
* It contains data loaded that are not contained in a Flow object i.e. schemas.
|
|
16
15
|
* We also hold the data of the results of a test job, ran by the user.
|
|
17
16
|
*/
|
|
18
|
-
export declare function initFlowState(flow: Flow, flowStateStore:
|
|
17
|
+
export declare function initFlowState(flow: Flow, flowStateStore: StateStore<FlowState>): Promise<void>;
|
|
@@ -11,10 +11,10 @@ export async function initFlowState(flow, flowStateStore) {
|
|
|
11
11
|
const failureModule = flow.value.failure_module
|
|
12
12
|
? await loadFlowModuleState(flow.value.failure_module)
|
|
13
13
|
: emptyFlowModuleState();
|
|
14
|
-
flowStateStore.
|
|
14
|
+
flowStateStore.val = {
|
|
15
15
|
...modulesState,
|
|
16
16
|
failure: failureModule
|
|
17
|
-
}
|
|
17
|
+
};
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
20
20
|
* mapFlowModule recursively explore the flow, following deeply nested loop and branches modules
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { Schema } from '../../common';
|
|
2
2
|
import { type FlowModule, type PathFlow, type PathScript, type RawScript, type OpenFlow, type Script } from '../../gen';
|
|
3
|
-
import { type Writable } from 'svelte/store';
|
|
4
3
|
import type { FlowModuleState, FlowState } from './flowState';
|
|
5
4
|
import type { ExtendedOpenFlow } from './types';
|
|
6
5
|
import { type StateStore } from '../../utils';
|
|
@@ -16,6 +15,7 @@ export declare function createLoop(id: string, enabledAi: boolean): Promise<[Flo
|
|
|
16
15
|
export declare function createWhileLoop(id: string): Promise<[FlowModule, FlowModuleState]>;
|
|
17
16
|
export declare function createBranches(id: string): Promise<[FlowModule, FlowModuleState]>;
|
|
18
17
|
export declare function createBranchAll(id: string): Promise<[FlowModule, FlowModuleState]>;
|
|
18
|
+
export declare function createAiAgent(id: string): Promise<[FlowModule, FlowModuleState]>;
|
|
19
19
|
export declare function createFlow(id: string): Promise<[FlowModule, FlowModuleState]>;
|
|
20
20
|
export declare function fork(flowModule: FlowModule): Promise<[FlowModule & {
|
|
21
21
|
value: RawScript;
|
|
@@ -24,16 +24,16 @@ export declare function emptyModule(flowState: FlowState, fullFlow: OpenFlow, fl
|
|
|
24
24
|
export declare function createScriptFromInlineScript(flowModule: FlowModule, suffix: string, schema: Schema | undefined, flowPath: string): Promise<[FlowModule & {
|
|
25
25
|
value: PathScript;
|
|
26
26
|
}, FlowModuleState]>;
|
|
27
|
-
export declare function deleteFlowStateById(id: string, flowStateStore:
|
|
27
|
+
export declare function deleteFlowStateById(id: string, flowStateStore: StateStore<FlowState>): void;
|
|
28
28
|
export declare function sliceModules(modules: FlowModule[], upTo: number, idOrders: string[]): FlowModule[];
|
|
29
|
-
export declare function insertNewPreprocessorModule(flowStore: StateStore<ExtendedOpenFlow>, flowStateStore:
|
|
29
|
+
export declare function insertNewPreprocessorModule(flowStore: StateStore<ExtendedOpenFlow>, flowStateStore: StateStore<FlowState>, inlineScript?: {
|
|
30
30
|
language: RawScript['language'];
|
|
31
31
|
}, wsScript?: {
|
|
32
32
|
path: string;
|
|
33
33
|
summary: string;
|
|
34
34
|
hash: string | undefined;
|
|
35
35
|
}): Promise<void>;
|
|
36
|
-
export declare function insertNewFailureModule(flowStore: StateStore<ExtendedOpenFlow>, flowStateStore:
|
|
36
|
+
export declare function insertNewFailureModule(flowStore: StateStore<ExtendedOpenFlow>, flowStateStore: StateStore<FlowState>, inlineScript?: {
|
|
37
37
|
language: RawScript['language'];
|
|
38
38
|
subkind: 'pgsql' | 'flow';
|
|
39
39
|
instructions?: string;
|
|
@@ -14,7 +14,8 @@ export async function loadFlowModuleState(flowModule) {
|
|
|
14
14
|
const { input_transforms, schema } = await loadSchemaFromModule(flowModule);
|
|
15
15
|
if (flowModule.value.type == 'script' ||
|
|
16
16
|
flowModule.value.type == 'rawscript' ||
|
|
17
|
-
flowModule.value.type == 'flow'
|
|
17
|
+
flowModule.value.type == 'flow' ||
|
|
18
|
+
flowModule.value.type == 'aiagent') {
|
|
18
19
|
flowModule.value.input_transforms = input_transforms;
|
|
19
20
|
}
|
|
20
21
|
return {
|
|
@@ -109,6 +110,15 @@ export async function createBranchAll(id) {
|
|
|
109
110
|
const flowModuleState = await loadFlowModuleState(branchesFlowModules);
|
|
110
111
|
return [branchesFlowModules, flowModuleState];
|
|
111
112
|
}
|
|
113
|
+
export async function createAiAgent(id) {
|
|
114
|
+
const aiAgentFlowModules = {
|
|
115
|
+
id,
|
|
116
|
+
value: { type: 'aiagent', tools: [], input_transforms: {} },
|
|
117
|
+
summary: 'AI Agent'
|
|
118
|
+
};
|
|
119
|
+
const flowModuleState = await loadFlowModuleState(aiAgentFlowModules);
|
|
120
|
+
return [aiAgentFlowModules, flowModuleState];
|
|
121
|
+
}
|
|
112
122
|
export async function createFlow(id) {
|
|
113
123
|
const flowFlowModules = {
|
|
114
124
|
id,
|
|
@@ -181,10 +191,7 @@ export async function createScriptFromInlineScript(flowModule, suffix, schema, f
|
|
|
181
191
|
return pickScript(availablePath, flowModule.summary ?? '', flowModule.id, hash);
|
|
182
192
|
}
|
|
183
193
|
export function deleteFlowStateById(id, flowStateStore) {
|
|
184
|
-
flowStateStore.
|
|
185
|
-
delete fss[id];
|
|
186
|
-
return fss;
|
|
187
|
-
});
|
|
194
|
+
delete flowStateStore.val[id];
|
|
188
195
|
}
|
|
189
196
|
export function sliceModules(modules, upTo, idOrders) {
|
|
190
197
|
return modules
|
|
@@ -227,10 +234,7 @@ export async function insertNewPreprocessorModule(flowStore, flowStateStore, inl
|
|
|
227
234
|
[module, state] = await pickScript(wsScript.path, wsScript.summary, module.id, wsScript.hash);
|
|
228
235
|
}
|
|
229
236
|
flowStore.val.value.preprocessor_module = module;
|
|
230
|
-
flowStateStore.
|
|
231
|
-
fss[module.id] = state;
|
|
232
|
-
return fss;
|
|
233
|
-
});
|
|
237
|
+
flowStateStore.val[module.id] = state;
|
|
234
238
|
}
|
|
235
239
|
export async function insertNewFailureModule(flowStore, flowStateStore, inlineScript, wsScript) {
|
|
236
240
|
let module = {
|
|
@@ -250,8 +254,5 @@ export async function insertNewFailureModule(flowStore, flowStateStore, inlineSc
|
|
|
250
254
|
[module, state] = await pickScript(wsScript.path, wsScript.summary, module.id, wsScript.hash);
|
|
251
255
|
}
|
|
252
256
|
flowStore.val.value.failure_module = module;
|
|
253
|
-
flowStateStore.
|
|
254
|
-
fss[module.id] = state;
|
|
255
|
-
return fss;
|
|
256
|
-
});
|
|
257
|
+
flowStateStore.val[module.id] = state;
|
|
257
258
|
}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import type { Flow, OpenFlow } from '../../gen';
|
|
2
|
-
import { type Writable } from 'svelte/store';
|
|
3
2
|
import { type FlowState } from './flowState';
|
|
4
3
|
import type { StateStore } from '../../utils';
|
|
5
4
|
export type FlowMode = 'push' | 'pull';
|
|
6
|
-
export declare const importFlowStore: Writable<Flow | undefined>;
|
|
7
|
-
export declare function initFlow(flow: Flow, flowStore: StateStore<Flow>, flowStateStore:
|
|
5
|
+
export declare const importFlowStore: import("svelte/store").Writable<Flow | undefined>;
|
|
6
|
+
export declare function initFlow(flow: Flow, flowStore: StateStore<Flow>, flowStateStore: StateStore<FlowState>): Promise<void>;
|
|
8
7
|
export declare function copyFirstStepSchema(flowState: FlowState, flowStore: StateStore<OpenFlow>): Promise<void>;
|
|
9
8
|
export declare function getFirstStepSchema(flowState: FlowState, flow: OpenFlow): Promise<{
|
|
10
9
|
schema: import("../../common").Schema | undefined;
|
|
@@ -14,7 +13,7 @@ export declare function getFirstStepSchema(flowState: FlowState, flow: OpenFlow)
|
|
|
14
13
|
value: {
|
|
15
14
|
language?: "deno" | "bun" | "python3" | "go" | "bash" | "powershell" | "postgresql" | "mysql" | "bigquery" | "snowflake" | "mssql" | "oracledb" | "graphql" | "nativets" | "php" | undefined;
|
|
16
15
|
path?: string | undefined;
|
|
17
|
-
type: "rawscript" | "script" | "flow" | "forloopflow" | "whileloopflow" | "branchone" | "branchall" | "identity";
|
|
16
|
+
type: "rawscript" | "script" | "flow" | "forloopflow" | "whileloopflow" | "branchone" | "branchall" | "aiagent" | "identity";
|
|
18
17
|
};
|
|
19
18
|
};
|
|
20
19
|
connectFirstNode: () => void;
|
|
@@ -5,7 +5,7 @@ import { createEventDispatcher, tick } from 'svelte';
|
|
|
5
5
|
import { getContext } from 'svelte';
|
|
6
6
|
import { Play } from 'lucide-svelte';
|
|
7
7
|
import { aiChatManager } from '../../copilot/chat/AIChatManager.svelte';
|
|
8
|
-
let { loading = false, onRunPreview, onJobDone } = $props();
|
|
8
|
+
let { loading = false, onRunPreview, onJobDone, localModuleStates = $bindable({}) } = $props();
|
|
9
9
|
const { selectedId } = getContext('FlowEditorContext');
|
|
10
10
|
let flowPreviewContent = $state(undefined);
|
|
11
11
|
let preventEscape = $state(false);
|
|
@@ -134,6 +134,7 @@ export function getFlowPreviewContent() {
|
|
|
134
134
|
bind:selectedJobStepType
|
|
135
135
|
bind:branchOrIterationN
|
|
136
136
|
bind:rightColumnSelect
|
|
137
|
+
bind:localModuleStates
|
|
137
138
|
on:close={() => {
|
|
138
139
|
// keep the data in the preview content
|
|
139
140
|
deferContent = true
|
|
@@ -47,6 +47,7 @@ function apply() {
|
|
|
47
47
|
sendUserToast('Error parsing yaml: ' + e), true;
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
|
+
let editorHeight = $state(0);
|
|
50
51
|
</script>
|
|
51
52
|
|
|
52
53
|
<Drawer on:open={reload} bind:this={drawer} size="800px">
|
|
@@ -60,7 +61,15 @@ function apply() {
|
|
|
60
61
|
{#await import('../../SimpleEditor.svelte')}
|
|
61
62
|
<Loader2 class="animate-spin" />
|
|
62
63
|
{:then Module}
|
|
63
|
-
<
|
|
64
|
+
<div class="h-full w-full overflow-hidden" bind:clientHeight={editorHeight}>
|
|
65
|
+
<Module.default
|
|
66
|
+
bind:this={editor}
|
|
67
|
+
autoHeight
|
|
68
|
+
minHeight={editorHeight}
|
|
69
|
+
bind:code
|
|
70
|
+
lang="yaml"
|
|
71
|
+
/>
|
|
72
|
+
</div>
|
|
64
73
|
{/await}
|
|
65
74
|
{/if}
|
|
66
75
|
</DrawerContent>
|
|
@@ -29,7 +29,7 @@ const wide = $derived(hover || selected || flowPreviewJob || individualStepTests
|
|
|
29
29
|
<span transition:fade={{ duration: 100 }} class="text-xs">Test flow</span>
|
|
30
30
|
{/if}
|
|
31
31
|
</Button>
|
|
32
|
-
{#if wide &&
|
|
32
|
+
{#if wide && flowPreviewJob}
|
|
33
33
|
<div
|
|
34
34
|
class="flex flex-row items-center shadow-sm rounded-md mt-1"
|
|
35
35
|
in:fade={{ duration: 100, delay: 200 }}
|
|
@@ -4,7 +4,7 @@ import Popover from '../../Popover.svelte';
|
|
|
4
4
|
import { twMerge } from 'tailwind-merge';
|
|
5
5
|
import VirtualList from '@tutorlatin/svelte-tiny-virtual-list';
|
|
6
6
|
import { untrack } from 'svelte';
|
|
7
|
-
let { id, flowJobs, flowJobsSuccess, selected, selectedManually, onSelectedIteration, moduleId } = $props();
|
|
7
|
+
let { id, flowJobs, flowJobsSuccess, selected, selectedManually, onSelectedIteration, moduleId, showIcon = true } = $props();
|
|
8
8
|
let filter = $state(undefined);
|
|
9
9
|
function onKeydown(event) {
|
|
10
10
|
if (event.key === 'Enter' &&
|
|
@@ -40,6 +40,7 @@ function updateItems() {
|
|
|
40
40
|
}
|
|
41
41
|
let isOpen = $state(false);
|
|
42
42
|
$effect(() => {
|
|
43
|
+
filter;
|
|
43
44
|
isOpen && flowJobs && untrack(() => updateItems());
|
|
44
45
|
});
|
|
45
46
|
</script>
|
|
@@ -99,7 +100,9 @@ $effect(() => {
|
|
|
99
100
|
meltElement={trigger}
|
|
100
101
|
>
|
|
101
102
|
#{selected == -1 ? '?' : selected + 1}
|
|
102
|
-
|
|
103
|
+
{#if showIcon}
|
|
104
|
+
<ListFilter size={15} />
|
|
105
|
+
{/if}
|
|
103
106
|
</MeltButton>
|
|
104
107
|
{/snippet}
|
|
105
108
|
|
|
@@ -118,7 +121,8 @@ $effect(() => {
|
|
|
118
121
|
class={twMerge(
|
|
119
122
|
'text-primary text-xs w-full text-left py-1 pl-2 hover:bg-surface-hover whitespace-nowrap flex flex-row gap-2 items-center',
|
|
120
123
|
items[idx].success == false ? 'text-red-400' : '',
|
|
121
|
-
'data-[highlighted]:bg-surface-hover'
|
|
124
|
+
'data-[highlighted]:bg-surface-hover',
|
|
125
|
+
items[idx].index == selected ? 'bg-surface-selected' : ''
|
|
122
126
|
)}
|
|
123
127
|
onClick={() => {
|
|
124
128
|
onSelectedIteration({
|
|
@@ -7,6 +7,7 @@ interface Props {
|
|
|
7
7
|
selected: number;
|
|
8
8
|
selectedManually: boolean | undefined;
|
|
9
9
|
onSelectedIteration: onSelectedIteration;
|
|
10
|
+
showIcon?: boolean;
|
|
10
11
|
}
|
|
11
12
|
declare const FlowJobsMenu: import("svelte").Component<Props, {}, "">;
|
|
12
13
|
type FlowJobsMenu = ReturnType<typeof FlowJobsMenu>;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import Popover from '../../Popover.svelte';
|
|
3
3
|
import { classNames } from '../../../utils';
|
|
4
4
|
import { AlertTriangle, Bed, Database, Gauge, Move, PhoneIncoming, Repeat, Square, SkipForward, Pin, X, Play, Loader2 } from 'lucide-svelte';
|
|
5
|
-
import { createEventDispatcher, getContext
|
|
5
|
+
import { createEventDispatcher, getContext } from 'svelte';
|
|
6
6
|
import { fade } from 'svelte/transition';
|
|
7
7
|
import { twMerge } from 'tailwind-merge';
|
|
8
8
|
import IdEditorInput from '../../IdEditorInput.svelte';
|
|
@@ -50,30 +50,30 @@ function updateConnectingData(id, pickableIds, flowPropPickerConfig, flowStateSt
|
|
|
50
50
|
connectingData =
|
|
51
51
|
flowPropPickerConfig && pickableIds && Object.keys(pickableIds).includes(id)
|
|
52
52
|
? pickableIds[id]
|
|
53
|
-
: (flowStateStore?.[id]?.previewResult ?? {});
|
|
53
|
+
: (flowStateStore?.val?.[id]?.previewResult ?? {});
|
|
54
54
|
}
|
|
55
55
|
$effect(() => {
|
|
56
|
-
|
|
57
|
-
untrack(() => updateConnectingData(...args));
|
|
56
|
+
updateConnectingData(id, pickableIds, $flowPropPickerConfig, flowStateStore);
|
|
58
57
|
});
|
|
59
58
|
function updateLastJob(flowStateStore) {
|
|
60
|
-
if (!flowStateStore ||
|
|
59
|
+
if (!flowStateStore ||
|
|
60
|
+
!id ||
|
|
61
|
+
flowStateStore.val[id]?.previewResult === 'never tested this far') {
|
|
61
62
|
return;
|
|
62
63
|
}
|
|
63
64
|
lastJob = {
|
|
64
|
-
id: flowStateStore[id]?.previewJobId ?? '',
|
|
65
|
-
result: flowStateStore[id]?.previewResult,
|
|
65
|
+
id: flowStateStore.val[id]?.previewJobId ?? '',
|
|
66
|
+
result: flowStateStore.val[id]?.previewResult,
|
|
66
67
|
type: 'CompletedJob',
|
|
67
|
-
|
|
68
|
-
success: flowStateStore[id]?.previewSuccess ?? undefined
|
|
68
|
+
success: flowStateStore.val[id]?.previewSuccess ?? undefined
|
|
69
69
|
};
|
|
70
70
|
}
|
|
71
71
|
$effect(() => {
|
|
72
72
|
if (testJob && testJob.type === 'CompletedJob') {
|
|
73
73
|
lastJob = $state.snapshot(testJob);
|
|
74
74
|
}
|
|
75
|
-
else if (
|
|
76
|
-
|
|
75
|
+
else if (id) {
|
|
76
|
+
updateLastJob(flowStateStore);
|
|
77
77
|
}
|
|
78
78
|
});
|
|
79
79
|
let isConnectingCandidate = $derived(!!id && !!$flowPropPickerConfig && !!pickableIds && Object.keys(pickableIds).includes(id));
|
|
@@ -144,7 +144,7 @@ let testRunDropdownOpen = $state(false);
|
|
|
144
144
|
{#if deletable && id && flowEditorContext?.flowStore && outputPickerVisible}
|
|
145
145
|
{@const flowStore = flowEditorContext?.flowStore.val}
|
|
146
146
|
{@const mod = flowStore?.value ? dfsPreviousResults(id, flowStore, false)[0] : undefined}
|
|
147
|
-
{#if mod &&
|
|
147
|
+
{#if mod && flowStateStore?.val?.[id]}
|
|
148
148
|
<ModuleTest bind:this={moduleTest} {mod} bind:testIsLoading bind:testJob />
|
|
149
149
|
{/if}
|
|
150
150
|
{/if}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script lang="ts">import { createEventDispatcher, getContext, tick } from 'svelte';
|
|
2
|
-
import { createInlineScriptModule, createBranchAll, createBranches, createLoop, createWhileLoop, deleteFlowStateById, emptyModule, pickScript, pickFlow, insertNewPreprocessorModule } from '../flowStateUtils.svelte';
|
|
2
|
+
import { createInlineScriptModule, createBranchAll, createBranches, createLoop, createWhileLoop, deleteFlowStateById, emptyModule, pickScript, pickFlow, insertNewPreprocessorModule, createAiAgent } from '../flowStateUtils.svelte';
|
|
3
3
|
import { emptyFlowModuleState } from '../utils';
|
|
4
4
|
import { dfs } from '../dfs';
|
|
5
5
|
import { push } from '../../../history.svelte';
|
|
@@ -16,19 +16,19 @@ import { setScheduledPollSchedule } from '../../triggers';
|
|
|
16
16
|
import { JobService } from '../../../gen';
|
|
17
17
|
import { dfsByModule } from '../previousResults';
|
|
18
18
|
import { refreshStateStore } from '../../../svelte5Utils.svelte';
|
|
19
|
-
import { writable } from 'svelte/store';
|
|
20
19
|
import FlowStickyNode from './FlowStickyNode.svelte';
|
|
21
20
|
import { getStepHistoryLoaderContext } from '../../stepHistoryLoader.svelte';
|
|
22
|
-
|
|
21
|
+
import { ModulesTestStates } from '../../modulesTest.svelte';
|
|
22
|
+
let { sidebarSize = $bindable(undefined), disableStaticInputs = false, disableTutorials = false, disableAi = false, disableSettings = false, newFlow = false, smallErrorHandler = false, workspace = $workspaceStore, onTestUpTo, onEditInput, localModuleStates = {}, testModuleStates = new ModulesTestStates(), aiChatOpen, showFlowAiButton, toggleAiChat, isOwner, onTestFlow, isRunning, onCancelTestFlow, onOpenPreview, onHideJobStatus, individualStepTests = false, flowJob = undefined, showJobStatus = false, suspendStatus = $bindable({ val: {} }), onDelete, flowHasChanged } = $props();
|
|
23
23
|
let flowTutorials = $state(undefined);
|
|
24
24
|
const { customUi, selectedId, moving, history, flowStateStore, flowStore, pathStore } = getContext('FlowEditorContext');
|
|
25
25
|
const { triggersCount, triggersState } = getContext('TriggerContext');
|
|
26
26
|
const { flowPropPickerConfig } = getContext('PropPickerContext');
|
|
27
27
|
export async function insertNewModuleAtIndex(modules, index, kind, wsScript, wsFlow, inlineScript) {
|
|
28
28
|
push(history, flowStore.val);
|
|
29
|
-
let module = emptyModule(
|
|
29
|
+
let module = emptyModule(flowStateStore.val, flowStore.val, kind == 'flow');
|
|
30
30
|
let state = emptyFlowModuleState();
|
|
31
|
-
|
|
31
|
+
flowStateStore.val[module.id] = state;
|
|
32
32
|
if (wsFlow) {
|
|
33
33
|
;
|
|
34
34
|
[module, state] = await pickFlow(wsFlow.path, wsFlow.summary, module.id);
|
|
@@ -53,10 +53,14 @@ export async function insertNewModuleAtIndex(modules, index, kind, wsScript, wsF
|
|
|
53
53
|
;
|
|
54
54
|
[module, state] = await createBranchAll(module.id);
|
|
55
55
|
}
|
|
56
|
+
else if (kind == 'aiagent') {
|
|
57
|
+
;
|
|
58
|
+
[module, state] = await createAiAgent(module.id);
|
|
59
|
+
}
|
|
56
60
|
else if (inlineScript) {
|
|
57
61
|
const { language, kind, subkind, summary } = inlineScript;
|
|
58
62
|
[module, state] = await createInlineScriptModule(language, kind, subkind, module.id, summary);
|
|
59
|
-
|
|
63
|
+
flowStateStore.val[module.id] = state;
|
|
60
64
|
if (kind == 'trigger') {
|
|
61
65
|
module.summary = 'Trigger';
|
|
62
66
|
}
|
|
@@ -64,7 +68,7 @@ export async function insertNewModuleAtIndex(modules, index, kind, wsScript, wsF
|
|
|
64
68
|
module.summary = 'Approval';
|
|
65
69
|
}
|
|
66
70
|
}
|
|
67
|
-
|
|
71
|
+
flowStateStore.val[module.id] = state;
|
|
68
72
|
if (kind == 'approval') {
|
|
69
73
|
module.suspend = { required_events: 1, timeout: 1800 };
|
|
70
74
|
}
|
|
@@ -108,6 +112,9 @@ export function removeAtId(modules, id) {
|
|
|
108
112
|
});
|
|
109
113
|
mod.value.default = removeAtId(mod.value.default, id);
|
|
110
114
|
}
|
|
115
|
+
else if (mod.value.type == 'aiagent') {
|
|
116
|
+
mod.value.tools = removeAtId(mod.value.tools, id);
|
|
117
|
+
}
|
|
111
118
|
return mod;
|
|
112
119
|
});
|
|
113
120
|
}
|
|
@@ -200,18 +207,16 @@ async function loadLastJob(path, moduleId) {
|
|
|
200
207
|
id: previousJobId[0].id
|
|
201
208
|
});
|
|
202
209
|
if ('result' in getJobResult) {
|
|
203
|
-
|
|
204
|
-
...(
|
|
210
|
+
flowStateStore.val[moduleId] = {
|
|
211
|
+
...(flowStateStore.val[moduleId] ?? {}),
|
|
205
212
|
previewResult: getJobResult.result,
|
|
206
213
|
previewJobId: previousJobId[0].id,
|
|
207
|
-
previewWorkspaceId: previousJobId[0].workspace_id,
|
|
208
214
|
previewSuccess: getJobResult.success
|
|
209
215
|
};
|
|
210
216
|
if (stepHistoryLoader) {
|
|
211
217
|
stepHistoryLoader.stepStates[moduleId].loadingJobs = false;
|
|
212
218
|
}
|
|
213
219
|
}
|
|
214
|
-
$flowStateStore = $flowStateStore;
|
|
215
220
|
}
|
|
216
221
|
}
|
|
217
222
|
$effect(() => {
|
|
@@ -285,12 +290,13 @@ $effect(() => {
|
|
|
285
290
|
editMode
|
|
286
291
|
{onTestUpTo}
|
|
287
292
|
{onEditInput}
|
|
288
|
-
flowModuleStates={
|
|
293
|
+
flowModuleStates={localModuleStates}
|
|
294
|
+
{testModuleStates}
|
|
289
295
|
{isOwner}
|
|
290
296
|
{individualStepTests}
|
|
291
297
|
{flowJob}
|
|
292
298
|
{showJobStatus}
|
|
293
|
-
{suspendStatus}
|
|
299
|
+
suspendStatus={suspendStatus.val}
|
|
294
300
|
{flowHasChanged}
|
|
295
301
|
onDelete={(id) => {
|
|
296
302
|
dependents = getDependentComponents(id, flowStore.val)
|
|
@@ -305,7 +311,7 @@ $effect(() => {
|
|
|
305
311
|
}
|
|
306
312
|
refreshStateStore(flowStore)
|
|
307
313
|
onDelete?.(id)
|
|
308
|
-
delete
|
|
314
|
+
delete flowStateStore.val[id]
|
|
309
315
|
}
|
|
310
316
|
|
|
311
317
|
if (Object.keys(dependents).length > 0) {
|
|
@@ -343,6 +349,8 @@ $effect(() => {
|
|
|
343
349
|
}
|
|
344
350
|
} else if (mod.id == detail.sourceId || mod.id == detail.targetId) {
|
|
345
351
|
targetModules = modules
|
|
352
|
+
} else if (mod.id == detail.agentId && mod.value.type === 'aiagent') {
|
|
353
|
+
targetModules = mod.value.tools
|
|
346
354
|
}
|
|
347
355
|
})
|
|
348
356
|
if (flowStore.val.value.modules && Array.isArray(flowStore.val.value.modules)) {
|
|
@@ -374,7 +382,8 @@ $effect(() => {
|
|
|
374
382
|
})
|
|
375
383
|
}
|
|
376
384
|
} else {
|
|
377
|
-
const index = detail.index ?? 0
|
|
385
|
+
const index = (detail.agentId ? targetModules?.length : detail.index) ?? 0
|
|
386
|
+
|
|
378
387
|
await insertNewModuleAtIndex(
|
|
379
388
|
targetModules,
|
|
380
389
|
index,
|
|
@@ -417,7 +426,6 @@ $effect(() => {
|
|
|
417
426
|
if (['branchone', 'branchall'].includes(detail.kind)) {
|
|
418
427
|
await addBranch(targetModules[detail.index ?? 0].id)
|
|
419
428
|
}
|
|
420
|
-
$flowStateStore = $flowStateStore
|
|
421
429
|
refreshStateStore(flowStore)
|
|
422
430
|
dispatch('change')
|
|
423
431
|
}
|
|
@@ -467,9 +475,8 @@ $effect(() => {
|
|
|
467
475
|
mod.id = newId
|
|
468
476
|
}
|
|
469
477
|
})
|
|
470
|
-
|
|
471
|
-
delete
|
|
472
|
-
$flowStateStore = $flowStateStore
|
|
478
|
+
flowStateStore.val[newId] = flowStateStore.val[id]
|
|
479
|
+
delete flowStateStore.val[id]
|
|
473
480
|
refreshStateStore(flowStore)
|
|
474
481
|
$selectedId = newId
|
|
475
482
|
}}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { FlowModule, Job } from '../../../gen';
|
|
2
2
|
import type { InlineScript, InsertKind } from '../../graph/graphBuilder.svelte';
|
|
3
3
|
import type { GraphModuleState } from '../../graph';
|
|
4
|
-
import {
|
|
4
|
+
import { ModulesTestStates } from '../../modulesTest.svelte';
|
|
5
|
+
import type { StateStore } from '../../../utils';
|
|
5
6
|
interface Props {
|
|
6
7
|
sidebarSize?: number | undefined;
|
|
7
8
|
disableStaticInputs?: boolean;
|
|
@@ -13,7 +14,8 @@ interface Props {
|
|
|
13
14
|
workspace?: string | undefined;
|
|
14
15
|
onTestUpTo?: ((id: string) => void) | undefined;
|
|
15
16
|
onEditInput?: (moduleId: string, key: string) => void;
|
|
16
|
-
localModuleStates?:
|
|
17
|
+
localModuleStates?: Record<string, GraphModuleState>;
|
|
18
|
+
testModuleStates?: ModulesTestStates;
|
|
17
19
|
aiChatOpen?: boolean;
|
|
18
20
|
showFlowAiButton?: boolean;
|
|
19
21
|
toggleAiChat?: () => void;
|
|
@@ -26,7 +28,7 @@ interface Props {
|
|
|
26
28
|
individualStepTests?: boolean;
|
|
27
29
|
flowJob?: Job | undefined;
|
|
28
30
|
showJobStatus?: boolean;
|
|
29
|
-
suspendStatus?:
|
|
31
|
+
suspendStatus?: StateStore<Record<string, {
|
|
30
32
|
job: Job;
|
|
31
33
|
nb: number;
|
|
32
34
|
}>>;
|
|
@@ -67,6 +69,6 @@ declare const FlowModuleSchemaMap: $$__sveltets_2_IsomorphicComponent<Props, {
|
|
|
67
69
|
removeBranch: (id: string, index: number) => void;
|
|
68
70
|
isNodeVisible: (nodeId: string) => boolean;
|
|
69
71
|
setExpr: (module: FlowModule, expr: string) => void;
|
|
70
|
-
}, "sidebarSize">;
|
|
72
|
+
}, "suspendStatus" | "sidebarSize">;
|
|
71
73
|
type FlowModuleSchemaMap = InstanceType<typeof FlowModuleSchemaMap>;
|
|
72
74
|
export default FlowModuleSchemaMap;
|
|
@@ -10,6 +10,7 @@ export let funcDesc = '';
|
|
|
10
10
|
export let disableAi = false;
|
|
11
11
|
export let kind = 'script';
|
|
12
12
|
export let allowTrigger = true;
|
|
13
|
+
export let scriptOnly = false;
|
|
13
14
|
let customUi = getContext('customUi');
|
|
14
15
|
let selectedKind = kind;
|
|
15
16
|
let preFilter = 'all';
|
|
@@ -58,7 +59,7 @@ shouldUsePortal={true} -->
|
|
|
58
59
|
</div>
|
|
59
60
|
|
|
60
61
|
<div class="flex flex-row grow min-h-0">
|
|
61
|
-
{#if kind === 'script'}
|
|
62
|
+
{#if kind === 'script' && !scriptOnly}
|
|
62
63
|
<div class="flex-none flex flex-col text-xs text-primary">
|
|
63
64
|
<TopLevelNode
|
|
64
65
|
label="Action"
|
|
@@ -130,6 +131,13 @@ shouldUsePortal={true} -->
|
|
|
130
131
|
dispatch('new', { kind: 'branchall' })
|
|
131
132
|
}}
|
|
132
133
|
/>
|
|
134
|
+
<TopLevelNode
|
|
135
|
+
label="AI Agent"
|
|
136
|
+
on:select={() => {
|
|
137
|
+
dispatch('close')
|
|
138
|
+
dispatch('new', { kind: 'aiagent' })
|
|
139
|
+
}}
|
|
140
|
+
/>
|
|
133
141
|
</div>
|
|
134
142
|
{/if}
|
|
135
143
|
|
|
@@ -17,6 +17,7 @@ declare const InsertModuleInner: $$__sveltets_2_IsomorphicComponent<{
|
|
|
17
17
|
disableAi?: boolean;
|
|
18
18
|
kind?: "script" | "trigger" | "preprocessor" | "failure";
|
|
19
19
|
allowTrigger?: boolean;
|
|
20
|
+
scriptOnly?: boolean;
|
|
20
21
|
}, {
|
|
21
22
|
insert: CustomEvent<any>;
|
|
22
23
|
new: CustomEvent<any>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script lang="ts">import { Button } from '../../common';
|
|
2
2
|
import LanguageIcon from '../../common/languageIcons/LanguageIcon.svelte';
|
|
3
3
|
import IconedResourceType from '../../IconedResourceType.svelte';
|
|
4
|
-
import { Building, Repeat, Square, ArrowDown, GitBranch } from 'lucide-svelte';
|
|
4
|
+
import { Building, Repeat, Square, ArrowDown, GitBranch, Bot } from 'lucide-svelte';
|
|
5
5
|
import { createEventDispatcher, getContext } from 'svelte';
|
|
6
6
|
import FlowModuleSchemaItem from './FlowModuleSchemaItem.svelte';
|
|
7
7
|
import { prettyLanguage } from '../../../common';
|
|
@@ -204,7 +204,9 @@ let parentLoop = $derived(flowStore?.val && mod ? checkIfParentLoop(flowStore.va
|
|
|
204
204
|
>
|
|
205
205
|
{#snippet icon()}
|
|
206
206
|
<div>
|
|
207
|
-
{#if mod.value.type === '
|
|
207
|
+
{#if mod.value.type === 'aiagent'}
|
|
208
|
+
<Bot size={16} />
|
|
209
|
+
{:else if mod.value.type === 'rawscript'}
|
|
208
210
|
<LanguageIcon lang={mod.value.language} width={16} height={16} />
|
|
209
211
|
{:else if mod.summary == 'Terminate flow'}
|
|
210
212
|
<Square size={16} />
|