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
@@ -0,0 +1,202 @@
1
+ <script lang="ts">import { FileSearch, Save, Loader2, CheckCircle2, XCircle } from 'lucide-svelte';
2
+ import { Button, Alert } from '../common';
3
+ import { getGitSyncContext } from './GitSyncContext.svelte';
4
+ import GitSyncFilterSettings from '../workspaceSettings/GitSyncFilterSettings.svelte';
5
+ import Toggle from '../Toggle.svelte';
6
+ import { sendUserToast } from '../../toast';
7
+ import { workspaceStore } from '../../stores';
8
+ let { idx } = $props();
9
+ const gitSyncContext = getGitSyncContext();
10
+ const repo = $derived(gitSyncContext.getRepository(idx));
11
+ async function handleDetect() {
12
+ try {
13
+ await gitSyncContext.detectRepository(idx);
14
+ }
15
+ catch (error) {
16
+ console.error('Detection failed:', error);
17
+ sendUserToast('Detection failed: ' + error.message, true);
18
+ }
19
+ }
20
+ async function handleInitialize() {
21
+ if (!repo || repo.detectionState !== 'no-wmill')
22
+ return;
23
+ try {
24
+ // Show push modal for initialization
25
+ gitSyncContext.showPushModal(idx);
26
+ }
27
+ catch (error) {
28
+ console.error('Failed to initialize repository:', error);
29
+ sendUserToast('Failed to initialize repository: ' + error.message, true);
30
+ }
31
+ }
32
+ async function handleSaveConnection() {
33
+ if (!repo || repo.detectionState !== 'has-wmill')
34
+ return;
35
+ try {
36
+ await gitSyncContext.saveRepository(idx);
37
+ sendUserToast('Git sync connection saved successfully');
38
+ }
39
+ catch (error) {
40
+ console.error('Failed to save connection:', error);
41
+ sendUserToast('Failed to save connection: ' + error.message, true);
42
+ }
43
+ }
44
+ </script>
45
+
46
+ {#if repo}
47
+ <div class="space-y-4">
48
+ {#if !repo.detectionState || repo.detectionState === 'idle'}
49
+ <!-- Step 1: Show toggles first, then check button -->
50
+ <div class="space-y-3">
51
+ <Toggle
52
+ disabled={!repo.git_repo_resource_path}
53
+ bind:checked={repo.use_individual_branch}
54
+ options={{
55
+ left: 'Sync mode',
56
+ leftTooltip: 'Changes will be committed directly to the branch',
57
+ right: 'Promotion mode',
58
+ rightTooltip: "Changes will be made to a new branch per deployed object (prefixed with 'wm_deploy/')"
59
+ }}
60
+ />
61
+
62
+ {#if repo.use_individual_branch}
63
+ <Toggle
64
+ disabled={!repo.git_repo_resource_path}
65
+ bind:checked={repo.group_by_folder}
66
+ options={{
67
+ right: 'Group all changes from same folder in the same branch',
68
+ rightTooltip: 'Instead of creating a branch per object, Windmill will create a branch per folder containing objects being deployed.'
69
+ }}
70
+ />
71
+ {/if}
72
+ </div>
73
+
74
+ <!-- Check repo settings button -->
75
+ <div class="flex justify-start">
76
+ <Button
77
+ color="primary"
78
+ variant="border"
79
+ size="sm"
80
+ onclick={handleDetect}
81
+ startIcon={{ icon: FileSearch }}
82
+ >
83
+ Check repo settings
84
+ </Button>
85
+ </div>
86
+ {:else if repo.detectionState === 'loading'}
87
+ <!-- Loading state -->
88
+ <div class="flex items-center gap-2">
89
+ <Loader2 size={16} class="animate-spin" />
90
+ <span class="text-sm">Checking repository...</span>
91
+ </div>
92
+ {:else if repo.detectionState === 'no-wmill'}
93
+ <!-- No wmill.yaml found - new repository -->
94
+ <Alert type="info" title="Uninitialized Windmill repository found" class="mb-2">
95
+ No git sync configuration found. Configure your sync settings below.
96
+ </Alert>
97
+
98
+ <GitSyncFilterSettings
99
+ git_repo_resource_path={repo.git_repo_resource_path}
100
+ bind:include_path={repo.settings.include_path}
101
+ bind:include_type={repo.settings.include_type}
102
+ bind:exclude_types_override={repo.exclude_types_override}
103
+ isLegacyRepo={false}
104
+ bind:excludes={repo.settings.exclude_path}
105
+ bind:extraIncludes={repo.settings.extra_include_path}
106
+ isInitialSetup={true}
107
+ requiresMigration={false}
108
+ useIndividualBranch={repo.use_individual_branch}
109
+ />
110
+
111
+ <!-- Display mode settings as prominent text -->
112
+ <div class="text-base">
113
+ {#if repo.use_individual_branch}
114
+ <div><span class="font-bold">Promotion:</span> Creating branches whose promotion target is main</div>
115
+ {#if repo.group_by_folder}
116
+ <div class="text-sm text-tertiary mt-1">Grouped by folder</div>
117
+ {/if}
118
+ {:else}
119
+ <div>Sync: <span class="font-bold">Syncing back to branch main</span></div>
120
+ {/if}
121
+ </div>
122
+
123
+ <!-- Initialize button -->
124
+ <div class="flex justify-start">
125
+ <Button
126
+ size="md"
127
+ onclick={handleInitialize}
128
+ startIcon={{ icon: Save }}
129
+ >
130
+ Initialize Git repository
131
+ </Button>
132
+ </div>
133
+ {:else if repo.detectionState === 'has-wmill'}
134
+ <!-- wmill.yaml found - existing repository -->
135
+ <Alert type="success" title="Existing Windmill repository found" class="mb-2">
136
+ Found existing git sync configuration. Settings loaded from repository.
137
+ </Alert>
138
+
139
+ <GitSyncFilterSettings
140
+ git_repo_resource_path={repo.git_repo_resource_path}
141
+ bind:include_path={repo.settings.include_path}
142
+ bind:include_type={repo.settings.include_type}
143
+ bind:exclude_types_override={repo.exclude_types_override}
144
+ isLegacyRepo={false}
145
+ bind:excludes={repo.settings.exclude_path}
146
+ bind:extraIncludes={repo.settings.extra_include_path}
147
+ isInitialSetup={false}
148
+ requiresMigration={false}
149
+ useIndividualBranch={repo.use_individual_branch}
150
+ />
151
+
152
+ <!-- Display mode settings as prominent text -->
153
+ <div class="text-base">
154
+ {#if repo.use_individual_branch}
155
+ <div><span class="font-bold">Promotion:</span> Creating branches whose promotion target is main</div>
156
+ {#if repo.group_by_folder}
157
+ <div class="text-sm text-tertiary mt-1">Grouped by folder</div>
158
+ {/if}
159
+ {:else}
160
+ <div>Sync: <span class="font-bold">Syncing back to branch main</span></div>
161
+ {/if}
162
+ </div>
163
+
164
+ <!-- Save connection button -->
165
+ <div class="flex justify-start">
166
+ <Button
167
+ size="md"
168
+ onclick={handleSaveConnection}
169
+ startIcon={{ icon: Save }}
170
+ >
171
+ Save connection
172
+ </Button>
173
+ </div>
174
+ {:else if repo.detectionState === 'error'}
175
+ <!-- Error state -->
176
+ <Alert type="error" title="Detection error" class="my-2">
177
+ {repo.detectionError || 'Failed to check repository'}
178
+ </Alert>
179
+ {/if}
180
+
181
+ <!-- Job status display -->
182
+ {#if repo.detectionJobId && (repo.detectionState === 'loading' || repo.detectionState === 'error')}
183
+ <div class="flex items-center gap-2 text-xs text-tertiary">
184
+ {#if repo.detectionJobStatus === 'running'}
185
+ <Loader2 class="animate-spin" size={14} />
186
+ {:else if repo.detectionJobStatus === 'success'}
187
+ <CheckCircle2 size={14} class="text-green-600" />
188
+ {:else if repo.detectionJobStatus === 'failure'}
189
+ <XCircle size={14} class="text-red-700" />
190
+ {/if}
191
+ Detection job:
192
+ <a
193
+ target="_blank"
194
+ class="underline"
195
+ href={`/run/${repo.detectionJobId}?workspace=${$workspaceStore}`}
196
+ >
197
+ {repo.detectionJobId}
198
+ </a>
199
+ </div>
200
+ {/if}
201
+ </div>
202
+ {/if}
@@ -0,0 +1,6 @@
1
+ type $$ComponentProps = {
2
+ idx: number;
3
+ };
4
+ declare const DetectionFlow: import("svelte").Component<$$ComponentProps, {}, "">;
5
+ type DetectionFlow = ReturnType<typeof DetectionFlow>;
6
+ export default DetectionFlow;
@@ -0,0 +1,82 @@
1
+ import type { GitRepositorySettings as BackendGitRepositorySettings, GitSyncObjectType } from '../../gen';
2
+ import type { SettingsObject } from '../../git-sync';
3
+ export type GitSyncRepository = BackendGitRepositorySettings & {
4
+ settings: SettingsObject;
5
+ exclude_types_override: GitSyncObjectType[];
6
+ legacyImported?: boolean;
7
+ isUnsavedConnection?: boolean;
8
+ collapsed?: boolean;
9
+ detectionState?: 'idle' | 'loading' | 'no-wmill' | 'has-wmill' | 'error';
10
+ extractedSettings?: SettingsObject;
11
+ detectionError?: string;
12
+ detectionJobId?: string;
13
+ detectionJobStatus?: 'running' | 'success' | 'failure';
14
+ _trackedPath?: string;
15
+ };
16
+ export type GitSyncTestJob = {
17
+ jobId: string;
18
+ status: 'running' | 'success' | 'failure' | undefined;
19
+ };
20
+ export type GitSyncSettings = {
21
+ repositories: GitSyncRepository[];
22
+ };
23
+ export type ModalState = {
24
+ push: {
25
+ idx: number;
26
+ repo: GitSyncRepository;
27
+ open: boolean;
28
+ } | null;
29
+ pull: {
30
+ idx: number;
31
+ repo: GitSyncRepository;
32
+ open: boolean;
33
+ settingsOnly?: boolean;
34
+ } | null;
35
+ success: {
36
+ open: boolean;
37
+ savedWithoutInit?: boolean;
38
+ } | null;
39
+ };
40
+ export type ValidationState = {
41
+ isValid: boolean;
42
+ isDuplicate: boolean;
43
+ hasChanges: boolean;
44
+ };
45
+ export declare function createGitSyncContext(workspace: string): {
46
+ readonly repositories: GitSyncRepository[];
47
+ readonly loading: boolean;
48
+ readonly activeModals: ModalState;
49
+ readonly gitSyncTestJobs: GitSyncTestJob[];
50
+ readonly initialRepositories: GitSyncRepository[];
51
+ readonly legacyWorkspaceIncludePath: string[];
52
+ readonly legacyWorkspaceIncludeType: GitSyncObjectType[];
53
+ readonly validationStates: {
54
+ isValid: boolean;
55
+ isDuplicate: boolean;
56
+ hasChanges: boolean;
57
+ }[];
58
+ readonly hasAnyChanges: boolean;
59
+ readonly allRepositoriesValid: boolean;
60
+ readonly hasUnsavedConnections: boolean;
61
+ readonly hasWorkspaceLevelSettings: boolean;
62
+ addRepository: () => void;
63
+ removeRepository: (idx: number) => Promise<void>;
64
+ getRepository: (idx: number) => GitSyncRepository;
65
+ getValidation: (idx: number) => ValidationState;
66
+ revertRepository: (idx: number) => void;
67
+ runTestJob: (idx: number) => Promise<void>;
68
+ resetDetectionState: (idx: number) => void;
69
+ detectRepository: (idx: number) => Promise<void>;
70
+ migrateLegacyRepository: (repo: GitSyncRepository) => GitSyncRepository;
71
+ showPushModal: (idx: number) => void;
72
+ showPullModal: (idx: number, settingsOnly?: boolean) => void;
73
+ closePushModal: () => void;
74
+ closePullModal: () => void;
75
+ showSuccessModal: (savedWithoutInit?: boolean) => void;
76
+ closeSuccessModal: () => void;
77
+ loadSettings: () => Promise<void>;
78
+ saveRepository: (idx: number, savedWithoutInit?: boolean) => Promise<void>;
79
+ };
80
+ export type GitSyncContextType = ReturnType<typeof createGitSyncContext>;
81
+ export declare function setGitSyncContext(workspace: string): GitSyncContextType;
82
+ export declare function getGitSyncContext(): GitSyncContextType;