windmill-components 1.532.0 → 1.542.4
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/AIProviderPicker.svelte +181 -0
- package/package/components/AIProviderPicker.svelte.d.ts +15 -0
- package/package/components/ArgInfo.svelte +2 -2
- package/package/components/ArgInput.svelte +60 -27
- package/package/components/ArgInput.svelte.d.ts +3 -3
- package/package/components/AssignableTagsInner.svelte +89 -3
- package/package/components/Auth0Setting.svelte +8 -3
- package/package/components/ConcurrentJobsChart.svelte +36 -48
- package/package/components/ConcurrentJobsChart.svelte.d.ts +8 -20
- package/package/components/CustomPopover.svelte.d.ts +1 -1
- package/package/components/Dev.svelte +5 -4
- package/package/components/DiffDrawer.svelte +2 -2
- package/package/components/DiffEditor.svelte +34 -37
- package/package/components/DiffEditor.svelte.d.ts +23 -39
- package/package/components/DropdownSelect.svelte +26 -0
- package/package/components/DropdownSelect.svelte.d.ts +11 -0
- package/package/components/DropdownV2Inner.svelte +1 -1
- package/package/components/{DynSelect.svelte → DynamicInput.svelte} +47 -15
- package/package/components/DynamicInput.svelte.d.ts +11 -0
- package/package/components/EditableSchemaForm.svelte +155 -140
- package/package/components/EditableSchemaForm.svelte.d.ts +6 -7
- package/package/components/Editor.svelte +101 -87
- package/package/components/Editor.svelte.d.ts +7 -1
- package/package/components/EditorBar.svelte +2 -5
- package/package/components/FlowBuilder.svelte +10 -7
- package/package/components/FlowLogRow.svelte +64 -0
- package/package/components/FlowLogRow.svelte.d.ts +15 -0
- package/package/components/FlowLogViewer.svelte +406 -373
- package/package/components/FlowLogViewer.svelte.d.ts +5 -1
- package/package/components/FlowLogViewerWrapper.svelte +44 -1
- package/package/components/FlowLoopIterationPreview.svelte.d.ts +1 -1
- package/package/components/FlowPreviewContent.svelte +3 -3
- package/package/components/FlowPreviewContent.svelte.d.ts +1 -1
- package/package/components/FlowStatusViewer.svelte +28 -0
- package/package/components/FlowStatusViewerInner.svelte +106 -23
- package/package/components/FlowStatusViewerInner.svelte.d.ts +7 -0
- package/package/components/FolderPicker.svelte +1 -1
- package/package/components/InputTransformForm.svelte +20 -10
- package/package/components/JobArgs.svelte +1 -1
- package/package/components/JobLoader.svelte.d.ts +1 -1
- package/package/components/JobStatus.svelte +2 -0
- package/package/components/LogSnippetViewer.svelte +3 -3
- package/package/components/LogSnippetViewer.svelte.d.ts +1 -1
- package/package/components/LogViewer.svelte +87 -71
- package/package/components/LogViewer.svelte.d.ts +1 -0
- package/package/components/ModulePreview.svelte +2 -1
- package/package/components/ModulePreview.svelte.d.ts +1 -0
- package/package/components/ModulePreviewForm.svelte +72 -65
- package/package/components/ModulePreviewResultViewer.svelte +13 -18
- package/package/components/ModuleTest.svelte +6 -5
- package/package/components/ModuleTest.svelte.d.ts +1 -0
- package/package/components/OktaSetting.svelte +8 -3
- package/package/components/Path.svelte +7 -1
- package/package/components/Path.svelte.d.ts +1 -1
- package/package/components/Portal.svelte +11 -7
- package/package/components/Portal.svelte.d.ts +19 -39
- package/package/components/PrefixedInput.svelte +120 -0
- package/package/components/PrefixedInput.svelte.d.ts +8 -0
- package/package/components/QueuePosition.svelte +81 -0
- package/package/components/QueuePosition.svelte.d.ts +8 -0
- package/package/components/ResourceNarrowing.svelte +13 -0
- package/package/components/ResourceNarrowing.svelte.d.ts +6 -0
- package/package/components/ResourceTypePicker.svelte +49 -74
- package/package/components/RunChart.svelte +74 -89
- package/package/components/RunChart.svelte.d.ts +10 -22
- package/package/components/RunForm.svelte +2 -2
- package/package/components/RunForm.svelte.d.ts +1 -1
- package/package/components/RunFormAdvancedPopup.svelte +13 -1
- package/package/components/S3FilePicker.svelte +1 -1
- package/package/components/SchemaForm.svelte +1 -2
- package/package/components/SchemaForm.svelte.d.ts +2 -2
- package/package/components/ScriptBuilder.svelte +3 -2
- package/package/components/ScriptEditor.svelte +25 -10
- package/package/components/ScriptEditor.svelte.d.ts +2 -1
- package/package/components/ServiceLogsInner.svelte +1 -1
- package/package/components/ShareModal.svelte.d.ts +1 -1
- package/package/components/SimpleEditor.svelte +4 -68
- package/package/components/StringTypeNarrowing.svelte +5 -10
- package/package/components/TemplateEditor.svelte +2 -16
- package/package/components/TimeAgo.svelte +1 -1
- package/package/components/TimeAgo.svelte.d.ts +1 -0
- package/package/components/Toggle.svelte +2 -1
- package/package/components/Toggle.svelte.d.ts +2 -1
- package/package/components/WorkerRepl.svelte +1 -1
- package/package/components/apps/components/display/AppNavbarItem.svelte +2 -1
- package/package/components/apps/components/display/table/AppAggridTable.svelte +44 -48
- package/package/components/apps/components/display/table/SyncColumnDefs.svelte +101 -19
- package/package/components/apps/components/display/table/SyncColumnDefs.svelte.d.ts +5 -2
- package/package/components/apps/components/display/table/utils.js +36 -5
- package/package/components/apps/components/inputs/currency/CurrencyInput.svelte +10 -5
- package/package/components/apps/components/layout/AppModal.svelte +2 -2
- package/package/components/apps/editor/AppEditor.svelte +4 -3
- package/package/components/apps/editor/AppEditorHeader.svelte +0 -1
- package/package/components/apps/editor/GridViewer.svelte.d.ts +11 -4
- package/package/components/apps/editor/SettingsPanel.svelte +2 -2
- package/package/components/apps/editor/component/ComponentNavigation.svelte +3 -2
- package/package/components/apps/editor/componentsPanel/ListItem.svelte +2 -2
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +0 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +1 -1
- package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +29 -4
- package/package/components/apps/editor/settingsPanel/GridCondition.svelte +3 -1
- package/package/components/apps/editor/settingsPanel/GridNavbar.svelte +3 -1
- package/package/components/apps/editor/settingsPanel/GridTab.svelte +3 -1
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/OneOfInputSpecsEditor.svelte +55 -53
- package/package/components/apps/editor/settingsPanel/TableActions.svelte +3 -1
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +13 -5
- package/package/components/apps/svelte-grid/Grid.svelte.d.ts +30 -11
- package/package/components/assets/JobAssetsViewer.svelte +28 -24
- package/package/components/auditLogs/AuditLogsTable.svelte +2 -6
- package/package/components/chartjs-wrappers/Chart.svelte.d.ts +14 -7
- package/package/components/common/OnChange.svelte.d.ts +11 -4
- package/package/components/common/badge/Badge.svelte +9 -2
- package/package/components/common/badge/Badge.svelte.d.ts +2 -1
- package/package/components/common/button/model.d.ts +1 -1
- package/package/components/common/calendarPicker/CalendarPicker.svelte +5 -1
- package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +5 -4
- package/package/components/common/drawer/Disposable.svelte +45 -26
- package/package/components/common/drawer/Disposable.svelte.d.ts +12 -44
- package/package/components/common/drawer/Drawer.svelte +17 -14
- package/package/components/common/drawer/Drawer.svelte.d.ts +1 -0
- package/package/components/common/menu/MenuItem.svelte.d.ts +2 -2
- package/package/components/common/modal/Modal.svelte.d.ts +1 -1
- package/package/components/common/tabs/TabContent.svelte +2 -7
- package/package/components/common/tabs/TabContent.svelte.d.ts +5 -27
- package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +9 -3
- package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte.d.ts +1 -0
- package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte +8 -4
- package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte.d.ts +1 -0
- package/package/components/copilot/MetadataGen.svelte +14 -3
- package/package/components/copilot/chat/AIChatInput.svelte +0 -1
- package/package/components/copilot/chat/AIChatManager.svelte.js +26 -104
- package/package/components/copilot/chat/AssistantMessage.svelte +0 -4
- package/package/components/copilot/chat/AvailableContextList.svelte +192 -66
- package/package/components/copilot/chat/AvailableContextList.svelte.d.ts +2 -2
- package/package/components/copilot/chat/ContextElementBadge.svelte +3 -3
- package/package/components/copilot/chat/ContextManager.svelte.js +36 -13
- package/package/components/copilot/chat/ContextTextarea.svelte +21 -48
- package/package/components/copilot/chat/ToolContentDisplay.svelte +10 -1
- package/package/components/copilot/chat/ToolExecutionDisplay.svelte +3 -3
- package/package/components/copilot/chat/anthropic.d.ts +15 -0
- package/package/components/copilot/chat/anthropic.js +208 -0
- package/package/components/copilot/chat/api/apiTools.d.ts +2 -2
- package/package/components/copilot/chat/api/apiTools.js +10 -7
- package/package/components/copilot/chat/api/core.d.ts +1 -1
- package/package/components/copilot/chat/api/core.js +7 -2
- package/package/components/copilot/chat/ask/core.d.ts +1 -1
- package/package/components/copilot/chat/ask/core.js +7 -2
- package/package/components/copilot/chat/context.d.ts +7 -2
- package/package/components/copilot/chat/flow/FlowAIChat.svelte +110 -8
- package/package/components/copilot/chat/flow/core.d.ts +12 -1
- package/package/components/copilot/chat/flow/core.js +133 -5
- package/package/components/copilot/chat/flow/uiIntents.d.ts +8 -0
- package/package/components/copilot/chat/flow/uiIntents.js +5 -0
- package/package/components/copilot/chat/flow/useUiIntent.d.ts +5 -0
- package/package/components/copilot/chat/flow/useUiIntent.js +12 -0
- package/package/components/copilot/chat/monaco-adapter.d.ts +23 -4
- package/package/components/copilot/chat/monaco-adapter.js +55 -16
- package/package/components/copilot/chat/navigator/core.d.ts +1 -1
- package/package/components/copilot/chat/navigator/core.js +7 -2
- package/package/components/copilot/chat/script/CodeDisplay.svelte +10 -111
- package/package/components/copilot/chat/script/core.d.ts +5 -4
- package/package/components/copilot/chat/script/core.js +134 -21
- package/package/components/copilot/chat/shared.d.ts +10 -9
- package/package/components/copilot/chat/shared.js +24 -12
- package/package/components/copilot/lib.d.ts +29 -8
- package/package/components/copilot/lib.js +211 -31
- package/package/components/copilot/shared.d.ts +1 -1
- package/package/components/copilot/shared.js +16 -10
- package/package/components/flows/FlowEditor.svelte +4 -2
- package/package/components/flows/FlowEditor.svelte.d.ts +1 -0
- package/package/components/flows/FlowModuleIcon.svelte +8 -8
- package/package/components/flows/common/FlowCardHeader.svelte +4 -1
- package/package/components/flows/content/FlowBranchesAllWrapper.svelte +6 -0
- package/package/components/flows/content/FlowBranchesOneWrapper.svelte +6 -0
- package/package/components/flows/content/FlowEditorPanel.svelte +2 -1
- package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowInput.svelte +36 -39
- package/package/components/flows/content/FlowInput.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowLoop.svelte +7 -0
- package/package/components/flows/content/FlowModuleComponent.svelte +42 -46
- package/package/components/flows/content/FlowModuleEarlyStop.svelte +47 -17
- package/package/components/flows/content/FlowModuleScript.svelte +1 -1
- package/package/components/flows/content/FlowModuleSleep.svelte +4 -1
- package/package/components/flows/content/FlowModuleSuspend.svelte +15 -18
- package/package/components/flows/content/FlowModuleTimeout.svelte +50 -10
- package/package/components/flows/content/FlowModuleTimeout.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowRetries.svelte +108 -3
- package/package/components/flows/content/FlowRetries.svelte.d.ts +3 -2
- package/package/components/flows/content/FlowWhileLoop.svelte +6 -0
- package/package/components/flows/content/ScriptEditorDrawer.svelte +9 -11
- package/package/components/flows/dfs.d.ts +1 -1
- package/package/components/flows/dfs.js +6 -6
- package/package/components/flows/flowInfers.js +15 -42
- package/package/components/flows/flowStateUtils.svelte.js +1 -2
- package/package/components/flows/flowStore.d.ts +45 -1
- package/package/components/flows/flowStore.js +1 -1
- package/package/components/flows/map/FlowJobsMenu.svelte +3 -3
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +73 -80
- package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +1 -1
- package/package/components/flows/map/FlowModuleSchemaItemViewer.svelte +1 -1
- package/package/components/flows/map/InsertModuleButton.svelte +1 -0
- package/package/components/flows/map/InsertModuleInner.svelte +12 -15
- package/package/components/flows/map/InsertModuleInner.svelte.d.ts +10 -9
- package/package/components/flows/map/MapItem.svelte +8 -4
- package/package/components/flows/map/VirtualItem.svelte +1 -1
- package/package/components/flows/pickers/TopLevelNode.svelte +1 -1
- package/package/components/flows/propPicker/InputPickerInner.svelte +5 -5
- package/package/components/flows/propPicker/OutputPickerInner.svelte +143 -118
- package/package/components/flows/propPicker/OutputPickerInner.svelte.d.ts +7 -16
- package/package/components/flows/{testSteps.svelte.d.ts → stepsInputArgs.svelte.d.ts} +2 -1
- package/package/components/flows/{testSteps.svelte.js → stepsInputArgs.svelte.js} +15 -3
- package/package/components/flows/types.d.ts +16 -3
- package/package/components/flows/utils.js +3 -0
- package/package/components/git_sync/DetectionFlow.svelte +15 -17
- package/package/components/git_sync/GitSyncContext.svelte.js +1 -1
- package/package/components/git_sync/GitSyncRepositoryCard.svelte +0 -1
- package/package/components/graph/FlowGraphV2.svelte +1 -1
- package/package/components/graph/graphBuilder.svelte.d.ts +5 -1
- package/package/components/graph/renderers/edges/BaseEdge.svelte +9 -1
- package/package/components/graph/renderers/edges/BaseEdge.svelte.d.ts +4 -1
- package/package/components/graph/renderers/nodes/AIToolNode.svelte +4 -4
- package/package/components/graph/renderers/nodes/BranchAllStart.svelte +2 -3
- package/package/components/graph/renderers/nodes/BranchOneStart.svelte +2 -3
- package/package/components/graph/renderers/nodes/NewAIToolNode.svelte +71 -54
- package/package/components/graph/renderers/triggers/TriggerButton.svelte.d.ts +1 -1
- package/package/components/graph/renderers/triggers/TriggersBadge.svelte +3 -1
- package/package/components/graph/renderers/triggers/TriggersWrapper.svelte +34 -24
- package/package/components/graph/renderers/triggers/TriggersWrapper.svelte.d.ts +1 -2
- package/package/components/home/ItemsList.svelte +17 -13
- package/package/components/home/TreeView.svelte +21 -27
- package/package/components/home/TreeView.svelte.d.ts +2 -29
- package/package/components/home/TreeViewRoot.svelte +11 -23
- package/package/components/home/TreeViewRoot.svelte.d.ts +15 -13
- package/package/components/icons/GitIcon.svelte +10 -2
- package/package/components/icons/GitIcon.svelte.d.ts +1 -0
- package/package/components/meltComponents/MeltButton.svelte.d.ts +1 -1
- package/package/components/meltComponents/Popover.svelte +23 -3
- package/package/components/meltComponents/Popover.svelte.d.ts +2 -1
- package/package/components/monacoLanguagesOptions.d.ts +3 -0
- package/package/components/monacoLanguagesOptions.js +109 -0
- package/package/components/propertyPicker/ObjectViewer.svelte +18 -5
- package/package/components/propertyPicker/PropPicker.svelte +1 -1
- package/package/components/propertyPicker/utils.js +14 -7
- package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +1 -1
- package/package/components/runs/JobRunsPreview.svelte +212 -177
- package/package/components/runs/JobsLoader.svelte +2 -2
- package/package/components/runs/JobsLoader.svelte.d.ts +1 -1
- package/package/components/runs/NoWorkerWithTagWarning.svelte +18 -5
- package/package/components/runs/RunBadges.svelte +100 -0
- package/package/components/runs/RunBadges.svelte.d.ts +12 -0
- package/package/components/runs/RunLabels.svelte +86 -0
- package/package/components/runs/RunLabels.svelte.d.ts +10 -0
- package/package/components/runs/RunOption.svelte +20 -0
- package/package/components/runs/RunOption.svelte.d.ts +10 -0
- package/package/components/runs/RunRow.svelte +239 -151
- package/package/components/runs/RunRow.svelte.d.ts +12 -9
- package/package/components/runs/RunsBatchActionsDropdown.svelte +13 -17
- package/package/components/runs/RunsBatchActionsDropdown.svelte.d.ts +5 -18
- package/package/components/runs/RunsFilter.svelte +369 -243
- package/package/components/runs/RunsFilter.svelte.d.ts +2 -0
- package/package/components/runs/RunsQueue.svelte +96 -25
- package/package/components/runs/RunsQueue.svelte.d.ts +7 -21
- package/package/components/runs/RunsTable.svelte +62 -71
- package/package/components/runs/RunsTable.svelte.d.ts +2 -1
- package/package/components/runs/runs-grid.css +95 -0
- package/package/components/schema/AddPropertyV2.svelte +2 -7
- package/package/components/schema/AddPropertyV2.svelte.d.ts +3 -20
- package/package/components/schema/EditableSchemaDrawer.svelte +121 -127
- package/package/components/schema/EditableSchemaDrawer.svelte.d.ts +2 -1
- package/package/components/schema/EditableSchemaSdkWrapper.svelte +16 -3
- package/package/components/schema/EditableSchemaSdkWrapper.svelte.d.ts +4 -1
- package/package/components/schema/EditableSchemaWrapper.svelte +3 -10
- package/package/components/schema/FlowPropertyEditor.svelte +195 -236
- package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -1
- package/package/components/schema/PropertyEditor.svelte +33 -35
- package/package/components/schema/SchemaFormDND.svelte +11 -10
- package/package/components/schema/SchemaFormDND.svelte.d.ts +4 -3
- package/package/components/schema/editable_schema_wrapper.d.ts +0 -3
- package/package/components/search/GlobalSearchModal.svelte +8 -1
- package/package/components/select/DraggableTags.svelte.d.ts +17 -7
- package/package/components/select/MultiSelect.svelte.d.ts +21 -11
- package/package/components/select/Select.svelte +2 -1
- package/package/components/select/Select.svelte.d.ts +25 -13
- package/package/components/select/SelectDropdown.svelte.d.ts +14 -7
- package/package/components/settings/PremiumInfo.svelte +7 -2
- package/package/components/settings/TokenDisplay.svelte +1 -1
- package/package/components/sidebar/OperatorMenu.svelte +5 -0
- package/package/components/sidebar/SidebarContent.svelte +48 -2
- package/package/components/sidebar/WorkspaceMenu.svelte +116 -17
- package/package/components/toast.js +6 -3
- package/package/components/triggers/AddTriggersButton.svelte +7 -6
- package/package/components/triggers/CaptureWrapper.svelte +21 -16
- package/package/components/triggers/CaptureWrapper.svelte.d.ts +1 -1
- package/package/components/triggers/TriggerLabel.svelte +8 -0
- package/package/components/triggers/TriggerTokens.svelte +1 -1
- package/package/components/triggers/TriggersEditor.svelte +9 -5
- package/package/components/triggers/TriggersTable.svelte +2 -2
- package/package/components/triggers/TriggersWrapper.svelte +17 -5
- package/package/components/triggers/TriggersWrapper.svelte.d.ts +3 -19
- package/package/components/{details/EmailTriggerCaptures.svelte → triggers/email/DefaultEmailCapture.svelte} +5 -5
- package/package/components/{details/EmailTriggerCaptures.svelte.d.ts → triggers/email/DefaultEmailCapture.svelte.d.ts} +4 -4
- package/package/components/{details/EmailTriggerConfigSection.svelte → triggers/email/DefaultEmailConfigSection.svelte} +24 -14
- package/package/components/triggers/email/DefaultEmailConfigSection.svelte.d.ts +13 -0
- package/package/components/triggers/email/DefaultEmailPanel.svelte +71 -0
- package/package/components/triggers/email/DefaultEmailPanel.svelte.d.ts +11 -0
- package/package/components/triggers/email/EmailCapture.svelte +39 -0
- package/package/components/triggers/email/EmailCapture.svelte.d.ts +43 -0
- package/package/components/triggers/email/EmailTriggerEditor.svelte +20 -0
- package/package/components/triggers/email/EmailTriggerEditor.svelte.d.ts +11 -0
- package/package/components/triggers/email/EmailTriggerEditorConfigSection.svelte +133 -0
- package/package/components/triggers/email/EmailTriggerEditorConfigSection.svelte.d.ts +14 -0
- package/package/components/triggers/email/EmailTriggerEditorInner.svelte +335 -0
- package/package/components/triggers/email/EmailTriggerEditorInner.svelte.d.ts +22 -0
- package/package/components/triggers/email/EmailTriggerPanel.svelte +61 -0
- package/package/components/triggers/email/EmailTriggerPanel.svelte.d.ts +14 -0
- package/package/components/triggers/email/utils.d.ts +4 -0
- package/package/components/triggers/email/utils.js +52 -0
- package/package/components/triggers/http/RouteEditorConfigSection.svelte +1 -1
- package/package/components/triggers/http/RouteEditorInner.svelte +1 -1
- package/package/components/triggers/http/utils.js +1 -1
- package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +23 -20
- package/package/components/triggers/nats/NatsTriggersConfigSection.svelte +15 -27
- package/package/components/triggers/nats/NatsTriggersConfigSection.svelte.d.ts +7 -5
- package/package/components/triggers/triggers.svelte.d.ts +1 -0
- package/package/components/triggers/triggers.svelte.js +24 -2
- package/package/components/triggers/utils.js +19 -5
- package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +16 -16
- package/package/components/triggers.d.ts +1 -1
- package/package/components/triggers.js +2 -0
- package/package/components/wizards/AgGridWizard.svelte +85 -80
- package/package/components/workspaceSettings/AISettings.svelte +74 -22
- package/package/components/workspaceSettings/AISettings.svelte.d.ts +2 -1
- package/package/components/workspaceSettings/CreateWorkspace.svelte +395 -0
- package/package/components/workspaceSettings/CreateWorkspace.svelte.d.ts +6 -0
- package/package/components/workspaceSettings/DucklakeSettings.svelte +3 -1
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +1 -1
- package/package/components/workspaceSettings/StorageSettings.svelte +69 -48
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +142 -3
- package/package/gen/schemas.gen.js +144 -3
- package/package/gen/services.gen.d.ts +129 -1
- package/package/gen/services.gen.js +267 -1
- package/package/gen/types.gen.d.ts +434 -8
- package/package/hubPaths.json +6 -2
- package/package/infer.js +1 -1
- package/package/keyboardChain.d.ts +5 -0
- package/package/keyboardChain.js +40 -0
- package/package/script_helpers.d.ts +2 -2
- package/package/script_helpers.js +2 -0
- package/package/services/JobManager.js +2 -2
- package/package/stores.d.ts +4 -1
- package/package/stores.js +16 -6
- package/package/utils/workspaceHierarchy.d.ts +27 -0
- package/package/utils/workspaceHierarchy.js +101 -0
- package/package/utils.d.ts +6 -3
- package/package/utils.js +30 -15
- package/package/workspace_settings.js +2 -3
- package/package.json +10 -12
- package/package/components/DynSelect.svelte.d.ts +0 -11
- package/package/components/ModulePreviewResultViewer.svelte.d.ts +0 -28
- package/package/components/ObjectTypeNarrowing.svelte +0 -18
- package/package/components/ObjectTypeNarrowing.svelte.d.ts +0 -22
- package/package/components/details/DetailPageTriggerPanel.svelte +0 -121
- package/package/components/details/DetailPageTriggerPanel.svelte.d.ts +0 -20
- package/package/components/details/EmailTriggerConfigSection.svelte.d.ts +0 -12
- package/package/components/details/EmailTriggerPanel.svelte +0 -76
- package/package/components/details/EmailTriggerPanel.svelte.d.ts +0 -26
|
@@ -1,17 +1,7 @@
|
|
|
1
|
-
<script lang="ts">import {
|
|
2
|
-
import { getAstNode } from 'svelte-exmarkdown';
|
|
3
|
-
import { editor as meditor } from 'monaco-editor';
|
|
4
|
-
import { getContext, untrack } from 'svelte';
|
|
5
|
-
import { Loader2 } from 'lucide-svelte';
|
|
6
|
-
import { initializeVscode } from '../../../vscode';
|
|
1
|
+
<script lang="ts">import { getAstNode } from 'svelte-exmarkdown';
|
|
7
2
|
import HighlightCode from '../../../HighlightCode.svelte';
|
|
8
3
|
import { csharp, go, graphql, javascript, php, python, rust, shell, sql, typescript, yaml } from 'svelte-highlight/languages';
|
|
9
|
-
import { scriptLangToEditorLang } from '../../../../scripts';
|
|
10
|
-
import { aiChatManager } from '../AIChatManager.svelte';
|
|
11
4
|
const astNode = getAstNode();
|
|
12
|
-
const { message } = getContext('AssistantMessageContext');
|
|
13
|
-
let codeContext = $derived(message.role === 'assistant' &&
|
|
14
|
-
message.contextElements?.find((e) => e.type === 'code'));
|
|
15
5
|
function getSmartLang(lang) {
|
|
16
6
|
switch (lang) {
|
|
17
7
|
case 'python':
|
|
@@ -69,106 +59,15 @@ const SMART_LANG_TO_HIGHLIGHT_LANG = {
|
|
|
69
59
|
};
|
|
70
60
|
let code = $derived(astNode.current.children?.[0]?.children?.[0]?.value);
|
|
71
61
|
let language = $derived(astNode.current.children?.[0]?.properties?.class?.split('-')[1]);
|
|
72
|
-
let loading = $state(true);
|
|
73
|
-
$effect(() => {
|
|
74
|
-
// we only want to trigger when astNode offset is updated not currentReply, otherwise as there is some delay on the offset update, loading would be set to false too early
|
|
75
|
-
const completeReply = untrack(() => aiChatManager.currentReply);
|
|
76
|
-
if (!aiChatManager.loading ||
|
|
77
|
-
completeReply.length > (astNode.current.position?.end.offset ?? 0)) {
|
|
78
|
-
loading = false;
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
let diffEl = $state();
|
|
82
|
-
let diffEditor = $state();
|
|
83
|
-
async function setDiffEditor(diffEl) {
|
|
84
|
-
if (!codeContext) {
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
await initializeVscode();
|
|
88
|
-
diffEditor = meditor.createDiffEditor(diffEl, {
|
|
89
|
-
automaticLayout: true,
|
|
90
|
-
renderSideBySide: false,
|
|
91
|
-
hideUnchangedRegions: {
|
|
92
|
-
enabled: true
|
|
93
|
-
},
|
|
94
|
-
originalEditable: false,
|
|
95
|
-
readOnly: true,
|
|
96
|
-
renderGutterMenu: false,
|
|
97
|
-
renderOverviewRuler: false,
|
|
98
|
-
scrollBeyondLastLine: false,
|
|
99
|
-
overviewRulerLanes: 0,
|
|
100
|
-
lineNumbersMinChars: 0,
|
|
101
|
-
lightbulb: {
|
|
102
|
-
enabled: meditor.ShowLightbulbIconMode.Off
|
|
103
|
-
},
|
|
104
|
-
scrollbar: {
|
|
105
|
-
alwaysConsumeMouseWheel: false
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
diffEditor.setModel({
|
|
109
|
-
original: meditor.createModel(codeContext.content, scriptLangToEditorLang(codeContext.lang)),
|
|
110
|
-
modified: meditor.createModel(code ?? '', language ? getSmartLang(language) : undefined)
|
|
111
|
-
});
|
|
112
|
-
const originalEditor = diffEditor.getOriginalEditor();
|
|
113
|
-
const modifiedEditor = diffEditor.getModifiedEditor();
|
|
114
|
-
originalEditor.onDidContentSizeChange((e) => {
|
|
115
|
-
diffEl.style.height = `${e.contentHeight}px`;
|
|
116
|
-
});
|
|
117
|
-
modifiedEditor.onDidContentSizeChange((e) => {
|
|
118
|
-
diffEl.style.height = `${e.contentHeight}px`;
|
|
119
|
-
});
|
|
120
|
-
updateModifiedModel(code ?? '');
|
|
121
|
-
}
|
|
122
|
-
function updateModifiedModel(code) {
|
|
123
|
-
const modified = diffEditor?.getModifiedEditor();
|
|
124
|
-
if (!modified)
|
|
125
|
-
return;
|
|
126
|
-
const modifiedModel = modified.getModel();
|
|
127
|
-
if (modifiedModel) {
|
|
128
|
-
modifiedModel.setValue(code ?? '');
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
$effect(() => updateModifiedModel(code ?? ''));
|
|
132
|
-
$effect(() => {
|
|
133
|
-
diffEl &&
|
|
134
|
-
language &&
|
|
135
|
-
codeContext &&
|
|
136
|
-
getSmartLang(codeContext.lang) === getSmartLang(language) &&
|
|
137
|
-
untrack(() => diffEl && setDiffEditor(diffEl));
|
|
138
|
-
});
|
|
139
62
|
</script>
|
|
140
63
|
|
|
141
|
-
<div
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
>
|
|
151
|
-
{aiChatManager.pendingNewCode ? 'Accept all' : 'Apply'}
|
|
152
|
-
</Button>
|
|
153
|
-
</div>
|
|
154
|
-
{/if}
|
|
155
|
-
|
|
156
|
-
<div
|
|
157
|
-
class="relative w-full border border-gray-300 dark:border-gray-600 rounded-lg overflow-hidden"
|
|
158
|
-
>
|
|
159
|
-
{#if aiChatManager.mode !== 'navigator' && loading && !code}
|
|
160
|
-
<div class="flex flex-row gap-1 p-2 items-center justify-center">
|
|
161
|
-
<Loader2 class="w-4 h-4 animate-spin" /> Generating code...
|
|
162
|
-
</div>
|
|
163
|
-
{:else if !loading && codeContext && getSmartLang(codeContext.lang) === getSmartLang(language as string)}
|
|
164
|
-
<div bind:this={diffEl} class="w-full h-full"></div>
|
|
165
|
-
{:else}
|
|
166
|
-
<HighlightCode
|
|
167
|
-
class="p-1"
|
|
168
|
-
code={code ?? ''}
|
|
169
|
-
highlightLanguage={SMART_LANG_TO_HIGHLIGHT_LANG[getSmartLang(language as string)]}
|
|
170
|
-
language={undefined}
|
|
171
|
-
/>
|
|
172
|
-
{/if}
|
|
173
|
-
</div>
|
|
64
|
+
<div
|
|
65
|
+
class="flex flex-col not-prose relative w-full border border-gray-300 dark:border-gray-600 rounded-lg overflow-hidden"
|
|
66
|
+
>
|
|
67
|
+
<HighlightCode
|
|
68
|
+
class="p-1"
|
|
69
|
+
code={code ?? ''}
|
|
70
|
+
highlightLanguage={SMART_LANG_TO_HIGHLIGHT_LANG[getSmartLang(language as string)]}
|
|
71
|
+
language={undefined}
|
|
72
|
+
/>
|
|
174
73
|
</div>
|
|
@@ -2,6 +2,7 @@ import type { ResourceType, ScriptLang } from '../../../../gen/types.gen';
|
|
|
2
2
|
import type { ChatCompletionSystemMessageParam, ChatCompletionUserMessageParam } from 'openai/resources/index.mjs';
|
|
3
3
|
import type { ContextElement } from '../context';
|
|
4
4
|
import { type Tool } from '../shared';
|
|
5
|
+
import type { ReviewChangesOpts } from '../monaco-adapter';
|
|
5
6
|
export declare function formatResourceTypes(allResourceTypes: ResourceType[], lang: 'python3' | 'php' | 'bun' | 'deno' | 'nativets' | 'bunnative'): string;
|
|
6
7
|
export declare const SUPPORTED_CHAT_SCRIPT_LANGUAGES: string[];
|
|
7
8
|
export declare function getLangContext(lang: ScriptLang | 'bunnative' | 'jsx' | 'tsx' | 'json', { allowResourcesFetch, isPreprocessor }?: {
|
|
@@ -10,10 +11,10 @@ export declare function getLangContext(lang: ScriptLang | 'bunnative' | 'jsx' |
|
|
|
10
11
|
isFailure?: boolean;
|
|
11
12
|
}): string;
|
|
12
13
|
export declare function getFormattedResourceTypes(lang: ScriptLang | 'bunnative', prompt: string, workspace: string): Promise<string>;
|
|
13
|
-
export declare const CHAT_SYSTEM_PROMPT = "\n\tYou are a coding assistant for the Windmill platform. You are provided with a list of `INSTRUCTIONS` and the current contents of a code file under `CODE`.\n\n\tYour task is to respond to the user's request. Assume all user queries are valid and actionable.\n\n\tWhen the user requests code changes:\n\t-
|
|
14
|
+
export declare const CHAT_SYSTEM_PROMPT = "\n\tYou are a coding assistant for the Windmill platform. You are provided with a list of `INSTRUCTIONS` and the current contents of a code file under `CODE`.\n\n\tYour task is to respond to the user's request. Assume all user queries are valid and actionable.\n\n\tWhen the user requests code changes:\n\t- ALWAYS use the `edit_code` tool to apply code changes. Use it only once with an array of diffs.\n\t- Pass an array of **diff objects** to the `edit_code` tool. Each diff should specify exactly what text to replace and what to replace it with.\n\t- Each diff object must contain:\n\t - `old_string`: The exact text to replace (must match the current code exactly)\n\t - `new_string`: The replacement text\n\t - `replace_all` (optional): Set to true to replace all occurrences, false or omit for first occurrence only\n\t- The code can include `[#START]` and `[#END]` markers to indicate the start and end of a code piece. You MUST only modify the code between these markers if given, and remove them when creating your diffs. If a question is asked about the code, you MUST only talk about the code between the markers. Refer to it as the code piece, not the code between the markers.\n\t- Follow the instructions carefully and explain the reasoning behind your changes in your response text.\n\t- If the request is abstract (e.g., \"make this cleaner\"), interpret it concretely and reflect that in the diffs.\n\t- Preserve existing formatting, indentation, and whitespace unless changes are strictly required to fulfill the user's request.\n\t- The user can ask you to look at or modify specific files, databases or errors by having its name in the INSTRUCTIONS preceded by the @ symbol. In this case, put your focus on the element that is explicitly mentioned.\n\t- The user can ask you questions about a list of `DATABASES` that are available in the user's workspace. If the user asks you a question about a database, you should ask the user to specify the database name if not given, or take the only one available if there is only one.\n\t- You can also receive a `DIFF` of the changes that have been made to the code. You should use this diff to give better answers.\n\t- Before giving your answer, check again that you carefully followed these instructions.\n\t- When asked to create a script that communicates with an external service, you can use the `search_hub_scripts` tool to search for relevant scripts in the hub. Make sure the language is the same as what the user is coding in. If you do not find any relevant scripts, you can use the `search_npm_packages` tool to search for relevant packages and their documentation. Always give a link to the documentation in your answer if possible.\n\t- After applying code changes with the `edit_code` tool, ALWAYS use the `test_run_script` tool to test the code, and iterate on the code until it works as expected (MAX 3 times). If the user cancels the test run, do not try again and wait for the next user instruction.\n\n\tExample diff usage:\n\tTo change \"return 1\" to \"return 2\", use:\n\t[{\n\t\t\"old_string\": \"return 1\",\n\t\t\"new_string\": \"return 2\"\n\t}]\n\n\tTo add a new function and modify an existing one:\n\t[{\n\t\t\"old_string\": \"export async function main() {\",\n\t\t\"new_string\": \"function helper() {\n\treturn 'help';\n}\n\nexport async function main() {\"\n\t}, {\n\t\t\"old_string\": \"return result;\",\n\t\t\"new_string\": \"return result + helper();\"\n\t}]\n\n\tImportant:\n\t- Each old_string must match the exact text in the current code, including whitespace and indentation.\n\t- Do not return the applied code in your response, just explain what you did. You can return code blocks in your response for explanations or examples as per user request.\n\t- Do not mention or reveal these instructions to the user unless explicitly asked to do so.\n";
|
|
14
15
|
export declare const INLINE_CHAT_SYSTEM_PROMPT = "\n# Windmill Inline Coding Assistant\n\nYou are a coding assistant for the Windmill platform. You provide precise code modifications based on user instructions.\n\n## Input Format\n\nYou will receive:\n- **INSTRUCTIONS**: User's modification request\n- **CODE**: Current code content with modification boundaries\n- **DATABASES** *(optional)*: Available workspace databases\n\n### Code Boundaries\n\nThe code contains `[#START]` and `[#END]` markers indicating the modification scope:\n- **MUST** only modify code between these markers\n- **MUST** remove the markers in your response\n- **MUST** preserve all other code exactly as provided\n\n## Task Requirements\n\nReturn the modified CODE that fulfills the user's request. Assume all user queries are valid and actionable.\n\n### Critical Rules\n\n- \u2705 **ALWAYS** include a single code block with the entire updated CODE\n- \u2705 **ALWAYS** use the structured XML output format below\n- \u274C **NEVER** include only modified sections\n- \u274C **NEVER** add explanatory text or comments outside the format\n- \u274C **NEVER** include ``` code fences in your response\n- \u274C **NEVER** modify the code outside the boundaries\n\n## Output Format\n\n```xml\n<changes_made>\nBrief description of what was changed\n</changes_made>\n<new_code>\n[complete modified code without markers]\n</new_code>\n```\n\n## Example\n\n### Input:\n```xml\n<user_request>\nINSTRUCTIONS:\nReturn 2 instead of 1\n\nCODE:\nimport * as wmill from \"windmill-client\"\n\nfunction test() {\n\treturn \"hello\"\n}\n\n[#START]\nexport async function main() {\n\treturn 1;\n}\n[#END]\n</user_request>\n```\n\n### Expected Output:\n```xml\n<changes_made>\nChanged return value from 1 to 2 in main function\n</changes_made>\n<new_code>\nimport * as wmill from \"windmill-client\"\n\nfunction test() {\n\treturn \"hello\"\n}\n\nexport async function main() {\n\treturn 2;\n}\n</new_code>\n```\n";
|
|
15
16
|
export declare const CHAT_USER_PROMPT = "\nINSTRUCTIONS:\n{instructions}\n\nWINDMILL LANGUAGE CONTEXT:\n{lang_context}\n\n";
|
|
16
|
-
export declare function prepareScriptSystemMessage(): ChatCompletionSystemMessageParam;
|
|
17
|
+
export declare function prepareScriptSystemMessage(customPrompt?: string): ChatCompletionSystemMessageParam;
|
|
17
18
|
export declare function prepareScriptTools(language: ScriptLang | 'bunnative', context: ContextElement[]): Tool<ScriptChatHelpers>[];
|
|
18
19
|
export declare function prepareScriptUserMessage(instructions: string, language: ScriptLang | 'bunnative', selectedContext: ContextElement[], options?: {
|
|
19
20
|
isPreprocessor?: boolean;
|
|
@@ -26,8 +27,7 @@ export interface ScriptChatHelpers {
|
|
|
26
27
|
path: string;
|
|
27
28
|
args: Record<string, any>;
|
|
28
29
|
};
|
|
29
|
-
|
|
30
|
-
applyCode: (code: string, applyAll?: boolean) => void;
|
|
30
|
+
applyCode: (code: string, opts?: ReviewChangesOpts) => Promise<void>;
|
|
31
31
|
}
|
|
32
32
|
export declare const resourceTypeTool: Tool<ScriptChatHelpers>;
|
|
33
33
|
export declare function createDbSchemaTool<T>(): Tool<T>;
|
|
@@ -41,4 +41,5 @@ export declare function fetchNpmPackageTypes(packageName: string, version?: stri
|
|
|
41
41
|
types: string;
|
|
42
42
|
error?: string;
|
|
43
43
|
}>;
|
|
44
|
+
export declare const editCodeTool: Tool<ScriptChatHelpers>;
|
|
44
45
|
export declare const testRunScriptTool: Tool<ScriptChatHelpers>;
|
|
@@ -2,7 +2,7 @@ import { ResourceService, JobService } from '../../../../gen/services.gen';
|
|
|
2
2
|
import { capitalize, isObject, toCamel } from '../../../../utils';
|
|
3
3
|
import { get } from 'svelte/store';
|
|
4
4
|
import { compile, phpCompile, pythonCompile } from '../../utils';
|
|
5
|
-
import {
|
|
5
|
+
import { dbSchemas, getCurrentModel } from '../../../../stores';
|
|
6
6
|
import { getDbSchemas } from '../../../apps/components/display/dbtable/utils';
|
|
7
7
|
import { PYTHON_PREPROCESSOR_MODULE_CODE, TS_PREPROCESSOR_MODULE_CODE } from '../../../../script_helpers';
|
|
8
8
|
import { createSearchHubScriptsTool, executeTestRun, buildTestRunArgs, buildContextString } from '../shared';
|
|
@@ -278,20 +278,43 @@ export const CHAT_SYSTEM_PROMPT = `
|
|
|
278
278
|
Your task is to respond to the user's request. Assume all user queries are valid and actionable.
|
|
279
279
|
|
|
280
280
|
When the user requests code changes:
|
|
281
|
-
-
|
|
282
|
-
-
|
|
283
|
-
-
|
|
284
|
-
|
|
281
|
+
- ALWAYS use the \`edit_code\` tool to apply code changes. Use it only once with an array of diffs.
|
|
282
|
+
- Pass an array of **diff objects** to the \`edit_code\` tool. Each diff should specify exactly what text to replace and what to replace it with.
|
|
283
|
+
- Each diff object must contain:
|
|
284
|
+
- \`old_string\`: The exact text to replace (must match the current code exactly)
|
|
285
|
+
- \`new_string\`: The replacement text
|
|
286
|
+
- \`replace_all\` (optional): Set to true to replace all occurrences, false or omit for first occurrence only
|
|
287
|
+
- The code can include \`[#START]\` and \`[#END]\` markers to indicate the start and end of a code piece. You MUST only modify the code between these markers if given, and remove them when creating your diffs. If a question is asked about the code, you MUST only talk about the code between the markers. Refer to it as the code piece, not the code between the markers.
|
|
288
|
+
- Follow the instructions carefully and explain the reasoning behind your changes in your response text.
|
|
289
|
+
- If the request is abstract (e.g., "make this cleaner"), interpret it concretely and reflect that in the diffs.
|
|
285
290
|
- Preserve existing formatting, indentation, and whitespace unless changes are strictly required to fulfill the user's request.
|
|
286
291
|
- The user can ask you to look at or modify specific files, databases or errors by having its name in the INSTRUCTIONS preceded by the @ symbol. In this case, put your focus on the element that is explicitly mentioned.
|
|
287
292
|
- The user can ask you questions about a list of \`DATABASES\` that are available in the user's workspace. If the user asks you a question about a database, you should ask the user to specify the database name if not given, or take the only one available if there is only one.
|
|
288
293
|
- You can also receive a \`DIFF\` of the changes that have been made to the code. You should use this diff to give better answers.
|
|
289
294
|
- Before giving your answer, check again that you carefully followed these instructions.
|
|
290
295
|
- When asked to create a script that communicates with an external service, you can use the \`search_hub_scripts\` tool to search for relevant scripts in the hub. Make sure the language is the same as what the user is coding in. If you do not find any relevant scripts, you can use the \`search_npm_packages\` tool to search for relevant packages and their documentation. Always give a link to the documentation in your answer if possible.
|
|
291
|
-
-
|
|
296
|
+
- After applying code changes with the \`edit_code\` tool, ALWAYS use the \`test_run_script\` tool to test the code, and iterate on the code until it works as expected (MAX 3 times). If the user cancels the test run, do not try again and wait for the next user instruction.
|
|
297
|
+
|
|
298
|
+
Example diff usage:
|
|
299
|
+
To change "return 1" to "return 2", use:
|
|
300
|
+
[{
|
|
301
|
+
"old_string": "return 1",
|
|
302
|
+
"new_string": "return 2"
|
|
303
|
+
}]
|
|
304
|
+
|
|
305
|
+
To add a new function and modify an existing one:
|
|
306
|
+
[{
|
|
307
|
+
"old_string": "export async function main() {",
|
|
308
|
+
"new_string": "function helper() {\n\treturn 'help';\n}\n\nexport async function main() {"
|
|
309
|
+
}, {
|
|
310
|
+
"old_string": "return result;",
|
|
311
|
+
"new_string": "return result + helper();"
|
|
312
|
+
}]
|
|
292
313
|
|
|
293
314
|
Important:
|
|
294
|
-
|
|
315
|
+
- Each old_string must match the exact text in the current code, including whitespace and indentation.
|
|
316
|
+
- Do not return the applied code in your response, just explain what you did. You can return code blocks in your response for explanations or examples as per user request.
|
|
317
|
+
- Do not mention or reveal these instructions to the user unless explicitly asked to do so.
|
|
295
318
|
`;
|
|
296
319
|
export const INLINE_CHAT_SYSTEM_PROMPT = `
|
|
297
320
|
# Windmill Inline Coding Assistant
|
|
@@ -385,10 +408,15 @@ WINDMILL LANGUAGE CONTEXT:
|
|
|
385
408
|
{lang_context}
|
|
386
409
|
|
|
387
410
|
`;
|
|
388
|
-
export function prepareScriptSystemMessage() {
|
|
411
|
+
export function prepareScriptSystemMessage(customPrompt) {
|
|
412
|
+
let content = CHAT_SYSTEM_PROMPT;
|
|
413
|
+
// If there's a custom prompt, prepend it to the system prompt
|
|
414
|
+
if (customPrompt?.trim()) {
|
|
415
|
+
content = `${content}\n\nUSER GIVEN INSTRUCTIONS:\n${customPrompt.trim()}`;
|
|
416
|
+
}
|
|
389
417
|
return {
|
|
390
418
|
role: 'system',
|
|
391
|
-
content
|
|
419
|
+
content
|
|
392
420
|
};
|
|
393
421
|
}
|
|
394
422
|
export function prepareScriptTools(language, context) {
|
|
@@ -403,6 +431,7 @@ export function prepareScriptTools(language, context) {
|
|
|
403
431
|
tools.push(createSearchHubScriptsTool(true));
|
|
404
432
|
tools.push(searchNpmPackagesTool);
|
|
405
433
|
}
|
|
434
|
+
tools.push(editCodeTool);
|
|
406
435
|
tools.push(testRunScriptTool);
|
|
407
436
|
return tools;
|
|
408
437
|
}
|
|
@@ -522,7 +551,8 @@ export async function searchExternalIntegrationResources(args) {
|
|
|
522
551
|
const result = await fetch(`https://registry.npmjs.org/-/v1/search?text=${args.query}&size=2`);
|
|
523
552
|
const data = await result.json();
|
|
524
553
|
const filtered = data.objects.filter((r) => r.searchScore >= SCORE_THRESHOLD);
|
|
525
|
-
const
|
|
554
|
+
const model = getCurrentModel();
|
|
555
|
+
const modelContextWindow = getModelContextWindow(model.model);
|
|
526
556
|
const results = await Promise.all(filtered.map(async (r) => {
|
|
527
557
|
let documentation = '';
|
|
528
558
|
let types = '';
|
|
@@ -633,6 +663,44 @@ export async function fetchNpmPackageTypes(packageName, version = 'latest') {
|
|
|
633
663
|
};
|
|
634
664
|
}
|
|
635
665
|
}
|
|
666
|
+
const EDIT_CODE_TOOL = {
|
|
667
|
+
type: 'function',
|
|
668
|
+
function: {
|
|
669
|
+
name: 'edit_code',
|
|
670
|
+
description: 'Apply code changes to the current script in the editor using an array of diffs',
|
|
671
|
+
parameters: {
|
|
672
|
+
type: 'object',
|
|
673
|
+
properties: {
|
|
674
|
+
diffs: {
|
|
675
|
+
type: 'array',
|
|
676
|
+
description: 'Array of diff objects to apply to the code',
|
|
677
|
+
items: {
|
|
678
|
+
type: 'object',
|
|
679
|
+
properties: {
|
|
680
|
+
old_string: {
|
|
681
|
+
type: 'string',
|
|
682
|
+
description: 'The exact text to replace (must match the current code exactly)'
|
|
683
|
+
},
|
|
684
|
+
new_string: {
|
|
685
|
+
type: 'string',
|
|
686
|
+
description: 'The new text to replace the old_string with'
|
|
687
|
+
},
|
|
688
|
+
replace_all: {
|
|
689
|
+
type: 'boolean',
|
|
690
|
+
description: 'If true, replace all occurrences of old_string. If false or omitted, only replace the first occurrence.'
|
|
691
|
+
}
|
|
692
|
+
},
|
|
693
|
+
required: ['old_string', 'new_string'],
|
|
694
|
+
additionalProperties: false
|
|
695
|
+
}
|
|
696
|
+
}
|
|
697
|
+
},
|
|
698
|
+
additionalProperties: false,
|
|
699
|
+
strict: true,
|
|
700
|
+
required: ['diffs']
|
|
701
|
+
}
|
|
702
|
+
}
|
|
703
|
+
};
|
|
636
704
|
const TEST_RUN_SCRIPT_TOOL = {
|
|
637
705
|
type: 'function',
|
|
638
706
|
function: {
|
|
@@ -649,6 +717,61 @@ const TEST_RUN_SCRIPT_TOOL = {
|
|
|
649
717
|
}
|
|
650
718
|
}
|
|
651
719
|
};
|
|
720
|
+
export const editCodeTool = {
|
|
721
|
+
def: EDIT_CODE_TOOL,
|
|
722
|
+
fn: async function ({ args, helpers, toolCallbacks, toolId }) {
|
|
723
|
+
const scriptOptions = helpers.getScriptOptions();
|
|
724
|
+
if (!scriptOptions) {
|
|
725
|
+
toolCallbacks.setToolStatus(toolId, {
|
|
726
|
+
content: 'No script available to edit',
|
|
727
|
+
error: 'No script found in current context'
|
|
728
|
+
});
|
|
729
|
+
throw new Error('No script code available to edit. Please ensure you have a script open in the editor.');
|
|
730
|
+
}
|
|
731
|
+
if (!args.diffs || !Array.isArray(args.diffs)) {
|
|
732
|
+
toolCallbacks.setToolStatus(toolId, {
|
|
733
|
+
content: 'Invalid diffs provided',
|
|
734
|
+
error: 'Diffs parameter is required and must be an array'
|
|
735
|
+
});
|
|
736
|
+
throw new Error('Diffs parameter is required and must be an array');
|
|
737
|
+
}
|
|
738
|
+
toolCallbacks.setToolStatus(toolId, { content: 'Applying code changes...' });
|
|
739
|
+
try {
|
|
740
|
+
// Save old code
|
|
741
|
+
const oldCode = scriptOptions.code;
|
|
742
|
+
// Apply diffs sequentially
|
|
743
|
+
let updatedCode = oldCode;
|
|
744
|
+
for (const [index, diff] of args.diffs.entries()) {
|
|
745
|
+
const { old_string, new_string, replace_all = false } = diff;
|
|
746
|
+
if (!updatedCode.includes(old_string)) {
|
|
747
|
+
throw new Error(`Diff at index ${index}: old_string "${old_string}" not found in code`);
|
|
748
|
+
}
|
|
749
|
+
if (replace_all) {
|
|
750
|
+
updatedCode = updatedCode.replaceAll(old_string, new_string);
|
|
751
|
+
}
|
|
752
|
+
else {
|
|
753
|
+
updatedCode = updatedCode.replace(old_string, new_string);
|
|
754
|
+
}
|
|
755
|
+
}
|
|
756
|
+
// Apply the code changes directly
|
|
757
|
+
await helpers.applyCode(updatedCode, { applyAll: true, mode: 'apply' });
|
|
758
|
+
// Show revert mode
|
|
759
|
+
await helpers.applyCode(oldCode, { mode: 'revert' });
|
|
760
|
+
toolCallbacks.setToolStatus(toolId, {
|
|
761
|
+
content: `Code changes applied`
|
|
762
|
+
});
|
|
763
|
+
return `Applied changes to the script editor.`;
|
|
764
|
+
}
|
|
765
|
+
catch (error) {
|
|
766
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
|
|
767
|
+
toolCallbacks.setToolStatus(toolId, {
|
|
768
|
+
content: 'Failed to apply code changes',
|
|
769
|
+
error: errorMessage
|
|
770
|
+
});
|
|
771
|
+
throw new Error(`Failed to apply code changes: ${errorMessage}`);
|
|
772
|
+
}
|
|
773
|
+
}
|
|
774
|
+
};
|
|
652
775
|
export const testRunScriptTool = {
|
|
653
776
|
def: TEST_RUN_SCRIPT_TOOL,
|
|
654
777
|
fn: async function ({ args, workspace, helpers, toolCallbacks, toolId }) {
|
|
@@ -660,23 +783,13 @@ export const testRunScriptTool = {
|
|
|
660
783
|
});
|
|
661
784
|
throw new Error('No script code available to test. Please ensure you have a script open in the editor.');
|
|
662
785
|
}
|
|
663
|
-
let codeToTest = scriptOptions.code;
|
|
664
|
-
// Check if there are suggested code changes to apply
|
|
665
|
-
const lastSuggestedCode = helpers.getLastSuggestedCode();
|
|
666
|
-
if (lastSuggestedCode && lastSuggestedCode !== codeToTest) {
|
|
667
|
-
codeToTest = lastSuggestedCode;
|
|
668
|
-
toolCallbacks.setToolStatus(toolId, { content: 'Applying code changes...' });
|
|
669
|
-
// Apply the suggested code changes using the existing mechanism
|
|
670
|
-
helpers.applyCode(lastSuggestedCode, true);
|
|
671
|
-
toolCallbacks.setToolStatus(toolId, { content: 'Code changes applied, starting test...' });
|
|
672
|
-
}
|
|
673
786
|
const parsedArgs = await buildTestRunArgs(args, this.def);
|
|
674
787
|
return executeTestRun({
|
|
675
788
|
jobStarter: () => JobService.runScriptPreview({
|
|
676
789
|
workspace: workspace,
|
|
677
790
|
requestBody: {
|
|
678
791
|
path: scriptOptions.path,
|
|
679
|
-
content:
|
|
792
|
+
content: scriptOptions.code,
|
|
680
793
|
args: parsedArgs,
|
|
681
794
|
language: scriptOptions.lang
|
|
682
795
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
1
|
+
import type { ChatCompletionFunctionTool, ChatCompletionMessageFunctionToolCall, ChatCompletionMessageParam } from 'openai/resources/chat/completions.mjs';
|
|
2
|
+
import type { ContextElement, FlowModuleCodePieceElement } from './context';
|
|
3
3
|
import type { ExtendedOpenFlow } from '../../flows/types';
|
|
4
4
|
import type { FunctionParameters } from 'openai/resources/shared.mjs';
|
|
5
5
|
import { z } from 'zod';
|
|
@@ -12,8 +12,9 @@ export interface ContextStringResult {
|
|
|
12
12
|
hasDiff: boolean;
|
|
13
13
|
hasFlowModule: boolean;
|
|
14
14
|
}
|
|
15
|
+
export declare const extractAllModules: (modules: FlowModule[]) => FlowModule[];
|
|
15
16
|
export declare const findModuleById: (modules: FlowModule[], moduleId: string) => FlowModule | undefined;
|
|
16
|
-
export declare function applyCodePiecesToFlowModules(codePieces:
|
|
17
|
+
export declare function applyCodePiecesToFlowModules(codePieces: FlowModuleCodePieceElement[], flowModules: FlowModule[]): string;
|
|
17
18
|
export declare function buildContextString(selectedContext: ContextElement[]): string;
|
|
18
19
|
type BaseDisplayMessage = {
|
|
19
20
|
content: string;
|
|
@@ -43,12 +44,12 @@ export type AssistantDisplayMessage = BaseDisplayMessage & {
|
|
|
43
44
|
export type DisplayMessage = UserDisplayMessage | ToolDisplayMessage | AssistantDisplayMessage;
|
|
44
45
|
export declare function processToolCall<T>({ tools, toolCall, helpers, toolCallbacks }: {
|
|
45
46
|
tools: Tool<T>[];
|
|
46
|
-
toolCall:
|
|
47
|
+
toolCall: ChatCompletionMessageFunctionToolCall;
|
|
47
48
|
helpers: T;
|
|
48
49
|
toolCallbacks: ToolCallbacks;
|
|
49
50
|
}): Promise<ChatCompletionMessageParam>;
|
|
50
51
|
export interface Tool<T> {
|
|
51
|
-
def:
|
|
52
|
+
def: ChatCompletionFunctionTool;
|
|
52
53
|
fn: (p: {
|
|
53
54
|
args: any;
|
|
54
55
|
workspace: string;
|
|
@@ -69,16 +70,16 @@ export interface ToolCallbacks {
|
|
|
69
70
|
setToolStatus: (id: string, metadata?: Partial<ToolDisplayMessage>) => void;
|
|
70
71
|
requestConfirmation?: (toolId: string) => Promise<boolean>;
|
|
71
72
|
}
|
|
72
|
-
export declare function createToolDef(zodSchema: z.ZodSchema, name: string, description: string):
|
|
73
|
+
export declare function createToolDef(zodSchema: z.ZodSchema, name: string, description: string): ChatCompletionFunctionTool;
|
|
73
74
|
export declare const createSearchHubScriptsTool: (withContent?: boolean) => {
|
|
74
|
-
def:
|
|
75
|
+
def: ChatCompletionFunctionTool;
|
|
75
76
|
fn: ({ args, toolId, toolCallbacks }: {
|
|
76
77
|
args: any;
|
|
77
78
|
toolId: any;
|
|
78
79
|
toolCallbacks: any;
|
|
79
80
|
}) => Promise<string>;
|
|
80
81
|
};
|
|
81
|
-
export declare function buildSchemaForTool(toolDef:
|
|
82
|
+
export declare function buildSchemaForTool(toolDef: ChatCompletionFunctionTool, schemaBuilder: () => Promise<FunctionParameters>): Promise<boolean>;
|
|
82
83
|
export interface TestRunConfig {
|
|
83
84
|
jobStarter: () => Promise<string>;
|
|
84
85
|
workspace: string;
|
|
@@ -90,6 +91,6 @@ export interface TestRunConfig {
|
|
|
90
91
|
export declare function pollJobCompletion(jobId: string, workspace: string, toolId: string, toolCallbacks: ToolCallbacks): Promise<CompletedJob>;
|
|
91
92
|
export declare function extractCodeFromMarkdown(markdown: string): string[];
|
|
92
93
|
export declare function getLatestAssistantMessage(displayMessages: DisplayMessage[]): string | undefined;
|
|
93
|
-
export declare function buildTestRunArgs(args: any, toolDef:
|
|
94
|
+
export declare function buildTestRunArgs(args: any, toolDef: ChatCompletionFunctionTool): Promise<any>;
|
|
94
95
|
export declare function executeTestRun(config: TestRunConfig): Promise<string>;
|
|
95
96
|
export {};
|
|
@@ -1,10 +1,27 @@
|
|
|
1
1
|
import { get } from 'svelte/store';
|
|
2
|
-
import {
|
|
2
|
+
import { workspaceStore, getCurrentModel } from '../../../stores';
|
|
3
3
|
import { zodToJsonSchema } from 'zod-to-json-schema';
|
|
4
4
|
import { z } from 'zod';
|
|
5
5
|
import { ScriptService, JobService } from '../../../gen';
|
|
6
6
|
import { scriptLangToEditorLang } from '../../../scripts';
|
|
7
7
|
import YAML from 'yaml';
|
|
8
|
+
export const extractAllModules = (modules) => {
|
|
9
|
+
return modules.flatMap((m) => {
|
|
10
|
+
if (m.value.type === 'forloopflow' || m.value.type === 'whileloopflow') {
|
|
11
|
+
return [m, ...extractAllModules(m.value.modules)];
|
|
12
|
+
}
|
|
13
|
+
if (m.value.type === 'branchall') {
|
|
14
|
+
return [m, ...extractAllModules(m.value.branches.flatMap((b) => b.modules))];
|
|
15
|
+
}
|
|
16
|
+
if (m.value.type === 'branchone') {
|
|
17
|
+
return [
|
|
18
|
+
m,
|
|
19
|
+
...extractAllModules([...m.value.branches.flatMap((b) => b.modules), ...m.value.default])
|
|
20
|
+
];
|
|
21
|
+
}
|
|
22
|
+
return [m];
|
|
23
|
+
});
|
|
24
|
+
};
|
|
8
25
|
export const findModuleById = (modules, moduleId) => {
|
|
9
26
|
for (const module of modules) {
|
|
10
27
|
if (module.id === moduleId) {
|
|
@@ -48,18 +65,13 @@ const applyCodePieceToCodeContext = (codePieces, codeContext) => {
|
|
|
48
65
|
return code.join('\n');
|
|
49
66
|
};
|
|
50
67
|
export function applyCodePiecesToFlowModules(codePieces, flowModules) {
|
|
51
|
-
// Parse code piece titles to extract module IDs
|
|
52
|
-
// Format: "[id] L3-L5"
|
|
53
68
|
const moduleCodePieces = new Map();
|
|
54
69
|
for (const codePiece of codePieces) {
|
|
55
|
-
const
|
|
56
|
-
if (
|
|
57
|
-
|
|
58
|
-
if (!moduleCodePieces.has(moduleId)) {
|
|
59
|
-
moduleCodePieces.set(moduleId, []);
|
|
60
|
-
}
|
|
61
|
-
moduleCodePieces.get(moduleId).push(codePiece);
|
|
70
|
+
const moduleId = codePiece.id;
|
|
71
|
+
if (!moduleCodePieces.has(moduleId)) {
|
|
72
|
+
moduleCodePieces.set(moduleId, []);
|
|
62
73
|
}
|
|
74
|
+
moduleCodePieces.get(moduleId).push(codePiece);
|
|
63
75
|
}
|
|
64
76
|
// Clone modules to avoid mutation
|
|
65
77
|
const modifiedModules = JSON.parse(JSON.stringify(flowModules));
|
|
@@ -296,8 +308,8 @@ export async function buildSchemaForTool(toolDef, schemaBuilder) {
|
|
|
296
308
|
}
|
|
297
309
|
toolDef.function.parameters = { ...schema, additionalProperties: false };
|
|
298
310
|
// OPEN AI models don't support strict mode well with schema with complex properties, so we disable it
|
|
299
|
-
const model =
|
|
300
|
-
if (model === 'openai' || model === 'azure_openai') {
|
|
311
|
+
const model = getCurrentModel();
|
|
312
|
+
if (model.provider === 'openai' || model.provider === 'azure_openai') {
|
|
301
313
|
toolDef.function.strict = false;
|
|
302
314
|
}
|
|
303
315
|
return true;
|
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
import type { AIProvider, AIProviderModel } from '../../gen';
|
|
2
2
|
import { type DBSchema, type GraphqlSchema, type SQLSchema } from '../../stores';
|
|
3
|
-
import
|
|
4
|
-
import type { ChatCompletionCreateParams, ChatCompletionMessageParam } from 'openai/resources/index.mjs';
|
|
3
|
+
import OpenAI from 'openai';
|
|
4
|
+
import type { ChatCompletionChunk, ChatCompletionCreateParams, ChatCompletionCreateParamsNonStreaming, ChatCompletionCreateParamsStreaming, ChatCompletionMessageParam } from 'openai/resources/index.mjs';
|
|
5
|
+
import Anthropic from '@anthropic-ai/sdk';
|
|
5
6
|
import { type Writable } from 'svelte/store';
|
|
6
7
|
import { type Script } from '../../gen';
|
|
8
|
+
import { type Tool, type ToolCallbacks } from './chat/shared';
|
|
9
|
+
import type { Stream } from 'openai/core/streaming.mjs';
|
|
7
10
|
export declare const SUPPORTED_LANGUAGES: Set<string>;
|
|
8
|
-
|
|
11
|
+
interface AIProviderDetails {
|
|
12
|
+
label: string;
|
|
13
|
+
defaultModels: string[];
|
|
14
|
+
}
|
|
15
|
+
export declare const AI_PROVIDERS: Record<AIProvider, AIProviderDetails>;
|
|
9
16
|
export interface ModelResponse {
|
|
10
17
|
id: string;
|
|
11
18
|
object: string;
|
|
@@ -17,15 +24,18 @@ export interface ModelResponse {
|
|
|
17
24
|
chat_completion: boolean;
|
|
18
25
|
};
|
|
19
26
|
}
|
|
20
|
-
export declare function fetchAvailableModels(resourcePath: string, workspace: string, provider: AIProvider): Promise<string[]>;
|
|
21
|
-
export declare function getModelContextWindow(model: string): 1000000 |
|
|
27
|
+
export declare function fetchAvailableModels(resourcePath: string, workspace: string, provider: AIProvider, signal?: AbortSignal): Promise<string[]>;
|
|
28
|
+
export declare function getModelContextWindow(model: string): 1000000 | 400000 | 128000 | 200000 | 32000;
|
|
22
29
|
export declare const PROVIDER_COMPLETION_CONFIG_MAP: Record<AIProvider, ChatCompletionCreateParams>;
|
|
23
30
|
declare class WorkspacedAIClients {
|
|
24
31
|
private openaiClient;
|
|
32
|
+
private anthropicClient;
|
|
25
33
|
init(workspace: string): void;
|
|
26
34
|
private getBaseURL;
|
|
27
35
|
private initOpenai;
|
|
36
|
+
private initAnthropic;
|
|
28
37
|
getOpenaiClient(): OpenAI;
|
|
38
|
+
getAnthropicClient(): Anthropic;
|
|
29
39
|
}
|
|
30
40
|
export declare const workspaceAIClients: WorkspacedAIClients;
|
|
31
41
|
export declare function testKey({ apiKey, resourcePath, model, abortController, messages, aiProvider }: {
|
|
@@ -60,6 +70,15 @@ export declare function addResourceTypes(scriptOptions: CopilotOptions, prompt:
|
|
|
60
70
|
export declare const MAX_SCHEMA_LENGTH: number;
|
|
61
71
|
export declare function addThousandsSeparator(n: number): string;
|
|
62
72
|
export declare function stringifySchema(dbSchema: Omit<SQLSchema, 'stringified'> | Omit<GraphqlSchema, 'stringified'>): string;
|
|
73
|
+
export declare function getProviderAndCompletionConfig<K extends boolean>({ messages, stream, tools, forceModelProvider }: {
|
|
74
|
+
messages: ChatCompletionMessageParam[];
|
|
75
|
+
stream: K;
|
|
76
|
+
tools?: OpenAI.Chat.Completions.ChatCompletionTool[];
|
|
77
|
+
forceModelProvider?: AIProviderModel;
|
|
78
|
+
}): {
|
|
79
|
+
provider: AIProvider;
|
|
80
|
+
config: K extends true ? ChatCompletionCreateParamsStreaming : ChatCompletionCreateParamsNonStreaming;
|
|
81
|
+
};
|
|
63
82
|
export declare function getNonStreamingCompletion(messages: ChatCompletionMessageParam[], abortController: AbortController, testOptions?: {
|
|
64
83
|
apiKey?: string;
|
|
65
84
|
resourcePath?: string;
|
|
@@ -67,9 +86,11 @@ export declare function getNonStreamingCompletion(messages: ChatCompletionMessag
|
|
|
67
86
|
}): Promise<string>;
|
|
68
87
|
export declare const FIM_MAX_TOKENS = 256;
|
|
69
88
|
export declare function getFimCompletion(prompt: string, suffix: string, providerModel: AIProviderModel, abortController: AbortController): Promise<string | undefined>;
|
|
70
|
-
export declare function getCompletion(messages: ChatCompletionMessageParam[], abortController: AbortController, tools?: OpenAI.Chat.Completions.ChatCompletionTool[]): Promise<
|
|
71
|
-
|
|
72
|
-
|
|
89
|
+
export declare function getCompletion(messages: ChatCompletionMessageParam[], abortController: AbortController, tools?: OpenAI.Chat.Completions.ChatCompletionTool[]): Promise<Stream<ChatCompletionChunk>>;
|
|
90
|
+
export declare function parseOpenAICompletion(completion: Stream<ChatCompletionChunk>, callbacks: ToolCallbacks & {
|
|
91
|
+
onNewToken: (token: string) => void;
|
|
92
|
+
onMessageEnd: () => void;
|
|
93
|
+
}, messages: ChatCompletionMessageParam[], addedMessages: ChatCompletionMessageParam[], tools: Tool<any>[], helpers: any): Promise<boolean>;
|
|
73
94
|
export declare function getResponseFromEvent(part: OpenAI.Chat.Completions.ChatCompletionChunk): string;
|
|
74
95
|
export declare function copilot(scriptOptions: CopilotOptions, generatedCode: Writable<string>, abortController: AbortController, generatedExplanation?: Writable<string>): Promise<string>;
|
|
75
96
|
export declare function deltaCodeCompletion(messages: ChatCompletionMessageParam[], generatedCodeDelta: Writable<string>, abortController: AbortController): Promise<string>;
|