windmill-components 1.531.1 → 1.537.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 (153) hide show
  1. package/package/components/ArgInput.svelte +69 -19
  2. package/package/components/Auth0Setting.svelte +8 -3
  3. package/package/components/Dev.svelte +5 -4
  4. package/package/components/DiffDrawer.svelte +2 -2
  5. package/package/components/DiffEditor.svelte +34 -37
  6. package/package/components/DiffEditor.svelte.d.ts +23 -39
  7. package/package/components/EditableSchemaForm.svelte +67 -67
  8. package/package/components/EditableSchemaForm.svelte.d.ts +3 -3
  9. package/package/components/Editor.svelte +32 -11
  10. package/package/components/Editor.svelte.d.ts +6 -0
  11. package/package/components/EditorBar.svelte +2 -2
  12. package/package/components/EditorBar.svelte.d.ts +1 -0
  13. package/package/components/FieldHeader.svelte +1 -1
  14. package/package/components/FlowBuilder.svelte +7 -4
  15. package/package/components/FlowPreviewContent.svelte +3 -3
  16. package/package/components/FlowStatusViewer.svelte +28 -0
  17. package/package/components/FlowStatusViewerInner.svelte +72 -20
  18. package/package/components/FlowStatusViewerInner.svelte.d.ts +7 -0
  19. package/package/components/ModulePreview.svelte +2 -1
  20. package/package/components/ModulePreview.svelte.d.ts +1 -0
  21. package/package/components/ModulePreviewForm.svelte +72 -65
  22. package/package/components/ModulePreviewResultViewer.svelte +13 -18
  23. package/package/components/ModuleTest.svelte +10 -6
  24. package/package/components/ModuleTest.svelte.d.ts +1 -0
  25. package/package/components/OktaSetting.svelte +8 -3
  26. package/package/components/Portal.svelte +11 -7
  27. package/package/components/Portal.svelte.d.ts +19 -39
  28. package/package/components/ResourceEditor.svelte +4 -0
  29. package/package/components/RunForm.svelte +2 -2
  30. package/package/components/RunForm.svelte.d.ts +1 -1
  31. package/package/components/RunFormAdvancedPopup.svelte +13 -1
  32. package/package/components/SchemaForm.svelte +1 -2
  33. package/package/components/ScriptBuilder.svelte +1 -1
  34. package/package/components/ScriptEditor.svelte +22 -7
  35. package/package/components/SimpleEditor.svelte +0 -1
  36. package/package/components/StringTypeNarrowing.svelte.d.ts +1 -1
  37. package/package/components/apps/components/layout/AppModal.svelte +2 -2
  38. package/package/components/apps/editor/component/ComponentNavigation.svelte +3 -2
  39. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +1 -1
  40. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +0 -1
  41. package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +3 -1
  42. package/package/components/apps/editor/settingsPanel/GridCondition.svelte +3 -1
  43. package/package/components/apps/editor/settingsPanel/GridNavbar.svelte +3 -1
  44. package/package/components/apps/editor/settingsPanel/GridTab.svelte +3 -1
  45. package/package/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte +55 -53
  46. package/package/components/apps/editor/settingsPanel/TableActions.svelte +3 -1
  47. package/package/components/common/button/model.d.ts +1 -1
  48. package/package/components/common/drawer/Disposable.svelte +51 -30
  49. package/package/components/common/drawer/Disposable.svelte.d.ts +12 -44
  50. package/package/components/common/drawer/Drawer.svelte +15 -11
  51. package/package/components/copilot/FlowInlineScriptAIButton.svelte +4 -2
  52. package/package/components/copilot/FlowInlineScriptAIButton.svelte.d.ts +4 -1
  53. package/package/components/copilot/MetadataGen.svelte +14 -3
  54. package/package/components/copilot/autocomplete/Autocompletor.js +0 -2
  55. package/package/components/copilot/chat/AIChat.svelte +2 -4
  56. package/package/components/copilot/chat/AIChatInput.svelte +3 -3
  57. package/package/components/copilot/chat/AIChatManager.svelte.js +24 -12
  58. package/package/components/copilot/chat/AvailableContextList.svelte +243 -26
  59. package/package/components/copilot/chat/AvailableContextList.svelte.d.ts +2 -1
  60. package/package/components/copilot/chat/ContextElementBadge.svelte +31 -15
  61. package/package/components/copilot/chat/ContextElementBadge.svelte.d.ts +5 -20
  62. package/package/components/copilot/chat/ContextManager.svelte.d.ts +15 -2
  63. package/package/components/copilot/chat/ContextManager.svelte.js +134 -24
  64. package/package/components/copilot/chat/ContextTextarea.svelte +22 -49
  65. package/package/components/copilot/chat/ToolContentDisplay.svelte +10 -1
  66. package/package/components/copilot/chat/ToolExecutionDisplay.svelte +3 -3
  67. package/package/components/copilot/chat/context.d.ts +19 -1
  68. package/package/components/copilot/chat/context.js +1 -0
  69. package/package/components/copilot/chat/flow/FlowAIChat.svelte +109 -7
  70. package/package/components/copilot/chat/flow/core.d.ts +13 -1
  71. package/package/components/copilot/chat/flow/core.js +171 -19
  72. package/package/components/copilot/chat/flow/uiIntents.d.ts +8 -0
  73. package/package/components/copilot/chat/flow/uiIntents.js +5 -0
  74. package/package/components/copilot/chat/flow/useUiIntent.d.ts +5 -0
  75. package/package/components/copilot/chat/flow/useUiIntent.js +12 -0
  76. package/package/components/copilot/chat/monaco-adapter.d.ts +22 -4
  77. package/package/components/copilot/chat/monaco-adapter.js +55 -16
  78. package/package/components/copilot/chat/script/core.d.ts +2 -2
  79. package/package/components/copilot/chat/script/core.js +54 -124
  80. package/package/components/copilot/chat/shared.d.ts +14 -2
  81. package/package/components/copilot/chat/shared.js +170 -7
  82. package/package/components/copilot/lib.js +12 -7
  83. package/package/components/copilot/shared.d.ts +1 -1
  84. package/package/components/copilot/shared.js +16 -10
  85. package/package/components/flows/FlowEditor.svelte +15 -1
  86. package/package/components/flows/FlowEditor.svelte.d.ts +1 -0
  87. package/package/components/flows/FlowModuleIcon.svelte +39 -0
  88. package/package/components/flows/FlowModuleIcon.svelte.d.ts +10 -0
  89. package/package/components/flows/common/FlowCardHeader.svelte +4 -1
  90. package/package/components/flows/content/FlowBranchesAllWrapper.svelte +6 -0
  91. package/package/components/flows/content/FlowBranchesOneWrapper.svelte +6 -0
  92. package/package/components/flows/content/FlowEditorPanel.svelte +2 -1
  93. package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +1 -0
  94. package/package/components/flows/content/FlowInput.svelte +31 -34
  95. package/package/components/flows/content/FlowInput.svelte.d.ts +1 -0
  96. package/package/components/flows/content/FlowLoop.svelte +7 -0
  97. package/package/components/flows/content/FlowModuleComponent.svelte +39 -44
  98. package/package/components/flows/content/FlowModuleScript.svelte +1 -1
  99. package/package/components/flows/content/FlowModuleSuspend.svelte +16 -18
  100. package/package/components/flows/content/FlowWhileLoop.svelte +6 -0
  101. package/package/components/flows/content/ScriptEditorDrawer.svelte +9 -11
  102. package/package/components/flows/dfs.d.ts +1 -1
  103. package/package/components/flows/dfs.js +6 -6
  104. package/package/components/flows/flowInfers.js +7 -7
  105. package/package/components/flows/flowStateUtils.svelte.js +1 -2
  106. package/package/components/flows/map/FlowModuleSchemaItem.svelte +12 -26
  107. package/package/components/flows/map/MapItem.svelte +12 -39
  108. package/package/components/flows/map/VirtualItem.svelte +1 -1
  109. package/package/components/flows/pickers/TopLevelNode.svelte +1 -1
  110. package/package/components/flows/propPicker/InputPickerInner.svelte +5 -5
  111. package/package/components/flows/propPicker/OutputPickerInner.svelte +143 -118
  112. package/package/components/flows/propPicker/OutputPickerInner.svelte.d.ts +7 -16
  113. package/package/components/flows/{testSteps.svelte.d.ts → stepsInputArgs.svelte.d.ts} +2 -1
  114. package/package/components/flows/{testSteps.svelte.js → stepsInputArgs.svelte.js} +15 -3
  115. package/package/components/flows/types.d.ts +16 -3
  116. package/package/components/flows/utils.js +3 -0
  117. package/package/components/graph/FlowGraphV2.svelte +1 -1
  118. package/package/components/graph/renderers/nodes/AIToolNode.svelte +4 -4
  119. package/package/components/graph/renderers/nodes/NewAIToolNode.svelte +71 -54
  120. package/package/components/propertyPicker/ObjectViewer.svelte +11 -3
  121. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +1 -1
  122. package/package/components/schema/AddPropertyV2.svelte +2 -7
  123. package/package/components/schema/AddPropertyV2.svelte.d.ts +3 -20
  124. package/package/components/schema/EditableSchemaDrawer.svelte +109 -115
  125. package/package/components/schema/EditableSchemaDrawer.svelte.d.ts +2 -1
  126. package/package/components/schema/EditableSchemaSdkWrapper.svelte +16 -3
  127. package/package/components/schema/EditableSchemaSdkWrapper.svelte.d.ts +4 -1
  128. package/package/components/schema/EditableSchemaWrapper.svelte +3 -10
  129. package/package/components/schema/FlowPropertyEditor.svelte +83 -57
  130. package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -1
  131. package/package/components/schema/PropertyEditor.svelte.d.ts +1 -1
  132. package/package/components/schema/SchemaFormDND.svelte +11 -10
  133. package/package/components/schema/SchemaFormDND.svelte.d.ts +3 -2
  134. package/package/components/schema/editable_schema_wrapper.d.ts +0 -3
  135. package/package/components/schema/jsonSchemaResource.svelte.d.ts +2 -0
  136. package/package/components/schema/jsonSchemaResource.svelte.js +40 -0
  137. package/package/components/settings/PremiumInfo.svelte +7 -2
  138. package/package/components/triggers/CaptureWrapper.svelte +2 -13
  139. package/package/components/triggers/CaptureWrapper.svelte.d.ts +1 -1
  140. package/package/components/triggers/TriggersWrapper.svelte +1 -0
  141. package/package/components/triggers/http/RouteEditorInner.svelte +1 -1
  142. package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +23 -20
  143. package/package/components/triggers/nats/NatsTriggersConfigSection.svelte +15 -27
  144. package/package/components/triggers/nats/NatsTriggersConfigSection.svelte.d.ts +7 -5
  145. package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +16 -16
  146. package/package/hubPaths.json +3 -1
  147. package/package/script_helpers.d.ts +2 -2
  148. package/package/script_helpers.js +2 -0
  149. package/package/stores.d.ts +1 -0
  150. package/package/stores.js +8 -1
  151. package/package/utils.d.ts +1 -1
  152. package/package.json +14 -14
  153. package/package/components/ModulePreviewResultViewer.svelte.d.ts +0 -28
@@ -14,6 +14,7 @@ let scriptEditorDrawer = $state();
14
14
  const dispatch = createEventDispatcher();
15
15
  export async function openDrawer(hash, cb) {
16
16
  script = undefined;
17
+ closeAnyway = false;
17
18
  scriptEditorDrawer?.openDrawer?.();
18
19
  script = await ScriptService.getScriptByHash({
19
20
  workspace: $workspaceStore,
@@ -64,7 +65,6 @@ let unsavedModalOpen = $state(false);
64
65
  async function checkForUnsavedChanges() {
65
66
  if (closeAnyway) {
66
67
  scriptEditorDrawer?.closeDrawer();
67
- closeAnyway = false;
68
68
  return;
69
69
  }
70
70
  if (savedScript && script) {
@@ -72,6 +72,7 @@ async function checkForUnsavedChanges() {
72
72
  const current = cleanValueProperties(script);
73
73
  if (orderedJsonStringify(saved) !== orderedJsonStringify(current)) {
74
74
  unsavedModalOpen = true;
75
+ scriptEditorDrawer?.openDrawer();
75
76
  }
76
77
  else {
77
78
  scriptEditorDrawer?.closeDrawer();
@@ -79,6 +80,7 @@ async function checkForUnsavedChanges() {
79
80
  }
80
81
  }
81
82
  let args = $state({});
83
+ let displayEditor = $state(true);
82
84
  </script>
83
85
 
84
86
  <ConfirmationModal
@@ -89,8 +91,9 @@ let args = $state({});
89
91
  unsavedModalOpen = false
90
92
  }}
91
93
  on:confirmed={() => {
92
- unsavedModalOpen = false
94
+ console.log('confirmed')
93
95
  closeAnyway = true
96
+ unsavedModalOpen = false
94
97
  scriptEditorDrawer?.closeDrawer()
95
98
  }}
96
99
  >
@@ -107,7 +110,7 @@ let args = $state({});
107
110
  }
108
111
  unsavedModalOpen = false
109
112
  closeAnyway = true
110
- scriptEditorDrawer?.closeDrawer()
113
+ displayEditor = false
111
114
  diffDrawer?.openDrawer()
112
115
  diffDrawer?.setDiff({
113
116
  title: 'Saved <> Current',
@@ -133,7 +136,6 @@ let args = $state({});
133
136
  bind:this={scriptEditorDrawer}
134
137
  size="1200px"
135
138
  on:close={() => {
136
- scriptEditorDrawer?.openDrawer()
137
139
  checkForUnsavedChanges()
138
140
  }}
139
141
  >
@@ -146,7 +148,7 @@ let args = $state({});
146
148
  scriptEditorDrawer?.closeDrawer()
147
149
  }}
148
150
  >
149
- {#if script}
151
+ {#if script && displayEditor}
150
152
  {#key script.hash}
151
153
  <ScriptEditor
152
154
  showCaptures={false}
@@ -187,7 +189,7 @@ let args = $state({});
187
189
  return
188
190
  }
189
191
  closeAnyway = true
190
- scriptEditorDrawer?.closeDrawer()
192
+ displayEditor = false
191
193
  diffDrawer?.openDrawer()
192
194
  diffDrawer?.setDiff({
193
195
  mode: 'simple',
@@ -227,10 +229,6 @@ let args = $state({});
227
229
  <DiffDrawer
228
230
  bind:this={diffDrawer}
229
231
  on:close={() => {
230
- if (!closeAnyway) {
231
- scriptEditorDrawer?.openDrawer()
232
- } else {
233
- closeAnyway = false
234
- }
232
+ displayEditor = true
235
233
  }}
236
234
  />
@@ -1,4 +1,4 @@
1
1
  import type { FlowModule } from '../../gen';
2
- export declare function dfs<T>(modules: FlowModule[], f: (x: FlowModule, modules: FlowModule[], branches: FlowModule[][]) => T, { skipToolNodes }?: {
2
+ export declare function dfs<T>(modules: FlowModule[], f: (x: FlowModule, modules: FlowModule[], branches: FlowModule[][]) => T, opts?: {
3
3
  skipToolNodes?: boolean;
4
4
  }): T[];
@@ -1,27 +1,27 @@
1
- export function dfs(modules, f, { skipToolNodes = false } = {}) {
1
+ export function dfs(modules, f, opts = {}) {
2
2
  let result = [];
3
3
  for (const module of modules) {
4
4
  if (module.value.type == 'forloopflow' || module.value.type == 'whileloopflow') {
5
5
  result = result.concat(f(module, modules, [module.value.modules]));
6
- result = result.concat(dfs(module.value.modules, f));
6
+ result = result.concat(dfs(module.value.modules, f, opts));
7
7
  }
8
8
  else if (module.value.type == 'branchone') {
9
9
  const allBranches = [module.value.default, ...module.value.branches.map((b) => b.modules)];
10
10
  result = result.concat(f(module, modules, allBranches));
11
11
  for (const branch of allBranches) {
12
- result = result.concat(dfs(branch, f));
12
+ result = result.concat(dfs(branch, f, opts));
13
13
  }
14
14
  }
15
15
  else if (module.value.type == 'branchall') {
16
16
  const allBranches = module.value.branches.map((b) => b.modules);
17
17
  result = result.concat(f(module, modules, allBranches));
18
18
  for (const branch of allBranches) {
19
- result = result.concat(dfs(branch, f));
19
+ result = result.concat(dfs(branch, f, opts));
20
20
  }
21
21
  }
22
- else if (module.value.type == 'aiagent' && !skipToolNodes) {
22
+ else if (module.value.type == 'aiagent' && !opts.skipToolNodes) {
23
23
  result = result.concat(f(module, modules, [module.value.tools]));
24
- result = result.concat(dfs(module.value.tools, f));
24
+ result = result.concat(dfs(module.value.tools, f, opts));
25
25
  }
26
26
  else {
27
27
  result.push(f(module, modules, []));
@@ -82,27 +82,27 @@ export async function loadSchemaFromModule(module) {
82
82
  }
83
83
  ]
84
84
  },
85
- system_prompt: {
86
- type: 'string',
87
- default: 'You are a helpful assistant'
88
- },
89
85
  user_message: {
90
86
  type: 'string'
91
87
  },
88
+ system_prompt: {
89
+ type: 'string'
90
+ },
92
91
  max_completion_tokens: {
93
92
  type: 'number'
94
93
  },
95
94
  temperature: {
96
- type: 'number'
95
+ type: 'number',
96
+ description: 'Controls randomness in text generation. Range: 0.0 (deterministic) to 2.0 (random).'
97
97
  }
98
98
  },
99
- required: ['provider', 'model', 'system_prompt', 'user_message'],
99
+ required: ['provider', 'model', 'user_message'],
100
100
  type: 'object',
101
101
  order: [
102
102
  'provider',
103
103
  'model',
104
- 'system_prompt',
105
104
  'user_message',
105
+ 'system_prompt',
106
106
  'max_completion_tokens',
107
107
  'temperature'
108
108
  ]
@@ -113,8 +113,7 @@ export async function createBranchAll(id) {
113
113
  export async function createAiAgent(id) {
114
114
  const aiAgentFlowModules = {
115
115
  id,
116
- value: { type: 'aiagent', tools: [], input_transforms: {} },
117
- summary: 'AI Agent'
116
+ value: { type: 'aiagent', tools: [], input_transforms: {} }
118
117
  };
119
118
  const flowModuleState = await loadFlowModuleState(aiAgentFlowModules);
120
119
  return [aiAgentFlowModules, flowModuleState];
@@ -37,9 +37,7 @@ let moduleTest = $state(undefined);
37
37
  let testIsLoading = $state(false);
38
38
  let hover = $state(false);
39
39
  let connectingData = $state(undefined);
40
- let lastJob = $state(undefined);
41
40
  let outputPicker = $state(undefined);
42
- let historyOpen = $state(false);
43
41
  let testJob = $state(undefined);
44
42
  let outputPickerBarOpen = $state(false);
45
43
  let flowStateStore = $derived(flowEditorContext?.flowStateStore);
@@ -55,32 +53,13 @@ function updateConnectingData(id, pickableIds, flowPropPickerConfig, flowStateSt
55
53
  $effect(() => {
56
54
  updateConnectingData(id, pickableIds, $flowPropPickerConfig, flowStateStore);
57
55
  });
58
- function updateLastJob(flowStateStore) {
59
- if (!flowStateStore ||
60
- !id ||
61
- flowStateStore.val[id]?.previewResult === 'never tested this far') {
62
- return;
63
- }
64
- lastJob = {
65
- id: flowStateStore.val[id]?.previewJobId ?? '',
66
- result: flowStateStore.val[id]?.previewResult,
67
- type: 'CompletedJob',
68
- success: flowStateStore.val[id]?.previewSuccess ?? undefined
69
- };
70
- }
71
- $effect(() => {
72
- if (testJob && testJob.type === 'CompletedJob') {
73
- lastJob = $state.snapshot(testJob);
74
- }
75
- else if (id) {
76
- updateLastJob(flowStateStore);
77
- }
78
- });
79
56
  let isConnectingCandidate = $derived(!!id && !!$flowPropPickerConfig && !!pickableIds && Object.keys(pickableIds).includes(id));
80
57
  const outputPickerVisible = $derived(editMode && (isConnectingCandidate || alwaysShowOutputPicker) && !!id);
81
58
  const icon_render = $derived(icon);
82
59
  const action = $derived(getAiModuleAction(id));
83
60
  let testRunDropdownOpen = $state(false);
61
+ let outputPickerInner = $state(undefined);
62
+ let historyOpen = $derived.by(() => outputPickerInner?.getHistoryOpen?.() ?? false);
84
63
  </script>
85
64
 
86
65
  {#if deletable && id && editId}
@@ -145,7 +124,15 @@ let testRunDropdownOpen = $state(false);
145
124
  {@const flowStore = flowEditorContext?.flowStore.val}
146
125
  {@const mod = flowStore?.value ? dfsPreviousResults(id, flowStore, false)[0] : undefined}
147
126
  {#if mod && flowStateStore?.val?.[id]}
148
- <ModuleTest bind:this={moduleTest} {mod} bind:testIsLoading bind:testJob />
127
+ <ModuleTest
128
+ bind:this={moduleTest}
129
+ {mod}
130
+ bind:testIsLoading
131
+ bind:testJob
132
+ onJobDone={() => {
133
+ outputPickerInner?.setJobPreview?.()
134
+ }}
135
+ />
149
136
  {/if}
150
137
  {/if}
151
138
 
@@ -329,7 +316,6 @@ let testRunDropdownOpen = $state(false);
329
316
  prefix={'results'}
330
317
  connectingData={isConnecting ? connectingData : undefined}
331
318
  {mock}
332
- {lastJob}
333
319
  {testJob}
334
320
  moduleId={id}
335
321
  onSelect={selectConnection}
@@ -337,12 +323,12 @@ let testRunDropdownOpen = $state(false);
337
323
  {path}
338
324
  {loopStatus}
339
325
  rightMargin
340
- bind:derivedHistoryOpen={historyOpen}
341
326
  historyOffset={{ mainAxis: 12, crossAxis: -9 }}
342
327
  clazz="p-1"
343
328
  isLoading={testIsLoading ||
344
329
  (id ? stepHistoryLoader?.stepStates[id]?.loadingJobs : false)}
345
330
  initial={id ? stepHistoryLoader?.stepStates[id]?.initial : undefined}
331
+ bind:this={outputPickerInner}
346
332
  />
347
333
  {/snippet}
348
334
  </OutputPicker>
@@ -1,12 +1,9 @@
1
1
  <script lang="ts">import { Button } from '../../common';
2
- import LanguageIcon from '../../common/languageIcons/LanguageIcon.svelte';
3
- import IconedResourceType from '../../IconedResourceType.svelte';
4
- import { Building, Repeat, Square, ArrowDown, GitBranch, Bot } from 'lucide-svelte';
5
2
  import { createEventDispatcher, getContext } from 'svelte';
6
3
  import FlowModuleSchemaItem from './FlowModuleSchemaItem.svelte';
4
+ import FlowModuleIcon from '../FlowModuleIcon.svelte';
7
5
  import { prettyLanguage } from '../../../common';
8
6
  import { msToSec } from '../../../utils';
9
- import BarsStaggered from '../../icons/BarsStaggered.svelte';
10
7
  import FlowJobsMenu from './FlowJobsMenu.svelte';
11
8
  import { isTriggerStep } from '../../graph/graphBuilder.svelte';
12
9
  import { checkIfParentLoop } from '../utils';
@@ -107,9 +104,7 @@ let parentLoop = $derived(flowStore?.val && mod ? checkIfParentLoop(flowStore.va
107
104
  {darkMode}
108
105
  >
109
106
  {#snippet icon()}
110
- <div>
111
- <Repeat size={16} />
112
- </div>
107
+ <FlowModuleIcon module={mod} />
113
108
  {/snippet}
114
109
  </FlowModuleSchemaItem>
115
110
  {:else if mod.value.type === 'branchone'}
@@ -130,9 +125,7 @@ let parentLoop = $derived(flowStore?.val && mod ? checkIfParentLoop(flowStore.va
130
125
  {darkMode}
131
126
  >
132
127
  {#snippet icon()}
133
- <div>
134
- <GitBranch size={16} />
135
- </div>
128
+ <FlowModuleIcon module={mod} />
136
129
  {/snippet}
137
130
  </FlowModuleSchemaItem>
138
131
  {:else if mod.value.type === 'branchall'}
@@ -153,9 +146,7 @@ let parentLoop = $derived(flowStore?.val && mod ? checkIfParentLoop(flowStore.va
153
146
  {darkMode}
154
147
  >
155
148
  {#snippet icon()}
156
- <div>
157
- <GitBranch size={16} />
158
- </div>
149
+ <FlowModuleIcon module={mod} />
159
150
  {/snippet}
160
151
  </FlowModuleSchemaItem>
161
152
  {:else}
@@ -179,6 +170,7 @@ let parentLoop = $derived(flowStore?.val && mod ? checkIfParentLoop(flowStore.va
179
170
  {bgColor}
180
171
  {bgHoverColor}
181
172
  label={mod.summary ||
173
+ (mod.value.type === 'aiagent' ? 'AI Agent' : undefined) ||
182
174
  (mod.id === 'preprocessor'
183
175
  ? 'Preprocessor'
184
176
  : mod.id.startsWith('failure')
@@ -203,32 +195,13 @@ let parentLoop = $derived(flowStore?.val && mod ? checkIfParentLoop(flowStore.va
203
195
  {skipped}
204
196
  >
205
197
  {#snippet icon()}
206
- <div>
207
- {#if mod.value.type === 'aiagent'}
208
- <Bot size={16} />
209
- {:else if mod.value.type === 'rawscript'}
210
- <LanguageIcon lang={mod.value.language} width={16} height={16} />
211
- {:else if mod.summary == 'Terminate flow'}
212
- <Square size={16} />
213
- {:else if mod.value.type === 'identity'}
214
- <ArrowDown size={16} />
215
- {:else if mod.value.type === 'flow'}
216
- <BarsStaggered size={16} />
217
- {:else if mod.value.type === 'script'}
218
- {#if mod.value.path.startsWith('hub/')}
219
- <div>
220
- <IconedResourceType
221
- width="20px"
222
- height="20px"
223
- name={mod.value.path.split('/')[2]}
224
- silent={true}
225
- />
226
- </div>
227
- {:else}
228
- <Building size={14} />
229
- {/if}
230
- {/if}
231
- </div>
198
+ {@const size =
199
+ mod.value.type === 'script' && mod.value.path.startsWith('hub/')
200
+ ? 20
201
+ : mod.value.type === 'script'
202
+ ? 14
203
+ : 16}
204
+ <FlowModuleIcon module={mod} {size} />
232
205
  {/snippet}
233
206
  </FlowModuleSchemaItem>
234
207
  {/if}
@@ -70,7 +70,7 @@ const outputType = $derived(showJobStatus
70
70
  {selected}
71
71
  {hover}
72
72
  id={id ?? ''}
73
- isConnectingCandidate={true}
73
+ isConnectingCandidate={nodeKind !== 'result'}
74
74
  variant="virtual"
75
75
  type={outputType}
76
76
  {darkMode}
@@ -52,7 +52,7 @@ const dispatch = createEventDispatcher();
52
52
  <GitBranch size={14} />
53
53
  Branch to all
54
54
  {:else if label === 'AI Agent'}
55
- <BotIcon size={14} />
55
+ <BotIcon size={14} class="text-violet-800 dark:text-violet-400" />
56
56
  AI Agent
57
57
  {/if}
58
58
  </span>
@@ -3,11 +3,11 @@ import ObjectViewer from '../../propertyPicker/ObjectViewer.svelte';
3
3
  import { twMerge } from 'tailwind-merge';
4
4
  import { DollarSign, Pencil, RefreshCw, SquareFunction } from 'lucide-svelte';
5
5
  let { inputTransform, id, onEditInput } = $props();
6
- const { flowStore, flowStateStore, testSteps, previewArgs } = getContext('FlowEditorContext') || {};
6
+ const { flowStore, flowStateStore, stepsInputArgs, previewArgs } = getContext('FlowEditorContext') || {};
7
7
  onMount(() => {
8
- testSteps?.updateStepArgs(id, flowStateStore?.val, flowStore?.val, previewArgs?.val);
8
+ stepsInputArgs?.updateStepArgs(id, flowStateStore?.val, flowStore?.val, previewArgs?.val);
9
9
  });
10
- const input = $derived(testSteps?.getStepArgs(id));
10
+ const input = $derived(stepsInputArgs?.getStepArgs(id));
11
11
  </script>
12
12
 
13
13
  <div class="p-4 pr-6 h-full overflow-y-auto">
@@ -29,10 +29,10 @@ const input = $derived(testSteps?.getStepArgs(id));
29
29
  {:else if inputTransform[key].type === 'static'}
30
30
  <DollarSign size={12} class="text-tertiary font-mono -my-1" />
31
31
  {/if}
32
- {#if testSteps?.isArgManuallySet(id, key)}
32
+ {#if stepsInputArgs?.isArgManuallySet(id, key)}
33
33
  <button
34
34
  onclick={() => {
35
- testSteps?.evalArg(id, key, flowStateStore?.val, flowStore?.val, previewArgs?.val)
35
+ stepsInputArgs?.evalArg(id, key, flowStateStore?.val, flowStore?.val, previewArgs?.val)
36
36
  }}
37
37
  title="Re-evaluate input"
38
38
  class="-my-1 ml-0.5 hover:text-primary dark:hover:text-primary dark:text-gray-500 text-gray-300"