windmill-components 1.383.8 → 1.389.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.
Files changed (195) hide show
  1. package/package/assets/app.css +25 -1
  2. package/package/components/ArgInput.svelte +2 -1
  3. package/package/components/ChangeInstanceUsername.svelte +9 -108
  4. package/package/components/ChangeInstanceUsernameInner.svelte +112 -0
  5. package/package/components/ChangeInstanceUsernameInner.svelte.d.ts +21 -0
  6. package/package/components/DiffDrawer.svelte +27 -20
  7. package/package/components/DiffEditor.svelte +13 -1
  8. package/package/components/DisplayResult.svelte +39 -9
  9. package/package/components/DropdownV2.svelte +4 -26
  10. package/package/components/DropdownV2.svelte.d.ts +9 -1
  11. package/package/components/DropdownV2Inner.svelte +42 -0
  12. package/package/components/DropdownV2Inner.svelte.d.ts +40 -0
  13. package/package/components/Editor.svelte +142 -128
  14. package/package/components/Editor.svelte.d.ts +5 -4
  15. package/package/components/EditorBar.svelte +9 -11
  16. package/package/components/EditorSettings.svelte +44 -0
  17. package/package/components/EditorSettings.svelte.d.ts +17 -0
  18. package/package/components/EditorTheme.svelte +1 -1
  19. package/package/components/ErrorOrRecoveryHandler.svelte +27 -20
  20. package/package/components/FlowBuilder.svelte +17 -3
  21. package/package/components/FlowBuilder.svelte.d.ts +3 -0
  22. package/package/components/FlowGraphViewerStep.svelte +1 -1
  23. package/package/components/FlowStatusViewer.svelte +3 -1
  24. package/package/components/FlowStatusViewer.svelte.d.ts +1 -0
  25. package/package/components/FlowStatusViewerInner.svelte +5 -2
  26. package/package/components/FlowViewerInner.svelte +3 -7
  27. package/package/components/FormatOnSave.svelte +12 -29
  28. package/package/components/GraphqlSchemaViewer.svelte +1 -1
  29. package/package/components/GraphqlSchemaViewer.svelte.d.ts +1 -1
  30. package/package/components/HighlightCode.svelte +3 -0
  31. package/package/components/InstanceNameEditor.svelte +64 -0
  32. package/package/components/InstanceNameEditor.svelte.d.ts +23 -0
  33. package/package/components/LightweightArgInput.svelte +6 -11
  34. package/package/components/LogViewer.svelte +37 -29
  35. package/package/components/LogViewer.svelte.d.ts +2 -0
  36. package/package/components/ObjectResourceInput.svelte +1 -1
  37. package/package/components/ObjectResourceInput.svelte.d.ts +1 -0
  38. package/package/components/Path.svelte +3 -3
  39. package/package/components/QueueMetricsDrawer.svelte +6 -218
  40. package/package/components/QueueMetricsDrawer.svelte.d.ts +2 -3
  41. package/package/components/QueueMetricsDrawerInner.svelte +211 -0
  42. package/package/components/QueueMetricsDrawerInner.svelte.d.ts +15 -0
  43. package/package/components/ResourceEditorDrawer.svelte +14 -11
  44. package/package/components/ResourceEditorDrawer.svelte.d.ts +1 -1
  45. package/package/components/ResultJobLoader.svelte.d.ts +1 -1
  46. package/package/components/S3FilePicker.svelte +20 -8
  47. package/package/components/ScheduleEditorInner.svelte +497 -469
  48. package/package/components/ScriptBuilder.svelte +12 -1
  49. package/package/components/ScriptBuilder.svelte.d.ts +3 -0
  50. package/package/components/ScriptEditor.svelte +2 -0
  51. package/package/components/ScriptEditor.svelte.d.ts +2 -1
  52. package/package/components/ServiceLogsInner.svelte +511 -0
  53. package/package/components/ServiceLogsInner.svelte.d.ts +20 -0
  54. package/package/components/SimpleEditor.svelte +75 -37
  55. package/package/components/SimpleEditor.svelte.d.ts +9 -3
  56. package/package/components/Summary.svelte +33 -31
  57. package/package/components/Summary.svelte.d.ts +1 -0
  58. package/package/components/SuperadminSettings.svelte +28 -10
  59. package/package/components/TemplateEditor.svelte +1 -1
  60. package/package/components/TestJobLoader.svelte.d.ts +1 -1
  61. package/package/components/VimMode.svelte +16 -0
  62. package/package/components/VimMode.svelte.d.ts +14 -0
  63. package/package/components/WorkerTagPicker.svelte +4 -1
  64. package/package/components/WorkspaceGroup.svelte +139 -68
  65. package/package/components/WorkspaceGroup.svelte.d.ts +3 -0
  66. package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +19 -2
  67. package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +1 -0
  68. package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte.d.ts +2 -1
  69. package/package/components/apps/components/display/table/AppAggridInfiniteTableEe.svelte +2 -0
  70. package/package/components/apps/components/display/table/AppAggridInfiniteTableEe.svelte.d.ts +2 -1
  71. package/package/components/apps/components/display/table/AppAggridTable.svelte +45 -3
  72. package/package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +2 -1
  73. package/package/components/apps/components/display/table/AppAggridTableEe.svelte +2 -0
  74. package/package/components/apps/components/display/table/AppAggridTableEe.svelte.d.ts +2 -1
  75. package/package/components/apps/editor/AppEditor.svelte +239 -92
  76. package/package/components/apps/editor/AppEditorBottomPanel.svelte +22 -0
  77. package/package/components/apps/editor/AppEditorBottomPanel.svelte.d.ts +24 -0
  78. package/package/components/apps/editor/AppEditorHeader.svelte +44 -2
  79. package/package/components/apps/editor/AppEditorHeader.svelte.d.ts +9 -0
  80. package/package/components/apps/editor/AppExportButton.svelte +1 -1
  81. package/package/components/apps/editor/AppPreview.svelte +4 -0
  82. package/package/components/apps/editor/DeploymentHistory.svelte +7 -3
  83. package/package/components/apps/editor/GridEditor.svelte +4 -13
  84. package/package/components/apps/editor/RunnableJobPanel.svelte +25 -58
  85. package/package/components/apps/editor/RunnableJobPanel.svelte.d.ts +10 -1
  86. package/package/components/apps/editor/RunnalbeJobPanelInner.svelte +56 -0
  87. package/package/components/apps/editor/RunnalbeJobPanelInner.svelte.d.ts +18 -0
  88. package/package/components/apps/editor/SubGridEditor.svelte +3 -1
  89. package/package/components/apps/editor/component/Component.svelte +26 -4
  90. package/package/components/apps/editor/component/Component.svelte.d.ts +1 -0
  91. package/package/components/apps/editor/component/components.d.ts +5 -0
  92. package/package/components/apps/editor/componentsPanel/CssProperty.svelte +2 -0
  93. package/package/components/apps/editor/componentsPanel/tailwindUtils.js +267 -1
  94. package/package/components/apps/editor/contextPanel/ContextPanel.svelte +9 -1
  95. package/package/components/apps/editor/contextPanel/ContextPanel.svelte.d.ts +2 -0
  96. package/package/components/apps/editor/inlineScriptsPanel/CacheTtlPopup.svelte +1 -0
  97. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +4 -0
  98. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +7 -2
  99. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte.d.ts +5 -1
  100. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +14 -2
  101. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte.d.ts +1 -0
  102. package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +25 -5
  103. package/package/components/apps/editor/settingsPanel/HideButton.svelte +47 -0
  104. package/package/components/apps/editor/settingsPanel/HideButton.svelte.d.ts +22 -0
  105. package/package/components/apps/editor/settingsPanel/TableActions.svelte +43 -4
  106. package/package/components/apps/editor/settingsPanel/TableActions.svelte.d.ts +2 -1
  107. package/package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte +2 -1
  108. package/package/components/apps/editor/settingsPanel/inputEditor/JsonEditor.svelte.d.ts +1 -0
  109. package/package/components/apps/svelte-grid/Grid.svelte +6 -2
  110. package/package/components/apps/svelte-grid/Grid.svelte.d.ts +1 -0
  111. package/package/components/apps/svelte-grid/MoveResize.svelte +11 -3
  112. package/package/components/apps/svelte-grid/MoveResize.svelte.d.ts +1 -0
  113. package/package/components/apps/svelte-grid/utils/item.d.ts +4 -1
  114. package/package/components/apps/svelte-grid/utils/item.js +11 -4
  115. package/package/components/build_workers.d.ts +1 -1
  116. package/package/components/build_workers.js +16 -122
  117. package/package/components/common/button/Button.svelte.d.ts +2 -2
  118. package/package/components/common/calendarPicker/CalendarPicker.svelte +6 -2
  119. package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +2 -0
  120. package/package/components/common/drawer/ConditionalPortal.svelte +2 -1
  121. package/package/components/common/drawer/ConditionalPortal.svelte.d.ts +1 -0
  122. package/package/components/common/languageIcons/LanguageIcon.svelte +5 -2
  123. package/package/components/common/popup/Popup.svelte +2 -1
  124. package/package/components/common/popup/Popup.svelte.d.ts +1 -0
  125. package/package/components/common/table/AppRow.svelte +11 -8
  126. package/package/components/common/table/AppRow.svelte.d.ts +1 -2
  127. package/package/components/common/table/FlowRow.svelte +3 -3
  128. package/package/components/common/table/FlowRow.svelte.d.ts +1 -2
  129. package/package/components/common/table/RawAppRow.svelte +3 -3
  130. package/package/components/common/table/RawAppRow.svelte.d.ts +1 -2
  131. package/package/components/common/table/ScriptRow.svelte +3 -3
  132. package/package/components/common/table/ScriptRow.svelte.d.ts +1 -2
  133. package/package/components/copilot/CodeCompletionStatus.svelte +21 -46
  134. package/package/components/copilot/StepGen.svelte +2 -1
  135. package/package/components/custom_ui.d.ts +4 -1
  136. package/package/components/flows/CreateActionsApp.svelte +11 -8
  137. package/package/components/flows/CreateActionsFlow.svelte +11 -8
  138. package/package/components/flows/FlowEditor.svelte +1 -2
  139. package/package/components/flows/FlowEditor.svelte.d.ts +0 -1
  140. package/package/components/flows/FlowHistory.svelte +6 -3
  141. package/package/components/flows/content/FlowModuleComponent.svelte +1 -0
  142. package/package/components/flows/content/FlowModuleScript.svelte +15 -11
  143. package/package/components/flows/content/FlowSettings.svelte +1 -4
  144. package/package/components/flows/content/ScriptEditorDrawer.svelte +3 -0
  145. package/package/components/flows/header/FlowYamlEditor.svelte +55 -0
  146. package/package/components/flows/header/FlowYamlEditor.svelte.d.ts +17 -0
  147. package/package/components/flows/map/InsertTriggerButton.svelte +1 -1
  148. package/package/components/flows/map/InsertTriggerButton.svelte.d.ts +1 -0
  149. package/package/components/flows/map/VirtualItem.svelte +1 -1
  150. package/package/components/flows/pickers/PickHubScript.svelte +1 -0
  151. package/package/components/flows/types.d.ts +7 -6
  152. package/package/components/flows/utils.d.ts +9 -0
  153. package/package/components/flows/utils.js +21 -0
  154. package/package/components/graph/graphBuilder.js +1 -0
  155. package/package/components/graph/model.d.ts +1 -0
  156. package/package/components/graph/renderers/edges/BaseEdge.svelte +16 -0
  157. package/package/components/graph/renderers/nodes/BranchOneStart.svelte +1 -1
  158. package/package/components/graph/renderers/nodes/NoBranchNode.svelte +5 -1
  159. package/package/components/graph/renderers/nodes/NoBranchNode.svelte.d.ts +1 -0
  160. package/package/components/home/Item.svelte +0 -17
  161. package/package/components/home/deploy_ui.d.ts +2 -0
  162. package/package/components/home/deploy_ui.js +21 -0
  163. package/package/components/icons/RustIcon.svelte +70 -0
  164. package/package/components/icons/RustIcon.svelte.d.ts +25 -0
  165. package/package/components/icons/rust-logo.svg +1 -0
  166. package/package/components/instanceSettings.js +2 -2
  167. package/package/components/monaco_keybindings.d.ts +3 -0
  168. package/package/components/monaco_keybindings.js +9 -0
  169. package/package/components/preview/FlowPreviewStatus.svelte +6 -2
  170. package/package/components/runs/JobLoader.svelte +12 -3
  171. package/package/components/runs/JobLoader.svelte.d.ts +1 -1
  172. package/package/components/runs/ManuelDatePicker.svelte +31 -44
  173. package/package/components/runs/ManuelDatePicker.svelte.d.ts +6 -2
  174. package/package/components/runs/RunsFilter.svelte +4 -1
  175. package/package/components/runs/RunsFilter.svelte.d.ts +1 -0
  176. package/package/components/search/GlobalSearchModal.svelte +36 -25
  177. package/package/components/vscode.js +1 -1
  178. package/package/components/wizards/TableActionsWizard.svelte +84 -0
  179. package/package/components/wizards/TableActionsWizard.svelte.d.ts +22 -0
  180. package/package/editorUtils.js +2 -0
  181. package/package/gen/core/OpenAPI.js +1 -1
  182. package/package/gen/schemas.gen.d.ts +8 -8
  183. package/package/gen/schemas.gen.js +8 -8
  184. package/package/gen/services.gen.d.ts +4 -0
  185. package/package/gen/services.gen.js +16 -0
  186. package/package/gen/types.gen.d.ts +20 -8
  187. package/package/infer.d.ts +1 -1
  188. package/package/infer.js +48 -7
  189. package/package/script_helpers.d.ts +1 -0
  190. package/package/script_helpers.js +39 -1
  191. package/package/scripts.d.ts +1 -1
  192. package/package/scripts.js +12 -4
  193. package/package/stores.d.ts +5 -1
  194. package/package/stores.js +7 -2
  195. package/package.json +18 -9
@@ -147,6 +147,9 @@ async function checkForUnsavedChanges() {
147
147
  {#if script}
148
148
  {#key script.hash}
149
149
  <ScriptEditor
150
+ on:saveDraft={() => {
151
+ saveScript()
152
+ }}
150
153
  noSyncFromGithub
151
154
  lang={script.language}
152
155
  path={script.path}
@@ -0,0 +1,55 @@
1
+ <script>import Drawer from '../../common/drawer/Drawer.svelte';
2
+ import DrawerContent from '../../common/drawer/DrawerContent.svelte';
3
+ import { getContext } from 'svelte';
4
+ import { filteredContentForExport } from '../utils';
5
+ import YAML from 'yaml';
6
+ import SimpleEditor from '../../SimpleEditor.svelte';
7
+ import { Button } from '../../common';
8
+ import { sendUserToast } from '../../../toast';
9
+ const { flowStore } = getContext('FlowEditorContext');
10
+ export let drawer;
11
+ let code = '';
12
+ function reload() {
13
+ code = YAML.stringify(filteredContentForExport($flowStore));
14
+ }
15
+ function apply() {
16
+ try {
17
+ const parsed = YAML.parse(code);
18
+ if (parsed.summary && typeof parsed.summary === 'string') {
19
+ $flowStore.summary = parsed.summary;
20
+ }
21
+ if (parsed.description && typeof parsed.description === 'string') {
22
+ $flowStore.description = parsed.description;
23
+ }
24
+ if (parsed['ws_error_handler_muted'] !== undefined) {
25
+ $flowStore.ws_error_handler_muted = parsed['ws_error_handler_muted'];
26
+ }
27
+ if (parsed['dedicated_worker'] !== undefined) {
28
+ $flowStore.dedicated_worker = parsed['dedicated_worker'];
29
+ }
30
+ if (parsed['visible_to_runner_only'] !== undefined) {
31
+ $flowStore.visible_to_runner_only = parsed['visible_to_runner_only'];
32
+ }
33
+ $flowStore.value = parsed.value;
34
+ $flowStore.schema = parsed.schema;
35
+ $flowStore.tag = parsed.tag;
36
+ $flowStore = $flowStore;
37
+ }
38
+ catch (e) {
39
+ sendUserToast('Error parsing yaml: ' + e), true;
40
+ }
41
+ }
42
+ </script>
43
+
44
+ <Drawer on:open={reload} bind:this={drawer} size="800px">
45
+ <DrawerContent title="OpenFlow" on:close={() => drawer?.toggleDrawer()}>
46
+ <svelte:fragment slot="actions">
47
+ <Button color="dark" size="sm" on:click={reload}>Reset code</Button>
48
+ <Button color="dark" size="sm" on:click={apply}>Apply changes</Button>
49
+ </svelte:fragment>
50
+
51
+ {#if $flowStore}
52
+ <SimpleEditor autoHeight bind:code lang="yaml" />
53
+ {/if}
54
+ </DrawerContent>
55
+ </Drawer>
@@ -0,0 +1,17 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import Drawer from '../../common/drawer/Drawer.svelte';
3
+ declare const __propDef: {
4
+ props: {
5
+ drawer: Drawer | undefined;
6
+ };
7
+ events: {
8
+ [evt: string]: CustomEvent<any>;
9
+ };
10
+ slots: {};
11
+ };
12
+ export type FlowYamlEditorProps = typeof __propDef.props;
13
+ export type FlowYamlEditorEvents = typeof __propDef.events;
14
+ export type FlowYamlEditorSlots = typeof __propDef.slots;
15
+ export default class FlowYamlEditor extends SvelteComponent<FlowYamlEditorProps, FlowYamlEditorEvents, FlowYamlEditorSlots> {
16
+ }
17
+ export {};
@@ -28,7 +28,7 @@ $: !open && (funcDesc = '');
28
28
  <Zap size={14} />
29
29
  </button>
30
30
  {#if !disableAi}
31
- <StepGen {index} bind:funcDesc bind:open {close} {modules} trigger />
31
+ <StepGen {index} bind:funcDesc bind:open {close} {modules} trigger on:insert />
32
32
  {/if}
33
33
  {#if funcDesc.length === 0}
34
34
  <div class="font-mono divide-y text-xs w-full text-secondary whitespace-nowrap">
@@ -9,6 +9,7 @@ declare const __propDef: {
9
9
  disableAi?: boolean | undefined;
10
10
  };
11
11
  events: {
12
+ insert: CustomEvent<any>;
12
13
  new: CustomEvent<any>;
13
14
  } & {
14
15
  [evt: string]: CustomEvent<any>;
@@ -33,7 +33,7 @@ const { currentStepStore: copilotCurrentStepStore } = getContext('FlowCopilotCon
33
33
  }
34
34
  }
35
35
  }}
36
- id={`flow-editor-virtual-${label}`}
36
+ id={`flow-editor-virtual-${encodeURIComponent(label)}`}
37
37
  >
38
38
  <div
39
39
  style={borderColor ? `border-color: ${borderColor};` : ''}
@@ -62,6 +62,7 @@ async function applyFilter(filter, filterKind, appFilter) {
62
62
  path: `hub/${x.version_id}/${x.app}/${x.summary.toLowerCase().replaceAll(/\s+/g, '_')}`,
63
63
  summary: `${x.summary} (${x.app})`
64
64
  }));
65
+ hubNotAvailable = false;
65
66
  }
66
67
  catch (err) {
67
68
  hubNotAvailable = true;
@@ -12,6 +12,12 @@ export type FlowInput = Record<string, {
12
12
  type: 'error' | 'warning';
13
13
  }>;
14
14
  }>;
15
+ export type ExtendedOpenFlow = OpenFlow & {
16
+ tag?: string;
17
+ ws_error_handler_muted?: boolean;
18
+ dedicated_worker?: boolean;
19
+ visible_to_runner_only?: boolean;
20
+ };
15
21
  export type FlowEditorContext = {
16
22
  selectedId: Writable<string>;
17
23
  moving: Writable<{
@@ -23,12 +29,7 @@ export type FlowEditorContext = {
23
29
  scriptEditorDrawer: Writable<ScriptEditorDrawer | undefined>;
24
30
  history: History<OpenFlow>;
25
31
  pathStore: Writable<string>;
26
- flowStore: Writable<OpenFlow & {
27
- tag?: string;
28
- ws_error_handler_muted?: boolean;
29
- dedicated_worker?: boolean;
30
- visible_to_runner_only?: boolean;
31
- }>;
32
+ flowStore: Writable<ExtendedOpenFlow>;
32
33
  flowStateStore: Writable<FlowState>;
33
34
  testStepStore: Writable<Record<string, any>>;
34
35
  saveDraft: () => void;
@@ -2,7 +2,16 @@ import { type FlowModule, type InputTransform, type Job, type RestartedFrom, typ
2
2
  import type { FlowModuleState } from './flowState';
3
3
  import type { PickableProperties } from './previousResults';
4
4
  import type { Schema } from '../../common';
5
+ import type { ExtendedOpenFlow } from './types';
5
6
  export declare function evalValue(k: string, mod: FlowModule, testStepStore: Record<string, any>, pickableProperties: PickableProperties | undefined, showError: boolean): any;
7
+ export declare function filteredContentForExport(flow: ExtendedOpenFlow): {
8
+ summary: string;
9
+ description: string | undefined;
10
+ value: import("../../gen").FlowValue;
11
+ schema: {
12
+ [key: string]: unknown;
13
+ } | undefined;
14
+ };
6
15
  export declare function cleanInputs(flow: OpenFlow | any): OpenFlow & {
7
16
  tag?: string;
8
17
  ws_error_handler_muted?: boolean;
@@ -49,6 +49,27 @@ export function evalValue(k, mod, testStepStore, pickableProperties, showError)
49
49
  }
50
50
  return v;
51
51
  }
52
+ export function filteredContentForExport(flow) {
53
+ let o = {
54
+ summary: flow.summary,
55
+ description: flow.description,
56
+ value: flow.value,
57
+ schema: flow.schema
58
+ };
59
+ if (flow.dedicated_worker) {
60
+ o['dedicated_worker'] = flow.dedicated_worker;
61
+ }
62
+ if (flow.visible_to_runner_only) {
63
+ o['visible_to_runner_only'] = flow.visible_to_runner_only;
64
+ }
65
+ if (flow.ws_error_handler_muted) {
66
+ o['ws_error_handler_muted'] = flow.ws_error_handler_muted;
67
+ }
68
+ if (flow.tag) {
69
+ o['tag'] = flow.tag;
70
+ }
71
+ return o;
72
+ }
52
73
  export function cleanInputs(flow) {
53
74
  const newFlow = JSON.parse(JSON.stringify(flow));
54
75
  newFlow.value.modules.forEach((mod) => {
@@ -243,6 +243,7 @@ export default function graphBuilder(modules, extra, failureModule, eventHandler
243
243
  branchIndex: -1,
244
244
  modules: module.value.default,
245
245
  eventHandlers: eventHandlers,
246
+ branchOne: true,
246
247
  ...extra
247
248
  },
248
249
  position: { x: -1, y: -1 },
@@ -37,6 +37,7 @@ export type FlowStatusViewerContext = {
37
37
  hideDownloadInGraph?: boolean;
38
38
  hideTimeline?: boolean;
39
39
  hideNodeDefinition?: boolean;
40
+ hideJobId?: boolean;
40
41
  };
41
42
  export type GraphModuleState = {
42
43
  type: FlowStatusModule['type'];
@@ -44,6 +44,14 @@ let menuOpen = false;
44
44
  on:new={(e) => {
45
45
  data?.eventHandlers.insert({ modules: data.modules, index: data.index, detail: e.detail })
46
46
  }}
47
+ on:insert={(e) => {
48
+ data?.eventHandlers.insert({
49
+ modules: data.modules,
50
+ index: data.index,
51
+ script: e.detail,
52
+ detail: 'script'
53
+ })
54
+ }}
47
55
  bind:open={menuOpen}
48
56
  />
49
57
  </div>
@@ -61,6 +69,14 @@ let menuOpen = false;
61
69
  detail: e.detail
62
70
  })
63
71
  }}
72
+ on:insert={(e) => {
73
+ data?.eventHandlers.insert({
74
+ modules: data.modules,
75
+ index: data.index,
76
+ script: e.detail,
77
+ detail: 'script'
78
+ })
79
+ }}
64
80
  index={data?.index ?? 0}
65
81
  modules={data?.modules ?? []}
66
82
  />
@@ -4,7 +4,7 @@ import { X } from 'lucide-svelte';
4
4
  import { getStateColor } from '../../util';
5
5
  import { computeBorderStatus } from '../utils';
6
6
  export let data;
7
- $: borderStatus = computeBorderStatus(data.branchIndex, 'branchone', data.flowModuleStates?.[data.id]);
7
+ $: borderStatus = computeBorderStatus(data.branchIndex + 1, 'branchone', data.flowModuleStates?.[data.id]);
8
8
  </script>
9
9
 
10
10
  <NodeWrapper let:darkMode offset={data.offset}>
@@ -1,7 +1,11 @@
1
1
  <script>import VirtualItem from '../../../flows/map/VirtualItem.svelte';
2
2
  import NodeWrapper from './NodeWrapper.svelte';
3
3
  import { getStateColor } from '../../util';
4
+ import { computeBorderStatus } from '../utils';
4
5
  export let data;
6
+ $: borderStatus = data.branchOne
7
+ ? computeBorderStatus(0, 'branchone', data.flowModuleStates?.[data.id])
8
+ : undefined;
5
9
  </script>
6
10
 
7
11
  <NodeWrapper offset={data.offset} let:darkMode enableSourceHandle enableTargetHandle>
@@ -12,7 +16,7 @@ export let data;
12
16
  selectable={true}
13
17
  selected={false}
14
18
  bgColor={getStateColor(undefined, darkMode)}
15
- borderColor={getStateColor(data?.flowModuleStates?.[data?.id]?.type, darkMode)}
19
+ borderColor={getStateColor(borderStatus, darkMode)}
16
20
  on:select={(e) => {
17
21
  data?.eventHandlers?.select(e.detail)
18
22
  }}
@@ -12,6 +12,7 @@ declare const __propDef: {
12
12
  flowModuleStates: Record<string, GraphModuleState> | undefined;
13
13
  offset: number;
14
14
  label: string | undefined;
15
+ branchOne: boolean;
15
16
  };
16
17
  };
17
18
  events: {
@@ -9,9 +9,6 @@ import MoveDrawer from '../MoveDrawer.svelte';
9
9
  import ShareModal from '../ShareModal.svelte';
10
10
  import { createEventDispatcher } from 'svelte';
11
11
  import { ArrowBigUp } from 'lucide-svelte';
12
- import { enterpriseLicense, workspaceStore } from '../../stores';
13
- import { WorkspaceService } from '../../gen';
14
- import { ALL_DEPLOYABLE } from '../../utils_deployable';
15
12
  export let item;
16
13
  export let depth = 0;
17
14
  const dispatch = createEventDispatcher();
@@ -21,16 +18,6 @@ let moveDrawer;
21
18
  let deploymentDrawer;
22
19
  let menuOpen = false;
23
20
  export let showCode;
24
- let deployUiSettings = undefined;
25
- async function getDeployUiSettings() {
26
- if (!$enterpriseLicense) {
27
- deployUiSettings = ALL_DEPLOYABLE;
28
- return;
29
- }
30
- let settings = await WorkspaceService.getSettings({ workspace: $workspaceStore });
31
- deployUiSettings = settings.deploy_ui ?? ALL_DEPLOYABLE;
32
- }
33
- getDeployUiSettings();
34
21
  </script>
35
22
 
36
23
  {#if item.type == 'script'}
@@ -50,7 +37,6 @@ getDeployUiSettings();
50
37
  {depth}
51
38
  bind:menuOpen
52
39
  {showCode}
53
- {deployUiSettings}
54
40
  />
55
41
  {:else if item.type == 'flow'}
56
42
  <FlowRow
@@ -68,7 +54,6 @@ getDeployUiSettings();
68
54
  {deploymentDrawer}
69
55
  {depth}
70
56
  bind:menuOpen
71
- {deployUiSettings}
72
57
  />
73
58
  {:else if item.type == 'app'}
74
59
  <AppRow
@@ -82,7 +67,6 @@ getDeployUiSettings();
82
67
  {deploymentDrawer}
83
68
  {depth}
84
69
  bind:menuOpen
85
- {deployUiSettings}
86
70
  />
87
71
  {:else if item.type == 'raw_app'}
88
72
  <RawAppRow
@@ -96,7 +80,6 @@ getDeployUiSettings();
96
80
  {deploymentDrawer}
97
81
  {depth}
98
82
  bind:menuOpen
99
- {deployUiSettings}
100
83
  />
101
84
  {/if}
102
85
 
@@ -0,0 +1,2 @@
1
+ import { type WorkspaceDeployUISettings } from '../../gen';
2
+ export declare function getDeployUiSettings(): Promise<WorkspaceDeployUISettings>;
@@ -0,0 +1,21 @@
1
+ import { enterpriseLicense, workspaceStore } from '../../stores';
2
+ import { WorkspaceService } from '../../gen';
3
+ import { ALL_DEPLOYABLE } from '../../utils_deployable';
4
+ import { get, writable } from 'svelte/store';
5
+ const deployUiStore = writable({});
6
+ export async function getDeployUiSettings() {
7
+ let deployUiSettings = get(deployUiStore);
8
+ let workspace = get(workspaceStore);
9
+ if (!deployUiSettings[workspace]) {
10
+ deployUiSettings[workspace] = await getDeployUiSettingsInner();
11
+ deployUiStore.set(deployUiSettings);
12
+ }
13
+ return deployUiSettings[workspace];
14
+ }
15
+ async function getDeployUiSettingsInner() {
16
+ if (!get(enterpriseLicense)) {
17
+ return ALL_DEPLOYABLE;
18
+ }
19
+ let settings = await WorkspaceService.getSettings({ workspace: get(workspaceStore) });
20
+ return settings.deploy_ui ?? ALL_DEPLOYABLE;
21
+ }
@@ -0,0 +1,70 @@
1
+ <script>
2
+ export let height = '24px'
3
+ export let width = '24px'
4
+ </script>
5
+
6
+ <svg
7
+ {height}
8
+ {width}
9
+ id="svg3430"
10
+ version="1.1"
11
+ viewBox="0 0 106 106"
12
+ xmlns="http://www.w3.org/2000/svg"
13
+ >
14
+
15
+ <g id="logo" transform="translate(53, 53)">
16
+ <path id="r" transform="translate(0.5, 0.5)" stroke="black" stroke-width="1" stroke-linejoin="round" d=" M -9,-15 H 4 C 12,-15 12,-7 4,-7 H -9 Z M -40,22 H 0 V 11 H -9 V 3 H 1 C 12,3 6,22 15,22 H 40 V 3 H 34 V 5 C 34,13 25,12 24,7 C 23,2 19,-2 18,-2 C 33,-10 24,-26 12,-26 H -35 V -15 H -25 V 11 H -40 Z"/>
17
+ <g id="gear" mask="url(#holes)">
18
+ <circle r="43" fill="none" stroke="black" stroke-width="9"/>
19
+ <g id="cogs">
20
+ <polygon id="cog" stroke="black" stroke-width="3" stroke-linejoin="round" points="46,3 51,0 46,-3"/>
21
+ <use xlink:href="#cog" transform="rotate(11.25)"/>
22
+ <use xlink:href="#cog" transform="rotate(22.50)"/>
23
+ <use xlink:href="#cog" transform="rotate(33.75)"/>
24
+ <use xlink:href="#cog" transform="rotate(45.00)"/>
25
+ <use xlink:href="#cog" transform="rotate(56.25)"/>
26
+ <use xlink:href="#cog" transform="rotate(67.50)"/>
27
+ <use xlink:href="#cog" transform="rotate(78.75)"/>
28
+ <use xlink:href="#cog" transform="rotate(90.00)"/>
29
+ <use xlink:href="#cog" transform="rotate(101.25)"/>
30
+ <use xlink:href="#cog" transform="rotate(112.50)"/>
31
+ <use xlink:href="#cog" transform="rotate(123.75)"/>
32
+ <use xlink:href="#cog" transform="rotate(135.00)"/>
33
+ <use xlink:href="#cog" transform="rotate(146.25)"/>
34
+ <use xlink:href="#cog" transform="rotate(157.50)"/>
35
+ <use xlink:href="#cog" transform="rotate(168.75)"/>
36
+ <use xlink:href="#cog" transform="rotate(180.00)"/>
37
+ <use xlink:href="#cog" transform="rotate(191.25)"/>
38
+ <use xlink:href="#cog" transform="rotate(202.50)"/>
39
+ <use xlink:href="#cog" transform="rotate(213.75)"/>
40
+ <use xlink:href="#cog" transform="rotate(225.00)"/>
41
+ <use xlink:href="#cog" transform="rotate(236.25)"/>
42
+ <use xlink:href="#cog" transform="rotate(247.50)"/>
43
+ <use xlink:href="#cog" transform="rotate(258.75)"/>
44
+ <use xlink:href="#cog" transform="rotate(270.00)"/>
45
+ <use xlink:href="#cog" transform="rotate(281.25)"/>
46
+ <use xlink:href="#cog" transform="rotate(292.50)"/>
47
+ <use xlink:href="#cog" transform="rotate(303.75)"/>
48
+ <use xlink:href="#cog" transform="rotate(315.00)"/>
49
+ <use xlink:href="#cog" transform="rotate(326.25)"/>
50
+ <use xlink:href="#cog" transform="rotate(337.50)"/>
51
+ <use xlink:href="#cog" transform="rotate(348.75)"/>
52
+ </g>
53
+ <g id="mounts">
54
+ <polygon id="mount" stroke="black" stroke-width="6" stroke-linejoin="round" points="-7,-42 0,-35 7,-42"/>
55
+ <use xlink:href="#mount" transform="rotate(72)"/>
56
+ <use xlink:href="#mount" transform="rotate(144)"/>
57
+ <use xlink:href="#mount" transform="rotate(216)"/>
58
+ <use xlink:href="#mount" transform="rotate(288)"/>
59
+ </g>
60
+ </g>
61
+ <mask id="holes">
62
+ <rect x="-60" y="-60" width="120" height="120" fill="white"/>
63
+ <circle id="hole" cy="-40" r="3"/>
64
+ <use xlink:href="#hole" transform="rotate(72)"/>
65
+ <use xlink:href="#hole" transform="rotate(144)"/>
66
+ <use xlink:href="#hole" transform="rotate(216)"/>
67
+ <use xlink:href="#hole" transform="rotate(288)"/>
68
+ </mask>
69
+ </g>
70
+ </svg>
@@ -0,0 +1,25 @@
1
+ /** @typedef {typeof __propDef.props} RustIconProps */
2
+ /** @typedef {typeof __propDef.events} RustIconEvents */
3
+ /** @typedef {typeof __propDef.slots} RustIconSlots */
4
+ export default class RustIcon extends SvelteComponent<{
5
+ height?: string | undefined;
6
+ width?: string | undefined;
7
+ }, {
8
+ [evt: string]: CustomEvent<any>;
9
+ }, {}> {
10
+ }
11
+ export type RustIconProps = typeof __propDef.props;
12
+ export type RustIconEvents = typeof __propDef.events;
13
+ export type RustIconSlots = typeof __propDef.slots;
14
+ import { SvelteComponent } from "svelte";
15
+ declare const __propDef: {
16
+ props: {
17
+ height?: string | undefined;
18
+ width?: string | undefined;
19
+ };
20
+ events: {
21
+ [evt: string]: CustomEvent<any>;
22
+ };
23
+ slots: {};
24
+ };
25
+ export {};
@@ -0,0 +1 @@
1
+ <svg height="144" width="144" xmlns="http://www.w3.org/2000/svg"><path d="m71.05 23.68c-26.06 0-47.27 21.22-47.27 47.27s21.22 47.27 47.27 47.27 47.27-21.22 47.27-47.27-21.22-47.27-47.27-47.27zm-.07 4.2a3.1 3.11 0 0 1 3.02 3.11 3.11 3.11 0 0 1 -6.22 0 3.11 3.11 0 0 1 3.2-3.11zm7.12 5.12a38.27 38.27 0 0 1 26.2 18.66l-3.67 8.28c-.63 1.43.02 3.11 1.44 3.75l7.06 3.13a38.27 38.27 0 0 1 .08 6.64h-3.93c-.39 0-.55.26-.55.64v1.8c0 4.24-2.39 5.17-4.49 5.4-2 .23-4.21-.84-4.49-2.06-1.18-6.63-3.14-8.04-6.24-10.49 3.85-2.44 7.85-6.05 7.85-10.87 0-5.21-3.57-8.49-6-10.1-3.42-2.25-7.2-2.7-8.22-2.7h-40.6a38.27 38.27 0 0 1 21.41-12.08l4.79 5.02c1.08 1.13 2.87 1.18 4 .09zm-44.2 23.02a3.11 3.11 0 0 1 3.02 3.11 3.11 3.11 0 0 1 -6.22 0 3.11 3.11 0 0 1 3.2-3.11zm74.15.14a3.11 3.11 0 0 1 3.02 3.11 3.11 3.11 0 0 1 -6.22 0 3.11 3.11 0 0 1 3.2-3.11zm-68.29.5h5.42v24.44h-10.94a38.27 38.27 0 0 1 -1.24-14.61l6.7-2.98c1.43-.64 2.08-2.31 1.44-3.74zm22.62.26h12.91c.67 0 4.71.77 4.71 3.8 0 2.51-3.1 3.41-5.65 3.41h-11.98zm0 17.56h9.89c.9 0 4.83.26 6.08 5.28.39 1.54 1.26 6.56 1.85 8.17.59 1.8 2.98 5.4 5.53 5.4h16.14a38.27 38.27 0 0 1 -3.54 4.1l-6.57-1.41c-1.53-.33-3.04.65-3.37 2.18l-1.56 7.28a38.27 38.27 0 0 1 -31.91-.15l-1.56-7.28c-.33-1.53-1.83-2.51-3.36-2.18l-6.43 1.38a38.27 38.27 0 0 1 -3.32-3.92h31.27c.35 0 .59-.06.59-.39v-11.06c0-.32-.24-.39-.59-.39h-9.15zm-14.43 25.33a3.11 3.11 0 0 1 3.02 3.11 3.11 3.11 0 0 1 -6.22 0 3.11 3.11 0 0 1 3.2-3.11zm46.05.14a3.11 3.11 0 0 1 3.02 3.11 3.11 3.11 0 0 1 -6.22 0 3.11 3.11 0 0 1 3.2-3.11z"/><path d="m115.68 70.95a44.63 44.63 0 0 1 -44.63 44.63 44.63 44.63 0 0 1 -44.63-44.63 44.63 44.63 0 0 1 44.63-44.63 44.63 44.63 0 0 1 44.63 44.63zm-.84-4.31 6.96 4.31-6.96 4.31 5.98 5.59-7.66 2.87 4.78 6.65-8.09 1.32 3.4 7.46-8.19-.29 1.88 7.98-7.98-1.88.29 8.19-7.46-3.4-1.32 8.09-6.65-4.78-2.87 7.66-5.59-5.98-4.31 6.96-4.31-6.96-5.59 5.98-2.87-7.66-6.65 4.78-1.32-8.09-7.46 3.4.29-8.19-7.98 1.88 1.88-7.98-8.19.29 3.4-7.46-8.09-1.32 4.78-6.65-7.66-2.87 5.98-5.59-6.96-4.31 6.96-4.31-5.98-5.59 7.66-2.87-4.78-6.65 8.09-1.32-3.4-7.46 8.19.29-1.88-7.98 7.98 1.88-.29-8.19 7.46 3.4 1.32-8.09 6.65 4.78 2.87-7.66 5.59 5.98 4.31-6.96 4.31 6.96 5.59-5.98 2.87 7.66 6.65-4.78 1.32 8.09 7.46-3.4-.29 8.19 7.98-1.88-1.88 7.98 8.19-.29-3.4 7.46 8.09 1.32-4.78 6.65 7.66 2.87z" fill-rule="evenodd" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="3"/></svg>
@@ -91,8 +91,8 @@ export const settings = {
91
91
  ee_only: ''
92
92
  },
93
93
  {
94
- label: 'Critical Error Channels',
95
- description: 'Channels to send critical errors to. SMTP must be configured for the email channel.',
94
+ label: 'Critical Alert Channels',
95
+ description: 'Channels to send critical alerts to. SMTP must be configured for the email channel.',
96
96
  key: 'critical_error_channels',
97
97
  fieldType: 'critical_error_channels',
98
98
  storage: 'setting',
@@ -0,0 +1,3 @@
1
+ import type { IDisposable } from 'monaco-editor';
2
+ import * as monaco from 'monaco-editor';
3
+ export declare function initVim(editor: monaco.editor.ICodeEditor, statusBarElement: Element, save: () => void): IDisposable;
@@ -0,0 +1,9 @@
1
+ import * as monaco from 'monaco-editor';
2
+ // @ts-ignore
3
+ import * as MonacoVim from 'monaco-vim';
4
+ export function initVim(editor, statusBarElement, save) {
5
+ MonacoVim.VimMode.Vim.defineEx('write', 'w', function () {
6
+ save();
7
+ });
8
+ return MonacoVim.initVimMode(editor, statusBarElement);
9
+ }
@@ -1,20 +1,24 @@
1
1
  <script>import { base } from '../../base';
2
2
  import JobStatus from '../JobStatus.svelte';
3
+ import { ExternalLinkIcon } from 'lucide-svelte';
4
+ import { getContext } from 'svelte';
3
5
  export let job;
6
+ let { hideJobId } = getContext('FlowStatusViewer');
4
7
  </script>
5
8
 
6
9
  <div class="grid grid-cols-2 gap-4 mb-1 text-tertiary dark:text-gray-400">
7
10
  <JobStatus {job} />
8
- {#if job}
11
+ {#if job && !hideJobId}
9
12
  <div>
10
13
  <div class="text-primary whitespace-nowrap truncate text-sm">
11
- <span class="font-semibold mr-1">Flow's job Id:</span>
14
+ <span class="font-semibold mr-1">Flow:</span>
12
15
  <a
13
16
  rel="noreferrer"
14
17
  target="_blank"
15
18
  href="{base}/run/{job?.id}?workspace={job?.workspace_id}"
16
19
  >
17
20
  {job?.id}
21
+ <ExternalLinkIcon size={14} class="inline mb-1 ml-1" />
18
22
  </a>
19
23
  </div>
20
24
  </div>
@@ -121,7 +121,11 @@ async function fetchJobs(startedBefore, startedAfter, startedAfterCompletedJobs)
121
121
  scriptPathStart: scriptPathStart,
122
122
  jobKinds,
123
123
  success: success == 'success' ? true : success == 'failure' ? false : undefined,
124
- running: (success == 'running' || success == 'suspended') ? true : (success == 'waiting') ? false : undefined,
124
+ running: success == 'running' || success == 'suspended'
125
+ ? true
126
+ : success == 'waiting'
127
+ ? false
128
+ : undefined,
125
129
  isSkipped: isSkipped ? undefined : false,
126
130
  // isFlowStep: jobKindsCat != 'all' ? false : undefined,
127
131
  hasNullParent: scriptPathExact != undefined || scriptPathStart != undefined || jobKindsCat != 'all'
@@ -131,7 +135,9 @@ async function fetchJobs(startedBefore, startedAfter, startedAfterCompletedJobs)
131
135
  tag: tag === null || tag === '' ? undefined : tag,
132
136
  isNotSchedule: showSchedules == false ? true : undefined,
133
137
  suspended: success == 'waiting' ? false : success == 'suspended' ? true : undefined,
134
- scheduledForBeforeNow: showFutureJobs == false || (success == 'waiting' || success == 'suspended') ? true : undefined,
138
+ scheduledForBeforeNow: showFutureJobs == false || success == 'waiting' || success == 'suspended'
139
+ ? true
140
+ : undefined,
135
141
  args: argFilter && argFilter != '{}' && argFilter != '' && argError == ''
136
142
  ? argFilter
137
143
  : undefined,
@@ -259,7 +265,10 @@ async function loadJobsIntern(shouldGetCount) {
259
265
  loading = false;
260
266
  }
261
267
  async function getCount() {
262
- const { database_length, suspended } = (await JobService.getQueueCount({ workspace: $workspaceStore, allWorkspaces }));
268
+ const { database_length, suspended } = await JobService.getQueueCount({
269
+ workspace: $workspaceStore,
270
+ allWorkspaces
271
+ });
263
272
  if (queue_count) {
264
273
  queue_count.set(database_length);
265
274
  }
@@ -35,7 +35,7 @@ declare const __propDef: {
35
35
  allWorkspaces?: boolean | undefined;
36
36
  computeMinAndMax: (() => {
37
37
  minTs: string;
38
- maxTs: string;
38
+ maxTs: string | undefined;
39
39
  } | undefined) | undefined;
40
40
  lookback?: number | undefined;
41
41
  perPage?: number | undefined;