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
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { assetDisplaysAsInputInFlowGraph, assetDisplaysAsOutputInFlowGraph, NODE_WITH_READ_ASSET_Y_OFFSET, NODE_WITH_WRITE_ASSET_Y_OFFSET } from './renderers/nodes/AssetNode.svelte';
|
|
2
|
+
import { AI_TOOL_BASE_OFFSET, AI_TOOL_ROW_OFFSET, BELOW_ADDITIONAL_OFFSET } from './renderers/nodes/AIToolNode.svelte';
|
|
3
|
+
import { topologicalSort } from './graphBuilder.svelte';
|
|
4
|
+
import { GROUP_HEADER_HEIGHT } from './groupEditor.svelte';
|
|
5
|
+
const MAX_TOOLS_PER_ROW = 2;
|
|
6
|
+
/**
|
|
7
|
+
* Pre-compute extra top/bottom space each node needs for decorations
|
|
8
|
+
* (assets, AI tools, group headers, group notes).
|
|
9
|
+
*/
|
|
10
|
+
export function computeNodeExtraSpace(graphNodes, opts) {
|
|
11
|
+
const extraSpace = new Map();
|
|
12
|
+
// 1. Assets
|
|
13
|
+
if (opts.showAssets) {
|
|
14
|
+
for (const node of graphNodes) {
|
|
15
|
+
const assets = node.data?.assets ?? [];
|
|
16
|
+
if (!assets.length)
|
|
17
|
+
continue;
|
|
18
|
+
const hasRead = assets.some(assetDisplaysAsInputInFlowGraph);
|
|
19
|
+
const hasWrite = assets.some(assetDisplaysAsOutputInFlowGraph);
|
|
20
|
+
if (hasRead || hasWrite) {
|
|
21
|
+
const prev = extraSpace.get(node.id) ?? { top: 0, bottom: 0, left: 0, right: 0 };
|
|
22
|
+
extraSpace.set(node.id, {
|
|
23
|
+
...prev,
|
|
24
|
+
top: prev.top + (hasRead ? NODE_WITH_READ_ASSET_Y_OFFSET : 0),
|
|
25
|
+
bottom: prev.bottom + (hasWrite ? NODE_WITH_WRITE_ASSET_Y_OFFSET : 0)
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// 2. AI tools
|
|
31
|
+
for (const node of graphNodes) {
|
|
32
|
+
const mod = node.data?.module;
|
|
33
|
+
if (!mod || mod.value?.type !== 'aiagent')
|
|
34
|
+
continue;
|
|
35
|
+
const agentActions = !opts.insertable && opts.flowModuleStates?.[node.id]?.agent_actions;
|
|
36
|
+
if (agentActions) {
|
|
37
|
+
// Execution mode: tools below
|
|
38
|
+
const totalRows = Math.ceil(agentActions.length / MAX_TOOLS_PER_ROW);
|
|
39
|
+
const space = AI_TOOL_BASE_OFFSET + AI_TOOL_ROW_OFFSET * totalRows + BELOW_ADDITIONAL_OFFSET;
|
|
40
|
+
const prev = extraSpace.get(node.id) ?? { top: 0, bottom: 0, left: 0, right: 0 };
|
|
41
|
+
extraSpace.set(node.id, { ...prev, bottom: prev.bottom + space });
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
// Edit mode: tools above
|
|
45
|
+
const tools = mod.value.tools ?? [];
|
|
46
|
+
const totalRows = Math.ceil(tools.length / MAX_TOOLS_PER_ROW) + (opts.insertable ? 1 : 0);
|
|
47
|
+
const space = AI_TOOL_BASE_OFFSET + AI_TOOL_ROW_OFFSET * totalRows;
|
|
48
|
+
const prev = extraSpace.get(node.id) ?? { top: 0, bottom: 0, left: 0, right: 0 };
|
|
49
|
+
extraSpace.set(node.id, { ...prev, top: prev.top + space });
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// Topological sort (reversed: top-of-graph first) — shared by group notes and group headers
|
|
53
|
+
const sortedNodes = topologicalSort(graphNodes).reverse();
|
|
54
|
+
// 3. Group notes (text above topmost node in each group note)
|
|
55
|
+
if (opts.showNotes) {
|
|
56
|
+
const groupNotes = (opts.notes ?? []).filter((n) => n.type === 'group');
|
|
57
|
+
if (groupNotes.length > 0) {
|
|
58
|
+
for (const groupNote of groupNotes) {
|
|
59
|
+
if (!groupNote.contained_node_ids?.length)
|
|
60
|
+
continue;
|
|
61
|
+
const topmostNodeId = sortedNodes.find((node) => groupNote.contained_node_ids?.includes(node.id))?.id;
|
|
62
|
+
if (topmostNodeId) {
|
|
63
|
+
const textHeight = opts.noteTextHeights[groupNote.id] || 60;
|
|
64
|
+
const spacing = textHeight + 16; // padding
|
|
65
|
+
const prev = extraSpace.get(topmostNodeId) ?? {
|
|
66
|
+
top: 0,
|
|
67
|
+
bottom: 0,
|
|
68
|
+
left: 0,
|
|
69
|
+
right: 0
|
|
70
|
+
};
|
|
71
|
+
extraSpace.set(topmostNodeId, {
|
|
72
|
+
...prev,
|
|
73
|
+
top: Math.max(prev.top, spacing + prev.top)
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// 4. Collapsed group nodes are taller than regular nodes (header + module icons)
|
|
80
|
+
for (const node of graphNodes) {
|
|
81
|
+
if (node.id.startsWith('collapsed-group:')) {
|
|
82
|
+
const prev = extraSpace.get(node.id) ?? { top: 0, bottom: 0, left: 0, right: 0 };
|
|
83
|
+
extraSpace.set(node.id, {
|
|
84
|
+
...prev,
|
|
85
|
+
bottom: prev.bottom + GROUP_HEADER_HEIGHT
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// 5. Group nodes (expanded heads and collapsed) with notes need extra height
|
|
90
|
+
if (opts.showNotes) {
|
|
91
|
+
const noteHeights = opts.groupDisplayState.getNoteHeights();
|
|
92
|
+
for (const node of graphNodes) {
|
|
93
|
+
let groupId;
|
|
94
|
+
if (node.id.startsWith('group:') && !node.id.endsWith('-end')) {
|
|
95
|
+
groupId = node.id.slice('group:'.length);
|
|
96
|
+
}
|
|
97
|
+
else if (node.id.startsWith('collapsed-group:')) {
|
|
98
|
+
groupId = node.id.slice('collapsed-group:'.length);
|
|
99
|
+
}
|
|
100
|
+
if (groupId) {
|
|
101
|
+
const noteHeight = noteHeights[groupId];
|
|
102
|
+
if (noteHeight && noteHeight > 0) {
|
|
103
|
+
const prev = extraSpace.get(node.id) ?? { top: 0, bottom: 0, left: 0, right: 0 };
|
|
104
|
+
extraSpace.set(node.id, {
|
|
105
|
+
...prev,
|
|
106
|
+
bottom: prev.bottom + noteHeight
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return extraSpace.size > 0 ? extraSpace : undefined;
|
|
113
|
+
}
|
|
@@ -16,70 +16,80 @@ export var NoteColor;
|
|
|
16
16
|
export const NOTE_COLORS = {
|
|
17
17
|
[NoteColor.YELLOW]: {
|
|
18
18
|
background: 'bg-yellow-200 dark:bg-yellow-900',
|
|
19
|
-
|
|
19
|
+
backgroundLight: 'bg-yellow-400/5 dark:bg-yellow-600/5',
|
|
20
|
+
outline: 'outline-yellow-200 dark:outline-yellow-900',
|
|
20
21
|
outlineHover: 'outline-yellow-300/60 dark:outline-yellow-600/60',
|
|
21
22
|
text: 'text-yellow-900 dark:text-yellow-100',
|
|
22
23
|
hover: 'hover:bg-yellow-200 dark:hover:bg-yellow-800'
|
|
23
24
|
},
|
|
24
25
|
[NoteColor.BLUE]: {
|
|
25
26
|
background: 'bg-blue-100 dark:bg-blue-950',
|
|
26
|
-
|
|
27
|
+
backgroundLight: 'bg-blue-400/5 dark:bg-blue-600/5',
|
|
28
|
+
outline: 'outline-blue-100 dark:outline-blue-950',
|
|
27
29
|
outlineHover: 'outline-blue-300/60 dark:outline-blue-600/60',
|
|
28
30
|
text: 'text-blue-900 dark:text-blue-100',
|
|
29
31
|
hover: 'hover:bg-blue-200 dark:hover:bg-blue-800'
|
|
30
32
|
},
|
|
31
33
|
[NoteColor.GREEN]: {
|
|
32
34
|
background: 'bg-green-200 dark:bg-green-900',
|
|
33
|
-
|
|
35
|
+
backgroundLight: 'bg-green-400/5 dark:bg-green-600/5',
|
|
36
|
+
outline: 'outline-green-200 dark:outline-green-900',
|
|
34
37
|
outlineHover: 'outline-green-300/60 dark:outline-green-600/60',
|
|
35
38
|
text: 'text-green-900 dark:text-green-100',
|
|
36
39
|
hover: 'hover:bg-green-200 dark:hover:bg-green-800'
|
|
37
40
|
},
|
|
38
41
|
[NoteColor.PURPLE]: {
|
|
39
42
|
background: 'bg-purple-200 dark:bg-purple-900',
|
|
40
|
-
|
|
43
|
+
backgroundLight: 'bg-purple-400/5 dark:bg-purple-600/5',
|
|
44
|
+
outline: 'outline-purple-200 dark:outline-purple-900',
|
|
41
45
|
outlineHover: 'outline-purple-300/60 dark:outline-purple-600/60',
|
|
42
46
|
text: 'text-purple-900 dark:text-purple-100',
|
|
43
47
|
hover: 'hover:bg-purple-200 dark:hover:bg-purple-800'
|
|
44
48
|
},
|
|
45
49
|
[NoteColor.PINK]: {
|
|
46
50
|
background: 'bg-pink-200 dark:bg-pink-900',
|
|
47
|
-
|
|
51
|
+
backgroundLight: 'bg-pink-400/5 dark:bg-pink-600/5',
|
|
52
|
+
outline: 'outline-pink-200 dark:outline-pink-900',
|
|
48
53
|
outlineHover: 'outline-pink-300/60 dark:outline-pink-600/60',
|
|
49
54
|
text: 'text-pink-900 dark:text-pink-100',
|
|
50
55
|
hover: 'hover:bg-pink-200 dark:hover:bg-pink-800'
|
|
51
56
|
},
|
|
52
57
|
[NoteColor.ORANGE]: {
|
|
53
58
|
background: 'bg-orange-200 dark:bg-orange-900',
|
|
54
|
-
|
|
59
|
+
backgroundLight: 'bg-orange-400/5 dark:bg-orange-600/5',
|
|
60
|
+
outline: 'outline-orange-200 dark:outline-orange-900',
|
|
55
61
|
outlineHover: 'outline-orange-300/60 dark:outline-orange-600/60',
|
|
56
62
|
text: 'text-orange-900 dark:text-orange-100',
|
|
57
63
|
hover: 'hover:bg-orange-200 dark:hover:bg-orange-800'
|
|
58
64
|
},
|
|
59
65
|
[NoteColor.RED]: {
|
|
60
66
|
background: 'bg-red-200 dark:bg-red-900',
|
|
61
|
-
|
|
67
|
+
backgroundLight: 'bg-red-400/5 dark:bg-red-600/5',
|
|
68
|
+
outline: 'outline-red-200 dark:outline-red-900',
|
|
62
69
|
outlineHover: 'outline-red-300/60 dark:outline-red-600/60',
|
|
63
70
|
text: 'text-red-900 dark:text-red-100',
|
|
64
71
|
hover: 'hover:bg-red-200 dark:hover:bg-red-800'
|
|
65
72
|
},
|
|
66
73
|
[NoteColor.CYAN]: {
|
|
67
74
|
background: 'bg-cyan-200 dark:bg-cyan-900',
|
|
68
|
-
|
|
75
|
+
backgroundLight: 'bg-cyan-400/5 dark:bg-cyan-600/5',
|
|
76
|
+
outline: 'outline-cyan-200 dark:outline-cyan-900',
|
|
69
77
|
outlineHover: 'outline-cyan-300/60 dark:outline-cyan-600/60',
|
|
70
78
|
text: 'text-cyan-900 dark:text-cyan-100',
|
|
71
79
|
hover: 'hover:bg-cyan-200 dark:hover:bg-cyan-800'
|
|
72
80
|
},
|
|
73
81
|
[NoteColor.LIME]: {
|
|
74
82
|
background: 'bg-lime-200 dark:bg-lime-900',
|
|
75
|
-
|
|
83
|
+
backgroundLight: 'bg-lime-400/5 dark:bg-lime-600/5',
|
|
84
|
+
outline: 'outline-lime-200 dark:outline-lime-900',
|
|
76
85
|
outlineHover: 'outline-lime-300/60 dark:outline-lime-600/60',
|
|
77
86
|
text: 'text-lime-900 dark:text-lime-100',
|
|
78
87
|
hover: 'hover:bg-lime-200 dark:hover:bg-lime-800'
|
|
79
88
|
},
|
|
80
89
|
[NoteColor.GRAY]: {
|
|
81
90
|
background: 'bg-gray-200 dark:bg-gray-800',
|
|
82
|
-
|
|
91
|
+
backgroundLight: 'bg-gray-400/5 dark:bg-gray-600/5',
|
|
92
|
+
outline: 'outline-gray-200 dark:outline-gray-800',
|
|
83
93
|
outlineHover: 'outline-gray-300/60 dark:outline-gray-600/60',
|
|
84
94
|
text: 'text-gray-900 dark:text-gray-100',
|
|
85
95
|
hover: 'hover:bg-gray-200 dark:hover:bg-gray-700'
|
|
@@ -18,25 +18,7 @@ export type NodeDep = {
|
|
|
18
18
|
};
|
|
19
19
|
export type NoteComputeResult = {
|
|
20
20
|
noteNodes: (Node & NodeLayout)[];
|
|
21
|
-
newNodePositions: Record<string, {
|
|
22
|
-
x: number;
|
|
23
|
-
y: number;
|
|
24
|
-
}>;
|
|
25
|
-
};
|
|
26
|
-
export type AIToolSpacingInfo = {
|
|
27
|
-
toolNodes: (Node & NodeLayout)[];
|
|
28
|
-
toolEdges: any[];
|
|
29
|
-
newNodePositions: Record<string, {
|
|
30
|
-
x: number;
|
|
31
|
-
y: number;
|
|
32
|
-
}>;
|
|
33
21
|
};
|
|
34
|
-
export interface GroupNoteBounds {
|
|
35
|
-
x: number;
|
|
36
|
-
y: number;
|
|
37
|
-
width: number;
|
|
38
|
-
height: number;
|
|
39
|
-
}
|
|
40
22
|
/**
|
|
41
23
|
* Extracts layout-affecting signature for change detection
|
|
42
24
|
* Only includes properties that affect graph layout (structure, grouping)
|
|
@@ -190,59 +190,26 @@ export function computeNoteNodes(nodes, notes, noteTextHeights, onTextHeightChan
|
|
|
190
190
|
}
|
|
191
191
|
}
|
|
192
192
|
const allNoteNodes = [];
|
|
193
|
-
//
|
|
194
|
-
const yPosMap = {}; // Y position -> spacing needed
|
|
195
|
-
// Group notes that need spacing
|
|
193
|
+
// Find topmost node per group note for layout calculation
|
|
196
194
|
const groupNotes = notes.filter((n) => n.type === 'group');
|
|
197
195
|
const topMostNodesMap = {};
|
|
198
196
|
const sortedNodes = topologicalSort(nodes).reverse();
|
|
199
197
|
for (const groupNote of groupNotes) {
|
|
200
198
|
if (groupNote.contained_node_ids?.length) {
|
|
201
199
|
const topmostNodeId = sortedNodes.find((node) => groupNote.contained_node_ids?.includes(node.id))?.id;
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
const textHeight = noteTextHeights[groupNote.id] || 60;
|
|
205
|
-
const spacing = textHeight + 16; // padding
|
|
206
|
-
// Mark this Y position as needing spacing
|
|
207
|
-
yPosMap[topmostNode.position.y] = Math.max(yPosMap[topmostNode.position.y] || 0, spacing);
|
|
208
|
-
topMostNodesMap[groupNote.id] = topmostNode.id;
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
// Calculate new positions for nodes (offset by group notes)
|
|
213
|
-
const sortedNewNodes = nodes
|
|
214
|
-
.map((n) => ({ position: { ...n.position }, id: n.id }))
|
|
215
|
-
.sort((a, b) => a.position.y - b.position.y);
|
|
216
|
-
let currentYOffset = 0;
|
|
217
|
-
let prevYPos = NaN;
|
|
218
|
-
for (const node of sortedNewNodes) {
|
|
219
|
-
if (node.position.y !== prevYPos) {
|
|
220
|
-
// Add spacing for group notes at this Y level
|
|
221
|
-
if (yPosMap[node.position.y]) {
|
|
222
|
-
currentYOffset += yPosMap[node.position.y];
|
|
200
|
+
if (topmostNodeId) {
|
|
201
|
+
topMostNodesMap[groupNote.id] = topmostNodeId;
|
|
223
202
|
}
|
|
224
|
-
prevYPos = node.position.y;
|
|
225
203
|
}
|
|
226
|
-
node.position.y += currentYOffset;
|
|
227
204
|
}
|
|
228
|
-
// Create note nodes AFTER calculating adjusted node positions
|
|
229
|
-
// For group notes, we need to use the adjusted node positions
|
|
230
|
-
const adjustedNodes = sortedNewNodes.map((n) => {
|
|
231
|
-
const origNode = nodes.find((orig) => orig.id === n.id);
|
|
232
|
-
return {
|
|
233
|
-
...n,
|
|
234
|
-
data: origNode?.data,
|
|
235
|
-
type: origNode?.type
|
|
236
|
-
};
|
|
237
|
-
});
|
|
238
205
|
// Calculate all z-indexes at once using hierarchy information
|
|
239
206
|
const noteZIndexes = calculateAllNoteZIndexes(notes, nodes);
|
|
240
207
|
for (const note of notes) {
|
|
241
208
|
const isGroupNote = note.type === 'group';
|
|
242
209
|
const zIndex = noteZIndexes[note.id];
|
|
243
|
-
// Calculate position and size using
|
|
210
|
+
// Calculate position and size using node positions for group notes
|
|
244
211
|
const { position, size } = isGroupNote
|
|
245
|
-
? calculateGroupNoteLayout(note,
|
|
212
|
+
? calculateGroupNoteLayout(note, nodes, noteTextHeights[note.id] || 60, topMostNodesMap[note.id])
|
|
246
213
|
: {
|
|
247
214
|
position: note.position ?? { x: 0, y: 0 },
|
|
248
215
|
size: note.size ?? { width: MIN_NOTE_WIDTH, height: MIN_NOTE_HEIGHT }
|
|
@@ -261,10 +228,8 @@ export function computeNoteNodes(nodes, notes, noteTextHeights, onTextHeightChan
|
|
|
261
228
|
};
|
|
262
229
|
allNoteNodes.push(noteNode);
|
|
263
230
|
}
|
|
264
|
-
const newNodePositions = Object.fromEntries(sortedNewNodes.map((n) => [n.id, n.position]));
|
|
265
231
|
const result = {
|
|
266
|
-
noteNodes: allNoteNodes
|
|
267
|
-
newNodePositions
|
|
232
|
+
noteNodes: allNoteNodes
|
|
268
233
|
};
|
|
269
234
|
// Cache the result
|
|
270
235
|
computeNoteNodesCache = [
|
|
@@ -8,10 +8,19 @@ import { workspaceStore } from '../../../../stores';
|
|
|
8
8
|
import FlowStatusWaitingForEvents from '../../../FlowStatusWaitingForEvents.svelte';
|
|
9
9
|
import InsertModuleButton from '../../../flows/map/InsertModuleButton.svelte';
|
|
10
10
|
import { getGraphContext } from '../../graphContext';
|
|
11
|
+
import { GROUP_TOP_PADDING } from '../../compoundLayout';
|
|
11
12
|
const { useDataflow, showAssets, moveManager } = getGraphContext();
|
|
12
|
-
let { id, sourceX, sourceY, sourcePosition, targetX, targetY, targetPosition, markerEnd,
|
|
13
|
+
let { id, source, target, sourceX, sourceY, sourcePosition, targetX, targetY, targetPosition, markerEnd,
|
|
13
14
|
// style,
|
|
14
15
|
data } = $props();
|
|
16
|
+
// Derive group boundary from source/target node IDs
|
|
17
|
+
let groupBoundary = $derived.by(() => {
|
|
18
|
+
if (source.startsWith('group:') && !source.endsWith('-end'))
|
|
19
|
+
return 'top';
|
|
20
|
+
if (target.startsWith('group:') && target.endsWith('-end'))
|
|
21
|
+
return 'bottom';
|
|
22
|
+
return undefined;
|
|
23
|
+
});
|
|
15
24
|
let [edgePath] = $derived(getBezierPath({
|
|
16
25
|
sourceX,
|
|
17
26
|
sourceY: targetY - sourceY > 100 ? targetY - 100 : sourceY,
|
|
@@ -29,19 +38,25 @@ let completeEdge = $derived(targetY - sourceY > 100
|
|
|
29
38
|
let waitingForEvents = $derived(data?.flowModuleStates?.[data.targetId]?.type === 'WaitingForEvents' ||
|
|
30
39
|
data?.flowModuleStates?.[`${data.sourceId}-v`]?.type === 'WaitingForEvents');
|
|
31
40
|
let suspendStatus = $derived(data?.suspendStatus);
|
|
32
|
-
let centerY = $derived(
|
|
33
|
-
|
|
34
|
-
|
|
41
|
+
let centerY = $derived(groupBoundary === 'bottom'
|
|
42
|
+
? targetY
|
|
43
|
+
: groupBoundary === 'top'
|
|
44
|
+
? sourceY + GROUP_TOP_PADDING / 2
|
|
45
|
+
: sourceY +
|
|
46
|
+
32 +
|
|
47
|
+
(data.shouldOffsetInsertBtnDueToAssetNode && $showAssets
|
|
48
|
+
? NODE_WITH_WRITE_ASSET_Y_OFFSET
|
|
49
|
+
: 0));
|
|
35
50
|
let isDragging = $derived(!!moveManager?.dragging);
|
|
36
51
|
let draggedId = $derived(moveManager?.dragging?.moduleId);
|
|
37
52
|
let isValidDropTarget = $derived(isDragging &&
|
|
38
53
|
data?.insertable &&
|
|
39
54
|
draggedId !== undefined &&
|
|
40
55
|
!data.disableMoveIds?.includes(draggedId) &&
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
let isNearestDrop = $derived(isValidDropTarget && moveManager?.nearestDropZone?.edgeId === id);
|
|
44
|
-
let isAdjacentToDragged = $derived(isDragging && (
|
|
56
|
+
source !== draggedId &&
|
|
57
|
+
target !== draggedId);
|
|
58
|
+
let isNearestDrop = $derived(isValidDropTarget && moveManager?.nearestDropZone?.edgeId === id ? true : false);
|
|
59
|
+
let isAdjacentToDragged = $derived(isDragging && (source === draggedId || target === draggedId));
|
|
45
60
|
// Register this edge's drop zone position with the drag manager so proximity
|
|
46
61
|
// detection uses the actual xyflow-computed position rather than re-deriving it.
|
|
47
62
|
$effect(() => {
|
|
@@ -106,7 +121,7 @@ $effect(() => {
|
|
|
106
121
|
{@render dropTargetIndicator(isNearestDrop)}
|
|
107
122
|
</div>
|
|
108
123
|
</div>
|
|
109
|
-
{:else if data?.insertable && !$useDataflow && !moveManager?.movingModuleId && !isDragging}
|
|
124
|
+
{:else if data?.insertable && !groupBoundary && !$useDataflow && !moveManager?.movingModuleId && !isDragging}
|
|
110
125
|
<div
|
|
111
126
|
class={twMerge('edgeButtonContainer nodrag nopan top-0')}
|
|
112
127
|
style:transform="translate(-50%, -50%)"
|
|
@@ -158,7 +173,7 @@ $effect(() => {
|
|
|
158
173
|
|
|
159
174
|
{#if moveManager?.movingModuleId && data?.insertable}
|
|
160
175
|
<div class="edgeButtonContainer nodrag nopan" style:transform="translate(-50%, -50%)">
|
|
161
|
-
{#if !(moveManager.movingIds ?? [moveManager.movingModuleId]).some((id) => data.disableMoveIds?.includes(id))}
|
|
176
|
+
{#if !(moveManager.movingIds ?? [moveManager.movingModuleId]).some( (id) => data.disableMoveIds?.includes(id) )}
|
|
162
177
|
<button
|
|
163
178
|
title="Paste module"
|
|
164
179
|
onclick={() => {
|
|
@@ -197,7 +212,7 @@ $effect(() => {
|
|
|
197
212
|
<BaseEdge
|
|
198
213
|
path={completeEdge}
|
|
199
214
|
{markerEnd}
|
|
200
|
-
class={$useDataflow ? 'hidden' : isAdjacentToDragged ? 'opacity-30' : ''}
|
|
215
|
+
class={$useDataflow || groupBoundary ? 'hidden' : isAdjacentToDragged ? 'opacity-30' : ''}
|
|
201
216
|
interactionWidth={0}
|
|
202
217
|
style={undefined}
|
|
203
218
|
label={undefined}
|
|
@@ -1,10 +1,23 @@
|
|
|
1
|
-
<script module lang="ts">
|
|
1
|
+
<script module lang="ts">import { forbiddenIds } from '../../../flows/idUtils';
|
|
2
|
+
export function getToolNameError(name, type, siblingNames) {
|
|
2
3
|
if (type === 'websearch')
|
|
3
|
-
return
|
|
4
|
+
return undefined;
|
|
4
5
|
if (type === 'mcp') {
|
|
5
|
-
return name.length > 0;
|
|
6
|
+
return name.length > 0 ? undefined : 'Tool name must not be empty';
|
|
6
7
|
}
|
|
7
|
-
|
|
8
|
+
if (!/^[a-zA-Z0-9_]+$/.test(name)) {
|
|
9
|
+
return 'Tool name must only contain letters, numbers and underscores';
|
|
10
|
+
}
|
|
11
|
+
if (forbiddenIds.includes(name)) {
|
|
12
|
+
return `'${name}' is a reserved name`;
|
|
13
|
+
}
|
|
14
|
+
if (siblingNames && siblingNames.filter((n) => n === name).length > 1) {
|
|
15
|
+
return 'Duplicate tool name';
|
|
16
|
+
}
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
export function validateToolName(name, type) {
|
|
20
|
+
return getToolNameError(name, type) === undefined;
|
|
8
21
|
}
|
|
9
22
|
export const AI_TOOL_BASE_OFFSET = 5;
|
|
10
23
|
export const AI_TOOL_ROW_OFFSET = 30;
|
|
@@ -44,7 +57,6 @@ export function computeAIToolNodes(nodes, eventHandlers, insertable, flowModuleS
|
|
|
44
57
|
}
|
|
45
58
|
const allToolNodes = [];
|
|
46
59
|
const allToolEdges = [];
|
|
47
|
-
const yPosMap = {};
|
|
48
60
|
for (const node of nodes) {
|
|
49
61
|
if (node.type !== 'module' || node.data.module.value.type !== 'aiagent')
|
|
50
62
|
continue;
|
|
@@ -97,18 +109,7 @@ export function computeAIToolNodes(nodes, eventHandlers, insertable, flowModuleS
|
|
|
97
109
|
});
|
|
98
110
|
}
|
|
99
111
|
const totalRows = Math.ceil(tools.length / MAX_TOOLS_PER_ROW) + (insertable ? 1 : 0); // + 1 for add tool node when insertable
|
|
100
|
-
|
|
101
|
-
yPosMap[node.position.y] = {
|
|
102
|
-
rows: totalRows,
|
|
103
|
-
placement: 'below'
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
yPosMap[node.position.y] = {
|
|
108
|
-
rows: totalRows,
|
|
109
|
-
placement: 'above'
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
+
const siblingNames = tools.map((t) => t.name);
|
|
112
113
|
const toolNodes = tools.map((tool, i) => {
|
|
113
114
|
let inputToolXGap = 12;
|
|
114
115
|
let inputToolWidth = (ROW_WIDTH - inputToolXGap) / 2;
|
|
@@ -120,6 +121,7 @@ export function computeAIToolNodes(nodes, eventHandlers, insertable, flowModuleS
|
|
|
120
121
|
data: {
|
|
121
122
|
tool: tool.name,
|
|
122
123
|
type: tool.type,
|
|
124
|
+
nameError: getToolNameError(tool.name, tool.type, siblingNames),
|
|
123
125
|
eventHandlers,
|
|
124
126
|
moduleId: tool.id,
|
|
125
127
|
insertable,
|
|
@@ -128,13 +130,13 @@ export function computeAIToolNodes(nodes, eventHandlers, insertable, flowModuleS
|
|
|
128
130
|
id: `${node.id}-tool-${tool.id}`,
|
|
129
131
|
width: inputToolWidth,
|
|
130
132
|
position: {
|
|
131
|
-
x:
|
|
133
|
+
x: tools.length === 1
|
|
132
134
|
? (ROW_WIDTH - inputToolWidth) / 2
|
|
133
135
|
: (i + 1) % 2 === 0
|
|
134
136
|
? inputToolWidth + inputToolXGap
|
|
135
137
|
: isLastRow && tools.length % 2 === 1
|
|
136
138
|
? (ROW_WIDTH - inputToolWidth) / 2
|
|
137
|
-
: 0
|
|
139
|
+
: 0,
|
|
138
140
|
y: baseOffset +
|
|
139
141
|
rowOffset *
|
|
140
142
|
(agentActions
|
|
@@ -169,31 +171,9 @@ export function computeAIToolNodes(nodes, eventHandlers, insertable, flowModuleS
|
|
|
169
171
|
});
|
|
170
172
|
}
|
|
171
173
|
}
|
|
172
|
-
const sortedNewNodes = nodes
|
|
173
|
-
.filter((n) => n.type !== 'asset')
|
|
174
|
-
.map((n) => ({ id: n.id, position: $state.snapshot(n.position) }))
|
|
175
|
-
.sort((a, b) => a.position.y - b.position.y);
|
|
176
|
-
let currentYOffset = 0;
|
|
177
|
-
let prevYPos = NaN;
|
|
178
|
-
for (const node of sortedNewNodes) {
|
|
179
|
-
if (node.position.y !== prevYPos) {
|
|
180
|
-
// if agent actions, we need to shift the node above
|
|
181
|
-
if (yPosMap[prevYPos]?.placement === 'below') {
|
|
182
|
-
currentYOffset += AI_TOOL_BASE_OFFSET + AI_TOOL_ROW_OFFSET * yPosMap[prevYPos].rows;
|
|
183
|
-
}
|
|
184
|
-
if (yPosMap[node.position.y]?.placement === 'above') {
|
|
185
|
-
currentYOffset += AI_TOOL_BASE_OFFSET + AI_TOOL_ROW_OFFSET * yPosMap[node.position.y].rows;
|
|
186
|
-
}
|
|
187
|
-
prevYPos = node.position.y;
|
|
188
|
-
}
|
|
189
|
-
node.position.y += currentYOffset;
|
|
190
|
-
}
|
|
191
174
|
let ret = {
|
|
192
175
|
toolNodes: allToolNodes,
|
|
193
|
-
toolEdges: allToolEdges
|
|
194
|
-
newNodePositions: Object.fromEntries(sortedNewNodes.map((n) => {
|
|
195
|
-
return [n.id, n.position];
|
|
196
|
-
}))
|
|
176
|
+
toolEdges: allToolEdges
|
|
197
177
|
};
|
|
198
178
|
computeAIToolNodesCache = {
|
|
199
179
|
nodes: nodes.map(getComparableNode),
|
|
@@ -214,7 +194,7 @@ let hover = $state(false);
|
|
|
214
194
|
let { data, id } = $props();
|
|
215
195
|
const { selectionManager } = getGraphContext();
|
|
216
196
|
const flowModuleState = $derived(data.flowModuleStates?.[data.moduleId]);
|
|
217
|
-
let colorClasses = $derived(getNodeColorClasses(
|
|
197
|
+
let colorClasses = $derived(getNodeColorClasses(data.nameError ? 'Failure' : flowModuleState?.type, selectionManager?.getSelectedId() === data.moduleId));
|
|
218
198
|
</script>
|
|
219
199
|
|
|
220
200
|
<NodeWrapper nodeId={id}>
|
|
@@ -248,12 +228,7 @@ let colorClasses = $derived(getNodeColorClasses(!validateToolName(data.tool, dat
|
|
|
248
228
|
<Wrench size={16} class="ml-1 shrink-0" />
|
|
249
229
|
{/if}
|
|
250
230
|
|
|
251
|
-
<span
|
|
252
|
-
class={twMerge(
|
|
253
|
-
'text-3xs truncate flex-1',
|
|
254
|
-
!validateToolName(data.tool, data.type) && 'text-red-400'
|
|
255
|
-
)}
|
|
256
|
-
>
|
|
231
|
+
<span class={twMerge('text-3xs truncate flex-1', data.nameError && 'text-red-400')}>
|
|
257
232
|
{data.tool || 'Missing name'}
|
|
258
233
|
</span>
|
|
259
234
|
</button>
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export declare function getToolNameError(name: string, type?: string, siblingNames?: string[]): string | undefined;
|
|
1
2
|
export declare function validateToolName(name: string, type?: string): boolean;
|
|
2
3
|
export declare const AI_TOOL_BASE_OFFSET = 5;
|
|
3
4
|
export declare const AI_TOOL_ROW_OFFSET = 30;
|
|
@@ -10,10 +11,6 @@ export declare function getToolCallId(idx: number, agentModuleId: string, module
|
|
|
10
11
|
export declare function computeAIToolNodes(nodes: (Node & NodeLayout)[], eventHandlers: GraphEventHandlers, insertable: boolean, flowModuleStates: Record<string, GraphModuleState> | undefined): {
|
|
11
12
|
toolNodes: (Node & NodeLayout)[];
|
|
12
13
|
toolEdges: Edge[];
|
|
13
|
-
newNodePositions: Record<string, {
|
|
14
|
-
x: number;
|
|
15
|
-
y: number;
|
|
16
|
-
}>;
|
|
17
14
|
};
|
|
18
15
|
import type { AiToolN, GraphEventHandlers, NodeLayout } from '../../graphBuilder.svelte';
|
|
19
16
|
import type { Edge, Node } from '@xyflow/svelte';
|
|
@@ -13,7 +13,6 @@ export function computeAssetNodes(nodes) {
|
|
|
13
13
|
const ASSETS_OVERFLOWED_NODE_WIDTH = 25;
|
|
14
14
|
const allAssetNodes = [];
|
|
15
15
|
const allAssetEdges = [];
|
|
16
|
-
const yPosMap = {};
|
|
17
16
|
for (const node of nodes) {
|
|
18
17
|
const assets = node.data.assets ?? [];
|
|
19
18
|
if (!assets.length)
|
|
@@ -26,14 +25,6 @@ export function computeAssetNodes(nodes) {
|
|
|
26
25
|
const displayedOutputAssets = outputAssets.slice(0, 3);
|
|
27
26
|
const overflowedInputAssets = inputAssets.slice(3);
|
|
28
27
|
const overflowedOutputAssets = outputAssets.slice(3);
|
|
29
|
-
// This allows calculating which nodes to offset on the y axis to
|
|
30
|
-
// make space for the asset nodes
|
|
31
|
-
if (inputAssets.length || outputAssets.length)
|
|
32
|
-
yPosMap[node.position.y] = yPosMap[node.position.y] ?? {};
|
|
33
|
-
if (inputAssets.length)
|
|
34
|
-
yPosMap[node.position.y].r = true;
|
|
35
|
-
if (outputAssets.length)
|
|
36
|
-
yPosMap[node.position.y].w = true;
|
|
37
28
|
// All asset nodes displayed on top
|
|
38
29
|
const inputAssetNodes = displayedInputAssets.map((asset, i) => {
|
|
39
30
|
let inputAssetXGap = 12;
|
|
@@ -154,26 +145,9 @@ export function computeAssetNodes(nodes) {
|
|
|
154
145
|
data: { class: '!opacity-35 dark:!opacity-25' }
|
|
155
146
|
});
|
|
156
147
|
}
|
|
157
|
-
// Shift all nodes to make space for the new asset nodes
|
|
158
|
-
const sortedNewNodes = nodes
|
|
159
|
-
.map((n) => ({ position: { ...n.position }, id: n.id }))
|
|
160
|
-
.sort((a, b) => a.position.y - b.position.y);
|
|
161
|
-
let currentYOffset = 0;
|
|
162
|
-
let prevYPos = NaN;
|
|
163
|
-
for (const node of sortedNewNodes) {
|
|
164
|
-
if (node.position.y !== prevYPos) {
|
|
165
|
-
if (yPosMap[prevYPos]?.w)
|
|
166
|
-
currentYOffset += NODE_WITH_WRITE_ASSET_Y_OFFSET;
|
|
167
|
-
if (yPosMap[node.position.y]?.r)
|
|
168
|
-
currentYOffset += NODE_WITH_READ_ASSET_Y_OFFSET;
|
|
169
|
-
prevYPos = node.position.y;
|
|
170
|
-
}
|
|
171
|
-
node.position.y += currentYOffset;
|
|
172
|
-
}
|
|
173
148
|
let ret = {
|
|
174
149
|
newAssetNodes: allAssetNodes,
|
|
175
|
-
newAssetEdges: allAssetEdges
|
|
176
|
-
newNodePositions: Object.fromEntries(sortedNewNodes.map((n) => [n.id, n.position]))
|
|
150
|
+
newAssetEdges: allAssetEdges
|
|
177
151
|
};
|
|
178
152
|
computeAssetNodesCache = [clone(nodes), ret];
|
|
179
153
|
return ret;
|
|
@@ -17,10 +17,6 @@ type NodeDep = {
|
|
|
17
17
|
export declare function computeAssetNodes(nodes: NodeDep[]): {
|
|
18
18
|
newAssetNodes: (Node & NodeLayout)[];
|
|
19
19
|
newAssetEdges: Edge[];
|
|
20
|
-
newNodePositions: Record<string, {
|
|
21
|
-
x: number;
|
|
22
|
-
y: number;
|
|
23
|
-
}>;
|
|
24
20
|
};
|
|
25
21
|
import type { AssetN, NodeLayout } from '../../graphBuilder.svelte';
|
|
26
22
|
import { type AssetWithAltAccessType } from '../../../assets/lib';
|