windmill-components 1.665.0 → 1.677.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 (254) hide show
  1. package/dist/sharedUtils/assets/tokens/colorTokensConfig.d.ts +2 -0
  2. package/dist/sharedUtils/base.d.ts +1 -0
  3. package/dist/sharedUtils/cloud.d.ts +1 -0
  4. package/dist/sharedUtils/common.d.ts +111 -0
  5. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/count.d.ts +5 -0
  6. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/delete.d.ts +5 -0
  7. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/insert.d.ts +5 -0
  8. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/select.d.ts +13 -0
  9. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/update.d.ts +11 -0
  10. package/dist/sharedUtils/components/apps/components/display/dbtable/utils.d.ts +95 -0
  11. package/dist/sharedUtils/components/apps/editor/appPolicy.d.ts +6 -0
  12. package/dist/sharedUtils/components/apps/editor/appUtilsCore.d.ts +7 -0
  13. package/dist/sharedUtils/components/apps/editor/appUtilsS3.d.ts +33 -0
  14. package/dist/sharedUtils/components/apps/editor/commonAppUtils.d.ts +10 -0
  15. package/dist/sharedUtils/components/apps/editor/component/components.d.ts +5371 -0
  16. package/dist/sharedUtils/components/apps/editor/component/default-codes.d.ts +3 -0
  17. package/dist/sharedUtils/components/apps/editor/component/index.d.ts +3 -0
  18. package/dist/sharedUtils/components/apps/editor/component/sets.d.ts +7 -0
  19. package/dist/sharedUtils/components/apps/editor/componentsPanel/componentDefaultProps.d.ts +3 -0
  20. package/dist/sharedUtils/components/apps/gridUtils.d.ts +14 -0
  21. package/dist/sharedUtils/components/apps/inputType.d.ts +178 -0
  22. package/dist/sharedUtils/components/apps/rx.d.ts +29 -0
  23. package/dist/sharedUtils/components/apps/sharedTypes.d.ts +21 -0
  24. package/dist/sharedUtils/components/apps/types.d.ts +274 -0
  25. package/dist/sharedUtils/components/assets/lib.d.ts +25 -0
  26. package/dist/sharedUtils/components/common/alert/model.d.ts +2 -0
  27. package/dist/sharedUtils/components/common/badge/model.d.ts +8 -0
  28. package/dist/sharedUtils/components/common/button/model.d.ts +45 -0
  29. package/dist/sharedUtils/components/common/fileInput/model.d.ts +1 -0
  30. package/dist/sharedUtils/components/common/index.d.ts +24 -0
  31. package/dist/sharedUtils/components/common/skeleton/model.d.ts +21 -0
  32. package/dist/sharedUtils/components/dbTypes.d.ts +14 -0
  33. package/dist/sharedUtils/components/diff_drawer.d.ts +26 -0
  34. package/dist/sharedUtils/components/ducklake.d.ts +1 -0
  35. package/dist/sharedUtils/components/flows/scheduleUtils.d.ts +7 -0
  36. package/dist/sharedUtils/components/icons/index.d.ts +101 -0
  37. package/dist/sharedUtils/components/random_positive_adjetive.d.ts +1 -0
  38. package/dist/sharedUtils/components/raw_apps/rawAppPolicy.d.ts +10 -0
  39. package/dist/sharedUtils/components/raw_apps/utils.d.ts +15 -0
  40. package/dist/sharedUtils/components/triggers/email/utils.d.ts +4 -0
  41. package/dist/sharedUtils/components/triggers/gcp/utils.d.ts +2 -0
  42. package/dist/sharedUtils/components/triggers/http/utils.d.ts +11 -0
  43. package/dist/sharedUtils/components/triggers/kafka/utils.d.ts +2 -0
  44. package/dist/sharedUtils/components/triggers/mqtt/utils.d.ts +2 -0
  45. package/dist/sharedUtils/components/triggers/nats/utils.d.ts +2 -0
  46. package/dist/sharedUtils/components/triggers/postgres/utils.d.ts +8 -0
  47. package/dist/sharedUtils/components/triggers/sqs/utils.d.ts +2 -0
  48. package/dist/sharedUtils/components/triggers/triggers.svelte.d.ts +32 -0
  49. package/dist/sharedUtils/components/triggers/utils.d.ts +80 -0
  50. package/dist/sharedUtils/components/triggers/websocket/utils.d.ts +2 -0
  51. package/dist/sharedUtils/components/triggers.d.ts +20 -0
  52. package/dist/sharedUtils/gen/core/ApiError.d.ts +10 -0
  53. package/dist/sharedUtils/gen/core/ApiRequestOptions.d.ts +13 -0
  54. package/dist/sharedUtils/gen/core/ApiResult.d.ts +7 -0
  55. package/dist/sharedUtils/gen/core/CancelablePromise.d.ts +26 -0
  56. package/dist/sharedUtils/gen/core/OpenAPI.d.ts +27 -0
  57. package/dist/sharedUtils/gen/core/request.d.ts +29 -0
  58. package/dist/sharedUtils/gen/index.d.ts +6 -0
  59. package/dist/sharedUtils/gen/schemas.gen.d.ts +7036 -0
  60. package/dist/sharedUtils/gen/services.gen.d.ts +6047 -0
  61. package/dist/sharedUtils/gen/types.gen.d.ts +21881 -0
  62. package/dist/sharedUtils/history.svelte.d.ts +9 -0
  63. package/dist/sharedUtils/hub.d.ts +49 -0
  64. package/dist/sharedUtils/jsr.json +6 -0
  65. package/dist/sharedUtils/lib.d.ts +5 -0
  66. package/dist/sharedUtils/lib.es.js +1588 -0
  67. package/dist/sharedUtils/package.json +12 -0
  68. package/dist/sharedUtils/schema.d.ts +3 -0
  69. package/dist/sharedUtils/stores.d.ts +97 -0
  70. package/dist/sharedUtils/svelte5Utils.svelte.d.ts +80 -0
  71. package/dist/sharedUtils/toast.d.ts +8 -0
  72. package/dist/sharedUtils/utils.d.ts +265 -0
  73. package/package/components/AddUser.svelte +67 -34
  74. package/package/components/AppConnectInner.svelte +9 -1
  75. package/package/components/ArgInfo.svelte +9 -1
  76. package/package/components/ArgInput.svelte +21 -1
  77. package/package/components/CompareWorkspaces.svelte +11 -2
  78. package/package/components/DedicatedWorkersSelector.svelte +262 -247
  79. package/package/components/DefaultTagsInner.svelte +40 -2
  80. package/package/components/DeployWorkspace.svelte +13 -0
  81. package/package/components/DiffEditor.svelte +44 -1
  82. package/package/components/EditableSchemaForm.svelte +5 -2
  83. package/package/components/EditableSchemaForm.svelte.d.ts +1 -0
  84. package/package/components/Editor.svelte +5 -1
  85. package/package/components/EditorBar.svelte +12 -3
  86. package/package/components/FilterSearchbar.svelte +26 -2
  87. package/package/components/FlowBuilder.svelte +6 -3
  88. package/package/components/FlowGraphDiffViewer.svelte +16 -17
  89. package/package/components/FlowGraphViewer.svelte +20 -6
  90. package/package/components/FlowGraphViewer.svelte.d.ts +2 -0
  91. package/package/components/FlowGraphViewerStep.svelte +14 -32
  92. package/package/components/FlowMetadata.svelte +4 -1
  93. package/package/components/FlowPreviewContent.svelte +2 -0
  94. package/package/components/FlowStatusWaitingForEvents.svelte +25 -4
  95. package/package/components/HighlightCode.svelte +3 -0
  96. package/package/components/InstanceSetting.svelte +9 -25
  97. package/package/components/InstanceSettings.svelte +16 -0
  98. package/package/components/LabelsInput.svelte +149 -0
  99. package/package/components/LabelsInput.svelte.d.ts +8 -0
  100. package/package/components/Login.svelte +6 -1
  101. package/package/components/ObjectStoreConfigSettings.svelte +273 -1
  102. package/package/components/OktaSetting.svelte +6 -5
  103. package/package/components/Password.svelte +74 -20
  104. package/package/components/Password.svelte.d.ts +1 -0
  105. package/package/components/PasswordArgInput.svelte +2 -2
  106. package/package/components/PasswordArgInput.svelte.d.ts +1 -0
  107. package/package/components/Path.svelte +8 -10
  108. package/package/components/PathNameAutocomplete.svelte +308 -0
  109. package/package/components/PathNameAutocomplete.svelte.d.ts +27 -0
  110. package/package/components/PowerShellCommonParams.svelte +84 -0
  111. package/package/components/PowerShellCommonParams.svelte.d.ts +6 -0
  112. package/package/components/Range.svelte +8 -3
  113. package/package/components/ResourceEditor.svelte +6 -2
  114. package/package/components/RunForm.svelte +71 -7
  115. package/package/components/RunForm.svelte.d.ts +2 -1
  116. package/package/components/ScriptBuilder.svelte +7 -3
  117. package/package/components/ScriptEditor.svelte +221 -187
  118. package/package/components/ScriptEditor.svelte.d.ts +1 -1
  119. package/package/components/ScriptSchema.svelte +1 -1
  120. package/package/components/StringTypeNarrowing.svelte +1 -1
  121. package/package/components/StringTypeNarrowing.svelte.d.ts +1 -1
  122. package/package/components/SummaryPathDisplay.svelte +32 -10
  123. package/package/components/SummaryPathDisplay.svelte.d.ts +2 -1
  124. package/package/components/VariableEditor.svelte +9 -2
  125. package/package/components/WorkerGroup.svelte +47 -2
  126. package/package/components/apps/editor/DeploymentHistory.svelte +112 -13
  127. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +135 -35
  128. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +3 -1
  129. package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +11 -35
  130. package/package/components/apps/editor/settingsPanel/mainInput/runnableSelectorUtils.d.ts +10 -0
  131. package/package/components/apps/editor/settingsPanel/mainInput/runnableSelectorUtils.js +14 -0
  132. package/package/components/apps/editor/settingsPanel/mainInput/runnableSelectorUtils.test.d.ts +1 -0
  133. package/package/components/apps/editor/settingsPanel/mainInput/runnableSelectorUtils.test.js +34 -0
  134. package/package/components/assets/AssetButtons.svelte +21 -25
  135. package/package/components/assets/AssetsUsageDrawer.svelte +7 -9
  136. package/package/components/common/fileUpload/FileUpload.svelte +6 -2
  137. package/package/components/common/languageIcons/LanguageIcon.svelte +3 -0
  138. package/package/components/common/table/AppRow.svelte +18 -0
  139. package/package/components/common/table/FlowRow.svelte +18 -0
  140. package/package/components/common/table/ScriptRow.svelte +18 -0
  141. package/package/components/copilot/chat/AIChatManager.svelte.js +3 -3
  142. package/package/components/copilot/chat/flow/openFlow.json +1 -1
  143. package/package/components/copilot/chat/flow/openFlowZod.js +3 -3
  144. package/package/components/custom_ui.d.ts +2 -0
  145. package/package/components/details/DetailPageHeader.svelte +2 -2
  146. package/package/components/details/DetailPageHeader.svelte.d.ts +2 -1
  147. package/package/components/flows/agentToolUtils.d.ts +5 -0
  148. package/package/components/flows/agentToolUtils.js +49 -0
  149. package/package/components/flows/agentToolUtils.test.d.ts +1 -0
  150. package/package/components/flows/agentToolUtils.test.js +55 -0
  151. package/package/components/flows/content/FlowInput.svelte +2 -0
  152. package/package/components/flows/content/FlowInputsQuick.svelte +1 -1
  153. package/package/components/flows/content/FlowLoop.svelte +5 -12
  154. package/package/components/flows/content/FlowModuleScript.svelte +5 -3
  155. package/package/components/flows/content/FlowPathViewer.svelte +2 -2
  156. package/package/components/flows/content/FlowPathViewer.svelte.d.ts +1 -0
  157. package/package/components/flows/content/FlowSettings.svelte +2 -0
  158. package/package/components/flows/content/FlowWhileLoop.svelte +5 -12
  159. package/package/components/flows/flowInfers.js +8 -3
  160. package/package/components/flows/map/FlowModuleSchemaMap.svelte +49 -9
  161. package/package/components/flows/pickers/PickHubScriptQuick.svelte +5 -3
  162. package/package/components/flows/pickers/PickHubScriptQuick.svelte.d.ts +1 -1
  163. package/package/components/flows/scheduleUtils.js +2 -1
  164. package/package/components/graph/FlowGraphV2.svelte +13 -1
  165. package/package/components/graph/WacDiagram.svelte +96 -0
  166. package/package/components/graph/WacDiagram.svelte.d.ts +7 -0
  167. package/package/components/graph/noteEditor.svelte.d.ts +1 -1
  168. package/package/components/graph/noteEditor.svelte.js +12 -1
  169. package/package/components/graph/noteUtils.svelte.d.ts +1 -1
  170. package/package/components/graph/noteUtils.svelte.js +9 -2
  171. package/package/components/graph/renderers/edges/WacEdge.svelte +41 -0
  172. package/package/components/graph/renderers/edges/WacEdge.svelte.d.ts +4 -0
  173. package/package/components/graph/renderers/nodes/WacControlNode.svelte +51 -0
  174. package/package/components/graph/renderers/nodes/WacControlNode.svelte.d.ts +9 -0
  175. package/package/components/graph/renderers/nodes/WacStepNode.svelte +35 -0
  176. package/package/components/graph/renderers/nodes/WacStepNode.svelte.d.ts +9 -0
  177. package/package/components/graph/wacDagLayout.d.ts +10 -0
  178. package/package/components/graph/wacDagLayout.js +120 -0
  179. package/package/components/graph/wacToFlow.js +1 -1
  180. package/package/components/home/ItemsList.svelte +28 -4
  181. package/package/components/icons/RIcon.svelte +32 -0
  182. package/package/components/icons/RIcon.svelte.d.ts +7 -0
  183. package/package/components/instanceSettings/DbHealth.svelte +723 -0
  184. package/package/components/instanceSettings/DbHealth.svelte.d.ts +3 -0
  185. package/package/components/instanceSettings/SecretBackendConfig.svelte +343 -304
  186. package/package/components/instanceSettings/SmtpSettings.svelte +8 -0
  187. package/package/components/instanceSettings.js +14 -5
  188. package/package/components/mcp/McpScopeSelector.svelte +82 -16
  189. package/package/components/moveRenameManager.d.ts +1 -0
  190. package/package/components/moveRenameManager.js +7 -4
  191. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +14 -1
  192. package/package/components/raw_apps/rawAppPolicy.js +3 -2
  193. package/package/components/raw_apps/utils.test.d.ts +1 -0
  194. package/package/components/raw_apps/utils.test.js +38 -0
  195. package/package/components/recording/ScriptRecordingReplay.svelte +0 -1
  196. package/package/components/resources/resourcesFilter.d.ts +15 -2
  197. package/package/components/resources/resourcesFilter.js +11 -2
  198. package/package/components/runs/JobDetailFieldConfig.js +5 -3
  199. package/package/components/runs/JobDetailHeader.svelte +5 -2
  200. package/package/components/runs/JobRunsPreview.svelte +1 -0
  201. package/package/components/runs/RunBadges.svelte +7 -4
  202. package/package/components/runs/RunRow.svelte +7 -7
  203. package/package/components/schedules/schedulesFilter.d.ts +15 -2
  204. package/package/components/schedules/schedulesFilter.js +11 -2
  205. package/package/components/schema/EditableSchemaWrapper.svelte +6 -8
  206. package/package/components/schema/PropertyEditor.svelte +22 -1
  207. package/package/components/schema/PropertyEditor.svelte.d.ts +1 -0
  208. package/package/components/schema/editable_schema_wrapper.d.ts +1 -0
  209. package/package/components/secretArgUtils.d.ts +7 -0
  210. package/package/components/secretArgUtils.js +45 -0
  211. package/package/components/settings/WorkspaceUserSettings.svelte +359 -286
  212. package/package/components/sidebar/OperatorMenu.svelte +215 -197
  213. package/package/components/triggers/CaptureWrapper.svelte +1 -1
  214. package/package/components/triggers/TriggerFilters.svelte +17 -5
  215. package/package/components/triggers/TriggerFilters.svelte.d.ts +2 -1
  216. package/package/components/triggers/kafka/KafkaCapture.svelte +6 -2
  217. package/package/components/triggers/kafka/KafkaCapture.svelte.d.ts +1 -1
  218. package/package/components/triggers/kafka/KafkaTriggerEditorInner.svelte +5 -1
  219. package/package/components/triggers/kafka/utils.js +1 -0
  220. package/package/components/triggers/schedules/ScheduleEditorInner.svelte +6 -0
  221. package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +87 -1
  222. package/package/components/triggers/websocket/utils.js +2 -0
  223. package/package/components/variables/variablesFilter.d.ts +15 -2
  224. package/package/components/variables/variablesFilter.js +11 -2
  225. package/package/components/worker_group.js +1 -0
  226. package/package/components/workspaceSettings/DucklakeSettings.svelte +33 -41
  227. package/package/consts.d.ts +1 -0
  228. package/package/consts.js +1 -0
  229. package/package/editorLangUtils.d.ts +1 -1
  230. package/package/editorLangUtils.js +2 -0
  231. package/package/forLater.js +4 -0
  232. package/package/gen/core/OpenAPI.js +1 -1
  233. package/package/gen/schemas.gen.d.ts +94 -294
  234. package/package/gen/schemas.gen.js +94 -294
  235. package/package/gen/services.gen.d.ts +5 -121
  236. package/package/gen/services.gen.js +5 -237
  237. package/package/gen/types.gen.d.ts +91 -715
  238. package/package/hubPaths.json +6 -3
  239. package/package/infer.d.ts +55 -0
  240. package/package/infer.js +131 -0
  241. package/package/infer.svelte.js +2 -0
  242. package/package/mcpEndpointTools.js +213 -22
  243. package/package/script_helpers.d.ts +3 -0
  244. package/package/script_helpers.js +26 -0
  245. package/package/scripts.d.ts +2 -1
  246. package/package/scripts.js +15 -3
  247. package/package/stores.d.ts +2 -0
  248. package/package/system_prompts/prompts.d.ts +6 -5
  249. package/package/system_prompts/prompts.js +188 -29
  250. package/package/user.js +5 -1
  251. package/package/utils.js +21 -0
  252. package/package/utils_deployable.d.ts +7 -0
  253. package/package/utils_workspace_deploy.js +36 -8
  254. package/package.json +6 -5
@@ -1,11 +1,15 @@
1
1
  <script lang="ts">import { buildWsUrl } from '../wsUrl';
2
+ import { processSecretArgs } from './secretArgUtils';
2
3
  import { JobService } from '../gen';
3
4
  import { enterpriseLicense, userStore, workspaceStore } from '../stores';
4
5
  import { copyToClipboard, emptySchema, getLocalSetting, sendUserToast, storeLocalSetting } from '../utils';
5
6
  import Editor from './Editor.svelte';
6
7
  import { inferArgs, inferAssets, inferAnsibleExecutionMode } from '../infer';
8
+ import { isWorkflowAsCode } from './graph/wacToFlow';
9
+ import WacDiagram from './graph/WacDiagram.svelte';
7
10
  import { Pane, Splitpanes } from 'svelte-splitpanes';
8
11
  import SchemaForm from './SchemaForm.svelte';
12
+ import PowerShellCommonParams from './PowerShellCommonParams.svelte';
9
13
  import LogPanel from './scriptEditor/LogPanel.svelte';
10
14
  import EditorBar, { EDITOR_BAR_WIDTH_THRESHOLD } from './EditorBar.svelte';
11
15
  import JobLoader from './JobLoader.svelte';
@@ -57,6 +61,8 @@ let { schema = $bindable(), code = $bindable(), path, lang, kind = undefined, te
57
61
  let initialArgs = structuredClone($state.snapshot(args));
58
62
  let jsonView = $state(false);
59
63
  let schemaHeight = $state(0);
64
+ let psCommonParams = $state({});
65
+ let showPsCommonParams = $derived(lang === 'powershell' && /^\s*\[CmdletBinding/im.test(code));
60
66
  // Module tab state
61
67
  let activeModuleTab = $state(null);
62
68
  // Per-module test panel state (args + schema), persisted across tab switches
@@ -477,11 +483,20 @@ export async function runTest() {
477
483
  flushModuleContent();
478
484
  const testCode = activeModuleTab !== null ? editorCode : code;
479
485
  const testLang = activeModuleTab !== null ? effectiveLang : lang;
480
- const testArgs = activeModuleTab !== null
486
+ const rawTestArgs = activeModuleTab !== null
481
487
  ? testPanelArgs
482
488
  : selectedTab === 'preprocessor' || kind === 'preprocessor'
483
489
  ? { _ENTRYPOINT_OVERRIDE: 'preprocessor', ...(args ?? {}) }
484
490
  : (args ?? {});
491
+ const testSchema = activeModuleTab !== null ? testPanelSchema : schema;
492
+ const testArgs = await processSecretArgs(rawTestArgs, testSchema);
493
+ if (showPsCommonParams) {
494
+ for (const [k, v] of Object.entries(psCommonParams)) {
495
+ if (v !== undefined && v !== false && v !== '') {
496
+ testArgs[k] = v;
497
+ }
498
+ }
499
+ }
485
500
  //@ts-ignore
486
501
  let job = await jobLoader.runPreview(path, testCode, testLang, testArgs, tag, undefined, undefined, {
487
502
  done(_x) {
@@ -958,7 +973,8 @@ function collabUrl() {
958
973
  return (`${url}?collab=1&workspace=${encodeURIComponent($workspaceStore ?? '')}&lang=${encodeURIComponent(lang ?? '')}` +
959
974
  (edit ? '' : `&path=${path}`));
960
975
  }
961
- let showTabs = $derived(hasPreprocessor);
976
+ let isWac = $derived(code && lang ? isWorkflowAsCode(code, lang) : false);
977
+ let showTabs = $derived(hasPreprocessor || isWac);
962
978
  $effect(() => {
963
979
  !hasPreprocessor && (selectedTab = 'main');
964
980
  });
@@ -1190,6 +1206,11 @@ $effect(() => {
1190
1206
  <Tab value="preprocessor" label="Preprocessor" />
1191
1207
  </div>
1192
1208
  {/if}
1209
+ {#if isWac}
1210
+ <div transition:slide={{ duration: 200, axis: 'x' }}>
1211
+ <Tab value="diagram" label="Diagram" />
1212
+ </div>
1213
+ {/if}
1193
1214
  </Tabs>
1194
1215
  </div>
1195
1216
  {/if}
@@ -1212,203 +1233,216 @@ $effect(() => {
1212
1233
  </div>
1213
1234
  {/if}
1214
1235
 
1215
- <div class="flex justify-center pt-1 relative">
1216
- <div class="absolute top-2 left-2">
1217
- <HideButton
1218
- hidden={false}
1219
- direction="right"
1220
- panelName="Test"
1221
- shortcut="U"
1222
- size="md"
1223
- on:click={() => {
1224
- toggleTestPanel()
1225
- }}
1226
- />
1236
+ {#if selectedTab === 'diagram'}
1237
+ <div class="flex-1 min-h-0">
1238
+ <WacDiagram {code} language={lang ?? ''} />
1227
1239
  </div>
1228
- {#if !(debugMode && isDebuggableScript)}
1229
- <div class="flex flex-row gap-2">
1230
- <div
1231
- class="flex flex-row divide-x divide-gray-800 dark:divide-gray-300 items-stretch"
1232
- >
1233
- {#if testIsLoading}
1234
- <Button on:click={jobLoader?.cancelJob} btnClasses="w-full" unifiedSize="md">
1235
- <WindmillIcon
1236
- white={true}
1237
- class="mr-2 text-white"
1238
- height="16px"
1239
- width="20px"
1240
- spin="fast"
1241
- />
1242
- Cancel
1243
- </Button>
1244
- {:else}
1245
- {@const disableTriggerButton =
1246
- customUi?.previewPanel?.disableTriggerButton === true}
1240
+ {:else}
1241
+ <div class="flex justify-center pt-1 relative">
1242
+ <div class="absolute top-2 left-2">
1243
+ <HideButton
1244
+ hidden={false}
1245
+ direction="right"
1246
+ panelName="Test"
1247
+ shortcut="U"
1248
+ size="md"
1249
+ on:click={() => {
1250
+ toggleTestPanel()
1251
+ }}
1252
+ />
1253
+ </div>
1254
+ {#if !(debugMode && isDebuggableScript)}
1255
+ <div class="flex flex-row gap-2">
1256
+ <div
1257
+ class="flex flex-row divide-x divide-gray-800 dark:divide-gray-300 items-stretch"
1258
+ >
1259
+ {#if testIsLoading}
1260
+ <Button on:click={jobLoader?.cancelJob} btnClasses="w-full" unifiedSize="md">
1261
+ <WindmillIcon
1262
+ white={true}
1263
+ class="mr-2 text-white"
1264
+ height="16px"
1265
+ width="20px"
1266
+ spin="fast"
1267
+ />
1268
+ Cancel
1269
+ </Button>
1270
+ {:else}
1271
+ {@const disableTriggerButton =
1272
+ customUi?.previewPanel?.disableTriggerButton === true}
1273
+ <Button
1274
+ on:click={() => runTest()}
1275
+ unifiedSize="md"
1276
+ btnClasses="w-full {!disableTriggerButton ? 'rounded-r-none' : ''}"
1277
+ variant="accent-secondary"
1278
+ startIcon={{ icon: Play, classes: 'animate-none' }}
1279
+ shortCut={{ Icon: CornerDownLeft }}
1280
+ >
1281
+ Test
1282
+ </Button>
1283
+ {#if !disableTriggerButton}
1284
+ <CaptureButton on:openTriggers />
1285
+ {/if}
1286
+ {/if}
1287
+ </div>
1288
+ {#if lastRecording}
1247
1289
  <Button
1248
- on:click={() => runTest()}
1290
+ on:click={downloadRecording}
1249
1291
  unifiedSize="md"
1250
- btnClasses="w-full {!disableTriggerButton ? 'rounded-r-none' : ''}"
1251
- variant="accent-secondary"
1252
- startIcon={{ icon: Play, classes: 'animate-none' }}
1253
- shortCut={{ Icon: CornerDownLeft }}
1254
- >
1255
- Test
1256
- </Button>
1257
- {#if !disableTriggerButton}
1258
- <CaptureButton on:openTriggers />
1259
- {/if}
1292
+ startIcon={{ icon: Download }}
1293
+ iconOnly
1294
+ title="Download recording"
1295
+ />
1260
1296
  {/if}
1261
1297
  </div>
1262
- {#if lastRecording}
1263
- <Button
1264
- on:click={downloadRecording}
1265
- unifiedSize="md"
1266
- startIcon={{ icon: Download }}
1267
- iconOnly
1268
- title="Download recording"
1269
- />
1270
- {/if}
1298
+ {/if}
1299
+ <div class="absolute top-2 right-2 flex items-center gap-2">
1300
+ <Toggle size="2xs" bind:checked={jsonView} options={{ right: 'JSON' }} />
1301
+ <DropdownV2
1302
+ size="xs"
1303
+ items={[
1304
+ {
1305
+ displayName: 'Test & record',
1306
+ icon: Disc,
1307
+ action: () => recordAndTest()
1308
+ }
1309
+ ]}
1310
+ />
1271
1311
  </div>
1272
- {/if}
1273
- <div class="absolute top-2 right-2 flex items-center gap-2">
1274
- <Toggle size="2xs" bind:checked={jsonView} options={{ right: 'JSON' }} />
1275
- <DropdownV2
1276
- size="xs"
1277
- items={[
1278
- {
1279
- displayName: 'Test & record',
1280
- icon: Disc,
1281
- action: () => recordAndTest()
1282
- }
1283
- ]}
1284
- />
1285
1312
  </div>
1286
- </div>
1287
- <Splitpanes
1288
- horizontal
1289
- class="!max-h-[calc(100%-{debugMode && isDebuggableScript ? '83' : '43'}px)]"
1290
- >
1291
- <Pane size={33}>
1292
- {#if jsonView}
1293
- <div
1294
- class="py-2"
1295
- style="height: {!schemaHeight || schemaHeight < 600 ? 600 : schemaHeight}px"
1296
- data-schema-picker
1297
- >
1298
- <JsonInputs
1299
- on:select={(e) => {
1300
- if (e.detail) {
1301
- if (activeModuleTab !== null) {
1302
- testPanelArgs = e.detail
1303
- } else {
1304
- args = e.detail
1313
+ <Splitpanes
1314
+ horizontal
1315
+ class="!max-h-[calc(100%-{debugMode && isDebuggableScript ? '83' : '43'}px)]"
1316
+ >
1317
+ <Pane size={33}>
1318
+ {#if jsonView}
1319
+ <div
1320
+ class="py-2"
1321
+ style="height: {!schemaHeight || schemaHeight < 600 ? 600 : schemaHeight}px"
1322
+ data-schema-picker
1323
+ >
1324
+ <JsonInputs
1325
+ on:select={(e) => {
1326
+ if (e.detail) {
1327
+ if (activeModuleTab !== null) {
1328
+ testPanelArgs = e.detail
1329
+ } else {
1330
+ args = e.detail
1331
+ }
1305
1332
  }
1306
- }
1307
- }}
1308
- updateOnBlur={false}
1309
- placeholder={`Write args as JSON.<br/><br/>Example:<br/><br/>{<br/>&nbsp;&nbsp;"foo": "12"<br/>}`}
1310
- />
1311
- </div>
1312
- {:else}
1313
- <div class="px-4">
1314
- <div class="break-words relative font-sans" bind:clientHeight={schemaHeight}>
1315
- {#key argsRender}
1316
- {#if activeModuleTab !== null}
1317
- <SchemaForm
1318
- helperScript={{
1319
- source: 'inline',
1320
- code: editorCode,
1321
- //@ts-ignore
1322
- lang: effectiveLang
1323
- }}
1324
- compact
1325
- schema={testPanelSchema}
1326
- bind:args={testPanelArgs}
1327
- bind:isValid
1328
- noVariablePicker={customUi?.previewPanel?.disableVariablePicker === true}
1329
- showSchemaExplorer
1330
- />
1331
- {:else}
1332
- <SchemaForm
1333
- helperScript={{
1334
- source: 'inline',
1335
- code,
1336
- //@ts-ignore
1337
- lang
1338
- }}
1339
- compact
1340
- {schema}
1341
- bind:args
1342
- bind:isValid
1343
- noVariablePicker={customUi?.previewPanel?.disableVariablePicker === true}
1344
- showSchemaExplorer
1345
- />
1333
+ }}
1334
+ updateOnBlur={false}
1335
+ placeholder={`Write args as JSON.<br/><br/>Example:<br/><br/>{<br/>&nbsp;&nbsp;"foo": "12"<br/>}`}
1336
+ />
1337
+ </div>
1338
+ {:else}
1339
+ <div class="px-4">
1340
+ <div class="break-words relative font-sans" bind:clientHeight={schemaHeight}>
1341
+ {#key argsRender}
1342
+ {#if activeModuleTab !== null}
1343
+ <SchemaForm
1344
+ helperScript={{
1345
+ source: 'inline',
1346
+ code: editorCode,
1347
+ //@ts-ignore
1348
+ lang: effectiveLang
1349
+ }}
1350
+ compact
1351
+ schema={testPanelSchema}
1352
+ bind:args={testPanelArgs}
1353
+ bind:isValid
1354
+ noVariablePicker={customUi?.previewPanel?.disableVariablePicker === true}
1355
+ showSchemaExplorer
1356
+ />
1357
+ {:else}
1358
+ <SchemaForm
1359
+ helperScript={{
1360
+ source: 'inline',
1361
+ code,
1362
+ //@ts-ignore
1363
+ lang
1364
+ }}
1365
+ compact
1366
+ {schema}
1367
+ bind:args
1368
+ bind:isValid
1369
+ noVariablePicker={customUi?.previewPanel?.disableVariablePicker === true}
1370
+ showSchemaExplorer
1371
+ />
1372
+ {/if}
1373
+ {/key}
1374
+ {#if showPsCommonParams}
1375
+ <div class="mt-2">
1376
+ <PowerShellCommonParams
1377
+ bind:args={psCommonParams}
1378
+ />
1379
+ </div>
1346
1380
  {/if}
1347
- {/key}
1381
+ </div>
1348
1382
  </div>
1349
- </div>
1350
- {/if}
1351
- </Pane>
1352
- <Pane size={67} class="relative">
1353
- <LogPanel
1354
- bind:this={logPanel}
1355
- {lang}
1356
- previewJob={debugMode
1357
- ? ({
1358
- id: 'debug',
1359
- logs: $debugState.logs,
1360
- result: $debugState.result,
1361
- success: !$debugState.error,
1362
- type: hasDebugResult ? 'CompletedJob' : 'QueuedJob'
1363
- } as any)
1364
- : testJob}
1365
- {pastPreviews}
1366
- previewIsLoading={debugMode
1367
- ? $debugState.running && !$debugState.stopped
1368
- : testIsLoading}
1369
- {editor}
1370
- {diffEditor}
1371
- args={activeModuleTab !== null ? testPanelArgs : args}
1372
- {showCaptures}
1373
- customUi={customUi?.previewPanel}
1374
- showCustomResultPanel={showDebugPanel}
1375
- >
1376
- {#if scriptProgress && !debugMode}
1377
- <!-- Put to the slot in logpanel -->
1378
- <JobProgressBar
1379
- job={testJob}
1380
- {scriptProgress}
1381
- bind:this={jobProgressBar}
1382
- compact={true}
1383
- />
1384
1383
  {/if}
1385
- {#snippet capturesTab()}
1386
- <div class="h-full p-2">
1387
- <CaptureTable
1388
- bind:this={captureTable}
1389
- {hasPreprocessor}
1390
- canHavePreprocessor={canHavePreprocessor(lang)}
1391
- isFlow={false}
1392
- path={stablePathForCaptures}
1393
- canEdit={true}
1394
- on:applyArgs
1395
- on:updateSchema
1396
- on:addPreprocessor
1384
+ </Pane>
1385
+ <Pane size={67} class="relative">
1386
+ <LogPanel
1387
+ bind:this={logPanel}
1388
+ {lang}
1389
+ previewJob={debugMode
1390
+ ? ({
1391
+ id: 'debug',
1392
+ logs: $debugState.logs,
1393
+ result: $debugState.result,
1394
+ success: !$debugState.error,
1395
+ type: hasDebugResult ? 'CompletedJob' : 'QueuedJob'
1396
+ } as any)
1397
+ : testJob}
1398
+ {pastPreviews}
1399
+ previewIsLoading={debugMode
1400
+ ? $debugState.running && !$debugState.stopped
1401
+ : testIsLoading}
1402
+ {editor}
1403
+ {diffEditor}
1404
+ args={activeModuleTab !== null ? testPanelArgs : args}
1405
+ {showCaptures}
1406
+ customUi={customUi?.previewPanel}
1407
+ showCustomResultPanel={showDebugPanel}
1408
+ >
1409
+ {#if scriptProgress && !debugMode}
1410
+ <!-- Put to the slot in logpanel -->
1411
+ <JobProgressBar
1412
+ job={testJob}
1413
+ {scriptProgress}
1414
+ bind:this={jobProgressBar}
1415
+ compact={true}
1397
1416
  />
1398
- </div>
1399
- {/snippet}
1400
- {#snippet customResultPanel()}
1401
- <DebugPanel
1402
- stackFrames={$debugState.stackFrames}
1403
- scopes={$debugState.scopes}
1404
- variables={$debugState.variables}
1405
- client={dapClient}
1406
- bind:selectedFrameId={selectedDebugFrameId}
1407
- />
1408
- {/snippet}
1409
- </LogPanel>
1410
- </Pane>
1411
- </Splitpanes>
1417
+ {/if}
1418
+ {#snippet capturesTab()}
1419
+ <div class="h-full p-2">
1420
+ <CaptureTable
1421
+ bind:this={captureTable}
1422
+ {hasPreprocessor}
1423
+ canHavePreprocessor={canHavePreprocessor(lang)}
1424
+ isFlow={false}
1425
+ path={stablePathForCaptures}
1426
+ canEdit={true}
1427
+ on:applyArgs
1428
+ on:updateSchema
1429
+ on:addPreprocessor
1430
+ />
1431
+ </div>
1432
+ {/snippet}
1433
+ {#snippet customResultPanel()}
1434
+ <DebugPanel
1435
+ stackFrames={$debugState.stackFrames}
1436
+ scopes={$debugState.scopes}
1437
+ variables={$debugState.variables}
1438
+ client={dapClient}
1439
+ bind:selectedFrameId={selectedDebugFrameId}
1440
+ />
1441
+ {/snippet}
1442
+ </LogPanel>
1443
+ </Pane>
1444
+ </Splitpanes>
1445
+ {/if}
1412
1446
  </div>
1413
1447
  </Pane>
1414
1448
  </Splitpanes>
@@ -25,7 +25,7 @@ interface Props {
25
25
  watchChanges?: boolean;
26
26
  customUi?: ScriptEditorWhitelabelCustomUi | undefined;
27
27
  args: Record<string, any>;
28
- selectedTab?: 'main' | 'preprocessor';
28
+ selectedTab?: 'main' | 'preprocessor' | 'diagram';
29
29
  hasPreprocessor?: boolean;
30
30
  captureTable?: CaptureTable | undefined;
31
31
  showCaptures?: boolean;
@@ -2,4 +2,4 @@
2
2
  let { schema = $bindable(), customUi = undefined } = $props();
3
3
  </script>
4
4
 
5
- <EditableSchemaForm bind:schema uiOnly {customUi} editTab="inputEditor" />
5
+ <EditableSchemaForm bind:schema uiOnly {customUi} editTab="inputEditor" showSensitiveToggle />
@@ -334,7 +334,7 @@ function onEnumKeyChange(oldKey, newKey) {
334
334
  options={{
335
335
  right: 'Is Password/Sensitive',
336
336
  rightTooltip:
337
- 'The value will be stored as an ephemeral secret variable in the user space of the caller of the job, only viewable by him.'
337
+ 'The value will be stored as an ephemeral secret variable in the user space of the caller of the job, only viewable by that user.'
338
338
  }}
339
339
  checked={password}
340
340
  on:change={(e) => {
@@ -15,6 +15,6 @@ interface Props {
15
15
  overrideAllowKindChange?: boolean;
16
16
  originalType?: string | undefined;
17
17
  }
18
- declare const StringTypeNarrowing: import("svelte").Component<Props, {}, "password" | "pattern" | "format" | "disableCreate" | "contentEncoding" | "enum_" | "enumLabels" | "dateFormat" | "customErrorMessage" | "minRows" | "disableVariablePicker">;
18
+ declare const StringTypeNarrowing: import("svelte").Component<Props, {}, "password" | "pattern" | "format" | "disableCreate" | "contentEncoding" | "enum_" | "enumLabels" | "dateFormat" | "minRows" | "customErrorMessage" | "disableVariablePicker">;
19
19
  type StringTypeNarrowing = ReturnType<typeof StringTypeNarrowing>;
20
20
  export default StringTypeNarrowing;
@@ -7,7 +7,9 @@ import { userStore, workspaceStore } from '../stores';
7
7
  import { sendUserToast } from '../toast';
8
8
  import { updateItemPathAndSummary, checkFlowOnBehalfOf } from './moveRenameManager';
9
9
  import Label from './Label.svelte';
10
- let { summary = $bindable(''), path = $bindable(''), editable = false, onSaved, kind = 'flow' } = $props();
10
+ import LabelsInput from './LabelsInput.svelte';
11
+ import Badge from './common/badge/Badge.svelte';
12
+ let { summary = $bindable(''), path = $bindable(''), labels = $bindable(), editable = false, onSaved, kind = 'flow' } = $props();
11
13
  let editSummary = $state('');
12
14
  let editPath = $state('');
13
15
  let dirtyPath = $state(false);
@@ -15,11 +17,13 @@ let popoverOpen = $state(false);
15
17
  let own = $state(false);
16
18
  let onBehalfOfEmail = $state(undefined);
17
19
  let summaryInput = $state();
18
- let hasChanges = $derived(editSummary !== (summary ?? '') || (own && dirtyPath));
20
+ let labelsDirty = $state(false);
21
+ let hasChanges = $derived(editSummary !== (summary ?? '') || (own && dirtyPath) || labelsDirty);
19
22
  $effect(() => {
20
23
  if (popoverOpen && onSaved) {
21
24
  editSummary = summary ?? '';
22
25
  editPath = path ?? '';
26
+ labelsDirty = false;
23
27
  own = isOwner(path ?? '', $userStore, $workspaceStore);
24
28
  onBehalfOfEmail = undefined;
25
29
  if (kind === 'flow' && $workspaceStore && path) {
@@ -38,9 +42,11 @@ async function save(close) {
38
42
  kind,
39
43
  initialPath,
40
44
  newPath,
41
- newSummary: editSummary
45
+ newSummary: editSummary,
46
+ labels
42
47
  });
43
48
  sendUserToast(`${kind === 'flow' ? 'Flow' : 'Script'} updated`);
49
+ labelsDirty = false;
44
50
  close();
45
51
  onSaved?.(newPath);
46
52
  }
@@ -71,13 +77,22 @@ async function save(close) {
71
77
  <span class="text-2xs leading-tight text-tertiary font-mono font-normal truncate max-w-full"
72
78
  >{path}</span
73
79
  >
74
- <span
75
- class="text-sm font-semibold truncate max-w-full {emptyString(summary)
76
- ? 'text-tertiary italic font-normal'
77
- : 'text-emphasis'}"
78
- >
79
- {emptyString(summary) ? 'Add a summary...' : summary}
80
- </span>
80
+ <div class="flex items-center gap-3 max-w-full">
81
+ <span
82
+ class="text-sm font-semibold truncate {emptyString(summary)
83
+ ? 'text-tertiary italic font-normal'
84
+ : 'text-emphasis'}"
85
+ >
86
+ {emptyString(summary) ? 'Add a summary...' : summary}
87
+ </span>
88
+ {#if labels?.length}
89
+ <div class="flex items-center gap-0.5">
90
+ {#each labels as label}
91
+ <Badge color="blue" verySmall class="px-1" title="Label: {label}">{label}</Badge>
92
+ {/each}
93
+ </div>
94
+ {/if}
95
+ </div>
81
96
  </div>
82
97
  {/snippet}
83
98
  {#snippet content({ close })}
@@ -98,6 +113,13 @@ async function save(close) {
98
113
  bind:value={editSummary}
99
114
  />
100
115
  </Label>
116
+ <LabelsInput
117
+ bind:labels
118
+ class="-mt-4"
119
+ onchange={() => {
120
+ labelsDirty = true
121
+ }}
122
+ />
101
123
  <Label label="Path">
102
124
  {#if own}
103
125
  <Path
@@ -1,10 +1,11 @@
1
1
  interface Props {
2
2
  summary?: string;
3
3
  path?: string;
4
+ labels?: string[] | undefined;
4
5
  editable?: boolean;
5
6
  onSaved?: (newPath: string) => void;
6
7
  kind?: 'flow' | 'script';
7
8
  }
8
- declare const SummaryPathDisplay: import("svelte").Component<Props, {}, "summary" | "path">;
9
+ declare const SummaryPathDisplay: import("svelte").Component<Props, {}, "summary" | "path" | "labels">;
9
10
  type SummaryPathDisplay = ReturnType<typeof SummaryPathDisplay>;
10
11
  export default SummaryPathDisplay;
@@ -1,5 +1,6 @@
1
1
  <script lang="ts">import { VariableService } from '../gen';
2
2
  import Path from './Path.svelte';
3
+ import LabelsInput from './LabelsInput.svelte';
3
4
  import { createEventDispatcher } from 'svelte';
4
5
  import { userStore, workspaceStore } from '../stores';
5
6
  import Tooltip from './Tooltip.svelte';
@@ -22,6 +23,7 @@ let variable = $state({
22
23
  description: ''
23
24
  });
24
25
  let valid = $state(true);
26
+ let labels = $state(undefined);
25
27
  let drawer = $state();
26
28
  let edit = $state(false);
27
29
  let initialPath = $state('');
@@ -36,6 +38,7 @@ export function initNew() {
36
38
  edit = false;
37
39
  initialPath = '';
38
40
  path = '';
41
+ labels = undefined;
39
42
  can_write = true;
40
43
  drawer?.openDrawer();
41
44
  }
@@ -54,6 +57,7 @@ export async function editVariable(edit_path) {
54
57
  is_secret: getV.is_secret,
55
58
  description: getV.description ?? ''
56
59
  };
60
+ labels = getV.labels ?? undefined;
57
61
  initialPath = edit_path;
58
62
  path = edit_path;
59
63
  drawer?.openDrawer();
@@ -78,7 +82,8 @@ async function createVariable() {
78
82
  path,
79
83
  value: variable.value,
80
84
  is_secret: variable.is_secret,
81
- description: variable.description
85
+ description: variable.description,
86
+ labels
82
87
  }
83
88
  });
84
89
  sendUserToast(`Created variable ${path}`);
@@ -99,7 +104,8 @@ async function updateVariable() {
99
104
  path: getV.path != path ? path : undefined,
100
105
  value: variable.value == '' ? undefined : variable.value,
101
106
  is_secret: getV.is_secret != variable.is_secret ? variable.is_secret : undefined,
102
- description: getV.description != variable.description ? variable.description : undefined
107
+ description: getV.description != variable.description ? variable.description : undefined,
108
+ labels
103
109
  }
104
110
  });
105
111
  sendUserToast(`Updated variable ${initialPath}`);
@@ -136,6 +142,7 @@ let editor = $state(undefined);
136
142
  namePlaceholder="variable"
137
143
  kind="variable"
138
144
  />
145
+ <LabelsInput bind:labels />
139
146
  </div>
140
147
  <label class="flex flex-col gap-1">
141
148
  <span class="text-xs font-semibold text-emphasis">Secret</span>