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.
- package/package/components/AppConnectInner.svelte.d.ts +1 -1
- package/package/components/ArgInput.svelte +56 -18
- package/package/components/ArgInput.svelte.d.ts +2 -10
- package/package/components/AssignableTagsInner.svelte +5 -0
- package/package/components/AuthSettings.svelte +4 -2
- package/package/components/AuthSettings.svelte.d.ts +1 -0
- package/package/components/DBManagerDrawer.svelte +154 -151
- package/package/components/DBManagerDrawer.svelte.d.ts +2 -2
- package/package/components/DBTable.svelte +3 -3
- package/package/components/DBTable.svelte.d.ts +1 -0
- package/package/components/DBTableEditor.svelte +7 -7
- package/package/components/DBTableEditor.svelte.d.ts +1 -1
- package/package/components/DeployWorkspace.svelte +1 -1
- package/package/components/DisplayResult.svelte +34 -8
- package/package/components/DisplayResult.svelte.d.ts +4 -1
- package/package/components/DynSelect.svelte +58 -34
- package/package/components/DynSelect.svelte.d.ts +3 -11
- package/package/components/EditableSchemaForm.svelte +126 -6
- package/package/components/EditableSchemaForm.svelte.d.ts +5 -1
- package/package/components/Editor.svelte +1 -1
- package/package/components/EditorBar.svelte +82 -4
- package/package/components/ErrorOrRecoveryHandler.svelte +76 -8
- package/package/components/ErrorOrRecoveryHandler.svelte.d.ts +2 -1
- package/package/components/ExploreAssetButton.svelte +14 -4
- package/package/components/ExploreAssetButton.svelte.d.ts +1 -0
- package/package/components/FlowJobResult.svelte +3 -3
- package/package/components/FlowJobResult.svelte.d.ts +1 -0
- package/package/components/FlowPreviewContent.svelte +9 -0
- package/package/components/FlowPreviewContent.svelte.d.ts +3 -0
- package/package/components/FlowPreviewResult.svelte +4 -1
- package/package/components/FlowPreviewResult.svelte.d.ts +1 -0
- package/package/components/FlowStatusViewer.svelte +2 -1
- package/package/components/FlowStatusViewer.svelte.d.ts +3 -0
- package/package/components/FlowStatusViewerInner.svelte +23 -3
- package/package/components/FlowStatusViewerInner.svelte.d.ts +10 -1
- package/package/components/FolderEditor.svelte +1 -1
- package/package/components/GitDiffPreview.svelte +14 -18
- package/package/components/GitDiffPreview.svelte.d.ts +2 -8
- package/package/components/GitHubAppIntegration.svelte +3 -1
- package/package/components/IdEditorInput.svelte +25 -22
- package/package/components/IdEditorInput.svelte.d.ts +11 -23
- package/package/components/InstanceSetting.svelte +7 -2
- package/package/components/InstanceSettings.svelte +1 -0
- package/package/components/JobLoader.svelte +48 -5
- package/package/components/JobLoader.svelte.d.ts +7 -2
- package/package/components/Login.svelte +8 -2
- package/package/components/MemoryFootprintViewer.svelte +1 -1
- package/package/components/ModulePreviewResultViewer.svelte +2 -2
- package/package/components/MoveDrawer.svelte.d.ts +2 -2
- package/package/components/NextcloudSetting.svelte +84 -0
- package/package/components/NextcloudSetting.svelte.d.ts +7 -0
- package/package/components/ObjectResourceInput.svelte +3 -2
- package/package/components/ObjectResourceInput.svelte.d.ts +1 -0
- package/package/components/ParqetCsvTableRenderer.svelte +1 -1
- package/package/components/ResourceEditor.svelte +1 -1
- package/package/components/ResourcePicker.svelte +8 -1
- package/package/components/ResourcePicker.svelte.d.ts +1 -0
- package/package/components/ResultStreamDisplay.svelte +5 -0
- package/package/components/ResultStreamDisplay.svelte.d.ts +5 -0
- package/package/components/RunForm.svelte +9 -1
- package/package/components/SchemaForm.svelte +2 -2
- package/package/components/SchemaForm.svelte.d.ts +2 -10
- package/package/components/ScriptBuilder.svelte +13 -8
- package/package/components/ScriptBuilder.svelte.d.ts +1 -1
- package/package/components/ScriptEditor.svelte.d.ts +1 -1
- package/package/components/ScriptWrapper.svelte +1 -1
- package/package/components/ShareModal.svelte.d.ts +1 -1
- package/package/components/SimpleAgTable.svelte +2 -0
- package/package/components/SimpleAgTable.svelte.d.ts +2 -0
- package/package/components/SqlRepl.svelte +21 -7
- package/package/components/SqlRepl.svelte.d.ts +2 -2
- package/package/components/StringTypeNarrowing.svelte.d.ts +1 -1
- package/package/components/WorkerTagSelect.svelte +70 -1
- package/package/components/apps/components/display/AppDisplayComponent.svelte +13 -1
- package/package/components/apps/components/display/AppText.svelte +2 -2
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +8 -1
- package/package/components/apps/components/display/dbtable/InsertRow.svelte +5 -4
- package/package/components/apps/components/display/dbtable/queries/count.js +11 -1
- package/package/components/apps/components/display/dbtable/queries/createTable.d.ts +1 -1
- package/package/components/apps/components/display/dbtable/queries/createTable.js +3 -3
- package/package/components/apps/components/display/dbtable/queries/delete.js +7 -0
- package/package/components/apps/components/display/dbtable/queries/insert.js +2 -0
- package/package/components/apps/components/display/dbtable/queries/select.js +14 -0
- package/package/components/apps/components/display/dbtable/queries/update.js +7 -0
- package/package/components/apps/components/display/dbtable/utils.d.ts +6 -5
- package/package/components/apps/components/display/dbtable/utils.js +52 -28
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +1 -1
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +1 -0
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte.d.ts +1 -0
- package/package/components/apps/components/display/table/AppAggridTable.svelte +5 -4
- package/package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +1 -0
- package/package/components/apps/components/display/table/utils.js +7 -4
- package/package/components/apps/components/helpers/HiddenComponent.svelte +2 -2
- package/package/components/apps/components/helpers/RunnableComponent.svelte +4 -1
- package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +2 -1
- package/package/components/apps/components/inputs/AppS3FileInput.svelte +2 -2
- package/package/components/apps/components/layout/AppDecisionTree.svelte +1 -1
- package/package/components/apps/components/layout/AppStepper.svelte +1 -1
- package/package/components/apps/components/layout/AppTabs.svelte +1 -1
- package/package/components/apps/editor/AppEditorHeader.svelte +13 -2
- package/package/components/apps/editor/GridViewer.svelte +1 -0
- package/package/components/apps/editor/RunnableJobPanelInner.svelte +2 -1
- package/package/components/apps/editor/contextPanel/components/IdEditor.svelte +7 -7
- package/package/components/apps/editor/contextPanel/components/IdEditor.svelte.d.ts +7 -19
- package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +8 -12
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +1 -1
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +3 -3
- package/package/components/apps/editor/settingsPanel/decisionTree/DecisionTreePreview.svelte +1 -3
- package/package/components/assets/AssetsDropdownButton.svelte +1 -1
- package/package/components/assets/JobAssetsViewer.svelte +2 -2
- package/package/components/assets/lib.js +4 -0
- package/package/components/auditLogs/AuditLogsFilters.svelte +7 -9
- package/package/components/common/button/Button.svelte +4 -3
- package/package/components/common/button/Button.svelte.d.ts +1 -0
- package/package/components/common/confirmationModal/ConfirmationModal.svelte +6 -5
- package/package/components/common/confirmationModal/ConfirmationModal.svelte.d.ts +6 -11
- package/package/components/common/confirmationModal/asyncConfirmationModal.svelte.d.ts +26 -0
- package/package/components/common/confirmationModal/asyncConfirmationModal.svelte.js +50 -0
- package/package/components/common/modal/Modal.svelte +2 -5
- package/package/components/common/tabs/TabsV2.svelte +2 -1
- package/package/components/common/tabs/TabsV2.svelte.d.ts +1 -0
- package/package/components/copilot/chat/AIChatManager.svelte.js +61 -7
- package/package/components/copilot/chat/ContextTextarea.svelte +1 -1
- package/package/components/copilot/chat/script/core.js +28 -29
- package/package/components/copilot/chat/shared.d.ts +1 -1
- package/package/components/copilot/chat/shared.js +8 -2
- package/package/components/custom_ui.d.ts +3 -0
- package/package/components/dbOps.d.ts +20 -8
- package/package/components/dbOps.js +85 -40
- package/package/components/details/DetailPageHeader.svelte +0 -2
- package/package/components/flows/content/FlowInput.svelte +5 -0
- package/package/components/flows/content/FlowModuleComponent.svelte +1 -0
- package/package/components/flows/content/FlowModuleScript.svelte +0 -1
- package/package/components/flows/idUtils.js +2 -1
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +3 -3
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +5 -0
- package/package/components/flows/map/InsertModuleButton.svelte +4 -1
- package/package/components/flows/propPicker/OutputBadge.svelte +5 -1
- package/package/components/flows/propPicker/OutputPickerInner.svelte +9 -5
- package/package/components/flows/propPicker/OutputPickerInner.svelte.d.ts +6 -2
- package/package/components/flows/propPicker/StepHistory.svelte +4 -1
- package/package/components/git_sync/DetectionFlow.svelte +202 -0
- package/package/components/git_sync/DetectionFlow.svelte.d.ts +6 -0
- package/package/components/git_sync/GitSyncContext.svelte.d.ts +82 -0
- package/package/components/git_sync/GitSyncContext.svelte.js +461 -0
- package/package/components/git_sync/GitSyncModalManager.svelte +99 -0
- package/package/components/git_sync/GitSyncModalManager.svelte.d.ts +18 -0
- package/package/components/git_sync/GitSyncRepositoryCard.svelte +339 -0
- package/package/components/git_sync/GitSyncRepositoryCard.svelte.d.ts +6 -0
- package/package/components/git_sync/GitSyncRepositoryList.svelte +17 -0
- package/package/components/git_sync/GitSyncRepositoryList.svelte.d.ts +18 -0
- package/package/components/git_sync/GitSyncSection.svelte +89 -0
- package/package/components/git_sync/GitSyncSection.svelte.d.ts +3 -0
- package/package/components/git_sync/GitSyncSuccessModal.svelte +58 -0
- package/package/components/git_sync/GitSyncSuccessModal.svelte.d.ts +7 -0
- package/package/components/git_sync/PullWorkspaceModal.svelte +575 -0
- package/package/components/git_sync/PullWorkspaceModal.svelte.d.ts +15 -0
- package/package/components/git_sync/PushWorkspaceModal.svelte +320 -0
- package/package/components/git_sync/PushWorkspaceModal.svelte.d.ts +12 -0
- package/package/components/graph/FlowGraphV2.svelte +5 -1
- package/package/components/graph/graphBuilder.svelte.js +1 -1
- package/package/components/graph/renderers/nodes/AssetNode.svelte +4 -4
- package/package/components/icons/AssetDucklakeIcon.svelte +28 -0
- package/package/components/icons/AssetDucklakeIcon.svelte.d.ts +9 -0
- package/package/components/icons/AssetGenericIcon.svelte +3 -0
- package/package/components/icons/DucklakeIcon.svelte +18 -0
- package/package/components/icons/DucklakeIcon.svelte.d.ts +6 -0
- package/package/components/instanceSettings.js +11 -3
- package/package/components/runs/JobPreview.svelte +2 -2
- package/package/components/runs/NoWorkerWithTagWarning.svelte +3 -3
- package/package/components/runs/RunsFilter.svelte.d.ts +1 -1
- package/package/components/schema/FlowPropertyEditor.svelte +3 -2
- package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -1
- package/package/components/schema/PropertyEditor.svelte +0 -2
- package/package/components/schema/PropertyEditor.svelte.d.ts +1 -1
- package/package/components/schema/SchemaFormDND.svelte +2 -1
- package/package/components/schema/SchemaFormDND.svelte.d.ts +2 -0
- package/package/components/scriptEditor/LogPanel.svelte +5 -3
- package/package/components/scriptEditor/LogPanel.svelte.d.ts +5 -1
- package/package/components/select/Select.svelte +7 -4
- package/package/components/select/Select.svelte.d.ts +5 -0
- package/package/components/select/SelectDropdown.svelte +2 -1
- package/package/components/select/SelectDropdown.svelte.d.ts +3 -0
- package/package/components/sidebar/changelogs.js +5 -0
- package/package/components/table/AutoDataTable.svelte +6 -4
- package/package/components/table/AutoDataTable.svelte.d.ts +1 -0
- package/package/components/table/DataTable.svelte +12 -10
- package/package/components/table/DataTable.svelte.d.ts +1 -0
- package/package/components/triggers/TriggerRetriesAndErrorHandler.svelte.d.ts +2 -2
- 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 +50 -11
- package/package/components/triggers/gcp/utils.js +1 -0
- package/package/components/triggers/http/utils.js +1 -1
- package/package/components/triggers/kafka/utils.js +1 -1
- package/package/components/triggers/mqtt/utils.js +1 -1
- package/package/components/triggers/nats/utils.js +1 -1
- package/package/components/triggers/postgres/utils.js +1 -1
- package/package/components/triggers/sqs/utils.js +1 -1
- package/package/components/triggers/utils.js +2 -1
- package/package/components/triggers/webhook/WebhooksConfigSection.svelte +24 -26
- package/package/components/triggers/webhook/WebhooksPanel.svelte +1 -15
- package/package/components/triggers/websocket/utils.js +1 -1
- package/package/components/workspaceSettings/AISettings.svelte +52 -36
- package/package/components/workspaceSettings/DucklakeSettings.svelte +321 -0
- package/package/components/workspaceSettings/DucklakeSettings.svelte.d.ts +23 -0
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +122 -499
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte.d.ts +8 -10
- package/package/consts.js +2 -1
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +33 -24
- package/package/gen/schemas.gen.js +36 -27
- package/package/gen/services.gen.d.ts +19 -1
- package/package/gen/services.gen.js +38 -0
- package/package/gen/types.gen.d.ts +103 -9
- package/package/git-sync.d.ts +36 -0
- package/package/git-sync.js +1 -0
- package/package/hub.d.ts +1 -0
- package/package/hubPaths.json +5 -2
- package/package/infer.js +3 -2
- package/package/script_helpers.d.ts +2 -2
- package/package/script_helpers.js +29 -11
- package/package/services/JobManager.d.ts +28 -0
- package/package/services/JobManager.js +114 -0
- package/package/stores.d.ts +1 -1
- package/package/utils.d.ts +18 -1
- package/package/utils.js +55 -2
- package/package.json +13 -12
- package/package/components/InitGitRepoPopover.svelte +0 -410
- package/package/components/InitGitRepoPopover.svelte.d.ts +0 -13
- package/package/components/PullGitRepoPopover.svelte +0 -355
- package/package/components/PullGitRepoPopover.svelte.d.ts +0 -18
- package/package/inferArgSig.d.ts +0 -35
- 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;
|
package/package/inferArgSig.d.ts
DELETED
|
@@ -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;
|
package/package/inferArgSig.js
DELETED
|
@@ -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
|
-
}
|