windmill-components 1.511.0 → 1.522.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 (236) hide show
  1. package/package/components/AppConnectInner.svelte.d.ts +1 -1
  2. package/package/components/ArgInput.svelte +56 -18
  3. package/package/components/ArgInput.svelte.d.ts +2 -10
  4. package/package/components/AssignableTagsInner.svelte +5 -0
  5. package/package/components/AuthSettings.svelte +4 -2
  6. package/package/components/AuthSettings.svelte.d.ts +1 -0
  7. package/package/components/DBManagerDrawer.svelte +154 -151
  8. package/package/components/DBManagerDrawer.svelte.d.ts +2 -2
  9. package/package/components/DBTable.svelte +3 -3
  10. package/package/components/DBTable.svelte.d.ts +1 -0
  11. package/package/components/DBTableEditor.svelte +7 -7
  12. package/package/components/DBTableEditor.svelte.d.ts +1 -1
  13. package/package/components/DeployWorkspace.svelte +1 -1
  14. package/package/components/DisplayResult.svelte +34 -8
  15. package/package/components/DisplayResult.svelte.d.ts +4 -1
  16. package/package/components/DynSelect.svelte +58 -34
  17. package/package/components/DynSelect.svelte.d.ts +3 -11
  18. package/package/components/EditableSchemaForm.svelte +126 -6
  19. package/package/components/EditableSchemaForm.svelte.d.ts +5 -1
  20. package/package/components/Editor.svelte +1 -1
  21. package/package/components/EditorBar.svelte +82 -4
  22. package/package/components/ErrorOrRecoveryHandler.svelte +76 -8
  23. package/package/components/ErrorOrRecoveryHandler.svelte.d.ts +2 -1
  24. package/package/components/ExploreAssetButton.svelte +14 -4
  25. package/package/components/ExploreAssetButton.svelte.d.ts +1 -0
  26. package/package/components/FlowJobResult.svelte +3 -3
  27. package/package/components/FlowJobResult.svelte.d.ts +1 -0
  28. package/package/components/FlowPreviewContent.svelte +9 -0
  29. package/package/components/FlowPreviewContent.svelte.d.ts +3 -0
  30. package/package/components/FlowPreviewResult.svelte +4 -1
  31. package/package/components/FlowPreviewResult.svelte.d.ts +1 -0
  32. package/package/components/FlowStatusViewer.svelte +2 -1
  33. package/package/components/FlowStatusViewer.svelte.d.ts +3 -0
  34. package/package/components/FlowStatusViewerInner.svelte +23 -3
  35. package/package/components/FlowStatusViewerInner.svelte.d.ts +10 -1
  36. package/package/components/FolderEditor.svelte +1 -1
  37. package/package/components/GitDiffPreview.svelte +14 -18
  38. package/package/components/GitDiffPreview.svelte.d.ts +2 -8
  39. package/package/components/GitHubAppIntegration.svelte +3 -1
  40. package/package/components/IdEditorInput.svelte +25 -22
  41. package/package/components/IdEditorInput.svelte.d.ts +11 -23
  42. package/package/components/InstanceSetting.svelte +7 -2
  43. package/package/components/InstanceSettings.svelte +1 -0
  44. package/package/components/JobLoader.svelte +48 -5
  45. package/package/components/JobLoader.svelte.d.ts +7 -2
  46. package/package/components/Login.svelte +8 -2
  47. package/package/components/MemoryFootprintViewer.svelte +1 -1
  48. package/package/components/ModulePreviewResultViewer.svelte +2 -2
  49. package/package/components/MoveDrawer.svelte.d.ts +2 -2
  50. package/package/components/NextcloudSetting.svelte +84 -0
  51. package/package/components/NextcloudSetting.svelte.d.ts +7 -0
  52. package/package/components/ObjectResourceInput.svelte +3 -2
  53. package/package/components/ObjectResourceInput.svelte.d.ts +1 -0
  54. package/package/components/ParqetCsvTableRenderer.svelte +1 -1
  55. package/package/components/ResourceEditor.svelte +1 -1
  56. package/package/components/ResourcePicker.svelte +8 -1
  57. package/package/components/ResourcePicker.svelte.d.ts +1 -0
  58. package/package/components/ResultStreamDisplay.svelte +5 -0
  59. package/package/components/ResultStreamDisplay.svelte.d.ts +5 -0
  60. package/package/components/RunForm.svelte +9 -1
  61. package/package/components/SchemaForm.svelte +2 -2
  62. package/package/components/SchemaForm.svelte.d.ts +2 -10
  63. package/package/components/ScriptBuilder.svelte +13 -8
  64. package/package/components/ScriptBuilder.svelte.d.ts +1 -1
  65. package/package/components/ScriptEditor.svelte.d.ts +1 -1
  66. package/package/components/ScriptWrapper.svelte +1 -1
  67. package/package/components/ShareModal.svelte.d.ts +1 -1
  68. package/package/components/SimpleAgTable.svelte +2 -0
  69. package/package/components/SimpleAgTable.svelte.d.ts +2 -0
  70. package/package/components/SqlRepl.svelte +21 -7
  71. package/package/components/SqlRepl.svelte.d.ts +2 -2
  72. package/package/components/StringTypeNarrowing.svelte.d.ts +1 -1
  73. package/package/components/WorkerTagSelect.svelte +70 -1
  74. package/package/components/apps/components/display/AppDisplayComponent.svelte +13 -1
  75. package/package/components/apps/components/display/AppText.svelte +2 -2
  76. package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +8 -1
  77. package/package/components/apps/components/display/dbtable/InsertRow.svelte +5 -4
  78. package/package/components/apps/components/display/dbtable/queries/count.js +11 -1
  79. package/package/components/apps/components/display/dbtable/queries/createTable.d.ts +1 -1
  80. package/package/components/apps/components/display/dbtable/queries/createTable.js +3 -3
  81. package/package/components/apps/components/display/dbtable/queries/delete.js +7 -0
  82. package/package/components/apps/components/display/dbtable/queries/insert.js +2 -0
  83. package/package/components/apps/components/display/dbtable/queries/select.js +14 -0
  84. package/package/components/apps/components/display/dbtable/queries/update.js +7 -0
  85. package/package/components/apps/components/display/dbtable/utils.d.ts +6 -5
  86. package/package/components/apps/components/display/dbtable/utils.js +52 -28
  87. package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +1 -1
  88. package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +1 -0
  89. package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte.d.ts +1 -0
  90. package/package/components/apps/components/display/table/AppAggridTable.svelte +5 -4
  91. package/package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +1 -0
  92. package/package/components/apps/components/display/table/utils.js +7 -4
  93. package/package/components/apps/components/helpers/HiddenComponent.svelte +2 -2
  94. package/package/components/apps/components/helpers/RunnableComponent.svelte +4 -1
  95. package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +2 -1
  96. package/package/components/apps/components/inputs/AppS3FileInput.svelte +2 -2
  97. package/package/components/apps/components/layout/AppDecisionTree.svelte +1 -1
  98. package/package/components/apps/components/layout/AppStepper.svelte +1 -1
  99. package/package/components/apps/components/layout/AppTabs.svelte +1 -1
  100. package/package/components/apps/editor/AppEditorHeader.svelte +13 -2
  101. package/package/components/apps/editor/GridViewer.svelte +1 -0
  102. package/package/components/apps/editor/RunnableJobPanelInner.svelte +2 -1
  103. package/package/components/apps/editor/contextPanel/components/IdEditor.svelte +7 -7
  104. package/package/components/apps/editor/contextPanel/components/IdEditor.svelte.d.ts +7 -19
  105. package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +8 -12
  106. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +1 -1
  107. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +1 -1
  108. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +1 -1
  109. package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +3 -3
  110. package/package/components/apps/editor/settingsPanel/decisionTree/DecisionTreePreview.svelte +1 -3
  111. package/package/components/assets/AssetsDropdownButton.svelte +1 -1
  112. package/package/components/assets/JobAssetsViewer.svelte +2 -2
  113. package/package/components/assets/lib.js +4 -0
  114. package/package/components/auditLogs/AuditLogsFilters.svelte +7 -9
  115. package/package/components/common/button/Button.svelte +4 -3
  116. package/package/components/common/button/Button.svelte.d.ts +1 -0
  117. package/package/components/common/confirmationModal/ConfirmationModal.svelte +6 -5
  118. package/package/components/common/confirmationModal/ConfirmationModal.svelte.d.ts +6 -11
  119. package/package/components/common/confirmationModal/asyncConfirmationModal.svelte.d.ts +26 -0
  120. package/package/components/common/confirmationModal/asyncConfirmationModal.svelte.js +50 -0
  121. package/package/components/common/modal/Modal.svelte +2 -5
  122. package/package/components/common/tabs/TabsV2.svelte +2 -1
  123. package/package/components/common/tabs/TabsV2.svelte.d.ts +1 -0
  124. package/package/components/copilot/chat/AIChatManager.svelte.js +61 -7
  125. package/package/components/copilot/chat/ContextTextarea.svelte +1 -1
  126. package/package/components/copilot/chat/script/core.js +28 -29
  127. package/package/components/copilot/chat/shared.d.ts +1 -1
  128. package/package/components/copilot/chat/shared.js +8 -2
  129. package/package/components/custom_ui.d.ts +3 -0
  130. package/package/components/dbOps.d.ts +20 -8
  131. package/package/components/dbOps.js +85 -40
  132. package/package/components/details/DetailPageHeader.svelte +0 -2
  133. package/package/components/flows/content/FlowInput.svelte +5 -0
  134. package/package/components/flows/content/FlowModuleComponent.svelte +1 -0
  135. package/package/components/flows/content/FlowModuleScript.svelte +0 -1
  136. package/package/components/flows/idUtils.js +2 -1
  137. package/package/components/flows/map/FlowModuleSchemaItem.svelte +3 -3
  138. package/package/components/flows/map/FlowModuleSchemaMap.svelte +5 -0
  139. package/package/components/flows/map/InsertModuleButton.svelte +4 -1
  140. package/package/components/flows/propPicker/OutputBadge.svelte +5 -1
  141. package/package/components/flows/propPicker/OutputPickerInner.svelte +9 -5
  142. package/package/components/flows/propPicker/OutputPickerInner.svelte.d.ts +6 -2
  143. package/package/components/flows/propPicker/StepHistory.svelte +4 -1
  144. package/package/components/git_sync/DetectionFlow.svelte +202 -0
  145. package/package/components/git_sync/DetectionFlow.svelte.d.ts +6 -0
  146. package/package/components/git_sync/GitSyncContext.svelte.d.ts +82 -0
  147. package/package/components/git_sync/GitSyncContext.svelte.js +461 -0
  148. package/package/components/git_sync/GitSyncModalManager.svelte +99 -0
  149. package/package/components/git_sync/GitSyncModalManager.svelte.d.ts +18 -0
  150. package/package/components/git_sync/GitSyncRepositoryCard.svelte +339 -0
  151. package/package/components/git_sync/GitSyncRepositoryCard.svelte.d.ts +6 -0
  152. package/package/components/git_sync/GitSyncRepositoryList.svelte +17 -0
  153. package/package/components/git_sync/GitSyncRepositoryList.svelte.d.ts +18 -0
  154. package/package/components/git_sync/GitSyncSection.svelte +89 -0
  155. package/package/components/git_sync/GitSyncSection.svelte.d.ts +3 -0
  156. package/package/components/git_sync/GitSyncSuccessModal.svelte +58 -0
  157. package/package/components/git_sync/GitSyncSuccessModal.svelte.d.ts +7 -0
  158. package/package/components/git_sync/PullWorkspaceModal.svelte +575 -0
  159. package/package/components/git_sync/PullWorkspaceModal.svelte.d.ts +15 -0
  160. package/package/components/git_sync/PushWorkspaceModal.svelte +320 -0
  161. package/package/components/git_sync/PushWorkspaceModal.svelte.d.ts +12 -0
  162. package/package/components/graph/FlowGraphV2.svelte +5 -1
  163. package/package/components/graph/graphBuilder.svelte.js +1 -1
  164. package/package/components/graph/renderers/nodes/AssetNode.svelte +4 -4
  165. package/package/components/icons/AssetDucklakeIcon.svelte +28 -0
  166. package/package/components/icons/AssetDucklakeIcon.svelte.d.ts +9 -0
  167. package/package/components/icons/AssetGenericIcon.svelte +3 -0
  168. package/package/components/icons/DucklakeIcon.svelte +18 -0
  169. package/package/components/icons/DucklakeIcon.svelte.d.ts +6 -0
  170. package/package/components/instanceSettings.js +11 -3
  171. package/package/components/runs/JobPreview.svelte +2 -2
  172. package/package/components/runs/NoWorkerWithTagWarning.svelte +3 -3
  173. package/package/components/runs/RunsFilter.svelte.d.ts +1 -1
  174. package/package/components/schema/FlowPropertyEditor.svelte +3 -2
  175. package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -1
  176. package/package/components/schema/PropertyEditor.svelte +0 -2
  177. package/package/components/schema/PropertyEditor.svelte.d.ts +1 -1
  178. package/package/components/schema/SchemaFormDND.svelte +2 -1
  179. package/package/components/schema/SchemaFormDND.svelte.d.ts +2 -0
  180. package/package/components/scriptEditor/LogPanel.svelte +5 -3
  181. package/package/components/scriptEditor/LogPanel.svelte.d.ts +5 -1
  182. package/package/components/select/Select.svelte +7 -4
  183. package/package/components/select/Select.svelte.d.ts +5 -0
  184. package/package/components/select/SelectDropdown.svelte +2 -1
  185. package/package/components/select/SelectDropdown.svelte.d.ts +3 -0
  186. package/package/components/sidebar/changelogs.js +5 -0
  187. package/package/components/table/AutoDataTable.svelte +6 -4
  188. package/package/components/table/AutoDataTable.svelte.d.ts +1 -0
  189. package/package/components/table/DataTable.svelte +12 -10
  190. package/package/components/table/DataTable.svelte.d.ts +1 -0
  191. package/package/components/triggers/TriggerRetriesAndErrorHandler.svelte.d.ts +2 -2
  192. package/package/components/triggers/gcp/GcpTriggerEditorConfigSection.svelte +1 -1
  193. package/package/components/triggers/gcp/GcpTriggerEditorConfigSection.svelte.d.ts +2 -1
  194. package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +50 -11
  195. package/package/components/triggers/gcp/utils.js +1 -0
  196. package/package/components/triggers/http/utils.js +1 -1
  197. package/package/components/triggers/kafka/utils.js +1 -1
  198. package/package/components/triggers/mqtt/utils.js +1 -1
  199. package/package/components/triggers/nats/utils.js +1 -1
  200. package/package/components/triggers/postgres/utils.js +1 -1
  201. package/package/components/triggers/sqs/utils.js +1 -1
  202. package/package/components/triggers/utils.js +2 -1
  203. package/package/components/triggers/webhook/WebhooksConfigSection.svelte +24 -26
  204. package/package/components/triggers/webhook/WebhooksPanel.svelte +1 -15
  205. package/package/components/triggers/websocket/utils.js +1 -1
  206. package/package/components/workspaceSettings/AISettings.svelte +52 -36
  207. package/package/components/workspaceSettings/DucklakeSettings.svelte +321 -0
  208. package/package/components/workspaceSettings/DucklakeSettings.svelte.d.ts +23 -0
  209. package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +122 -499
  210. package/package/components/workspaceSettings/GitSyncFilterSettings.svelte.d.ts +8 -10
  211. package/package/consts.js +2 -1
  212. package/package/gen/core/OpenAPI.js +1 -1
  213. package/package/gen/schemas.gen.d.ts +33 -24
  214. package/package/gen/schemas.gen.js +36 -27
  215. package/package/gen/services.gen.d.ts +19 -1
  216. package/package/gen/services.gen.js +38 -0
  217. package/package/gen/types.gen.d.ts +103 -9
  218. package/package/git-sync.d.ts +36 -0
  219. package/package/git-sync.js +1 -0
  220. package/package/hub.d.ts +1 -0
  221. package/package/hubPaths.json +5 -2
  222. package/package/infer.js +3 -2
  223. package/package/script_helpers.d.ts +2 -2
  224. package/package/script_helpers.js +29 -11
  225. package/package/services/JobManager.d.ts +28 -0
  226. package/package/services/JobManager.js +114 -0
  227. package/package/stores.d.ts +1 -1
  228. package/package/utils.d.ts +18 -1
  229. package/package/utils.js +55 -2
  230. package/package.json +13 -12
  231. package/package/components/InitGitRepoPopover.svelte +0 -410
  232. package/package/components/InitGitRepoPopover.svelte.d.ts +0 -13
  233. package/package/components/PullGitRepoPopover.svelte +0 -355
  234. package/package/components/PullGitRepoPopover.svelte.d.ts +0 -18
  235. package/package/inferArgSig.d.ts +0 -35
  236. package/package/inferArgSig.js +0 -191
@@ -1,355 +0,0 @@
1
- <script lang="ts">import { Button } from './common';
2
- import Popover from './meltComponents/Popover.svelte';
3
- import { Loader2, Eye, Save, CheckCircle2, XCircle, DownloadCloud, AlertTriangle, Terminal, ChevronDown, ChevronUp } from 'lucide-svelte';
4
- import { workspaceStore } from '../stores';
5
- import hubPaths from '../hubPaths.json';
6
- import { JobService } from '../gen';
7
- import { tryEvery } from '../utils';
8
- import { sendUserToast } from '../toast';
9
- import GitDiffPreview from './GitDiffPreview.svelte';
10
- import { page } from '$app/stores';
11
- let { gitRepoResourcePath, uiState, onFilterUpdate } = $props();
12
- let previewResult = $state(undefined);
13
- let isPreviewLoading = $state(false);
14
- let isPulling = $state(false);
15
- let pullGitRepoPopover = $state(null);
16
- let jobStatus = $state({
17
- id: null,
18
- status: undefined,
19
- type: 'preview'
20
- });
21
- let isCliInfoExpanded = $state(false);
22
- async function handleJobCompletion(jobId, workspace) {
23
- let success = false;
24
- await tryEvery({
25
- tryCode: async () => {
26
- const result = await JobService.getCompletedJob({
27
- workspace,
28
- id: jobId
29
- });
30
- success = !!result.success;
31
- },
32
- timeoutCode: async () => {
33
- try {
34
- await JobService.cancelQueuedJob({
35
- workspace,
36
- id: jobId,
37
- requestBody: {
38
- reason: 'Job timed out after 5s'
39
- }
40
- });
41
- }
42
- catch (err) {
43
- console.error(err);
44
- }
45
- },
46
- interval: 500,
47
- timeout: 10000
48
- });
49
- return success;
50
- }
51
- async function previewChanges() {
52
- const workspace = $workspaceStore;
53
- if (!workspace)
54
- return;
55
- console.log('Previewing changes for repo:', gitRepoResourcePath);
56
- isPreviewLoading = true;
57
- jobStatus = { id: null, status: undefined, type: 'preview' };
58
- try {
59
- // Always use the simplified JSON approach
60
- const jobId = await JobService.runScriptByPath({
61
- workspace,
62
- path: hubPaths.gitInitRepo,
63
- requestBody: {
64
- workspace_id: workspace,
65
- repo_url_resource_path: gitRepoResourcePath,
66
- dry_run: true,
67
- pull: true,
68
- only_wmill_yaml: false,
69
- settings_json: JSON.stringify(uiState)
70
- },
71
- skipPreprocessor: true
72
- });
73
- jobStatus = { id: jobId, status: 'running', type: 'preview' };
74
- const success = await handleJobCompletion(jobId, workspace);
75
- if (success) {
76
- const rawResult = await JobService.getCompletedJobResult({ workspace, id: jobId });
77
- console.log('Preview result:', rawResult);
78
- // Convert new CLI format to expected format
79
- const added = [];
80
- const deleted = [];
81
- const modified = [];
82
- if (rawResult &&
83
- rawResult.changes &&
84
- Array.isArray(rawResult.changes)) {
85
- for (const change of rawResult.changes) {
86
- if (change.type === 'added') {
87
- added.push(change.path);
88
- }
89
- else if (change.type === 'deleted') {
90
- deleted.push(change.path);
91
- }
92
- else if (change.type === 'modified') {
93
- modified.push(change.path);
94
- }
95
- }
96
- }
97
- // For full sync mode, just use the CLI results directly
98
- // The CLI already handles wmill.yaml changes with --include-wmill-yaml flag
99
- previewResult = { added, deleted, modified };
100
- jobStatus.status = 'success';
101
- }
102
- else {
103
- previewResult = undefined;
104
- jobStatus.status = 'failure';
105
- }
106
- }
107
- catch (error) {
108
- console.error('Failed to preview changes:', error);
109
- previewResult = undefined;
110
- jobStatus = {
111
- ...jobStatus,
112
- status: 'failure',
113
- error: error instanceof Error ? error.message : String(error)
114
- };
115
- }
116
- finally {
117
- isPreviewLoading = false;
118
- }
119
- }
120
- async function pullFromRepo() {
121
- const workspace = $workspaceStore;
122
- if (!workspace)
123
- return;
124
- console.log('Pulling from repo:', gitRepoResourcePath);
125
- isPulling = true;
126
- jobStatus = { id: null, status: undefined, type: 'pull' };
127
- try {
128
- // Use init git repo script with dry_run: false (actual pull operation)
129
- // The script will read wmill.yaml directly from the cloned repo, no need to pass settings
130
- const jobId = await JobService.runScriptByPath({
131
- workspace,
132
- path: hubPaths.gitInitRepo,
133
- requestBody: {
134
- workspace_id: workspace,
135
- repo_url_resource_path: gitRepoResourcePath,
136
- dry_run: false,
137
- branch_to_push: '',
138
- only_wmill_yaml: false,
139
- pull: true,
140
- settings_json: undefined // Let script use wmill.yaml from repo
141
- },
142
- skipPreprocessor: true
143
- });
144
- jobStatus = { id: jobId, status: 'running', type: 'pull' };
145
- const success = await handleJobCompletion(jobId, workspace);
146
- jobStatus.status = success ? 'success' : 'failure';
147
- if (success) {
148
- // Get the result which should contain the local git repo settings as JSON
149
- const result = (await JobService.getCompletedJobResult({ workspace, id: jobId }));
150
- console.log('Pull result:', result);
151
- // Apply the settings from the sync operation result to the UI
152
- if (result?.settings_json) {
153
- // Directly update the UI state with the JSON result - no YAML conversion needed!
154
- const settingsJson = result.settings_json;
155
- onFilterUpdate({
156
- include_path: settingsJson.include_path || ['f/**'],
157
- exclude_path: settingsJson.exclude_path || [],
158
- extra_include_path: settingsJson.extra_include_path || [],
159
- include_type: settingsJson.include_type || ['script', 'flow', 'app', 'folder']
160
- });
161
- sendUserToast('Successfully pulled workspace content from repository');
162
- // Reset popover state after successful pull
163
- previewResult = undefined;
164
- jobStatus = { id: null, status: undefined, type: 'preview' };
165
- pullGitRepoPopover?.close();
166
- }
167
- else {
168
- console.warn('No settings_json returned from pull operation');
169
- sendUserToast('Pull completed but could not update filter settings', true);
170
- }
171
- }
172
- }
173
- catch (error) {
174
- console.error('Failed to pull from repo:', error);
175
- jobStatus = {
176
- ...jobStatus,
177
- status: 'failure',
178
- error: error instanceof Error ? error.message : String(error)
179
- };
180
- }
181
- finally {
182
- isPulling = false;
183
- }
184
- }
185
- </script>
186
-
187
- <Popover
188
- bind:this={pullGitRepoPopover}
189
- floatingConfig={{
190
- placement: 'top-start',
191
- strategy: 'fixed',
192
- flip: false,
193
- shift: true
194
- }}
195
- contentClasses="p-4 w-1/3"
196
- >
197
- <svelte:fragment slot="trigger">
198
- <Button
199
- color="dark"
200
- size="sm"
201
- nonCaptureEvent
202
- onclick={pullGitRepoPopover?.open}
203
- startIcon={{ icon: DownloadCloud }}
204
- >
205
- Pull workspace from Git repo
206
- </Button>
207
- </svelte:fragment>
208
-
209
- <svelte:fragment slot="content" let:close>
210
- <div class="flex flex-col gap-4">
211
- <div class="flex flex-col gap-2">
212
- <h3 class="text-lg font-semibold">Pull workspace from Git repository</h3>
213
- <div class="prose max-w-none text-2xs text-tertiary">
214
- This action will pull all workspace objects from your Git repository according to the
215
- filters set in the Git repository wmill.yaml file and apply those filter settings to the
216
- workspace.
217
- <span class="text-orange-600 flex items-center gap-1">
218
- <AlertTriangle size={14} /> This will overwrite your current workspace content and Git sync
219
- filter settings with the content from the Git repository.
220
- </span>
221
-
222
- <!-- Collapsible CLI Info Section -->
223
- <div class="mt-2 border rounded-md">
224
- <button
225
- class="w-full flex items-center justify-between p-1.5 bg-surface-secondary hover:bg-surface-hover"
226
- onclick={() => (isCliInfoExpanded = !isCliInfoExpanded)}
227
- >
228
- <span class="font-medium flex items-center gap-2">
229
- <Terminal size={14} />
230
- Windmill CLI to push local files to Windmill
231
- </span>
232
- {#if isCliInfoExpanded}
233
- <ChevronUp size={16} />
234
- {:else}
235
- <ChevronDown size={16} />
236
- {/if}
237
- </button>
238
-
239
- {#if isCliInfoExpanded}
240
- <div class="p-1 bg-surface-tertiary">
241
- <div class="text-2xs mb-2">
242
- Not familiar with Windmill CLI? <a
243
- href="https://www.windmill.dev/docs/advanced/cli/sync"
244
- class="text-blue-500 hover:text-blue-600 underline"
245
- target="_blank"
246
- rel="noopener noreferrer">Check out the docs</a
247
- >
248
- </div>
249
- <div class="font-mono text-2xs">
250
- <pre class="overflow-auto max-h-60"
251
- ><code
252
- >npm install -g windmill-cli
253
- # Clone your git repository
254
- git clone $REPO_URL
255
- cd $REPO_NAME
256
- # Configure Windmill CLI
257
- wmill workspace add {$workspaceStore} {$workspaceStore} {`${$page.url.protocol}//${$page.url.hostname}/`}
258
- # Push the content to Windmill
259
- wmill sync push --yes
260
- # Optional: add --skip-secrets --skip-variables --skip-resources flags as needed</code
261
- ></pre
262
- >
263
- </div>
264
- </div>
265
- {/if}
266
- </div>
267
- </div>
268
- </div>
269
-
270
- {#if previewResult}
271
- <GitDiffPreview {previewResult} />
272
- {/if}
273
-
274
- {#if jobStatus.id}
275
- <div class="flex items-center gap-2 text-xs text-tertiary">
276
- {#if jobStatus.status === 'running'}
277
- <Loader2 class="animate-spin" size={14} />
278
- {:else if jobStatus.status === 'success'}
279
- <CheckCircle2 size={14} class="text-green-600" />
280
- {:else if jobStatus.status === 'failure'}
281
- <XCircle size={14} class="text-red-700" />
282
- {/if}
283
- {jobStatus.type === 'preview' ? 'Preview' : 'Pull'} job:
284
- <a
285
- target="_blank"
286
- class="underline"
287
- href={`/run/${jobStatus.id}?workspace=${$workspaceStore}`}
288
- >
289
- {jobStatus.id}
290
- </a>
291
- </div>
292
- {#if jobStatus.error}
293
- <div class="text-xs text-red-600">{jobStatus.error}</div>
294
- {/if}
295
- {/if}
296
-
297
- <div class="flex justify-between items-center mt-4">
298
- <Button
299
- color="light"
300
- size="xs"
301
- on:click={() => {
302
- previewResult = undefined
303
- jobStatus = { id: null, status: undefined, type: 'preview' }
304
- close()
305
- }}
306
- disabled={isPreviewLoading || isPulling}
307
- >
308
- Cancel
309
- </Button>
310
- <div class="flex gap-2">
311
- {#if !previewResult}
312
- <Button
313
- size="xs"
314
- on:click={previewChanges}
315
- disabled={isPreviewLoading || isPulling}
316
- startIcon={{
317
- icon: isPreviewLoading ? Loader2 : Eye,
318
- classes: isPreviewLoading ? 'animate-spin' : ''
319
- }}
320
- >
321
- Preview
322
- </Button>
323
- {:else}
324
- <Button
325
- size="xs"
326
- on:click={previewChanges}
327
- disabled={isPreviewLoading || isPulling}
328
- startIcon={{
329
- icon: isPreviewLoading ? Loader2 : Eye,
330
- classes: isPreviewLoading ? 'animate-spin' : ''
331
- }}
332
- title="Preview changes again"
333
- >
334
- Preview
335
- </Button>
336
- {#if previewResult.added?.length || previewResult.deleted?.length || previewResult.modified?.length}
337
- <Button
338
- color="red"
339
- size="xs"
340
- on:click={pullFromRepo}
341
- disabled={isPreviewLoading || isPulling}
342
- startIcon={{
343
- icon: isPulling ? Loader2 : Save,
344
- classes: isPulling ? 'animate-spin' : ''
345
- }}
346
- >
347
- {isPulling ? 'Pulling...' : 'Pull'}
348
- </Button>
349
- {/if}
350
- {/if}
351
- </div>
352
- </div>
353
- </div>
354
- </svelte:fragment>
355
- </Popover>
@@ -1,18 +0,0 @@
1
- type $$ComponentProps = {
2
- gitRepoResourcePath: string;
3
- uiState: {
4
- include_path: string[];
5
- exclude_path: string[];
6
- extra_include_path: string[];
7
- include_type: string[];
8
- };
9
- onFilterUpdate: (filters: {
10
- include_path: string[];
11
- exclude_path: string[];
12
- extra_include_path: string[];
13
- include_type: string[];
14
- }) => void;
15
- };
16
- declare const PullGitRepoPopover: import("svelte").Component<$$ComponentProps, {}, "">;
17
- type PullGitRepoPopover = ReturnType<typeof PullGitRepoPopover>;
18
- export default PullGitRepoPopover;
@@ -1,35 +0,0 @@
1
- import type { SchemaProperty } from './common';
2
- export declare function argSigToJsonSchemaType(t: string | {
3
- resource: string | null;
4
- } | {
5
- list: (string | {
6
- object: {
7
- key: string;
8
- typ: any;
9
- }[];
10
- }) | {
11
- str: any;
12
- } | {
13
- object: {
14
- key: string;
15
- typ: any;
16
- }[];
17
- } | null;
18
- } | {
19
- dynselect: string;
20
- } | {
21
- str: string[] | null;
22
- } | {
23
- object: {
24
- key: string;
25
- typ: any;
26
- }[];
27
- } | {
28
- oneof: {
29
- label: string;
30
- properties: {
31
- key: string;
32
- typ: any;
33
- }[];
34
- }[];
35
- }, oldS: SchemaProperty): void;
@@ -1,191 +0,0 @@
1
- export function argSigToJsonSchemaType(t, oldS) {
2
- const newS = { type: '' };
3
- if (t === 'int') {
4
- newS.type = 'integer';
5
- }
6
- else if (t === 'float') {
7
- newS.type = 'number';
8
- }
9
- else if (t === 'bool') {
10
- newS.type = 'boolean';
11
- }
12
- else if (t === 'email') {
13
- newS.type = 'string';
14
- newS.format = 'email';
15
- }
16
- else if (t === 'sql') {
17
- newS.type = 'string';
18
- newS.format = 'sql';
19
- }
20
- else if (t === 'yaml') {
21
- newS.type = 'string';
22
- newS.format = 'yaml';
23
- }
24
- else if (t === 'bytes') {
25
- newS.type = 'string';
26
- newS.contentEncoding = 'base64';
27
- newS.originalType = 'bytes';
28
- }
29
- else if (t === 'datetime') {
30
- newS.type = 'string';
31
- newS.format = 'date-time';
32
- }
33
- else if (typeof t !== 'string' && 'oneof' in t) {
34
- newS.type = 'object';
35
- if (t.oneof) {
36
- newS.oneOf = t.oneof.map((obj) => {
37
- const oldObjS = oldS.oneOf?.find((o) => o?.title === obj.label) ?? undefined;
38
- const properties = {};
39
- for (const prop of obj.properties) {
40
- if (oldObjS?.properties && prop.key in oldObjS?.properties) {
41
- properties[prop.key] = oldObjS?.properties[prop.key];
42
- }
43
- else {
44
- properties[prop.key] = { description: '', type: '' };
45
- }
46
- argSigToJsonSchemaType(prop.typ, properties[prop.key]);
47
- }
48
- return {
49
- type: 'object',
50
- title: obj.label,
51
- properties,
52
- order: oldObjS?.order ?? undefined
53
- };
54
- });
55
- }
56
- }
57
- else if (typeof t !== 'string' && `object` in t) {
58
- newS.type = 'object';
59
- if (t.object) {
60
- const properties = {};
61
- for (const prop of t.object) {
62
- if (oldS.properties && prop.key in oldS.properties) {
63
- properties[prop.key] = oldS.properties[prop.key];
64
- }
65
- else {
66
- properties[prop.key] = { description: '', type: '' };
67
- }
68
- argSigToJsonSchemaType(prop.typ, properties[prop.key]);
69
- }
70
- newS.properties = properties;
71
- }
72
- }
73
- else if (typeof t !== 'string' && `str` in t) {
74
- newS.type = 'string';
75
- if (t.str) {
76
- newS.originalType = 'enum';
77
- newS.enum = t.str;
78
- }
79
- else if (oldS.originalType == 'string' && oldS.enum) {
80
- newS.originalType = 'string';
81
- newS.enum = oldS.enum;
82
- }
83
- else {
84
- newS.originalType = 'string';
85
- newS.enum = undefined;
86
- }
87
- }
88
- else if (typeof t !== 'string' && `resource` in t) {
89
- newS.type = 'object';
90
- newS.format = `resource-${t.resource}`;
91
- }
92
- else if (typeof t !== 'string' && `dynselect` in t) {
93
- newS.type = 'object';
94
- newS.format = `dynselect-${t.dynselect}`;
95
- }
96
- else if (typeof t !== 'string' && `list` in t) {
97
- newS.type = 'array';
98
- if (t.list === 'int' || t.list === 'float') {
99
- newS.items = { type: 'number' };
100
- newS.originalType = 'number[]';
101
- }
102
- else if (t.list === 'bytes') {
103
- newS.items = { type: 'string', contentEncoding: 'base64' };
104
- newS.originalType = 'bytes[]';
105
- }
106
- else if (t.list && typeof t.list == 'object' && 'str' in t.list && t.list.str) {
107
- newS.items = { type: 'string', enum: t.list.str };
108
- newS.originalType = 'enum[]';
109
- }
110
- else if (t.list == 'string' || (t.list && typeof t.list == 'object' && 'str' in t.list)) {
111
- newS.items = { type: 'string', enum: oldS.items?.enum };
112
- newS.originalType = 'string[]';
113
- }
114
- else if (t.list && typeof t.list == 'object' && 'resource' in t.list && t.list.resource) {
115
- newS.items = {
116
- type: 'resource',
117
- resourceType: t.list.resource
118
- };
119
- newS.originalType = 'resource[]';
120
- }
121
- else if (t.list &&
122
- typeof t.list == 'object' &&
123
- 'object' in t.list &&
124
- t.list.object &&
125
- t.list.object.length > 0) {
126
- const properties = {};
127
- for (const prop of t.list.object) {
128
- properties[prop.key] = { description: '', type: '' };
129
- argSigToJsonSchemaType(prop.typ, properties[prop.key]);
130
- }
131
- newS.items = { type: 'object', properties: properties };
132
- newS.originalType = 'record[]';
133
- }
134
- else {
135
- newS.items = { type: 'object' };
136
- newS.originalType = 'object[]';
137
- }
138
- }
139
- else {
140
- newS.type = 'object';
141
- }
142
- const preservedFields = [
143
- 'description',
144
- 'pattern',
145
- 'min',
146
- 'max',
147
- 'currency',
148
- 'currencyLocale',
149
- 'multiselect',
150
- 'customErrorMessage',
151
- 'required',
152
- 'showExpr',
153
- 'password',
154
- 'order',
155
- 'dateFormat',
156
- 'title',
157
- 'placeholder'
158
- ];
159
- preservedFields.forEach((field) => {
160
- // @ts-ignore
161
- if (oldS[field] !== undefined) {
162
- // @ts-ignore
163
- newS[field] = oldS[field];
164
- }
165
- });
166
- if (oldS.type != newS.type) {
167
- for (const prop of Object.getOwnPropertyNames(newS)) {
168
- if (prop != 'description') {
169
- // @ts-ignore
170
- delete oldS[prop];
171
- }
172
- }
173
- }
174
- else if ((oldS.format == 'date' || oldS.format === 'date-time') && newS.format == 'string') {
175
- newS.format = oldS.format;
176
- }
177
- else if (newS.format == 'date-time' && oldS.format == 'date') {
178
- newS.format = 'date';
179
- }
180
- else if (oldS.items?.type != newS.items?.type) {
181
- delete oldS.items;
182
- }
183
- Object.assign(oldS, newS);
184
- // if (sameItems && savedItems != undefined && savedItems.enum != undefined) {
185
- // sendUserToast(JSON.stringify(savedItems))
186
- // oldS.items = savedItems
187
- // }
188
- if (oldS.format?.startsWith('resource-') && newS.type != 'object') {
189
- oldS.format = undefined;
190
- }
191
- }