windmill-components 1.504.6 → 1.511.0

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 (233) hide show
  1. package/package/ata/index.js +1 -1
  2. package/package/components/AppConnectInner.svelte +184 -29
  3. package/package/components/ArgInput.svelte +33 -103
  4. package/package/components/AuthSettings.svelte +45 -1
  5. package/package/components/Dev.svelte +31 -24
  6. package/package/components/DisplayResult.svelte +53 -26
  7. package/package/components/DisplayResult.svelte.d.ts +1 -1
  8. package/package/components/DynSelect.svelte +3 -3
  9. package/package/components/Editor.svelte +115 -88
  10. package/package/components/Editor.svelte.d.ts +30 -55
  11. package/package/components/EditorBar.svelte +2 -2
  12. package/package/components/ErrorOrRecoveryHandler.svelte +73 -67
  13. package/package/components/ErrorOrRecoveryHandler.svelte.d.ts +8 -24
  14. package/package/components/FlowBuilder.svelte +11 -2
  15. package/package/components/FlowJobResult.svelte +12 -17
  16. package/package/components/FlowJobResult.svelte.d.ts +5 -18
  17. package/package/components/FlowPreviewContent.svelte +13 -10
  18. package/package/components/FlowPreviewContent.svelte.d.ts +1 -1
  19. package/package/components/FlowPreviewResult.svelte +14 -6
  20. package/package/components/FlowStatusViewer.svelte +11 -24
  21. package/package/components/FlowStatusViewer.svelte.d.ts +19 -18
  22. package/package/components/FlowStatusViewerInner.svelte +110 -131
  23. package/package/components/FlowStatusViewerInner.svelte.d.ts +20 -18
  24. package/package/components/GitDiffPreview.svelte +55 -0
  25. package/package/components/GitDiffPreview.svelte.d.ts +13 -0
  26. package/package/components/HistoricInputs.svelte +2 -2
  27. package/package/components/HttpAgentWorkerDrawer.svelte +1 -1
  28. package/package/components/InitGitRepoPopover.svelte +410 -0
  29. package/package/components/InitGitRepoPopover.svelte.d.ts +13 -0
  30. package/package/components/InstanceSetting.svelte +21 -9
  31. package/package/components/InstanceSettings.svelte +16 -3
  32. package/package/components/JobLoader.svelte +567 -0
  33. package/package/components/JobLoader.svelte.d.ts +53 -0
  34. package/package/components/JobLogs.svelte +6 -4
  35. package/package/components/JobLogs.svelte.d.ts +5 -18
  36. package/package/components/JsonEditor.svelte +11 -11
  37. package/package/components/JsonEditor.svelte.d.ts +14 -56
  38. package/package/components/Label.svelte +6 -11
  39. package/package/components/Label.svelte.d.ts +14 -39
  40. package/package/components/LightweightResourcePicker.svelte +18 -39
  41. package/package/components/LightweightResourcePicker.svelte.d.ts +6 -22
  42. package/package/components/LogViewer.svelte +35 -41
  43. package/package/components/LogViewer.svelte.d.ts +6 -20
  44. package/package/components/ModulePreviewResultViewer.svelte +3 -1
  45. package/package/components/ModulePreviewResultViewer.svelte.d.ts +1 -0
  46. package/package/components/ModuleTest.svelte +16 -11
  47. package/package/components/NumberTypeNarrowing.svelte +13 -16
  48. package/package/components/NumberTypeNarrowing.svelte.d.ts +4 -18
  49. package/package/components/PullGitRepoPopover.svelte +355 -0
  50. package/package/components/PullGitRepoPopover.svelte.d.ts +18 -0
  51. package/package/components/ResourceTypePicker.svelte +20 -17
  52. package/package/components/ResourceTypePicker.svelte.d.ts +7 -6
  53. package/package/components/S3FilePicker.svelte +5 -3
  54. package/package/components/SavedInputs.svelte +2 -2
  55. package/package/components/ScriptBuilder.svelte +4 -3
  56. package/package/components/ScriptEditor.svelte +34 -31
  57. package/package/components/ScriptEditor.svelte.d.ts +3 -3
  58. package/package/components/Section.svelte +7 -20
  59. package/package/components/Section.svelte.d.ts +20 -47
  60. package/package/components/ServiceLogsInner.svelte +2 -1
  61. package/package/components/ServiceLogsInner.svelte.d.ts +1 -0
  62. package/package/components/SimpleEditor.svelte +4 -4
  63. package/package/components/SimpleEditor.svelte.d.ts +1 -0
  64. package/package/components/SqlRepl.svelte +0 -1
  65. package/package/components/Subsection.svelte +10 -12
  66. package/package/components/Subsection.svelte.d.ts +15 -39
  67. package/package/components/UserSettings.svelte +1 -1
  68. package/package/components/WorkerGroup.svelte +260 -165
  69. package/package/components/WorkerGroup.svelte.d.ts +2 -0
  70. package/package/components/WorkerTagPicker.svelte +3 -3
  71. package/package/components/WorkerTagSelect.svelte +33 -4
  72. package/package/components/apps/components/buttons/AppButton.svelte +7 -1
  73. package/package/components/apps/components/buttons/AppButton.svelte.d.ts +1 -0
  74. package/package/components/apps/components/display/AppCustomComponent.svelte +1 -1
  75. package/package/components/apps/components/display/AppDisplayComponentByJobId.svelte +16 -11
  76. package/package/components/apps/components/display/AppJobIdLogComponent.svelte +13 -10
  77. package/package/components/apps/components/display/AppMenu.svelte +5 -0
  78. package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +3 -3
  79. package/package/components/apps/components/display/dbtable/DeleteRow.svelte +3 -3
  80. package/package/components/apps/components/display/dbtable/InsertRowRunnable.svelte +3 -3
  81. package/package/components/apps/components/display/dbtable/UpdateCell.svelte +3 -3
  82. package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +3 -3
  83. package/package/components/apps/components/helpers/RunnableComponent.svelte +65 -54
  84. package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +5 -5
  85. package/package/components/apps/components/inputs/AppUserResource.svelte +26 -8
  86. package/package/components/apps/editor/AppEditorHeader.svelte +11 -5
  87. package/package/components/apps/editor/AppJobsDrawer.svelte +5 -5
  88. package/package/components/apps/editor/RunnableJobPanel.svelte +4 -4
  89. package/package/components/apps/editor/component/components.d.ts +12 -0
  90. package/package/components/apps/editor/component/components.js +19 -7
  91. package/package/components/assets/AssetButtons.svelte +38 -0
  92. package/package/components/assets/AssetButtons.svelte.d.ts +15 -0
  93. package/package/components/assets/AssetsDropdownButton.svelte +60 -72
  94. package/package/components/assets/AssetsDropdownButton.svelte.d.ts +3 -4
  95. package/package/components/assets/AssetsUsageDrawer.svelte +10 -10
  96. package/package/components/assets/JobAssetsViewer.svelte +79 -0
  97. package/package/components/assets/JobAssetsViewer.svelte.d.ts +7 -0
  98. package/package/components/assets/README_DEV.md +0 -0
  99. package/package/components/assets/lib.d.ts +9 -1
  100. package/package/components/assets/lib.js +48 -7
  101. package/package/components/common/fileUpload/FileUpload.svelte +126 -84
  102. package/package/components/common/fileUpload/FileUpload.svelte.d.ts +13 -3
  103. package/package/components/common/fileUpload/S3ArgInput.svelte +111 -0
  104. package/package/components/common/fileUpload/S3ArgInput.svelte.d.ts +21 -0
  105. package/package/components/common/table/ScriptRow.svelte +3 -1
  106. package/package/components/copilot/AIFormSettings.svelte +3 -4
  107. package/package/components/copilot/AIFormSettings.svelte.d.ts +5 -19
  108. package/package/components/copilot/autocomplete/Autocompletor.d.ts +3 -1
  109. package/package/components/copilot/autocomplete/Autocompletor.js +269 -35
  110. package/package/components/copilot/autocomplete/request.d.ts +3 -0
  111. package/package/components/copilot/autocomplete/request.js +15 -7
  112. package/package/components/copilot/chat/AIChatDisplay.svelte +8 -0
  113. package/package/components/copilot/chat/AIChatManager.svelte.js +13 -8
  114. package/package/components/copilot/chat/flow/ModuleAcceptReject.svelte +5 -5
  115. package/package/components/copilot/chat/flow/core.d.ts +1 -1
  116. package/package/components/copilot/chat/flow/core.js +2 -38
  117. package/package/components/copilot/chat/navigator/apiTools.d.ts +8 -0
  118. package/package/components/copilot/chat/navigator/apiTools.js +95 -15
  119. package/package/components/copilot/chat/navigator/core.d.ts +1 -1
  120. package/package/components/copilot/chat/navigator/core.js +2 -1
  121. package/package/components/copilot/chat/script/core.d.ts +11 -2
  122. package/package/components/copilot/chat/script/core.js +165 -23
  123. package/package/components/copilot/chat/shared.d.ts +10 -0
  124. package/package/components/copilot/chat/shared.js +56 -0
  125. package/package/components/copilot/lib.d.ts +1 -0
  126. package/package/components/copilot/lib.js +30 -9
  127. package/package/components/custom_ui.d.ts +1 -0
  128. package/package/components/flows/FlowAssetsHandler.svelte +133 -0
  129. package/package/components/flows/FlowAssetsHandler.svelte.d.ts +14 -0
  130. package/package/components/flows/content/FlowModuleCache.svelte +4 -4
  131. package/package/components/flows/content/FlowModuleCache.svelte.d.ts +4 -18
  132. package/package/components/flows/content/FlowModuleComponent.svelte +16 -19
  133. package/package/components/flows/content/FlowModuleDeleteAfterUse.svelte +3 -4
  134. package/package/components/flows/content/FlowModuleDeleteAfterUse.svelte.d.ts +4 -18
  135. package/package/components/flows/content/FlowModuleSleep.svelte +6 -7
  136. package/package/components/flows/content/FlowModuleSleep.svelte.d.ts +4 -18
  137. package/package/components/flows/content/FlowModuleSuspend.svelte +19 -17
  138. package/package/components/flows/content/FlowModuleSuspend.svelte.d.ts +4 -18
  139. package/package/components/flows/content/FlowModuleTimeout.svelte +4 -4
  140. package/package/components/flows/content/FlowModuleTimeout.svelte.d.ts +4 -18
  141. package/package/components/flows/flowStore.d.ts +1 -1
  142. package/package/components/flows/map/FlowModuleSchemaItem.svelte +1 -0
  143. package/package/components/flows/propPicker/OutputPicker.svelte +9 -4
  144. package/package/components/flows/scheduleUtils.js +1 -1
  145. package/package/components/flows/types.d.ts +2 -1
  146. package/package/components/graph/FlowGraphV2.svelte +8 -104
  147. package/package/components/graph/FlowGraphV2.svelte.d.ts +0 -2
  148. package/package/components/graph/graphBuilder.svelte.d.ts +6 -3
  149. package/package/components/graph/graphBuilder.svelte.js +35 -9
  150. package/package/components/graph/renderers/edges/BaseEdge.svelte +2 -5
  151. package/package/components/graph/renderers/edges/BaseEdge.svelte.d.ts +1 -0
  152. package/package/components/graph/renderers/nodes/AssetNode.svelte +23 -20
  153. package/package/components/graph/renderers/nodes/AssetNode.svelte.d.ts +5 -10
  154. package/package/components/graph/renderers/nodes/AssetsOverflowedNode.svelte +1 -1
  155. package/package/components/graph/util.js +1 -1
  156. package/package/components/home/ItemsList.svelte +2 -0
  157. package/package/components/icons/AssetGenericIcon.svelte +0 -3
  158. package/package/components/jobs/JobPreview.svelte +10 -6
  159. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +13 -12
  160. package/package/components/runs/BatchReRunOptionsPane.svelte +5 -1
  161. package/package/components/runs/JobPreview.svelte +26 -16
  162. package/package/components/runs/{JobLoader.svelte.d.ts → JobsLoader.svelte.d.ts} +3 -3
  163. package/package/components/runs/NoWorkerWithTagWarning.svelte +2 -2
  164. package/package/components/runs/NoWorkerWithTagWarning.svelte.d.ts +1 -0
  165. package/package/components/runs/RunsFilter.svelte.d.ts +1 -1
  166. package/package/components/scriptEditor/LogPanel.svelte +3 -2
  167. package/package/components/script_builder.d.ts +2 -2
  168. package/package/components/settings/CreateToken.svelte +76 -41
  169. package/package/components/settings/CreateToken.svelte.d.ts +1 -1
  170. package/package/components/settings/ScopeSelector.svelte +613 -0
  171. package/package/components/settings/ScopeSelector.svelte.d.ts +8 -0
  172. package/package/components/settings/TokenDisplay.svelte +103 -0
  173. package/package/components/settings/TokenDisplay.svelte.d.ts +10 -0
  174. package/package/components/settings/TokensTable.svelte +70 -349
  175. package/package/components/sidebar/CriticalAlertModal.svelte +3 -0
  176. package/package/components/triggers/DeleteTriggerButton.svelte +1 -1
  177. package/package/components/triggers/TriggerEditorToolbar.svelte +3 -3
  178. package/package/components/triggers/TriggerRetriesAndErrorHandler.svelte +55 -0
  179. package/package/components/triggers/TriggerRetriesAndErrorHandler.svelte.d.ts +13 -0
  180. package/package/components/triggers/TriggersEditor.svelte +45 -3
  181. package/package/components/triggers/TriggersWrapper.svelte +2 -2
  182. package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +47 -6
  183. package/package/components/triggers/gcp/utils.js +9 -1
  184. package/package/components/triggers/http/OpenAPISpecGenerator.svelte +3 -2
  185. package/package/components/triggers/http/RouteEditorConfigSection.svelte +26 -23
  186. package/package/components/triggers/http/RouteEditorConfigSection.svelte.d.ts +5 -19
  187. package/package/components/triggers/http/RouteEditorInner.svelte +219 -175
  188. package/package/components/triggers/http/RouteEditorInner.svelte.d.ts +6 -2
  189. package/package/components/triggers/http/utils.js +9 -3
  190. package/package/components/triggers/kafka/KafkaTriggerEditorInner.svelte +47 -6
  191. package/package/components/triggers/kafka/utils.js +9 -1
  192. package/package/components/triggers/mqtt/MqttEditorConfigSection.svelte +4 -132
  193. package/package/components/triggers/mqtt/MqttEditorConfigSection.svelte.d.ts +2 -5
  194. package/package/components/triggers/mqtt/MqttTriggerEditorInner.svelte +182 -13
  195. package/package/components/triggers/mqtt/utils.js +9 -1
  196. package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +47 -6
  197. package/package/components/triggers/nats/utils.js +9 -1
  198. package/package/components/triggers/postgres/PostgresTriggerEditorInner.svelte +41 -2
  199. package/package/components/triggers/postgres/utils.js +9 -1
  200. package/package/components/triggers/schedules/ScheduleEditorInner.svelte +38 -92
  201. package/package/components/triggers/sqs/SqsTriggerEditorInner.svelte +47 -6
  202. package/package/components/triggers/sqs/utils.js +9 -1
  203. package/package/components/triggers/utils.js +12 -0
  204. package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +47 -6
  205. package/package/components/triggers/websocket/utils.js +11 -1
  206. package/package/components/workspaceSettings/AISettings.svelte +0 -2
  207. package/package/components/workspaceSettings/FilterList.svelte +56 -0
  208. package/package/components/workspaceSettings/FilterList.svelte.d.ts +8 -0
  209. package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +785 -0
  210. package/package/components/workspaceSettings/GitSyncFilterSettings.svelte.d.ts +18 -0
  211. package/package/gen/core/OpenAPI.js +1 -1
  212. package/package/gen/schemas.gen.d.ts +305 -23
  213. package/package/gen/schemas.gen.js +305 -23
  214. package/package/gen/services.gen.d.ts +33 -1
  215. package/package/gen/services.gen.js +66 -2
  216. package/package/gen/types.gen.d.ts +216 -11
  217. package/package/history.svelte.js +0 -2
  218. package/package/hub.d.ts +1 -0
  219. package/package/hubPaths.json +5 -2
  220. package/package/infer.js +16 -10
  221. package/package/svelte5Utils.svelte.d.ts +1 -0
  222. package/package/svelte5Utils.svelte.js +25 -18
  223. package/package/toast.js +10 -0
  224. package/package/utils.d.ts +3 -2
  225. package/package/utils.js +20 -5
  226. package/package.json +11 -11
  227. package/package/components/ResultJobLoader.svelte +0 -219
  228. package/package/components/ResultJobLoader.svelte.d.ts +0 -52
  229. package/package/components/TestJobLoader.svelte +0 -274
  230. package/package/components/TestJobLoader.svelte.d.ts +0 -43
  231. package/package/components/icons/AssetVarIcon.svelte +0 -31
  232. package/package/components/icons/AssetVarIcon.svelte.d.ts +0 -9
  233. /package/package/components/runs/{JobLoader.svelte → JobsLoader.svelte} +0 -0
@@ -46,13 +46,15 @@ function updatePositioning(historyOpen, zoom) {
46
46
  placement: 'bottom',
47
47
  gutter: 0,
48
48
  offset: { mainAxis: 3, crossAxis: 69 * zoom },
49
- overflowPadding: historyOpen ? 250 : 8
49
+ overflowPadding: historyOpen ? 250 : 8,
50
+ flip: false
50
51
  });
51
52
  popover?.updatePositioning({
52
53
  placement: 'bottom',
53
54
  gutter: 0,
54
55
  offset: { mainAxis: 3, crossAxis: showInput ? -69 * zoom : 0 },
55
- overflowPadding: historyOpen ? 250 : 8
56
+ overflowPadding: historyOpen ? 250 : 8,
57
+ flip: false
56
58
  });
57
59
  }
58
60
  $effect(() => {
@@ -104,7 +106,8 @@ onMount(() => {
104
106
  placement: 'bottom',
105
107
  gutter: 0,
106
108
  offset: { mainAxis: 3, crossAxis: 69 },
107
- overflowPadding: historyOpen ? 250 : 8
109
+ overflowPadding: historyOpen ? 250 : 8,
110
+ flip: false
108
111
  }}
109
112
  usePointerDownOutside
110
113
  closeOnOutsideClick={false}
@@ -139,12 +142,14 @@ onMount(() => {
139
142
  {/snippet}
140
143
  </Popover>
141
144
  {/if}
145
+
142
146
  <Popover
143
147
  floatingConfig={{
144
148
  placement: 'bottom',
145
149
  gutter: 0,
146
150
  offset: { mainAxis: 3, crossAxis: showInput ? -69 : 0 },
147
- overflowPadding: historyOpen ? 250 : 8
151
+ overflowPadding: historyOpen ? 250 : 8,
152
+ flip: false
148
153
  }}
149
154
  usePointerDownOutside
150
155
  closeOnOutsideClick={false}
@@ -135,7 +135,7 @@ export async function saveScheduleFromCfg(scheduleCfg, edit, workspace) {
135
135
  on_success: scheduleCfg.on_success,
136
136
  on_success_extra_args: scheduleCfg.on_success_extra_args,
137
137
  ws_error_handler_muted: scheduleCfg.ws_error_handler_muted,
138
- retry: scheduleCfg.retry,
138
+ retry: !scheduleCfg.is_flow ? scheduleCfg.retry : undefined,
139
139
  summary: scheduleCfg.summary,
140
140
  description: scheduleCfg.description,
141
141
  no_flow_overlap: scheduleCfg.no_flow_overlap,
@@ -70,11 +70,12 @@ export type FlowEditorContext = {
70
70
  };
71
71
  export type FlowGraphAssetContext = StateStore<{
72
72
  selectedAsset: Asset | undefined;
73
- assetsMap: Record<string, AssetWithAccessType[]>;
74
73
  s3FilePicker: S3FilePicker | undefined;
75
74
  dbManagerDrawer: DbManagerDrawer | undefined;
76
75
  resourceEditorDrawer: ResourceEditorDrawer | undefined;
77
76
  resourceMetadataCache: Record<string, {
78
77
  resource_type?: string;
79
78
  } | undefined>;
79
+ additionalAssetsMap: Record<string, AssetWithAccessType[]>;
80
+ computeAssetsCount: (asset: Asset) => number;
80
81
  }>;
@@ -1,4 +1,4 @@
1
- <script lang="ts">import { AssetService, FlowService, ResourceService } from '../../gen';
1
+ <script lang="ts">import { FlowService } from '../../gen';
2
2
  import { NODE } from '.';
3
3
  import { getContext, onDestroy, setContext, tick, untrack } from 'svelte';
4
4
  import { get, writable } from 'svelte/store';
@@ -32,20 +32,13 @@ import SubflowBound from './renderers/nodes/SubflowBound.svelte';
32
32
  import { deepEqual } from 'fast-equals';
33
33
  import ViewportResizer from './ViewportResizer.svelte';
34
34
  import AssetNode, { computeAssetNodes } from './renderers/nodes/AssetNode.svelte';
35
- import { getAllModules } from '../flows/flowExplorer';
36
- import { inferAssets } from '../../infer';
37
- import OnChange from '../common/OnChange.svelte';
38
- import S3FilePicker from '../S3FilePicker.svelte';
39
- import DbManagerDrawer from '../DBManagerDrawer.svelte';
40
- import ResourceEditorDrawer from '../ResourceEditorDrawer.svelte';
41
- import { assetEq } from '../assets/lib';
42
35
  import AssetsOverflowedNode from './renderers/nodes/AssetsOverflowedNode.svelte';
43
36
  let useDataflow = writable(false);
44
37
  const triggerContext = getContext('TriggerContext');
45
38
  let fullWidth = 0;
46
39
  let width = $state(0);
47
40
  let simplifiableFlow = $state(undefined);
48
- let { onInsert = undefined, onDelete = undefined, onMove = undefined, onDeleteBranch = undefined, onNewBranch = undefined, onSelect = undefined, onChangeId = undefined, onUpdateMock = undefined, onSelectedIteration = undefined, success = undefined, modules = [], failureModule = undefined, preprocessorModule = undefined, minHeight = 0, maxHeight = undefined, notSelectable = false, flowModuleStates = undefined, selectedId = writable(undefined), path = undefined, newFlow = false, insertable = false, earlyStop = false, cache = false, scroll = false, moving = undefined, download = false, fullSize = false, disableAi = false, triggerNode = false, workspace = $workspaceStore ?? 'NO_WORKSPACE', editMode = false, allowSimplifiedPoll = true, expandedSubflows = $bindable({}), inputAssets, onTestUpTo = undefined, onEditInput = undefined, isOwner = false, onTestFlow = undefined, isRunning = false, onCancelTestFlow = undefined, onOpenPreview = undefined, onHideJobStatus = undefined, individualStepTests = false, flowJob = undefined, showJobStatus = false, suspendStatus = writable({}), flowHasChanged = false } = $props();
41
+ let { onInsert = undefined, onDelete = undefined, onMove = undefined, onDeleteBranch = undefined, onNewBranch = undefined, onSelect = undefined, onChangeId = undefined, onUpdateMock = undefined, onSelectedIteration = undefined, success = undefined, modules = [], failureModule = undefined, preprocessorModule = undefined, minHeight = 0, maxHeight = undefined, notSelectable = false, flowModuleStates = undefined, selectedId = writable(undefined), path = undefined, newFlow = false, insertable = false, earlyStop = false, cache = false, scroll = false, moving = undefined, download = false, fullSize = false, disableAi = false, triggerNode = false, workspace = $workspaceStore ?? 'NO_WORKSPACE', editMode = false, allowSimplifiedPoll = true, expandedSubflows = $bindable({}), onTestUpTo = undefined, onEditInput = undefined, isOwner = false, onTestFlow = undefined, isRunning = false, onCancelTestFlow = undefined, onOpenPreview = undefined, onHideJobStatus = undefined, individualStepTests = false, flowJob = undefined, showJobStatus = false, suspendStatus = writable({}), flowHasChanged = false } = $props();
49
42
  setContext('FlowGraphContext', { selectedId, useDataflow });
50
43
  if (triggerContext && allowSimplifiedPoll) {
51
44
  if (isSimplifiable(modules)) {
@@ -55,66 +48,6 @@ if (triggerContext && allowSimplifiedPoll) {
55
48
  computeSimplifiableFlow(modules ?? [], value ?? false);
56
49
  });
57
50
  }
58
- const flowGraphAssetsCtx = $state({
59
- val: {
60
- assetsMap: inputAssets ? { Input: inputAssets } : {},
61
- selectedAsset: undefined,
62
- dbManagerDrawer: undefined,
63
- s3FilePicker: undefined,
64
- resourceEditorDrawer: undefined,
65
- resourceMetadataCache: {}
66
- }
67
- });
68
- setContext('FlowGraphAssetContext', flowGraphAssetsCtx);
69
- const assetsMap = $derived(flowGraphAssetsCtx.val.assetsMap);
70
- $effect(() => {
71
- if (inputAssets)
72
- flowGraphAssetsCtx.val.assetsMap.Input = inputAssets;
73
- });
74
- // Fetch resource metadata for the ExploreAssetButton
75
- const resMetadataCache = $derived(flowGraphAssetsCtx.val.resourceMetadataCache);
76
- $effect(() => {
77
- for (const asset of Object.values(assetsMap ?? []).flatMap((x) => x)) {
78
- if (asset.kind !== 'resource' || asset.path in resMetadataCache)
79
- continue;
80
- resMetadataCache[asset.path] = undefined; // avoid fetching multiple times because of async
81
- ResourceService.getResource({ path: asset.path, workspace: $workspaceStore }).then((r) => (resMetadataCache[asset.path] = { resource_type: r.resource_type }));
82
- }
83
- });
84
- // Fetch transitive assets (path scripts and flows)
85
- $effect(() => {
86
- if (!$workspaceStore)
87
- return;
88
- let usages = [];
89
- let modIds = [];
90
- for (const mod of getAllModules(modules)) {
91
- if (mod.id in assetsMap)
92
- continue;
93
- assetsMap[mod.id] = []; // avoid fetching multiple times because of async
94
- if (mod.value.type === 'flow' || mod.value.type === 'script') {
95
- usages.push({ path: mod.value.path, kind: mod.value.type });
96
- modIds.push(mod.id);
97
- }
98
- }
99
- if (usages.length) {
100
- AssetService.listAssetsByUsage({
101
- workspace: $workspaceStore,
102
- requestBody: { usages }
103
- }).then((result) => {
104
- result.forEach((assets, idx) => {
105
- assetsMap[modIds[idx]] = assets;
106
- });
107
- });
108
- }
109
- });
110
- // Prune assetsMap to only contain assets that are actually used
111
- $effect(() => {
112
- const allModules = new Set(getAllModules(modules).map((mod) => mod.id));
113
- for (const modId in assetsMap) {
114
- if (modId !== 'Input' && !allModules.has(modId))
115
- delete assetsMap[modId];
116
- }
117
- });
118
51
  function computeSimplifiableFlow(modules, simplifiedFlow) {
119
52
  const isSimplif = isSimplifiable(modules);
120
53
  simplifiableFlow = isSimplif ? { simplifiedFlow } : undefined;
@@ -289,11 +222,7 @@ async function updateStores() {
289
222
  }
290
223
  let newGraph = graph;
291
224
  newGraph.nodes.sort((a, b) => b.id.localeCompare(a.id));
292
- [nodes, edges] = computeAssetNodes(layoutNodes(newGraph.nodes), newGraph.edges, assetsMap, {
293
- moving,
294
- eventHandlers: eventHandler,
295
- disableAi
296
- });
225
+ [nodes, edges] = computeAssetNodes(layoutNodes(newGraph.nodes), newGraph.edges);
297
226
  await tick();
298
227
  height = Math.max(...nodes.map((n) => n.position.y + NODE.height + 100), minHeight);
299
228
  }
@@ -326,11 +255,13 @@ const proOptions = { hideAttribution: true };
326
255
  // centerViewport(width)
327
256
  // })
328
257
  let yamlEditorDrawer = $state(undefined);
258
+ const flowGraphAssetsCtx = getContext('FlowGraphAssetContext');
329
259
  $effect(() => {
330
260
  allowSimplifiedPoll && modules && untrack(() => onModulesChange(modules ?? []));
331
261
  });
332
262
  $effect(() => {
333
- modules && untrack(() => onModulesChange2(modules));
263
+ readFieldsRecursively(modules);
264
+ untrack(() => onModulesChange2(modules));
334
265
  });
335
266
  let graph = $derived.by(() => {
336
267
  moduleCounter;
@@ -350,13 +281,13 @@ let graph = $derived.by(() => {
350
281
  flowJob,
351
282
  showJobStatus,
352
283
  suspendStatus,
353
- flowHasChanged
284
+ flowHasChanged,
285
+ additionalAssetsMap: flowGraphAssetsCtx?.val.additionalAssetsMap
354
286
  }, failureModule, preprocessorModule, eventHandler, success, $useDataflow, $selectedId, moving, simplifiableFlow, triggerNode ? path : undefined, expandedSubflows);
355
287
  });
356
288
  $effect(() => {
357
289
  ;
358
290
  [graph, allowSimplifiedPoll];
359
- readFieldsRecursively(assetsMap);
360
291
  untrack(() => updateStores());
361
292
  });
362
293
  let showDataflow = $derived($selectedId != undefined &&
@@ -481,33 +412,6 @@ export function isNodeVisible(nodeId) {
481
412
  {/if}
482
413
  </div>
483
414
 
484
- {#each getAllModules(modules) as mod (mod.id)}
485
- {#if mod.value.type === 'rawscript'}
486
- {@const v = mod.value}
487
- <OnChange
488
- key={[v.content, v.asset_fallback_access_types]}
489
- runFirstEffect
490
- onChange={() =>
491
- inferAssets(v.language, v.content)
492
- .then((assets) => {
493
- for (const override of v.asset_fallback_access_types ?? []) {
494
- assets = assets.map((asset) => {
495
- if (assetEq(asset, override) && !asset.access_type)
496
- return { ...asset, access_type: override.access_type }
497
- return asset
498
- })
499
- }
500
- if (assetsMap && !deepEqual(assetsMap[mod.id], assets)) assetsMap[mod.id] = assets
501
- })
502
- .catch((e) => {})}
503
- />
504
- {/if}
505
- {/each}
506
-
507
- <S3FilePicker bind:this={flowGraphAssetsCtx.val.s3FilePicker} readOnlyMode />
508
- <DbManagerDrawer bind:this={flowGraphAssetsCtx.val.dbManagerDrawer} />
509
- <ResourceEditorDrawer bind:this={flowGraphAssetsCtx.val.resourceEditorDrawer} />
510
-
511
415
  <style>
512
416
  :global(.svelte-flow__handle) {
513
417
  opacity: 0;
@@ -3,7 +3,6 @@ import { type GraphModuleState } from '.';
3
3
  import { type Writable } from 'svelte/store';
4
4
  import '@xyflow/svelte/dist/base.css';
5
5
  import { type InlineScript, type InsertKind, type onSelectedIteration } from './graphBuilder.svelte';
6
- import { type AssetWithAccessType } from '../assets/lib';
7
6
  interface Props {
8
7
  success?: boolean | undefined;
9
8
  modules?: FlowModule[] | undefined;
@@ -29,7 +28,6 @@ interface Props {
29
28
  editMode?: boolean;
30
29
  allowSimplifiedPoll?: boolean;
31
30
  expandedSubflows?: Record<string, FlowModule[]>;
32
- inputAssets?: AssetWithAccessType[];
33
31
  isOwner?: boolean;
34
32
  isRunning?: boolean;
35
33
  individualStepTests?: boolean;
@@ -1,7 +1,7 @@
1
1
  import type { FlowModule, Job, RawScript, Script } from '../../gen';
2
2
  import { type Edge } from '@xyflow/svelte';
3
3
  import type { GraphModuleState } from './model';
4
- import type { AssetWithAccessType } from '../assets/lib';
4
+ import { type AssetWithAltAccessType } from '../assets/lib';
5
5
  import type { Writable } from 'svelte/store';
6
6
  export type InsertKind = 'script' | 'forloop' | 'whileloop' | 'branchone' | 'branchall' | 'flow' | 'trigger' | 'approval' | 'end';
7
7
  export type InlineScript = {
@@ -88,6 +88,7 @@ export type InputN = {
88
88
  flowJob: Job | undefined;
89
89
  showJobStatus: boolean;
90
90
  flowHasChanged: boolean;
91
+ assets?: AssetWithAltAccessType[] | undefined;
91
92
  };
92
93
  };
93
94
  export type ModuleN = {
@@ -104,6 +105,7 @@ export type ModuleN = {
104
105
  editMode: boolean;
105
106
  flowJob: Job | undefined;
106
107
  isOwner: boolean;
108
+ assets: AssetWithAltAccessType[] | undefined;
107
109
  };
108
110
  };
109
111
  export type BranchAllStartN = {
@@ -236,13 +238,13 @@ export type TriggerN = {
236
238
  export type AssetN = {
237
239
  type: 'asset';
238
240
  data: {
239
- asset: AssetWithAccessType;
241
+ asset: AssetWithAltAccessType;
240
242
  };
241
243
  };
242
244
  export type AssetsOverflowedN = {
243
245
  type: 'assetsOverflowed';
244
246
  data: {
245
- overflowedAssets: AssetWithAccessType[];
247
+ overflowedAssets: AssetWithAltAccessType[];
246
248
  };
247
249
  };
248
250
  export declare function graphBuilder(modules: FlowModule[] | undefined, extra: {
@@ -265,6 +267,7 @@ export declare function graphBuilder(modules: FlowModule[] | undefined, extra: {
265
267
  nb: number;
266
268
  }>>;
267
269
  flowHasChanged: boolean;
270
+ additionalAssetsMap?: Record<string, AssetWithAltAccessType[]>;
268
271
  }, failureModule: FlowModule | undefined, preprocessorModule: FlowModule | undefined, eventHandlers: GraphEventHandlers, success: boolean | undefined, useDataflow: boolean | undefined, selectedId: string | undefined, moving: string | undefined, simplifiableFlow: SimplifiableFlow | undefined, flowPathForTriggerNode: string | undefined, expandedSubflows: Record<string, FlowModule[]>): {
269
272
  nodes: NodeLayout[];
270
273
  edges: Edge[];
@@ -1,7 +1,9 @@
1
1
  import {} from '@xyflow/svelte';
2
- import { getDependeeAndDependentComponents } from '../flows/flowExplorer';
2
+ import { getAllModules, getDependeeAndDependentComponents } from '../flows/flowExplorer';
3
3
  import { dfsByModule } from '../flows/previousResults';
4
4
  import { defaultIfEmptyString } from '../../utils';
5
+ import { getFlowModuleAssets } from '../assets/lib';
6
+ import { assetDisplaysAsOutputInFlowGraph } from './renderers/nodes/AssetNode.svelte';
5
7
  export function isTriggerStep(module) {
6
8
  return (module?.value != undefined &&
7
9
  (module.value.type === 'script' || module.value.type === 'rawscript') &&
@@ -59,12 +61,17 @@ export function graphBuilder(modules, extra, failureModule, preprocessorModule,
59
61
  insertable: extra.insertable,
60
62
  editMode: extra.editMode,
61
63
  isOwner: extra.isOwner,
62
- flowJob: extra.flowJob
64
+ flowJob: extra.flowJob,
65
+ assets: getFlowModuleAssets(module, extra.additionalAssetsMap)
63
66
  },
64
67
  type: 'module'
65
68
  });
66
69
  return module.id;
67
70
  }
71
+ // TODO : Do better than this
72
+ const nodeIdsWithOutputAssets = new Set(getAllModules(modules)
73
+ .filter((m) => getFlowModuleAssets(m, extra.additionalAssetsMap)?.some(assetDisplaysAsOutputInFlowGraph))
74
+ .map((m) => m.id));
68
75
  const parents = {};
69
76
  //
70
77
  function detectCycle(nodeId, visited, currentPath) {
@@ -119,10 +126,12 @@ export function graphBuilder(modules, extra, failureModule, preprocessorModule,
119
126
  // If the index is -1, it means that the target module is not in the modules array, so we set it to the length of the array
120
127
  index: index >= 0 ? index : (mods?.length ?? 0),
121
128
  ...extra,
122
- insertable: extra.insertable && !options?.disableInsert && prefix == undefined
129
+ insertable: extra.insertable && !options?.disableInsert && prefix == undefined,
130
+ shouldOffsetInsertBtnDueToAssetNode: nodeIdsWithOutputAssets.has(sourceId)
123
131
  }
124
132
  });
125
133
  }
134
+ const inputAssets = extra.additionalAssetsMap?.['Input'];
126
135
  const inputNode = {
127
136
  id: 'Input',
128
137
  type: 'input2',
@@ -139,7 +148,8 @@ export function graphBuilder(modules, extra, failureModule, preprocessorModule,
139
148
  individualStepTests: extra.individualStepTests,
140
149
  flowJob: extra.flowJob,
141
150
  showJobStatus: extra.showJobStatus,
142
- flowHasChanged: extra.flowHasChanged
151
+ flowHasChanged: extra.flowHasChanged,
152
+ ...(inputAssets ? { assets: inputAssets } : {})
143
153
  }
144
154
  };
145
155
  let triggerNode = undefined;
@@ -361,19 +371,35 @@ export function graphBuilder(modules, extra, failureModule, preprocessorModule,
361
371
  type: 'branchOneEnd'
362
372
  };
363
373
  nodes.push(endNode);
364
- // Add default branch
374
+ // // Add default branch
375
+ // const defaultBranch: NodeLayout = {
376
+ // id: `${module.id}-default`,
377
+ // data: {
378
+ // offset: currentOffset,
379
+ // label: 'Default',
380
+ // id: module.id,
381
+ // branchIndex: -1,
382
+ // eventHandlers: eventHandlers,
383
+ // branchOne: true,
384
+ // ...extra
385
+ // },
386
+ // type: 'noBranch'
387
+ // }
365
388
  const defaultBranch = {
366
- id: `${module.id}-default`,
389
+ id: `${module.id}-branch-default`,
367
390
  data: {
368
391
  offset: currentOffset,
369
392
  label: 'Default',
370
393
  id: module.id,
371
394
  branchIndex: -1,
372
395
  eventHandlers: eventHandlers,
373
- branchOne: true,
374
- ...extra
396
+ insertable: extra.insertable,
397
+ preLabel: undefined,
398
+ flowModuleStates: extra.flowModuleStates,
399
+ selected: false,
400
+ modules: module.value.default
375
401
  },
376
- type: 'noBranch'
402
+ type: 'branchOneStart'
377
403
  };
378
404
  nodes.push(defaultBranch);
379
405
  addEdge(module.id, defaultBranch.id, { rootId: module.id, branch: 0 }, prefix, {
@@ -4,18 +4,15 @@ import { ClipboardCopy, Hourglass } from 'lucide-svelte';
4
4
  import { getContext } from 'svelte';
5
5
  import { getStraightLinePath } from '../utils';
6
6
  import { twMerge } from 'tailwind-merge';
7
- import {} from '../../../flows/types';
8
- import { assetDisplaysAsOutputInFlowGraph, NODE_WITH_WRITE_ASSET_Y_OFFSET } from '../nodes/AssetNode.svelte';
7
+ import { NODE_WITH_WRITE_ASSET_Y_OFFSET } from '../nodes/AssetNode.svelte';
9
8
  import { workspaceStore } from '../../../../stores';
10
9
  import FlowStatusWaitingForEvents from '../../../FlowStatusWaitingForEvents.svelte';
11
10
  const { useDataflow } = getContext('FlowGraphContext');
12
- const flowGraphAssetCtx = getContext('FlowGraphAssetContext');
13
11
  let {
14
12
  // id,
15
13
  sourceX, sourceY, sourcePosition, targetX, targetY, targetPosition, markerEnd,
16
14
  // style,
17
15
  data } = $props();
18
- const shouldOffsetInsertButtonDueToAssetNode = flowGraphAssetCtx?.val.assetsMap?.[data.sourceId]?.some(assetDisplaysAsOutputInFlowGraph);
19
16
  let [edgePath] = $derived(getBezierPath({
20
17
  sourceX,
21
18
  sourceY: targetY - sourceY > 100 ? targetY - 100 : sourceY,
@@ -37,7 +34,7 @@ const suspendStatus = $derived(data?.suspendStatus);
37
34
 
38
35
  <EdgeLabel
39
36
  x={sourceX}
40
- y={sourceY + 28 + (shouldOffsetInsertButtonDueToAssetNode ? NODE_WITH_WRITE_ASSET_Y_OFFSET : 0)}
37
+ y={sourceY + 28 + (data.shouldOffsetInsertBtnDueToAssetNode ? NODE_WITH_WRITE_ASSET_Y_OFFSET : 0)}
41
38
  class="base-edge"
42
39
  style=""
43
40
  >
@@ -22,6 +22,7 @@ type $$ComponentProps = EdgeProps & {
22
22
  job: Job;
23
23
  nb: number;
24
24
  }>>;
25
+ shouldOffsetInsertBtnDueToAssetNode?: boolean;
25
26
  };
26
27
  };
27
28
  declare const BaseEdge: import("svelte").Component<$$ComponentProps, {}, "">;
@@ -2,19 +2,21 @@
2
2
  export const NODE_WITH_WRITE_ASSET_Y_OFFSET = 45;
3
3
  export const READ_ASSET_Y_OFFSET = -45;
4
4
  export const WRITE_ASSET_Y_OFFSET = 64;
5
- export const assetDisplaysAsInputInFlowGraph = (a) => !a.access_type || a.access_type === 'r' || a.access_type === 'rw';
6
- export const assetDisplaysAsOutputInFlowGraph = (a) => a.access_type === 'w' || a.access_type === 'rw';
5
+ export const assetDisplaysAsInputInFlowGraph = (a) => !getAccessType(a) || getAccessType(a) === 'r' || getAccessType(a) === 'rw';
6
+ export const assetDisplaysAsOutputInFlowGraph = (a) => getAccessType(a) === 'w' || getAccessType(a) === 'rw';
7
7
  let computeAssetNodesCache;
8
- export function computeAssetNodes(nodes, edges, assetsMap, extraData) {
9
- if (nodes === computeAssetNodesCache?.[0] && deepEqual(assetsMap, computeAssetNodesCache?.[1]))
10
- return computeAssetNodesCache[2];
8
+ export function computeAssetNodes(nodes, edges) {
9
+ if (nodes === computeAssetNodesCache?.[0])
10
+ return computeAssetNodesCache[1];
11
11
  const MAX_ASSET_ROW_WIDTH = 300;
12
12
  const ASSETS_OVERFLOWED_NODE_WIDTH = 25;
13
13
  const allAssetNodes = [];
14
14
  const allAssetEdges = [];
15
15
  const yPosMap = {};
16
16
  for (const node of nodes) {
17
- const assets = assetsMap?.[node.id] ?? [];
17
+ if (node.type !== 'module' && node.type !== 'input2')
18
+ continue;
19
+ const assets = node.data.assets ?? [];
18
20
  // Each asset can be displayed at the top and bottom
19
21
  // i.e once (R or W) or twice (RW)
20
22
  const inputAssets = assets.filter(assetDisplaysAsInputInFlowGraph);
@@ -167,30 +169,26 @@ export function computeAssetNodes(nodes, edges, assetsMap, extraData) {
167
169
  [...sortedNewNodes, ...allAssetNodes],
168
170
  [...edges, ...allAssetEdges]
169
171
  ];
170
- computeAssetNodesCache = [nodes, clone(assetsMap), ret];
172
+ computeAssetNodesCache = [nodes, ret];
171
173
  return ret;
172
174
  }
173
175
  </script>
174
176
 
175
177
  <script lang="ts">import NodeWrapper from './NodeWrapper.svelte';
176
178
  import { AlertTriangle } from 'lucide-svelte';
177
- import { assetEq, formatAssetKind } from '../../../assets/lib';
179
+ import { assetEq, formatAssetKind, getAccessType } from '../../../assets/lib';
178
180
  import { twMerge } from 'tailwind-merge';
179
181
  import { getContext } from 'svelte';
180
182
  import ExploreAssetButton, { assetCanBeExplored } from '../../../ExploreAssetButton.svelte';
181
183
  import { Tooltip } from '../../../meltComponents';
182
184
  import { clone, pluralize } from '../../../../utils';
183
185
  import AssetGenericIcon from '../../../icons/AssetGenericIcon.svelte';
184
- import { deepEqual } from 'fast-equals';
185
186
  import { NODE } from '../../util';
186
187
  import { userStore } from '../../../../stores';
187
188
  const flowGraphAssetsCtx = getContext('FlowGraphAssetContext');
188
- const usageCount = $derived(Object.values(flowGraphAssetsCtx.val.assetsMap ?? {})
189
- .flat()
190
- .filter((asset) => assetEq(asset, data.asset)).length);
191
189
  let { data } = $props();
192
- const isSelected = $derived(assetEq(flowGraphAssetsCtx.val.selectedAsset, data.asset));
193
- const cachedResourceMetadata = $derived(flowGraphAssetsCtx.val.resourceMetadataCache[data.asset.path]);
190
+ const isSelected = $derived(assetEq(flowGraphAssetsCtx?.val.selectedAsset, data.asset));
191
+ const cachedResourceMetadata = $derived(flowGraphAssetsCtx?.val.resourceMetadataCache[data.asset.path]);
194
192
  </script>
195
193
 
196
194
  <NodeWrapper>
@@ -202,8 +200,10 @@ const cachedResourceMetadata = $derived(flowGraphAssetsCtx.val.resourceMetadataC
202
200
  'bg-surface h-6 flex items-center gap-1.5 rounded-sm text-tertiary border overflow-clip',
203
201
  isSelected ? 'bg-surface-secondary !border-surface-inverse' : 'border-transparent'
204
202
  )}
205
- onmouseenter={() => (flowGraphAssetsCtx.val.selectedAsset = data.asset)}
206
- onmouseleave={() => (flowGraphAssetsCtx.val.selectedAsset = undefined)}
203
+ onmouseenter={() =>
204
+ flowGraphAssetsCtx && (flowGraphAssetsCtx.val.selectedAsset = data.asset)}
205
+ onmouseleave={() =>
206
+ flowGraphAssetsCtx && (flowGraphAssetsCtx.val.selectedAsset = undefined)}
207
207
  >
208
208
  <AssetGenericIcon
209
209
  assetKind={data.asset.kind}
@@ -225,14 +225,17 @@ const cachedResourceMetadata = $derived(flowGraphAssetsCtx.val.resourceMetadataC
225
225
  asset={data.asset}
226
226
  noText
227
227
  buttonVariant="contained"
228
- s3FilePicker={flowGraphAssetsCtx.val.s3FilePicker}
229
- dbManagerDrawer={flowGraphAssetsCtx.val.dbManagerDrawer}
228
+ s3FilePicker={flowGraphAssetsCtx?.val.s3FilePicker}
229
+ dbManagerDrawer={flowGraphAssetsCtx?.val.dbManagerDrawer}
230
230
  _resourceMetadata={cachedResourceMetadata}
231
231
  />
232
232
  {/if}
233
233
  </div>
234
234
  <svelte:fragment slot="text">
235
- Used in {pluralize(usageCount, 'step')}<br />
235
+ Used in {pluralize(
236
+ flowGraphAssetsCtx?.val.computeAssetsCount?.(data.asset) ?? -1,
237
+ 'step'
238
+ )}<br />
236
239
  <a
237
240
  href={undefined}
238
241
  class={twMerge(
@@ -243,7 +246,7 @@ const cachedResourceMetadata = $derived(flowGraphAssetsCtx.val.resourceMetadataC
243
246
  )}
244
247
  onclick={() => {
245
248
  if (data.asset.kind === 'resource')
246
- flowGraphAssetsCtx.val.resourceEditorDrawer?.initEdit(data.asset.path)
249
+ flowGraphAssetsCtx?.val.resourceEditorDrawer?.initEdit(data.asset.path)
247
250
  }}
248
251
  >
249
252
  {data.asset.path}
@@ -2,17 +2,12 @@ export declare const NODE_WITH_READ_ASSET_Y_OFFSET = 45;
2
2
  export declare const NODE_WITH_WRITE_ASSET_Y_OFFSET = 45;
3
3
  export declare const READ_ASSET_Y_OFFSET = -45;
4
4
  export declare const WRITE_ASSET_Y_OFFSET = 64;
5
- export declare const assetDisplaysAsInputInFlowGraph: (a: {
6
- access_type?: AssetUsageAccessType;
7
- }) => boolean;
8
- export declare const assetDisplaysAsOutputInFlowGraph: (a: {
9
- access_type?: AssetUsageAccessType;
10
- }) => boolean;
11
- export declare function computeAssetNodes(nodes: Node[], edges: Edge[], assetsMap: Record<string, AssetWithAccessType[]>, extraData: any): [Node[], Edge[]];
12
- import type { AssetN } from '../../graphBuilder.svelte';
13
- import { type AssetWithAccessType } from '../../../assets/lib';
5
+ export declare const assetDisplaysAsInputInFlowGraph: (a: AssetWithAltAccessType) => boolean;
6
+ export declare const assetDisplaysAsOutputInFlowGraph: (a: AssetWithAltAccessType) => boolean;
7
+ export declare function computeAssetNodes(nodes: (Node & NodeLayout)[], edges: Edge[]): [(Node & NodeLayout)[], Edge[]];
8
+ import type { AssetN, NodeLayout } from '../../graphBuilder.svelte';
9
+ import { type AssetWithAltAccessType } from '../../../assets/lib';
14
10
  import type { Edge, Node } from '@xyflow/svelte';
15
- import type { AssetUsageAccessType } from '../../../../gen';
16
11
  interface Props {
17
12
  data: AssetN['data'];
18
13
  }
@@ -10,7 +10,7 @@ import { assetEq } from '../../../assets/lib';
10
10
  let { data } = $props();
11
11
  const flowGraphAssetsCtx = getContext('FlowGraphAssetContext');
12
12
  let isOpen = $state(false);
13
- let includesSelected = $derived(data.overflowedAssets.some((asset) => assetEq(flowGraphAssetsCtx.val.selectedAsset, asset)));
13
+ let includesSelected = $derived(data.overflowedAssets.some((asset) => assetEq(flowGraphAssetsCtx?.val.selectedAsset, asset)));
14
14
  let wasOpenedBecauseOfExternalSelected = false;
15
15
  $effect(() => {
16
16
  if (includesSelected && !isOpen) {
@@ -2,7 +2,7 @@ export const NODE = {
2
2
  width: 275,
3
3
  height: 34,
4
4
  gap: {
5
- horizontal: 40,
5
+ horizontal: 50,
6
6
  vertical: 50
7
7
  }
8
8
  };
@@ -158,6 +158,8 @@ let collapseAll = $state(true);
158
158
  let owners = $derived(Array.from(new Set(filteredItems?.map((x) => x.path.split('/').slice(0, 2).join('/')) ?? [])).sort());
159
159
  $effect(() => {
160
160
  if ($userStore && $workspaceStore) {
161
+ ;
162
+ [archived, includeWithoutMain];
161
163
  untrack(() => {
162
164
  loadScripts(includeWithoutMain);
163
165
  loadFlows();
@@ -1,7 +1,6 @@
1
1
  <script lang="ts">import { Pyramid } from 'lucide-svelte';
2
2
  import AssetResIcon from './AssetResIcon.svelte';
3
3
  import AssetS3Icon from './AssetS3Icon.svelte';
4
- import AssetVarIcon from './AssetVarIcon.svelte';
5
4
  let { assetKind, fill, size, class: className = '' } = $props();
6
5
  </script>
7
6
 
@@ -9,8 +8,6 @@ let { assetKind, fill, size, class: className = '' } = $props();
9
8
  <AssetS3Icon {fill} width={size} height={size} class={className} />
10
9
  {:else if assetKind == 'resource'}
11
10
  <AssetResIcon {fill} width={size} height={size} class={className} />
12
- {:else if assetKind == 'variable'}
13
- <AssetVarIcon {fill} width={size} height={size} class={className} />
14
11
  {:else}
15
12
  <Pyramid {size} color={fill} class={'!fill-none ' + className} />
16
13
  {/if}