windmill-components 1.655.2 → 1.665.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package/components/ApiConnectForm.svelte +6 -6
- package/package/components/ApiConnectForm.svelte.d.ts +3 -2
- package/package/components/AppConnectDrawer.svelte +3 -1
- package/package/components/AppConnectDrawer.svelte.d.ts +2 -0
- package/package/components/AppConnectInner.svelte +137 -72
- package/package/components/AppConnectInner.svelte.d.ts +1 -0
- package/package/components/CompareWorkspaces.svelte +32 -24
- package/package/components/DBManager.svelte +7 -13
- package/package/components/DBTable.svelte +2 -2
- package/package/components/DBTableEditor.svelte +39 -31
- package/package/components/DBTableEditor.svelte.d.ts +2 -2
- package/package/components/DedicatedWorkersSelector.svelte +292 -85
- package/package/components/DeployWorkspace.svelte +30 -26
- package/package/components/Dev.svelte +7 -2
- package/package/components/Dev.svelte.d.ts +3 -0
- package/package/components/Editor.svelte +17 -13
- package/package/components/EditorBar.svelte.d.ts +1 -1
- package/package/components/FilterSearchbar.svelte +1 -1
- package/package/components/FirstStepInputs.svelte +0 -1
- package/package/components/FlowBuilder.svelte +5 -0
- package/package/components/FlowGraphDiffViewer.svelte +3 -0
- package/package/components/FlowGraphViewer.svelte +7 -4
- package/package/components/FlowGraphViewer.svelte.d.ts +1 -0
- package/package/components/FlowGraphViewerStep.svelte +3 -3
- package/package/components/FlowGraphViewerStep.svelte.d.ts +1 -0
- package/package/components/FlowPreviewContent.svelte +11 -1
- package/package/components/FlowStatusViewer.svelte +4 -1
- package/package/components/FlowStatusViewer.svelte.d.ts +3 -1
- package/package/components/FlowStatusViewerInner.svelte +46 -11
- package/package/components/FlowStatusViewerInner.svelte.d.ts +4 -1
- package/package/components/FlowStatusWaitingForEvents.svelte +48 -103
- package/package/components/FlowTimeline.svelte +76 -84
- package/package/components/FlowViewer.svelte +40 -22
- package/package/components/FlowViewer.svelte.d.ts +8 -2
- package/package/components/GroupEditor.svelte +7 -9
- package/package/components/HistoricList.svelte +12 -4
- package/package/components/InstanceGroupEditor.svelte +92 -19
- package/package/components/InstanceSetting.svelte +16 -6
- package/package/components/InstanceSettings.svelte +51 -7
- package/package/components/InstanceSettings.svelte.d.ts +2 -1
- package/package/components/JobLoader.svelte +5 -4
- package/package/components/JobLoader.svelte.d.ts +1 -1
- package/package/components/Login.svelte +9 -1
- package/package/components/NoMainFuncBadge.svelte +2 -2
- package/package/components/OnBehalfOfSelector.svelte +49 -37
- package/package/components/OnBehalfOfSelector.svelte.d.ts +16 -6
- package/package/components/ResourceEditor.svelte +16 -11
- package/package/components/ResourceEditor.svelte.d.ts +1 -0
- package/package/components/ResourceEditorDrawer.svelte +3 -1
- package/package/components/ResourceEditorDrawer.svelte.d.ts +6 -2
- package/package/components/ResourcePicker.svelte +10 -5
- package/package/components/ResourcePicker.svelte.d.ts +2 -0
- package/package/components/S3FilePickerInner.svelte +12 -4
- package/package/components/SchemaForm.svelte +20 -14
- package/package/components/SchemaForm.svelte.d.ts +2 -2
- package/package/components/ScriptBuilder.svelte +158 -18
- package/package/components/ScriptEditor.svelte +674 -150
- package/package/components/ScriptEditor.svelte.d.ts +7 -3
- package/package/components/SuperadminSettings.svelte +4 -1
- package/package/components/SuperadminSettingsInner.svelte +176 -67
- package/package/components/SuperadminSettingsInner.svelte.d.ts +3 -1
- package/package/components/SyncResourceTypes.svelte +31 -0
- package/package/components/SyncResourceTypes.svelte.d.ts +6 -0
- package/package/components/TimelineBar.svelte +14 -8
- package/package/components/TimelineBar.svelte.d.ts +1 -0
- package/package/components/WorkerGroup.svelte +11 -4
- package/package/components/WorkflowTimeline.svelte +386 -58
- package/package/components/WorkflowTimeline.svelte.d.ts +6 -1
- package/package/components/WorkspaceDependenciesEditor.svelte +32 -2
- package/package/components/apps/components/display/dbtable/DeleteRow.svelte +2 -2
- package/package/components/apps/components/display/dbtable/InsertRowRunnable.svelte +2 -2
- package/package/components/apps/components/display/dbtable/UpdateCell.svelte +2 -2
- package/package/components/apps/components/display/dbtable/metadata.js +44 -222
- package/package/components/apps/components/display/dbtable/queries/count.d.ts +9 -0
- package/package/components/apps/components/display/dbtable/queries/delete.d.ts +9 -0
- package/package/components/apps/components/display/dbtable/queries/insert.d.ts +9 -0
- package/package/components/apps/components/display/dbtable/queries/relationalKeys.d.ts +7 -0
- package/package/components/apps/components/display/dbtable/queries/relationalKeys.js +1 -1
- package/package/components/apps/components/display/dbtable/queries/select.d.ts +9 -0
- package/package/components/apps/components/display/dbtable/queries/update.d.ts +9 -0
- package/package/components/apps/editor/AppEditorHeaderDeploy.svelte +11 -9
- package/package/components/apps/editor/appUtilsS3.js +2 -2
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +53 -10
- package/package/components/common/clearableInput/ClearableInput.svelte +3 -7
- package/package/components/common/confirmationModal/ConfirmationModal.svelte +7 -1
- package/package/components/common/confirmationModal/ConfirmationModal.svelte.d.ts +1 -0
- package/package/components/common/drawer/Disposable.svelte +24 -2
- package/package/components/common/drawer/Disposable.svelte.d.ts +5 -0
- package/package/components/common/modal/Modal.svelte +84 -58
- package/package/components/common/table/AppRow.svelte.d.ts +1 -1
- package/package/components/common/table/FlowRow.svelte.d.ts +1 -1
- package/package/components/common/table/ScriptRow.svelte +31 -3
- package/package/components/common/table/ScriptRow.svelte.d.ts +1 -1
- package/package/components/copilot/MetadataGen.svelte +8 -5
- package/package/components/copilot/MetadataGen.svelte.d.ts +1 -0
- package/package/components/copilot/TestAIKey.svelte +2 -1
- package/package/components/copilot/TestAIKey.svelte.d.ts +1 -0
- package/package/components/copilot/chat/AIChatManager.svelte.js +62 -80
- package/package/components/copilot/chat/HistoryManager.svelte.d.ts +1 -0
- package/package/components/copilot/chat/HistoryManager.svelte.js +3 -0
- package/package/components/copilot/chat/__tests__/app/appChat.eval.test.js +47 -31
- package/package/components/copilot/chat/__tests__/app/appEvalComparison.d.ts +1 -6
- package/package/components/copilot/chat/__tests__/app/appEvalComparison.js +18 -13
- package/package/components/copilot/chat/__tests__/app/appEvalRunner.d.ts +14 -5
- package/package/components/copilot/chat/__tests__/app/appEvalRunner.js +13 -12
- package/package/components/copilot/chat/__tests__/flow/flowChat.eval.test.js +46 -29
- package/package/components/copilot/chat/__tests__/flow/flowEvalComparison.js +1 -4
- package/package/components/copilot/chat/__tests__/flow/flowEvalRunner.d.ts +14 -5
- package/package/components/copilot/chat/__tests__/flow/flowEvalRunner.js +13 -12
- package/package/components/copilot/chat/__tests__/shared/baseEvalRunner.d.ts +5 -8
- package/package/components/copilot/chat/__tests__/shared/baseEvalRunner.js +82 -108
- package/package/components/copilot/chat/__tests__/shared/baseLLMEvaluator.d.ts +4 -7
- package/package/components/copilot/chat/__tests__/shared/baseLLMEvaluator.js +19 -11
- package/package/components/copilot/chat/__tests__/shared/types.d.ts +3 -0
- package/package/components/copilot/chat/anthropic.d.ts +9 -2
- package/package/components/copilot/chat/anthropic.js +12 -6
- package/package/components/copilot/chat/app/core.js +5 -12
- package/package/components/copilot/chat/chatLoop.d.ts +40 -0
- package/package/components/copilot/chat/chatLoop.js +97 -0
- package/package/components/copilot/chat/openai-responses.d.ts +8 -2
- package/package/components/copilot/chat/openai-responses.js +17 -17
- package/package/components/copilot/chat/shared.d.ts +2 -1
- package/package/components/copilot/chat/shared.js +2 -2
- package/package/components/copilot/lib.d.ts +14 -5
- package/package/components/copilot/lib.js +68 -48
- package/package/components/dbOps.d.ts +2 -2
- package/package/components/dbOps.js +129 -53
- package/package/components/debug/debugUtils.d.ts +5 -0
- package/package/components/debug/debugUtils.js +20 -0
- package/package/components/debug/index.d.ts +1 -1
- package/package/components/debug/index.js +3 -7
- package/package/components/flows/CreateActionsFlow.svelte +221 -43
- package/package/components/flows/DebounceLimit.svelte +42 -9
- package/package/components/flows/common/FlowCard.svelte +2 -1
- package/package/components/flows/common/FlowCard.svelte.d.ts +1 -0
- package/package/components/flows/common/FlowCardHeader.svelte +14 -10
- package/package/components/flows/common/FlowCardHeader.svelte.d.ts +1 -0
- package/package/components/flows/content/AgentToolWrapper.svelte +2 -1
- package/package/components/flows/content/AgentToolWrapper.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowEditorPanel.svelte +1 -0
- package/package/components/flows/content/FlowModuleComponent.svelte +32 -18
- package/package/components/flows/content/FlowModuleComponent.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowModuleDebounce.svelte +46 -0
- package/package/components/flows/content/FlowModuleDebounce.svelte.d.ts +8 -0
- package/package/components/flows/content/FlowModuleEarlyStop.svelte +26 -5
- package/package/components/flows/content/FlowModuleWrapper.svelte +1 -0
- package/package/components/flows/content/FlowRetries.svelte +57 -57
- package/package/components/flows/content/FlowSelectionPanel.svelte +9 -14
- package/package/components/flows/content/FlowSelectionPanel.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowSettings.svelte +6 -6
- package/package/components/flows/content/ScriptEditorDrawer.svelte +1 -1
- package/package/components/flows/content/SuspendDrawer.svelte +0 -18
- package/package/components/flows/header/FlowYamlEditor.svelte +20 -4
- package/package/components/flows/map/FlowErrorHandlerItem.svelte +32 -14
- package/package/components/flows/map/FlowErrorHandlerItem.svelte.d.ts +1 -0
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +7 -10
- package/package/components/flows/map/FlowModuleSchemaItemViewer.svelte +1 -8
- package/package/components/flows/map/FlowModuleSchemaItemViewer.svelte.d.ts +0 -2
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +343 -137
- package/package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +1 -0
- package/package/components/flows/map/FlowStickyNode.svelte +24 -16
- package/package/components/flows/map/FlowStickyNode.svelte.d.ts +1 -0
- package/package/components/flows/map/VirtualItemWrapper.svelte +1 -1
- package/package/components/flows/pickers/PickHubScriptQuick.svelte.d.ts +1 -1
- package/package/components/flows/propPicker/OutputPickerInner.svelte +5 -1
- package/package/components/flows/scheduleUtils.js +3 -1
- package/package/components/flows/utils.svelte.js +6 -1
- package/package/components/git_sync/GitSyncContext.svelte.js +13 -2
- package/package/components/git_sync/GitSyncSection.svelte +135 -99
- package/package/components/graph/DragGhost.svelte +11 -2
- package/package/components/graph/FlowGraphV2.svelte +138 -42
- package/package/components/graph/FlowGraphV2.svelte.d.ts +15 -1
- package/package/components/graph/GroupActionBar.svelte +124 -0
- package/package/components/graph/GroupActionBar.svelte.d.ts +20 -0
- package/package/components/graph/GroupHeader.svelte +98 -0
- package/package/components/graph/GroupHeader.svelte.d.ts +11 -0
- package/package/components/graph/GroupHeaderBlock.svelte +58 -0
- package/package/components/graph/GroupHeaderBlock.svelte.d.ts +13 -0
- package/package/components/graph/GroupModuleIcons.svelte +163 -0
- package/package/components/graph/GroupModuleIcons.svelte.d.ts +11 -0
- package/package/components/graph/GroupNodeCard.svelte +127 -0
- package/package/components/graph/GroupNodeCard.svelte.d.ts +18 -0
- package/package/components/graph/GroupNoteArea.svelte +132 -0
- package/package/components/graph/GroupNoteArea.svelte.d.ts +11 -0
- package/package/components/graph/GroupOverlay.svelte +71 -0
- package/package/components/graph/GroupOverlay.svelte.d.ts +12 -0
- package/package/components/graph/MiniFlowGraph.svelte +17 -2
- package/package/components/graph/SelectionBoundingBox.svelte +14 -14
- package/package/components/graph/compoundLayout.d.ts +17 -1
- package/package/components/graph/compoundLayout.js +129 -14
- package/package/components/graph/flowStructure.d.ts +63 -0
- package/package/components/graph/flowStructure.js +422 -0
- package/package/components/graph/flowStructure.test.d.ts +1 -0
- package/package/components/graph/flowStructure.test.js +205 -0
- package/package/components/graph/graphBuilder.svelte.d.ts +52 -3
- package/package/components/graph/graphBuilder.svelte.js +170 -67
- package/package/components/graph/graphContext.d.ts +7 -0
- package/package/components/graph/groupDetectionUtils.d.ts +24 -1
- package/package/components/graph/groupDetectionUtils.js +101 -1
- package/package/components/graph/groupEditor.svelte.d.ts +105 -0
- package/package/components/graph/groupEditor.svelte.js +253 -0
- package/package/components/graph/groupedModulesProxy.svelte.d.ts +55 -0
- package/package/components/graph/groupedModulesProxy.svelte.js +130 -0
- package/package/components/graph/model.d.ts +2 -1
- package/package/components/graph/moveManager.svelte.js +0 -3
- package/package/components/graph/nodeExtraSpace.d.ts +32 -0
- package/package/components/graph/nodeExtraSpace.js +113 -0
- package/package/components/graph/noteColors.d.ts +1 -0
- package/package/components/graph/noteColors.js +20 -10
- package/package/components/graph/noteUtils.svelte.d.ts +0 -18
- package/package/components/graph/noteUtils.svelte.js +6 -41
- package/package/components/graph/renderers/edges/BaseEdge.svelte +26 -11
- package/package/components/graph/renderers/nodes/AIToolNode.svelte +24 -49
- package/package/components/graph/renderers/nodes/AIToolNode.svelte.d.ts +1 -4
- package/package/components/graph/renderers/nodes/AssetNode.svelte +1 -27
- package/package/components/graph/renderers/nodes/AssetNode.svelte.d.ts +0 -4
- package/package/components/graph/renderers/nodes/CollapsedGroupNode.svelte +85 -0
- package/package/components/graph/renderers/nodes/CollapsedGroupNode.svelte.d.ts +8 -0
- package/package/components/graph/renderers/nodes/ForLoopStartNode.svelte +3 -2
- package/package/components/graph/renderers/nodes/GroupEndNode.svelte +9 -0
- package/package/components/graph/renderers/nodes/GroupEndNode.svelte.d.ts +6 -0
- package/package/components/graph/renderers/nodes/GroupHeadNode.svelte +20 -0
- package/package/components/graph/renderers/nodes/GroupHeadNode.svelte.d.ts +8 -0
- package/package/components/graph/renderers/nodes/ModuleNode.svelte +8 -5
- package/package/components/graph/renderers/triggers/TriggersWrapper.svelte +1 -1
- package/package/components/graph/util.d.ts +5 -1
- package/package/components/graph/util.js +7 -5
- package/package/components/home/Item.svelte +1 -0
- package/package/components/home/ItemsList.svelte +1 -1
- package/package/components/icons/ActiveCampaignIcon.svelte +10 -0
- package/package/components/icons/ActiveCampaignIcon.svelte.d.ts +7 -0
- package/package/components/icons/AlgoliaIcon.svelte +7 -0
- package/package/components/icons/AlgoliaIcon.svelte.d.ts +7 -0
- package/package/components/icons/ApolloIcon.svelte +7 -0
- package/package/components/icons/ApolloIcon.svelte.d.ts +7 -0
- package/package/components/icons/BambooHrIcon.svelte +7 -0
- package/package/components/icons/BambooHrIcon.svelte.d.ts +7 -0
- package/package/components/icons/BaremetricsIcon.svelte +7 -0
- package/package/components/icons/BaremetricsIcon.svelte.d.ts +7 -0
- package/package/components/icons/BitlyIcon.svelte +7 -0
- package/package/components/icons/BitlyIcon.svelte.d.ts +7 -0
- package/package/components/icons/BloggerIcon.svelte +7 -0
- package/package/components/icons/BloggerIcon.svelte.d.ts +7 -0
- package/package/components/icons/BlueskyIcon.svelte +7 -0
- package/package/components/icons/BlueskyIcon.svelte.d.ts +7 -0
- package/package/components/icons/BoxIcon.svelte +7 -0
- package/package/components/icons/BoxIcon.svelte.d.ts +7 -0
- package/package/components/icons/BrevoIcon.svelte +7 -0
- package/package/components/icons/BrevoIcon.svelte.d.ts +7 -0
- package/package/components/icons/BrexIcon.svelte +7 -0
- package/package/components/icons/BrexIcon.svelte.d.ts +7 -0
- package/package/components/icons/BrowserlessIcon.svelte +7 -0
- package/package/components/icons/BrowserlessIcon.svelte.d.ts +7 -0
- package/package/components/icons/BubbleIcon.svelte +11 -0
- package/package/components/icons/BubbleIcon.svelte.d.ts +7 -0
- package/package/components/icons/BuildkiteIcon.svelte +7 -0
- package/package/components/icons/BuildkiteIcon.svelte.d.ts +7 -0
- package/package/components/icons/CalcomIcon.svelte +1 -1
- package/package/components/icons/CalendlyIcon.svelte +7 -0
- package/package/components/icons/CalendlyIcon.svelte.d.ts +7 -0
- package/package/components/icons/CircleCiIcon.svelte +7 -0
- package/package/components/icons/CircleCiIcon.svelte.d.ts +7 -0
- package/package/components/icons/CiscoIcon.svelte +7 -0
- package/package/components/icons/CiscoIcon.svelte.d.ts +7 -0
- package/package/components/icons/ClearbitIcon.svelte +7 -0
- package/package/components/icons/ClearbitIcon.svelte.d.ts +7 -0
- package/package/components/icons/ClerkIcon.svelte +7 -0
- package/package/components/icons/ClerkIcon.svelte.d.ts +7 -0
- package/package/components/icons/CloseIcon.svelte +37 -0
- package/package/components/icons/CloseIcon.svelte.d.ts +7 -0
- package/package/components/icons/CloudinaryIcon.svelte +7 -0
- package/package/components/icons/CloudinaryIcon.svelte.d.ts +7 -0
- package/package/components/icons/CockroachDbIcon.svelte +7 -0
- package/package/components/icons/CockroachDbIcon.svelte.d.ts +7 -0
- package/package/components/icons/CodaIcon.svelte +7 -0
- package/package/components/icons/CodaIcon.svelte.d.ts +7 -0
- package/package/components/icons/CohereIcon.svelte +16 -0
- package/package/components/icons/CohereIcon.svelte.d.ts +7 -0
- package/package/components/icons/CoinMarketCapIcon.svelte +7 -0
- package/package/components/icons/CoinMarketCapIcon.svelte.d.ts +7 -0
- package/package/components/icons/CoinbaseIcon.svelte +7 -0
- package/package/components/icons/CoinbaseIcon.svelte.d.ts +7 -0
- package/package/components/icons/ConfluenceIcon.svelte +7 -0
- package/package/components/icons/ConfluenceIcon.svelte.d.ts +7 -0
- package/package/components/icons/ContentfulIcon.svelte +7 -0
- package/package/components/icons/ContentfulIcon.svelte.d.ts +7 -0
- package/package/components/icons/ConvertKitIcon.svelte +7 -0
- package/package/components/icons/ConvertKitIcon.svelte.d.ts +7 -0
- package/package/components/icons/DatoCmsIcon.svelte +7 -0
- package/package/components/icons/DatoCmsIcon.svelte.d.ts +7 -0
- package/package/components/icons/DeelIcon.svelte +7 -0
- package/package/components/icons/DeelIcon.svelte.d.ts +7 -0
- package/package/components/icons/DeepLIcon.svelte +7 -0
- package/package/components/icons/DeepLIcon.svelte.d.ts +7 -0
- package/package/components/icons/DigitalOceanIcon.svelte +7 -0
- package/package/components/icons/DigitalOceanIcon.svelte.d.ts +7 -0
- package/package/components/icons/DiscourseIcon.svelte +7 -0
- package/package/components/icons/DiscourseIcon.svelte.d.ts +7 -0
- package/package/components/icons/DocusignIcon.svelte +7 -0
- package/package/components/icons/DocusignIcon.svelte.d.ts +7 -0
- package/package/components/icons/DropboxIcon.svelte +7 -0
- package/package/components/icons/DropboxIcon.svelte.d.ts +7 -0
- package/package/components/icons/EdgeDbIcon.svelte +16 -20
- package/package/components/icons/EventbriteIcon.svelte +10 -0
- package/package/components/icons/EventbriteIcon.svelte.d.ts +7 -0
- package/package/components/icons/FigmaIcon.svelte +7 -0
- package/package/components/icons/FigmaIcon.svelte.d.ts +7 -0
- package/package/components/icons/FlyIcon.svelte +7 -0
- package/package/components/icons/FlyIcon.svelte.d.ts +7 -0
- package/package/components/icons/FreshdeskIcon.svelte +7 -0
- package/package/components/icons/FreshdeskIcon.svelte.d.ts +7 -0
- package/package/components/icons/FrontAppIcon.svelte +7 -0
- package/package/components/icons/FrontAppIcon.svelte.d.ts +7 -0
- package/package/components/icons/GhostCmsIcon.svelte +7 -0
- package/package/components/icons/GhostCmsIcon.svelte.d.ts +7 -0
- package/package/components/icons/GiphyIcon.svelte +7 -0
- package/package/components/icons/GiphyIcon.svelte.d.ts +7 -0
- package/package/components/icons/GitBookIcon.svelte +7 -0
- package/package/components/icons/GitBookIcon.svelte.d.ts +7 -0
- package/package/components/icons/GroqIcon.svelte +7 -0
- package/package/components/icons/GroqIcon.svelte.d.ts +7 -0
- package/package/components/icons/HoneybadgerIcon.svelte +7 -0
- package/package/components/icons/HoneybadgerIcon.svelte.d.ts +7 -0
- package/package/components/icons/HttpIcon.svelte +1 -0
- package/package/components/icons/IftttIcon.svelte +7 -0
- package/package/components/icons/IftttIcon.svelte.d.ts +7 -0
- package/package/components/icons/IntercomIcon.svelte +7 -0
- package/package/components/icons/IntercomIcon.svelte.d.ts +7 -0
- package/package/components/icons/JoomlaIcon.svelte +7 -0
- package/package/components/icons/JoomlaIcon.svelte.d.ts +7 -0
- package/package/components/icons/LineIcon.svelte +7 -0
- package/package/components/icons/LineIcon.svelte.d.ts +7 -0
- package/package/components/icons/LinearIcon.svelte +7 -0
- package/package/components/icons/LinearIcon.svelte.d.ts +7 -0
- package/package/components/icons/LinodeIcon.svelte +7 -0
- package/package/components/icons/LinodeIcon.svelte.d.ts +7 -0
- package/package/components/icons/LumaAiIcon.svelte +39 -0
- package/package/components/icons/LumaAiIcon.svelte.d.ts +7 -0
- package/package/components/icons/MSTeamsIcon.svelte +20 -38
- package/package/components/icons/MSTeamsIcon.svelte.d.ts +2 -0
- package/package/components/icons/MagentoIcon.svelte +7 -0
- package/package/components/icons/MagentoIcon.svelte.d.ts +7 -0
- package/package/components/icons/MailchimpIcon.svelte +25 -13
- package/package/components/icons/MandrillIcon.svelte +7 -0
- package/package/components/icons/MandrillIcon.svelte.d.ts +7 -0
- package/package/components/icons/MauticIcon.svelte +7 -0
- package/package/components/icons/MauticIcon.svelte.d.ts +7 -0
- package/package/components/icons/MediumIcon.svelte +7 -0
- package/package/components/icons/MediumIcon.svelte.d.ts +7 -0
- package/package/components/icons/MiroIcon.svelte +7 -0
- package/package/components/icons/MiroIcon.svelte.d.ts +7 -0
- package/package/components/icons/MistralIcon.svelte +7 -0
- package/package/components/icons/MistralIcon.svelte.d.ts +7 -0
- package/package/components/icons/MixpanelIcon.svelte +7 -0
- package/package/components/icons/MixpanelIcon.svelte.d.ts +7 -0
- package/package/components/icons/MondayIcon.svelte +7 -0
- package/package/components/icons/MondayIcon.svelte.d.ts +7 -0
- package/package/components/icons/NeonDbIcon.svelte +23 -0
- package/package/components/icons/NeonDbIcon.svelte.d.ts +7 -0
- package/package/components/icons/NetlifyIcon.svelte +7 -0
- package/package/components/icons/NetlifyIcon.svelte.d.ts +7 -0
- package/package/components/icons/OneSignalIcon.svelte +9 -0
- package/package/components/icons/OneSignalIcon.svelte.d.ts +7 -0
- package/package/components/icons/OpenWeatherIcon.svelte +7 -0
- package/package/components/icons/OpenWeatherIcon.svelte.d.ts +7 -0
- package/package/components/icons/PagerDutyIcon.svelte +7 -0
- package/package/components/icons/PagerDutyIcon.svelte.d.ts +7 -0
- package/package/components/icons/PandaDocIcon.svelte +7 -0
- package/package/components/icons/PandaDocIcon.svelte.d.ts +7 -0
- package/package/components/icons/PaypalIcon.svelte +7 -0
- package/package/components/icons/PaypalIcon.svelte.d.ts +7 -0
- package/package/components/icons/PersonioIcon.svelte +7 -0
- package/package/components/icons/PersonioIcon.svelte.d.ts +7 -0
- package/package/components/icons/PinterestIcon.svelte +7 -0
- package/package/components/icons/PinterestIcon.svelte.d.ts +7 -0
- package/package/components/icons/PipedriveIcon.svelte +11 -0
- package/package/components/icons/PipedriveIcon.svelte.d.ts +7 -0
- package/package/components/icons/PlanetScaleIcon.svelte +7 -0
- package/package/components/icons/PlanetScaleIcon.svelte.d.ts +7 -0
- package/package/components/icons/PostmarkIcon.svelte +7 -0
- package/package/components/icons/PostmarkIcon.svelte.d.ts +7 -0
- package/package/components/icons/PusherIcon.svelte +7 -0
- package/package/components/icons/PusherIcon.svelte.d.ts +7 -0
- package/package/components/icons/QuickbooksIcon.svelte +13 -1
- package/package/components/icons/RaindropIcon.svelte +27 -0
- package/package/components/icons/RaindropIcon.svelte.d.ts +7 -0
- package/package/components/icons/ReadwiseIcon.svelte +12 -0
- package/package/components/icons/ReadwiseIcon.svelte.d.ts +7 -0
- package/package/components/icons/RenderIcon.svelte +7 -0
- package/package/components/icons/RenderIcon.svelte.d.ts +7 -0
- package/package/components/icons/ReplicateIcon.svelte +7 -0
- package/package/components/icons/ReplicateIcon.svelte.d.ts +7 -0
- package/package/components/icons/ResendIcon.svelte +1 -1
- package/package/components/icons/RestIcon.svelte +1 -0
- package/package/components/icons/RingCentralIcon.svelte +7 -0
- package/package/components/icons/RingCentralIcon.svelte.d.ts +7 -0
- package/package/components/icons/RocketChatIcon.svelte +7 -0
- package/package/components/icons/RocketChatIcon.svelte.d.ts +7 -0
- package/package/components/icons/RunPodIcon.svelte +8 -0
- package/package/components/icons/RunPodIcon.svelte.d.ts +7 -0
- package/package/components/icons/RustIcon.svelte +74 -56
- package/package/components/icons/SalesforceIcon.svelte +7 -0
- package/package/components/icons/SalesforceIcon.svelte.d.ts +7 -0
- package/package/components/icons/SegmentIcon.svelte +7 -0
- package/package/components/icons/SegmentIcon.svelte.d.ts +7 -0
- package/package/components/icons/SentryIcon.svelte +7 -0
- package/package/components/icons/SentryIcon.svelte.d.ts +7 -0
- package/package/components/icons/ServiceNowIcon.svelte +7 -0
- package/package/components/icons/ServiceNowIcon.svelte.d.ts +7 -0
- package/package/components/icons/ShortcutIcon.svelte +7 -0
- package/package/components/icons/ShortcutIcon.svelte.d.ts +7 -0
- package/package/components/icons/SigNozIcon.svelte +8 -0
- package/package/components/icons/SigNozIcon.svelte.d.ts +7 -0
- package/package/components/icons/SmartsheetIcon.svelte +7 -0
- package/package/components/icons/SmartsheetIcon.svelte.d.ts +7 -0
- package/package/components/icons/SpeechifyIcon.svelte +7 -0
- package/package/components/icons/SpeechifyIcon.svelte.d.ts +7 -0
- package/package/components/icons/SplitwiseIcon.svelte +7 -0
- package/package/components/icons/SplitwiseIcon.svelte.d.ts +7 -0
- package/package/components/icons/StravaIcon.svelte +7 -0
- package/package/components/icons/StravaIcon.svelte.d.ts +7 -0
- package/package/components/icons/TallyIcon.svelte +7 -0
- package/package/components/icons/TallyIcon.svelte.d.ts +7 -0
- package/package/components/icons/TelnyxIcon.svelte +19 -0
- package/package/components/icons/TelnyxIcon.svelte.d.ts +7 -0
- package/package/components/icons/ThreadsIcon.svelte +7 -0
- package/package/components/icons/ThreadsIcon.svelte.d.ts +7 -0
- package/package/components/icons/TodoistIcon.svelte +7 -0
- package/package/components/icons/TodoistIcon.svelte.d.ts +7 -0
- package/package/components/icons/TogetherAiIcon.svelte +23 -0
- package/package/components/icons/TogetherAiIcon.svelte.d.ts +7 -0
- package/package/components/icons/TrelloIcon.svelte +22 -1
- package/package/components/icons/TursoIcon.svelte +7 -0
- package/package/components/icons/TursoIcon.svelte.d.ts +7 -0
- package/package/components/icons/TwitchIcon.svelte +7 -0
- package/package/components/icons/TwitchIcon.svelte.d.ts +7 -0
- package/package/components/icons/TwitterIcon.svelte +7 -0
- package/package/components/icons/TwitterIcon.svelte.d.ts +7 -0
- package/package/components/icons/TypeformIcon.svelte +1 -1
- package/package/components/icons/VercelIcon.svelte +7 -0
- package/package/components/icons/VercelIcon.svelte.d.ts +7 -0
- package/package/components/icons/WebflowIcon.svelte +7 -0
- package/package/components/icons/WebflowIcon.svelte.d.ts +7 -0
- package/package/components/icons/WooCommerceIcon.svelte +7 -0
- package/package/components/icons/WooCommerceIcon.svelte.d.ts +7 -0
- package/package/components/icons/WordpressIcon.svelte +7 -0
- package/package/components/icons/WordpressIcon.svelte.d.ts +7 -0
- package/package/components/icons/XataIcon.svelte +13 -0
- package/package/components/icons/XataIcon.svelte.d.ts +7 -0
- package/package/components/icons/YelpIcon.svelte +7 -0
- package/package/components/icons/YelpIcon.svelte.d.ts +7 -0
- package/package/components/icons/YnabIcon.svelte +7 -0
- package/package/components/icons/YnabIcon.svelte.d.ts +7 -0
- package/package/components/icons/YoutubeIcon.svelte +7 -0
- package/package/components/icons/YoutubeIcon.svelte.d.ts +7 -0
- package/package/components/icons/ZendeskIcon.svelte +1 -1
- package/package/components/icons/ZeroTierIcon.svelte +7 -0
- package/package/components/icons/ZeroTierIcon.svelte.d.ts +7 -0
- package/package/components/icons/ZoomIcon.svelte +7 -0
- package/package/components/icons/ZoomIcon.svelte.d.ts +7 -0
- package/package/components/icons/index.d.ts +111 -1
- package/package/components/icons/index.js +225 -2
- package/package/components/instanceSettings/GhesAppSettings.svelte +161 -0
- package/package/components/instanceSettings/GhesAppSettings.svelte.d.ts +8 -0
- package/package/components/instanceSettings/IndexerMemorySettings.svelte +19 -8
- package/package/components/instanceSettings/InstanceAISettings.svelte +132 -0
- package/package/components/instanceSettings/InstanceAISettings.svelte.d.ts +10 -0
- package/package/components/instanceSettings/WorkspaceRegistries.svelte +293 -0
- package/package/components/instanceSettings/WorkspaceRegistries.svelte.d.ts +8 -0
- package/package/components/instanceSettings/WsConnectivityTest.svelte +177 -0
- package/package/components/instanceSettings/WsConnectivityTest.svelte.d.ts +7 -0
- package/package/components/instanceSettings.d.ts +3 -1
- package/package/components/instanceSettings.js +92 -2
- package/package/components/mcp/McpScopeSelector.svelte +408 -0
- package/package/components/mcp/McpScopeSelector.svelte.d.ts +7 -0
- package/package/components/meltComponents/Popover.svelte +0 -1
- package/package/components/raw_apps/RawAppPreview.svelte +6 -2
- package/package/components/recording/FlowRecordingReplay.svelte +94 -52
- package/package/components/recording/FlowRecordingReplay.svelte.d.ts +10 -1
- package/package/components/recording/ScriptRecordingReplay.svelte +139 -76
- package/package/components/recording/ScriptRecordingReplay.svelte.d.ts +10 -1
- package/package/components/runs/JobRunsPreview.svelte +8 -1
- package/package/components/runs/TimeframeSelect.svelte +0 -1
- package/package/components/schema/JobSchemaPicker.svelte +8 -2
- package/package/components/schema/JobSchemaPicker.svelte.d.ts +1 -0
- package/package/components/schema/SchemaFormDND.svelte +15 -3
- package/package/components/scriptEditor/LogPanel.svelte +78 -68
- package/package/components/script_builder.d.ts +1 -1
- package/package/components/scripts/CreateActionsScript.svelte +3 -3
- package/package/components/scripts/WacExportDrawer.svelte +127 -0
- package/package/components/scripts/WacExportDrawer.svelte.d.ts +8 -0
- package/package/components/scripts/scriptStore.svelte.d.ts +2 -0
- package/package/components/scripts/scriptStore.svelte.js +2 -0
- package/package/components/select/SelectDropdown.svelte +1 -1
- package/package/components/settings/AIPromptsModal.svelte +5 -2
- package/package/components/settings/AIPromptsModal.svelte.d.ts +1 -1
- package/package/components/settings/CloudQuotas.svelte +152 -0
- package/package/components/settings/CloudQuotas.svelte.d.ts +3 -0
- package/package/components/settings/CreateToken.svelte +15 -430
- package/package/components/settings/Trashbin.svelte +248 -0
- package/package/components/settings/Trashbin.svelte.d.ts +3 -0
- package/package/components/sidebar/MultiplayerMenu.svelte +14 -4
- package/package/components/triggers/DeleteTriggerButton.svelte +1 -0
- package/package/components/triggers/PermissionedAsLine.svelte +66 -0
- package/package/components/triggers/PermissionedAsLine.svelte.d.ts +9 -0
- package/package/components/triggers/TriggerEditorToolbar.svelte +2 -2
- package/package/components/triggers/TriggerTokens.svelte +3 -3
- package/package/components/triggers/email/EmailTriggerEditorInner.svelte +19 -1
- package/package/components/triggers/email/utils.js +3 -1
- package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +24 -4
- package/package/components/triggers/gcp/utils.js +2 -0
- package/package/components/triggers/http/RouteEditorConfigSection.svelte +22 -3
- package/package/components/triggers/http/RouteEditorInner.svelte +28 -6
- package/package/components/triggers/http/RoutesGenerator.svelte +13 -2
- package/package/components/triggers/http/utils.js +3 -1
- package/package/components/triggers/kafka/KafkaTriggerEditorInner.svelte +23 -6
- package/package/components/triggers/kafka/utils.js +3 -1
- package/package/components/triggers/mqtt/MqttTriggerEditorInner.svelte +27 -5
- package/package/components/triggers/mqtt/utils.js +2 -0
- package/package/components/triggers/native/NativeTriggerEditor.svelte +23 -1
- package/package/components/triggers/native/NativeTriggerTable.svelte +14 -3
- package/package/components/triggers/native/utils.js +3 -2
- package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +19 -1
- package/package/components/triggers/nats/utils.js +2 -0
- package/package/components/triggers/postgres/PostgresTriggerEditorInner.svelte +19 -1
- package/package/components/triggers/postgres/utils.js +2 -0
- package/package/components/triggers/schedules/ScheduleEditorInner.svelte +29 -7
- package/package/components/triggers/sqs/SqsTriggerEditorInner.svelte +19 -1
- package/package/components/triggers/sqs/utils.js +2 -0
- package/package/components/triggers/utils.js +9 -2
- package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +24 -4
- package/package/components/triggers/websocket/utils.js +3 -1
- package/package/components/workspaceSettings/AISettings.svelte +342 -214
- package/package/components/workspaceSettings/AISettings.svelte.d.ts +18 -10
- package/package/components/workspaceSettings/CreateWorkspace.svelte +304 -196
- package/package/components/workspaceSettings/CustomInstanceDbWizardModal.svelte +1 -2
- package/package/components/workspaceSettings/DucklakeSettings.svelte +1 -1
- package/package/components/workspaceSettings/InstanceFallbackSettings.svelte +75 -0
- package/package/components/workspaceSettings/InstanceFallbackSettings.svelte.d.ts +9 -0
- package/package/components/workspaceSettings/StorageSettings.svelte +4 -35
- package/package/components/workspaceSettings/VolumeStorageSettings.svelte +80 -0
- package/package/components/workspaceSettings/VolumeStorageSettings.svelte.d.ts +10 -0
- package/package/components/workspaceSettings/WorkspaceIntegrations.svelte +4 -1
- package/package/forLater.js +4 -0
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +294 -94
- package/package/gen/schemas.gen.js +294 -94
- package/package/gen/services.gen.d.ts +121 -5
- package/package/gen/services.gen.js +237 -5
- package/package/gen/types.gen.d.ts +715 -91
- package/package/githubApp.js +19 -1
- package/package/hubPaths.json +8 -4
- package/package/infer.d.ts +1 -1
- package/package/infer.js +5 -1
- package/package/logoutRedirect.d.ts +1 -0
- package/package/logoutRedirect.js +24 -0
- package/package/script_helpers.d.ts +8 -2
- package/package/script_helpers.js +15 -1
- package/package/services/trashService.d.ts +28 -0
- package/package/services/trashService.js +47 -0
- package/package/stores.d.ts +1 -0
- package/package/stores.js +1 -0
- package/package/system_prompts/index.d.ts +1 -0
- package/package/system_prompts/index.js +7 -0
- package/package/system_prompts/prompts.d.ts +7 -5
- package/package/system_prompts/prompts.js +182 -11
- package/package/templates/wac_python.py.template +42 -0
- package/package/templates/wac_typescript.ts.template +48 -0
- package/package/utils_deployable.d.ts +22 -21
- package/package/utils_deployable.js +58 -25
- package/package/utils_workspace_deploy.d.ts +15 -4
- package/package/utils_workspace_deploy.js +19 -15
- package/package/wsUrl.d.ts +1 -0
- package/package/wsUrl.js +15 -0
- package/package.json +13 -5
- package/dist/sharedUtils/assets/tokens/colorTokensConfig.d.ts +0 -2
- package/dist/sharedUtils/base.d.ts +0 -1
- package/dist/sharedUtils/cloud.d.ts +0 -1
- package/dist/sharedUtils/common.d.ts +0 -111
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/count.d.ts +0 -5
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/delete.d.ts +0 -5
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/insert.d.ts +0 -5
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/select.d.ts +0 -13
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/update.d.ts +0 -11
- package/dist/sharedUtils/components/apps/components/display/dbtable/utils.d.ts +0 -95
- package/dist/sharedUtils/components/apps/editor/appPolicy.d.ts +0 -6
- package/dist/sharedUtils/components/apps/editor/appUtilsCore.d.ts +0 -7
- package/dist/sharedUtils/components/apps/editor/appUtilsS3.d.ts +0 -33
- package/dist/sharedUtils/components/apps/editor/commonAppUtils.d.ts +0 -10
- package/dist/sharedUtils/components/apps/editor/component/components.d.ts +0 -5371
- package/dist/sharedUtils/components/apps/editor/component/default-codes.d.ts +0 -3
- package/dist/sharedUtils/components/apps/editor/component/index.d.ts +0 -3
- package/dist/sharedUtils/components/apps/editor/component/sets.d.ts +0 -7
- package/dist/sharedUtils/components/apps/editor/componentsPanel/componentDefaultProps.d.ts +0 -3
- package/dist/sharedUtils/components/apps/gridUtils.d.ts +0 -14
- package/dist/sharedUtils/components/apps/inputType.d.ts +0 -178
- package/dist/sharedUtils/components/apps/rx.d.ts +0 -29
- package/dist/sharedUtils/components/apps/sharedTypes.d.ts +0 -21
- package/dist/sharedUtils/components/apps/types.d.ts +0 -274
- package/dist/sharedUtils/components/assets/lib.d.ts +0 -25
- package/dist/sharedUtils/components/common/alert/model.d.ts +0 -2
- package/dist/sharedUtils/components/common/badge/model.d.ts +0 -8
- package/dist/sharedUtils/components/common/button/model.d.ts +0 -45
- package/dist/sharedUtils/components/common/fileInput/model.d.ts +0 -1
- package/dist/sharedUtils/components/common/index.d.ts +0 -24
- package/dist/sharedUtils/components/common/skeleton/model.d.ts +0 -21
- package/dist/sharedUtils/components/dbTypes.d.ts +0 -14
- package/dist/sharedUtils/components/diff_drawer.d.ts +0 -26
- package/dist/sharedUtils/components/ducklake.d.ts +0 -1
- package/dist/sharedUtils/components/flows/scheduleUtils.d.ts +0 -7
- package/dist/sharedUtils/components/icons/index.d.ts +0 -101
- package/dist/sharedUtils/components/random_positive_adjetive.d.ts +0 -1
- package/dist/sharedUtils/components/raw_apps/rawAppPolicy.d.ts +0 -10
- package/dist/sharedUtils/components/raw_apps/utils.d.ts +0 -15
- package/dist/sharedUtils/components/triggers/email/utils.d.ts +0 -4
- package/dist/sharedUtils/components/triggers/gcp/utils.d.ts +0 -2
- package/dist/sharedUtils/components/triggers/http/utils.d.ts +0 -11
- package/dist/sharedUtils/components/triggers/kafka/utils.d.ts +0 -2
- package/dist/sharedUtils/components/triggers/mqtt/utils.d.ts +0 -2
- package/dist/sharedUtils/components/triggers/nats/utils.d.ts +0 -2
- package/dist/sharedUtils/components/triggers/postgres/utils.d.ts +0 -8
- package/dist/sharedUtils/components/triggers/sqs/utils.d.ts +0 -2
- package/dist/sharedUtils/components/triggers/triggers.svelte.d.ts +0 -32
- package/dist/sharedUtils/components/triggers/utils.d.ts +0 -80
- package/dist/sharedUtils/components/triggers/websocket/utils.d.ts +0 -2
- package/dist/sharedUtils/components/triggers.d.ts +0 -20
- package/dist/sharedUtils/gen/core/ApiError.d.ts +0 -10
- package/dist/sharedUtils/gen/core/ApiRequestOptions.d.ts +0 -13
- package/dist/sharedUtils/gen/core/ApiResult.d.ts +0 -7
- package/dist/sharedUtils/gen/core/CancelablePromise.d.ts +0 -26
- package/dist/sharedUtils/gen/core/OpenAPI.d.ts +0 -27
- package/dist/sharedUtils/gen/core/request.d.ts +0 -29
- package/dist/sharedUtils/gen/index.d.ts +0 -6
- package/dist/sharedUtils/gen/schemas.gen.d.ts +0 -7036
- package/dist/sharedUtils/gen/services.gen.d.ts +0 -6047
- package/dist/sharedUtils/gen/types.gen.d.ts +0 -21881
- package/dist/sharedUtils/history.svelte.d.ts +0 -9
- package/dist/sharedUtils/hub.d.ts +0 -49
- package/dist/sharedUtils/jsr.json +0 -6
- package/dist/sharedUtils/lib.d.ts +0 -5
- package/dist/sharedUtils/lib.es.js +0 -1588
- package/dist/sharedUtils/package.json +0 -12
- package/dist/sharedUtils/schema.d.ts +0 -3
- package/dist/sharedUtils/stores.d.ts +0 -97
- package/dist/sharedUtils/svelte5Utils.svelte.d.ts +0 -80
- package/dist/sharedUtils/toast.d.ts +0 -8
- package/dist/sharedUtils/utils.d.ts +0 -265
- package/package/components/graph/NodeContextMenu.svelte +0 -36
- package/package/components/graph/NodeContextMenu.svelte.d.ts +0 -8
- package/package/svelte5Utils.svelte.d.ts +0 -184
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<script lang="ts">import {
|
|
1
|
+
<script lang="ts">import { buildWsUrl } from '../wsUrl';
|
|
2
2
|
import { JobService } from '../gen';
|
|
3
3
|
import { enterpriseLicense, userStore, workspaceStore } from '../stores';
|
|
4
4
|
import { copyToClipboard, emptySchema, getLocalSetting, sendUserToast, storeLocalSetting } from '../utils';
|
|
@@ -16,11 +16,13 @@ import SplitPanesWrapper from './splitPanes/SplitPanesWrapper.svelte';
|
|
|
16
16
|
import WindmillIcon from './icons/WindmillIcon.svelte';
|
|
17
17
|
import * as Y from 'yjs';
|
|
18
18
|
import { scriptLangToEditorLang } from '../scripts';
|
|
19
|
+
import { langToExt } from '../editorLangUtils';
|
|
19
20
|
import { WebsocketProvider } from 'y-websocket';
|
|
20
21
|
import Modal from './common/modal/Modal.svelte';
|
|
22
|
+
import Popover from './meltComponents/Popover.svelte';
|
|
21
23
|
import DiffEditor from './DiffEditor.svelte';
|
|
22
|
-
import { AlertTriangle, Bug, Copy, CornerDownLeft, Disc, Download, ExternalLink, Github, GitBranch, Play, PlayIcon, Terminal, WandSparkles } from 'lucide-svelte';
|
|
23
|
-
import { DebugToolbar, DebugPanel, DebugConsole, getDAPClient, debugState, resetDAPClient, getDebugServerUrl, isDebuggable, getDebugFileExtension, fetchContextualVariables, signDebugRequest, getDebugErrorMessage } from './debug';
|
|
24
|
+
import { AlertTriangle, Bug, Copy, CornerDownLeft, Disc, Download, ExternalLink, Github, GitBranch, Play, PlayIcon, Plus, Terminal, Pencil, WandSparkles, X } from 'lucide-svelte';
|
|
25
|
+
import { DebugToolbar, DebugPanel, DebugConsole, getDAPClient, debugState, resetDAPClient, getDebugServerUrl, isDebuggable, getDebugFileExtension, fetchContextualVariables, signDebugRequest, signMultiplayerRequest, getDebugErrorMessage } from './debug';
|
|
24
26
|
import { SvelteSet } from 'svelte/reactivity';
|
|
25
27
|
import { setLicense } from '../enterpriseUtils';
|
|
26
28
|
import Tabs from './common/tabs/Tabs.svelte';
|
|
@@ -51,10 +53,287 @@ import { resource, watch } from 'runed';
|
|
|
51
53
|
import { createScriptRecording } from './recording/scriptRecording.svelte';
|
|
52
54
|
import { setActiveRecording } from './recording/flowRecording.svelte';
|
|
53
55
|
import DropdownV2 from './DropdownV2.svelte';
|
|
54
|
-
let { schema = $bindable(), code = $bindable(), path, lang, kind = undefined, template = 'script', tag, fixedOverflowWidgets = true, noSyncFromGithub = false, editor = $bindable(undefined), diffEditor = $bindable(undefined), collabMode = false, edit = true, noHistory = false, saveToWorkspace = false, watchChanges = false, customUi = undefined, args = $bindable(), selectedTab = $bindable('main'), hasPreprocessor = $bindable(false), captureTable = $bindable(undefined), showCaptures = true, stablePathForCaptures = '', lastSavedCode = undefined, lastDeployedCode = undefined, disableAi = false, assets = $bindable(), editorBarRight, enablePreprocessorSnippet = false } = $props();
|
|
56
|
+
let { schema = $bindable(), code = $bindable(), path, lang, kind = undefined, template = 'script', tag, fixedOverflowWidgets = true, noSyncFromGithub = false, editor = $bindable(undefined), diffEditor = $bindable(undefined), collabMode = false, edit = true, noHistory = false, saveToWorkspace = false, watchChanges = false, customUi = undefined, args = $bindable(), selectedTab = $bindable('main'), hasPreprocessor = $bindable(false), captureTable = $bindable(undefined), showCaptures = true, stablePathForCaptures = '', lastSavedCode = undefined, lastDeployedCode = undefined, disableAi = false, assets = $bindable(), modules = $bindable(undefined), editorBarRight, enablePreprocessorSnippet = false } = $props();
|
|
55
57
|
let initialArgs = structuredClone($state.snapshot(args));
|
|
56
58
|
let jsonView = $state(false);
|
|
57
59
|
let schemaHeight = $state(0);
|
|
60
|
+
// Module tab state
|
|
61
|
+
let activeModuleTab = $state(null);
|
|
62
|
+
// Per-module test panel state (args + schema), persisted across tab switches
|
|
63
|
+
let moduleTestState = $state({});
|
|
64
|
+
let testPanelArgs = $state({});
|
|
65
|
+
let testPanelSchema = $state(emptySchema());
|
|
66
|
+
// editorCode is what the editor shows; code always holds the main script content
|
|
67
|
+
let editorCode = $state(code);
|
|
68
|
+
// Sync editorCode when code changes externally (template reset, copilot, etc.)
|
|
69
|
+
let lastSyncedCode = code;
|
|
70
|
+
$effect.pre(() => {
|
|
71
|
+
if (activeModuleTab === null && code !== lastSyncedCode) {
|
|
72
|
+
editorCode = code;
|
|
73
|
+
lastSyncedCode = code;
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
function switchToModule(modulePath) {
|
|
77
|
+
if (activeModuleTab !== null && modules && activeModuleTab !== modulePath) {
|
|
78
|
+
// Switching from another module: save its content and test state
|
|
79
|
+
modules[activeModuleTab] = { ...modules[activeModuleTab], content: editorCode };
|
|
80
|
+
moduleTestState[activeModuleTab] = { args: testPanelArgs, schema: testPanelSchema };
|
|
81
|
+
}
|
|
82
|
+
if (modules && modules[modulePath]) {
|
|
83
|
+
activeModuleTab = modulePath;
|
|
84
|
+
editorCode = modules[modulePath].content;
|
|
85
|
+
editor?.setCode(editorCode);
|
|
86
|
+
// Restore or initialize test state for the new module
|
|
87
|
+
if (moduleTestState[modulePath]) {
|
|
88
|
+
testPanelArgs = moduleTestState[modulePath].args;
|
|
89
|
+
testPanelSchema = moduleTestState[modulePath].schema;
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
testPanelArgs = {};
|
|
93
|
+
testPanelSchema = emptySchema();
|
|
94
|
+
inferModuleSchema();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
function switchToMain() {
|
|
99
|
+
if (activeModuleTab !== null && modules) {
|
|
100
|
+
// Save current module content and test state
|
|
101
|
+
modules[activeModuleTab] = { ...modules[activeModuleTab], content: editorCode };
|
|
102
|
+
moduleTestState[activeModuleTab] = { args: testPanelArgs, schema: testPanelSchema };
|
|
103
|
+
}
|
|
104
|
+
activeModuleTab = null;
|
|
105
|
+
editorCode = code;
|
|
106
|
+
lastSyncedCode = code;
|
|
107
|
+
editor?.setCode(editorCode);
|
|
108
|
+
}
|
|
109
|
+
let effectiveLang = $derived(activeModuleTab && modules?.[activeModuleTab]
|
|
110
|
+
? modules[activeModuleTab].language
|
|
111
|
+
: lang);
|
|
112
|
+
let isWacV2 = $derived.by(() => {
|
|
113
|
+
const mainCode = code;
|
|
114
|
+
const isTsWac = mainCode.includes('windmill-client') &&
|
|
115
|
+
mainCode.includes('workflow') &&
|
|
116
|
+
mainCode.includes('task');
|
|
117
|
+
const isPyWac = (mainCode.includes('import wmill') || mainCode.includes('from wmill')) &&
|
|
118
|
+
mainCode.includes('workflow') &&
|
|
119
|
+
mainCode.includes('task');
|
|
120
|
+
return isTsWac || isPyWac;
|
|
121
|
+
});
|
|
122
|
+
let supportsModules = $derived((lang === 'bun' || lang === 'python3') && isWacV2);
|
|
123
|
+
let mainFileName = $derived('script.' + langToExt(scriptLangToEditorLang(lang)));
|
|
124
|
+
let modulePathInput = $state('');
|
|
125
|
+
let showAddModulePopover = $state(false);
|
|
126
|
+
let modulePathInputEl = $state(undefined);
|
|
127
|
+
let modulePathError = $state('');
|
|
128
|
+
let renameModuleInput = $state('');
|
|
129
|
+
let renameModuleError = $state('');
|
|
130
|
+
let renameModuleInputEl = $state(undefined);
|
|
131
|
+
const ALL_MODULE_EXTENSIONS = {
|
|
132
|
+
'.ts': 'bun',
|
|
133
|
+
'.py': 'python3',
|
|
134
|
+
'.go': 'go',
|
|
135
|
+
'.sh': 'bash',
|
|
136
|
+
'.ps1': 'powershell',
|
|
137
|
+
'.sql': 'postgresql',
|
|
138
|
+
'.gql': 'graphql',
|
|
139
|
+
'.php': 'php',
|
|
140
|
+
'.rs': 'rust',
|
|
141
|
+
'.yml': 'ansible',
|
|
142
|
+
'.cs': 'csharp',
|
|
143
|
+
'.nu': 'nu',
|
|
144
|
+
'.java': 'java',
|
|
145
|
+
'.rb': 'ruby'
|
|
146
|
+
};
|
|
147
|
+
/** Map main script language to allowed module file extensions. */
|
|
148
|
+
const LANG_MODULE_EXTENSIONS = {
|
|
149
|
+
python3: ['.py'],
|
|
150
|
+
bun: ['.ts'],
|
|
151
|
+
deno: ['.ts'],
|
|
152
|
+
nativets: ['.ts'],
|
|
153
|
+
go: ['.go'],
|
|
154
|
+
bash: ['.sh'],
|
|
155
|
+
powershell: ['.ps1'],
|
|
156
|
+
postgresql: ['.sql'],
|
|
157
|
+
mysql: ['.sql'],
|
|
158
|
+
bigquery: ['.sql'],
|
|
159
|
+
snowflake: ['.sql'],
|
|
160
|
+
mssql: ['.sql'],
|
|
161
|
+
oracledb: ['.sql'],
|
|
162
|
+
duckdb: ['.sql'],
|
|
163
|
+
graphql: ['.gql'],
|
|
164
|
+
php: ['.php'],
|
|
165
|
+
rust: ['.rs'],
|
|
166
|
+
ansible: ['.yml'],
|
|
167
|
+
csharp: ['.cs'],
|
|
168
|
+
nu: ['.nu'],
|
|
169
|
+
java: ['.java'],
|
|
170
|
+
ruby: ['.rb'],
|
|
171
|
+
bunnative: ['.ts']
|
|
172
|
+
};
|
|
173
|
+
let allowedModuleExtensions = $derived(lang
|
|
174
|
+
? (LANG_MODULE_EXTENSIONS[lang] ?? Object.keys(ALL_MODULE_EXTENSIONS))
|
|
175
|
+
: Object.keys(ALL_MODULE_EXTENSIONS));
|
|
176
|
+
function inferModuleLang(filePath) {
|
|
177
|
+
for (const [ext, moduleLang] of Object.entries(ALL_MODULE_EXTENSIONS)) {
|
|
178
|
+
if (filePath.endsWith(ext))
|
|
179
|
+
return moduleLang;
|
|
180
|
+
}
|
|
181
|
+
return undefined;
|
|
182
|
+
}
|
|
183
|
+
function getModuleDefaultContent(filePath) {
|
|
184
|
+
if (filePath.endsWith('.py')) {
|
|
185
|
+
return `def hello() -> str:\n return "world"\n`;
|
|
186
|
+
}
|
|
187
|
+
else if (filePath.endsWith('.ts')) {
|
|
188
|
+
return `export function hello(): string {\n return "world"\n}\n`;
|
|
189
|
+
}
|
|
190
|
+
else if (filePath.endsWith('.go')) {
|
|
191
|
+
return `package inner\n\nfunc Hello() string {\n\treturn "world"\n}\n`;
|
|
192
|
+
}
|
|
193
|
+
else if (filePath.endsWith('.sh')) {
|
|
194
|
+
return `#!/bin/bash\necho "world"\n`;
|
|
195
|
+
}
|
|
196
|
+
else if (filePath.endsWith('.ps1')) {
|
|
197
|
+
return `function Hello {\n return "world"\n}\n`;
|
|
198
|
+
}
|
|
199
|
+
else if (filePath.endsWith('.sql')) {
|
|
200
|
+
return `SELECT 'world' as result;\n`;
|
|
201
|
+
}
|
|
202
|
+
else if (filePath.endsWith('.gql')) {
|
|
203
|
+
return `query Hello {\n hello\n}\n`;
|
|
204
|
+
}
|
|
205
|
+
else if (filePath.endsWith('.php')) {
|
|
206
|
+
return `<?php\nfunction hello(): string {\n return "world";\n}\n`;
|
|
207
|
+
}
|
|
208
|
+
else if (filePath.endsWith('.rs')) {
|
|
209
|
+
return `pub fn hello() -> String {\n "world".to_string()\n}\n`;
|
|
210
|
+
}
|
|
211
|
+
else if (filePath.endsWith('.yml')) {
|
|
212
|
+
return `---\n- name: Hello\n debug:\n msg: "world"\n`;
|
|
213
|
+
}
|
|
214
|
+
else if (filePath.endsWith('.cs')) {
|
|
215
|
+
return `public static string Hello() {\n return "world";\n}\n`;
|
|
216
|
+
}
|
|
217
|
+
else if (filePath.endsWith('.nu')) {
|
|
218
|
+
return `def hello [] {\n "world"\n}\n`;
|
|
219
|
+
}
|
|
220
|
+
else if (filePath.endsWith('.java')) {
|
|
221
|
+
return `public class Helper {\n public static String hello() {\n return "world";\n }\n}\n`;
|
|
222
|
+
}
|
|
223
|
+
else if (filePath.endsWith('.rb')) {
|
|
224
|
+
return `def hello\n "world"\nend\n`;
|
|
225
|
+
}
|
|
226
|
+
return '';
|
|
227
|
+
}
|
|
228
|
+
function validateModulePath(path) {
|
|
229
|
+
if (!path.trim())
|
|
230
|
+
return '';
|
|
231
|
+
const moduleLang = inferModuleLang(path);
|
|
232
|
+
if (!moduleLang) {
|
|
233
|
+
const exts = allowedModuleExtensions.join(', ');
|
|
234
|
+
return `File must end with a supported extension: ${exts}`;
|
|
235
|
+
}
|
|
236
|
+
const matchedExt = allowedModuleExtensions.find((ext) => path.endsWith(ext));
|
|
237
|
+
if (!matchedExt) {
|
|
238
|
+
const exts = allowedModuleExtensions.join(', ');
|
|
239
|
+
return `File must end with a supported extension for this language: ${exts}`;
|
|
240
|
+
}
|
|
241
|
+
if (modules?.[path.trim()]) {
|
|
242
|
+
return `Module ${path.trim()} already exists`;
|
|
243
|
+
}
|
|
244
|
+
return '';
|
|
245
|
+
}
|
|
246
|
+
function addModule() {
|
|
247
|
+
const modulePath = modulePathInput.trim();
|
|
248
|
+
if (!modulePath)
|
|
249
|
+
return;
|
|
250
|
+
const error = validateModulePath(modulePath);
|
|
251
|
+
if (error) {
|
|
252
|
+
modulePathError = error;
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
if (!modules) {
|
|
256
|
+
modules = {};
|
|
257
|
+
}
|
|
258
|
+
modules[modulePath] = {
|
|
259
|
+
content: getModuleDefaultContent(modulePath),
|
|
260
|
+
language: inferModuleLang(modulePath)
|
|
261
|
+
};
|
|
262
|
+
modulePathInput = '';
|
|
263
|
+
modulePathError = '';
|
|
264
|
+
showAddModulePopover = false;
|
|
265
|
+
switchToModule(modulePath);
|
|
266
|
+
}
|
|
267
|
+
function removeModule(modulePath) {
|
|
268
|
+
if (!modules)
|
|
269
|
+
return;
|
|
270
|
+
if (activeModuleTab === modulePath) {
|
|
271
|
+
switchToMain();
|
|
272
|
+
}
|
|
273
|
+
delete modules[modulePath];
|
|
274
|
+
delete moduleTestState[modulePath];
|
|
275
|
+
modules = { ...modules };
|
|
276
|
+
}
|
|
277
|
+
function validateRenameModulePath(newPath, oldPath) {
|
|
278
|
+
if (!newPath.trim())
|
|
279
|
+
return '';
|
|
280
|
+
const moduleLang = inferModuleLang(newPath);
|
|
281
|
+
if (!moduleLang) {
|
|
282
|
+
const exts = allowedModuleExtensions.join(', ');
|
|
283
|
+
return `File must end with a supported extension: ${exts}`;
|
|
284
|
+
}
|
|
285
|
+
const matchedExt = allowedModuleExtensions.find((ext) => newPath.endsWith(ext));
|
|
286
|
+
if (!matchedExt) {
|
|
287
|
+
const exts = allowedModuleExtensions.join(', ');
|
|
288
|
+
return `File must end with a supported extension for this language: ${exts}`;
|
|
289
|
+
}
|
|
290
|
+
if (newPath.trim() !== oldPath && modules?.[newPath.trim()]) {
|
|
291
|
+
return `Module ${newPath.trim()} already exists`;
|
|
292
|
+
}
|
|
293
|
+
return '';
|
|
294
|
+
}
|
|
295
|
+
function renameModule(oldPath) {
|
|
296
|
+
const newPath = renameModuleInput.trim();
|
|
297
|
+
if (!newPath || newPath === oldPath) {
|
|
298
|
+
return;
|
|
299
|
+
}
|
|
300
|
+
const error = validateRenameModulePath(newPath, oldPath);
|
|
301
|
+
if (error) {
|
|
302
|
+
renameModuleError = error;
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
if (!modules)
|
|
306
|
+
return;
|
|
307
|
+
const mod = modules[oldPath];
|
|
308
|
+
const newLang = inferModuleLang(newPath);
|
|
309
|
+
delete modules[oldPath];
|
|
310
|
+
modules[newPath] = { ...mod, language: newLang ?? mod.language };
|
|
311
|
+
modules = { ...modules };
|
|
312
|
+
if (moduleTestState[oldPath]) {
|
|
313
|
+
moduleTestState[newPath] = moduleTestState[oldPath];
|
|
314
|
+
delete moduleTestState[oldPath];
|
|
315
|
+
}
|
|
316
|
+
if (activeModuleTab === oldPath) {
|
|
317
|
+
activeModuleTab = newPath;
|
|
318
|
+
}
|
|
319
|
+
renameModuleInput = '';
|
|
320
|
+
renameModuleError = '';
|
|
321
|
+
}
|
|
322
|
+
/** Save the active module tab's editor content back into the modules map (no UI side-effects). */
|
|
323
|
+
function flushModuleContent() {
|
|
324
|
+
if (activeModuleTab !== null && modules) {
|
|
325
|
+
modules[activeModuleTab] = { ...modules[activeModuleTab], content: editorCode };
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
/** Flush module content and reset the editor back to the main script tab. */
|
|
329
|
+
export function flushModuleState() {
|
|
330
|
+
if (activeModuleTab !== null && modules) {
|
|
331
|
+
flushModuleContent();
|
|
332
|
+
moduleTestState[activeModuleTab] = { args: testPanelArgs, schema: testPanelSchema };
|
|
333
|
+
activeModuleTab = null;
|
|
334
|
+
editorCode = code;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
58
337
|
$effect.pre(() => {
|
|
59
338
|
if (schema == undefined) {
|
|
60
339
|
schema = emptySchema();
|
|
@@ -188,12 +467,23 @@ export function setArgs(nargs) {
|
|
|
188
467
|
args = nargs;
|
|
189
468
|
}
|
|
190
469
|
export async function runTest() {
|
|
470
|
+
// Discard any previous recording when running a normal test
|
|
471
|
+
if (!scriptRecording.active) {
|
|
472
|
+
lastRecording = undefined;
|
|
473
|
+
}
|
|
191
474
|
// Not defined if JobProgressBar not loaded
|
|
192
475
|
jobProgressBar?.reset();
|
|
476
|
+
// Flush module edits back to modules map before running preview
|
|
477
|
+
flushModuleContent();
|
|
478
|
+
const testCode = activeModuleTab !== null ? editorCode : code;
|
|
479
|
+
const testLang = activeModuleTab !== null ? effectiveLang : lang;
|
|
480
|
+
const testArgs = activeModuleTab !== null
|
|
481
|
+
? testPanelArgs
|
|
482
|
+
: selectedTab === 'preprocessor' || kind === 'preprocessor'
|
|
483
|
+
? { _ENTRYPOINT_OVERRIDE: 'preprocessor', ...(args ?? {}) }
|
|
484
|
+
: (args ?? {});
|
|
193
485
|
//@ts-ignore
|
|
194
|
-
let job = await jobLoader.runPreview(path,
|
|
195
|
-
? { _ENTRYPOINT_OVERRIDE: 'preprocessor', ...(args ?? {}) }
|
|
196
|
-
: (args ?? {}), tag, undefined, undefined, {
|
|
486
|
+
let job = await jobLoader.runPreview(path, testCode, testLang, testArgs, tag, undefined, undefined, {
|
|
197
487
|
done(_x) {
|
|
198
488
|
if (scriptRecording.active) {
|
|
199
489
|
lastRecording = scriptRecording.stop();
|
|
@@ -208,7 +498,7 @@ export async function runTest() {
|
|
|
208
498
|
}
|
|
209
499
|
console.error(error);
|
|
210
500
|
}
|
|
211
|
-
});
|
|
501
|
+
}, undefined, activeModuleTab !== null ? undefined : modules);
|
|
212
502
|
logPanel?.setFocusToLogs();
|
|
213
503
|
return job;
|
|
214
504
|
}
|
|
@@ -241,8 +531,7 @@ export async function inferSchema(code, { nlang, resetArgs = false, applyInitial
|
|
|
241
531
|
}
|
|
242
532
|
else {
|
|
243
533
|
hasPreprocessor =
|
|
244
|
-
(selectedTab === 'preprocessor' ? !result?.
|
|
245
|
-
false;
|
|
534
|
+
(selectedTab === 'preprocessor' ? !result?.auto_kind : result?.has_preprocessor) ?? false;
|
|
246
535
|
if (!hasPreprocessor && selectedTab === 'preprocessor') {
|
|
247
536
|
selectedTab = 'main';
|
|
248
537
|
}
|
|
@@ -261,6 +550,17 @@ export async function inferSchema(code, { nlang, resetArgs = false, applyInitial
|
|
|
261
550
|
validCode = false;
|
|
262
551
|
}
|
|
263
552
|
}
|
|
553
|
+
async function inferModuleSchema() {
|
|
554
|
+
if (activeModuleTab === null)
|
|
555
|
+
return;
|
|
556
|
+
try {
|
|
557
|
+
await inferArgs(effectiveLang, editorCode, testPanelSchema);
|
|
558
|
+
moduleTestState[activeModuleTab] = { args: testPanelArgs, schema: testPanelSchema };
|
|
559
|
+
}
|
|
560
|
+
catch (e) {
|
|
561
|
+
// Module code may be in-progress; silently ignore
|
|
562
|
+
}
|
|
563
|
+
}
|
|
264
564
|
let gitRepoResourcePickerOpen = $state(false);
|
|
265
565
|
let commitHashForGitRepo = $derived(ansibleAlternativeExecutionMode?.commit);
|
|
266
566
|
// Check if delegate_to_git_repo exists in the code
|
|
@@ -587,13 +887,21 @@ export async function setCollaborationMode() {
|
|
|
587
887
|
]);
|
|
588
888
|
return;
|
|
589
889
|
}
|
|
890
|
+
let token;
|
|
891
|
+
try {
|
|
892
|
+
token = await signMultiplayerRequest($workspaceStore ?? '');
|
|
893
|
+
}
|
|
894
|
+
catch (e) {
|
|
895
|
+
console.error('Failed to sign multiplayer request:', e);
|
|
896
|
+
sendUserToast('Failed to authorize multiplayer session', true);
|
|
897
|
+
return;
|
|
898
|
+
}
|
|
590
899
|
const ydoc = new Y.Doc();
|
|
591
900
|
if (wsProvider) {
|
|
592
901
|
wsProvider.destroy();
|
|
593
902
|
}
|
|
594
903
|
let yContentInit = ydoc.getText('content');
|
|
595
|
-
|
|
596
|
-
wsProvider = new WebsocketProvider(`${wsProtocol}://${window.location.host}/ws_mp/`, $workspaceStore + '/' + (path ?? 'no-room-name'), ydoc, { connect: false });
|
|
904
|
+
wsProvider = new WebsocketProvider(buildWsUrl('/ws_mp/'), $workspaceStore + '/' + (path ?? 'no-room-name'), ydoc, { connect: false, params: { token } });
|
|
597
905
|
wsProvider.on('sync', (isSynced) => {
|
|
598
906
|
if (isSynced && yContentInit?.toJSON() == '') {
|
|
599
907
|
showCollabPopup = true;
|
|
@@ -655,7 +963,11 @@ $effect(() => {
|
|
|
655
963
|
!hasPreprocessor && (selectedTab = 'main');
|
|
656
964
|
});
|
|
657
965
|
$effect(() => {
|
|
658
|
-
|
|
966
|
+
// Only depend on selectedTab (preprocessor ↔ main toggle).
|
|
967
|
+
// Code changes are handled by the editor on:change handler and
|
|
968
|
+
// explicit inferSchema calls (initContent, onMount), so we read
|
|
969
|
+
// `code` inside untrack to avoid a redundant double-inference race.
|
|
970
|
+
selectedTab && untrack(() => code && inferSchema(code));
|
|
659
971
|
});
|
|
660
972
|
let argsRender = $state(0);
|
|
661
973
|
export async function updateArgs(newArgs) {
|
|
@@ -967,16 +1279,7 @@ $effect(() => {
|
|
|
967
1279
|
displayName: 'Test & record',
|
|
968
1280
|
icon: Disc,
|
|
969
1281
|
action: () => recordAndTest()
|
|
970
|
-
}
|
|
971
|
-
...(lastRecording
|
|
972
|
-
? [
|
|
973
|
-
{
|
|
974
|
-
displayName: 'Download recording',
|
|
975
|
-
icon: Download,
|
|
976
|
-
action: () => downloadRecording()
|
|
977
|
-
}
|
|
978
|
-
]
|
|
979
|
-
: [])
|
|
1282
|
+
}
|
|
980
1283
|
]}
|
|
981
1284
|
/>
|
|
982
1285
|
</div>
|
|
@@ -995,7 +1298,11 @@ $effect(() => {
|
|
|
995
1298
|
<JsonInputs
|
|
996
1299
|
on:select={(e) => {
|
|
997
1300
|
if (e.detail) {
|
|
998
|
-
|
|
1301
|
+
if (activeModuleTab !== null) {
|
|
1302
|
+
testPanelArgs = e.detail
|
|
1303
|
+
} else {
|
|
1304
|
+
args = e.detail
|
|
1305
|
+
}
|
|
999
1306
|
}
|
|
1000
1307
|
}}
|
|
1001
1308
|
updateOnBlur={false}
|
|
@@ -1006,20 +1313,37 @@ $effect(() => {
|
|
|
1006
1313
|
<div class="px-4">
|
|
1007
1314
|
<div class="break-words relative font-sans" bind:clientHeight={schemaHeight}>
|
|
1008
1315
|
{#key argsRender}
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1316
|
+
{#if activeModuleTab !== null}
|
|
1317
|
+
<SchemaForm
|
|
1318
|
+
helperScript={{
|
|
1319
|
+
source: 'inline',
|
|
1320
|
+
code: editorCode,
|
|
1321
|
+
//@ts-ignore
|
|
1322
|
+
lang: effectiveLang
|
|
1323
|
+
}}
|
|
1324
|
+
compact
|
|
1325
|
+
schema={testPanelSchema}
|
|
1326
|
+
bind:args={testPanelArgs}
|
|
1327
|
+
bind:isValid
|
|
1328
|
+
noVariablePicker={customUi?.previewPanel?.disableVariablePicker === true}
|
|
1329
|
+
showSchemaExplorer
|
|
1330
|
+
/>
|
|
1331
|
+
{:else}
|
|
1332
|
+
<SchemaForm
|
|
1333
|
+
helperScript={{
|
|
1334
|
+
source: 'inline',
|
|
1335
|
+
code,
|
|
1336
|
+
//@ts-ignore
|
|
1337
|
+
lang
|
|
1338
|
+
}}
|
|
1339
|
+
compact
|
|
1340
|
+
{schema}
|
|
1341
|
+
bind:args
|
|
1342
|
+
bind:isValid
|
|
1343
|
+
noVariablePicker={customUi?.previewPanel?.disableVariablePicker === true}
|
|
1344
|
+
showSchemaExplorer
|
|
1345
|
+
/>
|
|
1346
|
+
{/if}
|
|
1023
1347
|
{/key}
|
|
1024
1348
|
</div>
|
|
1025
1349
|
</div>
|
|
@@ -1044,7 +1368,7 @@ $effect(() => {
|
|
|
1044
1368
|
: testIsLoading}
|
|
1045
1369
|
{editor}
|
|
1046
1370
|
{diffEditor}
|
|
1047
|
-
{args}
|
|
1371
|
+
args={activeModuleTab !== null ? testPanelArgs : args}
|
|
1048
1372
|
{showCaptures}
|
|
1049
1373
|
customUi={customUi?.previewPanel}
|
|
1050
1374
|
showCustomResultPanel={showDebugPanel}
|
|
@@ -1090,140 +1414,334 @@ $effect(() => {
|
|
|
1090
1414
|
</Splitpanes>
|
|
1091
1415
|
</SplitPanesWrapper>
|
|
1092
1416
|
|
|
1417
|
+
{#snippet addModuleForm(close: () => void)}
|
|
1418
|
+
<div class="flex flex-col gap-2">
|
|
1419
|
+
<label for="module-name-input" class="text-xs font-semibold text-emphasis">File name</label>
|
|
1420
|
+
<input
|
|
1421
|
+
id="module-name-input"
|
|
1422
|
+
type="text"
|
|
1423
|
+
class="border rounded px-2 py-1.5 text-sm bg-surface"
|
|
1424
|
+
bind:this={modulePathInputEl}
|
|
1425
|
+
bind:value={modulePathInput}
|
|
1426
|
+
placeholder={'helper' + (allowedModuleExtensions[0] ?? '.ts')}
|
|
1427
|
+
oninput={() => {
|
|
1428
|
+
modulePathError = validateModulePath(modulePathInput)
|
|
1429
|
+
}}
|
|
1430
|
+
onkeydown={(e) => {
|
|
1431
|
+
if (e.key === 'Enter') addModule()
|
|
1432
|
+
if (e.key === 'Escape') close()
|
|
1433
|
+
}}
|
|
1434
|
+
/>
|
|
1435
|
+
{#if modulePathError}
|
|
1436
|
+
<p class="text-red-500 text-2xs">{modulePathError}</p>
|
|
1437
|
+
{/if}
|
|
1438
|
+
<p class="text-tertiary text-2xs"
|
|
1439
|
+
>Supports subfolders, e.g. <code class="text-2xs"
|
|
1440
|
+
>utils/math{allowedModuleExtensions[0] ?? '.ts'}</code
|
|
1441
|
+
></p
|
|
1442
|
+
>
|
|
1443
|
+
<div class="flex justify-end gap-2">
|
|
1444
|
+
<Button
|
|
1445
|
+
variant="default"
|
|
1446
|
+
size="xs"
|
|
1447
|
+
onclick={() => {
|
|
1448
|
+
modulePathInput = ''
|
|
1449
|
+
modulePathError = ''
|
|
1450
|
+
close()
|
|
1451
|
+
}}>Cancel</Button
|
|
1452
|
+
>
|
|
1453
|
+
<Button
|
|
1454
|
+
variant="accent"
|
|
1455
|
+
size="xs"
|
|
1456
|
+
onclick={addModule}
|
|
1457
|
+
disabled={!modulePathInput.trim() || !!modulePathError}>Add</Button
|
|
1458
|
+
>
|
|
1459
|
+
</div>
|
|
1460
|
+
</div>
|
|
1461
|
+
{/snippet}
|
|
1462
|
+
|
|
1463
|
+
{#snippet renameModuleForm(oldPath: string, close: () => void)}
|
|
1464
|
+
<div class="flex flex-col gap-2">
|
|
1465
|
+
<label for="rename-module-input" class="text-xs font-semibold text-emphasis"
|
|
1466
|
+
>Rename module</label
|
|
1467
|
+
>
|
|
1468
|
+
<input
|
|
1469
|
+
id="rename-module-input"
|
|
1470
|
+
type="text"
|
|
1471
|
+
class="border rounded px-2 py-1.5 text-sm bg-surface"
|
|
1472
|
+
bind:this={renameModuleInputEl}
|
|
1473
|
+
bind:value={renameModuleInput}
|
|
1474
|
+
oninput={() => {
|
|
1475
|
+
renameModuleError = validateRenameModulePath(renameModuleInput, oldPath)
|
|
1476
|
+
}}
|
|
1477
|
+
onkeydown={(e) => {
|
|
1478
|
+
if (e.key === 'Enter') {
|
|
1479
|
+
renameModule(oldPath)
|
|
1480
|
+
close()
|
|
1481
|
+
}
|
|
1482
|
+
if (e.key === 'Escape') close()
|
|
1483
|
+
}}
|
|
1484
|
+
/>
|
|
1485
|
+
{#if renameModuleError}
|
|
1486
|
+
<p class="text-red-500 text-2xs">{renameModuleError}</p>
|
|
1487
|
+
{/if}
|
|
1488
|
+
<div class="flex justify-end gap-2">
|
|
1489
|
+
<Button
|
|
1490
|
+
variant="default"
|
|
1491
|
+
size="xs"
|
|
1492
|
+
onclick={() => {
|
|
1493
|
+
renameModuleInput = ''
|
|
1494
|
+
renameModuleError = ''
|
|
1495
|
+
close()
|
|
1496
|
+
}}>Cancel</Button
|
|
1497
|
+
>
|
|
1498
|
+
<Button
|
|
1499
|
+
variant="accent"
|
|
1500
|
+
size="xs"
|
|
1501
|
+
onclick={() => {
|
|
1502
|
+
renameModule(oldPath)
|
|
1503
|
+
close()
|
|
1504
|
+
}}
|
|
1505
|
+
disabled={!renameModuleInput.trim() ||
|
|
1506
|
+
renameModuleInput.trim() === oldPath ||
|
|
1507
|
+
!!renameModuleError}>Rename</Button
|
|
1508
|
+
>
|
|
1509
|
+
</div>
|
|
1510
|
+
</div>
|
|
1511
|
+
{/snippet}
|
|
1512
|
+
|
|
1093
1513
|
{#snippet editorContent()}
|
|
1094
|
-
<div class="h-full !overflow-visible bg-surface dark:bg-[#272D38] relative">
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
onclick={
|
|
1104
|
-
startIcon={{ icon: Bug }}
|
|
1105
|
-
btnClasses={debugMode
|
|
1106
|
-
? ''
|
|
1107
|
-
: 'bg-surface hover:bg-surface-hover border border-tertiary/30'}
|
|
1108
|
-
title="Toggle Debug Mode"
|
|
1109
|
-
>
|
|
1110
|
-
{debugMode ? 'Exit Debug' : 'Debug'}
|
|
1111
|
-
</Button>
|
|
1112
|
-
{/if}
|
|
1113
|
-
{#if showDebugPanel && !showDebugConsole}
|
|
1114
|
-
<Button
|
|
1115
|
-
variant="default"
|
|
1116
|
-
size="xs"
|
|
1117
|
-
onclick={() => (showDebugConsole = true)}
|
|
1118
|
-
startIcon={{ icon: Terminal }}
|
|
1119
|
-
btnClasses="bg-surface hover:bg-surface-hover border border-tertiary/30"
|
|
1120
|
-
title="Show Debug Console"
|
|
1514
|
+
<div class="h-full !overflow-visible bg-surface dark:bg-[#272D38] relative flex flex-col">
|
|
1515
|
+
{#if supportsModules}
|
|
1516
|
+
<div
|
|
1517
|
+
class="flex items-center border-b border-tertiary/30 bg-surface-secondary px-1 gap-0.5 text-xs overflow-x-auto shrink-0"
|
|
1518
|
+
>
|
|
1519
|
+
<button
|
|
1520
|
+
class="px-2 py-1 rounded-t {activeModuleTab === null
|
|
1521
|
+
? 'bg-surface font-semibold border-b-2 border-blue-500'
|
|
1522
|
+
: 'hover:bg-surface-hover'}"
|
|
1523
|
+
onclick={() => switchToMain()}
|
|
1121
1524
|
>
|
|
1122
|
-
|
|
1123
|
-
</
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1525
|
+
{mainFileName}
|
|
1526
|
+
</button>
|
|
1527
|
+
{#each Object.keys(modules ?? {}) as modulePath}
|
|
1528
|
+
<div
|
|
1529
|
+
class="group rounded-t flex items-center {activeModuleTab === modulePath
|
|
1530
|
+
? 'bg-surface font-semibold border-b-2 border-blue-500'
|
|
1531
|
+
: 'hover:bg-surface-hover'}"
|
|
1532
|
+
>
|
|
1533
|
+
<button class="pl-2 py-1 flex items-center" onclick={() => switchToModule(modulePath)}>
|
|
1534
|
+
{modulePath}
|
|
1535
|
+
</button>
|
|
1536
|
+
<div class="flex items-center pr-1 w-[32px] justify-end">
|
|
1537
|
+
<Popover
|
|
1538
|
+
placement="bottom-start"
|
|
1539
|
+
openFocus={renameModuleInputEl}
|
|
1540
|
+
contentClasses="p-3 w-72"
|
|
1541
|
+
>
|
|
1542
|
+
{#snippet trigger()}
|
|
1543
|
+
<span
|
|
1544
|
+
class="opacity-0 group-hover:opacity-100 hover:text-blue-500 transition-opacity"
|
|
1545
|
+
role="button"
|
|
1546
|
+
tabindex="0"
|
|
1547
|
+
onclick={(e) => {
|
|
1548
|
+
e.stopPropagation()
|
|
1549
|
+
renameModuleInput = modulePath
|
|
1550
|
+
renameModuleError = ''
|
|
1551
|
+
}}
|
|
1552
|
+
onkeydown={(e) => {
|
|
1553
|
+
if (e.key === 'Enter') {
|
|
1554
|
+
e.stopPropagation()
|
|
1555
|
+
renameModuleInput = modulePath
|
|
1556
|
+
renameModuleError = ''
|
|
1557
|
+
}
|
|
1558
|
+
}}
|
|
1559
|
+
>
|
|
1560
|
+
<Pencil size={12} />
|
|
1561
|
+
</span>
|
|
1562
|
+
{/snippet}
|
|
1563
|
+
{#snippet content({ close })}
|
|
1564
|
+
{@render renameModuleForm(modulePath, close)}
|
|
1565
|
+
{/snippet}
|
|
1566
|
+
</Popover>
|
|
1567
|
+
<span
|
|
1568
|
+
class="opacity-0 group-hover:opacity-100 hover:text-red-500 transition-opacity"
|
|
1569
|
+
role="button"
|
|
1570
|
+
tabindex="0"
|
|
1571
|
+
onclick={(e) => {
|
|
1572
|
+
e.stopPropagation()
|
|
1573
|
+
removeModule(modulePath)
|
|
1574
|
+
}}
|
|
1575
|
+
onkeydown={(e) => {
|
|
1576
|
+
if (e.key === 'Enter') {
|
|
1577
|
+
e.stopPropagation()
|
|
1578
|
+
removeModule(modulePath)
|
|
1579
|
+
}
|
|
1580
|
+
}}
|
|
1581
|
+
>
|
|
1582
|
+
<X size={12} />
|
|
1583
|
+
</span>
|
|
1584
|
+
</div>
|
|
1585
|
+
</div>
|
|
1586
|
+
{/each}
|
|
1587
|
+
<Popover
|
|
1588
|
+
placement="bottom-start"
|
|
1589
|
+
bind:isOpen={showAddModulePopover}
|
|
1590
|
+
openFocus={modulePathInputEl}
|
|
1591
|
+
contentClasses="p-3 w-72"
|
|
1132
1592
|
>
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1593
|
+
{#snippet trigger()}
|
|
1594
|
+
<span class="px-2 py-1 rounded-t hover:bg-surface-hover inline-flex items-center">
|
|
1595
|
+
<Plus size={12} />
|
|
1596
|
+
</span>
|
|
1597
|
+
{/snippet}
|
|
1598
|
+
{#snippet content({ close })}
|
|
1599
|
+
{@render addModuleForm(close)}
|
|
1600
|
+
{/snippet}
|
|
1601
|
+
</Popover>
|
|
1602
|
+
</div>
|
|
1603
|
+
{/if}
|
|
1604
|
+
<div class="relative flex-1 !overflow-visible">
|
|
1605
|
+
<div class="absolute top-2 right-4 z-10 flex flex-row gap-2">
|
|
1606
|
+
{#if assets?.length}
|
|
1607
|
+
<AssetsDropdownButton {assets} />
|
|
1608
|
+
{/if}
|
|
1609
|
+
{#if isDebuggableScript && customUi?.editorBar?.debug != false}
|
|
1610
|
+
<Button
|
|
1611
|
+
variant={debugMode ? 'accent' : 'default'}
|
|
1612
|
+
size="xs"
|
|
1613
|
+
onclick={toggleDebugMode}
|
|
1614
|
+
startIcon={{ icon: Bug }}
|
|
1615
|
+
btnClasses={debugMode
|
|
1616
|
+
? ''
|
|
1617
|
+
: 'bg-surface hover:bg-surface-hover border border-tertiary/30'}
|
|
1618
|
+
title="Toggle Debug Mode"
|
|
1619
|
+
>
|
|
1620
|
+
{debugMode ? 'Exit Debug' : 'Debug'}
|
|
1621
|
+
</Button>
|
|
1622
|
+
{/if}
|
|
1623
|
+
{#if showDebugPanel && !showDebugConsole}
|
|
1624
|
+
<Button
|
|
1625
|
+
variant="default"
|
|
1626
|
+
size="xs"
|
|
1627
|
+
onclick={() => (showDebugConsole = true)}
|
|
1628
|
+
startIcon={{ icon: Terminal }}
|
|
1629
|
+
btnClasses="bg-surface hover:bg-surface-hover border border-tertiary/30"
|
|
1630
|
+
title="Show Debug Console"
|
|
1631
|
+
>
|
|
1632
|
+
Console
|
|
1633
|
+
</Button>
|
|
1634
|
+
{/if}
|
|
1635
|
+
{#if lang === 'ansible' && hasDelegateToGitRepo}
|
|
1636
|
+
<Button
|
|
1637
|
+
variant="default"
|
|
1638
|
+
size="xs"
|
|
1639
|
+
onclick={() => (gitRepoResourcePickerOpen = true)}
|
|
1640
|
+
startIcon={{ icon: GitBranch }}
|
|
1641
|
+
btnClasses="bg-surface hover:bg-surface-hover border border-tertiary/30"
|
|
1642
|
+
>
|
|
1643
|
+
Delegating to git repo
|
|
1644
|
+
</Button>
|
|
1645
|
+
{/if}
|
|
1646
|
+
{#if testPanelSize === 0}
|
|
1155
1647
|
<HideButton
|
|
1156
1648
|
hidden={true}
|
|
1157
1649
|
direction="right"
|
|
1158
|
-
panelName="AI"
|
|
1159
|
-
shortcut="L"
|
|
1160
1650
|
size="md"
|
|
1161
|
-
|
|
1651
|
+
panelName="Test"
|
|
1652
|
+
shortcut="U"
|
|
1162
1653
|
customHiddenIcon={{
|
|
1163
|
-
icon:
|
|
1654
|
+
icon: PlayIcon
|
|
1164
1655
|
}}
|
|
1165
|
-
btnClasses="!text-ai border border-gray-200 dark:border-gray-600 bg-surface"
|
|
1166
1656
|
on:click={() => {
|
|
1167
|
-
|
|
1168
|
-
aiChatManager.changeMode(AIMode.SCRIPT)
|
|
1169
|
-
}
|
|
1170
|
-
aiChatManager.toggleOpen()
|
|
1657
|
+
toggleTestPanel()
|
|
1171
1658
|
}}
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
Enable Windmill AI in the <a
|
|
1176
|
-
href="{base}/workspace_settings?tab=ai"
|
|
1177
|
-
target="_blank"
|
|
1178
|
-
class="inline-flex flex-row items-center gap-1"
|
|
1179
|
-
>
|
|
1180
|
-
workspace settings <ExternalLink size={16} />
|
|
1181
|
-
</a>
|
|
1182
|
-
</div>
|
|
1183
|
-
{/snippet}
|
|
1184
|
-
</HideButton>
|
|
1659
|
+
btnClasses="bg-marine-400 hover:bg-marine-200 !text-primary-inverse hover:!text-primary-inverse hover:dark:!text-primary-inverse dark:bg-marine-50 dark:hover:bg-marine-50/70"
|
|
1660
|
+
color="marine"
|
|
1661
|
+
/>
|
|
1185
1662
|
{/if}
|
|
1186
|
-
|
|
1187
|
-
|
|
1663
|
+
{#if !aiChatManager.open && !disableAi}
|
|
1664
|
+
{#if customUi?.editorBar?.aiGen != false && SUPPORTED_CHAT_SCRIPT_LANGUAGES.includes(lang ?? '')}
|
|
1665
|
+
<HideButton
|
|
1666
|
+
hidden={true}
|
|
1667
|
+
direction="right"
|
|
1668
|
+
panelName="AI"
|
|
1669
|
+
shortcut="L"
|
|
1670
|
+
size="md"
|
|
1671
|
+
usePopoverOverride={!$copilotInfo.enabled}
|
|
1672
|
+
customHiddenIcon={{
|
|
1673
|
+
icon: WandSparkles
|
|
1674
|
+
}}
|
|
1675
|
+
btnClasses="!text-ai border border-gray-200 dark:border-gray-600 bg-surface"
|
|
1676
|
+
on:click={() => {
|
|
1677
|
+
if (!aiChatManager.open) {
|
|
1678
|
+
aiChatManager.changeMode(AIMode.SCRIPT)
|
|
1679
|
+
}
|
|
1680
|
+
aiChatManager.toggleOpen()
|
|
1681
|
+
}}
|
|
1682
|
+
>
|
|
1683
|
+
{#snippet popoverOverride()}
|
|
1684
|
+
<div class="text-sm">
|
|
1685
|
+
Enable Windmill AI in the <a
|
|
1686
|
+
href="{base}/workspace_settings?tab=ai"
|
|
1687
|
+
target="_blank"
|
|
1688
|
+
class="inline-flex flex-row items-center gap-1"
|
|
1689
|
+
>
|
|
1690
|
+
workspace settings <ExternalLink size={16} />
|
|
1691
|
+
</a>
|
|
1692
|
+
</div>
|
|
1693
|
+
{/snippet}
|
|
1694
|
+
</HideButton>
|
|
1695
|
+
{/if}
|
|
1696
|
+
{/if}
|
|
1697
|
+
</div>
|
|
1188
1698
|
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1699
|
+
{#if debugConsoleVisible}
|
|
1700
|
+
<!-- Use Splitpanes when debug console is visible for resizing -->
|
|
1701
|
+
<Splitpanes horizontal class="h-full !overflow-visible">
|
|
1702
|
+
<Pane bind:size={editorPaneSize} minSize={20} class="!overflow-visible">
|
|
1703
|
+
{@render editorPane()}
|
|
1704
|
+
</Pane>
|
|
1705
|
+
<Pane bind:size={consolePaneSize} minSize={10}>
|
|
1706
|
+
<DebugConsole
|
|
1707
|
+
client={dapClient}
|
|
1708
|
+
currentFrameId={currentDebugFrameId}
|
|
1709
|
+
onClose={() => (showDebugConsole = false)}
|
|
1710
|
+
workspace={$workspaceStore}
|
|
1711
|
+
jobId={debugSessionJobId ?? undefined}
|
|
1712
|
+
/>
|
|
1713
|
+
</Pane>
|
|
1714
|
+
</Splitpanes>
|
|
1715
|
+
{:else}
|
|
1716
|
+
<!-- Normal editor without console -->
|
|
1717
|
+
<div class="h-full !overflow-visible">
|
|
1193
1718
|
{@render editorPane()}
|
|
1194
|
-
</
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
client={dapClient}
|
|
1198
|
-
currentFrameId={currentDebugFrameId}
|
|
1199
|
-
onClose={() => (showDebugConsole = false)}
|
|
1200
|
-
workspace={$workspaceStore}
|
|
1201
|
-
jobId={debugSessionJobId ?? undefined}
|
|
1202
|
-
/>
|
|
1203
|
-
</Pane>
|
|
1204
|
-
</Splitpanes>
|
|
1205
|
-
{:else}
|
|
1206
|
-
<!-- Normal editor without console -->
|
|
1207
|
-
<div class="h-full !overflow-visible">
|
|
1208
|
-
{@render editorPane()}
|
|
1209
|
-
</div>
|
|
1210
|
-
{/if}
|
|
1719
|
+
</div>
|
|
1720
|
+
{/if}
|
|
1721
|
+
</div>
|
|
1211
1722
|
</div>
|
|
1212
1723
|
{/snippet}
|
|
1213
1724
|
|
|
1214
1725
|
{#snippet editorPane()}
|
|
1215
|
-
{#key
|
|
1726
|
+
{#key effectiveLang}
|
|
1216
1727
|
<Editor
|
|
1217
1728
|
lineNumbersMinChars={4}
|
|
1218
1729
|
folding
|
|
1219
1730
|
{path}
|
|
1220
|
-
bind:code
|
|
1731
|
+
bind:code={editorCode}
|
|
1221
1732
|
bind:websocketAlive
|
|
1222
1733
|
bind:this={editor}
|
|
1223
1734
|
{yContent}
|
|
1224
1735
|
awareness={wsProvider?.awareness}
|
|
1225
1736
|
on:change={(e) => {
|
|
1226
|
-
|
|
1737
|
+
if (activeModuleTab === null) {
|
|
1738
|
+
code = editorCode
|
|
1739
|
+
lastSyncedCode = code
|
|
1740
|
+
inferSchema(e.detail)
|
|
1741
|
+
} else {
|
|
1742
|
+
flushModuleContent()
|
|
1743
|
+
inferModuleSchema()
|
|
1744
|
+
}
|
|
1227
1745
|
// Refresh breakpoint positions when code changes (decorations track their lines)
|
|
1228
1746
|
if (debugMode && breakpointDecorations.length > 0) {
|
|
1229
1747
|
refreshBreakpointPositions()
|
|
@@ -1232,20 +1750,26 @@ $effect(() => {
|
|
|
1232
1750
|
on:saveDraft
|
|
1233
1751
|
on:toggleTestPanel={toggleTestPanel}
|
|
1234
1752
|
cmdEnterAction={async () => {
|
|
1235
|
-
|
|
1753
|
+
if (activeModuleTab === null) {
|
|
1754
|
+
await inferSchema(editorCode)
|
|
1755
|
+
} else {
|
|
1756
|
+
await inferModuleSchema()
|
|
1757
|
+
}
|
|
1236
1758
|
runTest()
|
|
1237
1759
|
}}
|
|
1238
1760
|
formatAction={async () => {
|
|
1239
|
-
|
|
1761
|
+
if (activeModuleTab === null) {
|
|
1762
|
+
await inferSchema(editorCode)
|
|
1763
|
+
}
|
|
1240
1764
|
try {
|
|
1241
|
-
localStorage.setItem(path ?? 'last_save', code)
|
|
1765
|
+
localStorage.setItem(path ?? 'last_save', activeModuleTab === null ? editorCode : code)
|
|
1242
1766
|
} catch (e) {
|
|
1243
1767
|
console.error('Could not save last_save to local storage', e)
|
|
1244
1768
|
}
|
|
1245
1769
|
dispatch('format')
|
|
1246
1770
|
}}
|
|
1247
1771
|
class="flex flex-1 h-full !overflow-visible"
|
|
1248
|
-
scriptLang={
|
|
1772
|
+
scriptLang={effectiveLang}
|
|
1249
1773
|
automaticLayout={true}
|
|
1250
1774
|
{fixedOverflowWidgets}
|
|
1251
1775
|
{args}
|