windmill-components 1.695.1 → 1.699.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 (180) 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/AppConnectInner.svelte +38 -5
  74. package/package/components/CompareWorkspaces.svelte +142 -486
  75. package/package/components/DisplayResult.svelte +39 -19
  76. package/package/components/Editor.svelte +5 -4
  77. package/package/components/Editor.svelte.d.ts +1 -0
  78. package/package/components/FilterSearchbar.svelte +3 -1
  79. package/package/components/FilterSearchbar.svelte.d.ts +1 -0
  80. package/package/components/FlowStatusViewerInner.svelte +23 -9
  81. package/package/components/ForkWorkspaceBanner.svelte +16 -0
  82. package/package/components/HistoricInputs.svelte +2 -1
  83. package/package/components/InstanceSetting.svelte +47 -5
  84. package/package/components/LogViewer.svelte +101 -71
  85. package/package/components/OnBehalfOfSelector.svelte +10 -7
  86. package/package/components/ParqetCsvTableRenderer.svelte +9 -4
  87. package/package/components/Path.svelte +10 -0
  88. package/package/components/ResourceEditor.svelte +198 -311
  89. package/package/components/ResourceEditor.svelte.d.ts +3 -3
  90. package/package/components/ResourceEditorDrawer.svelte +17 -6
  91. package/package/components/ResourceForm.svelte +235 -0
  92. package/package/components/ResourceForm.svelte.d.ts +25 -0
  93. package/package/components/RunsPage.svelte +1 -0
  94. package/package/components/S3FilePickerInner.svelte +22 -8
  95. package/package/components/ScriptBuilder.svelte +1 -0
  96. package/package/components/ScriptEditor.svelte +44 -7
  97. package/package/components/ScriptEditor.svelte.d.ts +1 -0
  98. package/package/components/ShareModal.svelte.d.ts +1 -1
  99. package/package/components/TaggedTextInput.svelte +4 -1
  100. package/package/components/TaggedTextInput.svelte.d.ts +2 -0
  101. package/package/components/VariableEditor.svelte +177 -199
  102. package/package/components/VariableEditor.svelte.d.ts +1 -2
  103. package/package/components/VariableForm.svelte +133 -0
  104. package/package/components/VariableForm.svelte.d.ts +22 -0
  105. package/package/components/WsSpecificVersions.svelte +39 -0
  106. package/package/components/WsSpecificVersions.svelte.d.ts +9 -0
  107. package/package/components/apps/editor/AppEditorHeaderDeploy.svelte.d.ts +1 -1
  108. package/package/components/common/fileDownload/FileDownload.svelte +16 -6
  109. package/package/components/common/table/AppRow.svelte +2 -1
  110. package/package/components/common/table/AppRow.svelte.d.ts +1 -0
  111. package/package/components/common/table/FlowRow.svelte +2 -1
  112. package/package/components/common/table/FlowRow.svelte.d.ts +1 -0
  113. package/package/components/common/table/RawAppRow.svelte +2 -1
  114. package/package/components/common/table/RawAppRow.svelte.d.ts +1 -0
  115. package/package/components/common/table/Row.svelte +11 -3
  116. package/package/components/common/table/Row.svelte.d.ts +2 -1
  117. package/package/components/common/table/RowIcon.svelte +18 -2
  118. package/package/components/common/table/RowIcon.svelte.d.ts +1 -1
  119. package/package/components/common/table/ScriptRow.svelte +2 -1
  120. package/package/components/common/table/ScriptRow.svelte.d.ts +1 -0
  121. package/package/components/copilot/autocomplete/Autocompletor.d.ts +3 -1
  122. package/package/components/copilot/autocomplete/Autocompletor.js +5 -2
  123. package/package/components/copilot/autocomplete/request.d.ts +1 -0
  124. package/package/components/copilot/autocomplete/request.js +1 -1
  125. package/package/components/copilot/chat/AIChatManager.svelte.js +14 -4
  126. package/package/components/copilot/chat/AiChatLayout.svelte +2 -0
  127. package/package/components/copilot/chat/ContextManager.svelte.d.ts +1 -0
  128. package/package/components/copilot/chat/CreatedResourceActionDrawers.svelte +129 -0
  129. package/package/components/copilot/chat/CreatedResourceActionDrawers.svelte.d.ts +4 -0
  130. package/package/components/copilot/chat/ToolExecutionDisplay.svelte +14 -6
  131. package/package/components/copilot/chat/ToolMessageActions.svelte +73 -0
  132. package/package/components/copilot/chat/ToolMessageActions.svelte.d.ts +7 -0
  133. package/package/components/copilot/chat/createdResourceActions.svelte.d.ts +6 -0
  134. package/package/components/copilot/chat/createdResourceActions.svelte.js +29 -0
  135. package/package/components/copilot/chat/script/core.d.ts +6 -2
  136. package/package/components/copilot/chat/script/core.js +13 -7
  137. package/package/components/copilot/chat/script/wacPrompt.test.d.ts +1 -0
  138. package/package/components/copilot/chat/script/wacPrompt.test.js +25 -0
  139. package/package/components/copilot/chat/shared.d.ts +12 -0
  140. package/package/components/copilot/chat/shared.test.js +23 -2
  141. package/package/components/copilot/chat/workspaceTools.js +34 -4
  142. package/package/components/flows/content/ScriptEditorDrawer.svelte +1 -0
  143. package/package/components/flows/idUtils.js +4 -1
  144. package/package/components/flows/stepsInputArgs.svelte.js +6 -1
  145. package/package/components/graph/wacToFlow.js +1 -1
  146. package/package/components/graph/wacToFlow.test.d.ts +1 -0
  147. package/package/components/graph/wacToFlow.test.js +17 -0
  148. package/package/components/home/Item.svelte +5 -1
  149. package/package/components/home/Item.svelte.d.ts +1 -0
  150. package/package/components/home/ItemsList.svelte +260 -3
  151. package/package/components/instanceSettings/SecretBackendConfig.svelte +492 -98
  152. package/package/components/propertyPicker/ObjectViewer.svelte +10 -4
  153. package/package/components/runs/runsFilter.d.ts +1 -1
  154. package/package/components/runs/useJobsLoader.svelte.d.ts +1 -0
  155. package/package/components/runs/useJobsLoader.svelte.js +8 -12
  156. package/package/components/scriptEditor/LogPanel.svelte +4 -1
  157. package/package/components/scriptEditor/LogPanel.svelte.d.ts +1 -0
  158. package/package/components/settings/WorkspaceOperatorSettings.svelte +1 -1
  159. package/package/components/sidebar/SidebarContent.svelte +40 -2
  160. package/package/components/sidebar/WorkspaceMenu.svelte +19 -5
  161. package/package/externalDomain.d.ts +2 -0
  162. package/package/externalDomain.js +16 -0
  163. package/package/gen/core/OpenAPI.js +1 -1
  164. package/package/gen/schemas.gen.d.ts +33 -4
  165. package/package/gen/schemas.gen.js +33 -4
  166. package/package/gen/services.gen.d.ts +20 -1
  167. package/package/gen/services.gen.js +40 -0
  168. package/package/gen/types.gen.d.ts +70 -3
  169. package/package/hubPaths.json +2 -2
  170. package/package/system_prompts/index.d.ts +1 -1
  171. package/package/system_prompts/index.js +22 -3
  172. package/package/system_prompts/prompts.d.ts +2 -2
  173. package/package/system_prompts/prompts.js +7 -4
  174. package/package/utils/downloadFile.d.ts +11 -0
  175. package/package/utils/downloadFile.js +48 -0
  176. package/package/utils_deployable.d.ts +162 -638
  177. package/package/utils_deployable.js +75 -143
  178. package/package/utils_workspace_deploy.d.ts +10 -4
  179. package/package/utils_workspace_deploy.js +167 -42
  180. package/package.json +7 -3
@@ -1,5 +1,6 @@
1
1
  <script lang="ts">import ObjectViewer from './ObjectViewer.svelte';
2
2
  import { copyToClipboard, truncate } from '../../utils';
3
+ import { downloadViaClient, shouldDownloadViaClient } from '../../utils/downloadFile';
3
4
  import { createEventDispatcher, tick, untrack, setContext, getContext } from 'svelte';
4
5
  import { computeKey, keepByKeyOrValue } from './utils';
5
6
  import { NEVER_TESTED_THIS_FAR } from '../flows/models';
@@ -335,12 +336,17 @@ let menuItems = $derived([
335
336
  <div class="flex">
336
337
  <span class="text-primary">{closeBracket}</span>
337
338
  {#if getTypeAsString(jsonFiltered) === 's3object'}
339
+ {@const s3DownloadApiPath = `/w/${$workspaceStore}/job_helpers/download_s3_file?file_key=${encodeURIComponent(jsonFiltered?.s3 ?? '')}${jsonFiltered?.storage ? `&storage=${jsonFiltered.storage}` : ''}`}
340
+ {@const s3DownloadName = jsonFiltered?.s3.split('/').pop() ?? 'unnamed_download.file'}
338
341
  <a
339
342
  class="text-secondary underline font-semibold text-2xs whitespace-nowrap ml-1 w-fit"
340
- href={`/api/w/${$workspaceStore}/job_helpers/download_s3_file?file_key=${encodeURIComponent(
341
- jsonFiltered?.s3 ?? ''
342
- )}${jsonFiltered?.storage ? `&storage=${jsonFiltered.storage}` : ''}`}
343
- download={jsonFiltered?.s3.split('/').pop() ?? 'unnamed_download.file'}
343
+ href={`/api${s3DownloadApiPath}`}
344
+ download={s3DownloadName}
345
+ onclick={async (e) => {
346
+ if (!shouldDownloadViaClient()) return
347
+ e.preventDefault()
348
+ await downloadViaClient(s3DownloadApiPath, s3DownloadName)
349
+ }}
344
350
  >
345
351
  <span class="flex items-center gap-1"><Download size={12} />download</span>
346
352
  </a>
@@ -178,7 +178,7 @@ export declare function buildRunsFilterSearchbarSchema({ paths, usernames, folde
178
178
  label: string;
179
179
  icon: typeof Zap;
180
180
  options: {
181
- label: "Google" | "GitHub" | "Schedule" | "HTTP" | "WebSocket" | "Postgres" | "Kafka" | "NATS" | "MQTT" | "SQS" | "GCP Pub/Sub" | "Azure Event Grid" | "Email" | "Webhook" | "Default Email";
181
+ label: any;
182
182
  value: JobTriggerKind;
183
183
  }[];
184
184
  allowNegative: true;
@@ -16,6 +16,7 @@ export interface UseJobLoaderArgs {
16
16
  skip?: boolean;
17
17
  lookback?: number;
18
18
  perPage?: number;
19
+ excludesEntrypointOverride?: boolean;
19
20
  }
20
21
  export declare function useJobsLoader(args: () => UseJobLoaderArgs): {
21
22
  loadExtraJobs: () => Promise<void>;
@@ -21,18 +21,12 @@ export function computeJobKinds(jobKindsCat) {
21
21
  let kinds = ['deploymentcallback'];
22
22
  return kinds.join(',');
23
23
  }
24
- else if (jobKindsCat == 'runs') {
25
- let kinds = ['script', 'flow', 'singlestepflow'];
26
- return kinds.join(',');
27
- }
28
24
  else {
29
- let kinds = [
30
- 'script',
31
- 'flow',
32
- 'flowscript',
33
- 'flownode',
34
- 'appscript'
35
- ];
25
+ // Default mirrors the explicit 'runs' category — top-level scripts, flows,
26
+ // and single-step flows. flowscript/flownode/appscript are intermediate
27
+ // flow children with non-null parent_job, and the loader pairs this with
28
+ // hasNullParent: true, so they would never match here anyway.
29
+ let kinds = ['script', 'flow', 'singlestepflow'];
36
30
  return kinds.join(',');
37
31
  }
38
32
  }
@@ -49,6 +43,7 @@ export function useJobsLoader(args) {
49
43
  let lookback = $derived(_args.lookback ?? 0);
50
44
  let timeframe = $derived(_args?.timeframe);
51
45
  let perPage = $derived(_args?.perPage ?? 1000);
46
+ let excludesEntrypointOverride = $derived(_args.excludesEntrypointOverride ?? false);
52
47
  let label = $derived(filters?.label ?? null);
53
48
  let worker = $derived(filters?.worker ?? null);
54
49
  let success = $derived(filters?.status ?? null);
@@ -218,7 +213,8 @@ export function useJobsLoader(args) {
218
213
  allWorkspaces: allWorkspaces ? true : undefined,
219
214
  perPage: perPageOverride ?? perPage,
220
215
  allowWildcards: allowWildcards ? true : undefined,
221
- broadFilter
216
+ broadFilter,
217
+ excludesEntrypointOverride: excludesEntrypointOverride ? true : undefined
222
218
  });
223
219
  promise = CancelablePromiseUtils.catchErr(promise, (e) => {
224
220
  if (e instanceof CancelError)
@@ -21,10 +21,13 @@ import Head from '../table/Head.svelte';
21
21
  import WorkflowTimeline from '../WorkflowTimeline.svelte';
22
22
  import Tooltip from '../Tooltip.svelte';
23
23
  import { getStringError } from '../copilot/chat/utils';
24
- let { lang, previewIsLoading = false, previewJob, pastPreviews = [], editor = undefined, diffEditor = undefined, args = undefined, workspace = undefined, showCaptures = false, customUi = undefined, children, capturesTab, customResultPanel, showCustomResultPanel = false } = $props();
24
+ let { lang, previewIsLoading = false, previewJob, pastPreviews = [], editor = undefined, diffEditor = undefined, args = undefined, workspace = undefined, showCaptures = false, customUi = undefined, children, capturesTab, customResultPanel, showCustomResultPanel = false, onTabChange } = $props();
25
25
  let selectedTab = $state('logs');
26
26
  let drawerOpen = $state(false);
27
27
  let drawerContent = $state(undefined);
28
+ $effect(() => {
29
+ onTabChange?.(selectedTab);
30
+ });
28
31
  export function setFocusToLogs() {
29
32
  selectedTab = 'logs';
30
33
  }
@@ -21,6 +21,7 @@ interface Props {
21
21
  capturesTab?: import('svelte').Snippet;
22
22
  customResultPanel?: import('svelte').Snippet;
23
23
  showCustomResultPanel?: boolean;
24
+ onTabChange?: (tab: string) => void;
24
25
  }
25
26
  declare const LogPanel: import("svelte").Component<Props, {
26
27
  setFocusToLogs: () => void;
@@ -15,7 +15,7 @@ let operatorWorkspaceSettings = $state({
15
15
  schedules: true,
16
16
  resources: true,
17
17
  variables: true,
18
- assets: false,
18
+ assets: true,
19
19
  triggers: true,
20
20
  audit_logs: true,
21
21
  groups: true,
@@ -1,5 +1,6 @@
1
1
  <script lang="ts">import MenuLink from './MenuLink.svelte';
2
- import { superadmin, usedTriggerKinds, userStore, workspaceStore, isCriticalAlertsUIOpen, enterpriseLicense, devopsRole, tutorialsToDo, skippedAll } from '../../stores';
2
+ import { superadmin, usedTriggerKinds, userStore, userWorkspaces, workspaceStore, isCriticalAlertsUIOpen, enterpriseLicense, devopsRole, tutorialsToDo, skippedAll } from '../../stores';
3
+ import { findWorkspaceDescendants } from '../../utils/workspaceHierarchy';
3
4
  import { syncTutorialsTodos } from '../../tutorialUtils';
4
5
  import { SIDEBAR_SHOW_SCHEDULES } from '../../consts';
5
6
  import { BookOpen, ServerCog, Boxes, Calendar, DollarSign, Eye, Logs, FolderCog, FolderOpen, Github, GraduationCap, HelpCircle, Home, LogOut, Newspaper, Play, Route, Settings, UserCog, Plus, Unplug, AlertCircle, Database, Pyramid, Trash2, MailIcon } from 'lucide-svelte';
@@ -64,11 +65,24 @@ async function deleteFork() {
64
65
  sendUserToast(err, true);
65
66
  }
66
67
  }
68
+ if (deleteForkedChildren && forkedDescendants.length > 0) {
69
+ for (const child of forkedDescendants) {
70
+ try {
71
+ await WorkspaceService.deleteWorkspace({ workspace: child.id });
72
+ }
73
+ catch (err) {
74
+ sendUserToast(`Failed to delete forked child ${child.id}: ${err}`, true);
75
+ return;
76
+ }
77
+ }
78
+ }
67
79
  await WorkspaceService.deleteWorkspace({ workspace });
68
80
  sendUserToast('You deleted the workspace');
69
81
  clearStores();
70
82
  goto('/user/workspaces');
71
83
  }
84
+ let deleteForkedChildren = $state(false);
85
+ const forkedDescendants = $derived($workspaceStore ? findWorkspaceDescendants($workspaceStore, $userWorkspaces ?? []) : []);
72
86
  let hasNewChangelogs = $state(false);
73
87
  let recentChangelogs = $state([]);
74
88
  let lastOpened = localStorage.getItem('changelogsLastOpened');
@@ -206,7 +220,6 @@ let mainMenuLinks = $derived([
206
220
  label: 'Assets',
207
221
  href: `${base}/assets`,
208
222
  icon: Pyramid,
209
- disabled: $userStore?.operator,
210
223
  aiId: 'sidebar-menu-link-assets',
211
224
  aiDescription: 'Button to navigate to assets'
212
225
  },
@@ -403,6 +416,7 @@ let secondaryMenuLinks = $derived([
403
416
  label: 'Delete Forked Workspace',
404
417
  action: async () => {
405
418
  await loadForkedDatatables();
419
+ deleteForkedChildren = false;
406
420
  deleteWorkspaceForkModal = true;
407
421
  },
408
422
  icon: Trash2,
@@ -718,6 +732,30 @@ let secondaryMenuLinks = $derived([
718
732
  >
719
733
  <div class="flex flex-col w-full space-y-4">
720
734
  <span>Are you sure you want to delete this workspace fork? (deleting {$workspaceStore})</span>
735
+ {#if forkedDescendants.length > 0}
736
+ <div class="border rounded-md divide-y">
737
+ <div class="px-4 py-2 flex items-center justify-between gap-2">
738
+ <div class="flex flex-col min-w-0">
739
+ <span class="text-xs font-semibold text-secondary">Forked children</span>
740
+ <span class="text-3xs text-hint">
741
+ This fork has {forkedDescendants.length} forked
742
+ {forkedDescendants.length === 1 ? 'child' : 'children'} (transitively).
743
+ </span>
744
+ </div>
745
+ <Toggle
746
+ class="shrink-0"
747
+ size="xs"
748
+ bind:checked={deleteForkedChildren}
749
+ options={{ right: 'Also delete children' }}
750
+ />
751
+ </div>
752
+ <ul class="px-4 py-2 text-3xs text-hint max-h-32 overflow-y-auto">
753
+ {#each forkedDescendants as child}
754
+ <li class="font-mono truncate" title={child.id}>{child.id}</li>
755
+ {/each}
756
+ </ul>
757
+ </div>
758
+ {/if}
721
759
  {#if forkedDatatables.length > 0}
722
760
  <div class="border rounded-md divide-y">
723
761
  <div class="px-4 py-2 text-xs font-semibold text-secondary"> Forked databases </div>
@@ -47,6 +47,23 @@ async function toggleSwitchWorkspace(id) {
47
47
  await goto('/');
48
48
  }
49
49
  }
50
+ function workspaceHref(id) {
51
+ const params = new URLSearchParams(page.url.searchParams);
52
+ params.set('workspace', id);
53
+ return `${page.url.pathname}?${params.toString()}`;
54
+ }
55
+ function onWorkspaceItemClick(e, workspace) {
56
+ if (workspace.disabled) {
57
+ e.preventDefault();
58
+ return;
59
+ }
60
+ // Let modifier-keyed clicks fall through so the browser can open in a new tab.
61
+ if (e.ctrlKey || e.metaKey || e.shiftKey || e.altKey) {
62
+ return;
63
+ }
64
+ e.preventDefault();
65
+ toggleSwitchWorkspace(workspace.id);
66
+ }
50
67
  function getForkedWorkspace(workspaceId) {
51
68
  if (!$userWorkspaces)
52
69
  return undefined;
@@ -112,11 +129,8 @@ const itemClass = 'text-primary w-full flex flex-row gap-2 px-4 py-2 text-xs hov
112
129
  ? ''
113
130
  : 'cursor-pointer hover:bg-surface-hover data-[highlighted]:bg-surface-hover'
114
131
  )}
115
- onClick={async () => {
116
- if (!workspace.disabled) {
117
- await toggleSwitchWorkspace(workspace.id)
118
- }
119
- }}
132
+ href={workspace.disabled ? undefined : workspaceHref(workspace.id)}
133
+ onClick={(e) => onWorkspaceItemClick(e, workspace)}
120
134
  {item}
121
135
  >
122
136
  <div class="flex items-center justify-between min-w-0 w-full">
@@ -0,0 +1,2 @@
1
+ export declare function setExternalDomain(domain: string | undefined): void;
2
+ export declare function withExternalDomain(path: string): string;
@@ -0,0 +1,16 @@
1
+ // Optional external domain (e.g. "https://app.windmill.dev") used to build
2
+ // absolute URLs for user-facing links when the Windmill UI is embedded on a
3
+ // different host than the API. Undefined = same-origin (default behavior).
4
+ // Intended to be set once at boot by SDK consumers (e.g. windmill-react-sdk),
5
+ // before any component that builds links has rendered — there is no
6
+ // reactivity, so changing it after mount won't update already-rendered hrefs.
7
+ let externalDomain = undefined;
8
+ export function setExternalDomain(domain) {
9
+ externalDomain = domain;
10
+ }
11
+ export function withExternalDomain(path) {
12
+ if (!externalDomain)
13
+ return path;
14
+ const trimmed = externalDomain.replace(/\/$/, '');
15
+ return `${trimmed}${path.startsWith('/') ? path : `/${path}`}`;
16
+ }
@@ -21,7 +21,7 @@ export const OpenAPI = {
21
21
  PASSWORD: undefined,
22
22
  TOKEN: undefined,
23
23
  USERNAME: undefined,
24
- VERSION: '1.695.0',
24
+ VERSION: '1.699.0',
25
25
  WITH_CREDENTIALS: false,
26
26
  interceptors: {
27
27
  request: new Interceptors(),
@@ -1796,7 +1796,7 @@ export declare const $AzureKeyVaultSettings: {
1796
1796
  };
1797
1797
  readonly client_secret: {
1798
1798
  readonly type: "string";
1799
- readonly description: "Azure AD client secret";
1799
+ readonly description: "Azure AD client secret. Optional — when omitted, the integration falls back to Azure Workload Identity Federation, exchanging the Kubernetes-projected service-account JWT at AZURE_FEDERATED_TOKEN_FILE for an access token (no long-lived secret stored).";
1800
1800
  };
1801
1801
  readonly token: {
1802
1802
  readonly type: "string";
@@ -3732,6 +3732,9 @@ export declare const $ListableVariable: {
3732
3732
  readonly type: "string";
3733
3733
  };
3734
3734
  };
3735
+ readonly ws_specific: {
3736
+ readonly type: "boolean";
3737
+ };
3735
3738
  };
3736
3739
  readonly required: readonly ["workspace_id", "path", "is_secret", "extra_perms"];
3737
3740
  };
@@ -3791,6 +3794,9 @@ export declare const $CreateVariable: {
3791
3794
  readonly type: "string";
3792
3795
  };
3793
3796
  };
3797
+ readonly ws_specific: {
3798
+ readonly type: "boolean";
3799
+ };
3794
3800
  };
3795
3801
  readonly required: readonly ["path", "value", "is_secret", "description"];
3796
3802
  };
@@ -3819,6 +3825,9 @@ export declare const $EditVariable: {
3819
3825
  readonly type: "string";
3820
3826
  };
3821
3827
  };
3828
+ readonly ws_specific: {
3829
+ readonly type: "boolean";
3830
+ };
3822
3831
  };
3823
3832
  };
3824
3833
  export declare const $AuditLog: {
@@ -4133,6 +4142,9 @@ export declare const $CreateResource: {
4133
4142
  readonly type: "string";
4134
4143
  };
4135
4144
  };
4145
+ readonly ws_specific: {
4146
+ readonly type: "boolean";
4147
+ };
4136
4148
  };
4137
4149
  readonly required: readonly ["path", "value", "resource_type"];
4138
4150
  };
@@ -4158,6 +4170,9 @@ export declare const $EditResource: {
4158
4170
  readonly type: "string";
4159
4171
  };
4160
4172
  };
4173
+ readonly ws_specific: {
4174
+ readonly type: "boolean";
4175
+ };
4161
4176
  };
4162
4177
  };
4163
4178
  export declare const $Resource: {
@@ -4198,6 +4213,9 @@ export declare const $Resource: {
4198
4213
  readonly type: "string";
4199
4214
  };
4200
4215
  };
4216
+ readonly ws_specific: {
4217
+ readonly type: "boolean";
4218
+ };
4201
4219
  };
4202
4220
  readonly required: readonly ["path", "resource_type", "is_oauth"];
4203
4221
  };
@@ -4254,6 +4272,9 @@ export declare const $ListableResource: {
4254
4272
  readonly type: "string";
4255
4273
  };
4256
4274
  };
4275
+ readonly ws_specific: {
4276
+ readonly type: "boolean";
4277
+ };
4257
4278
  };
4258
4279
  readonly required: readonly ["path", "resource_type", "is_oauth", "is_linked", "is_refreshed"];
4259
4280
  };
@@ -4739,7 +4760,7 @@ export declare const $EditSchedule: {
4739
4760
  export declare const $JobTriggerKind: {
4740
4761
  readonly description: "job trigger kind (schedule, http, websocket...)";
4741
4762
  readonly type: "string";
4742
- readonly enum: readonly ["webhook", "default_email", "email", "schedule", "http", "websocket", "postgres", "kafka", "nats", "mqtt", "sqs", "gcp", "azure", "google", "github"];
4763
+ readonly enum: readonly ["webhook", "default_email", "email", "schedule", "http", "websocket", "postgres", "kafka", "nats", "mqtt", "sqs", "gcp", "azure", "google", "github", "asset"];
4743
4764
  };
4744
4765
  export declare const $TriggerMode: {
4745
4766
  readonly description: "job trigger mode";
@@ -9179,7 +9200,7 @@ export declare const $WorkspaceItemDiff: {
9179
9200
  readonly properties: {
9180
9201
  readonly kind: {
9181
9202
  readonly type: "string";
9182
- readonly enum: readonly ["script", "flow", "app", "raw_app", "resource", "variable", "resource_type"];
9203
+ readonly enum: readonly ["script", "flow", "app", "raw_app", "resource", "variable", "resource_type", "folder", "schedule", "http_trigger", "websocket_trigger", "kafka_trigger", "nats_trigger", "postgres_trigger", "mqtt_trigger", "sqs_trigger", "gcp_trigger", "azure_trigger", "email_trigger"];
9183
9204
  readonly description: "Type of the item";
9184
9205
  };
9185
9206
  readonly path: {
@@ -9210,7 +9231,7 @@ export declare const $WorkspaceItemDiff: {
9210
9231
  };
9211
9232
  export declare const $CompareSummary: {
9212
9233
  readonly type: "object";
9213
- readonly required: readonly ["total_diffs", "total_ahead", "total_behind", "scripts_changed", "flows_changed", "apps_changed", "resources_changed", "variables_changed", "resource_types_changed", "folders_changed", "conflicts"];
9234
+ readonly required: readonly ["total_diffs", "total_ahead", "total_behind", "scripts_changed", "flows_changed", "apps_changed", "resources_changed", "variables_changed", "resource_types_changed", "folders_changed", "schedules_changed", "triggers_changed", "conflicts"];
9214
9235
  readonly properties: {
9215
9236
  readonly total_diffs: {
9216
9237
  readonly type: "integer";
@@ -9252,6 +9273,14 @@ export declare const $CompareSummary: {
9252
9273
  readonly type: "integer";
9253
9274
  readonly description: "Number of folders with differences";
9254
9275
  };
9276
+ readonly schedules_changed: {
9277
+ readonly type: "integer";
9278
+ readonly description: "Number of schedules with differences";
9279
+ };
9280
+ readonly triggers_changed: {
9281
+ readonly type: "integer";
9282
+ readonly description: "Number of triggers with differences (sum across all trigger kinds)";
9283
+ };
9255
9284
  readonly conflicts: {
9256
9285
  readonly type: "integer";
9257
9286
  readonly description: "Number of items that are both ahead and behind (conflicts)";
@@ -1879,7 +1879,7 @@ export const $AzureKeyVaultSettings = {
1879
1879
  },
1880
1880
  client_secret: {
1881
1881
  type: 'string',
1882
- description: 'Azure AD client secret'
1882
+ description: 'Azure AD client secret. Optional — when omitted, the integration falls back to Azure Workload Identity Federation, exchanging the Kubernetes-projected service-account JWT at AZURE_FEDERATED_TOKEN_FILE for an access token (no long-lived secret stored).'
1883
1883
  },
1884
1884
  token: {
1885
1885
  type: 'string',
@@ -3833,6 +3833,9 @@ export const $ListableVariable = {
3833
3833
  items: {
3834
3834
  type: 'string'
3835
3835
  }
3836
+ },
3837
+ ws_specific: {
3838
+ type: 'boolean'
3836
3839
  }
3837
3840
  },
3838
3841
  required: ['workspace_id', 'path', 'is_secret', 'extra_perms']
@@ -3892,6 +3895,9 @@ export const $CreateVariable = {
3892
3895
  items: {
3893
3896
  type: 'string'
3894
3897
  }
3898
+ },
3899
+ ws_specific: {
3900
+ type: 'boolean'
3895
3901
  }
3896
3902
  },
3897
3903
  required: ['path', 'value', 'is_secret', 'description']
@@ -3920,6 +3926,9 @@ export const $EditVariable = {
3920
3926
  items: {
3921
3927
  type: 'string'
3922
3928
  }
3929
+ },
3930
+ ws_specific: {
3931
+ type: 'boolean'
3923
3932
  }
3924
3933
  }
3925
3934
  };
@@ -4246,6 +4255,9 @@ export const $CreateResource = {
4246
4255
  items: {
4247
4256
  type: 'string'
4248
4257
  }
4258
+ },
4259
+ ws_specific: {
4260
+ type: 'boolean'
4249
4261
  }
4250
4262
  },
4251
4263
  required: ['path', 'value', 'resource_type']
@@ -4271,6 +4283,9 @@ export const $EditResource = {
4271
4283
  items: {
4272
4284
  type: 'string'
4273
4285
  }
4286
+ },
4287
+ ws_specific: {
4288
+ type: 'boolean'
4274
4289
  }
4275
4290
  }
4276
4291
  };
@@ -4311,6 +4326,9 @@ export const $Resource = {
4311
4326
  items: {
4312
4327
  type: 'string'
4313
4328
  }
4329
+ },
4330
+ ws_specific: {
4331
+ type: 'boolean'
4314
4332
  }
4315
4333
  },
4316
4334
  required: ['path', 'resource_type', 'is_oauth']
@@ -4367,6 +4385,9 @@ export const $ListableResource = {
4367
4385
  items: {
4368
4386
  type: 'string'
4369
4387
  }
4388
+ },
4389
+ ws_specific: {
4390
+ type: 'boolean'
4370
4391
  }
4371
4392
  },
4372
4393
  required: ['path', 'resource_type', 'is_oauth', 'is_linked', 'is_refreshed']
@@ -4856,7 +4877,7 @@ export const $EditSchedule = {
4856
4877
  export const $JobTriggerKind = {
4857
4878
  description: 'job trigger kind (schedule, http, websocket...)',
4858
4879
  type: 'string',
4859
- enum: ['webhook', 'default_email', 'email', 'schedule', 'http', 'websocket', 'postgres', 'kafka', 'nats', 'mqtt', 'sqs', 'gcp', 'azure', 'google', 'github']
4880
+ enum: ['webhook', 'default_email', 'email', 'schedule', 'http', 'websocket', 'postgres', 'kafka', 'nats', 'mqtt', 'sqs', 'gcp', 'azure', 'google', 'github', 'asset']
4860
4881
  };
4861
4882
  export const $TriggerMode = {
4862
4883
  description: 'job trigger mode',
@@ -9337,7 +9358,7 @@ export const $WorkspaceItemDiff = {
9337
9358
  properties: {
9338
9359
  kind: {
9339
9360
  type: 'string',
9340
- enum: ['script', 'flow', 'app', 'raw_app', 'resource', 'variable', 'resource_type'],
9361
+ enum: ['script', 'flow', 'app', 'raw_app', 'resource', 'variable', 'resource_type', 'folder', 'schedule', 'http_trigger', 'websocket_trigger', 'kafka_trigger', 'nats_trigger', 'postgres_trigger', 'mqtt_trigger', 'sqs_trigger', 'gcp_trigger', 'azure_trigger', 'email_trigger'],
9341
9362
  description: 'Type of the item'
9342
9363
  },
9343
9364
  path: {
@@ -9368,7 +9389,7 @@ export const $WorkspaceItemDiff = {
9368
9389
  };
9369
9390
  export const $CompareSummary = {
9370
9391
  type: 'object',
9371
- required: ['total_diffs', 'total_ahead', 'total_behind', 'scripts_changed', 'flows_changed', 'apps_changed', 'resources_changed', 'variables_changed', 'resource_types_changed', 'folders_changed', 'conflicts'],
9392
+ required: ['total_diffs', 'total_ahead', 'total_behind', 'scripts_changed', 'flows_changed', 'apps_changed', 'resources_changed', 'variables_changed', 'resource_types_changed', 'folders_changed', 'schedules_changed', 'triggers_changed', 'conflicts'],
9372
9393
  properties: {
9373
9394
  total_diffs: {
9374
9395
  type: 'integer',
@@ -9410,6 +9431,14 @@ export const $CompareSummary = {
9410
9431
  type: 'integer',
9411
9432
  description: 'Number of folders with differences'
9412
9433
  },
9434
+ schedules_changed: {
9435
+ type: 'integer',
9436
+ description: 'Number of schedules with differences'
9437
+ },
9438
+ triggers_changed: {
9439
+ type: 'integer',
9440
+ description: 'Number of triggers with differences (sum across all trigger kinds)'
9441
+ },
9413
9442
  conflicts: {
9414
9443
  type: 'integer',
9415
9444
  description: 'Number of items that are both ahead and behind (conflicts)'