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
|
@@ -1,60 +1,29 @@
|
|
|
1
|
-
<script lang="ts">import {
|
|
2
|
-
import { createEventDispatcher } from 'svelte';
|
|
3
|
-
import { globalEmailInvite, superadmin, workspaceStore } from '../stores';
|
|
4
|
-
import { UserService, WorkspaceService } from '../gen';
|
|
5
|
-
import { Button } from './common';
|
|
1
|
+
<script lang="ts">import { Button } from './common';
|
|
6
2
|
import Popover from './meltComponents/Popover.svelte';
|
|
7
|
-
import { isCloudHosted } from '../cloud';
|
|
8
|
-
import { goto } from '../navigation';
|
|
9
3
|
import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte';
|
|
10
4
|
import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
|
|
11
5
|
import { MailPlus } from 'lucide-svelte';
|
|
12
|
-
const
|
|
6
|
+
const { inviteUser } = $props();
|
|
13
7
|
let email = $state('');
|
|
14
8
|
function handleKeyUp(event) {
|
|
15
9
|
const key = event.key;
|
|
16
10
|
if (key === 'Enter') {
|
|
17
11
|
event.preventDefault();
|
|
18
|
-
inviteUser();
|
|
12
|
+
inviteUser(email, selected);
|
|
13
|
+
email = '';
|
|
19
14
|
}
|
|
20
15
|
}
|
|
21
|
-
async function inviteUser() {
|
|
22
|
-
await WorkspaceService.inviteUser({
|
|
23
|
-
workspace: $workspaceStore,
|
|
24
|
-
requestBody: {
|
|
25
|
-
email,
|
|
26
|
-
is_admin: selected == 'admin',
|
|
27
|
-
operator: selected == 'operator'
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
sendUserToast(`Invited ${email}`);
|
|
31
|
-
if (!(await UserService.existsEmail({ email }))) {
|
|
32
|
-
let isSuperadmin = $superadmin;
|
|
33
|
-
if (!isCloudHosted()) {
|
|
34
|
-
sendUserToast(`User ${email} is not registered yet on the instance. ${!isSuperadmin
|
|
35
|
-
? `If not using SSO, ask an administrator to add ${email} to the instance`
|
|
36
|
-
: ''}`, true, isSuperadmin
|
|
37
|
-
? [
|
|
38
|
-
{
|
|
39
|
-
label: 'Add user to the instance',
|
|
40
|
-
callback: () => {
|
|
41
|
-
$globalEmailInvite = email;
|
|
42
|
-
goto('#superadmin-settings');
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
]
|
|
46
|
-
: []);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
dispatch('new');
|
|
50
|
-
email = '';
|
|
51
|
-
}
|
|
52
16
|
let selected = $state('developer');
|
|
53
17
|
</script>
|
|
54
18
|
|
|
55
19
|
<Popover floatingConfig={{ strategy: 'absolute', placement: 'bottom-end' }}>
|
|
56
20
|
{#snippet trigger()}
|
|
57
|
-
<Button
|
|
21
|
+
<Button
|
|
22
|
+
variant="default"
|
|
23
|
+
unifiedSize="md"
|
|
24
|
+
nonCaptureEvent={true}
|
|
25
|
+
startIcon={{ icon: MailPlus }}
|
|
26
|
+
>
|
|
58
27
|
Invite
|
|
59
28
|
</Button>
|
|
60
29
|
{/snippet}
|
|
@@ -91,7 +60,12 @@ let selected = $state('developer');
|
|
|
91
60
|
/>
|
|
92
61
|
{/snippet}
|
|
93
62
|
</ToggleButtonGroup>
|
|
94
|
-
<Button
|
|
63
|
+
<Button
|
|
64
|
+
variant="accent"
|
|
65
|
+
unifiedSize="md"
|
|
66
|
+
on:click={() => inviteUser(email, selected)}
|
|
67
|
+
disabled={!email || email.trim() === ''}
|
|
68
|
+
>
|
|
95
69
|
Invite
|
|
96
70
|
</Button>
|
|
97
71
|
</div>
|
|
@@ -1,20 +1,6 @@
|
|
|
1
|
-
interface
|
|
2
|
-
|
|
3
|
-
$$bindings?: Bindings;
|
|
4
|
-
} & Exports;
|
|
5
|
-
(internal: unknown, props: {
|
|
6
|
-
$$events?: Events;
|
|
7
|
-
$$slots?: Slots;
|
|
8
|
-
}): Exports & {
|
|
9
|
-
$set?: any;
|
|
10
|
-
$on?: any;
|
|
11
|
-
};
|
|
12
|
-
z_$$bindings?: Bindings;
|
|
1
|
+
interface Props {
|
|
2
|
+
inviteUser: (email: string, selected: 'operator' | 'developer' | 'admin') => Promise<void>;
|
|
13
3
|
}
|
|
14
|
-
declare const InviteUser:
|
|
15
|
-
|
|
16
|
-
} & {
|
|
17
|
-
[evt: string]: CustomEvent<any>;
|
|
18
|
-
}, {}, {}, "">;
|
|
19
|
-
type InviteUser = InstanceType<typeof InviteUser>;
|
|
4
|
+
declare const InviteUser: import("svelte").Component<Props, {}, "">;
|
|
5
|
+
type InviteUser = ReturnType<typeof InviteUser>;
|
|
20
6
|
export default InviteUser;
|
|
@@ -63,6 +63,6 @@ declare const JobLoader: import("svelte").Component<Props, {
|
|
|
63
63
|
cancelJob: () => Promise<void>;
|
|
64
64
|
clearCurrentJob: () => Promise<void>;
|
|
65
65
|
watchJob: (testId: string, callbacks?: Callbacks) => Promise<void>;
|
|
66
|
-
}, "
|
|
66
|
+
}, "job" | "isLoading" | "notfound" | "jobUpdateLastFetch" | "scriptProgress">;
|
|
67
67
|
type JobLoader = ReturnType<typeof JobLoader>;
|
|
68
68
|
export default JobLoader;
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
<script lang="ts">import { workspaceStore } from '../stores';
|
|
2
|
+
import { Alert, Skeleton } from './common';
|
|
3
|
+
import { Activity } from 'lucide-svelte';
|
|
4
|
+
import { JobService } from '../gen';
|
|
5
|
+
import { msToReadableTime } from '../utils';
|
|
6
|
+
// OTEL SpanKind enum values from opentelemetry-proto/opentelemetry/proto/trace/v1/trace.proto
|
|
7
|
+
const SpanKind = {
|
|
8
|
+
UNSPECIFIED: 0,
|
|
9
|
+
INTERNAL: 1,
|
|
10
|
+
SERVER: 2,
|
|
11
|
+
CLIENT: 3,
|
|
12
|
+
PRODUCER: 4,
|
|
13
|
+
CONSUMER: 5
|
|
14
|
+
};
|
|
15
|
+
// OTEL StatusCode enum values from opentelemetry-proto/opentelemetry/proto/trace/v1/trace.proto
|
|
16
|
+
const StatusCode = {
|
|
17
|
+
UNSET: 0,
|
|
18
|
+
OK: 1,
|
|
19
|
+
ERROR: 2
|
|
20
|
+
};
|
|
21
|
+
let { jobId } = $props();
|
|
22
|
+
let traces = $state([]);
|
|
23
|
+
let loading = $state(true);
|
|
24
|
+
let error = $state(null);
|
|
25
|
+
let expandedSpans = $state(new Set());
|
|
26
|
+
$effect(() => {
|
|
27
|
+
if (jobId) {
|
|
28
|
+
loadTraces();
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
async function loadTraces() {
|
|
32
|
+
if (!$workspaceStore || !jobId)
|
|
33
|
+
return;
|
|
34
|
+
loading = true;
|
|
35
|
+
error = null;
|
|
36
|
+
try {
|
|
37
|
+
const response = await JobService.getJobOtelTraces({
|
|
38
|
+
workspace: $workspaceStore,
|
|
39
|
+
id: jobId
|
|
40
|
+
});
|
|
41
|
+
traces = response;
|
|
42
|
+
}
|
|
43
|
+
catch (e) {
|
|
44
|
+
if (e?.status === 404) {
|
|
45
|
+
traces = [];
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
error = `Error loading traces: ${e?.message ?? e}`;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
finally {
|
|
52
|
+
loading = false;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function getDurationMs(span) {
|
|
56
|
+
return (span.end_time_unix_nano - span.start_time_unix_nano) / 1_000_000;
|
|
57
|
+
}
|
|
58
|
+
function formatTimestamp(ns) {
|
|
59
|
+
const date = new Date(ns / 1000000);
|
|
60
|
+
return date.toISOString();
|
|
61
|
+
}
|
|
62
|
+
function getStatusColor(statusCode) {
|
|
63
|
+
switch (statusCode) {
|
|
64
|
+
case StatusCode.UNSET:
|
|
65
|
+
return 'text-secondary';
|
|
66
|
+
case StatusCode.OK:
|
|
67
|
+
return 'text-green-600';
|
|
68
|
+
case StatusCode.ERROR:
|
|
69
|
+
return 'text-red-600';
|
|
70
|
+
default:
|
|
71
|
+
return 'text-secondary';
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function getStatusLabel(statusCode) {
|
|
75
|
+
switch (statusCode) {
|
|
76
|
+
case StatusCode.UNSET:
|
|
77
|
+
return 'Unset';
|
|
78
|
+
case StatusCode.OK:
|
|
79
|
+
return 'OK';
|
|
80
|
+
case StatusCode.ERROR:
|
|
81
|
+
return 'Error';
|
|
82
|
+
default:
|
|
83
|
+
return 'Unknown';
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
function toggleSpan(spanId) {
|
|
87
|
+
const newSet = new Set(expandedSpans);
|
|
88
|
+
if (newSet.has(spanId)) {
|
|
89
|
+
newSet.delete(spanId);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
newSet.add(spanId);
|
|
93
|
+
}
|
|
94
|
+
expandedSpans = newSet;
|
|
95
|
+
}
|
|
96
|
+
function getKindLabel(kind) {
|
|
97
|
+
switch (kind) {
|
|
98
|
+
case SpanKind.INTERNAL: return 'Internal';
|
|
99
|
+
case SpanKind.SERVER: return 'Server';
|
|
100
|
+
case SpanKind.CLIENT: return 'Client';
|
|
101
|
+
case SpanKind.PRODUCER: return 'Producer';
|
|
102
|
+
case SpanKind.CONSUMER: return 'Consumer';
|
|
103
|
+
default: return 'Unknown';
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Parse OTEL proto AnyValue to a simple value
|
|
107
|
+
function parseAnyValue(anyValue) {
|
|
108
|
+
if (!anyValue)
|
|
109
|
+
return null;
|
|
110
|
+
if (anyValue.stringValue !== undefined)
|
|
111
|
+
return anyValue.stringValue;
|
|
112
|
+
if (anyValue.intValue !== undefined)
|
|
113
|
+
return anyValue.intValue;
|
|
114
|
+
if (anyValue.boolValue !== undefined)
|
|
115
|
+
return anyValue.boolValue;
|
|
116
|
+
if (anyValue.doubleValue !== undefined)
|
|
117
|
+
return anyValue.doubleValue;
|
|
118
|
+
if (anyValue.arrayValue?.values) {
|
|
119
|
+
return anyValue.arrayValue.values.map(parseAnyValue);
|
|
120
|
+
}
|
|
121
|
+
if (anyValue.kvlistValue?.values) {
|
|
122
|
+
return parseAttributes(anyValue.kvlistValue.values);
|
|
123
|
+
}
|
|
124
|
+
return JSON.stringify(anyValue);
|
|
125
|
+
}
|
|
126
|
+
// Parse OTEL proto attributes array to a simple key-value object
|
|
127
|
+
function parseAttributes(attributes) {
|
|
128
|
+
if (!attributes)
|
|
129
|
+
return {};
|
|
130
|
+
if (!Array.isArray(attributes))
|
|
131
|
+
return attributes; // already parsed
|
|
132
|
+
const result = {};
|
|
133
|
+
for (const attr of attributes) {
|
|
134
|
+
if (attr.key && attr.value !== undefined) {
|
|
135
|
+
result[attr.key] = parseAnyValue(attr.value);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return result;
|
|
139
|
+
}
|
|
140
|
+
// Calculate timeline metrics
|
|
141
|
+
function getTimelineMetrics(spans) {
|
|
142
|
+
if (spans.length === 0)
|
|
143
|
+
return { minTime: 0, maxTime: 0, totalDuration: 0 };
|
|
144
|
+
const minTime = Math.min(...spans.map((s) => s.start_time_unix_nano));
|
|
145
|
+
const maxTime = Math.max(...spans.map((s) => s.end_time_unix_nano));
|
|
146
|
+
return { minTime, maxTime, totalDuration: maxTime - minTime };
|
|
147
|
+
}
|
|
148
|
+
let timelineMetrics = $derived(getTimelineMetrics(traces));
|
|
149
|
+
</script>
|
|
150
|
+
|
|
151
|
+
<div class="p-4">
|
|
152
|
+
{#if loading}
|
|
153
|
+
<Skeleton layout={[[4], [8], [6], [10]]} />
|
|
154
|
+
{:else if error}
|
|
155
|
+
<Alert type="error" title="Error">{error}</Alert>
|
|
156
|
+
{:else if traces.length === 0}
|
|
157
|
+
<div class="flex flex-col items-center justify-center py-8 text-secondary">
|
|
158
|
+
<Activity size={48} class="mb-4 opacity-50" />
|
|
159
|
+
<p class="text-lg font-medium">No HTTP requests captured</p>
|
|
160
|
+
<p class="text-sm mt-2">
|
|
161
|
+
This job did not make any HTTP/HTTPS requests, or HTTP Request Tracing is not enabled in instance settings.
|
|
162
|
+
</p>
|
|
163
|
+
</div>
|
|
164
|
+
{:else}
|
|
165
|
+
<div class="space-y-4">
|
|
166
|
+
<div class="flex items-center justify-between">
|
|
167
|
+
<h3 class="text-lg font-semibold">Traces ({traces.length} spans)</h3>
|
|
168
|
+
<button
|
|
169
|
+
class="text-sm text-blue-600 hover:underline"
|
|
170
|
+
onclick={loadTraces}
|
|
171
|
+
>
|
|
172
|
+
Refresh
|
|
173
|
+
</button>
|
|
174
|
+
</div>
|
|
175
|
+
|
|
176
|
+
<!-- Timeline view -->
|
|
177
|
+
<div class="border rounded-lg overflow-hidden">
|
|
178
|
+
<div class="bg-surface-secondary px-4 py-2 border-b">
|
|
179
|
+
<div class="grid grid-cols-12 gap-2 text-xs font-medium text-secondary">
|
|
180
|
+
<div class="col-span-4">Operation</div>
|
|
181
|
+
<div class="col-span-1">Status</div>
|
|
182
|
+
<div class="col-span-5">Timeline</div>
|
|
183
|
+
<div class="col-span-2 text-right">Duration</div>
|
|
184
|
+
</div>
|
|
185
|
+
</div>
|
|
186
|
+
|
|
187
|
+
<div class="divide-y">
|
|
188
|
+
{#each traces as span (span.span_id)}
|
|
189
|
+
{@const durationNs = span.end_time_unix_nano - span.start_time_unix_nano}
|
|
190
|
+
{@const startOffset =
|
|
191
|
+
((span.start_time_unix_nano - timelineMetrics.minTime) /
|
|
192
|
+
timelineMetrics.totalDuration) *
|
|
193
|
+
100}
|
|
194
|
+
{@const width = (durationNs / timelineMetrics.totalDuration) * 100}
|
|
195
|
+
{@const statusCode = span.status?.code ?? 0}
|
|
196
|
+
|
|
197
|
+
<div class="hover:bg-surface-hover">
|
|
198
|
+
<button
|
|
199
|
+
class="w-full px-4 py-2 text-left"
|
|
200
|
+
onclick={() => toggleSpan(span.span_id)}
|
|
201
|
+
>
|
|
202
|
+
<div class="grid grid-cols-12 gap-2 items-center">
|
|
203
|
+
<div class="col-span-4 flex items-center gap-2">
|
|
204
|
+
<span class="text-xs text-secondary">
|
|
205
|
+
{expandedSpans.has(span.span_id) ? '▼' : '▶'}
|
|
206
|
+
</span>
|
|
207
|
+
<span class="font-medium truncate" title={span.name}>
|
|
208
|
+
{span.name}
|
|
209
|
+
</span>
|
|
210
|
+
</div>
|
|
211
|
+
<div class="col-span-1">
|
|
212
|
+
<span class={`text-xs font-medium ${getStatusColor(statusCode)}`}>
|
|
213
|
+
{getStatusLabel(statusCode)}
|
|
214
|
+
</span>
|
|
215
|
+
</div>
|
|
216
|
+
<div class="col-span-5 relative h-4">
|
|
217
|
+
<div class="absolute inset-0 bg-surface-secondary rounded"></div>
|
|
218
|
+
<div
|
|
219
|
+
class="absolute h-full bg-blue-500 rounded opacity-75"
|
|
220
|
+
style="left: {startOffset}%; width: {Math.max(width, 0.5)}%;"
|
|
221
|
+
></div>
|
|
222
|
+
</div>
|
|
223
|
+
<div class="col-span-2 text-right text-sm font-mono">
|
|
224
|
+
{msToReadableTime(getDurationMs(span))}
|
|
225
|
+
</div>
|
|
226
|
+
</div>
|
|
227
|
+
</button>
|
|
228
|
+
|
|
229
|
+
{#if expandedSpans.has(span.span_id)}
|
|
230
|
+
{@const parsedAttrs = parseAttributes(span.attributes)}
|
|
231
|
+
<div class="px-4 pb-4 bg-surface-secondary/50">
|
|
232
|
+
<div class="grid grid-cols-2 gap-4 text-sm">
|
|
233
|
+
<div>
|
|
234
|
+
<p class="text-xs text-secondary mb-1">Trace ID</p>
|
|
235
|
+
<p class="font-mono text-xs break-all">{span.trace_id}</p>
|
|
236
|
+
</div>
|
|
237
|
+
<div>
|
|
238
|
+
<p class="text-xs text-secondary mb-1">Span ID</p>
|
|
239
|
+
<p class="font-mono text-xs">{span.span_id}</p>
|
|
240
|
+
</div>
|
|
241
|
+
{#if span.parent_span_id}
|
|
242
|
+
<div>
|
|
243
|
+
<p class="text-xs text-secondary mb-1">Parent Span ID</p>
|
|
244
|
+
<p class="font-mono text-xs">{span.parent_span_id}</p>
|
|
245
|
+
</div>
|
|
246
|
+
{/if}
|
|
247
|
+
<div>
|
|
248
|
+
<p class="text-xs text-secondary mb-1">Kind</p>
|
|
249
|
+
<p class="font-mono text-xs">{getKindLabel(span.kind)}</p>
|
|
250
|
+
</div>
|
|
251
|
+
<div>
|
|
252
|
+
<p class="text-xs text-secondary mb-1">Start Time</p>
|
|
253
|
+
<p class="font-mono text-xs">{formatTimestamp(span.start_time_unix_nano)}</p>
|
|
254
|
+
</div>
|
|
255
|
+
<div>
|
|
256
|
+
<p class="text-xs text-secondary mb-1">End Time</p>
|
|
257
|
+
<p class="font-mono text-xs">{formatTimestamp(span.end_time_unix_nano)}</p>
|
|
258
|
+
</div>
|
|
259
|
+
{#if span.status?.message}
|
|
260
|
+
<div class="col-span-2">
|
|
261
|
+
<p class="text-xs text-secondary mb-1">Status Message</p>
|
|
262
|
+
<p class="text-xs">{span.status.message}</p>
|
|
263
|
+
</div>
|
|
264
|
+
{/if}
|
|
265
|
+
{#if Object.keys(parsedAttrs).length > 0}
|
|
266
|
+
<div class="col-span-2">
|
|
267
|
+
<p class="text-xs text-secondary mb-1">Attributes</p>
|
|
268
|
+
<div class="bg-surface-secondary p-2 rounded text-xs space-y-1">
|
|
269
|
+
{#each Object.entries(parsedAttrs) as [key, value]}
|
|
270
|
+
<div class="flex gap-2">
|
|
271
|
+
<span class="text-secondary font-medium shrink-0">{key}:</span>
|
|
272
|
+
<span class="font-mono break-all">{typeof value === 'object' ? JSON.stringify(value) : value}</span>
|
|
273
|
+
</div>
|
|
274
|
+
{/each}
|
|
275
|
+
</div>
|
|
276
|
+
</div>
|
|
277
|
+
{/if}
|
|
278
|
+
</div>
|
|
279
|
+
</div>
|
|
280
|
+
{/if}
|
|
281
|
+
</div>
|
|
282
|
+
{/each}
|
|
283
|
+
</div>
|
|
284
|
+
</div>
|
|
285
|
+
</div>
|
|
286
|
+
{/if}
|
|
287
|
+
</div>
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
<script lang="ts">import SimpleEditor from './SimpleEditor.svelte';
|
|
2
2
|
import { createEventDispatcher } from 'svelte';
|
|
3
3
|
const dispatch = createEventDispatcher();
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
let
|
|
8
|
-
let simpleEditor = undefined;
|
|
9
|
-
let focusTrap;
|
|
4
|
+
let { updateOnBlur = true, placeholder = 'Write a JSON payload. The input schema will be inferred.<br/><br/>Example:<br/><br/>{<br/> "foo": "12"<br/>}', selected = false } = $props();
|
|
5
|
+
let pendingJson = $state('');
|
|
6
|
+
let simpleEditor = $state(undefined);
|
|
7
|
+
let focusTrap = $state();
|
|
10
8
|
function updatePayloadFromJson(jsonInput) {
|
|
11
9
|
if (jsonInput === undefined || jsonInput === null || jsonInput.trim() === '') {
|
|
12
10
|
dispatch('select', undefined);
|
|
@@ -36,12 +34,12 @@ function handleKeydown(event) {
|
|
|
36
34
|
}
|
|
37
35
|
</script>
|
|
38
36
|
|
|
39
|
-
<svelte:window
|
|
37
|
+
<svelte:window onkeydown={handleKeydown} />
|
|
40
38
|
|
|
41
39
|
<!-- Add a hidden button that can receive focus -->
|
|
42
40
|
<button bind:this={focusTrap} class="sr-only" tabindex="-1" aria-hidden="true">Focus trap</button>
|
|
43
41
|
|
|
44
|
-
<div class="h-full
|
|
42
|
+
<div class="h-full rounded-md border">
|
|
45
43
|
<SimpleEditor
|
|
46
44
|
bind:this={simpleEditor}
|
|
47
45
|
on:focus={() => {
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
interface Props {
|
|
2
|
+
updateOnBlur?: boolean;
|
|
3
|
+
placeholder?: string;
|
|
4
|
+
selected?: boolean;
|
|
5
|
+
}
|
|
1
6
|
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
2
7
|
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
3
8
|
$$bindings?: Bindings;
|
|
@@ -11,13 +16,7 @@ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> =
|
|
|
11
16
|
};
|
|
12
17
|
z_$$bindings?: Bindings;
|
|
13
18
|
}
|
|
14
|
-
declare const JsonInputs: $$__sveltets_2_IsomorphicComponent<{
|
|
15
|
-
updateOnBlur?: boolean;
|
|
16
|
-
placeholder?: string;
|
|
17
|
-
selected?: boolean;
|
|
18
|
-
setCode?: (code: string) => void;
|
|
19
|
-
resetSelected?: (dispatchEvent?: boolean) => void;
|
|
20
|
-
}, {
|
|
19
|
+
declare const JsonInputs: $$__sveltets_2_IsomorphicComponent<Props, {
|
|
21
20
|
focus: CustomEvent<any>;
|
|
22
21
|
blur: CustomEvent<any>;
|
|
23
22
|
select: CustomEvent<any>;
|
|
@@ -26,6 +25,6 @@ declare const JsonInputs: $$__sveltets_2_IsomorphicComponent<{
|
|
|
26
25
|
}, {}, {
|
|
27
26
|
setCode: (code: string) => void;
|
|
28
27
|
resetSelected: (dispatchEvent?: boolean) => void;
|
|
29
|
-
},
|
|
28
|
+
}, "">;
|
|
30
29
|
type JsonInputs = InstanceType<typeof JsonInputs>;
|
|
31
30
|
export default JsonInputs;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
<script lang="ts" module>"use strict";
|
|
2
2
|
const s3LogPrefixes = [
|
|
3
|
-
'
|
|
4
|
-
'
|
|
5
|
-
'
|
|
3
|
+
'[windmill] Previous logs have been saved to object storage at logs/',
|
|
4
|
+
'[windmill] Previous logs have been saved to disk at logs/',
|
|
5
|
+
'[windmill] No object storage set in instance settings. Previous logs have been saved to disk at logs/'
|
|
6
6
|
];
|
|
7
|
+
// Only search within first N characters to avoid expensive full-content scans
|
|
8
|
+
const S3_LOG_SEARCH_LIMIT = 2000;
|
|
7
9
|
</script>
|
|
8
10
|
|
|
9
11
|
<script lang="ts">import { ClipboardCopy, Download, Expand, Loader2 } from 'lucide-svelte';
|
|
@@ -28,33 +30,60 @@ let LOG_INC = 10000;
|
|
|
28
30
|
let LOG_LIMIT = $state(LOG_INC);
|
|
29
31
|
let lastJobId = $state(jobId);
|
|
30
32
|
let loadedFromObjectStore = $state('');
|
|
31
|
-
function
|
|
32
|
-
|
|
33
|
-
|
|
33
|
+
function findPrefixInfo(truncateContent) {
|
|
34
|
+
// Quick check - [windmill] is rare, so bail early in the common case
|
|
35
|
+
// This is much faster than doing 3 long string indexOf searches
|
|
36
|
+
const windmillPos = truncateContent.indexOf('[windmill]');
|
|
37
|
+
if (windmillPos === -1 || windmillPos >= S3_LOG_SEARCH_LIMIT) {
|
|
34
38
|
return undefined;
|
|
35
39
|
}
|
|
36
|
-
|
|
40
|
+
// Found [windmill] marker, now determine which specific prefix matches
|
|
41
|
+
for (let i = 0; i < s3LogPrefixes.length; i++) {
|
|
42
|
+
const prefix = s3LogPrefixes[i];
|
|
43
|
+
if (truncateContent.length >= windmillPos + prefix.length &&
|
|
44
|
+
truncateContent.startsWith(prefix, windmillPos)) {
|
|
45
|
+
return { prefixIndex: i, position: windmillPos };
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return undefined;
|
|
37
49
|
}
|
|
38
|
-
function findStartUrl(truncateContent,
|
|
39
|
-
if (
|
|
50
|
+
function findStartUrl(truncateContent, prefixInfo) {
|
|
51
|
+
if (!prefixInfo) {
|
|
40
52
|
return undefined;
|
|
41
53
|
}
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
54
|
+
const { prefixIndex, position } = prefixInfo;
|
|
55
|
+
const prefix = s3LogPrefixes[prefixIndex];
|
|
56
|
+
const startOfPath = position + prefix.length;
|
|
57
|
+
const endOfLine = truncateContent.indexOf('\n', startOfPath);
|
|
58
|
+
return truncateContent.substring(startOfPath, endOfLine === -1 ? undefined : endOfLine);
|
|
59
|
+
}
|
|
60
|
+
function splitAtWindmillLine(content, prefixInfo) {
|
|
61
|
+
const { prefixIndex, position } = prefixInfo;
|
|
62
|
+
const prefix = s3LogPrefixes[prefixIndex];
|
|
63
|
+
// Find line boundaries
|
|
64
|
+
const lineStart = position > 0 && content[position - 1] === '\n' ? position - 1 : position;
|
|
65
|
+
const pathStart = position + prefix.length;
|
|
66
|
+
const lineEnd = content.indexOf('\n', pathStart);
|
|
67
|
+
if (lineEnd === -1) {
|
|
68
|
+
// [windmill] line is at the end
|
|
69
|
+
return { before: content.substring(0, lineStart), after: '' };
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
before: content.substring(0, lineStart),
|
|
73
|
+
after: content.substring(lineEnd)
|
|
74
|
+
};
|
|
46
75
|
}
|
|
47
|
-
function tooltipText(
|
|
48
|
-
if (
|
|
76
|
+
function tooltipText(prefixInfo) {
|
|
77
|
+
if (prefixInfo == undefined) {
|
|
49
78
|
return 'No path/file detected to download from';
|
|
50
79
|
}
|
|
51
|
-
else if (prefixIndex == 0) {
|
|
80
|
+
else if (prefixInfo.prefixIndex == 0) {
|
|
52
81
|
return 'Download the previous logs from the instance configured object store';
|
|
53
82
|
}
|
|
54
|
-
else if (prefixIndex == 1) {
|
|
83
|
+
else if (prefixInfo.prefixIndex == 1) {
|
|
55
84
|
return 'Attempt to download the logs from disk. Assume there is a shared disk between the workers and the server at /tmp/windmill/logs. Upgrade to EE to use an object store such as S3 instead of a shared volume.';
|
|
56
85
|
}
|
|
57
|
-
else if (prefixIndex == 2) {
|
|
86
|
+
else if (prefixInfo.prefixIndex == 2) {
|
|
58
87
|
return 'Attempt to download the logs from disk. Assume there is a shared disk between the workers and the server at /tmp/windmill/logs. Since you are on EE, you can alternatively use an object store such as S3 configured in the instance settings instead of a shared volume..';
|
|
59
88
|
}
|
|
60
89
|
}
|
|
@@ -77,7 +106,6 @@ async function getStoreLogs() {
|
|
|
77
106
|
workspace: $workspaceStore ?? '',
|
|
78
107
|
path: downloadStartUrl
|
|
79
108
|
}));
|
|
80
|
-
downloadStartUrl = undefined;
|
|
81
109
|
LOG_LIMIT += Math.min(LOG_INC, res.length);
|
|
82
110
|
loadedFromObjectStore = res + loadedFromObjectStore;
|
|
83
111
|
let newC = truncateContent(content, loadedFromObjectStore, LOG_LIMIT);
|
|
@@ -105,14 +133,36 @@ $effect.pre(() => {
|
|
|
105
133
|
}
|
|
106
134
|
});
|
|
107
135
|
let truncatedContent = $derived(truncateContent(content, loadedFromObjectStore, LOG_LIMIT));
|
|
108
|
-
let
|
|
109
|
-
let downloadStartUrl = $derived(findStartUrl(truncatedContent,
|
|
136
|
+
let prefixInfo = $derived(findPrefixInfo(truncatedContent));
|
|
137
|
+
let downloadStartUrl = $derived(findStartUrl(truncatedContent, prefixInfo));
|
|
110
138
|
$effect.pre(() => {
|
|
111
139
|
truncatedContent && scrollToBottom();
|
|
112
140
|
});
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
141
|
+
// When [windmill] line is NOT at start, split into before/after to render button inline
|
|
142
|
+
let splitHtml = $derived.by(() => {
|
|
143
|
+
if (prefixInfo == undefined || prefixInfo.position === 0) {
|
|
144
|
+
return undefined;
|
|
145
|
+
}
|
|
146
|
+
const { before, after } = splitAtWindmillLine(truncatedContent, prefixInfo);
|
|
147
|
+
return {
|
|
148
|
+
before: ansi_up.ansi_to_html(before),
|
|
149
|
+
after: ansi_up.ansi_to_html(after)
|
|
150
|
+
};
|
|
151
|
+
});
|
|
152
|
+
// Only compute html when splitHtml won't be used (avoids wasteful ansi_to_html call)
|
|
153
|
+
let html = $derived.by(() => {
|
|
154
|
+
if (splitHtml) {
|
|
155
|
+
// splitHtml is active - skip expensive computation
|
|
156
|
+
return '';
|
|
157
|
+
}
|
|
158
|
+
if (prefixInfo == undefined) {
|
|
159
|
+
// No [windmill] line - return full content
|
|
160
|
+
return ansi_up.ansi_to_html(truncatedContent);
|
|
161
|
+
}
|
|
162
|
+
// [windmill] at start - strip the line and return the rest
|
|
163
|
+
const { after } = splitAtWindmillLine(truncatedContent, prefixInfo);
|
|
164
|
+
return ansi_up.ansi_to_html(after);
|
|
165
|
+
});
|
|
116
166
|
</script>
|
|
117
167
|
|
|
118
168
|
<Drawer bind:this={logViewer} bind:open={drawerOpen} size="900px">
|
|
@@ -148,12 +198,15 @@ let html = $derived(ansi_up.ansi_to_html(downloadStartUrl && prefixIndex != unde
|
|
|
148
198
|
class="bg-surface-secondary text-primary text-xs w-full p-2 whitespace-pre-wrap border rounded-md"
|
|
149
199
|
>{#if content}{@const len =
|
|
150
200
|
(content?.length ?? 0) +
|
|
151
|
-
(loadedFromObjectStore?.length ?? 0)}{#if
|
|
201
|
+
(loadedFromObjectStore?.length ?? 0)}{#if splitHtml}{@html splitHtml.before}<button
|
|
202
|
+
onclick={getStoreLogs}
|
|
203
|
+
>Show more... <Tooltip>{tooltipText(prefixInfo)}</Tooltip></button
|
|
204
|
+
>{@html splitHtml.after}{:else if downloadStartUrl}<button
|
|
152
205
|
onclick={getStoreLogs}
|
|
153
|
-
>Show more... <Tooltip>{tooltipText(
|
|
154
|
-
><br />{:else if len > LOG_LIMIT}(truncated to the last {LOG_LIMIT} characters)...<br
|
|
206
|
+
>Show more... <Tooltip>{tooltipText(prefixInfo)}</Tooltip></button
|
|
207
|
+
><br />{@html html}{:else if len > LOG_LIMIT}(truncated to the last {LOG_LIMIT} characters)...<br
|
|
155
208
|
/><button onclick={() => showMoreTruncate(len)}>Show more..</button><br
|
|
156
|
-
/>{
|
|
209
|
+
/>{@html html}{:else}{@html html}{/if}{:else if isLoading}Waiting for job to start...{:else}No logs are available yet{/if}</pre
|
|
157
210
|
>
|
|
158
211
|
</div>
|
|
159
212
|
</DrawerContent>
|
|
@@ -230,13 +283,18 @@ let html = $derived(ansi_up.ansi_to_html(downloadStartUrl && prefixIndex != unde
|
|
|
230
283
|
)}
|
|
231
284
|
>{#if content}{@const len =
|
|
232
285
|
(content?.length ?? 0) +
|
|
233
|
-
(loadedFromObjectStore?.length ?? 0)}{#if
|
|
286
|
+
(loadedFromObjectStore?.length ?? 0)}{#if splitHtml}<span>{@html splitHtml.before}</span><button
|
|
287
|
+
onclick={getStoreLogs}
|
|
288
|
+
>Show more... <Tooltip>{tooltipText(prefixInfo)}</Tooltip></button
|
|
289
|
+
><span>{@html splitHtml.after}</span
|
|
290
|
+
>{:else if downloadStartUrl}<button
|
|
234
291
|
onclick={getStoreLogs}
|
|
235
|
-
>Show more... <Tooltip>{tooltipText(
|
|
236
|
-
><br
|
|
292
|
+
>Show more... <Tooltip>{tooltipText(prefixInfo)}</Tooltip></button
|
|
293
|
+
><br /><span>{@html html}</span
|
|
294
|
+
>{:else if len > LOG_LIMIT}<button onclick={() => showMoreTruncate(len)}
|
|
237
295
|
>Show more..</button
|
|
238
|
-
> ({LOG_LIMIT}/{len} chars)<br
|
|
239
|
-
|
|
296
|
+
> ({LOG_LIMIT}/{len} chars)<br /><span>{@html html}</span
|
|
297
|
+
>{:else}<span>{@html html}</span>{/if}{:else if !isLoading}<span>{customEmptyMessage}</span>{/if}</pre
|
|
240
298
|
>
|
|
241
299
|
</div>
|
|
242
300
|
</div>
|