windmill-components 1.687.0 → 1.695.1
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/ArgInput.svelte +2 -0
- package/package/components/AutoscalingConfigEditor.svelte +18 -4
- package/package/components/CompareWorkspaces.svelte +206 -157
- package/package/components/DatatableSchemaDiff.svelte +2 -2
- package/package/components/Dev.svelte +401 -85
- package/package/components/EditableSchemaForm.svelte +4 -0
- package/package/components/ErrorOrRecoveryHandler.svelte +2 -2
- package/package/components/FlowPreviewContent.svelte +32 -30
- package/package/components/FlowRestartButton.svelte +143 -61
- package/package/components/FlowRestartButton.svelte.d.ts +37 -0
- package/package/components/FlowStatusViewer.svelte +15 -1
- package/package/components/FlowStatusViewer.svelte.d.ts +10 -2
- package/package/components/FlowStatusViewerInner.svelte +1 -2
- package/package/components/FlowStatusViewerInner.svelte.d.ts +6 -2
- package/package/components/ForkConflictModal.svelte +57 -0
- package/package/components/ForkConflictModal.svelte.d.ts +3 -0
- package/package/components/GitRepoViewer.svelte +251 -97
- package/package/components/InputTransformSchemaForm.svelte +1 -1
- package/package/components/InstanceSettings.svelte +36 -16
- package/package/components/Login.svelte +113 -28
- package/package/components/Login.svelte.d.ts +1 -0
- package/package/components/Path.svelte +7 -1
- package/package/components/Path.svelte.d.ts +1 -1
- package/package/components/RunsPage.svelte +2 -1
- package/package/components/S3FilePickerInner.svelte +89 -89
- package/package/components/ScriptEditor.svelte +18 -5
- package/package/components/ShareModal.svelte.d.ts +1 -1
- package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +3 -0
- package/package/components/apps/components/helpers/executeRunnable.js +2 -1
- package/package/components/apps/editor/AppReportsDrawerInner.svelte +1 -1
- package/package/components/apps/editor/appPolicy.js +2 -1
- package/package/components/apps/editor/commonAppUtils.d.ts +3 -0
- package/package/components/apps/editor/inlineScriptsPanel/CacheTtlPopup.svelte +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +7 -0
- package/package/components/apps/editor/inlineScriptsPanel/TagPopup.svelte +49 -0
- package/package/components/apps/editor/inlineScriptsPanel/TagPopup.svelte.d.ts +9 -0
- package/package/components/apps/inputType.d.ts +1 -0
- package/package/components/apps/sharedTypes.d.ts +1 -0
- package/package/components/auditLogs/AuditLogsFilters.svelte +8 -3
- package/package/components/common/fileUpload/S3ArgInput.svelte +12 -10
- package/package/components/common/fileUpload/S3ArgInput.svelte.d.ts +2 -0
- package/package/components/copilot/chat/AIChatDisplay.svelte +5 -36
- package/package/components/copilot/chat/AIChatInput.svelte +56 -47
- package/package/components/copilot/chat/AIChatManager.svelte.js +48 -46
- package/package/components/copilot/chat/ContextElementBadge.svelte +6 -4
- package/package/components/copilot/chat/app/core.d.ts +12 -20
- package/package/components/copilot/chat/app/core.js +103 -160
- package/package/components/copilot/chat/app/core.test.js +234 -9
- package/package/components/copilot/chat/context.js +44 -0
- package/package/components/copilot/chat/flow/FlowAIChat.svelte +5 -3
- package/package/components/copilot/chat/flow/core.d.ts +2 -1
- package/package/components/copilot/chat/flow/core.js +48 -21
- package/package/components/copilot/chat/flow/helperUtils.d.ts +5 -2
- package/package/components/copilot/chat/flow/helperUtils.js +33 -1
- package/package/components/copilot/chat/flow/helperUtils.test.js +116 -1
- package/package/components/copilot/chat/flow/openFlow.json +1 -1
- package/package/components/copilot/chat/flow/openFlowZod.gen.js +24 -0
- package/package/components/copilot/chat/script/core.js +3 -0
- package/package/components/copilot/chat/shared.d.ts +6 -0
- package/package/components/copilot/chat/shared.js +22 -1
- package/package/components/copilot/chat/shared.test.d.ts +1 -0
- package/package/components/copilot/chat/shared.test.js +412 -0
- package/package/components/copilot/chat/workspaceTools.d.ts +7 -0
- package/package/components/copilot/chat/workspaceTools.js +239 -0
- package/package/components/copilot/chat/workspaceToolsZod.gen.d.ts +1295 -0
- package/package/components/copilot/chat/workspaceToolsZod.gen.js +424 -0
- package/package/components/copilot/lib.js +3 -1
- package/package/components/copilot/lib.test.d.ts +1 -0
- package/package/components/copilot/lib.test.js +19 -0
- package/package/components/copilot/modelConfig.d.ts +3 -0
- package/package/components/copilot/modelConfig.js +10 -0
- package/package/components/flows/FlowProgressBar.svelte +5 -2
- package/package/components/flows/content/FlowModuleComponent.svelte +636 -599
- package/package/components/flows/conversations/FlowChatManager.svelte.js +21 -10
- package/package/components/flows/flowStateUtils.svelte.js +5 -1
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +3 -2
- package/package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +1 -0
- package/package/components/git_sync/GitSyncContext.svelte.js +0 -2
- package/package/components/graph/FlowGraphV2.svelte +7 -3
- package/package/components/graph/FlowGraphV2.svelte.d.ts +1 -0
- package/package/components/graph/renderers/triggers/TriggersBadge.svelte +3 -0
- package/package/components/home/deploy_ui.js +1 -1
- package/package/components/icons/AzureIcon.svelte +12 -25
- package/package/components/icons/AzureIcon.svelte.d.ts +3 -2
- package/package/components/instanceSettings.js +24 -0
- package/package/components/mcp/McpScopeSelector.svelte +119 -9
- package/package/components/mcp/McpScopeSelector.svelte.d.ts +1 -0
- package/package/components/offboarding-utils.js +2 -0
- package/package/components/progressBar/ProgressBar.svelte +9 -5
- package/package/components/progressBar/ProgressBar.svelte.d.ts +1 -0
- package/package/components/raw_apps/DeleteAfterUsePopup.svelte +52 -0
- package/package/components/raw_apps/DeleteAfterUsePopup.svelte.d.ts +9 -0
- package/package/components/raw_apps/RawAppBackgroundRunner.svelte +5 -1
- package/package/components/raw_apps/RawAppEditor.svelte +159 -102
- package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +9 -3
- package/package/components/raw_apps/RawAppInlineScriptEditor.svelte.d.ts +2 -1
- package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +1 -0
- package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte.d.ts +1 -0
- package/package/components/raw_apps/RawAppInputsSpecEditor.svelte +48 -5
- package/package/components/raw_apps/RawAppSharedUiDrawer.svelte +129 -0
- package/package/components/raw_apps/RawAppSharedUiDrawer.svelte.d.ts +5 -0
- package/package/components/raw_apps/RawAppSidebar.svelte +12 -0
- package/package/components/raw_apps/dataTableRefUtils.d.ts +7 -0
- package/package/components/raw_apps/dataTableRefUtils.js +34 -0
- package/package/components/raw_apps/dataTableRefUtils.test.d.ts +1 -0
- package/package/components/raw_apps/dataTableRefUtils.test.js +29 -0
- package/package/components/raw_apps/rawAppPolicy.d.ts +1 -0
- package/package/components/raw_apps/rawAppPolicy.js +17 -2
- package/package/components/resources/resourceTypesFilter.d.ts +19 -0
- package/package/components/resources/resourceTypesFilter.js +21 -0
- package/package/components/restartFromStepPath.d.ts +39 -0
- package/package/components/restartFromStepPath.js +89 -0
- package/package/components/runs/JobDetailFieldConfig.d.ts +1 -0
- package/package/components/runs/JobDetailFieldConfig.js +57 -10
- package/package/components/runs/JobDetailHeader.svelte +24 -3
- package/package/components/runs/runsFilter.d.ts +1 -1
- package/package/components/schema/FlowPropertyEditor.svelte +30 -1
- package/package/components/schema/FlowPropertyEditor.svelte.d.ts +5 -2
- package/package/components/search/GlobalSearchModal.svelte +8 -1
- package/package/components/select/Select.svelte +1 -1
- package/package/components/settings/CreateToken.svelte +48 -77
- package/package/components/settings/EditTokenScopesModal.svelte +57 -0
- package/package/components/settings/EditTokenScopesModal.svelte.d.ts +10 -0
- package/package/components/settings/ScopesPicker.svelte +43 -0
- package/package/components/settings/ScopesPicker.svelte.d.ts +11 -0
- package/package/components/settings/TokensTable.svelte +51 -15
- package/package/components/sidebar/OperatorMenu.svelte +6 -0
- package/package/components/sidebar/SidebarContent.svelte +11 -1
- package/package/components/triggers/AddTriggersButton.svelte +6 -0
- package/package/components/triggers/CaptureWrapper.svelte +19 -1
- package/package/components/triggers/TriggerEditorToolbar.svelte.d.ts +1 -1
- package/package/components/triggers/TriggerModeToggle.svelte +36 -7
- package/package/components/triggers/TriggerModeToggle.svelte.d.ts +1 -1
- package/package/components/triggers/TriggerSuspendedJobsModal.svelte.d.ts +1 -1
- package/package/components/triggers/TriggersEditor.svelte +5 -1
- package/package/components/triggers/TriggersWrapper.svelte +10 -0
- package/package/components/triggers/azure/AzureCapture.svelte +41 -0
- package/package/components/triggers/azure/AzureCapture.svelte.d.ts +44 -0
- package/package/components/triggers/azure/AzureTriggerEditor.svelte +20 -0
- package/package/components/triggers/azure/AzureTriggerEditor.svelte.d.ts +9 -0
- package/package/components/triggers/azure/AzureTriggerEditorConfigSection.svelte +301 -0
- package/package/components/triggers/azure/AzureTriggerEditorConfigSection.svelte.d.ts +16 -0
- package/package/components/triggers/azure/AzureTriggerEditorInner.svelte +422 -0
- package/package/components/triggers/azure/AzureTriggerEditorInner.svelte.d.ts +25 -0
- package/package/components/triggers/azure/AzureTriggerPanel.svelte +55 -0
- package/package/components/triggers/azure/AzureTriggerPanel.svelte.d.ts +10 -0
- package/{dist/sharedUtils/components/triggers/kafka → package/components/triggers/azure}/utils.d.ts +1 -1
- package/package/components/triggers/azure/utils.js +56 -0
- package/package/components/triggers/email/EmailTriggerEditorInner.svelte +2 -0
- package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +9 -3
- package/package/components/triggers/http/RouteEditorInner.svelte +2 -0
- package/package/components/triggers/kafka/KafkaTriggerEditorInner.svelte +9 -3
- package/package/components/triggers/mqtt/MqttTriggerEditorInner.svelte +9 -3
- package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +9 -3
- package/package/components/triggers/postgres/PostgresTriggerEditorInner.svelte +9 -3
- package/package/components/triggers/schedules/ScheduleEditorInner.svelte +9 -3
- package/package/components/triggers/sqs/SqsTriggerEditorInner.svelte +9 -3
- package/package/components/triggers/triggers.svelte.d.ts +1 -0
- package/package/components/triggers/triggers.svelte.js +23 -1
- package/package/components/triggers/utils.js +20 -0
- package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +9 -3
- package/package/components/triggers.d.ts +1 -1
- package/package/components/useNestedRestartState.svelte.d.ts +56 -0
- package/package/components/useNestedRestartState.svelte.js +320 -0
- package/package/components/workspaceSettings/SharedUiSettings.svelte +175 -0
- package/package/components/workspaceSettings/SharedUiSettings.svelte.d.ts +3 -0
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +294 -24
- package/package/gen/schemas.gen.js +297 -25
- package/package/gen/services.gen.d.ts +247 -4
- package/package/gen/services.gen.js +498 -7
- package/package/gen/types.gen.d.ts +990 -37
- package/package/hubPaths.json +2 -5
- package/package/infer.d.ts +1 -1
- package/package/infer.js +37 -51
- package/package/mcpEndpointTools.js +60 -4
- package/package/script_helpers.js +17 -0
- package/package/stores.d.ts +7 -0
- package/package/stores.js +6 -1
- package/package/system_prompts/index.d.ts +1 -0
- package/package/system_prompts/index.js +8 -0
- package/package/system_prompts/prompts.d.ts +16 -13
- package/package/system_prompts/prompts.js +653 -43
- package/package/templates/ci_test_bun.ts.template +8 -0
- package/package/templates/ci_test_python.py.template +8 -0
- package/package/utils/forkConflict.d.ts +26 -0
- package/package/utils/forkConflict.js +56 -0
- package/package/utils_deployable.d.ts +164 -121
- package/package/utils_deployable.js +61 -11
- package/package/utils_workspace_deploy.js +3 -1
- package/package.json +29 -5
- package/dist/sharedUtils/assets/tokens/colorTokensConfig.d.ts +0 -2
- package/dist/sharedUtils/base.d.ts +0 -1
- package/dist/sharedUtils/cloud.d.ts +0 -1
- package/dist/sharedUtils/common.d.ts +0 -111
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/count.d.ts +0 -5
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/delete.d.ts +0 -5
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/insert.d.ts +0 -5
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/select.d.ts +0 -13
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/update.d.ts +0 -11
- package/dist/sharedUtils/components/apps/components/display/dbtable/utils.d.ts +0 -95
- package/dist/sharedUtils/components/apps/editor/appPolicy.d.ts +0 -6
- package/dist/sharedUtils/components/apps/editor/appUtilsCore.d.ts +0 -7
- package/dist/sharedUtils/components/apps/editor/appUtilsS3.d.ts +0 -33
- package/dist/sharedUtils/components/apps/editor/commonAppUtils.d.ts +0 -10
- package/dist/sharedUtils/components/apps/editor/component/components.d.ts +0 -5371
- package/dist/sharedUtils/components/apps/editor/component/default-codes.d.ts +0 -3
- package/dist/sharedUtils/components/apps/editor/component/index.d.ts +0 -3
- package/dist/sharedUtils/components/apps/editor/component/sets.d.ts +0 -7
- package/dist/sharedUtils/components/apps/editor/componentsPanel/componentDefaultProps.d.ts +0 -3
- package/dist/sharedUtils/components/apps/gridUtils.d.ts +0 -14
- package/dist/sharedUtils/components/apps/inputType.d.ts +0 -178
- package/dist/sharedUtils/components/apps/rx.d.ts +0 -29
- package/dist/sharedUtils/components/apps/sharedTypes.d.ts +0 -21
- package/dist/sharedUtils/components/apps/types.d.ts +0 -274
- package/dist/sharedUtils/components/assets/lib.d.ts +0 -25
- package/dist/sharedUtils/components/common/alert/model.d.ts +0 -2
- package/dist/sharedUtils/components/common/badge/model.d.ts +0 -8
- package/dist/sharedUtils/components/common/button/model.d.ts +0 -45
- package/dist/sharedUtils/components/common/fileInput/model.d.ts +0 -1
- package/dist/sharedUtils/components/common/index.d.ts +0 -24
- package/dist/sharedUtils/components/common/skeleton/model.d.ts +0 -21
- package/dist/sharedUtils/components/dbTypes.d.ts +0 -14
- package/dist/sharedUtils/components/diff_drawer.d.ts +0 -26
- package/dist/sharedUtils/components/ducklake.d.ts +0 -1
- package/dist/sharedUtils/components/flows/scheduleUtils.d.ts +0 -7
- package/dist/sharedUtils/components/icons/index.d.ts +0 -101
- package/dist/sharedUtils/components/random_positive_adjetive.d.ts +0 -1
- package/dist/sharedUtils/components/raw_apps/rawAppPolicy.d.ts +0 -10
- package/dist/sharedUtils/components/raw_apps/utils.d.ts +0 -15
- package/dist/sharedUtils/components/triggers/email/utils.d.ts +0 -4
- package/dist/sharedUtils/components/triggers/gcp/utils.d.ts +0 -2
- package/dist/sharedUtils/components/triggers/http/utils.d.ts +0 -11
- package/dist/sharedUtils/components/triggers/mqtt/utils.d.ts +0 -2
- package/dist/sharedUtils/components/triggers/nats/utils.d.ts +0 -2
- package/dist/sharedUtils/components/triggers/postgres/utils.d.ts +0 -8
- package/dist/sharedUtils/components/triggers/sqs/utils.d.ts +0 -2
- package/dist/sharedUtils/components/triggers/triggers.svelte.d.ts +0 -32
- package/dist/sharedUtils/components/triggers/utils.d.ts +0 -80
- package/dist/sharedUtils/components/triggers/websocket/utils.d.ts +0 -2
- package/dist/sharedUtils/components/triggers.d.ts +0 -20
- package/dist/sharedUtils/gen/core/ApiError.d.ts +0 -10
- package/dist/sharedUtils/gen/core/ApiRequestOptions.d.ts +0 -13
- package/dist/sharedUtils/gen/core/ApiResult.d.ts +0 -7
- package/dist/sharedUtils/gen/core/CancelablePromise.d.ts +0 -26
- package/dist/sharedUtils/gen/core/OpenAPI.d.ts +0 -27
- package/dist/sharedUtils/gen/core/request.d.ts +0 -29
- package/dist/sharedUtils/gen/index.d.ts +0 -6
- package/dist/sharedUtils/gen/schemas.gen.d.ts +0 -7036
- package/dist/sharedUtils/gen/services.gen.d.ts +0 -6047
- package/dist/sharedUtils/gen/types.gen.d.ts +0 -21881
- package/dist/sharedUtils/history.svelte.d.ts +0 -9
- package/dist/sharedUtils/hub.d.ts +0 -49
- package/dist/sharedUtils/jsr.json +0 -6
- package/dist/sharedUtils/lib.d.ts +0 -5
- package/dist/sharedUtils/lib.es.js +0 -1588
- package/dist/sharedUtils/package.json +0 -12
- package/dist/sharedUtils/schema.d.ts +0 -3
- package/dist/sharedUtils/stores.d.ts +0 -97
- package/dist/sharedUtils/svelte5Utils.svelte.d.ts +0 -80
- package/dist/sharedUtils/toast.d.ts +0 -8
- package/dist/sharedUtils/utils.d.ts +0 -265
- package/package/components/copilot/chat/flow/openFlowZod.js +0 -24
- /package/package/components/copilot/chat/flow/{openFlowZod.d.ts → openFlowZod.gen.d.ts} +0 -0
|
@@ -7,6 +7,7 @@ import ScriptPicker from '../../ScriptPicker.svelte';
|
|
|
7
7
|
import { NatsTriggerService } from '../../../gen';
|
|
8
8
|
import { usedTriggerKinds, userStore, workspaceStore } from '../../../stores';
|
|
9
9
|
import { canWrite, capitalize, emptyString, sendUserToast } from '../../../utils';
|
|
10
|
+
import { withForkConflictRetry } from '../../../utils/forkConflict';
|
|
10
11
|
import Section from '../../Section.svelte';
|
|
11
12
|
import { Loader2 } from 'lucide-svelte';
|
|
12
13
|
import Label from '../../Label.svelte';
|
|
@@ -213,13 +214,18 @@ function useDefaultValues() {
|
|
|
213
214
|
defaultValues.servers.some((broker) => broker.trim() !== ''));
|
|
214
215
|
}
|
|
215
216
|
async function handleToggleMode(newMode) {
|
|
217
|
+
const previousMode = mode;
|
|
216
218
|
mode = newMode;
|
|
217
219
|
if (!trigger?.draftConfig) {
|
|
218
|
-
await NatsTriggerService.setNatsTriggerMode({
|
|
220
|
+
const ok = await withForkConflictRetry((force) => NatsTriggerService.setNatsTriggerMode({
|
|
219
221
|
path: initialPath,
|
|
220
222
|
workspace: $workspaceStore ?? '',
|
|
221
|
-
requestBody: { mode: newMode }
|
|
222
|
-
});
|
|
223
|
+
requestBody: { mode: newMode, force }
|
|
224
|
+
}), 'NATS trigger');
|
|
225
|
+
if (!ok) {
|
|
226
|
+
mode = previousMode;
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
223
229
|
sendUserToast(`${capitalize(newMode)} NATS trigger ${initialPath}`);
|
|
224
230
|
onUpdate?.(initialPath);
|
|
225
231
|
}
|
|
@@ -7,6 +7,7 @@ import ScriptPicker from '../../ScriptPicker.svelte';
|
|
|
7
7
|
import { PostgresTriggerService } from '../../../gen';
|
|
8
8
|
import { usedTriggerKinds, userStore, workspaceStore } from '../../../stores';
|
|
9
9
|
import { canWrite, emptyString, emptyStringTrimmed, sendUserToast } from '../../../utils';
|
|
10
|
+
import { withForkConflictRetry } from '../../../utils/forkConflict';
|
|
10
11
|
import Section from '../../Section.svelte';
|
|
11
12
|
import { Loader2 } from 'lucide-svelte';
|
|
12
13
|
import Label from '../../Label.svelte';
|
|
@@ -362,13 +363,18 @@ const getTemplateScript = async () => {
|
|
|
362
363
|
}
|
|
363
364
|
};
|
|
364
365
|
async function handleToggleMode(newMode) {
|
|
366
|
+
const previousMode = mode;
|
|
365
367
|
mode = newMode;
|
|
366
368
|
if (!trigger?.draftConfig) {
|
|
367
|
-
await PostgresTriggerService.setPostgresTriggerMode({
|
|
369
|
+
const ok = await withForkConflictRetry((force) => PostgresTriggerService.setPostgresTriggerMode({
|
|
368
370
|
path: initialPath,
|
|
369
371
|
workspace: $workspaceStore ?? '',
|
|
370
|
-
requestBody: { mode: newMode }
|
|
371
|
-
});
|
|
372
|
+
requestBody: { mode: newMode, force }
|
|
373
|
+
}), 'postgres trigger');
|
|
374
|
+
if (!ok) {
|
|
375
|
+
mode = previousMode;
|
|
376
|
+
return;
|
|
377
|
+
}
|
|
372
378
|
sendUserToast(`${capitalize(newMode)} postgres trigger ${initialPath}`);
|
|
373
379
|
onUpdate?.(initialPath);
|
|
374
380
|
}
|
|
@@ -26,6 +26,7 @@ import Label from '../../Label.svelte';
|
|
|
26
26
|
import WorkerTagPicker from '../../WorkerTagPicker.svelte';
|
|
27
27
|
import { runScheduleNow } from '../scheduled/utils';
|
|
28
28
|
import { handleConfigChange } from '../utils';
|
|
29
|
+
import { withForkConflictRetry } from '../../../utils/forkConflict';
|
|
29
30
|
import TextInput from '../../text_input/TextInput.svelte';
|
|
30
31
|
import { twMerge } from 'tailwind-merge';
|
|
31
32
|
import PermissionedAsLine from '../PermissionedAsLine.svelte';
|
|
@@ -575,13 +576,18 @@ function getScheduleCfg() {
|
|
|
575
576
|
};
|
|
576
577
|
}
|
|
577
578
|
async function handleToggleEnabled(nEnabled) {
|
|
579
|
+
const previousEnabled = enabled;
|
|
578
580
|
enabled = nEnabled;
|
|
579
581
|
if (!trigger?.draftConfig) {
|
|
580
|
-
await ScheduleService.setScheduleEnabled({
|
|
582
|
+
const ok = await withForkConflictRetry((force) => ScheduleService.setScheduleEnabled({
|
|
581
583
|
path: initialPath,
|
|
582
584
|
workspace: $workspaceStore ?? '',
|
|
583
|
-
requestBody: { enabled: nEnabled }
|
|
584
|
-
});
|
|
585
|
+
requestBody: { enabled: nEnabled, force }
|
|
586
|
+
}), 'schedule');
|
|
587
|
+
if (!ok) {
|
|
588
|
+
enabled = previousEnabled;
|
|
589
|
+
return;
|
|
590
|
+
}
|
|
585
591
|
sendUserToast(`${nEnabled ? 'enabled' : 'disabled'} schedule ${initialPath}`);
|
|
586
592
|
onUpdate?.(initialPath);
|
|
587
593
|
}
|
|
@@ -4,6 +4,7 @@ import DrawerContent from '../../common/drawer/DrawerContent.svelte';
|
|
|
4
4
|
import Path from '../../Path.svelte';
|
|
5
5
|
import { usedTriggerKinds, userStore, workspaceStore } from '../../../stores';
|
|
6
6
|
import { canWrite, capitalize, emptyString, sendUserToast } from '../../../utils';
|
|
7
|
+
import { withForkConflictRetry } from '../../../utils/forkConflict';
|
|
7
8
|
import { Loader2 } from 'lucide-svelte';
|
|
8
9
|
import Label from '../../Label.svelte';
|
|
9
10
|
import { SqsTriggerService } from '../../../gen';
|
|
@@ -186,13 +187,18 @@ function getSaveCfg() {
|
|
|
186
187
|
};
|
|
187
188
|
}
|
|
188
189
|
async function handleToggleMode(newMode) {
|
|
190
|
+
const previousMode = mode;
|
|
189
191
|
mode = newMode;
|
|
190
192
|
if (!trigger?.draftConfig) {
|
|
191
|
-
await SqsTriggerService.setSqsTriggerMode({
|
|
193
|
+
const ok = await withForkConflictRetry((force) => SqsTriggerService.setSqsTriggerMode({
|
|
192
194
|
path: initialPath,
|
|
193
195
|
workspace: $workspaceStore ?? '',
|
|
194
|
-
requestBody: { mode: newMode }
|
|
195
|
-
});
|
|
196
|
+
requestBody: { mode: newMode, force }
|
|
197
|
+
}), 'SQS trigger');
|
|
198
|
+
if (!ok) {
|
|
199
|
+
mode = previousMode;
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
196
202
|
sendUserToast(`${capitalize(newMode)} SQS trigger ${initialPath}`);
|
|
197
203
|
onUpdate?.(initialPath);
|
|
198
204
|
}
|
|
@@ -26,6 +26,7 @@ export declare class Triggers {
|
|
|
26
26
|
fetchMqttTriggers(triggersCountStore: Writable<TriggersCount | undefined>, workspaceId: string | undefined, path: string, isFlow: boolean, user?: UserExt | undefined): Promise<void>;
|
|
27
27
|
fetchSqsTriggers(triggersCountStore: Writable<TriggersCount | undefined>, workspaceId: string | undefined, path: string, isFlow: boolean, user?: UserExt | undefined): Promise<void>;
|
|
28
28
|
fetchGcpTriggers(triggersCountStore: Writable<TriggersCount | undefined>, workspaceId: string | undefined, path: string, isFlow: boolean, user?: UserExt | undefined): Promise<void>;
|
|
29
|
+
fetchAzureTriggers(triggersCountStore: Writable<TriggersCount | undefined>, workspaceId: string | undefined, path: string, isFlow: boolean, user?: UserExt | undefined): Promise<void>;
|
|
29
30
|
fetchHttpTriggers(triggersCountStore: Writable<TriggersCount | undefined>, workspaceId: string | undefined, path: string, isFlow: boolean, user?: UserExt | undefined): Promise<void>;
|
|
30
31
|
fetchEmailTriggers(triggersCountStore: Writable<TriggersCount | undefined>, workspaceId: string | undefined, path: string, isFlow: boolean, user?: UserExt | undefined): Promise<void>;
|
|
31
32
|
fetchNativeTriggers(triggersCountStore: Writable<TriggersCount | undefined>, serviceName: NativeServiceName, workspaceId: string | undefined, path: string, isFlow: boolean, user?: UserExt | undefined): Promise<void>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { KafkaTriggerService, MqttTriggerService, NatsTriggerService, PostgresTriggerService, ScheduleService, SqsTriggerService, WebsocketTriggerService, NativeTriggerService, HttpTriggerService, GcpTriggerService, EmailTriggerService } from '../../gen';
|
|
1
|
+
import { KafkaTriggerService, MqttTriggerService, NatsTriggerService, PostgresTriggerService, ScheduleService, SqsTriggerService, WebsocketTriggerService, NativeTriggerService, HttpTriggerService, GcpTriggerService, AzureTriggerService, EmailTriggerService } from '../../gen';
|
|
2
2
|
import { enterpriseLicense } from '../../stores';
|
|
3
3
|
import { getLightConfig, sortTriggers, updateTriggersCount } from './utils';
|
|
4
4
|
import { get } from 'svelte/store';
|
|
@@ -298,6 +298,27 @@ export class Triggers {
|
|
|
298
298
|
console.error('Failed to fetch GCP Pub/Sub triggers:', error);
|
|
299
299
|
}
|
|
300
300
|
}
|
|
301
|
+
async fetchAzureTriggers(triggersCountStore, workspaceId, path, isFlow, user = undefined) {
|
|
302
|
+
if (!workspaceId)
|
|
303
|
+
return;
|
|
304
|
+
try {
|
|
305
|
+
const azureTriggers = await AzureTriggerService.listAzureTriggers({
|
|
306
|
+
workspace: workspaceId,
|
|
307
|
+
path,
|
|
308
|
+
isFlow
|
|
309
|
+
});
|
|
310
|
+
const azureCount = this.updateTriggers(azureTriggers, 'azure', user);
|
|
311
|
+
triggersCountStore.update((triggersCount) => {
|
|
312
|
+
return {
|
|
313
|
+
...(triggersCount ?? {}),
|
|
314
|
+
azure_count: azureCount
|
|
315
|
+
};
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
catch (error) {
|
|
319
|
+
console.error('Failed to fetch Azure triggers:', error);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
301
322
|
async fetchHttpTriggers(triggersCountStore, workspaceId, path, isFlow, user = undefined) {
|
|
302
323
|
if (!workspaceId)
|
|
303
324
|
return;
|
|
@@ -389,6 +410,7 @@ export class Triggers {
|
|
|
389
410
|
this.fetchKafkaTriggers(triggersCountStore, workspaceId, path, isFlow, user),
|
|
390
411
|
this.fetchSqsTriggers(triggersCountStore, workspaceId, path, isFlow, user),
|
|
391
412
|
this.fetchGcpTriggers(triggersCountStore, workspaceId, path, isFlow, user),
|
|
413
|
+
this.fetchAzureTriggers(triggersCountStore, workspaceId, path, isFlow, user),
|
|
392
414
|
this.fetchEmailTriggers(triggersCountStore, workspaceId, path, isFlow, user),
|
|
393
415
|
this.fetchNatsTriggers(triggersCountStore, workspaceId, path, isFlow, user)
|
|
394
416
|
]
|
|
@@ -4,6 +4,7 @@ import NatsIcon from '../icons/NatsIcon.svelte';
|
|
|
4
4
|
import MqttIcon from '../icons/MqttIcon.svelte';
|
|
5
5
|
import AwsIcon from '../icons/AwsIcon.svelte';
|
|
6
6
|
import GoogleCloudIcon from '../icons/GoogleCloudIcon.svelte';
|
|
7
|
+
import AzureIcon from '../icons/AzureIcon.svelte';
|
|
7
8
|
import SchedulePollIcon from '../icons/SchedulePollIcon.svelte';
|
|
8
9
|
import { saveScheduleFromCfg } from '../flows/scheduleUtils';
|
|
9
10
|
import { saveHttpRouteFromCfg } from './http/utils';
|
|
@@ -14,6 +15,7 @@ import { saveSqsTriggerFromCfg } from './sqs/utils';
|
|
|
14
15
|
import { saveNatsTriggerFromCfg } from './nats/utils';
|
|
15
16
|
import { saveMqttTriggerFromCfg } from './mqtt/utils';
|
|
16
17
|
import { saveGcpTriggerFromCfg } from './gcp/utils';
|
|
18
|
+
import { saveAzureTriggerFromCfg } from './azure/utils';
|
|
17
19
|
import { emptyString } from '../../utils';
|
|
18
20
|
import { saveEmailTriggerFromCfg } from './email/utils';
|
|
19
21
|
import NextcloudIcon from '../icons/NextcloudIcon.svelte';
|
|
@@ -26,6 +28,7 @@ export const CLOUD_DISABLED_TRIGGER_TYPES = [
|
|
|
26
28
|
'sqs',
|
|
27
29
|
'mqtt',
|
|
28
30
|
'gcp',
|
|
31
|
+
'azure',
|
|
29
32
|
'websocket',
|
|
30
33
|
'postgres'
|
|
31
34
|
];
|
|
@@ -42,6 +45,7 @@ export const jobTriggerKinds = [
|
|
|
42
45
|
'postgres',
|
|
43
46
|
'schedule',
|
|
44
47
|
'gcp',
|
|
48
|
+
'azure',
|
|
45
49
|
'google',
|
|
46
50
|
'github'
|
|
47
51
|
];
|
|
@@ -59,6 +63,7 @@ export const triggerIconMap = {
|
|
|
59
63
|
mqtt: MqttIcon,
|
|
60
64
|
sqs: AwsIcon,
|
|
61
65
|
gcp: GoogleCloudIcon,
|
|
66
|
+
azure: AzureIcon,
|
|
62
67
|
primary_schedule: Calendar,
|
|
63
68
|
poll: SchedulePollIcon,
|
|
64
69
|
cli: Terminal,
|
|
@@ -76,6 +81,7 @@ export const triggerDisplayNamesMap = {
|
|
|
76
81
|
mqtt: 'MQTT',
|
|
77
82
|
sqs: 'SQS',
|
|
78
83
|
gcp: 'GCP Pub/Sub',
|
|
84
|
+
azure: 'Azure Event Grid',
|
|
79
85
|
email: 'Email',
|
|
80
86
|
poll: 'Scheduled Poll',
|
|
81
87
|
webhook: 'Webhook',
|
|
@@ -104,6 +110,7 @@ export function triggerTypeToCaptureKind(triggerType) {
|
|
|
104
110
|
'mqtt',
|
|
105
111
|
'sqs',
|
|
106
112
|
'gcp',
|
|
113
|
+
'azure',
|
|
107
114
|
'cli'
|
|
108
115
|
];
|
|
109
116
|
if (capturableTriggerTypes.includes(triggerType)) {
|
|
@@ -125,6 +132,7 @@ export function updateTriggersCount(triggersCountStore, type, action, primaryCfg
|
|
|
125
132
|
mqtt: 'mqtt_count',
|
|
126
133
|
sqs: 'sqs_count',
|
|
127
134
|
gcp: 'gcp_count',
|
|
135
|
+
azure: 'azure_count',
|
|
128
136
|
email: 'email_count',
|
|
129
137
|
poll: undefined,
|
|
130
138
|
cli: undefined,
|
|
@@ -194,6 +202,8 @@ export function triggerKindToTriggerType(kind) {
|
|
|
194
202
|
return 'sqs';
|
|
195
203
|
case 'gcp':
|
|
196
204
|
return 'gcp';
|
|
205
|
+
case 'azure':
|
|
206
|
+
return 'azure';
|
|
197
207
|
case 'scheduledPoll':
|
|
198
208
|
return 'poll';
|
|
199
209
|
default:
|
|
@@ -233,6 +243,7 @@ export async function deployTriggers(triggersToDeploy, workspaceId, isAdmin, use
|
|
|
233
243
|
mqtt: (trigger) => saveMqttTriggerFromCfg(trigger.path ?? trigger.draftConfig?.path ?? '', trigger.draftConfig ?? {}, !trigger.isDraft, workspaceId, usedTriggerKinds),
|
|
234
244
|
sqs: (trigger) => saveSqsTriggerFromCfg(trigger.path ?? trigger.draftConfig?.path ?? '', trigger.draftConfig ?? {}, !trigger.isDraft, workspaceId, usedTriggerKinds),
|
|
235
245
|
gcp: (trigger) => saveGcpTriggerFromCfg(trigger.path ?? trigger.draftConfig?.path ?? '', trigger.draftConfig ?? {}, !trigger.isDraft, workspaceId, usedTriggerKinds),
|
|
246
|
+
azure: (trigger) => saveAzureTriggerFromCfg(trigger.path ?? trigger.draftConfig?.path ?? '', trigger.draftConfig ?? {}, !trigger.isDraft, workspaceId, usedTriggerKinds),
|
|
236
247
|
email: (trigger) => saveEmailTriggerFromCfg(trigger.path ?? trigger.draftConfig?.path ?? '', trigger.draftConfig ?? {}, !trigger.isDraft, workspaceId, isAdmin, usedTriggerKinds),
|
|
237
248
|
poll: undefined,
|
|
238
249
|
cli: undefined,
|
|
@@ -316,6 +327,14 @@ export function getLightConfig(triggerType, trigger) {
|
|
|
316
327
|
else if (triggerType === 'gcp') {
|
|
317
328
|
return { gcp_resource_path: trigger.gcp_resource_path, topic: trigger.topic };
|
|
318
329
|
}
|
|
330
|
+
else if (triggerType === 'azure') {
|
|
331
|
+
return {
|
|
332
|
+
azure_resource_path: trigger.azure_resource_path,
|
|
333
|
+
azure_mode: trigger.azure_mode,
|
|
334
|
+
scope_resource_id: trigger.scope_resource_id,
|
|
335
|
+
topic_name: trigger.topic_name
|
|
336
|
+
};
|
|
337
|
+
}
|
|
319
338
|
else if (triggerType === 'email') {
|
|
320
339
|
return { local_part: trigger.local_part };
|
|
321
340
|
}
|
|
@@ -435,6 +454,7 @@ export function sortTriggers(triggers) {
|
|
|
435
454
|
'mqtt',
|
|
436
455
|
'sqs',
|
|
437
456
|
'gcp',
|
|
457
|
+
'azure',
|
|
438
458
|
'email',
|
|
439
459
|
'nextcloud',
|
|
440
460
|
'google',
|
|
@@ -8,6 +8,7 @@ import ScriptPicker from '../../ScriptPicker.svelte';
|
|
|
8
8
|
import { FlowService, ScriptService, WebsocketTriggerService } from '../../../gen';
|
|
9
9
|
import { usedTriggerKinds, userStore, workspaceStore } from '../../../stores';
|
|
10
10
|
import { canWrite, emptySchema, emptyString, sendUserToast } from '../../../utils';
|
|
11
|
+
import { withForkConflictRetry } from '../../../utils/forkConflict';
|
|
11
12
|
import Section from '../../Section.svelte';
|
|
12
13
|
import { Loader2, X, Plus } from 'lucide-svelte';
|
|
13
14
|
import Label from '../../Label.svelte';
|
|
@@ -282,13 +283,18 @@ function getCaptureConfig() {
|
|
|
282
283
|
};
|
|
283
284
|
}
|
|
284
285
|
async function handleToggleMode(newMode) {
|
|
286
|
+
const previousMode = mode;
|
|
285
287
|
mode = newMode;
|
|
286
288
|
if (!trigger?.draftConfig) {
|
|
287
|
-
await WebsocketTriggerService.setWebsocketTriggerMode({
|
|
289
|
+
const ok = await withForkConflictRetry((force) => WebsocketTriggerService.setWebsocketTriggerMode({
|
|
288
290
|
path: initialPath,
|
|
289
291
|
workspace: $workspaceStore ?? '',
|
|
290
|
-
requestBody: { mode: newMode }
|
|
291
|
-
});
|
|
292
|
+
requestBody: { mode: newMode, force }
|
|
293
|
+
}), 'websocket trigger');
|
|
294
|
+
if (!ok) {
|
|
295
|
+
mode = previousMode;
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
292
298
|
sendUserToast(`${capitalize(newMode)} websocket trigger ${initialPath}`);
|
|
293
299
|
onUpdate?.(initialPath);
|
|
294
300
|
}
|
|
@@ -16,5 +16,5 @@ export type TriggerContext = {
|
|
|
16
16
|
triggersState: Triggers;
|
|
17
17
|
};
|
|
18
18
|
export declare function setScheduledPollSchedule(triggersState: Triggers, triggersCount: Writable<TriggersCount | undefined>): void;
|
|
19
|
-
export type TriggerKind = 'webhooks' | 'emails' | 'default_emails' | 'schedules' | 'cli' | 'routes' | 'websockets' | 'scheduledPoll' | 'kafka' | 'nats' | 'postgres' | 'mqtt' | 'sqs' | 'gcp' | 'nextcloud' | 'google' | 'github';
|
|
19
|
+
export type TriggerKind = 'webhooks' | 'emails' | 'default_emails' | 'schedules' | 'cli' | 'routes' | 'websockets' | 'scheduledPoll' | 'kafka' | 'nats' | 'postgres' | 'mqtt' | 'sqs' | 'gcp' | 'azure' | 'nextcloud' | 'google' | 'github';
|
|
20
20
|
export declare function captureTriggerKindToTriggerKind(kind: CaptureTriggerKind): TriggerKind;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { FlowModule, Job } from '../gen';
|
|
2
|
+
import type { GraphModuleState } from './graph';
|
|
3
|
+
export type NestedRestartStep = {
|
|
4
|
+
step_id: string;
|
|
5
|
+
branch_or_iteration_n?: number;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Reactive state shared by the run page and the editor's flow preview to drive
|
|
9
|
+
* the "restart flow at step" UI. Given the currently selected step, the
|
|
10
|
+
* completed flow job, the graph's per-module display state, and any expanded
|
|
11
|
+
* subflow definitions, derives:
|
|
12
|
+
*
|
|
13
|
+
* - `selectedJobStepIsTopLevel` — whether the selected step appears in the
|
|
14
|
+
* parent flow's top-level `flow_status.modules`
|
|
15
|
+
* - `selectedJobStepType` — `single` / `forloop` / `branchall`, used by the
|
|
16
|
+
* popup to decide which controls to render for the OUTER container
|
|
17
|
+
* - `restartBranchNames` — for top-level BranchAll steps, the labels for the
|
|
18
|
+
* branch picker
|
|
19
|
+
* - `nestedRestartTopStepId` / `nestedRestartTopBranchOrIterationN` /
|
|
20
|
+
* `nestedRestartPath` — the API request shape when restarting at a nested
|
|
21
|
+
* step (single source of truth for both call sites)
|
|
22
|
+
* - `nestedRestartSupported` — gate for showing the button when the selected
|
|
23
|
+
* step is nested (subflow expansion or BranchOne / sequential ForLoop)
|
|
24
|
+
* - `topLevelLoopIteration` — when the selected step IS a top-level ForLoop,
|
|
25
|
+
* the iteration the user is currently viewing (pre-fills the popup input)
|
|
26
|
+
* - `iterationCounts` — map of step id → number of recorded iterations,
|
|
27
|
+
* so the popup can render an iteration `<select>` matching the graph's tabs
|
|
28
|
+
* instead of a free-form number input
|
|
29
|
+
*
|
|
30
|
+
* Inputs are passed as getters so the composable stays reactive in either
|
|
31
|
+
* caller's signal graph.
|
|
32
|
+
*/
|
|
33
|
+
export declare function useNestedRestartState(opts: {
|
|
34
|
+
selectedJobStep: () => string | undefined;
|
|
35
|
+
job: () => Job | undefined;
|
|
36
|
+
graphModuleStates: () => Record<string, GraphModuleState>;
|
|
37
|
+
/** Subflow definitions cached when the user expands a subflow in the graph,
|
|
38
|
+
* keyed by the graph node id (i.e. the prefixed `subflow:...:<step_id>` for
|
|
39
|
+
* nested subflows). Lets us walk inside subflows when building the nested
|
|
40
|
+
* restart path. */
|
|
41
|
+
expandedSubflows?: () => Record<string, {
|
|
42
|
+
modules: FlowModule[];
|
|
43
|
+
}>;
|
|
44
|
+
}): {
|
|
45
|
+
readonly selectedJobStepIsTopLevel: boolean | undefined;
|
|
46
|
+
readonly selectedJobStepType: "branchall" | "forloop" | "single";
|
|
47
|
+
readonly restartBranchNames: [number, string][];
|
|
48
|
+
readonly nestedRestartTopStepId: string | undefined;
|
|
49
|
+
readonly nestedRestartTopBranchOrIterationN: number | undefined;
|
|
50
|
+
readonly nestedRestartPath: NestedRestartStep[] | undefined;
|
|
51
|
+
readonly nestedRestartSupported: boolean;
|
|
52
|
+
readonly topLevelLoopIteration: number | undefined;
|
|
53
|
+
readonly topLevelRestartable: boolean;
|
|
54
|
+
readonly iterationCounts: Record<string, number>;
|
|
55
|
+
readonly nestedPathIterationCounts: Record<string, number>;
|
|
56
|
+
};
|