windmill-components 1.655.2 → 1.665.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package/components/ApiConnectForm.svelte +6 -6
- package/package/components/ApiConnectForm.svelte.d.ts +3 -2
- package/package/components/AppConnectDrawer.svelte +3 -1
- package/package/components/AppConnectDrawer.svelte.d.ts +2 -0
- package/package/components/AppConnectInner.svelte +137 -72
- package/package/components/AppConnectInner.svelte.d.ts +1 -0
- package/package/components/CompareWorkspaces.svelte +32 -24
- package/package/components/DBManager.svelte +7 -13
- package/package/components/DBTable.svelte +2 -2
- package/package/components/DBTableEditor.svelte +39 -31
- package/package/components/DBTableEditor.svelte.d.ts +2 -2
- package/package/components/DedicatedWorkersSelector.svelte +292 -85
- package/package/components/DeployWorkspace.svelte +30 -26
- package/package/components/Dev.svelte +7 -2
- package/package/components/Dev.svelte.d.ts +3 -0
- package/package/components/Editor.svelte +17 -13
- package/package/components/EditorBar.svelte.d.ts +1 -1
- package/package/components/FilterSearchbar.svelte +1 -1
- package/package/components/FirstStepInputs.svelte +0 -1
- package/package/components/FlowBuilder.svelte +5 -0
- package/package/components/FlowGraphDiffViewer.svelte +3 -0
- package/package/components/FlowGraphViewer.svelte +7 -4
- package/package/components/FlowGraphViewer.svelte.d.ts +1 -0
- package/package/components/FlowGraphViewerStep.svelte +3 -3
- package/package/components/FlowGraphViewerStep.svelte.d.ts +1 -0
- package/package/components/FlowPreviewContent.svelte +11 -1
- package/package/components/FlowStatusViewer.svelte +4 -1
- package/package/components/FlowStatusViewer.svelte.d.ts +3 -1
- package/package/components/FlowStatusViewerInner.svelte +46 -11
- package/package/components/FlowStatusViewerInner.svelte.d.ts +4 -1
- package/package/components/FlowStatusWaitingForEvents.svelte +48 -103
- package/package/components/FlowTimeline.svelte +76 -84
- package/package/components/FlowViewer.svelte +40 -22
- package/package/components/FlowViewer.svelte.d.ts +8 -2
- package/package/components/GroupEditor.svelte +7 -9
- package/package/components/HistoricList.svelte +12 -4
- package/package/components/InstanceGroupEditor.svelte +92 -19
- package/package/components/InstanceSetting.svelte +16 -6
- package/package/components/InstanceSettings.svelte +51 -7
- package/package/components/InstanceSettings.svelte.d.ts +2 -1
- package/package/components/JobLoader.svelte +5 -4
- package/package/components/JobLoader.svelte.d.ts +1 -1
- package/package/components/Login.svelte +9 -1
- package/package/components/NoMainFuncBadge.svelte +2 -2
- package/package/components/OnBehalfOfSelector.svelte +49 -37
- package/package/components/OnBehalfOfSelector.svelte.d.ts +16 -6
- package/package/components/ResourceEditor.svelte +16 -11
- package/package/components/ResourceEditor.svelte.d.ts +1 -0
- package/package/components/ResourceEditorDrawer.svelte +3 -1
- package/package/components/ResourceEditorDrawer.svelte.d.ts +6 -2
- package/package/components/ResourcePicker.svelte +10 -5
- package/package/components/ResourcePicker.svelte.d.ts +2 -0
- package/package/components/S3FilePickerInner.svelte +12 -4
- package/package/components/SchemaForm.svelte +20 -14
- package/package/components/SchemaForm.svelte.d.ts +2 -2
- package/package/components/ScriptBuilder.svelte +158 -18
- package/package/components/ScriptEditor.svelte +674 -150
- package/package/components/ScriptEditor.svelte.d.ts +7 -3
- package/package/components/SuperadminSettings.svelte +4 -1
- package/package/components/SuperadminSettingsInner.svelte +176 -67
- package/package/components/SuperadminSettingsInner.svelte.d.ts +3 -1
- package/package/components/SyncResourceTypes.svelte +31 -0
- package/package/components/SyncResourceTypes.svelte.d.ts +6 -0
- package/package/components/TimelineBar.svelte +14 -8
- package/package/components/TimelineBar.svelte.d.ts +1 -0
- package/package/components/WorkerGroup.svelte +11 -4
- package/package/components/WorkflowTimeline.svelte +386 -58
- package/package/components/WorkflowTimeline.svelte.d.ts +6 -1
- package/package/components/WorkspaceDependenciesEditor.svelte +32 -2
- package/package/components/apps/components/display/dbtable/DeleteRow.svelte +2 -2
- package/package/components/apps/components/display/dbtable/InsertRowRunnable.svelte +2 -2
- package/package/components/apps/components/display/dbtable/UpdateCell.svelte +2 -2
- package/package/components/apps/components/display/dbtable/metadata.js +44 -222
- package/package/components/apps/components/display/dbtable/queries/count.d.ts +9 -0
- package/package/components/apps/components/display/dbtable/queries/delete.d.ts +9 -0
- package/package/components/apps/components/display/dbtable/queries/insert.d.ts +9 -0
- package/package/components/apps/components/display/dbtable/queries/relationalKeys.d.ts +7 -0
- package/package/components/apps/components/display/dbtable/queries/relationalKeys.js +1 -1
- package/package/components/apps/components/display/dbtable/queries/select.d.ts +9 -0
- package/package/components/apps/components/display/dbtable/queries/update.d.ts +9 -0
- package/package/components/apps/editor/AppEditorHeaderDeploy.svelte +11 -9
- package/package/components/apps/editor/appUtilsS3.js +2 -2
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +53 -10
- package/package/components/common/clearableInput/ClearableInput.svelte +3 -7
- package/package/components/common/confirmationModal/ConfirmationModal.svelte +7 -1
- package/package/components/common/confirmationModal/ConfirmationModal.svelte.d.ts +1 -0
- package/package/components/common/drawer/Disposable.svelte +24 -2
- package/package/components/common/drawer/Disposable.svelte.d.ts +5 -0
- package/package/components/common/modal/Modal.svelte +84 -58
- package/package/components/common/table/AppRow.svelte.d.ts +1 -1
- package/package/components/common/table/FlowRow.svelte.d.ts +1 -1
- package/package/components/common/table/ScriptRow.svelte +31 -3
- package/package/components/common/table/ScriptRow.svelte.d.ts +1 -1
- package/package/components/copilot/MetadataGen.svelte +8 -5
- package/package/components/copilot/MetadataGen.svelte.d.ts +1 -0
- package/package/components/copilot/TestAIKey.svelte +2 -1
- package/package/components/copilot/TestAIKey.svelte.d.ts +1 -0
- package/package/components/copilot/chat/AIChatManager.svelte.js +62 -80
- package/package/components/copilot/chat/HistoryManager.svelte.d.ts +1 -0
- package/package/components/copilot/chat/HistoryManager.svelte.js +3 -0
- package/package/components/copilot/chat/__tests__/app/appChat.eval.test.js +47 -31
- package/package/components/copilot/chat/__tests__/app/appEvalComparison.d.ts +1 -6
- package/package/components/copilot/chat/__tests__/app/appEvalComparison.js +18 -13
- package/package/components/copilot/chat/__tests__/app/appEvalRunner.d.ts +14 -5
- package/package/components/copilot/chat/__tests__/app/appEvalRunner.js +13 -12
- package/package/components/copilot/chat/__tests__/flow/flowChat.eval.test.js +46 -29
- package/package/components/copilot/chat/__tests__/flow/flowEvalComparison.js +1 -4
- package/package/components/copilot/chat/__tests__/flow/flowEvalRunner.d.ts +14 -5
- package/package/components/copilot/chat/__tests__/flow/flowEvalRunner.js +13 -12
- package/package/components/copilot/chat/__tests__/shared/baseEvalRunner.d.ts +5 -8
- package/package/components/copilot/chat/__tests__/shared/baseEvalRunner.js +82 -108
- package/package/components/copilot/chat/__tests__/shared/baseLLMEvaluator.d.ts +4 -7
- package/package/components/copilot/chat/__tests__/shared/baseLLMEvaluator.js +19 -11
- package/package/components/copilot/chat/__tests__/shared/types.d.ts +3 -0
- package/package/components/copilot/chat/anthropic.d.ts +9 -2
- package/package/components/copilot/chat/anthropic.js +12 -6
- package/package/components/copilot/chat/app/core.js +5 -12
- package/package/components/copilot/chat/chatLoop.d.ts +40 -0
- package/package/components/copilot/chat/chatLoop.js +97 -0
- package/package/components/copilot/chat/openai-responses.d.ts +8 -2
- package/package/components/copilot/chat/openai-responses.js +17 -17
- package/package/components/copilot/chat/shared.d.ts +2 -1
- package/package/components/copilot/chat/shared.js +2 -2
- package/package/components/copilot/lib.d.ts +14 -5
- package/package/components/copilot/lib.js +68 -48
- package/package/components/dbOps.d.ts +2 -2
- package/package/components/dbOps.js +129 -53
- package/package/components/debug/debugUtils.d.ts +5 -0
- package/package/components/debug/debugUtils.js +20 -0
- package/package/components/debug/index.d.ts +1 -1
- package/package/components/debug/index.js +3 -7
- package/package/components/flows/CreateActionsFlow.svelte +221 -43
- package/package/components/flows/DebounceLimit.svelte +42 -9
- package/package/components/flows/common/FlowCard.svelte +2 -1
- package/package/components/flows/common/FlowCard.svelte.d.ts +1 -0
- package/package/components/flows/common/FlowCardHeader.svelte +14 -10
- package/package/components/flows/common/FlowCardHeader.svelte.d.ts +1 -0
- package/package/components/flows/content/AgentToolWrapper.svelte +2 -1
- package/package/components/flows/content/AgentToolWrapper.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowEditorPanel.svelte +1 -0
- package/package/components/flows/content/FlowModuleComponent.svelte +32 -18
- package/package/components/flows/content/FlowModuleComponent.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowModuleDebounce.svelte +46 -0
- package/package/components/flows/content/FlowModuleDebounce.svelte.d.ts +8 -0
- package/package/components/flows/content/FlowModuleEarlyStop.svelte +26 -5
- package/package/components/flows/content/FlowModuleWrapper.svelte +1 -0
- package/package/components/flows/content/FlowRetries.svelte +57 -57
- package/package/components/flows/content/FlowSelectionPanel.svelte +9 -14
- package/package/components/flows/content/FlowSelectionPanel.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowSettings.svelte +6 -6
- package/package/components/flows/content/ScriptEditorDrawer.svelte +1 -1
- package/package/components/flows/content/SuspendDrawer.svelte +0 -18
- package/package/components/flows/header/FlowYamlEditor.svelte +20 -4
- package/package/components/flows/map/FlowErrorHandlerItem.svelte +32 -14
- package/package/components/flows/map/FlowErrorHandlerItem.svelte.d.ts +1 -0
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +7 -10
- package/package/components/flows/map/FlowModuleSchemaItemViewer.svelte +1 -8
- package/package/components/flows/map/FlowModuleSchemaItemViewer.svelte.d.ts +0 -2
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +343 -137
- package/package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +1 -0
- package/package/components/flows/map/FlowStickyNode.svelte +24 -16
- package/package/components/flows/map/FlowStickyNode.svelte.d.ts +1 -0
- package/package/components/flows/map/VirtualItemWrapper.svelte +1 -1
- package/package/components/flows/pickers/PickHubScriptQuick.svelte.d.ts +1 -1
- package/package/components/flows/propPicker/OutputPickerInner.svelte +5 -1
- package/package/components/flows/scheduleUtils.js +3 -1
- package/package/components/flows/utils.svelte.js +6 -1
- package/package/components/git_sync/GitSyncContext.svelte.js +13 -2
- package/package/components/git_sync/GitSyncSection.svelte +135 -99
- package/package/components/graph/DragGhost.svelte +11 -2
- package/package/components/graph/FlowGraphV2.svelte +138 -42
- package/package/components/graph/FlowGraphV2.svelte.d.ts +15 -1
- package/package/components/graph/GroupActionBar.svelte +124 -0
- package/package/components/graph/GroupActionBar.svelte.d.ts +20 -0
- package/package/components/graph/GroupHeader.svelte +98 -0
- package/package/components/graph/GroupHeader.svelte.d.ts +11 -0
- package/package/components/graph/GroupHeaderBlock.svelte +58 -0
- package/package/components/graph/GroupHeaderBlock.svelte.d.ts +13 -0
- package/package/components/graph/GroupModuleIcons.svelte +163 -0
- package/package/components/graph/GroupModuleIcons.svelte.d.ts +11 -0
- package/package/components/graph/GroupNodeCard.svelte +127 -0
- package/package/components/graph/GroupNodeCard.svelte.d.ts +18 -0
- package/package/components/graph/GroupNoteArea.svelte +132 -0
- package/package/components/graph/GroupNoteArea.svelte.d.ts +11 -0
- package/package/components/graph/GroupOverlay.svelte +71 -0
- package/package/components/graph/GroupOverlay.svelte.d.ts +12 -0
- package/package/components/graph/MiniFlowGraph.svelte +17 -2
- package/package/components/graph/SelectionBoundingBox.svelte +14 -14
- package/package/components/graph/compoundLayout.d.ts +17 -1
- package/package/components/graph/compoundLayout.js +129 -14
- package/package/components/graph/flowStructure.d.ts +63 -0
- package/package/components/graph/flowStructure.js +422 -0
- package/package/components/graph/flowStructure.test.d.ts +1 -0
- package/package/components/graph/flowStructure.test.js +205 -0
- package/package/components/graph/graphBuilder.svelte.d.ts +52 -3
- package/package/components/graph/graphBuilder.svelte.js +170 -67
- package/package/components/graph/graphContext.d.ts +7 -0
- package/package/components/graph/groupDetectionUtils.d.ts +24 -1
- package/package/components/graph/groupDetectionUtils.js +101 -1
- package/package/components/graph/groupEditor.svelte.d.ts +105 -0
- package/package/components/graph/groupEditor.svelte.js +253 -0
- package/package/components/graph/groupedModulesProxy.svelte.d.ts +55 -0
- package/package/components/graph/groupedModulesProxy.svelte.js +130 -0
- package/package/components/graph/model.d.ts +2 -1
- package/package/components/graph/moveManager.svelte.js +0 -3
- package/package/components/graph/nodeExtraSpace.d.ts +32 -0
- package/package/components/graph/nodeExtraSpace.js +113 -0
- package/package/components/graph/noteColors.d.ts +1 -0
- package/package/components/graph/noteColors.js +20 -10
- package/package/components/graph/noteUtils.svelte.d.ts +0 -18
- package/package/components/graph/noteUtils.svelte.js +6 -41
- package/package/components/graph/renderers/edges/BaseEdge.svelte +26 -11
- package/package/components/graph/renderers/nodes/AIToolNode.svelte +24 -49
- package/package/components/graph/renderers/nodes/AIToolNode.svelte.d.ts +1 -4
- package/package/components/graph/renderers/nodes/AssetNode.svelte +1 -27
- package/package/components/graph/renderers/nodes/AssetNode.svelte.d.ts +0 -4
- package/package/components/graph/renderers/nodes/CollapsedGroupNode.svelte +85 -0
- package/package/components/graph/renderers/nodes/CollapsedGroupNode.svelte.d.ts +8 -0
- package/package/components/graph/renderers/nodes/ForLoopStartNode.svelte +3 -2
- package/package/components/graph/renderers/nodes/GroupEndNode.svelte +9 -0
- package/package/components/graph/renderers/nodes/GroupEndNode.svelte.d.ts +6 -0
- package/package/components/graph/renderers/nodes/GroupHeadNode.svelte +20 -0
- package/package/components/graph/renderers/nodes/GroupHeadNode.svelte.d.ts +8 -0
- package/package/components/graph/renderers/nodes/ModuleNode.svelte +8 -5
- package/package/components/graph/renderers/triggers/TriggersWrapper.svelte +1 -1
- package/package/components/graph/util.d.ts +5 -1
- package/package/components/graph/util.js +7 -5
- package/package/components/home/Item.svelte +1 -0
- package/package/components/home/ItemsList.svelte +1 -1
- package/package/components/icons/ActiveCampaignIcon.svelte +10 -0
- package/package/components/icons/ActiveCampaignIcon.svelte.d.ts +7 -0
- package/package/components/icons/AlgoliaIcon.svelte +7 -0
- package/package/components/icons/AlgoliaIcon.svelte.d.ts +7 -0
- package/package/components/icons/ApolloIcon.svelte +7 -0
- package/package/components/icons/ApolloIcon.svelte.d.ts +7 -0
- package/package/components/icons/BambooHrIcon.svelte +7 -0
- package/package/components/icons/BambooHrIcon.svelte.d.ts +7 -0
- package/package/components/icons/BaremetricsIcon.svelte +7 -0
- package/package/components/icons/BaremetricsIcon.svelte.d.ts +7 -0
- package/package/components/icons/BitlyIcon.svelte +7 -0
- package/package/components/icons/BitlyIcon.svelte.d.ts +7 -0
- package/package/components/icons/BloggerIcon.svelte +7 -0
- package/package/components/icons/BloggerIcon.svelte.d.ts +7 -0
- package/package/components/icons/BlueskyIcon.svelte +7 -0
- package/package/components/icons/BlueskyIcon.svelte.d.ts +7 -0
- package/package/components/icons/BoxIcon.svelte +7 -0
- package/package/components/icons/BoxIcon.svelte.d.ts +7 -0
- package/package/components/icons/BrevoIcon.svelte +7 -0
- package/package/components/icons/BrevoIcon.svelte.d.ts +7 -0
- package/package/components/icons/BrexIcon.svelte +7 -0
- package/package/components/icons/BrexIcon.svelte.d.ts +7 -0
- package/package/components/icons/BrowserlessIcon.svelte +7 -0
- package/package/components/icons/BrowserlessIcon.svelte.d.ts +7 -0
- package/package/components/icons/BubbleIcon.svelte +11 -0
- package/package/components/icons/BubbleIcon.svelte.d.ts +7 -0
- package/package/components/icons/BuildkiteIcon.svelte +7 -0
- package/package/components/icons/BuildkiteIcon.svelte.d.ts +7 -0
- package/package/components/icons/CalcomIcon.svelte +1 -1
- package/package/components/icons/CalendlyIcon.svelte +7 -0
- package/package/components/icons/CalendlyIcon.svelte.d.ts +7 -0
- package/package/components/icons/CircleCiIcon.svelte +7 -0
- package/package/components/icons/CircleCiIcon.svelte.d.ts +7 -0
- package/package/components/icons/CiscoIcon.svelte +7 -0
- package/package/components/icons/CiscoIcon.svelte.d.ts +7 -0
- package/package/components/icons/ClearbitIcon.svelte +7 -0
- package/package/components/icons/ClearbitIcon.svelte.d.ts +7 -0
- package/package/components/icons/ClerkIcon.svelte +7 -0
- package/package/components/icons/ClerkIcon.svelte.d.ts +7 -0
- package/package/components/icons/CloseIcon.svelte +37 -0
- package/package/components/icons/CloseIcon.svelte.d.ts +7 -0
- package/package/components/icons/CloudinaryIcon.svelte +7 -0
- package/package/components/icons/CloudinaryIcon.svelte.d.ts +7 -0
- package/package/components/icons/CockroachDbIcon.svelte +7 -0
- package/package/components/icons/CockroachDbIcon.svelte.d.ts +7 -0
- package/package/components/icons/CodaIcon.svelte +7 -0
- package/package/components/icons/CodaIcon.svelte.d.ts +7 -0
- package/package/components/icons/CohereIcon.svelte +16 -0
- package/package/components/icons/CohereIcon.svelte.d.ts +7 -0
- package/package/components/icons/CoinMarketCapIcon.svelte +7 -0
- package/package/components/icons/CoinMarketCapIcon.svelte.d.ts +7 -0
- package/package/components/icons/CoinbaseIcon.svelte +7 -0
- package/package/components/icons/CoinbaseIcon.svelte.d.ts +7 -0
- package/package/components/icons/ConfluenceIcon.svelte +7 -0
- package/package/components/icons/ConfluenceIcon.svelte.d.ts +7 -0
- package/package/components/icons/ContentfulIcon.svelte +7 -0
- package/package/components/icons/ContentfulIcon.svelte.d.ts +7 -0
- package/package/components/icons/ConvertKitIcon.svelte +7 -0
- package/package/components/icons/ConvertKitIcon.svelte.d.ts +7 -0
- package/package/components/icons/DatoCmsIcon.svelte +7 -0
- package/package/components/icons/DatoCmsIcon.svelte.d.ts +7 -0
- package/package/components/icons/DeelIcon.svelte +7 -0
- package/package/components/icons/DeelIcon.svelte.d.ts +7 -0
- package/package/components/icons/DeepLIcon.svelte +7 -0
- package/package/components/icons/DeepLIcon.svelte.d.ts +7 -0
- package/package/components/icons/DigitalOceanIcon.svelte +7 -0
- package/package/components/icons/DigitalOceanIcon.svelte.d.ts +7 -0
- package/package/components/icons/DiscourseIcon.svelte +7 -0
- package/package/components/icons/DiscourseIcon.svelte.d.ts +7 -0
- package/package/components/icons/DocusignIcon.svelte +7 -0
- package/package/components/icons/DocusignIcon.svelte.d.ts +7 -0
- package/package/components/icons/DropboxIcon.svelte +7 -0
- package/package/components/icons/DropboxIcon.svelte.d.ts +7 -0
- package/package/components/icons/EdgeDbIcon.svelte +16 -20
- package/package/components/icons/EventbriteIcon.svelte +10 -0
- package/package/components/icons/EventbriteIcon.svelte.d.ts +7 -0
- package/package/components/icons/FigmaIcon.svelte +7 -0
- package/package/components/icons/FigmaIcon.svelte.d.ts +7 -0
- package/package/components/icons/FlyIcon.svelte +7 -0
- package/package/components/icons/FlyIcon.svelte.d.ts +7 -0
- package/package/components/icons/FreshdeskIcon.svelte +7 -0
- package/package/components/icons/FreshdeskIcon.svelte.d.ts +7 -0
- package/package/components/icons/FrontAppIcon.svelte +7 -0
- package/package/components/icons/FrontAppIcon.svelte.d.ts +7 -0
- package/package/components/icons/GhostCmsIcon.svelte +7 -0
- package/package/components/icons/GhostCmsIcon.svelte.d.ts +7 -0
- package/package/components/icons/GiphyIcon.svelte +7 -0
- package/package/components/icons/GiphyIcon.svelte.d.ts +7 -0
- package/package/components/icons/GitBookIcon.svelte +7 -0
- package/package/components/icons/GitBookIcon.svelte.d.ts +7 -0
- package/package/components/icons/GroqIcon.svelte +7 -0
- package/package/components/icons/GroqIcon.svelte.d.ts +7 -0
- package/package/components/icons/HoneybadgerIcon.svelte +7 -0
- package/package/components/icons/HoneybadgerIcon.svelte.d.ts +7 -0
- package/package/components/icons/HttpIcon.svelte +1 -0
- package/package/components/icons/IftttIcon.svelte +7 -0
- package/package/components/icons/IftttIcon.svelte.d.ts +7 -0
- package/package/components/icons/IntercomIcon.svelte +7 -0
- package/package/components/icons/IntercomIcon.svelte.d.ts +7 -0
- package/package/components/icons/JoomlaIcon.svelte +7 -0
- package/package/components/icons/JoomlaIcon.svelte.d.ts +7 -0
- package/package/components/icons/LineIcon.svelte +7 -0
- package/package/components/icons/LineIcon.svelte.d.ts +7 -0
- package/package/components/icons/LinearIcon.svelte +7 -0
- package/package/components/icons/LinearIcon.svelte.d.ts +7 -0
- package/package/components/icons/LinodeIcon.svelte +7 -0
- package/package/components/icons/LinodeIcon.svelte.d.ts +7 -0
- package/package/components/icons/LumaAiIcon.svelte +39 -0
- package/package/components/icons/LumaAiIcon.svelte.d.ts +7 -0
- package/package/components/icons/MSTeamsIcon.svelte +20 -38
- package/package/components/icons/MSTeamsIcon.svelte.d.ts +2 -0
- package/package/components/icons/MagentoIcon.svelte +7 -0
- package/package/components/icons/MagentoIcon.svelte.d.ts +7 -0
- package/package/components/icons/MailchimpIcon.svelte +25 -13
- package/package/components/icons/MandrillIcon.svelte +7 -0
- package/package/components/icons/MandrillIcon.svelte.d.ts +7 -0
- package/package/components/icons/MauticIcon.svelte +7 -0
- package/package/components/icons/MauticIcon.svelte.d.ts +7 -0
- package/package/components/icons/MediumIcon.svelte +7 -0
- package/package/components/icons/MediumIcon.svelte.d.ts +7 -0
- package/package/components/icons/MiroIcon.svelte +7 -0
- package/package/components/icons/MiroIcon.svelte.d.ts +7 -0
- package/package/components/icons/MistralIcon.svelte +7 -0
- package/package/components/icons/MistralIcon.svelte.d.ts +7 -0
- package/package/components/icons/MixpanelIcon.svelte +7 -0
- package/package/components/icons/MixpanelIcon.svelte.d.ts +7 -0
- package/package/components/icons/MondayIcon.svelte +7 -0
- package/package/components/icons/MondayIcon.svelte.d.ts +7 -0
- package/package/components/icons/NeonDbIcon.svelte +23 -0
- package/package/components/icons/NeonDbIcon.svelte.d.ts +7 -0
- package/package/components/icons/NetlifyIcon.svelte +7 -0
- package/package/components/icons/NetlifyIcon.svelte.d.ts +7 -0
- package/package/components/icons/OneSignalIcon.svelte +9 -0
- package/package/components/icons/OneSignalIcon.svelte.d.ts +7 -0
- package/package/components/icons/OpenWeatherIcon.svelte +7 -0
- package/package/components/icons/OpenWeatherIcon.svelte.d.ts +7 -0
- package/package/components/icons/PagerDutyIcon.svelte +7 -0
- package/package/components/icons/PagerDutyIcon.svelte.d.ts +7 -0
- package/package/components/icons/PandaDocIcon.svelte +7 -0
- package/package/components/icons/PandaDocIcon.svelte.d.ts +7 -0
- package/package/components/icons/PaypalIcon.svelte +7 -0
- package/package/components/icons/PaypalIcon.svelte.d.ts +7 -0
- package/package/components/icons/PersonioIcon.svelte +7 -0
- package/package/components/icons/PersonioIcon.svelte.d.ts +7 -0
- package/package/components/icons/PinterestIcon.svelte +7 -0
- package/package/components/icons/PinterestIcon.svelte.d.ts +7 -0
- package/package/components/icons/PipedriveIcon.svelte +11 -0
- package/package/components/icons/PipedriveIcon.svelte.d.ts +7 -0
- package/package/components/icons/PlanetScaleIcon.svelte +7 -0
- package/package/components/icons/PlanetScaleIcon.svelte.d.ts +7 -0
- package/package/components/icons/PostmarkIcon.svelte +7 -0
- package/package/components/icons/PostmarkIcon.svelte.d.ts +7 -0
- package/package/components/icons/PusherIcon.svelte +7 -0
- package/package/components/icons/PusherIcon.svelte.d.ts +7 -0
- package/package/components/icons/QuickbooksIcon.svelte +13 -1
- package/package/components/icons/RaindropIcon.svelte +27 -0
- package/package/components/icons/RaindropIcon.svelte.d.ts +7 -0
- package/package/components/icons/ReadwiseIcon.svelte +12 -0
- package/package/components/icons/ReadwiseIcon.svelte.d.ts +7 -0
- package/package/components/icons/RenderIcon.svelte +7 -0
- package/package/components/icons/RenderIcon.svelte.d.ts +7 -0
- package/package/components/icons/ReplicateIcon.svelte +7 -0
- package/package/components/icons/ReplicateIcon.svelte.d.ts +7 -0
- package/package/components/icons/ResendIcon.svelte +1 -1
- package/package/components/icons/RestIcon.svelte +1 -0
- package/package/components/icons/RingCentralIcon.svelte +7 -0
- package/package/components/icons/RingCentralIcon.svelte.d.ts +7 -0
- package/package/components/icons/RocketChatIcon.svelte +7 -0
- package/package/components/icons/RocketChatIcon.svelte.d.ts +7 -0
- package/package/components/icons/RunPodIcon.svelte +8 -0
- package/package/components/icons/RunPodIcon.svelte.d.ts +7 -0
- package/package/components/icons/RustIcon.svelte +74 -56
- package/package/components/icons/SalesforceIcon.svelte +7 -0
- package/package/components/icons/SalesforceIcon.svelte.d.ts +7 -0
- package/package/components/icons/SegmentIcon.svelte +7 -0
- package/package/components/icons/SegmentIcon.svelte.d.ts +7 -0
- package/package/components/icons/SentryIcon.svelte +7 -0
- package/package/components/icons/SentryIcon.svelte.d.ts +7 -0
- package/package/components/icons/ServiceNowIcon.svelte +7 -0
- package/package/components/icons/ServiceNowIcon.svelte.d.ts +7 -0
- package/package/components/icons/ShortcutIcon.svelte +7 -0
- package/package/components/icons/ShortcutIcon.svelte.d.ts +7 -0
- package/package/components/icons/SigNozIcon.svelte +8 -0
- package/package/components/icons/SigNozIcon.svelte.d.ts +7 -0
- package/package/components/icons/SmartsheetIcon.svelte +7 -0
- package/package/components/icons/SmartsheetIcon.svelte.d.ts +7 -0
- package/package/components/icons/SpeechifyIcon.svelte +7 -0
- package/package/components/icons/SpeechifyIcon.svelte.d.ts +7 -0
- package/package/components/icons/SplitwiseIcon.svelte +7 -0
- package/package/components/icons/SplitwiseIcon.svelte.d.ts +7 -0
- package/package/components/icons/StravaIcon.svelte +7 -0
- package/package/components/icons/StravaIcon.svelte.d.ts +7 -0
- package/package/components/icons/TallyIcon.svelte +7 -0
- package/package/components/icons/TallyIcon.svelte.d.ts +7 -0
- package/package/components/icons/TelnyxIcon.svelte +19 -0
- package/package/components/icons/TelnyxIcon.svelte.d.ts +7 -0
- package/package/components/icons/ThreadsIcon.svelte +7 -0
- package/package/components/icons/ThreadsIcon.svelte.d.ts +7 -0
- package/package/components/icons/TodoistIcon.svelte +7 -0
- package/package/components/icons/TodoistIcon.svelte.d.ts +7 -0
- package/package/components/icons/TogetherAiIcon.svelte +23 -0
- package/package/components/icons/TogetherAiIcon.svelte.d.ts +7 -0
- package/package/components/icons/TrelloIcon.svelte +22 -1
- package/package/components/icons/TursoIcon.svelte +7 -0
- package/package/components/icons/TursoIcon.svelte.d.ts +7 -0
- package/package/components/icons/TwitchIcon.svelte +7 -0
- package/package/components/icons/TwitchIcon.svelte.d.ts +7 -0
- package/package/components/icons/TwitterIcon.svelte +7 -0
- package/package/components/icons/TwitterIcon.svelte.d.ts +7 -0
- package/package/components/icons/TypeformIcon.svelte +1 -1
- package/package/components/icons/VercelIcon.svelte +7 -0
- package/package/components/icons/VercelIcon.svelte.d.ts +7 -0
- package/package/components/icons/WebflowIcon.svelte +7 -0
- package/package/components/icons/WebflowIcon.svelte.d.ts +7 -0
- package/package/components/icons/WooCommerceIcon.svelte +7 -0
- package/package/components/icons/WooCommerceIcon.svelte.d.ts +7 -0
- package/package/components/icons/WordpressIcon.svelte +7 -0
- package/package/components/icons/WordpressIcon.svelte.d.ts +7 -0
- package/package/components/icons/XataIcon.svelte +13 -0
- package/package/components/icons/XataIcon.svelte.d.ts +7 -0
- package/package/components/icons/YelpIcon.svelte +7 -0
- package/package/components/icons/YelpIcon.svelte.d.ts +7 -0
- package/package/components/icons/YnabIcon.svelte +7 -0
- package/package/components/icons/YnabIcon.svelte.d.ts +7 -0
- package/package/components/icons/YoutubeIcon.svelte +7 -0
- package/package/components/icons/YoutubeIcon.svelte.d.ts +7 -0
- package/package/components/icons/ZendeskIcon.svelte +1 -1
- package/package/components/icons/ZeroTierIcon.svelte +7 -0
- package/package/components/icons/ZeroTierIcon.svelte.d.ts +7 -0
- package/package/components/icons/ZoomIcon.svelte +7 -0
- package/package/components/icons/ZoomIcon.svelte.d.ts +7 -0
- package/package/components/icons/index.d.ts +111 -1
- package/package/components/icons/index.js +225 -2
- package/package/components/instanceSettings/GhesAppSettings.svelte +161 -0
- package/package/components/instanceSettings/GhesAppSettings.svelte.d.ts +8 -0
- package/package/components/instanceSettings/IndexerMemorySettings.svelte +19 -8
- package/package/components/instanceSettings/InstanceAISettings.svelte +132 -0
- package/package/components/instanceSettings/InstanceAISettings.svelte.d.ts +10 -0
- package/package/components/instanceSettings/WorkspaceRegistries.svelte +293 -0
- package/package/components/instanceSettings/WorkspaceRegistries.svelte.d.ts +8 -0
- package/package/components/instanceSettings/WsConnectivityTest.svelte +177 -0
- package/package/components/instanceSettings/WsConnectivityTest.svelte.d.ts +7 -0
- package/package/components/instanceSettings.d.ts +3 -1
- package/package/components/instanceSettings.js +92 -2
- package/package/components/mcp/McpScopeSelector.svelte +408 -0
- package/package/components/mcp/McpScopeSelector.svelte.d.ts +7 -0
- package/package/components/meltComponents/Popover.svelte +0 -1
- package/package/components/raw_apps/RawAppPreview.svelte +6 -2
- package/package/components/recording/FlowRecordingReplay.svelte +94 -52
- package/package/components/recording/FlowRecordingReplay.svelte.d.ts +10 -1
- package/package/components/recording/ScriptRecordingReplay.svelte +140 -76
- package/package/components/recording/ScriptRecordingReplay.svelte.d.ts +10 -1
- package/package/components/runs/JobRunsPreview.svelte +8 -1
- package/package/components/runs/TimeframeSelect.svelte +0 -1
- package/package/components/schema/JobSchemaPicker.svelte +8 -2
- package/package/components/schema/JobSchemaPicker.svelte.d.ts +1 -0
- package/package/components/schema/SchemaFormDND.svelte +15 -3
- package/package/components/scriptEditor/LogPanel.svelte +78 -68
- package/package/components/script_builder.d.ts +1 -1
- package/package/components/scripts/CreateActionsScript.svelte +3 -3
- package/package/components/scripts/WacExportDrawer.svelte +127 -0
- package/package/components/scripts/WacExportDrawer.svelte.d.ts +8 -0
- package/package/components/scripts/scriptStore.svelte.d.ts +2 -0
- package/package/components/scripts/scriptStore.svelte.js +2 -0
- package/package/components/select/SelectDropdown.svelte +1 -1
- package/package/components/settings/AIPromptsModal.svelte +5 -2
- package/package/components/settings/AIPromptsModal.svelte.d.ts +1 -1
- package/package/components/settings/CloudQuotas.svelte +152 -0
- package/package/components/settings/CloudQuotas.svelte.d.ts +3 -0
- package/package/components/settings/CreateToken.svelte +15 -430
- package/package/components/settings/Trashbin.svelte +248 -0
- package/package/components/settings/Trashbin.svelte.d.ts +3 -0
- package/package/components/sidebar/MultiplayerMenu.svelte +14 -4
- package/package/components/triggers/DeleteTriggerButton.svelte +1 -0
- package/package/components/triggers/PermissionedAsLine.svelte +66 -0
- package/package/components/triggers/PermissionedAsLine.svelte.d.ts +9 -0
- package/package/components/triggers/TriggerEditorToolbar.svelte +2 -2
- package/package/components/triggers/TriggerTokens.svelte +3 -3
- package/package/components/triggers/email/EmailTriggerEditorInner.svelte +19 -1
- package/package/components/triggers/email/utils.js +3 -1
- package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +24 -4
- package/package/components/triggers/gcp/utils.js +2 -0
- package/package/components/triggers/http/RouteEditorConfigSection.svelte +22 -3
- package/package/components/triggers/http/RouteEditorInner.svelte +28 -6
- package/package/components/triggers/http/RoutesGenerator.svelte +13 -2
- package/package/components/triggers/http/utils.js +3 -1
- package/package/components/triggers/kafka/KafkaTriggerEditorInner.svelte +23 -6
- package/package/components/triggers/kafka/utils.js +3 -1
- package/package/components/triggers/mqtt/MqttTriggerEditorInner.svelte +27 -5
- package/package/components/triggers/mqtt/utils.js +2 -0
- package/package/components/triggers/native/NativeTriggerEditor.svelte +23 -1
- package/package/components/triggers/native/NativeTriggerTable.svelte +14 -3
- package/package/components/triggers/native/utils.js +3 -2
- package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +19 -1
- package/package/components/triggers/nats/utils.js +2 -0
- package/package/components/triggers/postgres/PostgresTriggerEditorInner.svelte +19 -1
- package/package/components/triggers/postgres/utils.js +2 -0
- package/package/components/triggers/schedules/ScheduleEditorInner.svelte +29 -7
- package/package/components/triggers/sqs/SqsTriggerEditorInner.svelte +19 -1
- package/package/components/triggers/sqs/utils.js +2 -0
- package/package/components/triggers/utils.js +9 -2
- package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +24 -4
- package/package/components/triggers/websocket/utils.js +3 -1
- package/package/components/workspaceSettings/AISettings.svelte +342 -214
- package/package/components/workspaceSettings/AISettings.svelte.d.ts +18 -10
- package/package/components/workspaceSettings/CreateWorkspace.svelte +304 -196
- package/package/components/workspaceSettings/CustomInstanceDbWizardModal.svelte +1 -2
- package/package/components/workspaceSettings/DucklakeSettings.svelte +1 -1
- package/package/components/workspaceSettings/InstanceFallbackSettings.svelte +75 -0
- package/package/components/workspaceSettings/InstanceFallbackSettings.svelte.d.ts +9 -0
- package/package/components/workspaceSettings/StorageSettings.svelte +4 -35
- package/package/components/workspaceSettings/VolumeStorageSettings.svelte +80 -0
- package/package/components/workspaceSettings/VolumeStorageSettings.svelte.d.ts +10 -0
- package/package/components/workspaceSettings/WorkspaceIntegrations.svelte +4 -1
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +294 -94
- package/package/gen/schemas.gen.js +294 -94
- package/package/gen/services.gen.d.ts +121 -5
- package/package/gen/services.gen.js +237 -5
- package/package/gen/types.gen.d.ts +715 -91
- package/package/githubApp.js +19 -1
- package/package/hubPaths.json +8 -4
- package/package/infer.d.ts +1 -1
- package/package/infer.js +5 -1
- package/package/logoutRedirect.d.ts +1 -0
- package/package/logoutRedirect.js +24 -0
- package/package/script_helpers.d.ts +8 -2
- package/package/script_helpers.js +15 -1
- package/package/services/trashService.d.ts +28 -0
- package/package/services/trashService.js +47 -0
- package/package/stores.d.ts +1 -0
- package/package/stores.js +1 -0
- package/package/system_prompts/index.d.ts +1 -0
- package/package/system_prompts/index.js +7 -0
- package/package/system_prompts/prompts.d.ts +7 -5
- package/package/system_prompts/prompts.js +182 -11
- package/package/templates/wac_python.py.template +42 -0
- package/package/templates/wac_typescript.ts.template +48 -0
- package/package/utils_deployable.d.ts +22 -21
- package/package/utils_deployable.js +58 -25
- package/package/utils_workspace_deploy.d.ts +15 -4
- package/package/utils_workspace_deploy.js +19 -15
- package/package/wsUrl.d.ts +1 -0
- package/package/wsUrl.js +15 -0
- package/package.json +13 -5
- package/dist/sharedUtils/assets/tokens/colorTokensConfig.d.ts +0 -2
- package/dist/sharedUtils/base.d.ts +0 -1
- package/dist/sharedUtils/cloud.d.ts +0 -1
- package/dist/sharedUtils/common.d.ts +0 -111
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/count.d.ts +0 -5
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/delete.d.ts +0 -5
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/insert.d.ts +0 -5
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/select.d.ts +0 -13
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/update.d.ts +0 -11
- package/dist/sharedUtils/components/apps/components/display/dbtable/utils.d.ts +0 -95
- package/dist/sharedUtils/components/apps/editor/appPolicy.d.ts +0 -6
- package/dist/sharedUtils/components/apps/editor/appUtilsCore.d.ts +0 -7
- package/dist/sharedUtils/components/apps/editor/appUtilsS3.d.ts +0 -33
- package/dist/sharedUtils/components/apps/editor/commonAppUtils.d.ts +0 -10
- package/dist/sharedUtils/components/apps/editor/component/components.d.ts +0 -5371
- package/dist/sharedUtils/components/apps/editor/component/default-codes.d.ts +0 -3
- package/dist/sharedUtils/components/apps/editor/component/index.d.ts +0 -3
- package/dist/sharedUtils/components/apps/editor/component/sets.d.ts +0 -7
- package/dist/sharedUtils/components/apps/editor/componentsPanel/componentDefaultProps.d.ts +0 -3
- package/dist/sharedUtils/components/apps/gridUtils.d.ts +0 -14
- package/dist/sharedUtils/components/apps/inputType.d.ts +0 -178
- package/dist/sharedUtils/components/apps/rx.d.ts +0 -29
- package/dist/sharedUtils/components/apps/sharedTypes.d.ts +0 -21
- package/dist/sharedUtils/components/apps/types.d.ts +0 -274
- package/dist/sharedUtils/components/assets/lib.d.ts +0 -25
- package/dist/sharedUtils/components/common/alert/model.d.ts +0 -2
- package/dist/sharedUtils/components/common/badge/model.d.ts +0 -8
- package/dist/sharedUtils/components/common/button/model.d.ts +0 -45
- package/dist/sharedUtils/components/common/fileInput/model.d.ts +0 -1
- package/dist/sharedUtils/components/common/index.d.ts +0 -24
- package/dist/sharedUtils/components/common/skeleton/model.d.ts +0 -21
- package/dist/sharedUtils/components/dbTypes.d.ts +0 -14
- package/dist/sharedUtils/components/diff_drawer.d.ts +0 -26
- package/dist/sharedUtils/components/ducklake.d.ts +0 -1
- package/dist/sharedUtils/components/flows/scheduleUtils.d.ts +0 -7
- package/dist/sharedUtils/components/icons/index.d.ts +0 -101
- package/dist/sharedUtils/components/random_positive_adjetive.d.ts +0 -1
- package/dist/sharedUtils/components/raw_apps/rawAppPolicy.d.ts +0 -10
- package/dist/sharedUtils/components/raw_apps/utils.d.ts +0 -15
- package/dist/sharedUtils/components/triggers/email/utils.d.ts +0 -4
- package/dist/sharedUtils/components/triggers/gcp/utils.d.ts +0 -2
- package/dist/sharedUtils/components/triggers/http/utils.d.ts +0 -11
- package/dist/sharedUtils/components/triggers/kafka/utils.d.ts +0 -2
- package/dist/sharedUtils/components/triggers/mqtt/utils.d.ts +0 -2
- package/dist/sharedUtils/components/triggers/nats/utils.d.ts +0 -2
- package/dist/sharedUtils/components/triggers/postgres/utils.d.ts +0 -8
- package/dist/sharedUtils/components/triggers/sqs/utils.d.ts +0 -2
- package/dist/sharedUtils/components/triggers/triggers.svelte.d.ts +0 -32
- package/dist/sharedUtils/components/triggers/utils.d.ts +0 -80
- package/dist/sharedUtils/components/triggers/websocket/utils.d.ts +0 -2
- package/dist/sharedUtils/components/triggers.d.ts +0 -20
- package/dist/sharedUtils/gen/core/ApiError.d.ts +0 -10
- package/dist/sharedUtils/gen/core/ApiRequestOptions.d.ts +0 -13
- package/dist/sharedUtils/gen/core/ApiResult.d.ts +0 -7
- package/dist/sharedUtils/gen/core/CancelablePromise.d.ts +0 -26
- package/dist/sharedUtils/gen/core/OpenAPI.d.ts +0 -27
- package/dist/sharedUtils/gen/core/request.d.ts +0 -29
- package/dist/sharedUtils/gen/index.d.ts +0 -6
- package/dist/sharedUtils/gen/schemas.gen.d.ts +0 -7036
- package/dist/sharedUtils/gen/services.gen.d.ts +0 -6047
- package/dist/sharedUtils/gen/types.gen.d.ts +0 -21881
- package/dist/sharedUtils/history.svelte.d.ts +0 -9
- package/dist/sharedUtils/hub.d.ts +0 -49
- package/dist/sharedUtils/jsr.json +0 -6
- package/dist/sharedUtils/lib.d.ts +0 -5
- package/dist/sharedUtils/lib.es.js +0 -1588
- package/dist/sharedUtils/package.json +0 -12
- package/dist/sharedUtils/schema.d.ts +0 -3
- package/dist/sharedUtils/stores.d.ts +0 -97
- package/dist/sharedUtils/svelte5Utils.svelte.d.ts +0 -80
- package/dist/sharedUtils/toast.d.ts +0 -8
- package/dist/sharedUtils/utils.d.ts +0 -265
- package/package/components/graph/NodeContextMenu.svelte +0 -36
- package/package/components/graph/NodeContextMenu.svelte.d.ts +0 -8
- package/package/svelte5Utils.svelte.d.ts +0 -184
|
@@ -1,132 +1,106 @@
|
|
|
1
|
-
import OpenAI
|
|
1
|
+
import OpenAI from 'openai';
|
|
2
|
+
import Anthropic from '@anthropic-ai/sdk';
|
|
3
|
+
import { runChatLoop } from '../../chatLoop';
|
|
2
4
|
/**
|
|
3
|
-
*
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
* Creates SDK clients for the given provider.
|
|
6
|
+
*/
|
|
7
|
+
function createEvalClients(provider, apiKey) {
|
|
8
|
+
if (provider === 'anthropic') {
|
|
9
|
+
return {
|
|
10
|
+
openai: new OpenAI({ apiKey: 'unused' }),
|
|
11
|
+
anthropic: new Anthropic({ apiKey })
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
return {
|
|
15
|
+
openai: new OpenAI({ apiKey }),
|
|
16
|
+
anthropic: new Anthropic({ apiKey: 'unused' })
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Resolves model string to AIProviderModel.
|
|
21
|
+
*/
|
|
22
|
+
function resolveModelProvider(model, provider) {
|
|
23
|
+
if (provider)
|
|
24
|
+
return { provider, model };
|
|
25
|
+
if (model.startsWith('claude'))
|
|
26
|
+
return { provider: 'anthropic', model };
|
|
27
|
+
if (model.startsWith('gpt') || model.startsWith('o'))
|
|
28
|
+
return { provider: 'openai', model };
|
|
29
|
+
return { provider: 'openai', model };
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Runs a generic evaluation using the shared chat loop (same code path as production).
|
|
33
|
+
* Uses streaming via real provider SDKs instead of OpenRouter non-streaming.
|
|
7
34
|
*/
|
|
8
35
|
export async function runEval(params) {
|
|
9
|
-
const { systemMessage, userMessage,
|
|
10
|
-
const client = new OpenAI({ baseURL: 'https://openrouter.ai/api/v1', apiKey });
|
|
36
|
+
const { systemMessage, userMessage, tools, helpers, apiKey, getOutput, options } = params;
|
|
11
37
|
const model = options?.model ?? 'gpt-4o';
|
|
12
38
|
const maxIterations = options?.maxIterations ?? 20;
|
|
13
39
|
const workspace = options?.workspace ?? 'test-workspace';
|
|
14
|
-
const
|
|
15
|
-
const
|
|
40
|
+
const provider = options?.provider;
|
|
41
|
+
const modelProvider = resolveModelProvider(model, provider);
|
|
42
|
+
const clients = createEvalClients(modelProvider.provider, apiKey);
|
|
43
|
+
const messages = [userMessage];
|
|
16
44
|
let toolCallsCount = 0;
|
|
17
45
|
const toolsCalled = [];
|
|
18
46
|
const toolCallDetails = [];
|
|
19
|
-
|
|
20
|
-
//
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
model,
|
|
31
|
-
messages,
|
|
32
|
-
tools: toolDefs,
|
|
33
|
-
temperature: 0
|
|
34
|
-
});
|
|
35
|
-
// Track token usage
|
|
36
|
-
if (response.usage) {
|
|
37
|
-
totalTokens.prompt += response.usage.prompt_tokens;
|
|
38
|
-
totalTokens.completion += response.usage.completion_tokens;
|
|
39
|
-
totalTokens.total += response.usage.total_tokens;
|
|
40
|
-
}
|
|
41
|
-
if (!response.choices.length) {
|
|
42
|
-
throw new Error('No response from API');
|
|
43
|
-
}
|
|
44
|
-
const choice = response.choices[0];
|
|
45
|
-
const assistantMessage = choice.message;
|
|
46
|
-
// Add assistant message to history
|
|
47
|
-
messages.push(assistantMessage);
|
|
48
|
-
// If no tool calls, we're done
|
|
49
|
-
if (!assistantMessage.tool_calls?.length) {
|
|
50
|
-
break;
|
|
47
|
+
// Wrap tools to intercept fn calls for tracking.
|
|
48
|
+
// Cast to ProductionTool since the eval Tool has a narrower toolCallbacks type
|
|
49
|
+
// but the actual callbacks passed at runtime will satisfy both interfaces.
|
|
50
|
+
const wrappedTools = tools.map((tool) => ({
|
|
51
|
+
...tool,
|
|
52
|
+
fn: async (p) => {
|
|
53
|
+
toolCallsCount++;
|
|
54
|
+
toolsCalled.push(tool.def.function.name);
|
|
55
|
+
try {
|
|
56
|
+
const args = typeof p.args === 'string' ? JSON.parse(p.args) : p.args;
|
|
57
|
+
toolCallDetails.push({ name: tool.def.function.name, arguments: args });
|
|
51
58
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
messages.push({
|
|
58
|
-
role: 'tool',
|
|
59
|
-
tool_call_id: toolCall.id,
|
|
60
|
-
content: `Unsupported tool type: ${toolCall.type}`
|
|
61
|
-
});
|
|
62
|
-
continue;
|
|
63
|
-
}
|
|
64
|
-
toolsCalled.push(toolCall.function.name);
|
|
65
|
-
const tool = tools.find((t) => t.def.function.name === toolCall.function.name);
|
|
66
|
-
if (!tool) {
|
|
67
|
-
messages.push({
|
|
68
|
-
role: 'tool',
|
|
69
|
-
tool_call_id: toolCall.id,
|
|
70
|
-
content: `Unknown tool: ${toolCall.function.name}`
|
|
71
|
-
});
|
|
72
|
-
continue;
|
|
73
|
-
}
|
|
74
|
-
try {
|
|
75
|
-
const args = JSON.parse(toolCall.function.arguments);
|
|
76
|
-
toolCallDetails.push({ name: toolCall.function.name, arguments: args });
|
|
77
|
-
const result = await tool.fn({
|
|
78
|
-
args,
|
|
79
|
-
workspace,
|
|
80
|
-
helpers,
|
|
81
|
-
toolCallbacks,
|
|
82
|
-
toolId: toolCall.id
|
|
83
|
-
});
|
|
84
|
-
messages.push({
|
|
85
|
-
role: 'tool',
|
|
86
|
-
tool_call_id: toolCall.id,
|
|
87
|
-
content: result
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
catch (err) {
|
|
91
|
-
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
92
|
-
messages.push({
|
|
93
|
-
role: 'tool',
|
|
94
|
-
tool_call_id: toolCall.id,
|
|
95
|
-
content: `Error: ${errorMessage}`
|
|
96
|
-
});
|
|
97
|
-
}
|
|
59
|
+
catch {
|
|
60
|
+
toolCallDetails.push({
|
|
61
|
+
name: tool.def.function.name,
|
|
62
|
+
arguments: p.args
|
|
63
|
+
});
|
|
98
64
|
}
|
|
65
|
+
return tool.fn(p);
|
|
99
66
|
}
|
|
67
|
+
}));
|
|
68
|
+
// No-op callbacks for eval
|
|
69
|
+
const callbacks = {
|
|
70
|
+
setToolStatus: () => { },
|
|
71
|
+
removeToolStatus: () => { },
|
|
72
|
+
onNewToken: () => { },
|
|
73
|
+
onMessageEnd: () => { }
|
|
74
|
+
};
|
|
75
|
+
const abortController = new AbortController();
|
|
76
|
+
try {
|
|
77
|
+
const result = await runChatLoop({
|
|
78
|
+
messages,
|
|
79
|
+
systemMessage,
|
|
80
|
+
tools: wrappedTools,
|
|
81
|
+
helpers,
|
|
82
|
+
abortController,
|
|
83
|
+
callbacks,
|
|
84
|
+
modelProvider,
|
|
85
|
+
clients,
|
|
86
|
+
workspace,
|
|
87
|
+
maxIterations,
|
|
88
|
+
skipResponsesApi: modelProvider.provider !== 'openai' && modelProvider.provider !== 'azure_openai'
|
|
89
|
+
});
|
|
100
90
|
return {
|
|
101
91
|
success: true,
|
|
102
92
|
output: getOutput(),
|
|
103
|
-
tokenUsage:
|
|
93
|
+
tokenUsage: { prompt: 0, completion: 0, total: 0 },
|
|
104
94
|
toolCallsCount,
|
|
105
95
|
toolsCalled,
|
|
106
96
|
toolCallDetails,
|
|
107
|
-
iterations,
|
|
97
|
+
iterations: Math.max(1, result.addedMessages.filter((m) => m.role === 'assistant').length),
|
|
108
98
|
messages
|
|
109
99
|
};
|
|
110
100
|
}
|
|
111
101
|
catch (err) {
|
|
112
|
-
// Build detailed error message
|
|
113
102
|
let errorMessage;
|
|
114
|
-
if (err instanceof
|
|
115
|
-
const details = [`${err.status} ${err.message}`];
|
|
116
|
-
if (err.code)
|
|
117
|
-
details.push(`Code: ${err.code}`);
|
|
118
|
-
if (err.type)
|
|
119
|
-
details.push(`Type: ${err.type}`);
|
|
120
|
-
if (err.param)
|
|
121
|
-
details.push(`Param: ${err.param}`);
|
|
122
|
-
if (err.requestID)
|
|
123
|
-
details.push(`Request ID: ${err.requestID}`);
|
|
124
|
-
if (err.error && typeof err.error === 'object') {
|
|
125
|
-
details.push(`Response: ${JSON.stringify(err.error, null, 2)}`);
|
|
126
|
-
}
|
|
127
|
-
errorMessage = details.join('\n');
|
|
128
|
-
}
|
|
129
|
-
else if (err instanceof Error) {
|
|
103
|
+
if (err instanceof Error) {
|
|
130
104
|
errorMessage = err.stack ?? err.message;
|
|
131
105
|
}
|
|
132
106
|
else {
|
|
@@ -136,11 +110,11 @@ export async function runEval(params) {
|
|
|
136
110
|
success: false,
|
|
137
111
|
output: getOutput(),
|
|
138
112
|
error: errorMessage,
|
|
139
|
-
tokenUsage:
|
|
113
|
+
tokenUsage: { prompt: 0, completion: 0, total: 0 },
|
|
140
114
|
toolCallsCount,
|
|
141
115
|
toolsCalled,
|
|
142
116
|
toolCallDetails,
|
|
143
|
-
iterations,
|
|
117
|
+
iterations: 0,
|
|
144
118
|
messages
|
|
145
119
|
};
|
|
146
120
|
}
|
|
@@ -11,9 +11,9 @@ export interface EvaluateParams {
|
|
|
11
11
|
expectedOutput: unknown;
|
|
12
12
|
/** Domain-specific system prompt for the evaluator */
|
|
13
13
|
evaluatorSystemPrompt: string;
|
|
14
|
-
/** API key for
|
|
15
|
-
apiKey
|
|
16
|
-
/** Model to use for evaluation (default: '
|
|
14
|
+
/** Anthropic API key for evaluation */
|
|
15
|
+
apiKey?: string;
|
|
16
|
+
/** Model to use for evaluation (default: 'claude-sonnet-4-5-20250514') */
|
|
17
17
|
model?: string;
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
@@ -23,9 +23,6 @@ export interface EvaluateParams {
|
|
|
23
23
|
export declare const BASE_EVALUATOR_RESPONSE_FORMAT = "\n## Response Format\nYou MUST respond with valid JSON only, no additional text:\n{\n \"resemblanceScore\": <0-100 integer>,\n \"statement\": \"<brief 1-2 sentence summary of how well the output matches the user request and expected output>\",\n \"missingRequirements\": [\"<list any requirements from user prompt that are missing or incorrectly implemented>\"]\n}\n\nScore guidelines:\n- 90-100: Fully addresses user request, functionally equivalent to expected output\n- 70-89: Addresses most user requirements, same overall structure with minor differences\n- 50-69: Partially addresses user request, achieves similar goal but different approach\n- 30-49: Missing significant requirements from user request\n- 0-29: Does not address user request or significantly incorrect";
|
|
24
24
|
/**
|
|
25
25
|
* Evaluates how well a generated output matches an expected output using an LLM.
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* @param params Evaluation parameters including prompts, outputs, and API configuration
|
|
29
|
-
* @returns Evaluation result with score, statement, and missing requirements
|
|
26
|
+
* Uses Anthropic API directly instead of OpenRouter.
|
|
30
27
|
*/
|
|
31
28
|
export declare function evaluateWithLLM(params: EvaluateParams): Promise<EvaluationResult>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import Anthropic from '@anthropic-ai/sdk';
|
|
2
2
|
/**
|
|
3
3
|
* Base evaluator system prompt template.
|
|
4
4
|
* Domain-specific evaluators should build on this structure.
|
|
@@ -20,14 +20,21 @@ Score guidelines:
|
|
|
20
20
|
- 0-29: Does not address user request or significantly incorrect`;
|
|
21
21
|
/**
|
|
22
22
|
* Evaluates how well a generated output matches an expected output using an LLM.
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* @param params Evaluation parameters including prompts, outputs, and API configuration
|
|
26
|
-
* @returns Evaluation result with score, statement, and missing requirements
|
|
23
|
+
* Uses Anthropic API directly instead of OpenRouter.
|
|
27
24
|
*/
|
|
28
25
|
export async function evaluateWithLLM(params) {
|
|
29
|
-
const { userPrompt, generatedOutput, expectedOutput, evaluatorSystemPrompt, apiKey, model = '
|
|
30
|
-
|
|
26
|
+
const { userPrompt, generatedOutput, expectedOutput, evaluatorSystemPrompt, apiKey, model = 'claude-sonnet-4-5-20250514' } = params;
|
|
27
|
+
// @ts-ignore - process.env
|
|
28
|
+
const anthropicKey = apiKey ?? process.env.ANTHROPIC_API_KEY;
|
|
29
|
+
if (!anthropicKey) {
|
|
30
|
+
return {
|
|
31
|
+
success: false,
|
|
32
|
+
resemblanceScore: 0,
|
|
33
|
+
statement: 'No API key available for evaluation',
|
|
34
|
+
error: 'ANTHROPIC_API_KEY not set and no apiKey provided'
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
const client = new Anthropic({ apiKey: anthropicKey });
|
|
31
38
|
const userMessage = `## User's Original Request
|
|
32
39
|
${userPrompt}
|
|
33
40
|
|
|
@@ -45,15 +52,17 @@ Please evaluate how well the generated output:
|
|
|
45
52
|
1. Fulfills ALL requirements from the user's original request
|
|
46
53
|
2. Matches the structure and logic of the expected reference output`;
|
|
47
54
|
try {
|
|
48
|
-
const response = await client.
|
|
55
|
+
const response = await client.messages.create({
|
|
49
56
|
model,
|
|
57
|
+
max_tokens: 2048,
|
|
58
|
+
system: evaluatorSystemPrompt,
|
|
50
59
|
messages: [
|
|
51
|
-
{ role: 'system', content: evaluatorSystemPrompt },
|
|
52
60
|
{ role: 'user', content: userMessage }
|
|
53
61
|
],
|
|
54
62
|
temperature: 0
|
|
55
63
|
});
|
|
56
|
-
const
|
|
64
|
+
const textBlock = response.content.find((block) => block.type === 'text');
|
|
65
|
+
const content = textBlock?.text;
|
|
57
66
|
if (!content) {
|
|
58
67
|
return {
|
|
59
68
|
success: false,
|
|
@@ -65,7 +74,6 @@ Please evaluate how well the generated output:
|
|
|
65
74
|
// Parse JSON response - handle potential markdown code blocks
|
|
66
75
|
let jsonContent = content.trim();
|
|
67
76
|
if (jsonContent.startsWith('```')) {
|
|
68
|
-
// Remove markdown code block wrapper
|
|
69
77
|
jsonContent = jsonContent.replace(/^```(?:json)?\n?/, '').replace(/\n?```$/, '');
|
|
70
78
|
}
|
|
71
79
|
const parsed = JSON.parse(jsonContent);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ChatCompletionMessageParam } from 'openai/resources/chat/completions.mjs';
|
|
2
|
+
import type { AIProvider } from '../../../../../gen/types.gen';
|
|
2
3
|
/**
|
|
3
4
|
* Token usage tracking for LLM calls.
|
|
4
5
|
*/
|
|
@@ -84,6 +85,8 @@ export interface EvalRunnerOptions {
|
|
|
84
85
|
model?: string;
|
|
85
86
|
/** Workspace ID for tool calls */
|
|
86
87
|
workspace?: string;
|
|
88
|
+
/** AI provider (inferred from model name if omitted) */
|
|
89
|
+
provider?: AIProvider;
|
|
87
90
|
}
|
|
88
91
|
/**
|
|
89
92
|
* No-op tool callbacks for eval testing.
|
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
import { OpenAI } from 'openai';
|
|
2
|
+
import Anthropic from '@anthropic-ai/sdk';
|
|
2
3
|
import type { ChatCompletionMessageParam } from 'openai/resources/index.mjs';
|
|
3
4
|
import type { MessageParam, TextBlockParam, ToolUnion } from '@anthropic-ai/sdk/resources';
|
|
4
5
|
import type { MessageStream } from '@anthropic-ai/sdk/lib/MessageStream';
|
|
6
|
+
import type { AIProviderModel } from '../../../gen';
|
|
5
7
|
import { type Tool, type ToolCallbacks } from './shared';
|
|
6
|
-
export declare function getAnthropicCompletion(messages: ChatCompletionMessageParam[], abortController: AbortController, tools?: OpenAI.Chat.Completions.ChatCompletionFunctionTool[]
|
|
8
|
+
export declare function getAnthropicCompletion(messages: ChatCompletionMessageParam[], abortController: AbortController, tools?: OpenAI.Chat.Completions.ChatCompletionFunctionTool[], options?: {
|
|
9
|
+
forceModelProvider?: AIProviderModel;
|
|
10
|
+
anthropicClient?: Anthropic;
|
|
11
|
+
}): Promise<MessageStream>;
|
|
7
12
|
export declare function parseAnthropicCompletion(completion: MessageStream, callbacks: ToolCallbacks & {
|
|
8
13
|
onNewToken: (token: string) => void;
|
|
9
14
|
onMessageEnd: () => void;
|
|
10
|
-
}, messages: ChatCompletionMessageParam[], addedMessages: ChatCompletionMessageParam[], tools: Tool<any>[], helpers: any, abortController?: AbortController
|
|
15
|
+
}, messages: ChatCompletionMessageParam[], addedMessages: ChatCompletionMessageParam[], tools: Tool<any>[], helpers: any, abortController?: AbortController, options?: {
|
|
16
|
+
workspace?: string;
|
|
17
|
+
}): Promise<boolean>;
|
|
11
18
|
export declare function convertOpenAIToAnthropicMessages(messages: ChatCompletionMessageParam[]): {
|
|
12
19
|
system: TextBlockParam[] | undefined;
|
|
13
20
|
messages: MessageParam[];
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { OpenAI } from 'openai';
|
|
2
|
+
import Anthropic from '@anthropic-ai/sdk';
|
|
2
3
|
import { getProviderAndCompletionConfig, workspaceAIClients } from '../lib';
|
|
3
4
|
import { processToolCall } from './shared';
|
|
4
|
-
export async function getAnthropicCompletion(messages, abortController, tools) {
|
|
5
|
-
const { provider, config } = getProviderAndCompletionConfig({
|
|
5
|
+
export async function getAnthropicCompletion(messages, abortController, tools, options) {
|
|
6
|
+
const { provider, config } = getProviderAndCompletionConfig({
|
|
7
|
+
messages,
|
|
8
|
+
stream: true,
|
|
9
|
+
forceModelProvider: options?.forceModelProvider
|
|
10
|
+
});
|
|
6
11
|
const { system, messages: anthropicMessages } = convertOpenAIToAnthropicMessages(messages);
|
|
7
12
|
const anthropicTools = convertOpenAIToolsToAnthropic(tools);
|
|
8
|
-
const
|
|
13
|
+
const client = options?.anthropicClient ?? workspaceAIClients.getAnthropicClient();
|
|
9
14
|
const anthropicParams = {
|
|
10
15
|
model: config.model,
|
|
11
16
|
max_tokens: config.max_tokens,
|
|
@@ -14,7 +19,7 @@ export async function getAnthropicCompletion(messages, abortController, tools) {
|
|
|
14
19
|
...(anthropicTools && { tools: anthropicTools }),
|
|
15
20
|
...(typeof config.temperature === 'number' && { temperature: config.temperature })
|
|
16
21
|
};
|
|
17
|
-
const stream =
|
|
22
|
+
const stream = client.messages.stream(anthropicParams, {
|
|
18
23
|
signal: abortController.signal,
|
|
19
24
|
headers: {
|
|
20
25
|
'X-Provider': provider,
|
|
@@ -24,7 +29,7 @@ export async function getAnthropicCompletion(messages, abortController, tools) {
|
|
|
24
29
|
});
|
|
25
30
|
return stream;
|
|
26
31
|
}
|
|
27
|
-
export async function parseAnthropicCompletion(completion, callbacks, messages, addedMessages, tools, helpers, abortController) {
|
|
32
|
+
export async function parseAnthropicCompletion(completion, callbacks, messages, addedMessages, tools, helpers, abortController, options) {
|
|
28
33
|
let toolCallsToProcess = [];
|
|
29
34
|
let error = null;
|
|
30
35
|
let currentStreamingTool = undefined;
|
|
@@ -156,7 +161,8 @@ export async function parseAnthropicCompletion(completion, callbacks, messages,
|
|
|
156
161
|
tools,
|
|
157
162
|
toolCall,
|
|
158
163
|
helpers,
|
|
159
|
-
toolCallbacks: callbacks
|
|
164
|
+
toolCallbacks: callbacks,
|
|
165
|
+
workspace: options?.workspace
|
|
160
166
|
});
|
|
161
167
|
messages.push(messageToAdd);
|
|
162
168
|
addedMessages.push(messageToAdd);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { createSearchHubScriptsTool, createToolDef, createSearchWorkspaceTool, createGetRunnableDetailsTool } from '../shared';
|
|
3
|
+
import { getDatatableSdkReference } from '../../../../system_prompts';
|
|
3
4
|
import { aiChatManager } from '../AIChatManager.svelte';
|
|
4
5
|
// ============= Utility =============
|
|
5
6
|
/** Maximum characters per file in get_files tool */
|
|
@@ -519,38 +520,30 @@ For inline scripts, the code must have a \`main\` function as its entrypoint.
|
|
|
519
520
|
|
|
520
521
|
Backend runnables should only perform **data operations** (SELECT, INSERT, UPDATE, DELETE) on **existing tables**. Never use CREATE TABLE, DROP TABLE, or ALTER TABLE inside runnables.
|
|
521
522
|
|
|
522
|
-
**TypeScript (Bun)**:
|
|
523
|
+
**TypeScript (Bun) example**:
|
|
523
524
|
\`\`\`typescript
|
|
524
525
|
import * as wmill from 'windmill-client';
|
|
525
526
|
|
|
526
527
|
export async function main(user_id: string) {
|
|
527
528
|
const sql = ${datatableCall};
|
|
528
|
-
|
|
529
|
-
// Safe string interpolation (parameterized query)
|
|
530
529
|
const user = await sql\`SELECT * FROM ${schemaPrefix}users WHERE id = \${user_id}\`.fetchOne();
|
|
531
530
|
return user;
|
|
532
531
|
}
|
|
533
532
|
\`\`\`
|
|
534
533
|
|
|
535
|
-
**Python**:
|
|
534
|
+
**Python example**:
|
|
536
535
|
\`\`\`python
|
|
537
536
|
import wmill
|
|
538
537
|
|
|
539
538
|
def main(user_id: str):
|
|
540
539
|
db = ${datatableCall}
|
|
541
|
-
|
|
542
|
-
# Use positional arguments ($1, $2, etc.)
|
|
543
540
|
user = db.query('SELECT * FROM ${schemaPrefix}users WHERE id = $1', user_id).fetch_one()
|
|
544
541
|
return user
|
|
545
542
|
\`\`\`
|
|
546
543
|
|
|
547
|
-
###
|
|
544
|
+
### Datatable Client API Reference
|
|
548
545
|
|
|
549
|
-
|
|
550
|
-
- **Fetch one**: \`.fetchOne()\` or \`.fetch_one()\`
|
|
551
|
-
- **Insert**: \`sql\`INSERT INTO ${schemaPrefix}table (col) VALUES (\${value})\`\`
|
|
552
|
-
- **Update**: \`sql\`UPDATE ${schemaPrefix}table SET col = \${value} WHERE id = \${id}\`\`
|
|
553
|
-
- **Delete**: \`sql\`DELETE FROM ${schemaPrefix}table WHERE id = \${id}\`\`
|
|
546
|
+
${getDatatableSdkReference()}
|
|
554
547
|
|
|
555
548
|
### Schema Modifications (DDL) - Use exec_datatable_sql tool ONLY
|
|
556
549
|
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import OpenAI from 'openai';
|
|
2
|
+
import Anthropic from '@anthropic-ai/sdk';
|
|
3
|
+
import type { ChatCompletionMessageParam, ChatCompletionSystemMessageParam, ChatCompletionUserMessageParam } from 'openai/resources/chat/completions.mjs';
|
|
4
|
+
import type { AIProviderModel } from '../../../gen';
|
|
5
|
+
import type { Tool, ToolCallbacks } from './shared';
|
|
6
|
+
export interface ChatClients {
|
|
7
|
+
openai: OpenAI;
|
|
8
|
+
anthropic: Anthropic;
|
|
9
|
+
}
|
|
10
|
+
export interface ChatLoopConfig {
|
|
11
|
+
messages: ChatCompletionMessageParam[];
|
|
12
|
+
/**
|
|
13
|
+
* System message, tools, helpers, and modelProvider are re-read from this config
|
|
14
|
+
* on every iteration. Callers can use JS getters to provide dynamic values
|
|
15
|
+
* (e.g. AIChatManager uses getters so mode changes mid-loop take effect).
|
|
16
|
+
*/
|
|
17
|
+
systemMessage: ChatCompletionSystemMessageParam;
|
|
18
|
+
tools: Tool<any>[];
|
|
19
|
+
helpers: any;
|
|
20
|
+
abortController: AbortController;
|
|
21
|
+
callbacks: ToolCallbacks & {
|
|
22
|
+
onNewToken: (token: string) => void;
|
|
23
|
+
onMessageEnd: () => void;
|
|
24
|
+
};
|
|
25
|
+
modelProvider: AIProviderModel;
|
|
26
|
+
clients: ChatClients;
|
|
27
|
+
workspace: string;
|
|
28
|
+
/** Maximum iterations for the loop. undefined = unlimited (production). */
|
|
29
|
+
maxIterations?: number;
|
|
30
|
+
skipResponsesApi?: boolean;
|
|
31
|
+
onSkipResponsesApi?: () => void;
|
|
32
|
+
/** Return a pending user message to inject between iterations, or undefined. */
|
|
33
|
+
getPendingUserMessage?: () => ChatCompletionUserMessageParam | undefined;
|
|
34
|
+
/** Called before each iteration (e.g. to refresh tool schemas). */
|
|
35
|
+
onBeforeIteration?: (tools: Tool<any>[], helpers: any) => Promise<void>;
|
|
36
|
+
}
|
|
37
|
+
export interface ChatLoopResult {
|
|
38
|
+
addedMessages: ChatCompletionMessageParam[];
|
|
39
|
+
}
|
|
40
|
+
export declare function runChatLoop(config: ChatLoopConfig): Promise<ChatLoopResult>;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import OpenAI from 'openai';
|
|
2
|
+
import Anthropic from '@anthropic-ai/sdk';
|
|
3
|
+
import { getCompletion, parseOpenAICompletion } from '../lib';
|
|
4
|
+
import { getAnthropicCompletion, parseAnthropicCompletion } from './anthropic';
|
|
5
|
+
import { getOpenAIResponsesCompletion, parseOpenAIResponsesCompletion } from './openai-responses';
|
|
6
|
+
export async function runChatLoop(config) {
|
|
7
|
+
const { messages, abortController, callbacks, clients, workspace, maxIterations, onSkipResponsesApi, getPendingUserMessage, onBeforeIteration } = config;
|
|
8
|
+
let skipResponsesApi = config.skipResponsesApi ?? false;
|
|
9
|
+
const addedMessages = [];
|
|
10
|
+
let iterations = 0;
|
|
11
|
+
while (true) {
|
|
12
|
+
if (maxIterations !== undefined && iterations >= maxIterations) {
|
|
13
|
+
break;
|
|
14
|
+
}
|
|
15
|
+
iterations++;
|
|
16
|
+
// Re-read these from config each iteration so that mode changes
|
|
17
|
+
// (e.g. changeModeTool in Navigator) take effect immediately.
|
|
18
|
+
// Callers can use JS getter properties to provide dynamic values.
|
|
19
|
+
const tools = config.tools;
|
|
20
|
+
const helpers = config.helpers;
|
|
21
|
+
const systemMessage = config.systemMessage;
|
|
22
|
+
const modelProvider = config.modelProvider;
|
|
23
|
+
if (onBeforeIteration) {
|
|
24
|
+
await onBeforeIteration(tools, helpers);
|
|
25
|
+
}
|
|
26
|
+
const pendingUserMessage = getPendingUserMessage?.();
|
|
27
|
+
const isOpenAI = modelProvider.provider === 'openai' || modelProvider.provider === 'azure_openai';
|
|
28
|
+
const isAnthropic = modelProvider.provider === 'anthropic';
|
|
29
|
+
const messageParams = [
|
|
30
|
+
systemMessage,
|
|
31
|
+
...messages,
|
|
32
|
+
...(pendingUserMessage ? [pendingUserMessage] : [])
|
|
33
|
+
];
|
|
34
|
+
const toolDefs = tools.map((t) => t.def);
|
|
35
|
+
const parseOptions = { workspace };
|
|
36
|
+
if (isOpenAI) {
|
|
37
|
+
let useCompletionsApi = skipResponsesApi;
|
|
38
|
+
if (!skipResponsesApi) {
|
|
39
|
+
try {
|
|
40
|
+
const completion = await getOpenAIResponsesCompletion(messageParams, abortController, toolDefs, {
|
|
41
|
+
forceModelProvider: modelProvider,
|
|
42
|
+
openaiClient: clients.openai
|
|
43
|
+
});
|
|
44
|
+
const continueCompletion = await parseOpenAIResponsesCompletion(completion, callbacks, messages, addedMessages, tools, helpers, parseOptions);
|
|
45
|
+
if (!continueCompletion) {
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
console.warn('OpenAI Responses API failed, falling back to Completions API:', err);
|
|
51
|
+
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
52
|
+
if (errorMessage.includes('Responses API is not enabled')) {
|
|
53
|
+
skipResponsesApi = true;
|
|
54
|
+
onSkipResponsesApi?.();
|
|
55
|
+
}
|
|
56
|
+
useCompletionsApi = true;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if (useCompletionsApi) {
|
|
60
|
+
const completion = await getCompletion(messageParams, abortController, toolDefs, {
|
|
61
|
+
forceCompletions: true,
|
|
62
|
+
forceModelProvider: modelProvider,
|
|
63
|
+
openaiClient: clients.openai
|
|
64
|
+
});
|
|
65
|
+
const continueCompletion = await parseOpenAICompletion(completion, callbacks, messages, addedMessages, tools, helpers, undefined, parseOptions);
|
|
66
|
+
if (!continueCompletion) {
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
else if (isAnthropic) {
|
|
72
|
+
const completion = await getAnthropicCompletion(messageParams, abortController, toolDefs, {
|
|
73
|
+
forceModelProvider: modelProvider,
|
|
74
|
+
anthropicClient: clients.anthropic
|
|
75
|
+
});
|
|
76
|
+
if (completion) {
|
|
77
|
+
const continueCompletion = await parseAnthropicCompletion(completion, callbacks, messages, addedMessages, tools, helpers, abortController, parseOptions);
|
|
78
|
+
if (!continueCompletion) {
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
const completion = await getCompletion(messageParams, abortController, toolDefs, {
|
|
85
|
+
forceModelProvider: modelProvider,
|
|
86
|
+
openaiClient: clients.openai
|
|
87
|
+
});
|
|
88
|
+
if (completion) {
|
|
89
|
+
const continueCompletion = await parseOpenAICompletion(completion, callbacks, messages, addedMessages, tools, helpers, undefined, parseOptions);
|
|
90
|
+
if (!continueCompletion) {
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return { addedMessages };
|
|
97
|
+
}
|
|
@@ -3,14 +3,20 @@ import type { ChatCompletionMessageParam } from 'openai/resources/index.mjs';
|
|
|
3
3
|
import { type Tool, type ToolCallbacks } from './shared';
|
|
4
4
|
import type { ResponseStream } from 'openai/lib/responses/ResponseStream.mjs';
|
|
5
5
|
import type { AIProviderModel } from '../../../gen';
|
|
6
|
-
export declare function getOpenAIResponsesCompletion(messages: ChatCompletionMessageParam[], abortController: AbortController, tools?: OpenAI.Chat.Completions.ChatCompletionTool[]
|
|
6
|
+
export declare function getOpenAIResponsesCompletion(messages: ChatCompletionMessageParam[], abortController: AbortController, tools?: OpenAI.Chat.Completions.ChatCompletionTool[], options?: {
|
|
7
|
+
forceModelProvider?: AIProviderModel;
|
|
8
|
+
openaiClient?: OpenAI;
|
|
9
|
+
}): Promise<ResponseStream<null>>;
|
|
7
10
|
export declare function getOpenAIResponsesCompletionStream(messages: ChatCompletionMessageParam[], abortController: AbortController, tools?: OpenAI.Chat.Completions.ChatCompletionTool[]): AsyncGenerator<OpenAI.Chat.Completions.ChatCompletionChunk>;
|
|
8
11
|
export declare function parseOpenAIResponsesCompletion(runner: ResponseStream, callbacks: ToolCallbacks & {
|
|
9
12
|
onNewToken: (token: string) => void;
|
|
10
13
|
onMessageEnd: () => void;
|
|
11
|
-
}, messages: ChatCompletionMessageParam[], addedMessages: ChatCompletionMessageParam[], tools: Tool<any>[], helpers: any
|
|
14
|
+
}, messages: ChatCompletionMessageParam[], addedMessages: ChatCompletionMessageParam[], tools: Tool<any>[], helpers: any, options?: {
|
|
15
|
+
workspace?: string;
|
|
16
|
+
}): Promise<boolean>;
|
|
12
17
|
export declare function getNonStreamingOpenAIResponsesCompletion(messages: ChatCompletionMessageParam[], abortController: AbortController, testOptions?: {
|
|
13
18
|
apiKey?: string;
|
|
19
|
+
workspace?: string;
|
|
14
20
|
resourcePath?: string;
|
|
15
21
|
forceModelProvider: AIProviderModel;
|
|
16
22
|
}): Promise<string>;
|