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
|
@@ -10,7 +10,7 @@ let contextTooltipWord = $state('');
|
|
|
10
10
|
let tooltipPosition = $state({ x: 0, y: 0 });
|
|
11
11
|
let textarea = $state(undefined);
|
|
12
12
|
let tooltipElement = $state(undefined);
|
|
13
|
-
let
|
|
13
|
+
let tooltipCurrentViewNumber = $state(0);
|
|
14
14
|
// Properties to copy for caret position calculation
|
|
15
15
|
const properties = [
|
|
16
16
|
'direction',
|
|
@@ -142,18 +142,17 @@ function handleContextSelection(contextElement) {
|
|
|
142
142
|
updateInstructionsWithContext(contextElement);
|
|
143
143
|
showContextTooltip = false;
|
|
144
144
|
}
|
|
145
|
-
async function updateTooltipPosition(
|
|
146
|
-
if (!textarea
|
|
145
|
+
async function updateTooltipPosition(currentViewItemsNumber) {
|
|
146
|
+
if (!textarea)
|
|
147
147
|
return;
|
|
148
148
|
try {
|
|
149
149
|
const coords = getCaretCoordinates(textarea, textarea.selectionEnd);
|
|
150
150
|
const rect = textarea.getBoundingClientRect();
|
|
151
|
-
const filteredAvailableContext = availableContext.filter((c) => !contextTooltipWord || c.title.toLowerCase().includes(contextTooltipWord.slice(1)));
|
|
152
151
|
const itemHeight = 28; // Estimated height of one item + gap (Button: p-1(8px) + text-xs(16px) = 24px; Parent: gap-1(4px) = 28px)
|
|
153
152
|
const containerPadding = 8; // p-1 top + p-1 bottom = 4px + 4px = 8px
|
|
154
153
|
const maxHeight = 192 + containerPadding; // max-h-48 (192px) + containerPadding (8px)
|
|
155
154
|
// Calculate uncapped height, subtract gap from last item as it's not needed
|
|
156
|
-
const numItems =
|
|
155
|
+
const numItems = currentViewItemsNumber;
|
|
157
156
|
let uncappedHeight = numItems > 0 ? numItems * itemHeight - 4 + containerPadding : containerPadding;
|
|
158
157
|
// Ensure height is at least containerPadding even if no items
|
|
159
158
|
uncappedHeight = Math.max(uncappedHeight, containerPadding);
|
|
@@ -211,59 +210,29 @@ function handleInput(e) {
|
|
|
211
210
|
else {
|
|
212
211
|
showContextTooltip = false;
|
|
213
212
|
contextTooltipWord = '';
|
|
214
|
-
selectedSuggestionIndex = 0;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
function handleKeyPress(e) {
|
|
218
|
-
if (e.key === 'Enter' && !e.shiftKey) {
|
|
219
|
-
e.preventDefault();
|
|
220
|
-
if (contextTooltipWord) {
|
|
221
|
-
const filteredContext = availableContext.filter((c) => !contextTooltipWord || c.title.toLowerCase().includes(contextTooltipWord.slice(1)));
|
|
222
|
-
const contextElement = filteredContext[selectedSuggestionIndex];
|
|
223
|
-
if (contextElement) {
|
|
224
|
-
const isInSelectedContext = selectedContext.find((c) => c.title === contextElement.title && c.type === contextElement.type);
|
|
225
|
-
// If the context element is already in the selected context and the last word in the instructions is the same as the context element title, send request
|
|
226
|
-
if (isInSelectedContext && value.split(' ').pop() === '@' + contextElement.title) {
|
|
227
|
-
onSendRequest();
|
|
228
|
-
return;
|
|
229
|
-
}
|
|
230
|
-
handleContextSelection(contextElement);
|
|
231
|
-
}
|
|
232
|
-
else if (contextTooltipWord === '@' && availableContext.length > 0) {
|
|
233
|
-
handleContextSelection(availableContext[0]);
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
else {
|
|
237
|
-
onSendRequest();
|
|
238
|
-
}
|
|
239
213
|
}
|
|
240
214
|
}
|
|
241
215
|
function handleKeyDown(e) {
|
|
216
|
+
// Pass to parent first if provided
|
|
242
217
|
if (onKeyDown) {
|
|
243
218
|
onKeyDown(e);
|
|
244
219
|
}
|
|
245
|
-
if (
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
e.preventDefault();
|
|
250
|
-
const contextElement = filteredContext[selectedSuggestionIndex];
|
|
251
|
-
if (contextElement) {
|
|
252
|
-
handleContextSelection(contextElement);
|
|
220
|
+
if (showContextTooltip) {
|
|
221
|
+
// avoid new line after Enter in the tooltip
|
|
222
|
+
if (e.key === 'Enter') {
|
|
223
|
+
e.preventDefault();
|
|
253
224
|
}
|
|
225
|
+
return;
|
|
254
226
|
}
|
|
255
|
-
if (e.key === '
|
|
256
|
-
e.preventDefault();
|
|
257
|
-
selectedSuggestionIndex = (selectedSuggestionIndex + 1) % filteredContext.length;
|
|
258
|
-
}
|
|
259
|
-
else if (e.key === 'ArrowUp') {
|
|
227
|
+
if (e.key === 'Enter' && !e.shiftKey) {
|
|
260
228
|
e.preventDefault();
|
|
261
|
-
|
|
262
|
-
(selectedSuggestionIndex - 1 + filteredContext.length) % filteredContext.length;
|
|
229
|
+
onSendRequest();
|
|
263
230
|
}
|
|
264
231
|
}
|
|
265
232
|
$effect(() => {
|
|
266
|
-
|
|
233
|
+
if (showContextTooltip) {
|
|
234
|
+
updateTooltipPosition(tooltipCurrentViewNumber);
|
|
235
|
+
}
|
|
267
236
|
});
|
|
268
237
|
export function focus() {
|
|
269
238
|
textarea?.focus();
|
|
@@ -283,7 +252,6 @@ export function focus() {
|
|
|
283
252
|
</div>
|
|
284
253
|
<textarea
|
|
285
254
|
bind:this={textarea}
|
|
286
|
-
onkeypress={handleKeyPress}
|
|
287
255
|
onkeydown={handleKeyDown}
|
|
288
256
|
bind:value
|
|
289
257
|
use:autosize
|
|
@@ -319,7 +287,12 @@ export function focus() {
|
|
|
319
287
|
}}
|
|
320
288
|
showAllAvailable={true}
|
|
321
289
|
stringSearch={contextTooltipWord.slice(1)}
|
|
322
|
-
|
|
290
|
+
onViewChange={(newNumber) => {
|
|
291
|
+
tooltipCurrentViewNumber = newNumber
|
|
292
|
+
}}
|
|
293
|
+
setShowing={(showing) => {
|
|
294
|
+
showContextTooltip = showing
|
|
295
|
+
}}
|
|
323
296
|
/>
|
|
324
297
|
</div>
|
|
325
298
|
</Portal>
|
|
@@ -13,6 +13,13 @@ function formatJson(obj) {
|
|
|
13
13
|
return obj;
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
|
+
for (const key in obj) {
|
|
17
|
+
try {
|
|
18
|
+
const parsed = JSON.parse(obj[key]);
|
|
19
|
+
obj[key] = parsed;
|
|
20
|
+
}
|
|
21
|
+
catch { }
|
|
22
|
+
}
|
|
16
23
|
return JSON.stringify(obj, null, 2);
|
|
17
24
|
}
|
|
18
25
|
catch {
|
|
@@ -71,7 +78,9 @@ async function copyToClipboard() {
|
|
|
71
78
|
<div
|
|
72
79
|
class="bg-surface-secondary border border-gray-200 dark:border-gray-700 rounded p-3 overflow-x-auto max-h-64 overflow-y-auto"
|
|
73
80
|
>
|
|
74
|
-
<pre class="text-2xs text-primary whitespace-pre-wrap"
|
|
81
|
+
<pre class="text-2xs text-primary whitespace-pre-wrap"
|
|
82
|
+
>{formatJson($state.snapshot(content))}</pre
|
|
83
|
+
>
|
|
75
84
|
</div>
|
|
76
85
|
{:else}
|
|
77
86
|
<div
|
|
@@ -14,8 +14,8 @@ const hasParameters = $derived(message.parameters !== undefined && Object.keys(m
|
|
|
14
14
|
<!-- Collapsible Header -->
|
|
15
15
|
<button
|
|
16
16
|
class={twMerge(
|
|
17
|
-
|
|
18
|
-
message.needsConfirmation ?
|
|
17
|
+
'w-full p-3 bg-surface-secondary hover:bg-surface-hover transition-colors flex items-center justify-between text-left border-b border-gray-200 dark:border-gray-700',
|
|
18
|
+
message.needsConfirmation ? 'opacity-80' : ''
|
|
19
19
|
)}
|
|
20
20
|
onclick={() => (isExpanded = !isExpanded)}
|
|
21
21
|
disabled={!message.showDetails}
|
|
@@ -46,7 +46,7 @@ const hasParameters = $derived(message.parameters !== undefined && Object.keys(m
|
|
|
46
46
|
{#if isExpanded}
|
|
47
47
|
<div class="p-3 bg-surface space-y-3">
|
|
48
48
|
<!-- Parameters Section -->
|
|
49
|
-
<div class={message.needsConfirmation ?
|
|
49
|
+
<div class={message.needsConfirmation ? 'opacity-80' : ''}>
|
|
50
50
|
<ToolContentDisplay title="Parameters" content={message.parameters} />
|
|
51
51
|
</div>
|
|
52
52
|
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { OpenAI } from 'openai';
|
|
2
|
+
import type { ChatCompletionMessageParam } from 'openai/resources/index.mjs';
|
|
3
|
+
import type { MessageParam, TextBlockParam, ToolUnion } from '@anthropic-ai/sdk/resources';
|
|
4
|
+
import type { MessageStream } from '@anthropic-ai/sdk/lib/MessageStream';
|
|
5
|
+
import { type Tool, type ToolCallbacks } from './shared';
|
|
6
|
+
export declare function getAnthropicCompletion(messages: ChatCompletionMessageParam[], abortController: AbortController, tools?: OpenAI.Chat.Completions.ChatCompletionFunctionTool[]): Promise<MessageStream>;
|
|
7
|
+
export declare function parseAnthropicCompletion(completion: MessageStream, callbacks: ToolCallbacks & {
|
|
8
|
+
onNewToken: (token: string) => void;
|
|
9
|
+
onMessageEnd: () => void;
|
|
10
|
+
}, messages: ChatCompletionMessageParam[], addedMessages: ChatCompletionMessageParam[], tools: Tool<any>[], helpers: any): Promise<boolean>;
|
|
11
|
+
export declare function convertOpenAIToAnthropicMessages(messages: ChatCompletionMessageParam[]): {
|
|
12
|
+
system: TextBlockParam[] | undefined;
|
|
13
|
+
messages: MessageParam[];
|
|
14
|
+
};
|
|
15
|
+
export declare function convertOpenAIToolsToAnthropic(tools?: OpenAI.Chat.Completions.ChatCompletionFunctionTool[]): ToolUnion[] | undefined;
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import { OpenAI } from 'openai';
|
|
2
|
+
import { getProviderAndCompletionConfig, workspaceAIClients } from '../lib';
|
|
3
|
+
import { processToolCall } from './shared';
|
|
4
|
+
export async function getAnthropicCompletion(messages, abortController, tools) {
|
|
5
|
+
const { provider, config } = getProviderAndCompletionConfig({ messages, stream: true });
|
|
6
|
+
const { system, messages: anthropicMessages } = convertOpenAIToAnthropicMessages(messages);
|
|
7
|
+
const anthropicTools = convertOpenAIToolsToAnthropic(tools);
|
|
8
|
+
const anthropicClient = workspaceAIClients.getAnthropicClient();
|
|
9
|
+
const anthropicParams = {
|
|
10
|
+
model: config.model,
|
|
11
|
+
max_tokens: config.max_tokens,
|
|
12
|
+
messages: anthropicMessages,
|
|
13
|
+
...(system && { system }),
|
|
14
|
+
...(anthropicTools && { tools: anthropicTools }),
|
|
15
|
+
...(typeof config.temperature === 'number' && { temperature: config.temperature })
|
|
16
|
+
};
|
|
17
|
+
const stream = anthropicClient.messages.stream(anthropicParams, {
|
|
18
|
+
signal: abortController.signal,
|
|
19
|
+
headers: {
|
|
20
|
+
'X-Provider': provider,
|
|
21
|
+
'anthropic-version': '2023-06-01',
|
|
22
|
+
'X-Anthropic-SDK': 'true'
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
return stream;
|
|
26
|
+
}
|
|
27
|
+
export async function parseAnthropicCompletion(completion, callbacks, messages, addedMessages, tools, helpers) {
|
|
28
|
+
let toolCallsToProcess = [];
|
|
29
|
+
let error = null;
|
|
30
|
+
// Handle text streaming
|
|
31
|
+
completion.on('text', (textDelta, _textSnapshot) => {
|
|
32
|
+
callbacks.onNewToken(textDelta);
|
|
33
|
+
});
|
|
34
|
+
completion.on('message', (message) => {
|
|
35
|
+
for (const block of message.content) {
|
|
36
|
+
if (block.type === 'text') {
|
|
37
|
+
const text = block.text;
|
|
38
|
+
const assistantMessage = { role: 'assistant', content: text };
|
|
39
|
+
messages.push(assistantMessage);
|
|
40
|
+
addedMessages.push(assistantMessage);
|
|
41
|
+
callbacks.onMessageEnd();
|
|
42
|
+
}
|
|
43
|
+
else if (block.type === 'tool_use') {
|
|
44
|
+
// Convert Anthropic tool calls to OpenAI format for compatibility
|
|
45
|
+
toolCallsToProcess.push({
|
|
46
|
+
id: block.id,
|
|
47
|
+
type: 'function',
|
|
48
|
+
function: {
|
|
49
|
+
name: block.name,
|
|
50
|
+
arguments: JSON.stringify(block.input)
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
// Preprocess tool if it has a preAction
|
|
54
|
+
const tool = tools.find((t) => t.def.function.name === block.name);
|
|
55
|
+
if (tool && tool.preAction) {
|
|
56
|
+
tool.preAction({ toolCallbacks: callbacks, toolId: block.id });
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
// Handle errors
|
|
62
|
+
completion.on('error', (e) => {
|
|
63
|
+
console.error('Anthropic stream error:', e);
|
|
64
|
+
error = e;
|
|
65
|
+
});
|
|
66
|
+
// Wait for completion
|
|
67
|
+
await completion.done();
|
|
68
|
+
callbacks.onMessageEnd();
|
|
69
|
+
if (error) {
|
|
70
|
+
throw error;
|
|
71
|
+
}
|
|
72
|
+
// Process tool calls if any
|
|
73
|
+
if (toolCallsToProcess.length > 0) {
|
|
74
|
+
const assistantWithTools = {
|
|
75
|
+
role: 'assistant',
|
|
76
|
+
tool_calls: toolCallsToProcess
|
|
77
|
+
};
|
|
78
|
+
messages.push(assistantWithTools);
|
|
79
|
+
addedMessages.push(assistantWithTools);
|
|
80
|
+
// Process each tool call
|
|
81
|
+
for (const toolCall of toolCallsToProcess) {
|
|
82
|
+
const messageToAdd = await processToolCall({
|
|
83
|
+
tools,
|
|
84
|
+
toolCall,
|
|
85
|
+
helpers,
|
|
86
|
+
toolCallbacks: callbacks
|
|
87
|
+
});
|
|
88
|
+
messages.push(messageToAdd);
|
|
89
|
+
addedMessages.push(messageToAdd);
|
|
90
|
+
}
|
|
91
|
+
return true; // Continue the conversation loop
|
|
92
|
+
}
|
|
93
|
+
return false; // End the conversation
|
|
94
|
+
}
|
|
95
|
+
export function convertOpenAIToAnthropicMessages(messages) {
|
|
96
|
+
let system;
|
|
97
|
+
const anthropicMessages = [];
|
|
98
|
+
for (const message of messages) {
|
|
99
|
+
if (message.role === 'system') {
|
|
100
|
+
const systemText = typeof message.content === 'string' ? message.content : JSON.stringify(message.content);
|
|
101
|
+
// Convert system to array format with cache_control for caching
|
|
102
|
+
system = [
|
|
103
|
+
{
|
|
104
|
+
type: 'text',
|
|
105
|
+
text: systemText,
|
|
106
|
+
cache_control: { type: 'ephemeral' }
|
|
107
|
+
}
|
|
108
|
+
];
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
if (message.role === 'user') {
|
|
112
|
+
anthropicMessages.push({
|
|
113
|
+
role: 'user',
|
|
114
|
+
content: typeof message.content === 'string' ? message.content : JSON.stringify(message.content)
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
else if (message.role === 'assistant') {
|
|
118
|
+
const content = [];
|
|
119
|
+
if (message.content) {
|
|
120
|
+
content.push({
|
|
121
|
+
type: 'text',
|
|
122
|
+
text: typeof message.content === 'string' ? message.content : JSON.stringify(message.content)
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
if (message.tool_calls) {
|
|
126
|
+
for (const toolCall of message.tool_calls) {
|
|
127
|
+
if (toolCall.type !== 'function')
|
|
128
|
+
continue;
|
|
129
|
+
let input = {};
|
|
130
|
+
try {
|
|
131
|
+
input = JSON.parse(toolCall.function.arguments || '{}');
|
|
132
|
+
}
|
|
133
|
+
catch (e) {
|
|
134
|
+
console.error('Failed to parse tool call arguments', e);
|
|
135
|
+
}
|
|
136
|
+
content.push({
|
|
137
|
+
type: 'tool_use',
|
|
138
|
+
id: toolCall.id,
|
|
139
|
+
name: toolCall.function.name,
|
|
140
|
+
input
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
if (content.length > 0) {
|
|
145
|
+
anthropicMessages.push({
|
|
146
|
+
role: 'assistant',
|
|
147
|
+
content: content.length === 1 && content[0].type === 'text' ? content[0].text : content
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
else if (message.role === 'tool') {
|
|
152
|
+
// Tool results must be in user messages in Anthropic format
|
|
153
|
+
anthropicMessages.push({
|
|
154
|
+
role: 'user',
|
|
155
|
+
content: [
|
|
156
|
+
{
|
|
157
|
+
type: 'tool_result',
|
|
158
|
+
tool_use_id: message.tool_call_id,
|
|
159
|
+
content: typeof message.content === 'string'
|
|
160
|
+
? message.content
|
|
161
|
+
: JSON.stringify(message.content)
|
|
162
|
+
}
|
|
163
|
+
]
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
// Add cache_control to the last message content blocks
|
|
168
|
+
if (anthropicMessages.length > 0) {
|
|
169
|
+
const lastMessage = anthropicMessages[anthropicMessages.length - 1];
|
|
170
|
+
if (Array.isArray(lastMessage.content)) {
|
|
171
|
+
// Add cache_control to the last content block
|
|
172
|
+
if (lastMessage.content.length > 0) {
|
|
173
|
+
const lastBlock = lastMessage.content[lastMessage.content.length - 1];
|
|
174
|
+
if (lastBlock.type === 'text') {
|
|
175
|
+
lastBlock.cache_control = { type: 'ephemeral' };
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
else if (typeof lastMessage.content === 'string') {
|
|
180
|
+
// Convert string content to array format with cache_control
|
|
181
|
+
lastMessage.content = [
|
|
182
|
+
{
|
|
183
|
+
type: 'text',
|
|
184
|
+
text: lastMessage.content,
|
|
185
|
+
cache_control: { type: 'ephemeral' }
|
|
186
|
+
}
|
|
187
|
+
];
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return { system, messages: anthropicMessages };
|
|
191
|
+
}
|
|
192
|
+
export function convertOpenAIToolsToAnthropic(tools) {
|
|
193
|
+
if (!tools || tools.length === 0)
|
|
194
|
+
return undefined;
|
|
195
|
+
const anthropicTools = tools.map((tool) => ({
|
|
196
|
+
name: tool.function.name,
|
|
197
|
+
description: tool.function.description,
|
|
198
|
+
input_schema: (tool.function.parameters || {
|
|
199
|
+
type: 'object',
|
|
200
|
+
properties: {}
|
|
201
|
+
})
|
|
202
|
+
}));
|
|
203
|
+
// Add cache_control to the last tool to cache all tool definitions
|
|
204
|
+
if (anthropicTools.length > 0) {
|
|
205
|
+
anthropicTools[anthropicTools.length - 1].cache_control = { type: 'ephemeral' };
|
|
206
|
+
}
|
|
207
|
+
return anthropicTools;
|
|
208
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ChatCompletionFunctionTool } from 'openai/resources/index.mjs';
|
|
2
2
|
import type { Tool } from '../shared';
|
|
3
|
-
export declare function createApiTools(chatTools:
|
|
3
|
+
export declare function createApiTools(chatTools: ChatCompletionFunctionTool[], endpointMap?: Record<string, {
|
|
4
4
|
method: string;
|
|
5
5
|
path: string;
|
|
6
6
|
}>): Tool<{}>[];
|
|
@@ -15,7 +15,8 @@ function buildApiCallTool(endpointTool) {
|
|
|
15
15
|
if (key === 'workspace')
|
|
16
16
|
continue;
|
|
17
17
|
parameters.properties[key] = schema;
|
|
18
|
-
if (Array.isArray(endpointTool.path_params_schema.required) &&
|
|
18
|
+
if (Array.isArray(endpointTool.path_params_schema.required) &&
|
|
19
|
+
endpointTool.path_params_schema.required.includes(key)) {
|
|
19
20
|
parameters.required.push(key);
|
|
20
21
|
}
|
|
21
22
|
}
|
|
@@ -24,7 +25,8 @@ function buildApiCallTool(endpointTool) {
|
|
|
24
25
|
if (endpointTool.query_params_schema?.properties) {
|
|
25
26
|
for (const [key, schema] of Object.entries(endpointTool.query_params_schema.properties)) {
|
|
26
27
|
parameters.properties[key] = schema;
|
|
27
|
-
if (Array.isArray(endpointTool.query_params_schema.required) &&
|
|
28
|
+
if (Array.isArray(endpointTool.query_params_schema.required) &&
|
|
29
|
+
endpointTool.query_params_schema.required.includes(key)) {
|
|
28
30
|
parameters.required.push(key);
|
|
29
31
|
}
|
|
30
32
|
}
|
|
@@ -38,7 +40,8 @@ function buildApiCallTool(endpointTool) {
|
|
|
38
40
|
properties: endpointTool.body_schema.properties,
|
|
39
41
|
required: endpointTool.body_schema.required || []
|
|
40
42
|
};
|
|
41
|
-
if (Array.isArray(endpointTool.body_schema.required) &&
|
|
43
|
+
if (Array.isArray(endpointTool.body_schema.required) &&
|
|
44
|
+
endpointTool.body_schema.required.length > 0) {
|
|
42
45
|
parameters.required.push('body');
|
|
43
46
|
}
|
|
44
47
|
}
|
|
@@ -114,7 +117,7 @@ export function createApiTools(chatTools, endpointMap = {}) {
|
|
|
114
117
|
url += `?${searchParams.toString()}`;
|
|
115
118
|
}
|
|
116
119
|
toolCallbacks.setToolStatus(toolId, {
|
|
117
|
-
content: `Calling ${toolName}
|
|
120
|
+
content: `Calling ${toolName}...`
|
|
118
121
|
});
|
|
119
122
|
const fetchOptions = {
|
|
120
123
|
method: endpoint.method
|
|
@@ -141,7 +144,7 @@ export function createApiTools(chatTools, endpointMap = {}) {
|
|
|
141
144
|
});
|
|
142
145
|
toolCallbacks.setToolStatus(toolId, {
|
|
143
146
|
content: `Call to ${toolName} completed`,
|
|
144
|
-
result: jsonResult
|
|
147
|
+
result: jsonResult
|
|
145
148
|
});
|
|
146
149
|
return jsonResult;
|
|
147
150
|
}
|
|
@@ -155,7 +158,7 @@ export function createApiTools(chatTools, endpointMap = {}) {
|
|
|
155
158
|
toolCallbacks.setToolStatus(toolId, {
|
|
156
159
|
content: `Call to ${toolName} failed`,
|
|
157
160
|
result: jsonResult,
|
|
158
|
-
error: `HTTP ${response.status}: ${text}
|
|
161
|
+
error: `HTTP ${response.status}: ${text}`
|
|
159
162
|
});
|
|
160
163
|
return jsonResult;
|
|
161
164
|
}
|
|
@@ -164,7 +167,7 @@ export function createApiTools(chatTools, endpointMap = {}) {
|
|
|
164
167
|
const errorMessage = `Error calling API: ${error instanceof Error ? error.message : String(error)}`;
|
|
165
168
|
toolCallbacks.setToolStatus(toolId, {
|
|
166
169
|
content: `Call to ${toolName} failed`,
|
|
167
|
-
error: errorMessage
|
|
170
|
+
error: errorMessage
|
|
168
171
|
});
|
|
169
172
|
console.error(`Error calling API:`, error);
|
|
170
173
|
return errorMessage;
|
|
@@ -3,5 +3,5 @@ import type { Tool } from '../shared';
|
|
|
3
3
|
export declare const CHAT_SYSTEM_PROMPT: (username: string) => string;
|
|
4
4
|
export declare function getApiTools(): Promise<Tool<{}>[]>;
|
|
5
5
|
export declare const apiTools: Tool<{}>[];
|
|
6
|
-
export declare function prepareApiSystemMessage(): ChatCompletionSystemMessageParam;
|
|
6
|
+
export declare function prepareApiSystemMessage(customPrompt?: string): ChatCompletionSystemMessageParam;
|
|
7
7
|
export declare function prepareApiUserMessage(instructions: string): ChatCompletionUserMessageParam;
|
|
@@ -47,10 +47,15 @@ export async function getApiTools() {
|
|
|
47
47
|
return apiToolsCache;
|
|
48
48
|
}
|
|
49
49
|
export const apiTools = [getDocumentationTool];
|
|
50
|
-
export function prepareApiSystemMessage() {
|
|
50
|
+
export function prepareApiSystemMessage(customPrompt) {
|
|
51
|
+
let content = CHAT_SYSTEM_PROMPT(get(userStore)?.username ?? '');
|
|
52
|
+
// If there's a custom prompt, append it to the system prompt
|
|
53
|
+
if (customPrompt?.trim()) {
|
|
54
|
+
content = `${content}\n\nUSER GIVEN INSTRUCTIONS:\n${customPrompt.trim()}`;
|
|
55
|
+
}
|
|
51
56
|
return {
|
|
52
57
|
role: 'system',
|
|
53
|
-
content
|
|
58
|
+
content
|
|
54
59
|
};
|
|
55
60
|
}
|
|
56
61
|
export function prepareApiUserMessage(instructions) {
|
|
@@ -2,5 +2,5 @@ import type { ChatCompletionSystemMessageParam, ChatCompletionUserMessageParam }
|
|
|
2
2
|
import type { Tool } from '../shared';
|
|
3
3
|
export declare const CHAT_SYSTEM_PROMPT = "\nYou are Windmill's intelligent assistant, designed to answer questions about its functionality. It is your only purpose to help the user in the context of the windmill application.\nWindmill is an open-source developer platform for building internal tools, API integrations, background jobs, workflows, and user interfaces. It offers a unified system where scripts are automatically turned into sharable UIs and can be composed into flows or embedded in custom applications.\n\nYou have access to these tools:\n1. Get documentation for user requests (get_documentation)\n\nINSTRUCTIONS:\n- When user asks about something, use the get_documentation tool to retrieve accurate information about how to fulfill the user's request.\n- Complete your response with precisions about how it works based on the documentation. Also drop a link to the relevant documentation if possible.\n- If the user asks about something that you are unsure about, say that you are not sure about the answer and suggest to ask the question to the windmill team.\n\nGENERAL PRINCIPLES:\n- Be concise but thorough\n- Maintain a friendly, professional tone\n- If you encounter an error or can't complete a request, explain why and suggest alternatives\n";
|
|
4
4
|
export declare const askTools: Tool<{}>[];
|
|
5
|
-
export declare function prepareAskSystemMessage(): ChatCompletionSystemMessageParam;
|
|
5
|
+
export declare function prepareAskSystemMessage(customPrompt?: string): ChatCompletionSystemMessageParam;
|
|
6
6
|
export declare function prepareAskUserMessage(instructions: string): ChatCompletionUserMessageParam;
|
|
@@ -17,10 +17,15 @@ GENERAL PRINCIPLES:
|
|
|
17
17
|
- If you encounter an error or can't complete a request, explain why and suggest alternatives
|
|
18
18
|
`;
|
|
19
19
|
export const askTools = [getDocumentationTool];
|
|
20
|
-
export function prepareAskSystemMessage() {
|
|
20
|
+
export function prepareAskSystemMessage(customPrompt) {
|
|
21
|
+
let content = CHAT_SYSTEM_PROMPT;
|
|
22
|
+
// If there's a custom prompt, append it to the system prompt
|
|
23
|
+
if (customPrompt?.trim()) {
|
|
24
|
+
content = `${content}\n\nUSER GIVEN INSTRUCTIONS:\n${customPrompt.trim()}`;
|
|
25
|
+
}
|
|
21
26
|
return {
|
|
22
27
|
role: 'system',
|
|
23
|
-
content
|
|
28
|
+
content
|
|
24
29
|
};
|
|
25
30
|
}
|
|
26
31
|
export function prepareAskUserMessage(instructions) {
|
|
@@ -40,7 +40,7 @@ export interface CodePieceElement {
|
|
|
40
40
|
title: string;
|
|
41
41
|
lang: ScriptLang | 'bunnative';
|
|
42
42
|
}
|
|
43
|
-
export interface
|
|
43
|
+
export interface FlowModuleElement {
|
|
44
44
|
type: 'flow_module';
|
|
45
45
|
id: string;
|
|
46
46
|
title: string;
|
|
@@ -51,7 +51,12 @@ export interface FlowModule {
|
|
|
51
51
|
type: string;
|
|
52
52
|
};
|
|
53
53
|
}
|
|
54
|
-
export
|
|
54
|
+
export interface FlowModuleCodePieceElement extends Omit<CodePieceElement, 'type'> {
|
|
55
|
+
type: 'flow_module_code_piece';
|
|
56
|
+
id: string;
|
|
57
|
+
value: FlowModuleElement['value'];
|
|
58
|
+
}
|
|
59
|
+
export type ContextElement = (CodeElement | ErrorElement | DBElement | DiffElement | CodePieceElement | FlowModuleElement | FlowModuleCodePieceElement) & {
|
|
55
60
|
deletable?: boolean;
|
|
56
61
|
};
|
|
57
62
|
export {};
|