windmill-components 1.542.5 → 1.550.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 (188) hide show
  1. package/package/common.d.ts +4 -1
  2. package/package/components/AIAgentLogViewer.svelte +1 -1
  3. package/package/components/ArgEnum.svelte +14 -5
  4. package/package/components/ArgInput.svelte +23 -15
  5. package/package/components/ArgInput.svelte.d.ts +1 -1
  6. package/package/components/ChannelSelector.svelte +92 -18
  7. package/package/components/ChannelSelector.svelte.d.ts +2 -0
  8. package/package/components/ConnectionSection.svelte +12 -1
  9. package/package/components/Dev.svelte +18 -5
  10. package/package/components/Dev.svelte.d.ts +23 -1
  11. package/package/components/DisplayResult.svelte +36 -23
  12. package/package/components/DropdownV2.svelte +8 -2
  13. package/package/components/DropdownV2.svelte.d.ts +1 -0
  14. package/package/components/DynamicInput.svelte +10 -10
  15. package/package/components/EditableSchemaForm.svelte +21 -7
  16. package/package/components/ErrorOrRecoveryHandler.svelte +14 -20
  17. package/package/components/FlowHistoryJobPicker.svelte +3 -0
  18. package/package/components/FlowHistoryJobPicker.svelte.d.ts +1 -0
  19. package/package/components/FlowJobResult.svelte +5 -5
  20. package/package/components/FlowLogRow.svelte +2 -2
  21. package/package/components/FlowLogViewer.svelte +228 -57
  22. package/package/components/FlowLogViewer.svelte.d.ts +16 -5
  23. package/package/components/FlowLogViewerWrapper.svelte +56 -3
  24. package/package/components/FlowLogViewerWrapper.svelte.d.ts +4 -3
  25. package/package/components/FlowLoopIterationPreview.svelte +4 -4
  26. package/package/components/FlowMetadata.svelte +3 -4
  27. package/package/components/FlowMetadata.svelte.d.ts +4 -18
  28. package/package/components/FlowPreviewContent.svelte +9 -3
  29. package/package/components/FlowPreviewContent.svelte.d.ts +1 -1
  30. package/package/components/FlowStatusViewer.svelte +62 -59
  31. package/package/components/FlowStatusViewer.svelte.d.ts +2 -2
  32. package/package/components/FlowStatusViewerInner.svelte +186 -94
  33. package/package/components/FlowStatusViewerInner.svelte.d.ts +10 -3
  34. package/package/components/FlowTimeline.svelte +110 -131
  35. package/package/components/FlowTimeline.svelte.d.ts +13 -4
  36. package/package/components/FlowTimelineBar.svelte +227 -0
  37. package/package/components/FlowTimelineBar.svelte.d.ts +24 -0
  38. package/package/components/InputTransformForm.svelte +119 -3
  39. package/package/components/InputTransformForm.svelte.d.ts +3 -0
  40. package/package/components/InputTransformSchemaForm.svelte +5 -1
  41. package/package/components/InputTransformSchemaForm.svelte.d.ts +2 -0
  42. package/package/components/InstanceSetting.svelte +17 -42
  43. package/package/components/InstanceSettings.svelte +12 -21
  44. package/package/components/JobArgs.svelte +15 -16
  45. package/package/components/JobArgs.svelte.d.ts +4 -18
  46. package/package/components/JobLoader.svelte +23 -42
  47. package/package/components/JobLoader.svelte.d.ts +2 -0
  48. package/package/components/JobStatus.svelte +1 -1
  49. package/package/components/JobStatus.svelte.d.ts +4 -18
  50. package/package/components/ModulePreviewResultViewer.svelte +1 -7
  51. package/package/components/NextcloudSetting.svelte +6 -1
  52. package/package/components/Password.svelte +7 -11
  53. package/package/components/Password.svelte.d.ts +5 -20
  54. package/package/components/PasswordArgInput.svelte +35 -15
  55. package/package/components/PasswordArgInput.svelte.d.ts +4 -18
  56. package/package/components/QueuePosition.svelte +6 -2
  57. package/package/components/RunForm.svelte +5 -14
  58. package/package/components/S3ArrayHelperButton.svelte +12 -0
  59. package/package/components/S3ArrayHelperButton.svelte.d.ts +8 -0
  60. package/package/components/ScriptEditor.svelte +5 -6
  61. package/package/components/StringTypeNarrowing.svelte +39 -24
  62. package/package/components/StringTypeNarrowing.svelte.d.ts +1 -1
  63. package/package/components/TeamSelector.svelte +83 -37
  64. package/package/components/TeamSelector.svelte.d.ts +0 -1
  65. package/package/components/apps/components/buttons/AppButton.svelte +11 -1
  66. package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +13 -4
  67. package/package/components/apps/components/display/table/SyncColumnDefs.svelte +2 -2
  68. package/package/components/apps/components/display/table/utils.js +1 -1
  69. package/package/components/apps/components/helpers/RefreshButton.svelte +5 -1
  70. package/package/components/apps/components/helpers/RunnableComponent.svelte +0 -2
  71. package/package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +1 -0
  72. package/package/components/apps/components/layout/AppTabs.svelte +116 -71
  73. package/package/components/apps/components/layout/AppTabs.svelte.d.ts +1 -0
  74. package/package/components/apps/editor/component/ComponentInner.svelte +1 -0
  75. package/package/components/apps/editor/component/components.d.ts +16 -1
  76. package/package/components/apps/editor/component/components.js +22 -2
  77. package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +2 -0
  78. package/package/components/apps/editor/settingsPanel/GridTab.svelte +19 -1
  79. package/package/components/apps/editor/settingsPanel/GridTab.svelte.d.ts +3 -1
  80. package/package/components/apps/editor/settingsPanel/GridTabHidden.svelte +52 -0
  81. package/package/components/apps/editor/settingsPanel/GridTabHidden.svelte.d.ts +9 -0
  82. package/package/components/auditLogs/AuditLogsFilters.svelte +6 -0
  83. package/package/components/auditLogs/AuditLogsTable.svelte +17 -7
  84. package/package/components/auditLogs/AuditLogsTable.svelte.d.ts +1 -0
  85. package/package/components/common/CloseButton.svelte +2 -2
  86. package/package/components/common/CloseButton.svelte.d.ts +1 -0
  87. package/package/components/common/layout/List.svelte +3 -7
  88. package/package/components/common/layout/List.svelte.d.ts +7 -29
  89. package/package/components/common/popup/PopupV2.svelte +8 -25
  90. package/package/components/common/popup/PopupV2.svelte.d.ts +4 -2
  91. package/package/components/common/table/ScriptRow.svelte +22 -2
  92. package/package/components/copilot/FlowCopilotInputsModal.svelte +26 -23
  93. package/package/components/copilot/chat/AIChatManager.svelte.js +3 -2
  94. package/package/components/copilot/chat/ProviderModelSelector.svelte +1 -1
  95. package/package/components/copilot/chat/flow/FlowAIChat.svelte +4 -2
  96. package/package/components/copilot/chat/script/core.d.ts +4 -4
  97. package/package/components/copilot/chat/script/core.js +93 -34
  98. package/package/components/copilot/lib.d.ts +1 -0
  99. package/package/components/copilot/lib.js +6 -3
  100. package/package/components/custom_ui.d.ts +1 -0
  101. package/package/components/flows/FlowProgressBar.svelte +16 -16
  102. package/package/components/flows/FlowProgressBar.svelte.d.ts +7 -22
  103. package/package/components/flows/content/FlowInputsQuick.svelte +3 -2
  104. package/package/components/flows/content/FlowInputsQuick.svelte.d.ts +1 -0
  105. package/package/components/flows/content/FlowModuleComponent.svelte +24 -1
  106. package/package/components/flows/flowInfers.js +34 -8
  107. package/package/components/flows/flowStore.d.ts +4 -1
  108. package/package/components/flows/map/FlowJobsMenu.svelte +3 -3
  109. package/package/components/flows/map/FlowJobsMenu.svelte.d.ts +1 -1
  110. package/package/components/flows/map/InsertModuleButton.svelte +4 -14
  111. package/package/components/flows/map/InsertModuleButton.svelte.d.ts +0 -1
  112. package/package/components/flows/map/InsertModuleInner.svelte +17 -20
  113. package/package/components/flows/map/MapItem.svelte +1 -1
  114. package/package/components/flows/pickers/PickHubScriptQuick.svelte +38 -52
  115. package/package/components/flows/pickers/PickHubScriptQuick.svelte.d.ts +1 -0
  116. package/package/components/flows/pickers/WorkspaceScriptPickerQuick.svelte +27 -15
  117. package/package/components/flows/pickers/WorkspaceScriptPickerQuick.svelte.d.ts +1 -0
  118. package/package/components/flows/propPicker/OutputPicker.svelte +2 -0
  119. package/package/components/git_sync/DetectionFlow.svelte +33 -44
  120. package/package/components/git_sync/DetectionFlow.svelte.d.ts +1 -0
  121. package/package/components/git_sync/GitSyncContext.svelte.d.ts +22 -0
  122. package/package/components/git_sync/GitSyncContext.svelte.js +145 -5
  123. package/package/components/git_sync/GitSyncModeDisplay.svelte +14 -0
  124. package/package/components/git_sync/GitSyncModeDisplay.svelte.d.ts +9 -0
  125. package/package/components/git_sync/GitSyncRepositoryCard.svelte +365 -253
  126. package/package/components/git_sync/GitSyncRepositoryCard.svelte.d.ts +10 -1
  127. package/package/components/git_sync/GitSyncSection.svelte +134 -14
  128. package/package/components/git_sync/PullWorkspaceModal.svelte +24 -32
  129. package/package/components/git_sync/PushWorkspaceModal.svelte +24 -32
  130. package/package/components/graph/model.d.ts +5 -5
  131. package/package/components/graph/renderers/edges/EmptyEdge.svelte +3 -10
  132. package/package/components/graph/renderers/edges/EmptyEdge.svelte.d.ts +4 -18
  133. package/package/components/graph/renderers/nodes/AIToolNode.svelte +2 -2
  134. package/package/components/graph/renderers/nodes/NewAIToolNode.svelte +5 -10
  135. package/package/components/home/ItemsList.svelte +1 -1
  136. package/package/components/jobs/JobProgressBar.svelte +27 -21
  137. package/package/components/jobs/JobProgressBar.svelte.d.ts +9 -24
  138. package/package/components/meltComponents/MenuSingleItem.svelte +3 -8
  139. package/package/components/meltComponents/MenuSingleItem.svelte.d.ts +0 -3
  140. package/package/components/meltComponents/Popover.svelte +3 -2
  141. package/package/components/meltComponents/Popover.svelte.d.ts +1 -0
  142. package/package/components/meltComponents/Tooltip.svelte +1 -1
  143. package/package/components/progressBar/ProgressBar.svelte +39 -53
  144. package/package/components/progressBar/ProgressBar.svelte.d.ts +11 -26
  145. package/package/components/runs/JobsLoader.svelte +1 -1
  146. package/package/components/runs/NoWorkerWithTagWarning.svelte +3 -3
  147. package/package/components/runs/NoWorkerWithTagWarning.svelte.d.ts +1 -1
  148. package/package/components/schema/AddPropertyV2.svelte +7 -4
  149. package/package/components/schema/PropertyEditor.svelte.d.ts +1 -1
  150. package/package/components/select/MultiSelect.svelte +2 -2
  151. package/package/components/select/MultiSelect.svelte.d.ts +1 -0
  152. package/package/components/settings/WorkspaceUserSettings.svelte +92 -1
  153. package/package/components/sidebar/MenuLink.svelte +2 -1
  154. package/package/components/sidebar/MenuLink.svelte.d.ts +1 -0
  155. package/package/components/sidebar/SidebarContent.svelte +27 -27
  156. package/package/components/table/Cell.svelte +7 -14
  157. package/package/components/table/Cell.svelte.d.ts +13 -35
  158. package/package/components/triggers/AddTriggersButton.svelte +1 -0
  159. package/package/components/triggers/gcp/GcpTriggerEditorConfigSection.svelte +1 -1
  160. package/package/components/triggers/gcp/GcpTriggerEditorConfigSection.svelte.d.ts +2 -1
  161. package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +28 -5
  162. package/package/components/triggers/gcp/utils.js +1 -0
  163. package/package/components/triggers/schedules/ScheduleEditorInner.svelte +1 -0
  164. package/package/components/triggers/webhook/WebhooksConfigSection.svelte +143 -63
  165. package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +22 -0
  166. package/package/components/triggers/websocket/utils.js +1 -0
  167. package/package/components/workspaceSettings/AISettings.svelte +8 -2
  168. package/package/components/workspaceSettings/AISettings.svelte.d.ts +2 -1
  169. package/package/components/workspaceSettings/ModelTokenLimits.svelte +165 -0
  170. package/package/components/workspaceSettings/ModelTokenLimits.svelte.d.ts +8 -0
  171. package/package/components/workspaceSettings/StorageSettings.svelte +123 -51
  172. package/package/gen/core/OpenAPI.js +1 -1
  173. package/package/gen/schemas.gen.d.ts +141 -16
  174. package/package/gen/schemas.gen.js +144 -16
  175. package/package/gen/services.gen.d.ts +62 -42
  176. package/package/gen/services.gen.js +131 -82
  177. package/package/gen/types.gen.d.ts +218 -144
  178. package/package/hubPaths.json +2 -1
  179. package/package/services/JobManager.js +10 -7
  180. package/package/stores.d.ts +1 -0
  181. package/package/stores.js +6 -3
  182. package/package/timelineCompute.svelte.d.ts +21 -0
  183. package/package/timelineCompute.svelte.js +113 -0
  184. package/package/utils.d.ts +15 -8
  185. package/package/utils.js +62 -12
  186. package/package/workspace_settings.d.ts +13 -8
  187. package/package/workspace_settings.js +46 -11
  188. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  import { getContext, setContext } from 'svelte';
2
- import { JobService, WorkspaceService } from '../../gen';
2
+ import { JobService, WorkspaceService, ResourceService } from '../../gen';
3
3
  import { jobManager } from '../../services/JobManager';
4
4
  import hubPaths from '../../hubPaths.json';
5
5
  const GIT_SYNC_CONTEXT_KEY = Symbol('git-sync-context');
@@ -20,8 +20,14 @@ export function createGitSyncContext(workspace) {
20
20
  repositories.forEach((repo) => {
21
21
  if (repo.isUnsavedConnection) {
22
22
  const currentPath = repo.git_repo_resource_path;
23
- if (repo._trackedPath && repo._trackedPath !== currentPath && repo.detectionState && repo.detectionState !== 'idle') {
24
- _resetRepoDetectionState(repo);
23
+ if (repo._trackedPath && repo._trackedPath !== currentPath) {
24
+ // Clear cached branch when resource path changes
25
+ repo._targetBranch = undefined;
26
+ // Reset detection state for any non-idle state (including errors)
27
+ if (repo.detectionState && repo.detectionState !== 'idle') {
28
+ // Cancel any running detection job by resetting immediately
29
+ _resetRepoDetectionState(repo);
30
+ }
25
31
  }
26
32
  repo._trackedPath = currentPath;
27
33
  }
@@ -187,6 +193,8 @@ export function createGitSyncContext(workspace) {
187
193
  repo.detectionError = undefined;
188
194
  repo.detectionJobId = undefined;
189
195
  repo.detectionJobStatus = undefined;
196
+ // Track the detection timestamp to avoid race conditions from old jobs
197
+ const detectionTimestamp = Date.now();
190
198
  try {
191
199
  const jobId = await JobService.runScriptByPath({
192
200
  workspace,
@@ -204,12 +212,17 @@ export function createGitSyncContext(workspace) {
204
212
  });
205
213
  repo.detectionJobId = jobId;
206
214
  repo.detectionJobStatus = 'running';
215
+ repo._detectionTimestamp = detectionTimestamp;
207
216
  // Use JobManager for polling - result will be the actual job response
208
217
  await jobManager.runWithProgress(() => Promise.resolve(jobId), {
209
218
  workspace,
210
- timeout: 30000,
211
- timeoutMessage: 'Detection job timed out after 30s',
219
+ timeout: 60000,
220
+ timeoutMessage: 'Detection job timed out after 60s',
212
221
  onProgress: (status) => {
222
+ // Only update state if this detection is still current
223
+ if (repo._detectionTimestamp !== detectionTimestamp) {
224
+ return;
225
+ }
213
226
  repo.detectionJobStatus = status.status;
214
227
  // Process successful detection result
215
228
  if (status.status === 'success' && status.result) {
@@ -239,6 +252,10 @@ export function createGitSyncContext(workspace) {
239
252
  });
240
253
  }
241
254
  catch (error) {
255
+ // Only set error if this detection is still current
256
+ if (repo._detectionTimestamp !== detectionTimestamp) {
257
+ return;
258
+ }
242
259
  repo.detectionState = 'error';
243
260
  repo.detectionError = error?.message || error?.toString() || 'Failed to detect repository';
244
261
  repo.detectionJobStatus = 'failure';
@@ -412,6 +429,119 @@ export function createGitSyncContext(workspace) {
412
429
  gitSyncTestJobs[idx].status = 'failure';
413
430
  }
414
431
  }
432
+ function getPrimarySyncRepository() {
433
+ const idx = repositories.findIndex(r => !r.use_individual_branch);
434
+ return idx !== -1 ? { repo: repositories[idx], idx } : null;
435
+ }
436
+ function getPrimaryPromotionRepository() {
437
+ const idx = repositories.findIndex(r => r.use_individual_branch);
438
+ return idx !== -1 ? { repo: repositories[idx], idx } : null;
439
+ }
440
+ function getSecondarySyncRepositories() {
441
+ const result = [];
442
+ let foundFirst = false;
443
+ repositories.forEach((repo, idx) => {
444
+ if (!repo.use_individual_branch) {
445
+ if (foundFirst) {
446
+ result.push({ repo, idx });
447
+ }
448
+ else {
449
+ foundFirst = true;
450
+ }
451
+ }
452
+ });
453
+ return result;
454
+ }
455
+ function getLegacyPromotionRepositories() {
456
+ const result = [];
457
+ let foundFirst = false;
458
+ repositories.forEach((repo, idx) => {
459
+ if (repo.use_individual_branch) {
460
+ if (foundFirst) {
461
+ result.push({ repo, idx });
462
+ }
463
+ else {
464
+ foundFirst = true;
465
+ }
466
+ }
467
+ });
468
+ return result;
469
+ }
470
+ async function removeRepositoryByPath(resourcePath) {
471
+ const idx = repositories.findIndex(r => r.git_repo_resource_path === resourcePath);
472
+ if (idx !== -1) {
473
+ await removeRepository(idx);
474
+ }
475
+ }
476
+ function addSyncRepository() {
477
+ repositories.push({
478
+ git_repo_resource_path: '',
479
+ script_path: hubPaths.gitSync,
480
+ use_individual_branch: false,
481
+ group_by_folder: false,
482
+ settings: {
483
+ include_path: ['f/**'],
484
+ exclude_path: [],
485
+ extra_include_path: [],
486
+ include_type: ['script', 'flow', 'app', 'folder']
487
+ },
488
+ exclude_types_override: [],
489
+ legacyImported: false,
490
+ isUnsavedConnection: true,
491
+ collapsed: false
492
+ });
493
+ gitSyncTestJobs.push({
494
+ jobId: '',
495
+ status: undefined
496
+ });
497
+ }
498
+ function addPromotionRepository() {
499
+ repositories.push({
500
+ git_repo_resource_path: '',
501
+ script_path: hubPaths.gitSync,
502
+ use_individual_branch: true,
503
+ group_by_folder: false,
504
+ settings: {
505
+ include_path: ['f/**'],
506
+ exclude_path: [],
507
+ extra_include_path: [],
508
+ include_type: ['script', 'flow', 'app', 'folder']
509
+ },
510
+ exclude_types_override: [],
511
+ legacyImported: false,
512
+ isUnsavedConnection: true,
513
+ collapsed: false
514
+ });
515
+ gitSyncTestJobs.push({
516
+ jobId: '',
517
+ status: undefined
518
+ });
519
+ }
520
+ // Helper to get target branch from git resource
521
+ async function getTargetBranch(repo) {
522
+ if (!repo.git_repo_resource_path) {
523
+ return 'main';
524
+ }
525
+ if (repo._targetBranch) {
526
+ return repo._targetBranch;
527
+ }
528
+ try {
529
+ const resource = await ResourceService.getResource({
530
+ workspace,
531
+ path: repo.git_repo_resource_path
532
+ });
533
+ // Extract branch from git resource value
534
+ const resourceValue = resource.value;
535
+ const targetBranch = resourceValue?.branch || 'main';
536
+ // Cache the result
537
+ repo._targetBranch = targetBranch;
538
+ return targetBranch;
539
+ }
540
+ catch (error) {
541
+ console.warn('Failed to fetch git resource for branch info:', error);
542
+ return 'main';
543
+ }
544
+ }
415
545
  // Return context object
416
546
  return {
417
547
  // State (read-only access)
@@ -430,7 +560,10 @@ export function createGitSyncContext(workspace) {
430
560
  get hasWorkspaceLevelSettings() { return hasWorkspaceLevelSettings; },
431
561
  // Methods
432
562
  addRepository,
563
+ addSyncRepository,
564
+ addPromotionRepository,
433
565
  removeRepository,
566
+ removeRepositoryByPath,
434
567
  getRepository,
435
568
  getValidation,
436
569
  revertRepository,
@@ -446,6 +579,13 @@ export function createGitSyncContext(workspace) {
446
579
  closeSuccessModal,
447
580
  loadSettings,
448
581
  saveRepository,
582
+ // Repository categorization methods
583
+ getPrimarySyncRepository,
584
+ getPrimaryPromotionRepository,
585
+ getSecondarySyncRepositories,
586
+ getLegacyPromotionRepositories,
587
+ // Helper methods
588
+ getTargetBranch,
449
589
  };
450
590
  }
451
591
  export function setGitSyncContext(workspace) {
@@ -0,0 +1,14 @@
1
+ <script lang="ts">let { mode, targetBranch, repository } = $props();
2
+ export {};
3
+ </script>
4
+
5
+ <div class="text-base">
6
+ {#if mode === 'promotion'}
7
+ <div><span class="font-bold">Promotion:</span> Creating branches whose promotion target is {targetBranch}</div>
8
+ {#if repository?.group_by_folder}
9
+ <div class="text-sm text-tertiary mt-1">Grouped by folder</div>
10
+ {/if}
11
+ {:else}
12
+ <div><span class="font-bold">Sync:</span> Syncing back to branch {targetBranch}</div>
13
+ {/if}
14
+ </div>
@@ -0,0 +1,9 @@
1
+ import type { GitSyncRepository } from './GitSyncContext.svelte';
2
+ type $$ComponentProps = {
3
+ mode?: 'sync' | 'promotion' | null;
4
+ targetBranch: string;
5
+ repository?: GitSyncRepository | null;
6
+ };
7
+ declare const GitSyncModeDisplay: import("svelte").Component<$$ComponentProps, {}, "">;
8
+ type GitSyncModeDisplay = ReturnType<typeof GitSyncModeDisplay>;
9
+ export default GitSyncModeDisplay;