windmill-components 1.542.4 → 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.
- package/package/common.d.ts +4 -1
- package/package/components/AIAgentLogViewer.svelte +1 -1
- package/package/components/ArgEnum.svelte +14 -5
- package/package/components/ArgInput.svelte +23 -15
- package/package/components/ArgInput.svelte.d.ts +1 -1
- package/package/components/ChannelSelector.svelte +92 -18
- package/package/components/ChannelSelector.svelte.d.ts +2 -0
- package/package/components/ConnectionSection.svelte +12 -1
- package/package/components/Dev.svelte +18 -5
- package/package/components/Dev.svelte.d.ts +23 -1
- package/package/components/DisplayResult.svelte +36 -23
- package/package/components/DropdownV2.svelte +8 -2
- package/package/components/DropdownV2.svelte.d.ts +1 -0
- package/package/components/DynamicInput.svelte +10 -10
- package/package/components/EditableSchemaForm.svelte +21 -7
- package/package/components/EditorSettings.svelte +11 -9
- package/package/components/ErrorOrRecoveryHandler.svelte +14 -20
- package/package/components/FlowHistoryJobPicker.svelte +3 -0
- package/package/components/FlowHistoryJobPicker.svelte.d.ts +1 -0
- package/package/components/FlowJobResult.svelte +5 -5
- package/package/components/FlowLogRow.svelte +2 -2
- package/package/components/FlowLogViewer.svelte +228 -57
- package/package/components/FlowLogViewer.svelte.d.ts +16 -5
- package/package/components/FlowLogViewerWrapper.svelte +56 -3
- package/package/components/FlowLogViewerWrapper.svelte.d.ts +4 -3
- package/package/components/FlowLoopIterationPreview.svelte +4 -4
- package/package/components/FlowMetadata.svelte +3 -4
- package/package/components/FlowMetadata.svelte.d.ts +4 -18
- package/package/components/FlowPreviewContent.svelte +9 -3
- package/package/components/FlowPreviewContent.svelte.d.ts +1 -1
- package/package/components/FlowStatusViewer.svelte +62 -59
- package/package/components/FlowStatusViewer.svelte.d.ts +2 -2
- package/package/components/FlowStatusViewerInner.svelte +186 -94
- package/package/components/FlowStatusViewerInner.svelte.d.ts +10 -3
- package/package/components/FlowTimeline.svelte +110 -131
- package/package/components/FlowTimeline.svelte.d.ts +13 -4
- package/package/components/FlowTimelineBar.svelte +227 -0
- package/package/components/FlowTimelineBar.svelte.d.ts +24 -0
- package/package/components/InputTransformForm.svelte +119 -3
- package/package/components/InputTransformForm.svelte.d.ts +3 -0
- package/package/components/InputTransformSchemaForm.svelte +5 -1
- package/package/components/InputTransformSchemaForm.svelte.d.ts +2 -0
- package/package/components/InstanceSetting.svelte +17 -42
- package/package/components/InstanceSettings.svelte +12 -21
- package/package/components/JobArgs.svelte +15 -16
- package/package/components/JobArgs.svelte.d.ts +4 -18
- package/package/components/JobLoader.svelte +23 -42
- package/package/components/JobLoader.svelte.d.ts +2 -0
- package/package/components/JobStatus.svelte +1 -1
- package/package/components/JobStatus.svelte.d.ts +4 -18
- package/package/components/ModulePreviewResultViewer.svelte +1 -7
- package/package/components/NextcloudSetting.svelte +6 -1
- package/package/components/Password.svelte +7 -11
- package/package/components/Password.svelte.d.ts +5 -20
- package/package/components/PasswordArgInput.svelte +35 -15
- package/package/components/PasswordArgInput.svelte.d.ts +4 -18
- package/package/components/QueuePosition.svelte +6 -2
- package/package/components/RunForm.svelte +5 -14
- package/package/components/S3ArrayHelperButton.svelte +12 -0
- package/package/components/S3ArrayHelperButton.svelte.d.ts +8 -0
- package/package/components/ScriptEditor.svelte +5 -6
- package/package/components/StringTypeNarrowing.svelte +39 -24
- package/package/components/StringTypeNarrowing.svelte.d.ts +1 -1
- package/package/components/TeamSelector.svelte +83 -37
- package/package/components/TeamSelector.svelte.d.ts +0 -1
- package/package/components/apps/components/buttons/AppButton.svelte +11 -1
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +13 -4
- package/package/components/apps/components/display/table/SyncColumnDefs.svelte +2 -2
- package/package/components/apps/components/display/table/utils.js +1 -1
- package/package/components/apps/components/helpers/RefreshButton.svelte +5 -1
- package/package/components/apps/components/helpers/RunnableComponent.svelte +0 -2
- package/package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +1 -0
- package/package/components/apps/components/layout/AppTabs.svelte +116 -71
- package/package/components/apps/components/layout/AppTabs.svelte.d.ts +1 -0
- package/package/components/apps/editor/component/ComponentInner.svelte +1 -0
- package/package/components/apps/editor/component/components.d.ts +16 -1
- package/package/components/apps/editor/component/components.js +22 -2
- package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +2 -0
- package/package/components/apps/editor/settingsPanel/GridTab.svelte +19 -1
- package/package/components/apps/editor/settingsPanel/GridTab.svelte.d.ts +3 -1
- package/package/components/apps/editor/settingsPanel/GridTabHidden.svelte +52 -0
- package/package/components/apps/editor/settingsPanel/GridTabHidden.svelte.d.ts +9 -0
- package/package/components/auditLogs/AuditLogsFilters.svelte +6 -0
- package/package/components/auditLogs/AuditLogsTable.svelte +17 -7
- package/package/components/auditLogs/AuditLogsTable.svelte.d.ts +1 -0
- package/package/components/common/CloseButton.svelte +2 -2
- package/package/components/common/CloseButton.svelte.d.ts +1 -0
- package/package/components/common/layout/List.svelte +3 -7
- package/package/components/common/layout/List.svelte.d.ts +7 -29
- package/package/components/common/popup/PopupV2.svelte +8 -25
- package/package/components/common/popup/PopupV2.svelte.d.ts +4 -2
- package/package/components/common/table/ScriptRow.svelte +22 -2
- package/package/components/copilot/FlowCopilotInputsModal.svelte +26 -23
- package/package/components/copilot/chat/AIChatManager.svelte.js +3 -2
- package/package/components/copilot/chat/ProviderModelSelector.svelte +1 -1
- package/package/components/copilot/chat/flow/FlowAIChat.svelte +4 -2
- package/package/components/copilot/chat/script/core.d.ts +4 -4
- package/package/components/copilot/chat/script/core.js +93 -34
- package/package/components/copilot/lib.d.ts +1 -0
- package/package/components/copilot/lib.js +6 -3
- package/package/components/custom_ui.d.ts +2 -0
- package/package/components/flows/FlowProgressBar.svelte +16 -16
- package/package/components/flows/FlowProgressBar.svelte.d.ts +7 -22
- package/package/components/flows/content/FlowInputsQuick.svelte +3 -2
- package/package/components/flows/content/FlowInputsQuick.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowModuleComponent.svelte +24 -1
- package/package/components/flows/flowInfers.js +34 -8
- package/package/components/flows/flowStore.d.ts +4 -1
- package/package/components/flows/map/FlowJobsMenu.svelte +3 -3
- package/package/components/flows/map/FlowJobsMenu.svelte.d.ts +1 -1
- package/package/components/flows/map/InsertModuleButton.svelte +4 -14
- package/package/components/flows/map/InsertModuleButton.svelte.d.ts +0 -1
- package/package/components/flows/map/InsertModuleInner.svelte +17 -20
- package/package/components/flows/map/MapItem.svelte +1 -1
- package/package/components/flows/pickers/PickHubScriptQuick.svelte +38 -52
- package/package/components/flows/pickers/PickHubScriptQuick.svelte.d.ts +1 -0
- package/package/components/flows/pickers/WorkspaceScriptPickerQuick.svelte +27 -15
- package/package/components/flows/pickers/WorkspaceScriptPickerQuick.svelte.d.ts +1 -0
- package/package/components/flows/propPicker/OutputPicker.svelte +2 -0
- package/package/components/git_sync/DetectionFlow.svelte +33 -44
- package/package/components/git_sync/DetectionFlow.svelte.d.ts +1 -0
- package/package/components/git_sync/GitSyncContext.svelte.d.ts +22 -0
- package/package/components/git_sync/GitSyncContext.svelte.js +145 -5
- package/package/components/git_sync/GitSyncModeDisplay.svelte +14 -0
- package/package/components/git_sync/GitSyncModeDisplay.svelte.d.ts +9 -0
- package/package/components/git_sync/GitSyncRepositoryCard.svelte +365 -253
- package/package/components/git_sync/GitSyncRepositoryCard.svelte.d.ts +10 -1
- package/package/components/git_sync/GitSyncSection.svelte +134 -14
- package/package/components/git_sync/PullWorkspaceModal.svelte +24 -32
- package/package/components/git_sync/PushWorkspaceModal.svelte +24 -32
- package/package/components/graph/model.d.ts +5 -5
- package/package/components/graph/renderers/edges/EmptyEdge.svelte +3 -10
- package/package/components/graph/renderers/edges/EmptyEdge.svelte.d.ts +4 -18
- package/package/components/graph/renderers/nodes/AIToolNode.svelte +2 -2
- package/package/components/graph/renderers/nodes/NewAIToolNode.svelte +5 -10
- package/package/components/home/ItemsList.svelte +1 -1
- package/package/components/jobs/JobProgressBar.svelte +27 -21
- package/package/components/jobs/JobProgressBar.svelte.d.ts +9 -24
- package/package/components/meltComponents/MenuSingleItem.svelte +3 -8
- package/package/components/meltComponents/MenuSingleItem.svelte.d.ts +0 -3
- package/package/components/meltComponents/Popover.svelte +3 -2
- package/package/components/meltComponents/Popover.svelte.d.ts +1 -0
- package/package/components/meltComponents/Tooltip.svelte +1 -1
- package/package/components/progressBar/ProgressBar.svelte +39 -53
- package/package/components/progressBar/ProgressBar.svelte.d.ts +11 -26
- package/package/components/runs/JobsLoader.svelte +1 -1
- package/package/components/runs/NoWorkerWithTagWarning.svelte +3 -3
- package/package/components/runs/NoWorkerWithTagWarning.svelte.d.ts +1 -1
- package/package/components/schema/AddPropertyV2.svelte +7 -4
- package/package/components/schema/PropertyEditor.svelte.d.ts +1 -1
- package/package/components/select/MultiSelect.svelte +2 -2
- package/package/components/select/MultiSelect.svelte.d.ts +1 -0
- package/package/components/settings/WorkspaceUserSettings.svelte +92 -1
- package/package/components/sidebar/MenuLink.svelte +2 -1
- package/package/components/sidebar/MenuLink.svelte.d.ts +1 -0
- package/package/components/sidebar/SidebarContent.svelte +27 -27
- package/package/components/table/Cell.svelte +7 -14
- package/package/components/table/Cell.svelte.d.ts +13 -35
- package/package/components/triggers/AddTriggersButton.svelte +1 -0
- package/package/components/triggers/gcp/GcpTriggerEditorConfigSection.svelte +1 -1
- package/package/components/triggers/gcp/GcpTriggerEditorConfigSection.svelte.d.ts +2 -1
- package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +28 -5
- package/package/components/triggers/gcp/utils.js +1 -0
- package/package/components/triggers/schedules/ScheduleEditorInner.svelte +1 -0
- package/package/components/triggers/webhook/WebhooksConfigSection.svelte +143 -63
- package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +22 -0
- package/package/components/triggers/websocket/utils.js +1 -0
- package/package/components/workspaceSettings/AISettings.svelte +8 -2
- package/package/components/workspaceSettings/AISettings.svelte.d.ts +2 -1
- package/package/components/workspaceSettings/ModelTokenLimits.svelte +165 -0
- package/package/components/workspaceSettings/ModelTokenLimits.svelte.d.ts +8 -0
- package/package/components/workspaceSettings/StorageSettings.svelte +123 -51
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +141 -16
- package/package/gen/schemas.gen.js +144 -16
- package/package/gen/services.gen.d.ts +62 -42
- package/package/gen/services.gen.js +131 -82
- package/package/gen/types.gen.d.ts +218 -144
- package/package/hubPaths.json +2 -1
- package/package/services/JobManager.js +10 -7
- package/package/stores.d.ts +1 -0
- package/package/stores.js +6 -3
- package/package/timelineCompute.svelte.d.ts +21 -0
- package/package/timelineCompute.svelte.js +113 -0
- package/package/utils.d.ts +15 -8
- package/package/utils.js +62 -12
- package/package/workspace_settings.d.ts +13 -8
- package/package/workspace_settings.js +46 -11
- package/package.json +2 -2
|
@@ -1,5 +1,14 @@
|
|
|
1
|
+
import type { GitSyncRepository } from './GitSyncContext.svelte';
|
|
1
2
|
type $$ComponentProps = {
|
|
2
|
-
idx
|
|
3
|
+
idx?: number | null;
|
|
4
|
+
isSecondary?: boolean;
|
|
5
|
+
isLegacy?: boolean;
|
|
6
|
+
variant?: 'primary-sync' | 'primary-promotion' | 'secondary' | 'legacy' | 'standard';
|
|
7
|
+
mode?: 'sync' | 'promotion' | null;
|
|
8
|
+
repository?: GitSyncRepository | null;
|
|
9
|
+
onAdd?: (() => void) | null;
|
|
10
|
+
isCollapsible?: boolean;
|
|
11
|
+
showEmptyState?: boolean;
|
|
3
12
|
};
|
|
4
13
|
declare const GitSyncRepositoryCard: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
5
14
|
type GitSyncRepositoryCard = ReturnType<typeof GitSyncRepositoryCard>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
<script lang="ts">import {
|
|
1
|
+
<script lang="ts">import { ExternalLink, ChevronDown, ChevronRight, Plus } from 'lucide-svelte';
|
|
2
2
|
import { Button, Alert } from '../common';
|
|
3
3
|
import Description from '../Description.svelte';
|
|
4
4
|
import { setGitSyncContext } from './GitSyncContext.svelte';
|
|
5
|
-
import
|
|
5
|
+
import GitSyncRepositoryCard from './GitSyncRepositoryCard.svelte';
|
|
6
6
|
import GitSyncModalManager from './GitSyncModalManager.svelte';
|
|
7
7
|
import { enterpriseLicense, workspaceStore } from '../../stores';
|
|
8
8
|
import { sendUserToast } from '../../toast';
|
|
@@ -23,6 +23,16 @@ $effect(() => {
|
|
|
23
23
|
});
|
|
24
24
|
}
|
|
25
25
|
});
|
|
26
|
+
// Derived state for repository categorization
|
|
27
|
+
const primarySync = $derived(gitSyncContext?.getPrimarySyncRepository() || null);
|
|
28
|
+
const primaryPromotion = $derived(gitSyncContext?.getPrimaryPromotionRepository() || null);
|
|
29
|
+
const secondarySync = $derived(gitSyncContext?.getSecondarySyncRepositories() || []);
|
|
30
|
+
const legacyPromotion = $derived(gitSyncContext?.getLegacyPromotionRepositories() || []);
|
|
31
|
+
// State for collapsible sections
|
|
32
|
+
let secondarySyncExpanded = $state(false);
|
|
33
|
+
let legacyPromotionExpanded = $state(false);
|
|
34
|
+
// Check if any secondary repositories are unsaved
|
|
35
|
+
const hasUnsavedSecondary = $derived(secondarySync.some(s => s.repo.isUnsavedConnection));
|
|
26
36
|
</script>
|
|
27
37
|
|
|
28
38
|
{#if !gitSyncContext}
|
|
@@ -68,19 +78,129 @@ $effect(() => {
|
|
|
68
78
|
</div>
|
|
69
79
|
<div class="pt-2"></div>
|
|
70
80
|
|
|
71
|
-
<!-- Repository
|
|
72
|
-
<
|
|
81
|
+
<!-- Primary Sync Repository -->
|
|
82
|
+
<div class="space-y-4">
|
|
83
|
+
<GitSyncRepositoryCard
|
|
84
|
+
variant="primary-sync"
|
|
85
|
+
mode="sync"
|
|
86
|
+
idx={primarySync?.idx ?? null}
|
|
87
|
+
repository={primarySync?.repo ?? null}
|
|
88
|
+
onAdd={() => gitSyncContext.addSyncRepository()}
|
|
89
|
+
isCollapsible={false}
|
|
90
|
+
showEmptyState={primarySync?.repo === null}
|
|
91
|
+
/>
|
|
73
92
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
93
|
+
<!-- Secondary Sync Repositories -->
|
|
94
|
+
{#if primarySync && !primarySync.repo?.isUnsavedConnection}
|
|
95
|
+
{#if secondarySync.length > 0 || secondarySyncExpanded}
|
|
96
|
+
<div class="mt-4">
|
|
97
|
+
<button
|
|
98
|
+
class="flex items-center gap-2 text-sm text-secondary hover:text-primary transition-colors"
|
|
99
|
+
onclick={() => (secondarySyncExpanded = !secondarySyncExpanded)}
|
|
100
|
+
>
|
|
101
|
+
{#if secondarySyncExpanded}
|
|
102
|
+
<ChevronDown size={16} />
|
|
103
|
+
{:else}
|
|
104
|
+
<ChevronRight size={16} />
|
|
105
|
+
{/if}
|
|
106
|
+
Secondary sync repositories ({secondarySync.length})
|
|
107
|
+
</button>
|
|
108
|
+
|
|
109
|
+
{#if secondarySyncExpanded}
|
|
110
|
+
<div class="mt-3 space-y-3">
|
|
111
|
+
{#if secondarySync.length === 0}
|
|
112
|
+
<div class="text-sm text-secondary italic">
|
|
113
|
+
No secondary sync repositories configured
|
|
114
|
+
</div>
|
|
115
|
+
{:else}
|
|
116
|
+
{#each secondarySync as { repo, idx } (repo.git_repo_resource_path)}
|
|
117
|
+
<div class="pl-4">
|
|
118
|
+
<GitSyncRepositoryCard
|
|
119
|
+
variant="secondary"
|
|
120
|
+
{idx}
|
|
121
|
+
isSecondary={true}
|
|
122
|
+
/>
|
|
123
|
+
</div>
|
|
124
|
+
{/each}
|
|
125
|
+
{/if}
|
|
126
|
+
|
|
127
|
+
{#if !hasUnsavedSecondary}
|
|
128
|
+
<div class="pl-4">
|
|
129
|
+
<Button
|
|
130
|
+
size="xs"
|
|
131
|
+
color="light"
|
|
132
|
+
variant="border"
|
|
133
|
+
startIcon={{ icon: Plus }}
|
|
134
|
+
onclick={() => gitSyncContext.addSyncRepository()}
|
|
135
|
+
>
|
|
136
|
+
Add secondary sync
|
|
137
|
+
</Button>
|
|
138
|
+
</div>
|
|
139
|
+
{/if}
|
|
140
|
+
</div>
|
|
141
|
+
{/if}
|
|
142
|
+
</div>
|
|
143
|
+
{:else}
|
|
144
|
+
<!-- Collapsed state when no secondary repos exist -->
|
|
145
|
+
{#if !hasUnsavedSecondary}
|
|
146
|
+
<div class="mt-2">
|
|
147
|
+
<button
|
|
148
|
+
class="text-xs text-tertiary hover:text-secondary transition-colors"
|
|
149
|
+
onclick={() => {
|
|
150
|
+
secondarySyncExpanded = true
|
|
151
|
+
gitSyncContext.addSyncRepository()
|
|
152
|
+
}}
|
|
153
|
+
>
|
|
154
|
+
+ Add secondary sync repository
|
|
155
|
+
</button>
|
|
156
|
+
</div>
|
|
157
|
+
{/if}
|
|
158
|
+
{/if}
|
|
159
|
+
{/if}
|
|
160
|
+
|
|
161
|
+
<!-- Primary Promotion Repository -->
|
|
162
|
+
<div class="mt-6">
|
|
163
|
+
<GitSyncRepositoryCard
|
|
164
|
+
variant="primary-promotion"
|
|
165
|
+
mode="promotion"
|
|
166
|
+
idx={primaryPromotion?.idx ?? null}
|
|
167
|
+
repository={primaryPromotion?.repo ?? null}
|
|
168
|
+
onAdd={() => gitSyncContext.addPromotionRepository()}
|
|
169
|
+
isCollapsible={false}
|
|
170
|
+
showEmptyState={primaryPromotion?.repo === null}
|
|
171
|
+
/>
|
|
172
|
+
</div>
|
|
173
|
+
|
|
174
|
+
<!-- Legacy promotion repositories (backwards compatibility) -->
|
|
175
|
+
{#if legacyPromotion.length > 0}
|
|
176
|
+
<Alert type="warning" title="Multiple promotion repositories detected">
|
|
177
|
+
Multiple promotion repositories are no longer supported. Please reduce to a single promotion repository.
|
|
178
|
+
Only deletion is allowed for the additional repositories below.
|
|
179
|
+
</Alert>
|
|
180
|
+
<div class="mt-4">
|
|
181
|
+
<button
|
|
182
|
+
class="flex items-center gap-2 text-sm text-secondary hover:text-primary transition-colors"
|
|
183
|
+
onclick={() => (legacyPromotionExpanded = !legacyPromotionExpanded)}
|
|
184
|
+
>
|
|
185
|
+
{#if legacyPromotionExpanded}
|
|
186
|
+
<ChevronDown size={16} />
|
|
187
|
+
{:else}
|
|
188
|
+
<ChevronRight size={16} />
|
|
189
|
+
{/if}
|
|
190
|
+
Legacy promotion repositories ({legacyPromotion.length})
|
|
191
|
+
</button>
|
|
192
|
+
|
|
193
|
+
{#if legacyPromotionExpanded}
|
|
194
|
+
<div class="space-y-3 mt-3">
|
|
195
|
+
{#each legacyPromotion as { repo, idx } (repo.git_repo_resource_path)}
|
|
196
|
+
<div class="pl-4">
|
|
197
|
+
<GitSyncRepositoryCard {idx} variant="legacy" isLegacy={true} />
|
|
198
|
+
</div>
|
|
199
|
+
{/each}
|
|
200
|
+
</div>
|
|
201
|
+
{/if}
|
|
202
|
+
</div>
|
|
203
|
+
{/if}
|
|
84
204
|
</div>
|
|
85
205
|
|
|
86
206
|
<!-- Modals -->
|
|
@@ -6,7 +6,7 @@ import { JobService } from '../../gen';
|
|
|
6
6
|
import { workspaceStore } from '../../stores';
|
|
7
7
|
import { sendUserToast } from '../../toast';
|
|
8
8
|
import hubPaths from '../../hubPaths.json';
|
|
9
|
-
import {
|
|
9
|
+
import { jobManager } from '../../services/JobManager';
|
|
10
10
|
let { open = $bindable(false), gitRepoResourcePath, uiState, repoIndex, currentGitSyncSettings, onFilterUpdate, onSettingsSaved, onSuccess, settingsOnly = false } = $props();
|
|
11
11
|
// Job state
|
|
12
12
|
let previewJobId = $state(null);
|
|
@@ -131,42 +131,37 @@ async function executeJob(isDryRun, settingsOnly = false) {
|
|
|
131
131
|
applyJobId = jobId;
|
|
132
132
|
applyJobStatus = 'running';
|
|
133
133
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
if (
|
|
141
|
-
|
|
142
|
-
|
|
134
|
+
// Use JobManager instead of tryEvery
|
|
135
|
+
const result = await jobManager.runWithProgress(() => Promise.resolve(jobId), {
|
|
136
|
+
workspace,
|
|
137
|
+
timeout: 60000,
|
|
138
|
+
timeoutMessage: `${isPreview ? 'Preview' : 'Apply'} job timed out after 60s`,
|
|
139
|
+
onProgress: (status) => {
|
|
140
|
+
if (isPreview) {
|
|
141
|
+
previewJobStatus = status.status;
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
applyJobStatus = status.status;
|
|
143
145
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
}
|
|
146
|
+
// Handle failure status
|
|
147
|
+
if (status.status === 'failure') {
|
|
148
|
+
if (isPreview) {
|
|
149
|
+
previewError = status.error || 'Preview failed';
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
applyError = status.error || 'Pull failed';
|
|
153
|
+
}
|
|
152
154
|
}
|
|
153
|
-
|
|
154
|
-
},
|
|
155
|
-
interval: 500,
|
|
156
|
-
timeout: 60000
|
|
155
|
+
}
|
|
157
156
|
});
|
|
157
|
+
// Handle successful result
|
|
158
158
|
if (isPreview) {
|
|
159
|
-
previewJobStatus
|
|
160
|
-
if (jobSuccess) {
|
|
159
|
+
if (previewJobStatus === 'success') {
|
|
161
160
|
previewResult = result;
|
|
162
161
|
}
|
|
163
|
-
else {
|
|
164
|
-
previewError = 'Preview failed';
|
|
165
|
-
}
|
|
166
162
|
}
|
|
167
163
|
else {
|
|
168
|
-
applyJobStatus
|
|
169
|
-
if (jobSuccess) {
|
|
164
|
+
if (applyJobStatus === 'success') {
|
|
170
165
|
const settingsData = result?.local;
|
|
171
166
|
const hasSettingsChanges = settingsData && onFilterUpdate;
|
|
172
167
|
if (hasSettingsChanges) {
|
|
@@ -175,9 +170,6 @@ async function executeJob(isDryRun, settingsOnly = false) {
|
|
|
175
170
|
}
|
|
176
171
|
onSuccess?.();
|
|
177
172
|
}
|
|
178
|
-
else {
|
|
179
|
-
applyError = 'Pull failed';
|
|
180
|
-
}
|
|
181
173
|
}
|
|
182
174
|
}
|
|
183
175
|
catch (e) {
|
|
@@ -5,7 +5,7 @@ import GitDiffPreview from '../GitDiffPreview.svelte';
|
|
|
5
5
|
import { JobService } from '../../gen';
|
|
6
6
|
import { workspaceStore } from '../../stores';
|
|
7
7
|
import hubPaths from '../../hubPaths.json';
|
|
8
|
-
import {
|
|
8
|
+
import { jobManager } from '../../services/JobManager';
|
|
9
9
|
let { open = $bindable(false), gitRepoResourcePath, uiState, onSuccess, isNewConnection = false, onSaveWithoutInit } = $props();
|
|
10
10
|
// Job state
|
|
11
11
|
let previewJobId = $state(null);
|
|
@@ -76,47 +76,39 @@ async function executeJob(isDryRun) {
|
|
|
76
76
|
applyJobId = jobId;
|
|
77
77
|
applyJobStatus = 'running';
|
|
78
78
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
if (
|
|
86
|
-
|
|
87
|
-
|
|
79
|
+
// Use JobManager instead of tryEvery
|
|
80
|
+
const result = await jobManager.runWithProgress(() => Promise.resolve(jobId), {
|
|
81
|
+
workspace,
|
|
82
|
+
timeout: 60000,
|
|
83
|
+
timeoutMessage: `${isPreview ? 'Preview' : 'Apply'} job timed out after 60s`,
|
|
84
|
+
onProgress: (status) => {
|
|
85
|
+
if (isPreview) {
|
|
86
|
+
previewJobStatus = status.status;
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
applyJobStatus = status.status;
|
|
88
90
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
}
|
|
91
|
+
// Handle failure status
|
|
92
|
+
if (status.status === 'failure') {
|
|
93
|
+
if (isPreview) {
|
|
94
|
+
previewError = status.error || 'Preview failed';
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
applyError = status.error || 'Push failed';
|
|
98
|
+
}
|
|
97
99
|
}
|
|
98
|
-
|
|
99
|
-
},
|
|
100
|
-
interval: 500,
|
|
101
|
-
timeout: 60000
|
|
100
|
+
}
|
|
102
101
|
});
|
|
102
|
+
// Handle successful result
|
|
103
103
|
if (isPreview) {
|
|
104
|
-
previewJobStatus
|
|
105
|
-
if (jobSuccess) {
|
|
104
|
+
if (previewJobStatus === 'success') {
|
|
106
105
|
previewResult = result;
|
|
107
106
|
}
|
|
108
|
-
else {
|
|
109
|
-
previewError = 'Preview failed';
|
|
110
|
-
}
|
|
111
107
|
}
|
|
112
108
|
else {
|
|
113
|
-
applyJobStatus
|
|
114
|
-
if (jobSuccess) {
|
|
109
|
+
if (applyJobStatus === 'success') {
|
|
115
110
|
onSuccess?.();
|
|
116
111
|
}
|
|
117
|
-
else {
|
|
118
|
-
applyError = 'Push failed';
|
|
119
|
-
}
|
|
120
112
|
}
|
|
121
113
|
}
|
|
122
114
|
catch (e) {
|
|
@@ -24,12 +24,8 @@ export type DurationStatus = {
|
|
|
24
24
|
duration_ms?: number;
|
|
25
25
|
}>;
|
|
26
26
|
};
|
|
27
|
-
export type GlobalIterationBounds = {
|
|
28
|
-
iteration_from?: number;
|
|
29
|
-
iteration_total?: number;
|
|
30
|
-
};
|
|
31
27
|
export type FlowStatusViewerContext = {
|
|
32
|
-
|
|
28
|
+
flowState?: FlowState;
|
|
33
29
|
retryStatus: StateStore<Record<string, number | undefined>>;
|
|
34
30
|
suspendStatus: StateStore<Record<string, {
|
|
35
31
|
nb: number;
|
|
@@ -56,6 +52,10 @@ export type GraphModuleState = {
|
|
|
56
52
|
selectedForloopIndex?: number;
|
|
57
53
|
selectedForLoopSetManually?: boolean;
|
|
58
54
|
flow_jobs_success?: (boolean | undefined)[];
|
|
55
|
+
flow_jobs_duration?: {
|
|
56
|
+
started_at?: (string | undefined)[];
|
|
57
|
+
duration_ms?: (number | undefined)[];
|
|
58
|
+
};
|
|
59
59
|
flow_jobs?: string[];
|
|
60
60
|
iteration_total?: number;
|
|
61
61
|
retries?: number;
|
|
@@ -1,16 +1,9 @@
|
|
|
1
1
|
<script lang="ts">import { getBezierPath, BaseEdge } from '@xyflow/svelte';
|
|
2
2
|
import { getContext } from 'svelte';
|
|
3
3
|
import { twMerge } from 'tailwind-merge';
|
|
4
|
-
|
|
5
|
-
export let sourceY;
|
|
6
|
-
export let sourcePosition;
|
|
7
|
-
export let targetX;
|
|
8
|
-
export let targetY;
|
|
9
|
-
export let targetPosition;
|
|
10
|
-
export let markerEnd = undefined;
|
|
11
|
-
export let data = {};
|
|
4
|
+
let { sourceX, sourceY, sourcePosition, targetX, targetY, targetPosition, markerEnd = undefined, data = {} } = $props();
|
|
12
5
|
const { useDataflow } = getContext('FlowGraphContext');
|
|
13
|
-
|
|
6
|
+
let [edgePath] = $derived(getBezierPath({
|
|
14
7
|
sourceX,
|
|
15
8
|
sourceY,
|
|
16
9
|
sourcePosition,
|
|
@@ -18,7 +11,7 @@ $: [edgePath] = getBezierPath({
|
|
|
18
11
|
targetY,
|
|
19
12
|
targetPosition,
|
|
20
13
|
curvature: 0.25
|
|
21
|
-
});
|
|
14
|
+
}));
|
|
22
15
|
</script>
|
|
23
16
|
|
|
24
17
|
<BaseEdge
|
|
@@ -1,18 +1,5 @@
|
|
|
1
1
|
import { type Position } from '@xyflow/svelte';
|
|
2
|
-
interface
|
|
3
|
-
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
4
|
-
$$bindings?: Bindings;
|
|
5
|
-
} & Exports;
|
|
6
|
-
(internal: unknown, props: Props & {
|
|
7
|
-
$$events?: Events;
|
|
8
|
-
$$slots?: Slots;
|
|
9
|
-
}): Exports & {
|
|
10
|
-
$set?: any;
|
|
11
|
-
$on?: any;
|
|
12
|
-
};
|
|
13
|
-
z_$$bindings?: Bindings;
|
|
14
|
-
}
|
|
15
|
-
declare const EmptyEdge: $$__sveltets_2_IsomorphicComponent<{
|
|
2
|
+
interface Props {
|
|
16
3
|
sourceX: number;
|
|
17
4
|
sourceY: number;
|
|
18
5
|
sourcePosition: Position;
|
|
@@ -23,8 +10,7 @@ declare const EmptyEdge: $$__sveltets_2_IsomorphicComponent<{
|
|
|
23
10
|
data?: {
|
|
24
11
|
class?: string;
|
|
25
12
|
};
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
type EmptyEdge = InstanceType<typeof EmptyEdge>;
|
|
13
|
+
}
|
|
14
|
+
declare const EmptyEdge: import("svelte").Component<Props, {}, "">;
|
|
15
|
+
type EmptyEdge = ReturnType<typeof EmptyEdge>;
|
|
30
16
|
export default EmptyEdge;
|
|
@@ -138,8 +138,9 @@ export function computeAIToolNodes(nodes, eventHandlers, insertable, flowModuleS
|
|
|
138
138
|
});
|
|
139
139
|
}
|
|
140
140
|
}
|
|
141
|
-
const sortedNewNodes =
|
|
141
|
+
const sortedNewNodes = nodes
|
|
142
142
|
.filter((n) => n.type !== 'asset')
|
|
143
|
+
.map((n) => ({ id: n.id, position: $state.snapshot(n.position) }))
|
|
143
144
|
.sort((a, b) => a.position.y - b.position.y);
|
|
144
145
|
let currentYOffset = 0;
|
|
145
146
|
let prevYPos = NaN;
|
|
@@ -176,7 +177,6 @@ export function computeAIToolNodes(nodes, eventHandlers, insertable, flowModuleS
|
|
|
176
177
|
import { MessageCircle, Play, Wrench, X } from 'lucide-svelte';
|
|
177
178
|
import { twMerge } from 'tailwind-merge';
|
|
178
179
|
import { getContext } from 'svelte';
|
|
179
|
-
import { clone } from '../../../../utils';
|
|
180
180
|
import { getStateColor, getStateHoverColor } from '../../util';
|
|
181
181
|
import { deepEqual } from 'fast-equals';
|
|
182
182
|
let hover = $state(false);
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
<script lang="ts">import {
|
|
2
|
-
import { twMerge } from 'tailwind-merge';
|
|
1
|
+
<script lang="ts">import { twMerge } from 'tailwind-merge';
|
|
3
2
|
import {} from '../../graphBuilder.svelte';
|
|
4
3
|
import InsertModuleInner from '../../../flows/map/InsertModuleInner.svelte';
|
|
5
4
|
import { Cross } from 'lucide-svelte';
|
|
@@ -14,11 +13,12 @@ let floatingConfig = {
|
|
|
14
13
|
middleware: [offset(8), flip()],
|
|
15
14
|
autoUpdate: true
|
|
16
15
|
};
|
|
16
|
+
let open = $state(false);
|
|
17
17
|
</script>
|
|
18
18
|
|
|
19
19
|
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
20
|
-
<PopupV2 {floatingConfig} target="#flow-editor">
|
|
21
|
-
{#snippet button(
|
|
20
|
+
<PopupV2 bind:open {floatingConfig} target="#flow-editor">
|
|
21
|
+
{#snippet button()}
|
|
22
22
|
<button
|
|
23
23
|
title={`Add 'tool'
|
|
24
24
|
}`}
|
|
@@ -26,12 +26,7 @@ let floatingConfig = {
|
|
|
26
26
|
class={twMerge(
|
|
27
27
|
'!w-full h-6 flex items-center justify-center !outline-[1px] outline dark:outline-gray-500 outline-gray-300 text-secondary bg-surface focus:outline-none hover:bg-surface-hover rounded'
|
|
28
28
|
)}
|
|
29
|
-
onpointerdown={
|
|
30
|
-
preventDefault(() => {
|
|
31
|
-
pointerdown()
|
|
32
|
-
})
|
|
33
|
-
)}
|
|
34
|
-
onpointerup={pointerup}
|
|
29
|
+
onpointerdown={() => (open = !open)}
|
|
35
30
|
>
|
|
36
31
|
<div class="flex flex-row items-center gap-1 font-medium text-2xs">
|
|
37
32
|
<Cross size={12} />
|
|
@@ -449,7 +449,7 @@ $effect(() => {
|
|
|
449
449
|
/>
|
|
450
450
|
{:else}
|
|
451
451
|
<div class="border rounded-md">
|
|
452
|
-
{#each (items ?? []).slice(0, nbDisplayed) as item (item.type + '/' + item.path)}
|
|
452
|
+
{#each (items ?? []).slice(0, nbDisplayed) as item (item.type + '/' + item.path + (item.hash ? '/' + item.hash : ''))}
|
|
453
453
|
<Item
|
|
454
454
|
{item}
|
|
455
455
|
on:scriptChanged={() => loadScripts(includeWithoutMain)}
|
|
@@ -1,20 +1,14 @@
|
|
|
1
1
|
<script lang="ts">import {} from '../../gen';
|
|
2
2
|
import ProgressBar from '../progressBar/ProgressBar.svelte';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
let error = undefined;
|
|
10
|
-
let index = 0;
|
|
11
|
-
let subIndex = 0;
|
|
12
|
-
let subLength = 100;
|
|
13
|
-
let length = 1;
|
|
3
|
+
let { job = undefined, compact = false, scriptProgress = undefined, hideStepTitle = false, class: className = '' } = $props();
|
|
4
|
+
let error = $state(undefined);
|
|
5
|
+
let index = $state(0);
|
|
6
|
+
let subIndex = $state(0);
|
|
7
|
+
let subLength = $state(100);
|
|
8
|
+
let length = $state(1);
|
|
14
9
|
let nextInProgress = false;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
$: subIndex = scriptProgress ?? 0;
|
|
10
|
+
let progressBar = $state(undefined);
|
|
11
|
+
let lastJobId = $state();
|
|
18
12
|
function updateJobProgress(job) {
|
|
19
13
|
if (!job['running'] && !job['success']) {
|
|
20
14
|
error = 0;
|
|
@@ -24,11 +18,10 @@ function updateJobProgress(job) {
|
|
|
24
18
|
}
|
|
25
19
|
// Anything that is success automatically gets 100% progress
|
|
26
20
|
if (job['success'] && scriptProgress)
|
|
27
|
-
index = 1, subLength = 0, subIndex = 0, scriptProgress = 100;
|
|
21
|
+
((index = 1), (subLength = 0), (subIndex = 0), (scriptProgress = 100));
|
|
28
22
|
}
|
|
29
|
-
let resetP;
|
|
30
23
|
export function reset() {
|
|
31
|
-
resetP
|
|
24
|
+
progressBar?.resetP();
|
|
32
25
|
error = undefined;
|
|
33
26
|
subIndex = 0;
|
|
34
27
|
subLength = 100;
|
|
@@ -36,17 +29,30 @@ export function reset() {
|
|
|
36
29
|
index = 0;
|
|
37
30
|
scriptProgress = undefined;
|
|
38
31
|
}
|
|
32
|
+
$effect(() => {
|
|
33
|
+
if (lastJobId && job && job.id !== lastJobId) {
|
|
34
|
+
lastJobId = job.id;
|
|
35
|
+
reset();
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
$effect(() => {
|
|
39
|
+
if (job)
|
|
40
|
+
updateJobProgress(job);
|
|
41
|
+
});
|
|
42
|
+
$effect(() => {
|
|
43
|
+
subIndex = scriptProgress ?? 0;
|
|
44
|
+
});
|
|
39
45
|
</script>
|
|
40
46
|
|
|
41
47
|
<ProgressBar
|
|
42
|
-
bind:
|
|
48
|
+
bind:this={progressBar}
|
|
43
49
|
{length}
|
|
44
50
|
{index}
|
|
45
51
|
{nextInProgress}
|
|
46
52
|
{subLength}
|
|
47
53
|
{subIndex}
|
|
48
54
|
{error}
|
|
49
|
-
class={
|
|
50
|
-
|
|
51
|
-
|
|
55
|
+
class={className}
|
|
56
|
+
{compact}
|
|
57
|
+
{hideStepTitle}
|
|
52
58
|
/>
|
|
@@ -1,28 +1,13 @@
|
|
|
1
1
|
import { type Job } from '../../gen';
|
|
2
|
-
interface
|
|
3
|
-
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
4
|
-
$$bindings?: Bindings;
|
|
5
|
-
} & Exports;
|
|
6
|
-
(internal: unknown, props: Props & {
|
|
7
|
-
$$events?: Events;
|
|
8
|
-
$$slots?: Slots;
|
|
9
|
-
}): Exports & {
|
|
10
|
-
$set?: any;
|
|
11
|
-
$on?: any;
|
|
12
|
-
};
|
|
13
|
-
z_$$bindings?: Bindings;
|
|
14
|
-
}
|
|
15
|
-
declare const JobProgressBar: $$__sveltets_2_IsomorphicComponent<{
|
|
16
|
-
[x: string]: any;
|
|
2
|
+
interface Props {
|
|
17
3
|
job?: Job | undefined;
|
|
18
|
-
compact?: boolean
|
|
19
|
-
scriptProgress?: number | undefined
|
|
20
|
-
hideStepTitle?: boolean
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
}, {}, {
|
|
4
|
+
compact?: boolean;
|
|
5
|
+
scriptProgress?: number | undefined;
|
|
6
|
+
hideStepTitle?: boolean;
|
|
7
|
+
class?: string;
|
|
8
|
+
}
|
|
9
|
+
declare const JobProgressBar: import("svelte").Component<Props, {
|
|
25
10
|
reset: () => void;
|
|
26
|
-
},
|
|
27
|
-
type JobProgressBar =
|
|
11
|
+
}, "">;
|
|
12
|
+
type JobProgressBar = ReturnType<typeof JobProgressBar>;
|
|
28
13
|
export default JobProgressBar;
|
|
@@ -1,12 +1,7 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
let {
|
|
3
|
-
const menu = createMenu();
|
|
4
|
-
const { elements: { trigger, item, menu: menuElement } } = menu;
|
|
1
|
+
<script lang="ts">"use strict";
|
|
2
|
+
let { children } = $props();
|
|
5
3
|
</script>
|
|
6
4
|
|
|
7
5
|
<div class="hover:z-50 flex w-full h-8">
|
|
8
|
-
{@render
|
|
9
|
-
<div {...$menuElement} use:$menuElement.action>
|
|
10
|
-
{@render children?.({ item })}
|
|
11
|
-
</div>
|
|
6
|
+
{@render children?.({})}
|
|
12
7
|
</div>
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import { type MenubarBuilders } from '@melt-ui/svelte';
|
|
2
1
|
interface Props {
|
|
3
|
-
createMenu: MenubarBuilders['createMenu'];
|
|
4
|
-
triggr?: import('svelte').Snippet<[any]>;
|
|
5
2
|
children?: import('svelte').Snippet<[any]>;
|
|
6
3
|
}
|
|
7
4
|
declare const MenuSingleItem: import("svelte").Component<Props, {}, "">;
|