windmill-components 1.677.1 → 1.695.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 +6 -0
- package/package/components/ArgInput.svelte +2 -0
- package/package/components/AutoscalingConfigEditor.svelte +18 -4
- package/package/components/CiTestResults.svelte +64 -0
- package/package/components/CiTestResults.svelte.d.ts +7 -0
- package/package/components/CompareWorkspaces.svelte +741 -484
- package/package/components/DBManager.svelte +35 -4
- package/package/components/DBManager.svelte.d.ts +2 -0
- package/package/components/DBManagerContent.svelte +3 -1
- package/package/components/DBManagerContent.svelte.d.ts +3 -0
- package/package/components/DBManagerDrawer.svelte +145 -3
- package/package/components/DBTableEditor.svelte +14 -4
- package/package/components/DatatablePicker.svelte +2 -5
- package/package/components/DatatableSchemaDiff.svelte +531 -0
- package/package/components/DatatableSchemaDiff.svelte.d.ts +29 -0
- package/package/components/DedicatedWorkersSelector.svelte +4 -2
- package/package/components/DefaultTagsInner.svelte +42 -2
- package/package/components/DeployWorkspaceDrawer.svelte +1 -1
- package/package/components/Dev.svelte +407 -74
- package/package/components/EditableSchemaForm.svelte +4 -0
- package/package/components/Editor.svelte +1 -1
- package/package/components/EditorBar.svelte +1 -1
- package/package/components/EditorBar.svelte.d.ts +1 -1
- 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 +270 -222
- package/package/components/FlowStatusViewerInner.svelte.d.ts +6 -2
- package/package/components/FlowTimeline.svelte +1 -1
- package/package/components/FolderEditor.svelte +189 -4
- package/package/components/ForkConflictModal.svelte +57 -0
- package/package/components/ForkConflictModal.svelte.d.ts +3 -0
- package/package/components/ForkWorkspaceBanner.svelte +82 -11
- package/package/components/GitRepoViewer.svelte +251 -97
- package/package/components/GlobalUserOffboardingModal.svelte +293 -0
- package/package/components/GlobalUserOffboardingModal.svelte.d.ts +10 -0
- package/package/components/InputTransformSchemaForm.svelte +1 -1
- package/package/components/InstanceSettings.svelte +58 -19
- package/package/components/Login.svelte +133 -36
- package/package/components/Login.svelte.d.ts +1 -0
- package/package/components/ModuleTest.svelte +2 -1
- package/package/components/NoMainFuncBadge.svelte +1 -1
- package/package/components/OffboardItemsBox.svelte +56 -0
- package/package/components/OffboardItemsBox.svelte.d.ts +12 -0
- package/package/components/OffboardReassignControls.svelte +47 -0
- package/package/components/OffboardReassignControls.svelte.d.ts +20 -0
- package/package/components/OffboardWorkspaceSection.svelte +110 -0
- package/package/components/OffboardWorkspaceSection.svelte.d.ts +24 -0
- package/package/components/OnBehalfOfSelector.svelte +21 -3
- package/package/components/OnBehalfOfSelector.svelte.d.ts +7 -0
- package/package/components/Path.svelte +7 -1
- package/package/components/Path.svelte.d.ts +1 -1
- package/package/components/QueueAlerts.svelte +10 -10
- package/package/components/ResourcePicker.svelte +2 -2
- package/package/components/RunsPage.svelte +2 -1
- package/package/components/S3FilePickerInner.svelte +89 -89
- package/package/components/ScriptBuilder.svelte +52 -11
- package/package/components/ScriptEditor.svelte +19 -8
- package/package/components/ScriptEditor.svelte.d.ts +1 -1
- package/package/components/ShareModal.svelte +236 -98
- package/package/components/ShareModal.svelte.d.ts +1 -1
- package/package/components/SuperadminSettingsInner.svelte +362 -315
- package/package/components/UserOffboardingModal.svelte +238 -0
- package/package/components/UserOffboardingModal.svelte.d.ts +10 -0
- package/package/components/WorkspaceDeployLayout.svelte +3 -3
- package/package/components/WorkspaceDeployLayout.svelte.d.ts +1 -0
- 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/InlineScriptRunnableByPath.svelte +4 -2
- 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/editor/settingsPanel/mainInput/RunnableSelector.svelte +12 -0
- package/package/components/apps/inputType.d.ts +1 -0
- package/package/components/apps/sharedTypes.d.ts +1 -0
- package/package/components/assets/AssetsDropdownButton.svelte +1 -1
- package/package/components/auditLogs/AuditLogsFilters.svelte +8 -3
- package/package/components/common/confirmationModal/ConfirmationModal.svelte +1 -1
- package/package/components/common/fileUpload/S3ArgInput.svelte +12 -10
- package/package/components/common/fileUpload/S3ArgInput.svelte.d.ts +2 -0
- package/package/components/common/table/AppRow.svelte +3 -3
- package/package/components/common/table/FlowRow.svelte +3 -3
- package/package/components/common/table/RawAppRow.svelte +4 -4
- package/package/components/common/table/Row.svelte +6 -2
- package/package/components/common/table/ScriptRow.svelte +11 -3
- 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 +50 -48
- package/package/components/copilot/chat/ContextElementBadge.svelte +6 -4
- package/package/components/copilot/chat/anthropic.d.ts +7 -1
- package/package/components/copilot/chat/anthropic.js +5 -2
- package/package/components/copilot/chat/app/core.d.ts +12 -20
- package/package/components/copilot/chat/app/core.js +230 -159
- package/package/components/copilot/chat/app/core.test.js +417 -0
- package/package/components/copilot/chat/chatLoop.d.ts +3 -0
- package/package/components/copilot/chat/chatLoop.js +13 -5
- package/package/components/copilot/chat/context.js +44 -0
- package/package/components/copilot/chat/flow/FlowAIChat.svelte +57 -76
- package/package/components/copilot/chat/flow/core.d.ts +14 -3
- package/package/components/copilot/chat/flow/core.js +494 -116
- package/package/components/copilot/chat/flow/helperUtils.d.ts +22 -0
- package/package/components/copilot/chat/flow/helperUtils.js +100 -0
- package/package/components/copilot/chat/flow/helperUtils.test.js +231 -0
- package/package/components/copilot/chat/flow/inlineScriptsUtils.d.ts +5 -24
- package/package/components/copilot/chat/flow/inlineScriptsUtils.js +30 -55
- 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/flow/utils.test.js +59 -0
- package/package/components/copilot/chat/openai-responses.d.ts +7 -1
- package/package/components/copilot/chat/openai-responses.js +5 -2
- package/package/components/copilot/chat/script/core.js +3 -0
- package/package/components/copilot/chat/shared.d.ts +7 -2
- package/package/components/copilot/chat/shared.js +116 -53
- 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/tokenUsage.d.ts +23 -0
- package/package/components/copilot/chat/tokenUsage.js +42 -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.d.ts +5 -1
- package/package/components/copilot/lib.js +24 -6
- 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/deploymentRequest/DeploymentRequestPanel.svelte +337 -0
- package/package/components/deploymentRequest/DeploymentRequestPanel.svelte.d.ts +15 -0
- package/package/components/details/CopyableCodeBlock.svelte +18 -8
- package/package/components/details/CopyableCodeBlock.svelte.d.ts +1 -0
- package/package/components/flows/FlowAssetsHandler.svelte +19 -21
- package/package/components/flows/FlowProgressBar.svelte +5 -2
- package/package/components/flows/agentToolTree.d.ts +17 -0
- package/package/components/flows/agentToolTree.js +114 -0
- package/package/components/flows/agentToolTree.test.d.ts +1 -0
- package/package/components/flows/agentToolTree.test.js +86 -0
- package/package/components/flows/agentToolUtils.d.ts +0 -5
- package/package/components/flows/agentToolUtils.js +0 -49
- package/package/components/flows/content/FlowLoop.svelte +7 -4
- package/package/components/flows/content/FlowModuleComponent.svelte +636 -599
- package/package/components/flows/content/FlowModuleDeleteAfterUse.svelte +15 -7
- package/package/components/flows/content/FlowSettings.svelte +29 -0
- package/package/components/flows/conversations/FlowChatManager.svelte.js +21 -10
- package/package/components/flows/dfs.d.ts +6 -2
- package/package/components/flows/dfs.js +19 -11
- package/package/components/flows/flowDeleteController.d.ts +32 -0
- package/package/components/flows/flowDeleteController.js +54 -0
- package/package/components/flows/flowDeleteController.test.d.ts +1 -0
- package/package/components/flows/flowDeleteController.test.js +121 -0
- package/package/components/flows/flowDeleteUtils.d.ts +48 -0
- package/package/components/flows/flowDeleteUtils.js +150 -0
- package/package/components/flows/flowDeleteUtils.test.d.ts +1 -0
- package/package/components/flows/flowDeleteUtils.test.js +131 -0
- package/package/components/flows/flowDiff.d.ts +2 -47
- package/package/components/flows/flowDiff.js +16 -293
- package/package/components/flows/flowDiff.testUtils.d.ts +8 -0
- package/package/components/flows/flowDiff.testUtils.js +26 -0
- package/package/components/flows/flowDiffManager.svelte.js +20 -75
- package/package/components/flows/flowDiffManager.svelte.test.js +103 -2
- package/package/components/flows/flowExplorer.d.ts +4 -0
- package/package/components/flows/flowExplorer.js +7 -30
- package/package/components/flows/flowState.d.ts +1 -0
- package/package/components/flows/flowStateUtils.svelte.js +11 -2
- package/package/components/flows/flowTree.d.ts +91 -0
- package/package/components/flows/flowTree.js +326 -0
- package/package/components/flows/flowTree.test.d.ts +1 -0
- package/package/components/flows/flowTree.test.js +236 -0
- package/package/components/flows/map/FlowJobsMenu.svelte +36 -30
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +1 -1
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +73 -229
- package/package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +1 -2
- package/package/components/flows/pickers/PickHubScriptQuick.svelte +2 -2
- package/package/components/flows/previousResults.js +13 -41
- package/package/components/flows/previousResults.test.d.ts +1 -0
- package/package/components/flows/previousResults.test.js +65 -0
- package/package/components/flows/propPicker/OutputPicker.svelte +2 -1
- package/package/components/flows/propPicker/OutputPickerInner.svelte +41 -4
- package/package/components/flows/propPicker/StepHistory.svelte +9 -1
- package/package/components/git_sync/GitSyncContext.svelte.js +11 -7
- package/package/components/git_sync/GitSyncRepositoryCard.svelte +2 -29
- package/package/components/git_sync/PullWorkspaceModal.svelte +6 -7
- package/package/components/graph/FlowGraphV2.svelte +8 -4
- package/package/components/graph/FlowGraphV2.svelte.d.ts +2 -0
- package/package/components/graph/groupedModulesProxy.svelte.d.ts +10 -0
- package/package/components/graph/groupedModulesProxy.svelte.js +17 -1
- package/package/components/graph/renderers/triggers/TriggersBadge.svelte +8 -2
- package/package/components/home/HomeConnectDrawer.svelte +125 -0
- package/package/components/home/HomeConnectDrawer.svelte.d.ts +5 -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/icons/GithubIcon.svelte +4 -4
- package/package/components/icons/GithubIcon.svelte.d.ts +5 -2
- package/package/components/instanceSettings/ExternalJwtTokens.svelte +85 -0
- package/package/components/instanceSettings/ExternalJwtTokens.svelte.d.ts +12 -0
- package/package/components/instanceSettings/GhesAppSettings.svelte +17 -0
- package/package/components/instanceSettings/IndexerMemorySettings.svelte +56 -29
- package/package/components/instanceSettings/SecretBackendConfig.svelte +9 -2
- package/package/components/instanceSettings.d.ts +1 -0
- package/package/components/instanceSettings.js +66 -8
- package/package/components/mcp/McpScopeSelector.svelte +119 -9
- package/package/components/mcp/McpScopeSelector.svelte.d.ts +1 -0
- package/package/components/offboarding-utils.d.ts +11 -0
- package/package/components/offboarding-utils.js +102 -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/RawAppDataTableDrawer.svelte +1 -1
- package/package/components/raw_apps/RawAppEditor.svelte +186 -102
- package/package/components/raw_apps/RawAppEditorHeader.svelte +6 -1
- package/package/components/raw_apps/RawAppEditorHeader.svelte.d.ts +1 -0
- 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/RawAppYamlEditor.svelte +81 -0
- package/package/components/raw_apps/RawAppYamlEditor.svelte.d.ts +20 -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/datatableUtils.svelte.js +1 -1
- 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/script_builder.d.ts +1 -1
- package/package/components/search/GlobalSearchModal.svelte +8 -1
- package/package/components/select/Select.svelte +3 -2
- package/package/components/select/Select.svelte.d.ts +1 -0
- package/package/components/settings/CreateToken.svelte +91 -71
- package/package/components/settings/CreateToken.svelte.d.ts +3 -0
- 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/settings/WorkspaceUserSettings.svelte +34 -28
- package/package/components/sidebar/OperatorMenu.svelte +6 -0
- package/package/components/sidebar/SidebarContent.svelte +68 -2
- package/package/components/sidebar/WorkspaceMenu.svelte +8 -4
- package/package/components/triggers/AddTriggersButton.svelte +17 -0
- package/package/components/triggers/CaptureWrapper.svelte +19 -1
- package/package/components/triggers/PermissionedAsLine.svelte +37 -3
- package/package/components/triggers/PermissionedAsLine.svelte.d.ts +6 -0
- 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 +10 -2
- package/package/components/triggers/TriggersWrapper.svelte +20 -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 +15 -11
- package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +22 -14
- package/package/components/triggers/http/RouteEditorConfigSection.svelte +15 -7
- package/package/components/triggers/http/RouteEditorInner.svelte +16 -14
- package/package/components/triggers/http/RoutesGenerator.svelte +6 -1
- package/package/components/triggers/http/RoutesPanel.svelte +1 -1
- package/package/components/triggers/http/utils.d.ts +1 -1
- package/package/components/triggers/http/utils.js +2 -2
- package/package/components/triggers/kafka/KafkaTriggerEditorInner.svelte +22 -14
- package/package/components/triggers/mqtt/MqttTriggerEditorInner.svelte +22 -14
- package/package/components/triggers/native/NativeTriggerEditor.svelte +3 -0
- package/package/components/triggers/native/services/github/GitHubTriggerForm.svelte +118 -0
- package/package/components/triggers/native/services/github/GitHubTriggerForm.svelte.d.ts +17 -0
- package/package/components/triggers/native/utils.js +14 -0
- package/package/components/triggers/nats/NatsTriggerEditor.svelte.d.ts +4 -3
- package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +22 -14
- package/package/components/triggers/postgres/PostgresTriggerEditor.svelte.d.ts +4 -3
- package/package/components/triggers/postgres/PostgresTriggerEditorInner.svelte +22 -14
- package/package/components/triggers/schedules/ScheduleEditorInner.svelte +22 -14
- package/package/components/triggers/sqs/SqsTriggerEditor.svelte.d.ts +4 -3
- package/package/components/triggers/sqs/SqsTriggerEditorInner.svelte +22 -14
- package/package/components/triggers/triggers.svelte.d.ts +1 -0
- package/package/components/triggers/triggers.svelte.js +24 -1
- package/package/components/triggers/utils.js +47 -6
- package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +22 -14
- package/package/components/triggers.d.ts +1 -1
- package/package/components/useFolderDefaultPermissionedAs.svelte.d.ts +13 -0
- package/package/components/useFolderDefaultPermissionedAs.svelte.js +63 -0
- package/package/components/useNestedRestartState.svelte.d.ts +56 -0
- package/package/components/useNestedRestartState.svelte.js +320 -0
- package/package/components/workspaceSettings/CreateWorkspace.svelte +16 -677
- package/package/components/workspaceSettings/CreateWorkspaceInner.svelte +604 -0
- package/package/components/workspaceSettings/CreateWorkspaceInner.svelte.d.ts +7 -0
- package/package/components/workspaceSettings/CustomInstanceDbSelect.svelte +27 -25
- package/package/components/workspaceSettings/CustomInstanceDbWizardModal.svelte +46 -8
- package/package/components/workspaceSettings/DataTableSettings.svelte +27 -22
- package/package/components/workspaceSettings/DucklakeSettings.svelte +1 -1
- package/package/components/workspaceSettings/ForkDatatableSection.svelte +228 -0
- package/package/components/workspaceSettings/ForkDatatableSection.svelte.d.ts +28 -0
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +8 -2
- package/package/components/workspaceSettings/RulesetEditor.svelte +27 -2
- package/package/components/workspaceSettings/SharedUiSettings.svelte +175 -0
- package/package/components/workspaceSettings/SharedUiSettings.svelte.d.ts +3 -0
- package/package/components/workspaceSettings/VolumeStorageSettings.svelte +1 -1
- package/package/components/workspaceSettings/WorkspaceIntegrations.svelte +17 -1
- package/package/consts.d.ts +3 -0
- package/package/consts.js +10 -0
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +795 -59
- package/package/gen/schemas.gen.js +801 -60
- package/package/gen/services.gen.d.ts +475 -5
- package/package/gen/services.gen.js +976 -23
- package/package/gen/types.gen.d.ts +1865 -75
- package/package/githubApp.js +5 -1
- package/package/hubPaths.json +2 -8
- package/package/infer.d.ts +1 -1
- package/package/infer.js +50 -52
- package/package/infer.svelte.js +10 -1
- package/package/mcpEndpointTools.js +60 -4
- package/package/monaco_workers/sqlTypePlugin.worker.d.ts +10 -0
- package/package/monaco_workers/sqlTypePlugin.worker.js +39 -0
- package/package/script_helpers.d.ts +8 -2
- package/package/script_helpers.js +31 -0
- package/package/stores.d.ts +11 -0
- package/package/stores.js +6 -0
- package/package/system_prompts/index.d.ts +1 -0
- package/package/system_prompts/index.js +8 -0
- package/package/system_prompts/prompts.d.ts +17 -13
- package/package/system_prompts/prompts.js +921 -61
- package/package/templates/ci_test_bun.ts.template +27 -0
- package/package/templates/ci_test_python.py.template +26 -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.d.ts +8 -8
- package/package/utils_workspace_deploy.js +89 -421
- package/package.json +30 -6
- 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/__tests__/app/appChat.eval.test.js +0 -153
- package/package/components/copilot/chat/__tests__/app/appEvalComparison.d.ts +0 -21
- package/package/components/copilot/chat/__tests__/app/appEvalComparison.js +0 -136
- package/package/components/copilot/chat/__tests__/app/appEvalHelpers.d.ts +0 -15
- package/package/components/copilot/chat/__tests__/app/appEvalHelpers.js +0 -107
- package/package/components/copilot/chat/__tests__/app/appEvalRunner.d.ts +0 -50
- package/package/components/copilot/chat/__tests__/app/appEvalRunner.js +0 -93
- package/package/components/copilot/chat/__tests__/app/appFixtureLoader.d.ts +0 -29
- package/package/components/copilot/chat/__tests__/app/appFixtureLoader.js +0 -134
- package/package/components/copilot/chat/__tests__/app/appResultsWriter.d.ts +0 -30
- package/package/components/copilot/chat/__tests__/app/appResultsWriter.js +0 -197
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/createFolder/main.d.ts +0 -10
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/createFolder/main.js +0 -9
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/createFolder/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/deleteItem/main.d.ts +0 -6
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/deleteItem/main.js +0 -5
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/deleteItem/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/main.d.ts +0 -12
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/main.js +0 -14
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFolders/main.d.ts +0 -8
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFolders/main.js +0 -25
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFolders/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/moveItem/main.d.ts +0 -7
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/moveItem/main.js +0 -5
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/moveItem/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/renameItem/main.d.ts +0 -8
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/renameItem/main.js +0 -5
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/renameItem/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Breadcrumb.d.ts +0 -10
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Breadcrumb.tsx +0 -26
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileItem.d.ts +0 -10
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileItem.tsx +0 -79
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileList.d.ts +0 -10
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileList.tsx +0 -46
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FolderTree.d.ts +0 -10
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FolderTree.tsx +0 -56
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Toolbar.d.ts +0 -6
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Toolbar.tsx +0 -59
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/index.d.ts +0 -16
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/index.tsx +0 -119
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/addToCart/main.d.ts +0 -15
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/addToCart/main.js +0 -14
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/addToCart/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/calculateTotal/main.d.ts +0 -14
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/calculateTotal/main.js +0 -5
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/calculateTotal/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/getProducts/main.d.ts +0 -6
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/getProducts/main.js +0 -41
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/getProducts/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/removeFromCart/main.d.ts +0 -15
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/removeFromCart/main.js +0 -3
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/removeFromCart/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/Cart.d.ts +0 -9
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/Cart.tsx +0 -51
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductCard.d.ts +0 -8
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductCard.tsx +0 -27
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductList.d.ts +0 -8
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductList.tsx +0 -18
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/index.d.ts +0 -12
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/index.tsx +0 -81
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/decrementCounter/main.d.ts +0 -3
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/decrementCounter/main.js +0 -3
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/decrementCounter/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/incrementCounter/main.d.ts +0 -3
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/incrementCounter/main.js +0 -3
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/incrementCounter/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/frontend/index.d.ts +0 -2
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/frontend/index.tsx +0 -38
- package/package/components/copilot/chat/__tests__/app/variants/baseline.d.ts +0 -6
- package/package/components/copilot/chat/__tests__/app/variants/baseline.js +0 -10
- package/package/components/copilot/chat/__tests__/app/variants/index.d.ts +0 -3
- package/package/components/copilot/chat/__tests__/app/variants/index.js +0 -3
- package/package/components/copilot/chat/__tests__/app/variants/streamlined.d.ts +0 -6
- package/package/components/copilot/chat/__tests__/app/variants/streamlined.js +0 -137
- package/package/components/copilot/chat/__tests__/flow/expected/test1.json +0 -134
- package/package/components/copilot/chat/__tests__/flow/expected/test2.json +0 -183
- package/package/components/copilot/chat/__tests__/flow/expected/test3.json +0 -204
- package/package/components/copilot/chat/__tests__/flow/expected/test4.json +0 -175
- package/package/components/copilot/chat/__tests__/flow/expected/test5_modify_simple.json +0 -68
- package/package/components/copilot/chat/__tests__/flow/expected/test6_modify_medium.json +0 -142
- package/package/components/copilot/chat/__tests__/flow/expected/test7_modify_complex.json +0 -136
- package/package/components/copilot/chat/__tests__/flow/flowChat.eval.test.js +0 -294
- package/package/components/copilot/chat/__tests__/flow/flowEvalComparison.d.ts +0 -17
- package/package/components/copilot/chat/__tests__/flow/flowEvalComparison.js +0 -49
- package/package/components/copilot/chat/__tests__/flow/flowEvalHelpers.d.ts +0 -12
- package/package/components/copilot/chat/__tests__/flow/flowEvalHelpers.js +0 -79
- package/package/components/copilot/chat/__tests__/flow/flowEvalRunner.d.ts +0 -50
- package/package/components/copilot/chat/__tests__/flow/flowEvalRunner.js +0 -102
- package/package/components/copilot/chat/__tests__/flow/initial/test5_initial.json +0 -53
- package/package/components/copilot/chat/__tests__/flow/initial/test6_initial.json +0 -68
- package/package/components/copilot/chat/__tests__/flow/initial/test7_initial.json +0 -120
- package/package/components/copilot/chat/__tests__/flow/variants/baseline.d.ts +0 -6
- package/package/components/copilot/chat/__tests__/flow/variants/baseline.js +0 -10
- package/package/components/copilot/chat/__tests__/flow/variants/index.d.ts +0 -3
- package/package/components/copilot/chat/__tests__/flow/variants/index.js +0 -3
- package/package/components/copilot/chat/__tests__/flow/variants/minimal-single-tool.d.ts +0 -15
- package/package/components/copilot/chat/__tests__/flow/variants/minimal-single-tool.js +0 -388
- package/package/components/copilot/chat/__tests__/shared/baseEvalRunner.d.ts +0 -45
- package/package/components/copilot/chat/__tests__/shared/baseEvalRunner.js +0 -121
- package/package/components/copilot/chat/__tests__/shared/baseLLMEvaluator.d.ts +0 -28
- package/package/components/copilot/chat/__tests__/shared/baseLLMEvaluator.js +0 -96
- package/package/components/copilot/chat/__tests__/shared/baseResultsWriter.d.ts +0 -32
- package/package/components/copilot/chat/__tests__/shared/baseResultsWriter.js +0 -130
- package/package/components/copilot/chat/__tests__/shared/baseVariants.d.ts +0 -45
- package/package/components/copilot/chat/__tests__/shared/baseVariants.js +0 -57
- package/package/components/copilot/chat/__tests__/shared/index.d.ts +0 -10
- package/package/components/copilot/chat/__tests__/shared/index.js +0 -5
- package/package/components/copilot/chat/__tests__/shared/types.d.ts +0 -105
- package/package/components/copilot/chat/__tests__/shared/types.js +0 -9
- package/package/components/copilot/chat/flow/openFlowZod.js +0 -24
- package/package/components/copilot/chat/flow/utils.d.ts +0 -14
- package/package/components/copilot/chat/flow/utils.js +0 -108
- package/package/components/flows/agentToolUtils.test.js +0 -55
- /package/package/components/copilot/chat/{__tests__/app/appChat.eval.test.d.ts → app/core.test.d.ts} +0 -0
- /package/package/components/copilot/chat/{__tests__/flow/flowChat.eval.test.d.ts → flow/helperUtils.test.d.ts} +0 -0
- /package/package/components/copilot/chat/flow/{openFlowZod.d.ts → openFlowZod.gen.d.ts} +0 -0
- /package/package/components/{flows/agentToolUtils.test.d.ts → copilot/chat/flow/utils.test.d.ts} +0 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { FolderService } from '../gen';
|
|
2
|
+
import { Minimatch } from 'minimatch';
|
|
3
|
+
import { resource } from 'runed';
|
|
4
|
+
import { workspaceStore, userStore } from '../stores';
|
|
5
|
+
/**
|
|
6
|
+
* Resolves the folder's `default_permissioned_as` rule that matches a given item path.
|
|
7
|
+
* Returns `undefined` when the user is not admin/wm_deployer, the path is not under a
|
|
8
|
+
* folder, the folder has no matching rules, or the fetch fails.
|
|
9
|
+
*
|
|
10
|
+
* Tracks workspace/user store changes reactively so the value refreshes on workspace
|
|
11
|
+
* switch or permission change. Uses `runed`'s `resource()` which handles race conditions
|
|
12
|
+
* and loading state automatically.
|
|
13
|
+
*/
|
|
14
|
+
export function useFolderDefaultPermissionedAs(pathGetter) {
|
|
15
|
+
// Subscribe to the stores so the effect re-runs on changes.
|
|
16
|
+
let workspace = $state(undefined);
|
|
17
|
+
let user = $state(undefined);
|
|
18
|
+
$effect(() => {
|
|
19
|
+
const unsubWs = workspaceStore.subscribe((w) => (workspace = w));
|
|
20
|
+
const unsubUser = userStore.subscribe((u) => (user = u));
|
|
21
|
+
return () => {
|
|
22
|
+
unsubWs();
|
|
23
|
+
unsubUser();
|
|
24
|
+
};
|
|
25
|
+
});
|
|
26
|
+
const folderResource = resource(() => ({ path: pathGetter(), workspace, user }), async ({ path, workspace, user }) => {
|
|
27
|
+
const canPreserve = user?.is_admin || user?.is_super_admin || (user?.groups ?? []).includes('wm_deployers');
|
|
28
|
+
if (!canPreserve || !workspace || !path?.startsWith('f/')) {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
const parts = path.split('/');
|
|
32
|
+
if (parts.length < 3)
|
|
33
|
+
return undefined;
|
|
34
|
+
const folderName = parts[1];
|
|
35
|
+
const relative = path.slice(`f/${folderName}/`.length);
|
|
36
|
+
if (!relative)
|
|
37
|
+
return undefined;
|
|
38
|
+
try {
|
|
39
|
+
const folder = await FolderService.getFolder({ workspace, name: folderName });
|
|
40
|
+
const rules = folder.default_permissioned_as ?? [];
|
|
41
|
+
const match = rules.find((rule) => {
|
|
42
|
+
try {
|
|
43
|
+
return new Minimatch(rule.path_glob).match(relative);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
return match?.permissioned_as;
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
return {
|
|
56
|
+
get value() {
|
|
57
|
+
return folderResource.current;
|
|
58
|
+
},
|
|
59
|
+
get loading() {
|
|
60
|
+
return folderResource.loading;
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
}
|
|
@@ -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
|
+
};
|
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
import { findStepPath, parseExpandedSubflowId } from './restartFromStepPath';
|
|
2
|
+
import { emptyString } from '../utils';
|
|
3
|
+
/**
|
|
4
|
+
* Returns true when the BranchOne ancestor's path branch (the one containing the
|
|
5
|
+
* selected leaf, encoded as `branchIndex` where -1 means default and 0..N-1
|
|
6
|
+
* means `branches[i]`) is the same branch the original run took. If the user
|
|
7
|
+
* clicked a step inside an `else` branch the original run didn't take, the
|
|
8
|
+
* step never executed — restart there is impossible.
|
|
9
|
+
*
|
|
10
|
+
* Three states for the lookup:
|
|
11
|
+
* - `status === undefined`: the BranchOne isn't at the parent's top level, so
|
|
12
|
+
* it lives on a child job we don't fetch here (e.g. nested inside a ForLoop
|
|
13
|
+
* iteration). Permissive fallback — let the backend reject if needed.
|
|
14
|
+
* - `status` defined but `chosen === undefined`: the BranchOne IS at the top
|
|
15
|
+
* level but has no chosen branch (never executed / skipped / still
|
|
16
|
+
* waiting). The leaf can't have run either, so reject.
|
|
17
|
+
* - both defined: compare against `branchIndex`.
|
|
18
|
+
*/
|
|
19
|
+
function branchOneAncestorMatchesOriginal(job, ancestor) {
|
|
20
|
+
if (ancestor.type !== 'branchone')
|
|
21
|
+
return true;
|
|
22
|
+
const status = job.flow_status?.modules?.find((m) => m.id === ancestor.stepId);
|
|
23
|
+
const chosen = status?.branch_chosen;
|
|
24
|
+
if (!chosen)
|
|
25
|
+
return status === undefined;
|
|
26
|
+
const taken = chosen.type === 'default' ? -1 : (chosen.branch ?? -1);
|
|
27
|
+
return ancestor.branchIndex === taken;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Reactive state shared by the run page and the editor's flow preview to drive
|
|
31
|
+
* the "restart flow at step" UI. Given the currently selected step, the
|
|
32
|
+
* completed flow job, the graph's per-module display state, and any expanded
|
|
33
|
+
* subflow definitions, derives:
|
|
34
|
+
*
|
|
35
|
+
* - `selectedJobStepIsTopLevel` — whether the selected step appears in the
|
|
36
|
+
* parent flow's top-level `flow_status.modules`
|
|
37
|
+
* - `selectedJobStepType` — `single` / `forloop` / `branchall`, used by the
|
|
38
|
+
* popup to decide which controls to render for the OUTER container
|
|
39
|
+
* - `restartBranchNames` — for top-level BranchAll steps, the labels for the
|
|
40
|
+
* branch picker
|
|
41
|
+
* - `nestedRestartTopStepId` / `nestedRestartTopBranchOrIterationN` /
|
|
42
|
+
* `nestedRestartPath` — the API request shape when restarting at a nested
|
|
43
|
+
* step (single source of truth for both call sites)
|
|
44
|
+
* - `nestedRestartSupported` — gate for showing the button when the selected
|
|
45
|
+
* step is nested (subflow expansion or BranchOne / sequential ForLoop)
|
|
46
|
+
* - `topLevelLoopIteration` — when the selected step IS a top-level ForLoop,
|
|
47
|
+
* the iteration the user is currently viewing (pre-fills the popup input)
|
|
48
|
+
* - `iterationCounts` — map of step id → number of recorded iterations,
|
|
49
|
+
* so the popup can render an iteration `<select>` matching the graph's tabs
|
|
50
|
+
* instead of a free-form number input
|
|
51
|
+
*
|
|
52
|
+
* Inputs are passed as getters so the composable stays reactive in either
|
|
53
|
+
* caller's signal graph.
|
|
54
|
+
*/
|
|
55
|
+
export function useNestedRestartState(opts) {
|
|
56
|
+
let selectedJobStepIsTopLevel = $state(undefined);
|
|
57
|
+
let selectedJobStepType = $state('single');
|
|
58
|
+
let restartBranchNames = $state([]);
|
|
59
|
+
let nestedRestartTopStepId = $state(undefined);
|
|
60
|
+
let nestedRestartTopBranchOrIterationN = $state(undefined);
|
|
61
|
+
let nestedRestartPath = $state(undefined);
|
|
62
|
+
let nestedRestartSupported = $state(false);
|
|
63
|
+
// Iteration counts keyed by the popup's field-key ('top' or 'inner-N').
|
|
64
|
+
// Built during path construction so each entry uses the *correct* graph key
|
|
65
|
+
// for its level (prefixed for in-subflow ancestors). Avoids the collision
|
|
66
|
+
// that would happen if we double-indexed `iterationCounts` by bare step_id.
|
|
67
|
+
let nestedPathIterationCounts = $state({});
|
|
68
|
+
$effect(() => {
|
|
69
|
+
const selectedJobStep = opts.selectedJobStep();
|
|
70
|
+
const job = opts.job();
|
|
71
|
+
const graphModuleStates = opts.graphModuleStates();
|
|
72
|
+
const expandedSubflows = opts.expandedSubflows?.() ?? {};
|
|
73
|
+
nestedRestartTopStepId = undefined;
|
|
74
|
+
nestedRestartTopBranchOrIterationN = undefined;
|
|
75
|
+
nestedRestartPath = undefined;
|
|
76
|
+
nestedRestartSupported = false;
|
|
77
|
+
restartBranchNames = [];
|
|
78
|
+
selectedJobStepIsTopLevel = undefined;
|
|
79
|
+
nestedPathIterationCounts = {};
|
|
80
|
+
if (selectedJobStep === undefined || job?.flow_status?.modules === undefined) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
const isTopLevel = job.flow_status.modules.findIndex((m) => m.id === selectedJobStep) >= 0;
|
|
84
|
+
selectedJobStepIsTopLevel = isTopLevel;
|
|
85
|
+
const moduleDefinition = job.raw_flow?.modules.find((m) => m.id === selectedJobStep);
|
|
86
|
+
if (moduleDefinition?.value.type === 'forloopflow') {
|
|
87
|
+
selectedJobStepType = 'forloop';
|
|
88
|
+
}
|
|
89
|
+
else if (moduleDefinition?.value.type === 'branchall') {
|
|
90
|
+
selectedJobStepType = 'branchall';
|
|
91
|
+
const newNames = [];
|
|
92
|
+
moduleDefinition.value.branches.forEach((branch, idx) => {
|
|
93
|
+
newNames.push([idx, emptyString(branch.summary) ? `Branch #${idx}` : branch.summary]);
|
|
94
|
+
});
|
|
95
|
+
restartBranchNames = newNames;
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
selectedJobStepType = 'single';
|
|
99
|
+
}
|
|
100
|
+
// Read from the local — reading the `$state` we just wrote would register
|
|
101
|
+
// it as a dependency of this effect, causing `effect_update_depth_exceeded`
|
|
102
|
+
// because each write would reschedule the effect.
|
|
103
|
+
if (isTopLevel)
|
|
104
|
+
return;
|
|
105
|
+
// Inline-expanded subflow: id is `subflow:outerStep:[innerSubflow:...]<leaf>`.
|
|
106
|
+
// The graph adds the `subflow:` prefix only for subflow expansions, so each
|
|
107
|
+
// segment is a `Flow{path}` step. We walk the chain and, at the deepest
|
|
108
|
+
// subflow, recurse into its cached modules to detect BranchOne / ForLoop
|
|
109
|
+
// ancestors of the leaf so the chain captures locked branches and
|
|
110
|
+
// iteration indices for those too.
|
|
111
|
+
const subflowParse = parseExpandedSubflowId(selectedJobStep);
|
|
112
|
+
if (subflowParse && job.raw_flow?.modules) {
|
|
113
|
+
const top = job.raw_flow.modules.find((m) => m.id === subflowParse.subflowSteps[0]);
|
|
114
|
+
if (top && top.value.type === 'flow') {
|
|
115
|
+
const innerPath = [];
|
|
116
|
+
// Intermediate subflow boundaries: each is itself a Flow{path}, no
|
|
117
|
+
// branch_or_iteration_n applies.
|
|
118
|
+
for (const seg of subflowParse.subflowSteps.slice(1)) {
|
|
119
|
+
innerPath.push({ step_id: seg });
|
|
120
|
+
}
|
|
121
|
+
// Look up the deepest subflow's modules in expandedSubflows. The graph
|
|
122
|
+
// stores them under the prefixed key (the graph node id used at that
|
|
123
|
+
// nesting level).
|
|
124
|
+
const deepestKey = subflowParse.subflowSteps.length === 1
|
|
125
|
+
? subflowParse.subflowSteps[0]
|
|
126
|
+
: 'subflow:' + subflowParse.subflowSteps.join(':');
|
|
127
|
+
const deepestModules = expandedSubflows[deepestKey]?.modules;
|
|
128
|
+
if (deepestModules) {
|
|
129
|
+
const path = findStepPath(deepestModules, subflowParse.leaf);
|
|
130
|
+
if (path) {
|
|
131
|
+
// Same gating as the parent-flow case, minus the BranchOne
|
|
132
|
+
// branch-mismatch check (subflow's flow_status isn't directly
|
|
133
|
+
// reachable here; backend will still reject if the branch
|
|
134
|
+
// wasn't taken). Parallel and unsupported containers are checked.
|
|
135
|
+
const blocked = path.ancestors.some((a) => a.type === 'branchall' || a.type === 'whileloopflow' || a.parallel === true);
|
|
136
|
+
if (!blocked) {
|
|
137
|
+
// Inside the subflow, the graph state for ForLoop ancestors
|
|
138
|
+
// is keyed by the prefixed graph id. Build that key here so
|
|
139
|
+
// `selectedForloopIndex` and `flow_jobs.length` lookups land
|
|
140
|
+
// on the right entry (avoiding collisions with same-step-id
|
|
141
|
+
// loops in the parent flow — e.g. parent has `e` with 4 iters
|
|
142
|
+
// and the subflow also has `e` with 1 iter).
|
|
143
|
+
const subflowPrefix = 'subflow:' + subflowParse.subflowSteps.join(':') + ':';
|
|
144
|
+
const iterationFor = (stepId) => graphModuleStates[subflowPrefix + stepId]?.selectedForloopIndex ?? 0;
|
|
145
|
+
const iterCountFor = (stepId) => graphModuleStates[subflowPrefix + stepId]?.flow_jobs?.length ?? 0;
|
|
146
|
+
const counts = {};
|
|
147
|
+
// Top-level (parent) container is the subflow step `h` —
|
|
148
|
+
// not a ForLoop, no count.
|
|
149
|
+
for (let i = 0; i < path.ancestors.length; i++) {
|
|
150
|
+
const a = path.ancestors[i];
|
|
151
|
+
const entry = { step_id: a.stepId };
|
|
152
|
+
if (a.type === 'forloopflow') {
|
|
153
|
+
entry.branch_or_iteration_n = iterationFor(a.stepId);
|
|
154
|
+
// Path key: each subflow boundary already contributes an
|
|
155
|
+
// inner-N entry above (subflow steps without iterations).
|
|
156
|
+
// Match the index that FlowRestartButton will use when
|
|
157
|
+
// rendering iteration fields.
|
|
158
|
+
counts[`inner-${innerPath.length}`] = iterCountFor(a.stepId);
|
|
159
|
+
}
|
|
160
|
+
innerPath.push(entry);
|
|
161
|
+
}
|
|
162
|
+
const leafEntry = { step_id: subflowParse.leaf };
|
|
163
|
+
if (path.target.value.type === 'forloopflow') {
|
|
164
|
+
leafEntry.branch_or_iteration_n = iterationFor(subflowParse.leaf);
|
|
165
|
+
counts[`inner-${innerPath.length}`] = iterCountFor(subflowParse.leaf);
|
|
166
|
+
}
|
|
167
|
+
innerPath.push(leafEntry);
|
|
168
|
+
nestedRestartTopStepId = top.id;
|
|
169
|
+
nestedRestartPath = innerPath;
|
|
170
|
+
nestedPathIterationCounts = counts;
|
|
171
|
+
nestedRestartSupported = true;
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// Fallback: subflow's modules not yet loaded (user clicked a step
|
|
177
|
+
// without expanding the subflow first), or leaf not found / blocked.
|
|
178
|
+
// Send a flat path; the backend will reject if the leaf is nested
|
|
179
|
+
// inside an unsupported container.
|
|
180
|
+
innerPath.push({ step_id: subflowParse.leaf });
|
|
181
|
+
nestedRestartTopStepId = top.id;
|
|
182
|
+
nestedRestartPath = innerPath;
|
|
183
|
+
nestedRestartSupported = true;
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
// BranchOne / sequential ForLoop within the parent's own flow_value. Walk
|
|
188
|
+
// the tree to find the path; supported when ancestors are BranchOne /
|
|
189
|
+
// sequential ForLoop only — and only when each BranchOne ancestor's chosen
|
|
190
|
+
// branch in the original run actually contains the leaf, otherwise the
|
|
191
|
+
// step never executed and the backend would error.
|
|
192
|
+
if (!job.raw_flow?.modules)
|
|
193
|
+
return;
|
|
194
|
+
const path = findStepPath(job.raw_flow.modules, selectedJobStep);
|
|
195
|
+
if (!path || path.ancestors.length === 0)
|
|
196
|
+
return;
|
|
197
|
+
const blocked = path.ancestors.some((a) => a.type === 'branchall' ||
|
|
198
|
+
a.type === 'whileloopflow' ||
|
|
199
|
+
a.parallel === true ||
|
|
200
|
+
(a.type === 'branchone' && !branchOneAncestorMatchesOriginal(job, a)));
|
|
201
|
+
if (blocked)
|
|
202
|
+
return;
|
|
203
|
+
// For each ForLoop ancestor, default to the user's currently-open iteration
|
|
204
|
+
// (`selectedForloopIndex`); fall back to 0. The popup surfaces every value
|
|
205
|
+
// for confirmation/editing before submit, so we never silently send a guess.
|
|
206
|
+
const iterationFor = (stepId) => graphModuleStates[stepId]?.selectedForloopIndex ?? 0;
|
|
207
|
+
const iterCountFor = (stepId) => graphModuleStates[stepId]?.flow_jobs?.length ?? 0;
|
|
208
|
+
const top = path.ancestors[0];
|
|
209
|
+
const inner = path.ancestors.slice(1);
|
|
210
|
+
const innerPath = [];
|
|
211
|
+
const counts = {};
|
|
212
|
+
for (const a of inner) {
|
|
213
|
+
const entry = { step_id: a.stepId };
|
|
214
|
+
if (a.type === 'forloopflow') {
|
|
215
|
+
entry.branch_or_iteration_n = iterationFor(a.stepId);
|
|
216
|
+
counts[`inner-${innerPath.length}`] = iterCountFor(a.stepId);
|
|
217
|
+
}
|
|
218
|
+
innerPath.push(entry);
|
|
219
|
+
}
|
|
220
|
+
// If the SELECTED step is itself a ForLoop, include its iteration too so
|
|
221
|
+
// the popup exposes a selector for it.
|
|
222
|
+
const leafEntry = { step_id: selectedJobStep };
|
|
223
|
+
if (path.target.value.type === 'forloopflow') {
|
|
224
|
+
leafEntry.branch_or_iteration_n = iterationFor(selectedJobStep);
|
|
225
|
+
counts[`inner-${innerPath.length}`] = iterCountFor(selectedJobStep);
|
|
226
|
+
}
|
|
227
|
+
innerPath.push(leafEntry);
|
|
228
|
+
nestedRestartTopStepId = top.stepId;
|
|
229
|
+
if (top.type === 'forloopflow') {
|
|
230
|
+
nestedRestartTopBranchOrIterationN = iterationFor(top.stepId);
|
|
231
|
+
counts['top'] = iterCountFor(top.stepId);
|
|
232
|
+
}
|
|
233
|
+
nestedRestartPath = innerPath;
|
|
234
|
+
nestedPathIterationCounts = counts;
|
|
235
|
+
nestedRestartSupported = true;
|
|
236
|
+
});
|
|
237
|
+
const topLevelLoopIteration = $derived.by(() => {
|
|
238
|
+
const sel = opts.selectedJobStep();
|
|
239
|
+
if (!sel)
|
|
240
|
+
return undefined;
|
|
241
|
+
if (selectedJobStepType !== 'forloop')
|
|
242
|
+
return undefined;
|
|
243
|
+
return opts.graphModuleStates()[sel]?.selectedForloopIndex;
|
|
244
|
+
});
|
|
245
|
+
// `selectedJobStepIsTopLevel` answers "is this a top-level module structurally";
|
|
246
|
+
// `topLevelRestartable` answers "AND should the restart button show". The
|
|
247
|
+
// difference: parallel ForLoop / parallel BranchAll at the top level are
|
|
248
|
+
// rejected by the backend, so we hide the button preemptively.
|
|
249
|
+
const topLevelRestartable = $derived.by(() => {
|
|
250
|
+
if (!selectedJobStepIsTopLevel)
|
|
251
|
+
return false;
|
|
252
|
+
const sel = opts.selectedJobStep();
|
|
253
|
+
const job = opts.job();
|
|
254
|
+
if (!sel || !job?.raw_flow?.modules)
|
|
255
|
+
return false;
|
|
256
|
+
const mod = job.raw_flow.modules.find((m) => m.id === sel);
|
|
257
|
+
if (!mod)
|
|
258
|
+
return false;
|
|
259
|
+
const v = mod.value;
|
|
260
|
+
if ((v.type === 'forloopflow' || v.type === 'branchall' || v.type === 'whileloopflow') &&
|
|
261
|
+
v.parallel === true) {
|
|
262
|
+
return false;
|
|
263
|
+
}
|
|
264
|
+
return true;
|
|
265
|
+
});
|
|
266
|
+
// Iteration counts indexed by the graph module-state key (i.e. the prefixed
|
|
267
|
+
// `subflow:...:<step_id>` for in-subflow loops, or the bare `step_id` for
|
|
268
|
+
// top-level loops). Used by the popup for the SELECTED step's iteration
|
|
269
|
+
// picker — that step is always at the unprefixed top level (the run page's
|
|
270
|
+
// graph-state key matches the bare step_id), so the lookup is unambiguous.
|
|
271
|
+
// For nested-path iteration fields, see `nestedPathIterationCounts` instead,
|
|
272
|
+
// which is keyed by the popup's field-key ('top' / 'inner-N') and pulled
|
|
273
|
+
// from the path-aware graph key — avoiding collisions when the same step
|
|
274
|
+
// id appears at both the parent flow and inside a subflow.
|
|
275
|
+
const iterationCounts = $derived.by(() => {
|
|
276
|
+
const out = {};
|
|
277
|
+
for (const [id, state] of Object.entries(opts.graphModuleStates())) {
|
|
278
|
+
const n = state.flow_jobs?.length;
|
|
279
|
+
if (typeof n !== 'number' || n <= 0)
|
|
280
|
+
continue;
|
|
281
|
+
out[id] = n;
|
|
282
|
+
}
|
|
283
|
+
return out;
|
|
284
|
+
});
|
|
285
|
+
return {
|
|
286
|
+
get selectedJobStepIsTopLevel() {
|
|
287
|
+
return selectedJobStepIsTopLevel;
|
|
288
|
+
},
|
|
289
|
+
get selectedJobStepType() {
|
|
290
|
+
return selectedJobStepType;
|
|
291
|
+
},
|
|
292
|
+
get restartBranchNames() {
|
|
293
|
+
return restartBranchNames;
|
|
294
|
+
},
|
|
295
|
+
get nestedRestartTopStepId() {
|
|
296
|
+
return nestedRestartTopStepId;
|
|
297
|
+
},
|
|
298
|
+
get nestedRestartTopBranchOrIterationN() {
|
|
299
|
+
return nestedRestartTopBranchOrIterationN;
|
|
300
|
+
},
|
|
301
|
+
get nestedRestartPath() {
|
|
302
|
+
return nestedRestartPath;
|
|
303
|
+
},
|
|
304
|
+
get nestedRestartSupported() {
|
|
305
|
+
return nestedRestartSupported;
|
|
306
|
+
},
|
|
307
|
+
get topLevelLoopIteration() {
|
|
308
|
+
return topLevelLoopIteration;
|
|
309
|
+
},
|
|
310
|
+
get topLevelRestartable() {
|
|
311
|
+
return topLevelRestartable;
|
|
312
|
+
},
|
|
313
|
+
get iterationCounts() {
|
|
314
|
+
return iterationCounts;
|
|
315
|
+
},
|
|
316
|
+
get nestedPathIterationCounts() {
|
|
317
|
+
return nestedPathIterationCounts;
|
|
318
|
+
}
|
|
319
|
+
};
|
|
320
|
+
}
|