windmill-components 1.382.1 → 1.382.7

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 (44) hide show
  1. package/package/base.d.ts +1 -1
  2. package/package/base.js +1 -1
  3. package/package/components/EditorBar.svelte +48 -38
  4. package/package/components/EditorBar.svelte.d.ts +2 -0
  5. package/package/components/FlowBuilder.svelte +15 -12
  6. package/package/components/FlowBuilder.svelte.d.ts +2 -2
  7. package/package/components/FlowStatusViewer.svelte +7 -1
  8. package/package/components/FlowStatusViewer.svelte.d.ts +3 -0
  9. package/package/components/FlowStatusViewerInner.svelte +12 -5
  10. package/package/components/FlowViewer.svelte +6 -46
  11. package/package/components/FlowViewer.svelte.d.ts +1 -0
  12. package/package/components/FlowViewerInner.svelte +109 -0
  13. package/package/components/FlowViewerInner.svelte.d.ts +22 -0
  14. package/package/components/ScriptBuilder.svelte +48 -40
  15. package/package/components/ScriptBuilder.svelte.d.ts +3 -0
  16. package/package/components/ScriptEditor.svelte +3 -1
  17. package/package/components/ScriptEditor.svelte.d.ts +2 -0
  18. package/package/components/apps/components/display/AppText.svelte +8 -3
  19. package/package/components/apps/components/inputs/AppSelect.svelte +45 -29
  20. package/package/components/apps/editor/component/components.d.ts +6 -0
  21. package/package/components/apps/editor/component/components.js +6 -0
  22. package/package/components/custom_ui.d.ts +35 -1
  23. package/package/components/details/DetailPageDetailPanel.svelte +4 -38
  24. package/package/components/details/WebhooksPanel.svelte +3 -3
  25. package/package/components/flows/content/FlowModuleComponent.svelte +8 -2
  26. package/package/components/flows/content/FlowModuleEarlyStop.svelte +193 -66
  27. package/package/components/flows/content/FlowModuleHeader.svelte +1 -1
  28. package/package/components/flows/content/FlowSettings.svelte +26 -15
  29. package/package/components/flows/flowExplorer.js +3 -0
  30. package/package/components/flows/map/MapItem.svelte +1 -1
  31. package/package/components/flows/propPicker/PropPickerWrapper.svelte +2 -0
  32. package/package/components/flows/propPicker/PropPickerWrapper.svelte.d.ts +1 -0
  33. package/package/components/flows/types.d.ts +2 -0
  34. package/package/components/graph/model.d.ts +3 -0
  35. package/package/components/propertyPicker/PropPickerResult.svelte +6 -1
  36. package/package/components/propertyPicker/PropPickerResult.svelte.d.ts +1 -0
  37. package/package/components/sidebar/changelogs.js +5 -0
  38. package/package/gen/core/OpenAPI.js +1 -1
  39. package/package/gen/schemas.gen.d.ts +12 -0
  40. package/package/gen/schemas.gen.js +12 -0
  41. package/package/gen/services.gen.d.ts +4 -3
  42. package/package/gen/services.gen.js +7 -5
  43. package/package/gen/types.gen.d.ts +16 -8
  44. package/package.json +1 -1
@@ -51,7 +51,7 @@ $: moduleRetry = module.retry?.constant || module.retry?.exponential;
51
51
  <svelte:fragment slot="text">Cache</svelte:fragment>
52
52
  </Popover>
53
53
  {/if}
54
- {#if module.stop_after_if}
54
+ {#if module.stop_after_if || module.stop_after_all_iters_if}
55
55
  <Popover
56
56
  placement="bottom"
57
57
  class="center-center rounded p-2 bg-blue-100 text-blue-800 border border-blue-300 hover:bg-blue-200 dark:bg-frost-700 dark:text-frost-100 dark:border-frost-600"
@@ -23,7 +23,7 @@ import ErrorHandlerToggleButton from '../../details/ErrorHandlerToggleButton.sve
23
23
  import WorkerTagPicker from '../../WorkerTagPicker.svelte';
24
24
  import MetadataGen from '../../copilot/MetadataGen.svelte';
25
25
  export let noEditor;
26
- const { selectedId, flowStore, initialPath, previewArgs, pathStore, schedule } = getContext('FlowEditorContext');
26
+ const { selectedId, flowStore, initialPath, previewArgs, pathStore, schedule, customUi } = getContext('FlowEditorContext');
27
27
  let hostname = BROWSER ? window.location.protocol + '//' + window.location.host : 'SSR';
28
28
  $: url = `${hostname}/api/w/${$workspaceStore}/jobs/run/f/${$pathStore}`;
29
29
  $: syncedUrl = `${hostname}/api/w/${$workspaceStore}/jobs/run_wait_result/f/${$pathStore}`;
@@ -42,22 +42,33 @@ let dirtyPath = false;
42
42
  <div class="h-full flex-1">
43
43
  <Tabs bind:selected={$selectedId}>
44
44
  <Tab value="settings-metadata">Metadata</Tab>
45
- {#if !noEditor}
45
+ {#if !noEditor && customUi?.settingsTabs?.schedule != false}
46
46
  <Tab value="settings-schedule" active={$schedule.enabled}>Schedule</Tab>
47
47
  {/if}
48
- <Tab value="settings-same-worker" active={$flowStore.value.same_worker}>
49
- Shared Directory
50
- </Tab>
51
- <Tab value="settings-early-stop" active={Boolean($flowStore.value.skip_expr)}>
52
- Early Stop
53
- </Tab>
54
- <Tab value="settings-early-return" active={Boolean($flowStore.value.early_return)}>
55
- Early Return
56
- </Tab>
57
- <Tab value="settings-worker-group">Worker Group</Tab>
58
- <Tab value="settings-concurrency">Concurrency</Tab>
59
- <Tab value="settings-cache" active={Boolean($flowStore.value.cache_ttl)}>Cache</Tab>
60
-
48
+ {#if customUi?.settingsTabs?.sharedDiretory != false}
49
+ <Tab value="settings-same-worker" active={$flowStore.value.same_worker}>
50
+ Shared Directory
51
+ </Tab>
52
+ {/if}
53
+ {#if customUi?.settingsTabs?.earlyStop != false}
54
+ <Tab value="settings-early-stop" active={Boolean($flowStore.value.skip_expr)}>
55
+ Early Stop
56
+ </Tab>
57
+ {/if}
58
+ {#if customUi?.settingsTabs?.earlyReturn != false}
59
+ <Tab value="settings-early-return" active={Boolean($flowStore.value.early_return)}>
60
+ Early Return
61
+ </Tab>
62
+ {/if}
63
+ {#if customUi?.settingsTabs?.workerGroup != false}
64
+ <Tab value="settings-worker-group">Worker Group</Tab>
65
+ {/if}
66
+ {#if customUi?.settingsTabs?.concurrency != false}
67
+ <Tab value="settings-concurrency">Concurrency</Tab>
68
+ {/if}
69
+ {#if customUi?.settingsTabs?.cache != false}
70
+ <Tab value="settings-cache" active={Boolean($flowStore.value.cache_ttl)}>Cache</Tab>
71
+ {/if}
61
72
  <svelte:fragment slot="content">
62
73
  <TabContent value="settings-metadata" class="p-4 h-full overflow-auto">
63
74
  <Section label="Metadata">
@@ -72,6 +72,9 @@ function getModuleExprs(x) {
72
72
  if (x.stop_after_if?.expr) {
73
73
  exprs.push(x.stop_after_if.expr);
74
74
  }
75
+ if (x.stop_after_all_iters_if?.expr) {
76
+ exprs.push(x.stop_after_all_iters_if.expr);
77
+ }
75
78
  exprs.push(...getExpr(x.sleep));
76
79
  }
77
80
  return exprs;
@@ -23,7 +23,7 @@ const dispatch = createEventDispatcher();
23
23
  $: itemProps = {
24
24
  selected: $selectedId === mod.id,
25
25
  retry: mod.retry?.constant != undefined || mod.retry?.exponential != undefined,
26
- earlyStop: mod.stop_after_if != undefined,
26
+ earlyStop: mod.stop_after_if != undefined || mod.stop_after_all_iters_if != undefined,
27
27
  suspend: Boolean(mod.suspend),
28
28
  sleep: Boolean(mod.sleep),
29
29
  cache: Boolean(mod.cache_ttl),
@@ -10,6 +10,7 @@ import { writable } from 'svelte/store';
10
10
  import { twMerge } from 'tailwind-merge';
11
11
  export let pickableProperties;
12
12
  export let result = undefined;
13
+ export let extraResults = undefined;
13
14
  export let flow_input = undefined;
14
15
  export let error = false;
15
16
  export let displayContext = true;
@@ -53,6 +54,7 @@ setContext('PropPickerWrapper', {
53
54
  {#if result}
54
55
  <PropPickerResult
55
56
  {result}
57
+ {extraResults}
56
58
  {flow_input}
57
59
  on:select={({ detail }) => {
58
60
  if (!notSelectable && !$propPickerConfig) {
@@ -17,6 +17,7 @@ declare const __propDef: {
17
17
  props: {
18
18
  pickableProperties: PickableProperties | undefined;
19
19
  result?: any;
20
+ extraResults?: any;
20
21
  flow_input?: any;
21
22
  error?: boolean | undefined;
22
23
  displayContext?: boolean | undefined;
@@ -5,6 +5,7 @@ import type { Writable } from 'svelte/store';
5
5
  import type ScriptEditorDrawer from './content/ScriptEditorDrawer.svelte';
6
6
  import type { FlowState } from './flowState';
7
7
  import type { Schedule } from './scheduleUtils';
8
+ import type { FlowBuilderWhitelabelCustomUi } from '../custom_ui';
8
9
  export type FlowInput = Record<string, {
9
10
  flowStepWarnings?: Record<string, {
10
11
  message: string;
@@ -33,4 +34,5 @@ export type FlowEditorContext = {
33
34
  saveDraft: () => void;
34
35
  initialPath: string;
35
36
  flowInputsStore: Writable<FlowInput>;
37
+ customUi: FlowBuilderWhitelabelCustomUi;
36
38
  };
@@ -34,6 +34,9 @@ export type FlowStatusViewerContext = {
34
34
  nb: number;
35
35
  job: Job;
36
36
  }>>;
37
+ hideDownloadInGraph?: boolean;
38
+ hideTimeline?: boolean;
39
+ hideNodeDefinition?: boolean;
37
40
  };
38
41
  export type GraphModuleState = {
39
42
  type: FlowStatusModule['type'];
@@ -1,6 +1,7 @@
1
1
  <script>import { createEventDispatcher } from 'svelte';
2
2
  import ObjectViewer from './ObjectViewer.svelte';
3
3
  export let result;
4
+ export let extraResults = undefined;
4
5
  export let flow_input = undefined;
5
6
  const dispatch = createEventDispatcher();
6
7
  </script>
@@ -8,7 +9,11 @@ const dispatch = createEventDispatcher();
8
9
  <div class="w-full px-2">
9
10
  <span class="font-bold text-sm">Result</span>
10
11
  <div class="overflow-y-auto mb-2 w-full">
11
- <ObjectViewer allowCopy={false} json={{ result }} on:select />
12
+ <ObjectViewer
13
+ allowCopy={false}
14
+ json={{ result, ...(extraResults ? extraResults : {}) }}
15
+ on:select
16
+ />
12
17
  </div>
13
18
  {#if flow_input}
14
19
  <span class="font-bold text-sm">Flow Input</span>
@@ -2,6 +2,7 @@ import { SvelteComponent } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
4
  result: any;
5
+ extraResults?: any;
5
6
  flow_input?: any;
6
7
  };
7
8
  events: {
@@ -1,4 +1,9 @@
1
1
  const changelogs = [
2
+ {
3
+ label: 'Continue on disapproval/timeout',
4
+ href: 'https://www.windmill.dev/changelog/continue-on-disapproval',
5
+ date: '2024-08-14'
6
+ },
2
7
  {
3
8
  label: 'Nativets runtime supports npm packages and relative imports',
4
9
  href: 'https://www.windmill.dev/changelog/native-runtime-imports',
@@ -21,7 +21,7 @@ export const OpenAPI = {
21
21
  PASSWORD: undefined,
22
22
  TOKEN: undefined,
23
23
  USERNAME: undefined,
24
- VERSION: '1.381.0',
24
+ VERSION: '1.382.2',
25
25
  WITH_CREDENTIALS: false,
26
26
  interceptors: {
27
27
  request: new Interceptors(),
@@ -2550,6 +2550,18 @@ export declare const $FlowModule: {
2550
2550
  };
2551
2551
  readonly required: readonly ["expr"];
2552
2552
  };
2553
+ readonly stop_after_all_iters_if: {
2554
+ readonly type: "object";
2555
+ readonly properties: {
2556
+ readonly skip_if_stopped: {
2557
+ readonly type: "boolean";
2558
+ };
2559
+ readonly expr: {
2560
+ readonly type: "string";
2561
+ };
2562
+ };
2563
+ readonly required: readonly ["expr"];
2564
+ };
2553
2565
  readonly sleep: {
2554
2566
  readonly $ref: "#/components/schemas/InputTransform";
2555
2567
  };
@@ -2592,6 +2592,18 @@ export const $FlowModule = {
2592
2592
  },
2593
2593
  required: ['expr']
2594
2594
  },
2595
+ stop_after_all_iters_if: {
2596
+ type: 'object',
2597
+ properties: {
2598
+ skip_if_stopped: {
2599
+ type: 'boolean'
2600
+ },
2601
+ expr: {
2602
+ type: 'string'
2603
+ }
2604
+ },
2605
+ required: ['expr']
2606
+ },
2595
2607
  sleep: {
2596
2608
  '$ref': '#/components/schemas/InputTransform'
2597
2609
  },
@@ -3332,14 +3332,15 @@ export declare class ServiceLogsService {
3332
3332
  /**
3333
3333
  * list log files ordered by timestamp
3334
3334
  * @param data The data for the request.
3335
- * @param data.startedBefore filter on started before (inclusive) timestamp
3336
- * @param data.startedAfter filter on started after (exclusive) timestamp
3335
+ * @param data.before filter on started before (inclusive) timestamp
3336
+ * @param data.after filter on created after (exclusive) timestamp
3337
+ * @param data.withError
3337
3338
  * @returns unknown time
3338
3339
  * @throws ApiError
3339
3340
  */
3340
3341
  static listLogFiles(data?: ListLogFilesData): CancelablePromise<ListLogFilesResponse>;
3341
3342
  /**
3342
- * get log stream from log files
3343
+ * get log file by path
3343
3344
  * @param data The data for the request.
3344
3345
  * @param data.path
3345
3346
  * @returns string log stream
@@ -6704,8 +6704,9 @@ export class ServiceLogsService {
6704
6704
  /**
6705
6705
  * list log files ordered by timestamp
6706
6706
  * @param data The data for the request.
6707
- * @param data.startedBefore filter on started before (inclusive) timestamp
6708
- * @param data.startedAfter filter on started after (exclusive) timestamp
6707
+ * @param data.before filter on started before (inclusive) timestamp
6708
+ * @param data.after filter on created after (exclusive) timestamp
6709
+ * @param data.withError
6709
6710
  * @returns unknown time
6710
6711
  * @throws ApiError
6711
6712
  */
@@ -6714,13 +6715,14 @@ export class ServiceLogsService {
6714
6715
  method: 'GET',
6715
6716
  url: '/service_logs/list_files',
6716
6717
  query: {
6717
- started_before: data.startedBefore,
6718
- started_after: data.startedAfter
6718
+ before: data.before,
6719
+ after: data.after,
6720
+ with_error: data.withError
6719
6721
  }
6720
6722
  });
6721
6723
  }
6722
6724
  /**
6723
- * get log stream from log files
6725
+ * get log file by path
6724
6726
  * @param data The data for the request.
6725
6727
  * @param data.path
6726
6728
  * @returns string log stream
@@ -838,6 +838,10 @@ export type FlowModule = {
838
838
  skip_if_stopped?: boolean;
839
839
  expr: string;
840
840
  };
841
+ stop_after_all_iters_if?: {
842
+ skip_if_stopped?: boolean;
843
+ expr: string;
844
+ };
841
845
  sleep?: InputTransform;
842
846
  cache_ttl?: number;
843
847
  timeout?: number;
@@ -4692,13 +4696,14 @@ export type GetJobMetricsResponse = {
4692
4696
  };
4693
4697
  export type ListLogFilesData = {
4694
4698
  /**
4695
- * filter on started after (exclusive) timestamp
4699
+ * filter on created after (exclusive) timestamp
4696
4700
  */
4697
- startedAfter?: string;
4701
+ after?: string;
4698
4702
  /**
4699
4703
  * filter on started before (inclusive) timestamp
4700
4704
  */
4701
- startedBefore?: string;
4705
+ before?: string;
4706
+ withError?: boolean;
4702
4707
  };
4703
4708
  export type ListLogFilesResponse = Array<{
4704
4709
  hostname: string;
@@ -4706,7 +4711,8 @@ export type ListLogFilesResponse = Array<{
4706
4711
  worker_group?: string;
4707
4712
  log_ts: string;
4708
4713
  file_path: string;
4709
- byte_size?: number;
4714
+ ok_lines?: number;
4715
+ err_lines?: number;
4710
4716
  }>;
4711
4717
  export type GetLogFileData = {
4712
4718
  path: string;
@@ -11228,13 +11234,14 @@ export type $OpenApiTs = {
11228
11234
  get: {
11229
11235
  req: {
11230
11236
  /**
11231
- * filter on started after (exclusive) timestamp
11237
+ * filter on created after (exclusive) timestamp
11232
11238
  */
11233
- startedAfter?: string;
11239
+ after?: string;
11234
11240
  /**
11235
11241
  * filter on started before (inclusive) timestamp
11236
11242
  */
11237
- startedBefore?: string;
11243
+ before?: string;
11244
+ withError?: boolean;
11238
11245
  };
11239
11246
  res: {
11240
11247
  /**
@@ -11246,7 +11253,8 @@ export type $OpenApiTs = {
11246
11253
  worker_group?: string;
11247
11254
  log_ts: string;
11248
11255
  file_path: string;
11249
- byte_size?: number;
11256
+ ok_lines?: number;
11257
+ err_lines?: number;
11250
11258
  }>;
11251
11259
  };
11252
11260
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "windmill-components",
3
- "version": "1.382.1",
3
+ "version": "1.382.7",
4
4
  "scripts": {
5
5
  "dev": "vite dev",
6
6
  "build": "vite build",