windmill-components 1.537.1 → 1.542.4
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/AIProviderPicker.svelte +181 -0
- package/package/components/AIProviderPicker.svelte.d.ts +15 -0
- package/package/components/ArgInfo.svelte +2 -2
- package/package/components/ArgInput.svelte +35 -9
- package/package/components/ArgInput.svelte.d.ts +3 -3
- package/package/components/AssignableTagsInner.svelte +89 -3
- package/package/components/ConcurrentJobsChart.svelte +36 -48
- package/package/components/ConcurrentJobsChart.svelte.d.ts +8 -20
- package/package/components/CustomPopover.svelte.d.ts +1 -1
- package/package/components/DropdownSelect.svelte +26 -0
- package/package/components/DropdownSelect.svelte.d.ts +11 -0
- package/package/components/DropdownV2Inner.svelte +1 -1
- package/package/components/{DynSelect.svelte → DynamicInput.svelte} +47 -15
- package/package/components/DynamicInput.svelte.d.ts +11 -0
- package/package/components/EditableSchemaForm.svelte +119 -95
- package/package/components/EditableSchemaForm.svelte.d.ts +4 -4
- package/package/components/Editor.svelte +86 -93
- package/package/components/Editor.svelte.d.ts +4 -3
- package/package/components/EditorBar.svelte +2 -5
- package/package/components/FlowBuilder.svelte +3 -3
- package/package/components/FlowLogRow.svelte +64 -0
- package/package/components/FlowLogRow.svelte.d.ts +15 -0
- package/package/components/FlowLogViewer.svelte +406 -373
- package/package/components/FlowLogViewer.svelte.d.ts +5 -1
- package/package/components/FlowLogViewerWrapper.svelte +44 -1
- package/package/components/FlowLoopIterationPreview.svelte.d.ts +1 -1
- package/package/components/FlowPreviewContent.svelte.d.ts +1 -1
- package/package/components/FlowStatusViewerInner.svelte +34 -3
- package/package/components/FolderPicker.svelte +1 -1
- package/package/components/InputTransformForm.svelte +20 -10
- package/package/components/JobArgs.svelte +1 -1
- package/package/components/JobLoader.svelte.d.ts +1 -1
- package/package/components/JobStatus.svelte +2 -0
- package/package/components/LogSnippetViewer.svelte +3 -3
- package/package/components/LogSnippetViewer.svelte.d.ts +1 -1
- package/package/components/LogViewer.svelte +87 -71
- package/package/components/LogViewer.svelte.d.ts +1 -0
- package/package/components/Path.svelte +7 -1
- package/package/components/Path.svelte.d.ts +1 -1
- package/package/components/PrefixedInput.svelte +120 -0
- package/package/components/PrefixedInput.svelte.d.ts +8 -0
- package/package/components/QueuePosition.svelte +81 -0
- package/package/components/QueuePosition.svelte.d.ts +8 -0
- package/package/components/ResourceNarrowing.svelte +13 -0
- package/package/components/ResourceNarrowing.svelte.d.ts +6 -0
- package/package/components/ResourceTypePicker.svelte +49 -74
- package/package/components/RunChart.svelte +74 -89
- package/package/components/RunChart.svelte.d.ts +10 -22
- package/package/components/S3FilePicker.svelte +1 -1
- package/package/components/SchemaForm.svelte.d.ts +2 -2
- package/package/components/ScriptBuilder.svelte +2 -1
- package/package/components/ScriptEditor.svelte +4 -3
- package/package/components/ScriptEditor.svelte.d.ts +2 -1
- package/package/components/ServiceLogsInner.svelte +1 -1
- package/package/components/ShareModal.svelte.d.ts +1 -1
- package/package/components/SimpleEditor.svelte +4 -67
- package/package/components/StringTypeNarrowing.svelte +5 -10
- package/package/components/TemplateEditor.svelte +2 -16
- package/package/components/TimeAgo.svelte +1 -1
- package/package/components/TimeAgo.svelte.d.ts +1 -0
- package/package/components/Toggle.svelte +2 -1
- package/package/components/Toggle.svelte.d.ts +2 -1
- package/package/components/WorkerRepl.svelte +1 -1
- package/package/components/apps/components/display/AppNavbarItem.svelte +2 -1
- package/package/components/apps/components/display/table/AppAggridTable.svelte +44 -48
- package/package/components/apps/components/display/table/SyncColumnDefs.svelte +101 -19
- package/package/components/apps/components/display/table/SyncColumnDefs.svelte.d.ts +5 -2
- package/package/components/apps/components/display/table/utils.js +36 -5
- package/package/components/apps/components/inputs/currency/CurrencyInput.svelte +10 -5
- package/package/components/apps/editor/AppEditor.svelte +4 -3
- package/package/components/apps/editor/AppEditorHeader.svelte +0 -1
- package/package/components/apps/editor/GridViewer.svelte.d.ts +11 -4
- package/package/components/apps/editor/SettingsPanel.svelte +2 -2
- package/package/components/apps/editor/componentsPanel/ListItem.svelte +2 -2
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +1 -1
- package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +26 -3
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +13 -5
- package/package/components/apps/svelte-grid/Grid.svelte.d.ts +30 -11
- package/package/components/assets/JobAssetsViewer.svelte +28 -24
- package/package/components/auditLogs/AuditLogsTable.svelte +2 -6
- package/package/components/chartjs-wrappers/Chart.svelte.d.ts +14 -7
- package/package/components/common/OnChange.svelte.d.ts +11 -4
- package/package/components/common/badge/Badge.svelte +9 -2
- package/package/components/common/badge/Badge.svelte.d.ts +2 -1
- package/package/components/common/calendarPicker/CalendarPicker.svelte +5 -1
- package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +5 -4
- package/package/components/common/drawer/Disposable.svelte +9 -11
- package/package/components/common/drawer/Drawer.svelte +3 -4
- package/package/components/common/drawer/Drawer.svelte.d.ts +1 -0
- package/package/components/common/menu/MenuItem.svelte.d.ts +2 -2
- package/package/components/common/modal/Modal.svelte.d.ts +1 -1
- package/package/components/common/tabs/TabContent.svelte +2 -7
- package/package/components/common/tabs/TabContent.svelte.d.ts +5 -27
- package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +9 -3
- package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte.d.ts +1 -0
- package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte +8 -4
- package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte.d.ts +1 -0
- package/package/components/copilot/MetadataGen.svelte +1 -1
- package/package/components/copilot/chat/AIChatManager.svelte.js +24 -102
- package/package/components/copilot/chat/AssistantMessage.svelte +0 -4
- package/package/components/copilot/chat/anthropic.d.ts +15 -0
- package/package/components/copilot/chat/anthropic.js +208 -0
- package/package/components/copilot/chat/api/apiTools.d.ts +2 -2
- package/package/components/copilot/chat/api/apiTools.js +10 -7
- package/package/components/copilot/chat/api/core.d.ts +1 -1
- package/package/components/copilot/chat/api/core.js +7 -2
- package/package/components/copilot/chat/ask/core.d.ts +1 -1
- package/package/components/copilot/chat/ask/core.js +7 -2
- package/package/components/copilot/chat/flow/core.d.ts +1 -1
- package/package/components/copilot/chat/flow/core.js +14 -4
- package/package/components/copilot/chat/monaco-adapter.d.ts +6 -5
- package/package/components/copilot/chat/navigator/core.d.ts +1 -1
- package/package/components/copilot/chat/navigator/core.js +7 -2
- package/package/components/copilot/chat/script/CodeDisplay.svelte +10 -111
- package/package/components/copilot/chat/script/core.d.ts +5 -4
- package/package/components/copilot/chat/script/core.js +131 -19
- package/package/components/copilot/chat/shared.d.ts +7 -7
- package/package/components/copilot/lib.d.ts +29 -8
- package/package/components/copilot/lib.js +199 -24
- package/package/components/flows/content/FlowInput.svelte +5 -5
- package/package/components/flows/content/FlowModuleComponent.svelte +5 -2
- package/package/components/flows/content/FlowModuleEarlyStop.svelte +47 -17
- package/package/components/flows/content/FlowModuleSleep.svelte +4 -1
- package/package/components/flows/content/FlowModuleSuspend.svelte +0 -1
- package/package/components/flows/content/FlowModuleTimeout.svelte +50 -10
- package/package/components/flows/content/FlowModuleTimeout.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowRetries.svelte +108 -3
- package/package/components/flows/content/FlowRetries.svelte.d.ts +3 -2
- package/package/components/flows/flowInfers.js +8 -35
- package/package/components/flows/flowStore.d.ts +45 -1
- package/package/components/flows/flowStore.js +1 -1
- package/package/components/flows/map/FlowJobsMenu.svelte +3 -3
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +61 -54
- package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +1 -1
- package/package/components/flows/map/FlowModuleSchemaItemViewer.svelte +1 -1
- package/package/components/flows/map/InsertModuleButton.svelte +1 -0
- package/package/components/flows/map/InsertModuleInner.svelte +12 -15
- package/package/components/flows/map/InsertModuleInner.svelte.d.ts +10 -9
- package/package/components/flows/propPicker/OutputPickerInner.svelte.d.ts +1 -1
- package/package/components/git_sync/DetectionFlow.svelte +15 -17
- package/package/components/git_sync/GitSyncContext.svelte.js +1 -1
- package/package/components/git_sync/GitSyncRepositoryCard.svelte +0 -1
- package/package/components/graph/graphBuilder.svelte.d.ts +5 -1
- package/package/components/graph/renderers/edges/BaseEdge.svelte +9 -1
- package/package/components/graph/renderers/edges/BaseEdge.svelte.d.ts +4 -1
- package/package/components/graph/renderers/nodes/BranchAllStart.svelte +2 -3
- package/package/components/graph/renderers/nodes/BranchOneStart.svelte +2 -3
- package/package/components/graph/renderers/triggers/TriggerButton.svelte.d.ts +1 -1
- package/package/components/graph/renderers/triggers/TriggersBadge.svelte +3 -1
- package/package/components/graph/renderers/triggers/TriggersWrapper.svelte +34 -24
- package/package/components/graph/renderers/triggers/TriggersWrapper.svelte.d.ts +1 -2
- package/package/components/home/ItemsList.svelte +17 -13
- package/package/components/home/TreeView.svelte +21 -27
- package/package/components/home/TreeView.svelte.d.ts +2 -29
- package/package/components/home/TreeViewRoot.svelte +11 -23
- package/package/components/home/TreeViewRoot.svelte.d.ts +15 -13
- package/package/components/icons/GitIcon.svelte +10 -2
- package/package/components/icons/GitIcon.svelte.d.ts +1 -0
- package/package/components/meltComponents/MeltButton.svelte.d.ts +1 -1
- package/package/components/meltComponents/Popover.svelte +23 -3
- package/package/components/meltComponents/Popover.svelte.d.ts +2 -1
- package/package/components/monacoLanguagesOptions.d.ts +3 -0
- package/package/components/monacoLanguagesOptions.js +109 -0
- package/package/components/propertyPicker/ObjectViewer.svelte +7 -2
- package/package/components/propertyPicker/PropPicker.svelte +1 -1
- package/package/components/propertyPicker/utils.js +14 -7
- package/package/components/runs/JobRunsPreview.svelte +212 -177
- package/package/components/runs/JobsLoader.svelte +2 -2
- package/package/components/runs/JobsLoader.svelte.d.ts +1 -1
- package/package/components/runs/NoWorkerWithTagWarning.svelte +18 -5
- package/package/components/runs/RunBadges.svelte +100 -0
- package/package/components/runs/RunBadges.svelte.d.ts +12 -0
- package/package/components/runs/RunLabels.svelte +86 -0
- package/package/components/runs/RunLabels.svelte.d.ts +10 -0
- package/package/components/runs/RunOption.svelte +20 -0
- package/package/components/runs/RunOption.svelte.d.ts +10 -0
- package/package/components/runs/RunRow.svelte +239 -151
- package/package/components/runs/RunRow.svelte.d.ts +12 -9
- package/package/components/runs/RunsBatchActionsDropdown.svelte +13 -17
- package/package/components/runs/RunsBatchActionsDropdown.svelte.d.ts +5 -18
- package/package/components/runs/RunsFilter.svelte +369 -243
- package/package/components/runs/RunsFilter.svelte.d.ts +2 -0
- package/package/components/runs/RunsQueue.svelte +96 -25
- package/package/components/runs/RunsQueue.svelte.d.ts +7 -21
- package/package/components/runs/RunsTable.svelte +62 -71
- package/package/components/runs/RunsTable.svelte.d.ts +2 -1
- package/package/components/runs/runs-grid.css +95 -0
- package/package/components/schema/EditableSchemaDrawer.svelte +12 -12
- package/package/components/schema/FlowPropertyEditor.svelte +197 -206
- package/package/components/schema/PropertyEditor.svelte +33 -35
- package/package/components/schema/SchemaFormDND.svelte.d.ts +2 -2
- package/package/components/search/GlobalSearchModal.svelte +8 -1
- package/package/components/select/DraggableTags.svelte.d.ts +17 -7
- package/package/components/select/MultiSelect.svelte.d.ts +21 -11
- package/package/components/select/Select.svelte +2 -1
- package/package/components/select/Select.svelte.d.ts +25 -13
- package/package/components/select/SelectDropdown.svelte.d.ts +14 -7
- package/package/components/settings/TokenDisplay.svelte +1 -1
- package/package/components/sidebar/OperatorMenu.svelte +5 -0
- package/package/components/sidebar/SidebarContent.svelte +48 -2
- package/package/components/sidebar/WorkspaceMenu.svelte +116 -17
- package/package/components/toast.js +6 -3
- package/package/components/triggers/AddTriggersButton.svelte +7 -6
- package/package/components/triggers/CaptureWrapper.svelte +19 -3
- package/package/components/triggers/TriggerLabel.svelte +8 -0
- package/package/components/triggers/TriggerTokens.svelte +1 -1
- package/package/components/triggers/TriggersEditor.svelte +9 -5
- package/package/components/triggers/TriggersTable.svelte +2 -2
- package/package/components/triggers/TriggersWrapper.svelte +16 -5
- package/package/components/triggers/TriggersWrapper.svelte.d.ts +3 -19
- package/package/components/{details/EmailTriggerCaptures.svelte → triggers/email/DefaultEmailCapture.svelte} +5 -5
- package/package/components/{details/EmailTriggerCaptures.svelte.d.ts → triggers/email/DefaultEmailCapture.svelte.d.ts} +4 -4
- package/package/components/{details/EmailTriggerConfigSection.svelte → triggers/email/DefaultEmailConfigSection.svelte} +24 -14
- package/package/components/triggers/email/DefaultEmailConfigSection.svelte.d.ts +13 -0
- package/package/components/triggers/email/DefaultEmailPanel.svelte +71 -0
- package/package/components/triggers/email/DefaultEmailPanel.svelte.d.ts +11 -0
- package/package/components/triggers/email/EmailCapture.svelte +39 -0
- package/package/components/triggers/email/EmailCapture.svelte.d.ts +43 -0
- package/package/components/triggers/email/EmailTriggerEditor.svelte +20 -0
- package/package/components/triggers/email/EmailTriggerEditor.svelte.d.ts +11 -0
- package/package/components/triggers/email/EmailTriggerEditorConfigSection.svelte +133 -0
- package/package/components/triggers/email/EmailTriggerEditorConfigSection.svelte.d.ts +14 -0
- package/package/components/triggers/email/EmailTriggerEditorInner.svelte +335 -0
- package/package/components/triggers/email/EmailTriggerEditorInner.svelte.d.ts +22 -0
- package/package/components/triggers/email/EmailTriggerPanel.svelte +61 -0
- package/package/components/triggers/email/EmailTriggerPanel.svelte.d.ts +14 -0
- package/package/components/triggers/email/utils.d.ts +4 -0
- package/package/components/triggers/email/utils.js +52 -0
- package/package/components/triggers/http/RouteEditorConfigSection.svelte +1 -1
- package/package/components/triggers/http/utils.js +1 -1
- package/package/components/triggers/triggers.svelte.d.ts +1 -0
- package/package/components/triggers/triggers.svelte.js +24 -2
- package/package/components/triggers/utils.js +19 -5
- package/package/components/triggers.d.ts +1 -1
- package/package/components/triggers.js +2 -0
- package/package/components/wizards/AgGridWizard.svelte +85 -80
- package/package/components/workspaceSettings/AISettings.svelte +74 -22
- package/package/components/workspaceSettings/AISettings.svelte.d.ts +2 -1
- package/package/components/workspaceSettings/CreateWorkspace.svelte +395 -0
- package/package/components/workspaceSettings/CreateWorkspace.svelte.d.ts +6 -0
- package/package/components/workspaceSettings/DucklakeSettings.svelte +3 -1
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +1 -1
- package/package/components/workspaceSettings/StorageSettings.svelte +69 -48
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +142 -3
- package/package/gen/schemas.gen.js +144 -3
- package/package/gen/services.gen.d.ts +129 -1
- package/package/gen/services.gen.js +267 -1
- package/package/gen/types.gen.d.ts +434 -8
- package/package/hubPaths.json +4 -2
- package/package/infer.js +1 -1
- package/package/keyboardChain.d.ts +5 -0
- package/package/keyboardChain.js +40 -0
- package/package/services/JobManager.js +2 -2
- package/package/stores.d.ts +3 -1
- package/package/stores.js +8 -5
- package/package/utils/workspaceHierarchy.d.ts +27 -0
- package/package/utils/workspaceHierarchy.js +101 -0
- package/package/utils.d.ts +6 -3
- package/package/utils.js +30 -15
- package/package/workspace_settings.js +2 -3
- package/package.json +9 -11
- package/package/components/DynSelect.svelte.d.ts +0 -11
- package/package/components/ObjectTypeNarrowing.svelte +0 -18
- package/package/components/ObjectTypeNarrowing.svelte.d.ts +0 -22
- package/package/components/details/DetailPageTriggerPanel.svelte +0 -121
- package/package/components/details/DetailPageTriggerPanel.svelte.d.ts +0 -20
- package/package/components/details/EmailTriggerConfigSection.svelte.d.ts +0 -12
- package/package/components/details/EmailTriggerPanel.svelte +0 -76
- package/package/components/details/EmailTriggerPanel.svelte.d.ts +0 -26
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import FlowLogViewer from './FlowLogViewer.svelte';
|
|
2
2
|
import type { FlowModule, FlowStatusModule, Job } from '../gen';
|
|
3
3
|
import type { GraphModuleState } from './graph/model';
|
|
4
|
+
import type { NavigationChain } from '../keyboardChain';
|
|
4
5
|
type RootJobData = Partial<Job>;
|
|
5
6
|
interface Props {
|
|
6
7
|
modules: FlowModule[];
|
|
@@ -28,7 +29,10 @@ interface Props {
|
|
|
28
29
|
getSelectedIteration: (stepId: string) => number;
|
|
29
30
|
flowSummary?: string;
|
|
30
31
|
mode?: 'flow' | 'aiagent';
|
|
32
|
+
currentId?: string | null;
|
|
33
|
+
navigationChain?: NavigationChain;
|
|
34
|
+
select: (id: string) => void;
|
|
31
35
|
}
|
|
32
|
-
declare const FlowLogViewer: import("svelte").Component<Props, {}, "">;
|
|
36
|
+
declare const FlowLogViewer: import("svelte").Component<Props, {}, "navigationChain">;
|
|
33
37
|
type FlowLogViewer = ReturnType<typeof FlowLogViewer>;
|
|
34
38
|
export default FlowLogViewer;
|
|
@@ -7,6 +7,9 @@ let { job, localModuleStates, workspaceId, render, onSelectedIteration, mode = '
|
|
|
7
7
|
let expandedRows = $state({});
|
|
8
8
|
let allExpanded = $state(false);
|
|
9
9
|
let showResultsInputs = $state(true);
|
|
10
|
+
// Keyboard navigation state - incremental like expandedRows
|
|
11
|
+
let currentId = $state('flow-root');
|
|
12
|
+
let navigationChain = $state({});
|
|
10
13
|
let moduleTracker = new ChangeTracker($state.snapshot(job.raw_flow?.modules ?? []));
|
|
11
14
|
$effect(() => {
|
|
12
15
|
readFieldsRecursively(job.raw_flow?.modules ?? []);
|
|
@@ -29,9 +32,46 @@ function toggleExpandAll() {
|
|
|
29
32
|
allExpanded = !allExpanded;
|
|
30
33
|
expandedRows = {};
|
|
31
34
|
}
|
|
35
|
+
// Keyboard event handler using navigation links
|
|
36
|
+
function handleKeydown(event) {
|
|
37
|
+
if (!currentId && job.raw_flow?.modules) {
|
|
38
|
+
currentId = 'flow-root';
|
|
39
|
+
}
|
|
40
|
+
else if (!currentId) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
switch (event.key) {
|
|
44
|
+
case 'ArrowDown':
|
|
45
|
+
event.preventDefault();
|
|
46
|
+
const downId = navigationChain[currentId]?.downId;
|
|
47
|
+
if (downId) {
|
|
48
|
+
currentId = downId;
|
|
49
|
+
}
|
|
50
|
+
break;
|
|
51
|
+
case 'ArrowUp':
|
|
52
|
+
event.preventDefault();
|
|
53
|
+
const upId = navigationChain[currentId]?.upId;
|
|
54
|
+
if (upId) {
|
|
55
|
+
currentId = upId;
|
|
56
|
+
}
|
|
57
|
+
break;
|
|
58
|
+
case 'Enter':
|
|
59
|
+
event.preventDefault();
|
|
60
|
+
toggleExpanded(currentId);
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function select(id) {
|
|
65
|
+
currentId = id;
|
|
66
|
+
}
|
|
32
67
|
</script>
|
|
33
68
|
|
|
34
|
-
<div
|
|
69
|
+
<div
|
|
70
|
+
class="w-full rounded-md overflow-hidden border focus:border-gray-400 dark:focus:border-gray-400"
|
|
71
|
+
role="tree"
|
|
72
|
+
tabindex="0"
|
|
73
|
+
onkeydown={handleKeydown}
|
|
74
|
+
>
|
|
35
75
|
<FlowLogViewer
|
|
36
76
|
{modules}
|
|
37
77
|
{localModuleStates}
|
|
@@ -48,5 +88,8 @@ function toggleExpandAll() {
|
|
|
48
88
|
flowId="root"
|
|
49
89
|
flowStatus={undefined}
|
|
50
90
|
{mode}
|
|
91
|
+
{currentId}
|
|
92
|
+
bind:navigationChain
|
|
93
|
+
{select}
|
|
51
94
|
/>
|
|
52
95
|
</div>
|
|
@@ -30,6 +30,6 @@ declare const FlowLoopIterationPreview: $$__sveltets_2_IsomorphicComponent<Props
|
|
|
30
30
|
whileLoopSchema: Schema;
|
|
31
31
|
test: () => void;
|
|
32
32
|
runPreview: (args: Record<string, any>, restartedFrom: RestartedFrom | undefined) => Promise<void>;
|
|
33
|
-
}, "job" | "
|
|
33
|
+
}, "job" | "previewArgs" | "jobId">;
|
|
34
34
|
type FlowLoopIterationPreview = InstanceType<typeof FlowLoopIterationPreview>;
|
|
35
35
|
export default FlowLoopIterationPreview;
|
|
@@ -57,6 +57,6 @@ declare const FlowPreviewContent: $$__sveltets_2_IsomorphicComponent<Props, {
|
|
|
57
57
|
getIsOwner: () => boolean;
|
|
58
58
|
getJob: () => Job | undefined;
|
|
59
59
|
flowHasChanged: () => boolean;
|
|
60
|
-
}, "initial" | "preventEscape" | "job" | "
|
|
60
|
+
}, "initial" | "preventEscape" | "job" | "scrollTop" | "jobId" | "localModuleStates" | "rightColumnSelect" | "localDurationStatuses" | "selectedJobStep" | "previewMode" | "selectedJobStepIsTopLevel" | "selectedJobStepType" | "branchOrIterationN">;
|
|
61
61
|
type FlowPreviewContent = InstanceType<typeof FlowPreviewContent>;
|
|
62
62
|
export default FlowPreviewContent;
|
|
@@ -28,6 +28,7 @@ import { createState } from '../svelte5Utils.svelte';
|
|
|
28
28
|
import JobLoader from './JobLoader.svelte';
|
|
29
29
|
import { writable } from 'svelte/store';
|
|
30
30
|
import { AI_TOOL_CALL_PREFIX, AI_TOOL_MESSAGE_PREFIX, getToolCallId } from './graph/renderers/nodes/AIToolNode.svelte';
|
|
31
|
+
import JobAssetsViewer from './assets/JobAssetsViewer.svelte';
|
|
31
32
|
let { flowStateStore, retryStatus, suspendStatus, hideDownloadInGraph, hideTimeline, hideNodeDefinition, hideDownloadLogs, hideJobId } = getContext('FlowStatusViewer');
|
|
32
33
|
let { jobId, initialJob = undefined, workspaceId = undefined, flowJobIds = undefined, innerModule = undefined, render = true, isOwner = false, selectedNode = $bindable(undefined), globalModuleStates, globalDurationStatuses = [], globalIterationBounds, updateRecursiveRefreshFn = undefined, isSelectedBranch = true, isSubflow = false, reducedPolling = false, wideResults = false, hideFlowResult = false, workspace = $workspaceStore, prefix = undefined, topModuleStates = undefined, refreshGlobal, updateGlobalRefresh, subflowParentsGlobalModuleStates = [], subflowParentsDurationStatuses = [], isForloopSelected = false, job = $bindable(undefined), rightColumnSelect = $bindable('timeline'), localModuleStates = $bindable({}), localDurationStatuses = $bindable({}), customUi, onResultStreamUpdate = undefined, graphTabOpen, isNodeSelected, loadExtraLogs = undefined, onStart = undefined, onJobsLoaded = undefined, onDone = undefined, toolCallStore } = $props();
|
|
33
34
|
let getTopModuleStates = $derived(topModuleStates ?? localModuleStates);
|
|
@@ -786,6 +787,14 @@ function getParentLoopsPrefix(modId) {
|
|
|
786
787
|
}
|
|
787
788
|
return '';
|
|
788
789
|
}
|
|
790
|
+
// Set all tabs content to the same height to prevent layout jumps
|
|
791
|
+
let tabsHeight = $state({
|
|
792
|
+
sequenceHeight: 0,
|
|
793
|
+
logsHeight: 0,
|
|
794
|
+
assetsHeight: 0,
|
|
795
|
+
graphHeight: 0
|
|
796
|
+
});
|
|
797
|
+
let minTabHeight = $derived(Math.max(tabsHeight.sequenceHeight, tabsHeight.logsHeight, tabsHeight.assetsHeight, tabsHeight.graphHeight));
|
|
789
798
|
</script>
|
|
790
799
|
|
|
791
800
|
<JobLoader workspaceOverride={workspaceId} {noLogs} noCode bind:this={jobLoader} />
|
|
@@ -864,12 +873,17 @@ function getParentLoopsPrefix(modId) {
|
|
|
864
873
|
: ''}><span class="font-semibold">Logs</span></Tab
|
|
865
874
|
>
|
|
866
875
|
<Tab value="sequence"><span class="font-semibold">Details</span></Tab>
|
|
876
|
+
<Tab value="assets"><span class="font-semibold">Assets</span></Tab>
|
|
867
877
|
</Tabs>
|
|
868
878
|
{:else}
|
|
869
879
|
<div class="h-[30px]"></div>
|
|
870
880
|
{/if}
|
|
871
881
|
{/if}
|
|
872
|
-
<div
|
|
882
|
+
<div
|
|
883
|
+
class="{selected != 'sequence' ? 'hidden' : ''} max-w-7xl mx-auto"
|
|
884
|
+
bind:clientHeight={tabsHeight.sequenceHeight}
|
|
885
|
+
style="min-height: {minTabHeight}px"
|
|
886
|
+
>
|
|
873
887
|
{#if isListJob}
|
|
874
888
|
{@const sliceFrom =
|
|
875
889
|
globalIterationBounds[buildSubflowKey(flowJobIds?.moduleId ?? '', prefix)]
|
|
@@ -1218,7 +1232,11 @@ function getParentLoopsPrefix(modId) {
|
|
|
1218
1232
|
<div class="p-2 text-tertiary text-sm italic">Empty flow</div>
|
|
1219
1233
|
{/if}
|
|
1220
1234
|
</div>
|
|
1221
|
-
<div
|
|
1235
|
+
<div
|
|
1236
|
+
class="{selected != 'logs' ? 'hidden' : ''} mx-auto"
|
|
1237
|
+
bind:clientHeight={tabsHeight.logsHeight}
|
|
1238
|
+
style="min-height: {minTabHeight}px"
|
|
1239
|
+
>
|
|
1222
1240
|
<FlowLogViewerWrapper
|
|
1223
1241
|
{job}
|
|
1224
1242
|
{localModuleStates}
|
|
@@ -1227,10 +1245,23 @@ function getParentLoopsPrefix(modId) {
|
|
|
1227
1245
|
{onSelectedIteration}
|
|
1228
1246
|
/>
|
|
1229
1247
|
</div>
|
|
1248
|
+
{#if selected == 'assets' && render}
|
|
1249
|
+
<div
|
|
1250
|
+
class="p-2"
|
|
1251
|
+
bind:clientHeight={tabsHeight.assetsHeight}
|
|
1252
|
+
style="min-height: {minTabHeight}px"
|
|
1253
|
+
>
|
|
1254
|
+
<JobAssetsViewer {job} />
|
|
1255
|
+
</div>
|
|
1256
|
+
{/if}
|
|
1230
1257
|
</div>
|
|
1231
1258
|
{#if render}
|
|
1232
1259
|
{#if job.raw_flow && !isListJob}
|
|
1233
|
-
<div
|
|
1260
|
+
<div
|
|
1261
|
+
class="{selected != 'graph' ? 'hidden' : ''} grow mt-4"
|
|
1262
|
+
bind:clientHeight={tabsHeight.graphHeight}
|
|
1263
|
+
style="min-height: {minTabHeight}px"
|
|
1264
|
+
>
|
|
1234
1265
|
<div class="grid grid-cols-3 border h-full" bind:clientHeight={wrapperHeight}>
|
|
1235
1266
|
<div class="col-span-2 bg-surface-secondary">
|
|
1236
1267
|
<div class="flex flex-col">
|
|
@@ -32,6 +32,8 @@ let monaco = $state(undefined);
|
|
|
32
32
|
let monacoTemplate = $state(undefined);
|
|
33
33
|
let argInput = $state(undefined);
|
|
34
34
|
let focusedPrev = false;
|
|
35
|
+
const variableMatch = (value) => value.match(/^variable\('([^']+)'\)$/);
|
|
36
|
+
const resourceMatch = (value) => value.match(/^resource\('([^']+)'\)$/);
|
|
35
37
|
const dispatch = createEventDispatcher();
|
|
36
38
|
$effect(() => {
|
|
37
39
|
editor = monaco;
|
|
@@ -144,18 +146,18 @@ function isStaticTemplate(inputCat) {
|
|
|
144
146
|
}
|
|
145
147
|
function connectProperty(rawValue) {
|
|
146
148
|
// Extract path from variable('x') or resource('x') format
|
|
147
|
-
const varMatch = rawValue
|
|
148
|
-
const
|
|
149
|
+
const varMatch = variableMatch(rawValue);
|
|
150
|
+
const resMatch = resourceMatch(rawValue);
|
|
149
151
|
if (varMatch) {
|
|
150
152
|
arg.type = 'static';
|
|
151
153
|
propertyType = 'static';
|
|
152
154
|
arg.value = '$var:' + varMatch[1];
|
|
153
155
|
monacoTemplate?.setCode(arg.value);
|
|
154
156
|
}
|
|
155
|
-
else if (
|
|
157
|
+
else if (resMatch) {
|
|
156
158
|
arg.type = 'static';
|
|
157
159
|
propertyType = 'static';
|
|
158
|
-
arg.value = '$res:' +
|
|
160
|
+
arg.value = '$res:' + resMatch[1];
|
|
159
161
|
monacoTemplate?.setCode(arg.value);
|
|
160
162
|
}
|
|
161
163
|
else {
|
|
@@ -169,12 +171,20 @@ function onFocus() {
|
|
|
169
171
|
focused = true;
|
|
170
172
|
if (isStaticTemplate(inputCat)) {
|
|
171
173
|
focusProp?.(argName, 'append', (path) => {
|
|
172
|
-
|
|
173
|
-
arg.value
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
174
|
+
// Empty field + variable = use $var:/$res: syntax instead of ${...}
|
|
175
|
+
const isEmpty = !arg.value || arg.value.trim() === '';
|
|
176
|
+
if (isEmpty && variableMatch(path)) {
|
|
177
|
+
connectProperty(path);
|
|
178
|
+
return true;
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
const toAppend = `\$\{${path}}`;
|
|
182
|
+
arg.value = `${arg.value ?? ''}${toAppend}`;
|
|
183
|
+
monacoTemplate?.setCode(arg.value);
|
|
184
|
+
setPropertyType(arg.value);
|
|
185
|
+
argInput?.focus();
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
178
188
|
});
|
|
179
189
|
}
|
|
180
190
|
else {
|
|
@@ -79,7 +79,7 @@ ${Object.entries(args)
|
|
|
79
79
|
{#each Object.entries(args).sort((a, b) => a[0].localeCompare(b[0])) as [arg, value]}
|
|
80
80
|
<Row>
|
|
81
81
|
<Cell first>{arg}</Cell>
|
|
82
|
-
<Cell
|
|
82
|
+
<Cell><ArgInfo {value} /></Cell>
|
|
83
83
|
</Row>
|
|
84
84
|
{/each}
|
|
85
85
|
{:else if args}
|
|
@@ -61,6 +61,6 @@ declare const JobLoader: import("svelte").Component<Props, {
|
|
|
61
61
|
cancelJob: () => Promise<void>;
|
|
62
62
|
clearCurrentJob: () => Promise<void>;
|
|
63
63
|
watchJob: (testId: string, callbacks?: Callbacks) => Promise<void>;
|
|
64
|
-
}, "
|
|
64
|
+
}, "isLoading" | "job" | "notfound" | "jobUpdateLastFetch" | "scriptProgress">;
|
|
65
65
|
type JobLoader = ReturnType<typeof JobLoader>;
|
|
66
66
|
export default JobLoader;
|
|
@@ -4,6 +4,7 @@ import { forLater } from '../forLater';
|
|
|
4
4
|
import DurationMs from './DurationMs.svelte';
|
|
5
5
|
import { Calendar, CheckCircle2, Circle, Clock, Hourglass, Play, XCircle } from 'lucide-svelte';
|
|
6
6
|
import NoWorkerWithTagWarning from './runs/NoWorkerWithTagWarning.svelte';
|
|
7
|
+
import QueuePosition from './QueuePosition.svelte';
|
|
7
8
|
const SMALL_ICON_SIZE = 12;
|
|
8
9
|
export let job;
|
|
9
10
|
</script>
|
|
@@ -56,6 +57,7 @@ export let job;
|
|
|
56
57
|
<div class="flex flex-row gap-1 items-center">
|
|
57
58
|
<Badge color="orange" icon={{ icon: Clock, position: 'left' }}>Queued</Badge>
|
|
58
59
|
<NoWorkerWithTagWarning tag={job.tag} />
|
|
60
|
+
<QueuePosition jobId={job.id} workspaceId={job.workspace_id} minimal />
|
|
59
61
|
</div>
|
|
60
62
|
{:else}
|
|
61
63
|
<Circle size={SMALL_ICON_SIZE} class="text-gray-200" />
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<script lang="ts">import AnsiUp from 'ansi_up';
|
|
1
|
+
<script lang="ts">import { AnsiUp } from 'ansi_up';
|
|
2
2
|
export let content;
|
|
3
3
|
export let highlighted;
|
|
4
4
|
const ansi_up = new AnsiUp();
|
|
@@ -24,8 +24,8 @@ let html = highlightSnippet(content);
|
|
|
24
24
|
</script>
|
|
25
25
|
|
|
26
26
|
<button on:click class="font-light !m-0 !p-0">
|
|
27
|
-
<pre
|
|
28
|
-
|
|
27
|
+
<pre
|
|
28
|
+
class="bg-surface-secondary hover:bg-surface px-2 py-1 text-secondary text-xs w-[100%] whitespace-pre border min-w-full text-start">
|
|
29
29
|
{@html html}
|
|
30
30
|
</pre>
|
|
31
31
|
</button>
|
|
@@ -11,12 +11,13 @@ import { Button, Drawer, DrawerContent } from './common';
|
|
|
11
11
|
import { copyToClipboard } from '../utils';
|
|
12
12
|
import { base } from '../base';
|
|
13
13
|
import { workspaceStore } from '../stores';
|
|
14
|
-
import AnsiUp from 'ansi_up';
|
|
14
|
+
import { AnsiUp } from 'ansi_up';
|
|
15
15
|
import NoWorkerWithTagWarning from './runs/NoWorkerWithTagWarning.svelte';
|
|
16
16
|
import { JobService } from '../gen';
|
|
17
17
|
import Tooltip from './Tooltip.svelte';
|
|
18
18
|
import { twMerge } from 'tailwind-merge';
|
|
19
|
-
|
|
19
|
+
import QueuePosition from './QueuePosition.svelte';
|
|
20
|
+
let { content, isLoading, duration = undefined, mem = undefined, wrapperClass = '', jobId = undefined, tag, small = false, drawerOpen = $bindable(false), noMaxH = false, noAutoScroll = false, download = true, customEmptyMessage = 'No logs are available yet', tagLabel = undefined, noPadding = false, navigationId = undefined } = $props();
|
|
20
21
|
// @ts-ignore
|
|
21
22
|
const ansi_up = $state(new AnsiUp());
|
|
22
23
|
ansi_up.use_classes = true;
|
|
@@ -157,78 +158,88 @@ let html = $derived(ansi_up.ansi_to_html(downloadStartUrl && prefixIndex != unde
|
|
|
157
158
|
</DrawerContent>
|
|
158
159
|
</Drawer>
|
|
159
160
|
|
|
160
|
-
<div class="
|
|
161
|
-
<div
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
<
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
: '
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
<input class="windmillapp" type="checkbox" bind:checked={scroll} />
|
|
187
|
-
</div>
|
|
188
|
-
{/if}
|
|
189
|
-
</div>
|
|
190
|
-
</div>
|
|
191
|
-
{#if isLoading}
|
|
192
|
-
<div class="flex gap-2 absolute top-2 left-2 items-center z-10">
|
|
193
|
-
<Loader2 class="animate-spin" />
|
|
194
|
-
{#if tag}
|
|
195
|
-
<div class="flex flex-row items-center gap-1">
|
|
196
|
-
<div class="text-secondary {small ? '!text-2xs' : '!text-xs'}"
|
|
197
|
-
>{tagLabel ?? 'tag'}: {tag}</div
|
|
161
|
+
<div class="w-full h-full {wrapperClass}">
|
|
162
|
+
<div class="w-full h-full relative">
|
|
163
|
+
<div
|
|
164
|
+
bind:this={div}
|
|
165
|
+
class="w-full h-full overflow-auto bg-surface-secondary pt-4 {noMaxH ? '' : 'max-h-screen'}"
|
|
166
|
+
data-nav-id={navigationId}
|
|
167
|
+
>
|
|
168
|
+
<div class="absolute z-10 top-0 right-0 flex flex-row-reverse justify-between text-sm">
|
|
169
|
+
<div class="flex gap-2">
|
|
170
|
+
{#if jobId && download}
|
|
171
|
+
<div class="flex items-center">
|
|
172
|
+
<a
|
|
173
|
+
class="text-primary pb-0.5"
|
|
174
|
+
target="_blank"
|
|
175
|
+
href="{base}/api/w/{$workspaceStore}/jobs_u/get_logs/{jobId}"
|
|
176
|
+
download="windmill_logs_{jobId}.txt"
|
|
177
|
+
><Download size="14" />
|
|
178
|
+
</a>
|
|
179
|
+
</div>
|
|
180
|
+
{/if}
|
|
181
|
+
<button onclick={logViewer.openDrawer}><Expand size="12" /></button>
|
|
182
|
+
{#if !noAutoScroll}
|
|
183
|
+
<div
|
|
184
|
+
class="{small ? '' : 'py-2'} pr-2 {small
|
|
185
|
+
? '!text-2xs'
|
|
186
|
+
: '!text-xs'} flex gap-2 text-tertiary items-center"
|
|
198
187
|
>
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
188
|
+
Auto scroll
|
|
189
|
+
<input class="windmillapp" type="checkbox" bind:checked={scroll} />
|
|
190
|
+
</div>
|
|
191
|
+
{/if}
|
|
192
|
+
</div>
|
|
202
193
|
</div>
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
194
|
+
{#if isLoading}
|
|
195
|
+
<div class="flex gap-2 absolute top-2 left-2 items-center z-10">
|
|
196
|
+
<Loader2 class="animate-spin" />
|
|
197
|
+
{#if tag}
|
|
198
|
+
<div class="flex flex-row items-center gap-1">
|
|
199
|
+
<div class="text-secondary {small ? '!text-2xs' : '!text-xs'}"
|
|
200
|
+
>{tagLabel ?? 'tag'}: {tag}</div
|
|
201
|
+
>
|
|
202
|
+
<NoWorkerWithTagWarning {tagLabel} {tag} />
|
|
203
|
+
</div>
|
|
204
|
+
{/if}
|
|
205
|
+
{#if jobId}
|
|
206
|
+
<QueuePosition {jobId} />
|
|
207
|
+
{/if}
|
|
208
|
+
</div>
|
|
209
|
+
{:else if duration}
|
|
210
|
+
<span
|
|
211
|
+
class={twMerge(
|
|
212
|
+
'absolute text-tertiary dark:text-gray-400',
|
|
213
|
+
small ? '!text-2xs' : '!text-xs',
|
|
214
|
+
small ? 'top-0' : 'top-2',
|
|
215
|
+
noPadding ? '' : 'left-2'
|
|
216
|
+
)}>took {duration}ms</span
|
|
217
|
+
>
|
|
218
|
+
{/if}
|
|
219
|
+
{#if mem}
|
|
220
|
+
<span
|
|
221
|
+
class="absolute {small ? '!text-2xs' : '!text-xs'} text-tertiary dark:text-gray-400 {small
|
|
222
|
+
? 'top-0'
|
|
223
|
+
: 'top-2'} left-36">mem peak: {(mem / 1024).toPrecision(4)}MB</span
|
|
224
|
+
>
|
|
225
|
+
{/if}
|
|
226
|
+
<pre
|
|
227
|
+
class={twMerge(
|
|
228
|
+
'whitespace-pre break-words w-full',
|
|
229
|
+
small ? '!text-2xs' : '!text-xs',
|
|
230
|
+
noPadding ? '' : 'p-2'
|
|
231
|
+
)}
|
|
232
|
+
>{#if content}{@const len =
|
|
233
|
+
(content?.length ?? 0) +
|
|
234
|
+
(loadedFromObjectStore?.length ?? 0)}{#if downloadStartUrl}<button
|
|
235
|
+
onclick={getStoreLogs}
|
|
236
|
+
>Show more... <Tooltip>{tooltipText(prefixIndex)}</Tooltip></button
|
|
237
|
+
><br />{:else if len > LOG_LIMIT}(truncated to the last {LOG_LIMIT} characters)<br
|
|
238
|
+
/><button onclick={() => showMoreTruncate(len)}>Show more..</button><br />{/if}<span
|
|
239
|
+
>{@html html}</span
|
|
240
|
+
>{:else if !isLoading}<span>{customEmptyMessage}</span>{/if}</pre
|
|
215
241
|
>
|
|
216
|
-
|
|
217
|
-
<pre
|
|
218
|
-
class={twMerge(
|
|
219
|
-
'whitespace-pre break-words w-full',
|
|
220
|
-
small ? '!text-2xs' : '!text-xs',
|
|
221
|
-
noPadding ? '' : 'p-2'
|
|
222
|
-
)}
|
|
223
|
-
>{#if content}{@const len =
|
|
224
|
-
(content?.length ?? 0) +
|
|
225
|
-
(loadedFromObjectStore?.length ?? 0)}{#if downloadStartUrl}<button onclick={getStoreLogs}
|
|
226
|
-
>Show more... <Tooltip>{tooltipText(prefixIndex)}</Tooltip></button
|
|
227
|
-
><br />{:else if len > LOG_LIMIT}(truncated to the last {LOG_LIMIT} characters)<br
|
|
228
|
-
/><button onclick={() => showMoreTruncate(len)}>Show more..</button><br />{/if}<span
|
|
229
|
-
>{@html html}</span
|
|
230
|
-
>{:else if !isLoading}<span>{customEmptyMessage}</span>{/if}</pre
|
|
231
|
-
>
|
|
242
|
+
</div>
|
|
232
243
|
</div>
|
|
233
244
|
</div>
|
|
234
245
|
|
|
@@ -435,4 +446,9 @@ let html = $derived(ansi_up.ansi_to_html(downloadStartUrl && prefixIndex != unde
|
|
|
435
446
|
}
|
|
436
447
|
:global(.dark) :global(.ansi-bright-white-bg) {
|
|
437
448
|
background-color: rgb(229, 233, 240);
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
:global([data-nav-id]:focus-visible) {
|
|
452
|
+
outline: none;
|
|
453
|
+
outline-offset: 0;
|
|
438
454
|
}</style>
|
|
@@ -4,7 +4,7 @@ const lastMetaUsed = writable(undefined);
|
|
|
4
4
|
|
|
5
5
|
<script lang="ts">import { pathToMeta } from '../common';
|
|
6
6
|
import { localeConcatAnd, pluralize } from '../utils';
|
|
7
|
-
import { AppService, FlowService, FolderService, ResourceService, ScheduleService, ScriptService, HttpTriggerService, VariableService, WebsocketTriggerService, KafkaTriggerService, PostgresTriggerService, NatsTriggerService, MqttTriggerService, SqsTriggerService, GcpTriggerService } from '../gen';
|
|
7
|
+
import { AppService, FlowService, FolderService, ResourceService, ScheduleService, ScriptService, HttpTriggerService, VariableService, WebsocketTriggerService, KafkaTriggerService, PostgresTriggerService, NatsTriggerService, MqttTriggerService, SqsTriggerService, GcpTriggerService, EmailTriggerService } from '../gen';
|
|
8
8
|
import { superadmin, userStore, workspaceStore } from '../stores';
|
|
9
9
|
import { createEventDispatcher, getContext, untrack } from 'svelte';
|
|
10
10
|
import { writable } from 'svelte/store';
|
|
@@ -224,6 +224,12 @@ async function pathExists(path, kind) {
|
|
|
224
224
|
path: path
|
|
225
225
|
});
|
|
226
226
|
}
|
|
227
|
+
else if (kind === 'email_trigger') {
|
|
228
|
+
return await EmailTriggerService.existsEmailTrigger({
|
|
229
|
+
workspace: $workspaceStore,
|
|
230
|
+
path: path
|
|
231
|
+
});
|
|
232
|
+
}
|
|
227
233
|
else {
|
|
228
234
|
return false;
|
|
229
235
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
type PathKind = 'resource' | 'script' | 'variable' | 'flow' | 'schedule' | 'app' | 'raw_app' | 'http_trigger' | 'websocket_trigger' | 'kafka_trigger' | 'postgres_trigger' | 'nats_trigger' | 'mqtt_trigger' | 'sqs_trigger' | 'gcp_trigger';
|
|
1
|
+
type PathKind = 'resource' | 'script' | 'variable' | 'flow' | 'schedule' | 'app' | 'raw_app' | 'http_trigger' | 'websocket_trigger' | 'kafka_trigger' | 'postgres_trigger' | 'nats_trigger' | 'mqtt_trigger' | 'sqs_trigger' | 'gcp_trigger' | 'email_trigger';
|
|
2
2
|
interface Props {
|
|
3
3
|
fullNamePlaceholder?: string | undefined;
|
|
4
4
|
namePlaceholder?: string;
|