windmill-components 1.623.1 → 1.623.2
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/assets/tokens/tokens.json +11 -1
- package/package/ata/apis.js +78 -5
- package/package/cancelable-promise-utils.js +4 -2
- package/package/components/AddUser.svelte +1 -1
- package/package/components/ApiConnectForm.svelte +6 -0
- package/package/components/AppConnectDrawer.svelte +1 -0
- package/package/components/AppConnectInner.svelte +1 -0
- package/package/components/AuthSettings.svelte +3 -1
- package/package/components/BedrockCredentialsCheck.svelte +241 -0
- package/package/components/BedrockCredentialsCheck.svelte.d.ts +3 -0
- package/package/components/CenteredModal.svelte +32 -24
- package/package/components/CenteredModal.svelte.d.ts +7 -27
- package/package/components/CenteredPage.svelte +6 -2
- package/package/components/CenteredPage.svelte.d.ts +3 -0
- package/package/components/CompareWorkspaces.svelte +74 -16
- package/package/components/ConcurrentJobsChart.svelte +3 -2
- package/package/components/ConcurrentJobsChart.svelte.d.ts +2 -2
- package/package/components/CustomPopover.svelte +20 -23
- package/package/components/CustomPopover.svelte.d.ts +14 -39
- package/package/components/DBManager.svelte +134 -42
- package/package/components/DBManager.svelte.d.ts +13 -2
- package/package/components/DBManagerContent.svelte +25 -63
- package/package/components/DBManagerContent.svelte.d.ts +38 -4
- package/package/components/DBManagerDrawer.svelte +7 -9
- package/package/components/DBTable.svelte +1 -1
- package/package/components/DBTable.svelte.d.ts +3 -1
- package/package/components/DBTableEditor.svelte +234 -178
- package/package/components/DBTableEditor.svelte.d.ts +22 -3
- package/package/components/DateInput.svelte +29 -35
- package/package/components/DateInput.svelte.d.ts +10 -11
- package/package/components/DedicatedWorkersSelector.svelte +569 -0
- package/package/components/DedicatedWorkersSelector.svelte.d.ts +8 -0
- package/package/components/DeployWorkspace.svelte +106 -29
- package/package/components/Description.svelte +3 -2
- package/package/components/Dev.svelte +36 -2
- package/package/components/DiffDrawer.svelte +8 -29
- package/package/components/DiffEditor.svelte +32 -2
- package/package/components/DisplayResult.svelte +32 -24
- package/package/components/DropdownV2.svelte +2 -1
- package/package/components/DropdownV2.svelte.d.ts +1 -0
- package/package/components/Editor.svelte +71 -26
- package/package/components/Editor.svelte.d.ts +3 -0
- package/package/components/EditorBar.svelte +1 -1
- package/package/components/FakeMonacoPlaceHolder.svelte +1 -1
- package/package/components/FlowBuilder.svelte +17 -11
- package/package/components/FlowDiffViewer.svelte +37 -0
- package/package/components/FlowDiffViewer.svelte.d.ts +7 -0
- package/package/components/FlowGraphViewer.svelte +5 -2
- package/package/components/FlowGraphViewer.svelte.d.ts +2 -0
- package/package/components/FlowLoopIterationPreview.svelte.d.ts +1 -1
- package/package/components/FlowPreviewContent.svelte +3 -2
- package/package/components/FlowPreviewContent.svelte.d.ts +1 -1
- package/package/components/FlowPreviewResult.svelte +0 -4
- package/package/components/FlowRestartButton.svelte +2 -3
- package/package/components/FlowRestartButton.svelte.d.ts +3 -0
- package/package/components/FlowStatusViewerInner.svelte +55 -35
- package/package/components/FlowStatusViewerInner.svelte.d.ts +1 -1
- package/package/components/FlowStatusWaitingForEvents.svelte +27 -23
- package/package/components/FlowStatusWaitingForEvents.svelte.d.ts +4 -18
- package/package/components/FlowViewer.svelte +103 -2
- package/package/components/FlowViewer.svelte.d.ts +9 -3
- package/package/components/ForkWorkspaceBanner.svelte +32 -13
- package/package/components/GraphqlSchemaViewer.svelte +8 -1
- package/package/components/HistoricInputs.svelte +25 -27
- package/package/components/HistoricInputs.svelte.d.ts +2 -2
- package/package/components/InfiniteList.svelte +27 -20
- package/package/components/InfiniteList.svelte.d.ts +2 -0
- package/package/components/InstanceSetting.svelte +38 -0
- package/package/components/InviteUser.svelte +16 -42
- package/package/components/InviteUser.svelte.d.ts +4 -18
- package/package/components/JobLoader.svelte.d.ts +1 -1
- package/package/components/JobOtelTraces.svelte +287 -0
- package/package/components/JobOtelTraces.svelte.d.ts +6 -0
- package/package/components/JsonInputs.svelte +6 -8
- package/package/components/JsonInputs.svelte.d.ts +7 -8
- package/package/components/LogViewer.svelte +91 -33
- package/package/components/Login.svelte +27 -0
- package/package/components/ManualPopover.svelte +5 -6
- package/package/components/ManualPopover.svelte.d.ts +9 -35
- package/package/components/MemoryFootprintViewer.svelte +2 -6
- package/package/components/ModulePreview.svelte +23 -21
- package/package/components/ModulePreview.svelte.d.ts +1 -0
- package/package/components/NextcloudSetting.svelte +1 -1
- package/package/components/OAuthSetting.svelte +1 -0
- package/package/components/Path.svelte +2 -2
- package/package/components/Path.svelte.d.ts +1 -1
- package/package/components/PocketIdSetting.svelte +82 -0
- package/package/components/PocketIdSetting.svelte.d.ts +6 -0
- package/package/components/ResourceEditor.svelte +4 -4
- package/package/components/ResourcePicker.svelte +4 -0
- package/package/components/ResourcePicker.svelte.d.ts +1 -0
- package/package/components/RunButton.svelte +5 -15
- package/package/components/RunButton.svelte.d.ts +7 -19
- package/package/components/RunChart.svelte +8 -4
- package/package/components/RunChart.svelte.d.ts +2 -2
- package/package/components/RunForm.svelte +9 -17
- package/package/components/RunForm.svelte.d.ts +0 -1
- package/package/components/RunFormAdvancedPopup.svelte +1 -1
- package/package/components/RunsPage.svelte +202 -537
- package/package/components/RunsPage.svelte.d.ts +5 -5
- package/package/components/S3FilePicker.svelte +7 -11
- package/package/components/S3FilePickerInner.svelte +2 -3
- package/package/components/S3FilePickerInner.svelte.d.ts +2 -2
- package/package/components/SavedInputsPicker.svelte +1 -1
- package/package/components/SavedInputsV2.svelte +35 -36
- package/package/components/SchemaForm.svelte +26 -19
- package/package/components/SchemaFormWithArgPicker.svelte +4 -3
- package/package/components/ScriptBuilder.svelte +1 -1
- package/package/components/ScriptEditor.svelte +575 -101
- package/package/components/Section.svelte +4 -2
- package/package/components/ServiceLogsInner.svelte +4 -4
- package/package/components/ShareModal.svelte.d.ts +1 -1
- package/package/components/SimpleEditor.svelte +46 -2
- package/package/components/Star.svelte +8 -12
- package/package/components/Star.svelte.d.ts +6 -19
- package/package/components/StringTypeNarrowing.svelte.d.ts +1 -1
- package/package/components/SuperadminSettingsInner.svelte +1 -1
- package/package/components/TemplateEditor.svelte +54 -29
- package/package/components/TemplateEditor.svelte.d.ts +13 -102
- package/package/components/TimeAgo.svelte +49 -7
- package/package/components/TimeAgo.svelte.d.ts +1 -0
- package/package/components/Toast.svelte +5 -1
- package/package/components/UserSettings.svelte +1 -1
- package/package/components/WorkerGroup.svelte +35 -20
- package/package/components/WorkerGroup.svelte.d.ts +1 -0
- package/package/components/WorkerTagPicker.svelte +1 -1
- package/package/components/WorkerTagSelect.svelte +5 -2
- package/package/components/WorkspaceTutorials.svelte +5 -0
- package/package/components/apps/components/buttons/AppButton.svelte +21 -6
- package/package/components/apps/components/buttons/AppForm.svelte +2 -1
- package/package/components/apps/components/buttons/AppFormButton.svelte +2 -1
- package/package/components/apps/components/display/InsertRowDrawerButton.svelte +1 -1
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +2 -5
- package/package/components/apps/components/display/dbtable/dbFeatures.d.ts +9 -0
- package/package/components/apps/components/display/dbtable/dbFeatures.js +32 -0
- package/package/components/apps/components/display/dbtable/metadata.d.ts +3 -3
- package/package/components/apps/components/display/dbtable/metadata.js +177 -148
- package/package/components/apps/components/display/dbtable/queries/alterTable.d.ts +46 -0
- package/package/components/apps/components/display/dbtable/queries/alterTable.js +322 -0
- package/package/components/apps/components/display/dbtable/queries/alterTable.test.d.ts +1 -0
- package/package/components/apps/components/display/dbtable/queries/alterTable.test.js +867 -0
- package/package/components/apps/components/display/dbtable/queries/createTable.d.ts +2 -24
- package/package/components/apps/components/display/dbtable/queries/createTable.js +13 -25
- package/package/components/apps/components/display/dbtable/queries/dbQueriesUtils.d.ts +9 -0
- package/package/components/apps/components/display/dbtable/queries/dbQueriesUtils.js +45 -0
- package/package/components/apps/components/display/dbtable/queries/relationalKeys.d.ts +45 -0
- package/package/components/apps/components/display/dbtable/queries/relationalKeys.js +401 -0
- package/package/components/apps/components/display/dbtable/queries/select.d.ts +2 -0
- package/package/components/apps/components/display/dbtable/queries/select.js +37 -6
- package/package/components/apps/components/display/dbtable/tableEditor.d.ts +35 -0
- package/package/components/apps/components/display/dbtable/tableEditor.js +67 -0
- package/package/components/apps/components/display/dbtable/utils.d.ts +2 -0
- package/package/components/apps/components/display/dbtable/utils.js +61 -36
- package/package/components/apps/components/display/table/AppAggridTable.svelte +8 -0
- package/package/components/apps/components/display/table/AppAggridTableActions.svelte +9 -9
- package/package/components/apps/components/display/table/AppAggridTableActions.svelte.d.ts +1 -1
- package/package/components/apps/components/helpers/HiddenComponent.svelte +1 -1
- package/package/components/apps/components/helpers/InputValue.svelte +1 -1
- package/package/components/apps/components/helpers/ResolveConfig.svelte +1 -1
- package/package/components/apps/components/helpers/RunnableComponent.svelte +3 -2
- package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +1 -1
- package/package/components/apps/components/helpers/RunnableWrapper.svelte +2 -2
- package/package/components/apps/components/inputs/AppMultiSelectV2.svelte +2 -4
- package/package/components/apps/editor/AppEditorHeader.svelte +8 -1
- package/package/components/apps/editor/AppEditorHeaderDeploy.svelte +32 -29
- package/package/components/apps/editor/AppEditorHeaderDeploy.svelte.d.ts +2 -2
- package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte +4 -4
- package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte.d.ts +3 -3
- package/package/components/apps/editor/PublicApp.svelte +49 -30
- package/package/components/apps/editor/PublicApp.svelte.d.ts +1 -0
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +77 -7
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +2 -2
- package/package/components/apps/editor/inlineScriptsPanel/utils.d.ts +2 -2
- package/package/components/apps/editor/inlineScriptsPanel/utils.js +10 -1
- package/package/components/apps/inputType.d.ts +6 -1
- package/package/components/assets/AssetsDropdownButton.svelte +1 -1
- package/package/components/assets/AssetsUsageDrawer.svelte +98 -27
- package/package/components/assets/AssetsUsageDrawer.svelte.d.ts +5 -6
- package/package/components/assets/lib.d.ts +3 -2
- package/package/components/assets/lib.js +3 -1
- package/package/components/auditLogs/AuditLogsFilters.svelte +9 -17
- package/package/components/auditLogs/AuditLogsFilters.svelte.d.ts +1 -1
- package/package/components/common/CloseButton.svelte +2 -1
- package/package/components/common/CloseButton.svelte.d.ts +1 -0
- package/package/components/common/badge/CountBadge.svelte +4 -3
- package/package/components/common/badge/CountBadge.svelte.d.ts +1 -0
- package/package/components/common/button/Button.svelte +1 -1
- package/package/components/common/button/model.js +1 -1
- package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +1 -1
- package/package/components/common/confirmationModal/ConfirmationModal.svelte +2 -1
- package/package/components/common/confirmationModal/ConfirmationModal.svelte.d.ts +1 -0
- package/package/components/common/drawer/Drawer.svelte +4 -1
- package/package/components/common/drawer/DrawerContent.svelte +6 -3
- package/package/components/common/drawer/DrawerContent.svelte.d.ts +1 -0
- package/package/components/common/languageIcons/TypeScript.svelte +5 -3
- package/package/components/common/languageIcons/TypeScript.svelte.d.ts +1 -0
- package/package/components/common/modal/Modal.svelte +3 -3
- package/package/components/common/modal/Modal2.svelte +1 -0
- package/package/components/common/table/AppRow.svelte +4 -1
- package/package/components/common/table/FlowRow.svelte +4 -1
- package/package/components/common/table/RawAppRow.svelte +4 -1
- package/package/components/common/table/Row.svelte +11 -21
- package/package/components/common/table/Row.svelte.d.ts +4 -20
- package/package/components/common/table/RowIcon.svelte +6 -2
- package/package/components/common/table/RowIcon.svelte.d.ts +1 -1
- package/package/components/common/table/ScriptRow.svelte +4 -1
- package/package/components/copilot/autocomplete/Autocompletor.d.ts +1 -1
- package/package/components/copilot/autocomplete/Autocompletor.js +7 -6
- package/package/components/copilot/autocomplete/request.js +13 -9
- package/package/components/copilot/chat/AIButtonStyle.d.ts +1 -1
- package/package/components/copilot/chat/AIButtonStyle.js +2 -1
- package/package/components/copilot/chat/AIChat.svelte +3 -1
- package/package/components/copilot/chat/AIChatDisplay.svelte +89 -4
- package/package/components/copilot/chat/AIChatInput.svelte +275 -0
- package/package/components/copilot/chat/AIChatManager.svelte.js +107 -1
- package/package/components/copilot/chat/AiChatLayout.svelte +15 -30
- package/package/components/copilot/chat/AppAvailableContextList.svelte +263 -0
- package/package/components/copilot/chat/AppAvailableContextList.svelte.d.ts +13 -0
- package/package/components/copilot/chat/ContextElementBadge.svelte +44 -0
- package/package/components/copilot/chat/DatatableCreationPolicy.svelte +32 -33
- package/package/components/copilot/chat/ProviderModelSelector.svelte +1 -1
- package/package/components/copilot/chat/__tests__/app/appEvalHelpers.js +3 -0
- package/package/components/copilot/chat/__tests__/flow/flowEvalHelpers.js +4 -0
- package/package/components/copilot/chat/app/core.d.ts +56 -15
- package/package/components/copilot/chat/app/core.js +141 -22
- package/package/components/copilot/chat/context.d.ts +59 -2
- package/package/components/copilot/chat/context.js +6 -2
- package/package/components/copilot/chat/flow/FlowAIChat.svelte +22 -0
- package/package/components/copilot/chat/flow/core.d.ts +3 -1
- package/package/components/copilot/chat/flow/core.js +29 -2
- package/package/components/copilot/chat/flow/openFlow.json +1 -1
- package/package/components/copilot/chat/flow/openFlowZod.d.ts +1 -0
- package/package/components/copilot/chat/flow/openFlowZod.js +14 -2
- package/package/components/copilot/chat/script/core.d.ts +4 -1
- package/package/components/copilot/chat/script/core.js +43 -6
- package/package/components/copilot/chat/shared.d.ts +10 -0
- package/package/components/copilot/chat/shared.js +24 -0
- package/package/components/copilot/lib.d.ts +1 -1
- package/package/components/copilot/lib.js +2 -9
- package/package/components/copilot/utils.d.ts +5 -0
- package/package/components/copilot/utils.js +8 -0
- package/package/components/custom_ui.d.ts +2 -0
- package/package/components/dbOps.d.ts +18 -4
- package/package/components/dbOps.js +25 -3
- package/package/components/debug/DebugConsole.svelte +277 -0
- package/package/components/debug/DebugConsole.svelte.d.ts +13 -0
- package/package/components/debug/DebugPanel.svelte +97 -0
- package/package/components/debug/DebugPanel.svelte.d.ts +11 -0
- package/package/components/debug/DebugToolbar.svelte +148 -0
- package/package/components/debug/DebugToolbar.svelte.d.ts +17 -0
- package/package/components/debug/DebugVariableViewer.svelte +115 -0
- package/package/components/debug/DebugVariableViewer.svelte.d.ts +11 -0
- package/package/components/debug/MonacoDebugger.svelte +384 -0
- package/package/components/debug/MonacoDebugger.svelte.d.ts +15 -0
- package/package/components/debug/dapClient.d.ts +192 -0
- package/package/components/debug/dapClient.js +426 -0
- package/package/components/debug/debugUtils.d.ts +30 -0
- package/package/components/debug/debugUtils.js +131 -0
- package/package/components/debug/index.d.ts +75 -0
- package/package/components/debug/index.js +82 -0
- package/package/components/details/DetailPageHeader.svelte +21 -7
- package/package/components/details/DetailPageHeader.svelte.d.ts +2 -1
- package/package/components/details/DetailPageLayout.svelte +10 -1
- package/package/components/details/DetailPageLayout.svelte.d.ts +1 -0
- package/package/components/flows/CreateActionsApp.svelte +6 -4
- package/package/components/flows/DebounceLimit.svelte.d.ts +1 -1
- package/package/components/flows/FlowHistoryInner.svelte +15 -4
- package/package/components/flows/content/AgentToolWrapper.svelte +1 -1
- package/package/components/flows/content/FlowEditorDrawer.svelte +124 -0
- package/package/components/flows/content/FlowEditorDrawer.svelte.d.ts +22 -0
- package/package/components/flows/content/FlowInput.svelte +211 -37
- package/package/components/flows/content/FlowModuleComponent.svelte +553 -67
- package/package/components/flows/content/FlowModuleEarlyStop.svelte +8 -10
- package/package/components/flows/content/FlowModuleHeader.svelte +7 -4
- package/package/components/flows/content/FlowModuleWorkerTagSelect.svelte +1 -1
- package/package/components/flows/content/McpOAuthConnect.svelte +217 -0
- package/package/components/flows/content/McpOAuthConnect.svelte.d.ts +7 -0
- package/package/components/flows/content/McpToolEditor.svelte +50 -37
- package/package/components/flows/content/McpToolEditor.svelte.d.ts +0 -1
- package/package/components/flows/conversations/FlowChat.svelte +16 -2
- package/package/components/flows/conversations/FlowChat.svelte.d.ts +2 -1
- package/package/components/flows/conversations/FlowChatInterface.svelte +103 -6
- package/package/components/flows/conversations/FlowChatInterface.svelte.d.ts +2 -0
- package/package/components/flows/conversations/FlowChatManager.svelte.js +53 -21
- package/package/components/flows/conversations/FlowConversationsSidebar.svelte +79 -77
- package/package/components/flows/header/FlowImportExportMenu.svelte +1 -1
- package/package/components/flows/propPicker/OutputPickerInner.svelte.d.ts +1 -1
- package/package/components/flows/propPicker/PropPickerWrapper.svelte +3 -1
- package/package/components/flows/types.d.ts +2 -0
- package/package/components/git_sync/GitSyncRepositoryCard.svelte +16 -8
- package/package/components/graph/FlowGraphV2.svelte +7 -1
- package/package/components/graph/renderers/triggers/TriggersBadge.svelte +41 -24
- package/package/components/home/ItemsList.svelte +7 -6
- package/package/components/home/TutorialBanner.svelte +34 -18
- package/package/components/home/treeViewUtils.js +1 -1
- package/package/components/icons/CssIcon.svelte +20 -0
- package/package/components/icons/CssIcon.svelte.d.ts +7 -25
- package/package/components/icons/HtmlIcon.svelte +20 -0
- package/package/components/icons/HtmlIcon.svelte.d.ts +8 -0
- package/package/components/icons/JavaScriptIcon.svelte +10 -2
- package/package/components/icons/JavaScriptIcon.svelte.d.ts +1 -0
- package/package/components/icons/JsonIcon.svelte +8 -2
- package/package/components/icons/JsonIcon.svelte.d.ts +1 -0
- package/package/components/icons/LessIcon.svelte +16 -0
- package/package/components/icons/LessIcon.svelte.d.ts +8 -0
- package/package/components/icons/MarkdownIcon.svelte +20 -0
- package/package/components/icons/MarkdownIcon.svelte.d.ts +8 -0
- package/package/components/icons/NextcloudIcon.svelte +3 -2
- package/package/components/icons/NextcloudIcon.svelte.d.ts +2 -0
- package/package/components/icons/PocketIdIcon.svelte +9 -0
- package/package/components/icons/PocketIdIcon.svelte.d.ts +9 -0
- package/package/components/icons/ReactIcon.svelte +10 -2
- package/package/components/icons/ReactIcon.svelte.d.ts +1 -0
- package/package/components/icons/SassIcon.svelte +28 -0
- package/package/components/icons/SassIcon.svelte.d.ts +8 -0
- package/package/components/icons/SvelteIcon.svelte +10 -2
- package/package/components/icons/SvelteIcon.svelte.d.ts +1 -0
- package/package/components/icons/VueIcon.svelte +10 -2
- package/package/components/icons/VueIcon.svelte.d.ts +1 -0
- package/package/components/icons/YamlIcon.svelte +20 -0
- package/package/components/icons/YamlIcon.svelte.d.ts +8 -0
- package/package/components/icons/index.js +3 -1
- package/package/components/instanceSettings/SecretBackendConfig.svelte +514 -0
- package/package/components/instanceSettings/SecretBackendConfig.svelte.d.ts +8 -0
- package/package/components/instanceSettings.d.ts +2 -1
- package/package/components/instanceSettings.js +33 -1
- package/package/components/jobs/JobPreview.svelte +46 -39
- package/package/components/jobs/JobPreview.svelte.d.ts +1 -0
- package/package/components/monacoLanguagesOptions.js +16 -15
- package/package/components/propertyPicker/PropPicker.svelte +16 -2
- package/package/components/propertyPicker/PropPicker.svelte.d.ts +2 -0
- package/package/components/raw_apps/DefaultDatabaseSelector.svelte +9 -5
- package/package/components/raw_apps/FileEditorIcon.svelte +12 -7
- package/package/components/raw_apps/FileEditorIcon.svelte.d.ts +2 -0
- package/package/components/raw_apps/FileTreeNode.svelte +119 -83
- package/package/components/raw_apps/RawAppBackgroundRunner.svelte +88 -8
- package/package/components/raw_apps/RawAppDataTableDrawer.svelte +1 -3
- package/package/components/raw_apps/RawAppDataTableList.svelte +12 -9
- package/package/components/raw_apps/RawAppEditor.svelte +218 -68
- package/package/components/raw_apps/RawAppEditorHeader.svelte +33 -16
- package/package/components/raw_apps/RawAppHistoryList.svelte +264 -80
- package/package/components/raw_apps/RawAppHistoryList.svelte.d.ts +1 -0
- package/package/components/raw_apps/RawAppHistoryManager.svelte.d.ts +15 -1
- package/package/components/raw_apps/RawAppHistoryManager.svelte.js +46 -12
- package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +549 -47
- package/package/components/raw_apps/RawAppInlineScriptEditor.svelte.d.ts +31 -5
- package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte +25 -18
- package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte.d.ts +1 -0
- package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +141 -10
- package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte.d.ts +8 -0
- package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte +2 -1
- package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte.d.ts +9 -1
- package/package/components/raw_apps/RawAppInputsSpecEditor.svelte +47 -3
- package/package/components/raw_apps/RawAppInputsSpecEditor.svelte.d.ts +2 -2
- package/package/components/raw_apps/RawAppModules.svelte +13 -7
- package/package/components/raw_apps/RawAppPreview.svelte +48 -6
- package/package/components/raw_apps/RawAppSidebar.svelte +194 -125
- package/package/components/raw_apps/RawAppSidebar.svelte.d.ts +1 -0
- package/package/components/raw_apps/RunnableRow.svelte +41 -0
- package/package/components/raw_apps/RunnableRow.svelte.d.ts +11 -0
- package/package/components/raw_apps/datatableUtils.svelte.js +1 -1
- package/package/components/raw_apps/utils.d.ts +1 -1
- package/package/components/raw_apps/utils.js +76 -18
- package/package/components/runs/ManuelDatePicker.svelte +3 -3
- package/package/components/runs/ManuelDatePicker.svelte.d.ts +3 -3
- package/package/components/runs/NoWorkerWithTagWarning.svelte +5 -1
- package/package/components/runs/RunsFilter.svelte +75 -63
- package/package/components/runs/RunsFilter.svelte.d.ts +35 -4
- package/package/components/runs/RunsQueue.svelte.d.ts +1 -1
- package/package/components/runs/RunsTable.svelte +1 -1
- package/package/components/runs/RunsTable.svelte.d.ts +1 -1
- package/package/components/runs/useJobsLoader.svelte.d.ts +34 -0
- package/package/components/runs/useJobsLoader.svelte.js +507 -0
- package/package/components/schema/EditableSchemaWrapper.svelte +2 -2
- package/package/components/scriptEditor/LogPanel.svelte +17 -2
- package/package/components/scriptEditor/LogPanel.svelte.d.ts +2 -0
- package/package/components/select/MultiSelect.svelte +1 -1
- package/package/components/select/SelectDropdown.svelte +17 -5
- package/package/components/settings/AIPromptsModal.svelte +88 -0
- package/package/components/settings/AIPromptsModal.svelte.d.ts +11 -0
- package/package/components/settings/ChangeWorkspaceColor.svelte +4 -3
- package/package/components/settings/ChangeWorkspaceId.svelte +16 -11
- package/package/components/settings/ChangeWorkspaceName.svelte +7 -6
- package/package/components/settings/CreateToken.svelte +4 -4
- package/package/components/settings/UserAIPromptsSettings.svelte +56 -15
- package/package/components/settings/WorkspaceOperatorSettings.svelte +68 -85
- package/package/components/settings/WorkspaceUserSettings.svelte +537 -411
- package/package/components/sidebar/MenuButton.svelte +54 -24
- package/package/components/sidebar/MenuButton.svelte.d.ts +2 -0
- package/package/components/sidebar/MultiplayerMenu.svelte +4 -4
- package/package/components/sidebar/OperatorMenu.svelte +63 -88
- package/package/components/sidebar/SidebarContent.svelte +39 -6
- package/package/components/sidebar/UserMenu.svelte +3 -3
- package/package/components/sidebar/WorkspaceMenu.svelte +35 -85
- package/package/components/sqlTypeService.js +4 -3
- package/package/components/table/DataTable.svelte +8 -3
- package/package/components/table/DataTable.svelte.d.ts +2 -0
- package/package/components/text_input/TextInput.svelte +3 -0
- package/package/components/text_input/TextInput.svelte.d.ts +2 -0
- package/package/components/triggers/AddTriggersButton.svelte +17 -4
- package/package/components/triggers/TriggersEditor.svelte +4 -0
- package/package/components/triggers/TriggersWrapper.svelte +14 -0
- package/package/components/triggers/native/NativeTriggerEditor.svelte +379 -0
- package/package/components/triggers/native/NativeTriggerEditor.svelte.d.ts +26 -0
- package/package/components/triggers/native/NativeTriggerTable.svelte +155 -0
- package/package/components/triggers/native/NativeTriggerTable.svelte.d.ts +16 -0
- package/package/components/triggers/native/NativeTriggersPanel.svelte +40 -0
- package/package/components/triggers/native/NativeTriggersPanel.svelte.d.ts +15 -0
- package/package/components/triggers/native/services/nextcloud/NextcloudTriggerForm.svelte +104 -0
- package/package/components/triggers/native/services/nextcloud/NextcloudTriggerForm.svelte.d.ts +18 -0
- package/package/components/triggers/native/utils.d.ts +74 -0
- package/package/components/triggers/native/utils.js +152 -0
- package/package/components/triggers/triggers.svelte.d.ts +2 -1
- package/package/components/triggers/triggers.svelte.js +36 -8
- package/package/components/triggers/utils.js +18 -6
- package/package/components/triggers.d.ts +1 -1
- package/package/components/tutorials/FlowBuilderLiveTutorial.svelte +6 -35
- package/package/components/tutorials/RunsTutorial.svelte +399 -0
- package/package/components/{schema/SchemaPicker.svelte.d.ts → tutorials/RunsTutorial.svelte.d.ts} +11 -12
- package/package/components/tutorials/TroubleshootFlowTutorial.svelte +5 -20
- package/package/components/tutorials/utils.d.ts +16 -0
- package/package/components/tutorials/utils.js +96 -0
- package/package/components/tutorials/workspace/WorkspaceOnboardingOperatorTutorial.svelte +133 -0
- package/package/components/{SavedInputs.svelte.d.ts → tutorials/workspace/WorkspaceOnboardingOperatorTutorial.svelte.d.ts} +8 -11
- package/package/components/vscode.js +6 -6
- package/package/components/workspace/WorkspaceCard.svelte +184 -0
- package/package/components/workspace/WorkspaceCard.svelte.d.ts +24 -0
- package/package/components/workspace/WorkspaceIcon.svelte +21 -0
- package/package/components/workspace/WorkspaceIcon.svelte.d.ts +9 -0
- package/package/components/workspace/WorkspaceTreeView.svelte +331 -0
- package/package/components/workspace/WorkspaceTreeView.svelte.d.ts +15 -0
- package/package/components/workspaceSettings/AISettings.svelte +147 -108
- package/package/components/workspaceSettings/CreateWorkspace.svelte +26 -12
- package/package/components/workspaceSettings/CustomInstanceDbSelect.svelte +1 -0
- package/package/components/workspaceSettings/CustomInstanceDbWizardModal.svelte +3 -1
- package/package/components/workspaceSettings/DataTableSettings.svelte +2 -1
- package/package/components/workspaceSettings/DucklakeSettings.svelte +54 -26
- package/package/components/workspaceSettings/DucklakeSettings.svelte.d.ts +2 -1
- package/package/components/workspaceSettings/ModelTokenLimits.svelte +14 -18
- package/package/components/workspaceSettings/OAuthClientConfig.svelte +180 -0
- package/package/components/workspaceSettings/OAuthClientConfig.svelte.d.ts +14 -0
- package/package/components/workspaceSettings/StorageSettings.svelte +285 -241
- package/package/components/workspaceSettings/StorageSettings.svelte.d.ts +1 -0
- package/package/components/workspaceSettings/WorkspaceIntegrations.svelte +302 -0
- package/package/components/workspaceSettings/WorkspaceIntegrations.svelte.d.ts +3 -0
- package/package/consts.js +4 -3
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +517 -4
- package/package/gen/schemas.gen.js +523 -4
- package/package/gen/services.gen.d.ts +359 -22
- package/package/gen/services.gen.js +702 -44
- package/package/gen/types.gen.d.ts +1501 -121
- package/package/hub.js +2 -2
- package/package/hubPaths.json +3 -2
- package/package/infer.js +2 -0
- package/package/logout.d.ts +0 -2
- package/package/logout.js +2 -23
- package/package/logoutKit.d.ts +2 -0
- package/package/logoutKit.js +26 -0
- package/package/monaco_workers/graphql.worker.bundle.js +121 -121
- package/package/navigation.d.ts +1 -1
- package/package/rawAppWmillTs.d.ts +11 -0
- package/package/rawAppWmillTs.js +38 -1
- package/package/refreshUser.d.ts +5 -1
- package/package/refreshUser.js +20 -30
- package/package/storeUtils.js +2 -0
- package/package/svelte5Utils.svelte.d.ts +68 -1
- package/package/svelte5Utils.svelte.js +193 -2
- package/package/svelte5UtilsKit.svelte.d.ts +3 -0
- package/package/svelte5UtilsKit.svelte.js +30 -0
- package/package/tutorialUtils.js +0 -4
- package/package/tutorials/config.js +31 -3
- package/package/tutorials/roleUtils.d.ts +1 -1
- package/package/tutorials/roleUtils.js +6 -2
- package/package/utils.js +162 -1
- package/package.json +1 -1
- package/package/components/SavedInputs.svelte +0 -416
- package/package/components/runs/JobsLoader.svelte +0 -468
- package/package/components/runs/JobsLoader.svelte.d.ts +0 -49
- package/package/components/schema/SchemaPicker.svelte +0 -92
|
@@ -45,9 +45,16 @@ let listener = async (event) => {
|
|
|
45
45
|
const runnable_id = data.runnable_id;
|
|
46
46
|
let runnable = runnables[runnable_id];
|
|
47
47
|
if (runnable) {
|
|
48
|
+
// Build args, converting ctx fields to $ctx:property format
|
|
49
|
+
const args = { ...(data.v ?? {}) };
|
|
50
|
+
for (const [key, field] of Object.entries(runnable?.fields ?? {})) {
|
|
51
|
+
if (field?.type === 'ctx' && field?.ctx) {
|
|
52
|
+
args[key] = `$ctx:${field.ctx}`;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
48
55
|
const uuid = await executeRunnable(runnable, workspace, undefined, $userStore?.username, path, runnable_id, {
|
|
49
56
|
component: runnable_id,
|
|
50
|
-
args
|
|
57
|
+
args,
|
|
51
58
|
force_viewer_allow_user_resources: editor
|
|
52
59
|
? undefinedIfEmpty(Object.keys(runnable?.fields ?? {}).filter((k) => runnable?.fields?.[k]?.type == 'user' &&
|
|
53
60
|
runnable?.fields?.[k]?.allowUserResources))
|
|
@@ -73,17 +80,90 @@ let listener = async (event) => {
|
|
|
73
80
|
job.result = result;
|
|
74
81
|
}
|
|
75
82
|
}
|
|
76
|
-
else if (event.data.type == 'waitJob') {
|
|
77
|
-
await respondWithResult(data.jobId);
|
|
78
|
-
}
|
|
79
|
-
else if (event.data.type == 'getJob') {
|
|
80
|
-
const job = await JobService.getJob({ workspace, id: data.jobId });
|
|
81
|
-
respond({ result: job });
|
|
82
|
-
}
|
|
83
83
|
else {
|
|
84
84
|
console.error('No runnable found for', runnable_id);
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
|
+
else if (event.data.type == 'waitJob') {
|
|
88
|
+
await respondWithResult(data.jobId);
|
|
89
|
+
}
|
|
90
|
+
else if (event.data.type == 'getJob') {
|
|
91
|
+
const job = await JobService.getJob({ workspace, id: data.jobId });
|
|
92
|
+
respond({ result: job });
|
|
93
|
+
}
|
|
94
|
+
else if (event.data.type == 'streamJob') {
|
|
95
|
+
// Stream job results using SSE
|
|
96
|
+
const jobId = data.jobId;
|
|
97
|
+
const reqId = data.reqId;
|
|
98
|
+
const params = new URLSearchParams();
|
|
99
|
+
params.set('fast', 'true');
|
|
100
|
+
const sseUrl = `/api/w/${workspace}/jobs_u/getupdate_sse/${jobId}?${params.toString()}`;
|
|
101
|
+
const eventSource = new EventSource(sseUrl);
|
|
102
|
+
eventSource.onmessage = (sseEvent) => {
|
|
103
|
+
try {
|
|
104
|
+
const update = JSON.parse(sseEvent.data);
|
|
105
|
+
const type = update.type;
|
|
106
|
+
if (type === 'ping' || type === 'timeout') {
|
|
107
|
+
if (type === 'timeout') {
|
|
108
|
+
eventSource.close();
|
|
109
|
+
}
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
if (type === 'error') {
|
|
113
|
+
eventSource.close();
|
|
114
|
+
iframe?.contentWindow?.postMessage({
|
|
115
|
+
type: 'streamJobRes',
|
|
116
|
+
reqId,
|
|
117
|
+
error: true,
|
|
118
|
+
result: { message: update.error || 'SSE error' }
|
|
119
|
+
}, '*');
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
if (type === 'not_found') {
|
|
123
|
+
eventSource.close();
|
|
124
|
+
iframe?.contentWindow?.postMessage({
|
|
125
|
+
type: 'streamJobRes',
|
|
126
|
+
reqId,
|
|
127
|
+
error: true,
|
|
128
|
+
result: { message: 'Job not found' }
|
|
129
|
+
}, '*');
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
// Send stream update if there's new stream data
|
|
133
|
+
if (update.new_result_stream !== undefined) {
|
|
134
|
+
iframe?.contentWindow?.postMessage({
|
|
135
|
+
type: 'streamJobUpdate',
|
|
136
|
+
reqId,
|
|
137
|
+
new_result_stream: update.new_result_stream,
|
|
138
|
+
stream_offset: update.stream_offset
|
|
139
|
+
}, '*');
|
|
140
|
+
}
|
|
141
|
+
// Check if job is completed
|
|
142
|
+
if (update.completed) {
|
|
143
|
+
eventSource.close();
|
|
144
|
+
iframe?.contentWindow?.postMessage({
|
|
145
|
+
type: 'streamJobRes',
|
|
146
|
+
reqId,
|
|
147
|
+
error: false,
|
|
148
|
+
result: update.only_result
|
|
149
|
+
}, '*');
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
catch (parseErr) {
|
|
153
|
+
console.warn('Failed to parse SSE data:', parseErr);
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
eventSource.onerror = (error) => {
|
|
157
|
+
console.warn('SSE stream error:', error);
|
|
158
|
+
eventSource.close();
|
|
159
|
+
iframe?.contentWindow?.postMessage({
|
|
160
|
+
type: 'streamJobRes',
|
|
161
|
+
reqId,
|
|
162
|
+
error: true,
|
|
163
|
+
result: { message: 'SSE connection error' }
|
|
164
|
+
}, '*');
|
|
165
|
+
};
|
|
166
|
+
}
|
|
87
167
|
};
|
|
88
168
|
</script>
|
|
89
169
|
|
|
@@ -14,7 +14,6 @@ let selectedDatatable = $state(undefined);
|
|
|
14
14
|
// For DB manager
|
|
15
15
|
let dbManagerContent = $state();
|
|
16
16
|
let hasReplResult = $state(false);
|
|
17
|
-
let isRefreshing = $state(false);
|
|
18
17
|
let windowWidth = $state(window.innerWidth);
|
|
19
18
|
let expand = $state(false);
|
|
20
19
|
// Multi-select mode: selected tables
|
|
@@ -136,7 +135,6 @@ const canAdd = $derived(selectedDatatable && selectedTables.length > 0);
|
|
|
136
135
|
bind:this={dbManagerContent}
|
|
137
136
|
input={dbInput}
|
|
138
137
|
bind:hasReplResult
|
|
139
|
-
bind:isRefreshing
|
|
140
138
|
bind:selectedSchemaKey
|
|
141
139
|
bind:selectedTableKey
|
|
142
140
|
multiSelectMode={true}
|
|
@@ -184,7 +182,7 @@ const canAdd = $derived(selectedDatatable && selectedTables.length > 0);
|
|
|
184
182
|
</Button>
|
|
185
183
|
|
|
186
184
|
<Button
|
|
187
|
-
loading={
|
|
185
|
+
loading={dbManagerContent?.isLoading() ?? false}
|
|
188
186
|
on:click={() => dbManagerContent?.refresh()}
|
|
189
187
|
startIcon={{ icon: RefreshCcw }}
|
|
190
188
|
size="xs"
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<script lang="ts">import { Plus, Database, Trash2, Table2, Star } from 'lucide-svelte';
|
|
2
2
|
import PanelSection from '../apps/editor/settingsPanel/common/PanelSection.svelte';
|
|
3
3
|
import DefaultDatabaseSelector from './DefaultDatabaseSelector.svelte';
|
|
4
|
+
import { Button } from '../common';
|
|
4
5
|
let { dataTableRefs = [], defaultDatatable = undefined, defaultSchema = undefined, onAdd, onRemove, onSelect, onDefaultChange, selectedIndex = undefined, standalone = false, hideDefaultSelector = false } = $props();
|
|
5
6
|
const groupedRefs = $derived.by(() => {
|
|
6
7
|
const groups = new Map();
|
|
@@ -44,7 +45,7 @@ function sortSchemaEntries(entries, datatableName) {
|
|
|
44
45
|
</script>
|
|
45
46
|
|
|
46
47
|
{#snippet actionButtons()}
|
|
47
|
-
<div class="flex items-center">
|
|
48
|
+
<div class="flex items-center gap-1">
|
|
48
49
|
<!-- Settings popover for default database/schema -->
|
|
49
50
|
{#if !hideDefaultSelector}
|
|
50
51
|
<DefaultDatabaseSelector
|
|
@@ -55,14 +56,16 @@ function sortSchemaEntries(entries, datatableName) {
|
|
|
55
56
|
{/if}
|
|
56
57
|
|
|
57
58
|
<!-- Add datatable button -->
|
|
58
|
-
<
|
|
59
|
-
|
|
60
|
-
class="pt-1.5 pb-0.5 px-1 hover:bg-surface-hover rounded transition-colors flex items-center gap-0.5"
|
|
59
|
+
<Button
|
|
60
|
+
onClick={() => onAdd?.()}
|
|
61
61
|
title="Add datatable reference"
|
|
62
|
+
unifiedSize="xs"
|
|
63
|
+
variant="subtle"
|
|
64
|
+
btnClasses="px-1 gap-0.5"
|
|
62
65
|
>
|
|
63
|
-
<Plus size={12}
|
|
64
|
-
<Database size={12}
|
|
65
|
-
</
|
|
66
|
+
<Plus size={12} />
|
|
67
|
+
<Database size={12} />
|
|
68
|
+
</Button>
|
|
66
69
|
</div>
|
|
67
70
|
{/snippet}
|
|
68
71
|
|
|
@@ -138,7 +141,7 @@ function sortSchemaEntries(entries, datatableName) {
|
|
|
138
141
|
{#if standalone}
|
|
139
142
|
<div class="flex flex-col gap-2">
|
|
140
143
|
<div class="flex items-center justify-between">
|
|
141
|
-
<span class="text-xs text-
|
|
144
|
+
<span class="text-xs text-emphasis font-semibold">Existing tables to use</span>
|
|
142
145
|
{@render actionButtons()}
|
|
143
146
|
</div>
|
|
144
147
|
{@render tableList()}
|
|
@@ -146,7 +149,7 @@ function sortSchemaEntries(entries, datatableName) {
|
|
|
146
149
|
{:else}
|
|
147
150
|
<PanelSection
|
|
148
151
|
fullHeight={false}
|
|
149
|
-
size="
|
|
152
|
+
size="sm"
|
|
150
153
|
title="data"
|
|
151
154
|
id="app-editor-data-panel"
|
|
152
155
|
tooltip="Data tables to use in the app. Adding some here does not change the behavior of the app, since they can be used in code directly regardless. But it allows AI to always keep their schema in context as well as allowing quick access and clear view of the app's data layer."
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script lang="ts">import { Pane, Splitpanes } from 'svelte-splitpanes';
|
|
2
2
|
import RawAppInlineScriptsPanel from './RawAppInlineScriptsPanel.svelte';
|
|
3
3
|
import RawAppEditorHeader from './RawAppEditorHeader.svelte';
|
|
4
|
-
import {} from '../../gen';
|
|
4
|
+
import { WorkspaceService } from '../../gen';
|
|
5
5
|
import DiffDrawer from '../DiffDrawer.svelte';
|
|
6
6
|
import { encodeState } from '../../utils';
|
|
7
7
|
import { deepEqual } from 'fast-equals';
|
|
@@ -16,7 +16,6 @@ import { aiChatManager, AIMode } from '../copilot/chat/AIChatManager.svelte';
|
|
|
16
16
|
import { onMount } from 'svelte';
|
|
17
17
|
import { rawAppLintStore } from './lintStore';
|
|
18
18
|
import { dbSchemas } from '../../stores';
|
|
19
|
-
import { getDbSchemas } from '../apps/components/display/dbtable/metadata';
|
|
20
19
|
import { runScriptAndPollResult } from '../jobs/utils';
|
|
21
20
|
import { RawAppHistoryManager } from './RawAppHistoryManager.svelte';
|
|
22
21
|
import { sendUserToast } from '../../utils';
|
|
@@ -58,7 +57,7 @@ function saveFrontendDraft() {
|
|
|
58
57
|
}, 500);
|
|
59
58
|
}
|
|
60
59
|
let iframe = $state(undefined);
|
|
61
|
-
let sidebarPanelSize = $state(
|
|
60
|
+
let sidebarPanelSize = $state(15);
|
|
62
61
|
let jobs = $state([]);
|
|
63
62
|
let jobsById = $state({});
|
|
64
63
|
// Helper function to convert internal Runnable to BackendRunnable format
|
|
@@ -122,6 +121,14 @@ function setFilesInIframe(newFiles) {
|
|
|
122
121
|
files: files
|
|
123
122
|
}, '*');
|
|
124
123
|
}
|
|
124
|
+
function setFilesAndSelectInIframe(newFiles, pathToSelect) {
|
|
125
|
+
const files = Object.fromEntries(Object.entries(newFiles).filter(([path, _]) => !path.endsWith('/')));
|
|
126
|
+
iframe?.contentWindow?.postMessage({
|
|
127
|
+
type: 'setFilesAndSelect',
|
|
128
|
+
files: files,
|
|
129
|
+
pathToSelect: pathToSelect
|
|
130
|
+
}, '*');
|
|
131
|
+
}
|
|
125
132
|
function populateRunnables() {
|
|
126
133
|
iframe?.contentWindow?.postMessage({
|
|
127
134
|
type: 'setRunnables',
|
|
@@ -205,7 +212,6 @@ $effect(() => {
|
|
|
205
212
|
...$state.snapshot(files ?? {}),
|
|
206
213
|
'/wmill.d.ts': genWmillTs(runnables)
|
|
207
214
|
};
|
|
208
|
-
console.log('result', frontendFiles);
|
|
209
215
|
return frontendFiles;
|
|
210
216
|
},
|
|
211
217
|
setFrontendFile: (path, content) => {
|
|
@@ -214,10 +220,9 @@ $effect(() => {
|
|
|
214
220
|
files = {};
|
|
215
221
|
}
|
|
216
222
|
files[path] = content;
|
|
217
|
-
setFilesInIframe(files);
|
|
218
223
|
selectedDocument = path;
|
|
219
|
-
|
|
220
|
-
|
|
224
|
+
// Use combined setFilesAndSelect to avoid race condition
|
|
225
|
+
setFilesAndSelectInIframe(files, path);
|
|
221
226
|
return lint();
|
|
222
227
|
},
|
|
223
228
|
deleteFrontendFile: (path) => {
|
|
@@ -297,24 +302,37 @@ $effect(() => {
|
|
|
297
302
|
};
|
|
298
303
|
},
|
|
299
304
|
getSelectedContext: () => {
|
|
305
|
+
const baseContext = {
|
|
306
|
+
inspectorElement: inspectorElement,
|
|
307
|
+
selectionExcluded: selectionExcludedFromPrompt,
|
|
308
|
+
toggleSelectionExcluded: toggleSelectionExcluded,
|
|
309
|
+
clearInspector: clearInspectorSelection,
|
|
310
|
+
clearRunnable: handleClearRunnable,
|
|
311
|
+
codeSelection: codeSelection,
|
|
312
|
+
clearCodeSelection: () => {
|
|
313
|
+
codeSelection = undefined;
|
|
314
|
+
}
|
|
315
|
+
};
|
|
300
316
|
if (selectedRunnable) {
|
|
301
|
-
|
|
317
|
+
const runnable = convertToBackendRunnable(selectedRunnable, runnables[selectedRunnable]);
|
|
302
318
|
return {
|
|
303
319
|
type: 'backend',
|
|
304
|
-
|
|
320
|
+
backendKey: selectedRunnable,
|
|
321
|
+
backendRunnable: runnable,
|
|
322
|
+
...baseContext
|
|
305
323
|
};
|
|
306
324
|
}
|
|
307
325
|
if (selectedDocument) {
|
|
308
|
-
console.log('selectedDocument', selectedDocument);
|
|
309
326
|
return {
|
|
310
327
|
type: 'frontend',
|
|
311
|
-
|
|
328
|
+
frontendPath: selectedDocument,
|
|
329
|
+
frontendContent: files?.[selectedDocument],
|
|
330
|
+
...baseContext
|
|
312
331
|
};
|
|
313
332
|
}
|
|
314
|
-
console.log('no selection');
|
|
315
333
|
return {
|
|
316
334
|
type: 'none',
|
|
317
|
-
|
|
335
|
+
...baseContext
|
|
318
336
|
};
|
|
319
337
|
},
|
|
320
338
|
snapshot: () => {
|
|
@@ -327,52 +345,71 @@ $effect(() => {
|
|
|
327
345
|
handleHistorySelect(id);
|
|
328
346
|
},
|
|
329
347
|
getDatatables: async () => {
|
|
348
|
+
if (!$workspaceStore) {
|
|
349
|
+
return [];
|
|
350
|
+
}
|
|
351
|
+
// Get all datatable schemas from the backend
|
|
352
|
+
const allSchemas = await WorkspaceService.listDataTableSchemas({
|
|
353
|
+
workspace: $workspaceStore
|
|
354
|
+
});
|
|
355
|
+
// Get unique datatable names from dataTableRefs (the whitelisted tables)
|
|
356
|
+
const whitelistedDatatables = new Set(dataTableRefsObjects.map((ref) => ref.datatable));
|
|
357
|
+
// If no datatables are configured, return all available datatables
|
|
358
|
+
// This allows users to see all datatables in the @ context menu
|
|
359
|
+
if (whitelistedDatatables.size === 0) {
|
|
360
|
+
return allSchemas;
|
|
361
|
+
}
|
|
362
|
+
// Build a map of whitelisted tables per datatable: datatable -> schema -> Set<table>
|
|
363
|
+
const whitelistedTables = new Map();
|
|
364
|
+
for (const ref of dataTableRefsObjects) {
|
|
365
|
+
if (!ref.table)
|
|
366
|
+
continue;
|
|
367
|
+
if (!whitelistedTables.has(ref.datatable)) {
|
|
368
|
+
whitelistedTables.set(ref.datatable, new Map());
|
|
369
|
+
}
|
|
370
|
+
const schemaKey = ref.schema || 'public';
|
|
371
|
+
const schemaMap = whitelistedTables.get(ref.datatable);
|
|
372
|
+
if (!schemaMap.has(schemaKey)) {
|
|
373
|
+
schemaMap.set(schemaKey, new Set());
|
|
374
|
+
}
|
|
375
|
+
schemaMap.get(schemaKey).add(ref.table);
|
|
376
|
+
}
|
|
377
|
+
// Filter schemas to only include whitelisted datatables and tables
|
|
330
378
|
const results = [];
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
const resourcePath = `datatable://${datatableName}`;
|
|
335
|
-
// Get or load the schema
|
|
336
|
-
let schema = $dbSchemas[resourcePath];
|
|
337
|
-
if (!schema) {
|
|
338
|
-
try {
|
|
339
|
-
await getDbSchemas('postgresql', resourcePath, $workspaceStore, $dbSchemas, (msg) => console.error('Schema error:', msg));
|
|
340
|
-
schema = $dbSchemas[resourcePath];
|
|
341
|
-
}
|
|
342
|
-
catch (e) {
|
|
343
|
-
console.error(`Failed to load schema for ${datatableName}:`, e);
|
|
344
|
-
continue;
|
|
345
|
-
}
|
|
379
|
+
for (const schema of allSchemas) {
|
|
380
|
+
if (!whitelistedDatatables.has(schema.datatable_name)) {
|
|
381
|
+
continue;
|
|
346
382
|
}
|
|
347
|
-
|
|
383
|
+
const allowedTables = whitelistedTables.get(schema.datatable_name);
|
|
384
|
+
if (!allowedTables) {
|
|
385
|
+
// Include the datatable but with empty schemas
|
|
386
|
+
results.push({
|
|
387
|
+
datatable_name: schema.datatable_name,
|
|
388
|
+
schemas: {},
|
|
389
|
+
error: schema.error
|
|
390
|
+
});
|
|
348
391
|
continue;
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
const
|
|
352
|
-
for (const
|
|
353
|
-
const
|
|
354
|
-
|
|
355
|
-
if (!tableKey)
|
|
356
|
-
continue; // Skip if no table specified
|
|
357
|
-
const tableSchema = schema.schema[schemaKey]?.[tableKey];
|
|
358
|
-
if (!tableSchema)
|
|
392
|
+
}
|
|
393
|
+
// Filter schemas to only include whitelisted tables
|
|
394
|
+
const filteredSchemas = {};
|
|
395
|
+
for (const [schemaName, tables] of Object.entries(schema.schemas)) {
|
|
396
|
+
const allowedTablesInSchema = allowedTables.get(schemaName);
|
|
397
|
+
if (!allowedTablesInSchema)
|
|
359
398
|
continue;
|
|
360
|
-
const
|
|
361
|
-
for (const [
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
399
|
+
const filteredTables = {};
|
|
400
|
+
for (const [tableName, columns] of Object.entries(tables)) {
|
|
401
|
+
if (allowedTablesInSchema.has(tableName)) {
|
|
402
|
+
filteredTables[tableName] = columns;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
if (Object.keys(filteredTables).length > 0) {
|
|
406
|
+
filteredSchemas[schemaName] = filteredTables;
|
|
366
407
|
}
|
|
367
|
-
tables.push({
|
|
368
|
-
schema: schemaKey,
|
|
369
|
-
table: tableKey,
|
|
370
|
-
columns
|
|
371
|
-
});
|
|
372
408
|
}
|
|
373
409
|
results.push({
|
|
374
|
-
|
|
375
|
-
|
|
410
|
+
datatable_name: schema.datatable_name,
|
|
411
|
+
schemas: filteredSchemas,
|
|
412
|
+
error: schema.error
|
|
376
413
|
});
|
|
377
414
|
}
|
|
378
415
|
return results;
|
|
@@ -422,17 +459,44 @@ $effect(() => {
|
|
|
422
459
|
const errorMsg = e instanceof Error ? e.message : String(e);
|
|
423
460
|
return { success: false, error: errorMsg };
|
|
424
461
|
}
|
|
462
|
+
},
|
|
463
|
+
addTableToWhitelist: (datatableName, schemaName, tableName) => {
|
|
464
|
+
// Format the table reference
|
|
465
|
+
const newRef = formatDataTableRef({
|
|
466
|
+
datatable: datatableName,
|
|
467
|
+
schema: schemaName === 'public' ? undefined : schemaName,
|
|
468
|
+
table: tableName
|
|
469
|
+
});
|
|
470
|
+
// Only add if not already present
|
|
471
|
+
if (!data.tables.includes(newRef)) {
|
|
472
|
+
data.tables = [...data.tables, newRef];
|
|
473
|
+
saveFrontendDraft();
|
|
474
|
+
}
|
|
425
475
|
}
|
|
426
476
|
});
|
|
427
477
|
});
|
|
428
478
|
let selectedRunnable = $state(undefined);
|
|
429
479
|
let selectedDocument = $state(undefined);
|
|
480
|
+
let inspectorElement = $state(undefined);
|
|
481
|
+
let selectionExcludedFromPrompt = $state(false);
|
|
482
|
+
let codeSelection = $state(undefined);
|
|
483
|
+
function toggleSelectionExcluded() {
|
|
484
|
+
selectionExcludedFromPrompt = !selectionExcludedFromPrompt;
|
|
485
|
+
}
|
|
430
486
|
let modules = $state({});
|
|
487
|
+
// Normalize Windows-style path separators to Linux-style
|
|
488
|
+
function normalizeFilePaths(filesObj) {
|
|
489
|
+
if (!filesObj)
|
|
490
|
+
return filesObj;
|
|
491
|
+
return Object.fromEntries(Object.entries(filesObj).map(([path, content]) => [path.replace(/\\/g, '/'), content]));
|
|
492
|
+
}
|
|
431
493
|
function listener(e) {
|
|
432
494
|
if (e.data.type === 'setFiles') {
|
|
495
|
+
// Normalize Windows-style path separators to Linux-style
|
|
496
|
+
const normalizedFiles = normalizeFilePaths(e.data.files);
|
|
433
497
|
// Only mark pending changes if files actually changed (ignore echo from setFilesInIframe)
|
|
434
|
-
if (!deepEqual(files,
|
|
435
|
-
files =
|
|
498
|
+
if (!deepEqual(files, normalizedFiles)) {
|
|
499
|
+
files = normalizedFiles;
|
|
436
500
|
historyManager.markPendingChanges();
|
|
437
501
|
}
|
|
438
502
|
}
|
|
@@ -443,7 +507,39 @@ function listener(e) {
|
|
|
443
507
|
modules = e.data.modules;
|
|
444
508
|
}
|
|
445
509
|
else if (e.data.type === 'setActiveDocument') {
|
|
446
|
-
|
|
510
|
+
// Normalize Windows-style path separators to Linux-style
|
|
511
|
+
selectedDocument = e.data.path?.replace(/\\/g, '/');
|
|
512
|
+
}
|
|
513
|
+
else if (e.data.type === 'inspectorSelect') {
|
|
514
|
+
// Handle inspector element selection from the iframe preview
|
|
515
|
+
inspectorElement = e.data.element;
|
|
516
|
+
}
|
|
517
|
+
else if (e.data.type === 'inspectorClear') {
|
|
518
|
+
// Clear the inspector element when user dismisses the selection
|
|
519
|
+
inspectorElement = undefined;
|
|
520
|
+
}
|
|
521
|
+
else if (e.data.type === 'editorSelection') {
|
|
522
|
+
// Handle code selection from the iframe editor
|
|
523
|
+
const selection = e.data.selection;
|
|
524
|
+
if (selection === null) {
|
|
525
|
+
// Selection cleared
|
|
526
|
+
codeSelection = undefined;
|
|
527
|
+
}
|
|
528
|
+
else {
|
|
529
|
+
// Normalize path
|
|
530
|
+
const normalizedPath = selection.path?.replace(/\\/g, '/');
|
|
531
|
+
codeSelection = {
|
|
532
|
+
type: 'app_code_selection',
|
|
533
|
+
source: normalizedPath,
|
|
534
|
+
sourceType: 'frontend',
|
|
535
|
+
title: `${normalizedPath}:L${selection.range.startLine}-L${selection.range.endLine}`,
|
|
536
|
+
content: selection.content,
|
|
537
|
+
startLine: selection.range.startLine,
|
|
538
|
+
endLine: selection.range.endLine,
|
|
539
|
+
startColumn: selection.range.startColumn,
|
|
540
|
+
endColumn: selection.range.endColumn
|
|
541
|
+
};
|
|
542
|
+
}
|
|
447
543
|
}
|
|
448
544
|
}
|
|
449
545
|
let getBundleResolve = undefined;
|
|
@@ -470,14 +566,38 @@ $effect(() => {
|
|
|
470
566
|
$effect(() => {
|
|
471
567
|
iframe && iframeLoaded && runnables && populateRunnables();
|
|
472
568
|
});
|
|
569
|
+
function clearInspectorSelection() {
|
|
570
|
+
inspectorElement = undefined;
|
|
571
|
+
iframe?.contentWindow?.postMessage({ type: 'inspectorClear' }, '*');
|
|
572
|
+
}
|
|
473
573
|
function handleSelectFile(path) {
|
|
474
574
|
console.log('event Select file:', path);
|
|
475
575
|
selectedRunnable = undefined;
|
|
576
|
+
// Inspector is cleared by the $effect watching selection changes
|
|
476
577
|
iframe?.contentWindow?.postMessage({
|
|
477
578
|
type: 'selectFile',
|
|
478
579
|
path: path
|
|
479
580
|
}, '*');
|
|
480
581
|
}
|
|
582
|
+
function handleClearRunnable() {
|
|
583
|
+
selectedRunnable = undefined;
|
|
584
|
+
}
|
|
585
|
+
// Track previous values for change detection
|
|
586
|
+
let prevSelectedRunnable = undefined;
|
|
587
|
+
let prevSelectedDocument = undefined;
|
|
588
|
+
// Clear inspector and reset exclusion when selection changes
|
|
589
|
+
$effect(() => {
|
|
590
|
+
if (selectedRunnable !== prevSelectedRunnable || selectedDocument !== prevSelectedDocument) {
|
|
591
|
+
// Only clear if we're actually switching to something different
|
|
592
|
+
if (prevSelectedRunnable !== undefined || prevSelectedDocument !== undefined) {
|
|
593
|
+
clearInspectorSelection();
|
|
594
|
+
}
|
|
595
|
+
// Reset exclusion when switching files/runnables
|
|
596
|
+
selectionExcludedFromPrompt = false;
|
|
597
|
+
prevSelectedRunnable = selectedRunnable;
|
|
598
|
+
prevSelectedDocument = selectedDocument;
|
|
599
|
+
}
|
|
600
|
+
});
|
|
481
601
|
function handleUndo() {
|
|
482
602
|
// Create a snapshot if we're at the latest position with pending changes
|
|
483
603
|
if (historyManager.needsSnapshotBeforeNav) {
|
|
@@ -495,9 +615,10 @@ function handleRedo() {
|
|
|
495
615
|
}
|
|
496
616
|
}
|
|
497
617
|
function handleHistorySelect(id) {
|
|
498
|
-
//
|
|
499
|
-
if (
|
|
500
|
-
|
|
618
|
+
// Save current state temporarily (not as a snapshot) when navigating to history
|
|
619
|
+
// Only if we're currently at the "current" state (not already viewing history)
|
|
620
|
+
if (historyManager.selectedEntryId === undefined) {
|
|
621
|
+
historyManager.saveTemporaryCurrentState(files ?? {}, runnables, summary, data);
|
|
501
622
|
}
|
|
502
623
|
const entry = historyManager.selectEntry(id);
|
|
503
624
|
if (entry) {
|
|
@@ -510,15 +631,16 @@ function applyEntry(entry) {
|
|
|
510
631
|
runnables = structuredClone($state.snapshot(entry.runnables));
|
|
511
632
|
summary = entry.summary;
|
|
512
633
|
data = structuredClone($state.snapshot(entry.data));
|
|
513
|
-
|
|
514
|
-
populateRunnables();
|
|
515
|
-
// Re-select the current document if it exists in the new files
|
|
634
|
+
// If there's a selected document that exists in the new files, use the combined message
|
|
516
635
|
if (selectedDocument && entry.files[selectedDocument] !== undefined) {
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
path: selectedDocument
|
|
520
|
-
}, '*');
|
|
636
|
+
// Use combined setFilesAndSelect message to avoid race condition
|
|
637
|
+
setFilesAndSelectInIframe(entry.files, selectedDocument);
|
|
521
638
|
}
|
|
639
|
+
else {
|
|
640
|
+
// Otherwise just set files normally
|
|
641
|
+
setFilesInIframe(entry.files);
|
|
642
|
+
}
|
|
643
|
+
populateRunnables();
|
|
522
644
|
}
|
|
523
645
|
catch (error) {
|
|
524
646
|
console.error('Failed to apply entry:', error);
|
|
@@ -569,8 +691,8 @@ function handleKeydown(e) {
|
|
|
569
691
|
onRedo={handleRedo}
|
|
570
692
|
/>
|
|
571
693
|
|
|
572
|
-
<Splitpanes id="o2" class="grow">
|
|
573
|
-
<Pane bind:size={sidebarPanelSize} maxSize={20}>
|
|
694
|
+
<Splitpanes id="o2" class="grow min-h-0">
|
|
695
|
+
<Pane bind:size={sidebarPanelSize} maxSize={20} class="h-full overflow-y-auto">
|
|
574
696
|
<RawAppSidebar
|
|
575
697
|
bind:files={
|
|
576
698
|
() => files,
|
|
@@ -605,6 +727,15 @@ function handleKeydown(e) {
|
|
|
605
727
|
{historyManager}
|
|
606
728
|
historySelectedId={historyManager.selectedEntryId}
|
|
607
729
|
onHistorySelect={handleHistorySelect}
|
|
730
|
+
onHistorySelectCurrent={() => {
|
|
731
|
+
// Restore the temporary current state if it exists
|
|
732
|
+
const tempState = historyManager.getAndClearTemporaryState()
|
|
733
|
+
if (tempState) {
|
|
734
|
+
applyEntry(tempState)
|
|
735
|
+
}
|
|
736
|
+
// Clear selection to indicate we're at current state
|
|
737
|
+
historyManager.clearSelection()
|
|
738
|
+
}}
|
|
608
739
|
onManualSnapshot={() => {
|
|
609
740
|
historyManager.manualSnapshot(files ?? {}, runnables, summary, data, true)
|
|
610
741
|
}}
|
|
@@ -626,7 +757,26 @@ function handleKeydown(e) {
|
|
|
626
757
|
appPath={path}
|
|
627
758
|
{selectedRunnable}
|
|
628
759
|
{initRunnablesContent}
|
|
629
|
-
|
|
760
|
+
bind:runnables
|
|
761
|
+
onSelectionChange={(selection) => {
|
|
762
|
+
console.log('handle selection', selection)
|
|
763
|
+
|
|
764
|
+
if (selection === null) {
|
|
765
|
+
codeSelection = undefined
|
|
766
|
+
} else if (selectedRunnable) {
|
|
767
|
+
codeSelection = {
|
|
768
|
+
type: 'app_code_selection',
|
|
769
|
+
source: selectedRunnable,
|
|
770
|
+
sourceType: 'backend',
|
|
771
|
+
title: `${selectedRunnable}:L${selection.startLine}-L${selection.endLine}`,
|
|
772
|
+
content: selection.content,
|
|
773
|
+
startLine: selection.startLine,
|
|
774
|
+
endLine: selection.endLine,
|
|
775
|
+
startColumn: selection.startColumn,
|
|
776
|
+
endColumn: selection.endColumn
|
|
777
|
+
}
|
|
778
|
+
}
|
|
779
|
+
}}
|
|
630
780
|
/>
|
|
631
781
|
</div>
|
|
632
782
|
{/if}
|