windmill-components 1.677.1 → 1.695.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/AppConnectInner.svelte +6 -0
- package/package/components/ArgInput.svelte +2 -0
- package/package/components/AutoscalingConfigEditor.svelte +18 -4
- package/package/components/CiTestResults.svelte +64 -0
- package/package/components/CiTestResults.svelte.d.ts +7 -0
- package/package/components/CompareWorkspaces.svelte +741 -484
- package/package/components/DBManager.svelte +35 -4
- package/package/components/DBManager.svelte.d.ts +2 -0
- package/package/components/DBManagerContent.svelte +3 -1
- package/package/components/DBManagerContent.svelte.d.ts +3 -0
- package/package/components/DBManagerDrawer.svelte +145 -3
- package/package/components/DBTableEditor.svelte +14 -4
- package/package/components/DatatablePicker.svelte +2 -5
- package/package/components/DatatableSchemaDiff.svelte +531 -0
- package/package/components/DatatableSchemaDiff.svelte.d.ts +29 -0
- package/package/components/DedicatedWorkersSelector.svelte +4 -2
- package/package/components/DefaultTagsInner.svelte +42 -2
- package/package/components/DeployWorkspaceDrawer.svelte +1 -1
- package/package/components/Dev.svelte +407 -74
- package/package/components/EditableSchemaForm.svelte +4 -0
- package/package/components/Editor.svelte +1 -1
- package/package/components/EditorBar.svelte +1 -1
- package/package/components/EditorBar.svelte.d.ts +1 -1
- package/package/components/ErrorOrRecoveryHandler.svelte +2 -2
- package/package/components/FlowPreviewContent.svelte +32 -30
- package/package/components/FlowRestartButton.svelte +143 -61
- package/package/components/FlowRestartButton.svelte.d.ts +37 -0
- package/package/components/FlowStatusViewer.svelte +15 -1
- package/package/components/FlowStatusViewer.svelte.d.ts +10 -2
- package/package/components/FlowStatusViewerInner.svelte +270 -222
- package/package/components/FlowStatusViewerInner.svelte.d.ts +6 -2
- package/package/components/FlowTimeline.svelte +1 -1
- package/package/components/FolderEditor.svelte +189 -4
- package/package/components/ForkConflictModal.svelte +57 -0
- package/package/components/ForkConflictModal.svelte.d.ts +3 -0
- package/package/components/ForkWorkspaceBanner.svelte +82 -11
- package/package/components/GitRepoViewer.svelte +251 -97
- package/package/components/GlobalUserOffboardingModal.svelte +293 -0
- package/package/components/GlobalUserOffboardingModal.svelte.d.ts +10 -0
- package/package/components/InputTransformSchemaForm.svelte +1 -1
- package/package/components/InstanceSettings.svelte +58 -19
- package/package/components/Login.svelte +133 -36
- package/package/components/Login.svelte.d.ts +1 -0
- package/package/components/ModuleTest.svelte +2 -1
- package/package/components/NoMainFuncBadge.svelte +1 -1
- package/package/components/OffboardItemsBox.svelte +56 -0
- package/package/components/OffboardItemsBox.svelte.d.ts +12 -0
- package/package/components/OffboardReassignControls.svelte +47 -0
- package/package/components/OffboardReassignControls.svelte.d.ts +20 -0
- package/package/components/OffboardWorkspaceSection.svelte +110 -0
- package/package/components/OffboardWorkspaceSection.svelte.d.ts +24 -0
- package/package/components/OnBehalfOfSelector.svelte +21 -3
- package/package/components/OnBehalfOfSelector.svelte.d.ts +7 -0
- package/package/components/Path.svelte +7 -1
- package/package/components/Path.svelte.d.ts +1 -1
- package/package/components/QueueAlerts.svelte +10 -10
- package/package/components/ResourcePicker.svelte +2 -2
- package/package/components/RunsPage.svelte +2 -1
- package/package/components/S3FilePickerInner.svelte +89 -89
- package/package/components/ScriptBuilder.svelte +52 -11
- package/package/components/ScriptEditor.svelte +19 -8
- package/package/components/ScriptEditor.svelte.d.ts +1 -1
- package/package/components/ShareModal.svelte +236 -98
- package/package/components/ShareModal.svelte.d.ts +1 -1
- package/package/components/SuperadminSettingsInner.svelte +362 -315
- package/package/components/UserOffboardingModal.svelte +238 -0
- package/package/components/UserOffboardingModal.svelte.d.ts +10 -0
- package/package/components/WorkspaceDeployLayout.svelte +3 -3
- package/package/components/WorkspaceDeployLayout.svelte.d.ts +1 -0
- package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +3 -0
- package/package/components/apps/components/helpers/executeRunnable.js +2 -1
- package/package/components/apps/editor/AppReportsDrawerInner.svelte +1 -1
- package/package/components/apps/editor/appPolicy.js +2 -1
- package/package/components/apps/editor/commonAppUtils.d.ts +3 -0
- package/package/components/apps/editor/inlineScriptsPanel/CacheTtlPopup.svelte +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +7 -0
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +4 -2
- package/package/components/apps/editor/inlineScriptsPanel/TagPopup.svelte +49 -0
- package/package/components/apps/editor/inlineScriptsPanel/TagPopup.svelte.d.ts +9 -0
- package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +12 -0
- package/package/components/apps/inputType.d.ts +1 -0
- package/package/components/apps/sharedTypes.d.ts +1 -0
- package/package/components/assets/AssetsDropdownButton.svelte +1 -1
- package/package/components/auditLogs/AuditLogsFilters.svelte +8 -3
- package/package/components/common/confirmationModal/ConfirmationModal.svelte +1 -1
- package/package/components/common/fileUpload/S3ArgInput.svelte +12 -10
- package/package/components/common/fileUpload/S3ArgInput.svelte.d.ts +2 -0
- package/package/components/common/table/AppRow.svelte +3 -3
- package/package/components/common/table/FlowRow.svelte +3 -3
- package/package/components/common/table/RawAppRow.svelte +4 -4
- package/package/components/common/table/Row.svelte +6 -2
- package/package/components/common/table/ScriptRow.svelte +11 -3
- package/package/components/copilot/chat/AIChatDisplay.svelte +5 -36
- package/package/components/copilot/chat/AIChatInput.svelte +56 -47
- package/package/components/copilot/chat/AIChatManager.svelte.js +50 -48
- package/package/components/copilot/chat/ContextElementBadge.svelte +6 -4
- package/package/components/copilot/chat/anthropic.d.ts +7 -1
- package/package/components/copilot/chat/anthropic.js +5 -2
- package/package/components/copilot/chat/app/core.d.ts +12 -20
- package/package/components/copilot/chat/app/core.js +230 -159
- package/package/components/copilot/chat/app/core.test.js +417 -0
- package/package/components/copilot/chat/chatLoop.d.ts +3 -0
- package/package/components/copilot/chat/chatLoop.js +13 -5
- package/package/components/copilot/chat/context.js +44 -0
- package/package/components/copilot/chat/flow/FlowAIChat.svelte +57 -76
- package/package/components/copilot/chat/flow/core.d.ts +14 -3
- package/package/components/copilot/chat/flow/core.js +494 -116
- package/package/components/copilot/chat/flow/helperUtils.d.ts +22 -0
- package/package/components/copilot/chat/flow/helperUtils.js +100 -0
- package/package/components/copilot/chat/flow/helperUtils.test.js +231 -0
- package/package/components/copilot/chat/flow/inlineScriptsUtils.d.ts +5 -24
- package/package/components/copilot/chat/flow/inlineScriptsUtils.js +30 -55
- package/package/components/copilot/chat/flow/openFlow.json +1 -1
- package/package/components/copilot/chat/flow/openFlowZod.gen.js +24 -0
- package/package/components/copilot/chat/flow/utils.test.js +59 -0
- package/package/components/copilot/chat/openai-responses.d.ts +7 -1
- package/package/components/copilot/chat/openai-responses.js +5 -2
- package/package/components/copilot/chat/script/core.js +3 -0
- package/package/components/copilot/chat/shared.d.ts +7 -2
- package/package/components/copilot/chat/shared.js +116 -53
- package/package/components/copilot/chat/shared.test.d.ts +1 -0
- package/package/components/copilot/chat/shared.test.js +412 -0
- package/package/components/copilot/chat/tokenUsage.d.ts +23 -0
- package/package/components/copilot/chat/tokenUsage.js +42 -0
- package/package/components/copilot/chat/workspaceTools.d.ts +7 -0
- package/package/components/copilot/chat/workspaceTools.js +239 -0
- package/package/components/copilot/chat/workspaceToolsZod.gen.d.ts +1295 -0
- package/package/components/copilot/chat/workspaceToolsZod.gen.js +424 -0
- package/package/components/copilot/lib.d.ts +5 -1
- package/package/components/copilot/lib.js +24 -6
- package/package/components/copilot/lib.test.d.ts +1 -0
- package/package/components/copilot/lib.test.js +19 -0
- package/package/components/copilot/modelConfig.d.ts +3 -0
- package/package/components/copilot/modelConfig.js +10 -0
- package/package/components/deploymentRequest/DeploymentRequestPanel.svelte +337 -0
- package/package/components/deploymentRequest/DeploymentRequestPanel.svelte.d.ts +15 -0
- package/package/components/details/CopyableCodeBlock.svelte +18 -8
- package/package/components/details/CopyableCodeBlock.svelte.d.ts +1 -0
- package/package/components/flows/FlowAssetsHandler.svelte +19 -21
- package/package/components/flows/FlowProgressBar.svelte +5 -2
- package/package/components/flows/agentToolTree.d.ts +17 -0
- package/package/components/flows/agentToolTree.js +114 -0
- package/package/components/flows/agentToolTree.test.d.ts +1 -0
- package/package/components/flows/agentToolTree.test.js +86 -0
- package/package/components/flows/agentToolUtils.d.ts +0 -5
- package/package/components/flows/agentToolUtils.js +0 -49
- package/package/components/flows/content/FlowLoop.svelte +7 -4
- package/package/components/flows/content/FlowModuleComponent.svelte +636 -599
- package/package/components/flows/content/FlowModuleDeleteAfterUse.svelte +15 -7
- package/package/components/flows/content/FlowSettings.svelte +29 -0
- package/package/components/flows/conversations/FlowChatManager.svelte.js +21 -10
- package/package/components/flows/dfs.d.ts +6 -2
- package/package/components/flows/dfs.js +19 -11
- package/package/components/flows/flowDeleteController.d.ts +32 -0
- package/package/components/flows/flowDeleteController.js +54 -0
- package/package/components/flows/flowDeleteController.test.d.ts +1 -0
- package/package/components/flows/flowDeleteController.test.js +121 -0
- package/package/components/flows/flowDeleteUtils.d.ts +48 -0
- package/package/components/flows/flowDeleteUtils.js +150 -0
- package/package/components/flows/flowDeleteUtils.test.d.ts +1 -0
- package/package/components/flows/flowDeleteUtils.test.js +131 -0
- package/package/components/flows/flowDiff.d.ts +2 -47
- package/package/components/flows/flowDiff.js +16 -293
- package/package/components/flows/flowDiff.testUtils.d.ts +8 -0
- package/package/components/flows/flowDiff.testUtils.js +26 -0
- package/package/components/flows/flowDiffManager.svelte.js +20 -75
- package/package/components/flows/flowDiffManager.svelte.test.js +103 -2
- package/package/components/flows/flowExplorer.d.ts +4 -0
- package/package/components/flows/flowExplorer.js +7 -30
- package/package/components/flows/flowState.d.ts +1 -0
- package/package/components/flows/flowStateUtils.svelte.js +11 -2
- package/package/components/flows/flowTree.d.ts +91 -0
- package/package/components/flows/flowTree.js +326 -0
- package/package/components/flows/flowTree.test.d.ts +1 -0
- package/package/components/flows/flowTree.test.js +236 -0
- package/package/components/flows/map/FlowJobsMenu.svelte +36 -30
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +1 -1
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +73 -229
- package/package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +1 -2
- package/package/components/flows/pickers/PickHubScriptQuick.svelte +2 -2
- package/package/components/flows/previousResults.js +13 -41
- package/package/components/flows/previousResults.test.d.ts +1 -0
- package/package/components/flows/previousResults.test.js +65 -0
- package/package/components/flows/propPicker/OutputPicker.svelte +2 -1
- package/package/components/flows/propPicker/OutputPickerInner.svelte +41 -4
- package/package/components/flows/propPicker/StepHistory.svelte +9 -1
- package/package/components/git_sync/GitSyncContext.svelte.js +11 -7
- package/package/components/git_sync/GitSyncRepositoryCard.svelte +2 -29
- package/package/components/git_sync/PullWorkspaceModal.svelte +6 -7
- package/package/components/graph/FlowGraphV2.svelte +8 -4
- package/package/components/graph/FlowGraphV2.svelte.d.ts +2 -0
- package/package/components/graph/groupedModulesProxy.svelte.d.ts +10 -0
- package/package/components/graph/groupedModulesProxy.svelte.js +17 -1
- package/package/components/graph/renderers/triggers/TriggersBadge.svelte +8 -2
- package/package/components/home/HomeConnectDrawer.svelte +125 -0
- package/package/components/home/HomeConnectDrawer.svelte.d.ts +5 -0
- package/package/components/home/deploy_ui.js +1 -1
- package/package/components/icons/AzureIcon.svelte +12 -25
- package/package/components/icons/AzureIcon.svelte.d.ts +3 -2
- package/package/components/icons/GithubIcon.svelte +4 -4
- package/package/components/icons/GithubIcon.svelte.d.ts +5 -2
- package/package/components/instanceSettings/ExternalJwtTokens.svelte +85 -0
- package/package/components/instanceSettings/ExternalJwtTokens.svelte.d.ts +12 -0
- package/package/components/instanceSettings/GhesAppSettings.svelte +17 -0
- package/package/components/instanceSettings/IndexerMemorySettings.svelte +56 -29
- package/package/components/instanceSettings/SecretBackendConfig.svelte +9 -2
- package/package/components/instanceSettings.d.ts +1 -0
- package/package/components/instanceSettings.js +66 -8
- package/package/components/mcp/McpScopeSelector.svelte +119 -9
- package/package/components/mcp/McpScopeSelector.svelte.d.ts +1 -0
- package/package/components/offboarding-utils.d.ts +11 -0
- package/package/components/offboarding-utils.js +102 -0
- package/package/components/progressBar/ProgressBar.svelte +9 -5
- package/package/components/progressBar/ProgressBar.svelte.d.ts +1 -0
- package/package/components/raw_apps/DeleteAfterUsePopup.svelte +52 -0
- package/package/components/raw_apps/DeleteAfterUsePopup.svelte.d.ts +9 -0
- package/package/components/raw_apps/RawAppBackgroundRunner.svelte +5 -1
- package/package/components/raw_apps/RawAppDataTableDrawer.svelte +1 -1
- package/package/components/raw_apps/RawAppEditor.svelte +186 -102
- package/package/components/raw_apps/RawAppEditorHeader.svelte +6 -1
- package/package/components/raw_apps/RawAppEditorHeader.svelte.d.ts +1 -0
- package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +9 -3
- package/package/components/raw_apps/RawAppInlineScriptEditor.svelte.d.ts +2 -1
- package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +1 -0
- package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte.d.ts +1 -0
- package/package/components/raw_apps/RawAppInputsSpecEditor.svelte +48 -5
- package/package/components/raw_apps/RawAppSharedUiDrawer.svelte +129 -0
- package/package/components/raw_apps/RawAppSharedUiDrawer.svelte.d.ts +5 -0
- package/package/components/raw_apps/RawAppSidebar.svelte +12 -0
- package/package/components/raw_apps/RawAppYamlEditor.svelte +81 -0
- package/package/components/raw_apps/RawAppYamlEditor.svelte.d.ts +20 -0
- package/package/components/raw_apps/dataTableRefUtils.d.ts +7 -0
- package/package/components/raw_apps/dataTableRefUtils.js +34 -0
- package/package/components/raw_apps/dataTableRefUtils.test.d.ts +1 -0
- package/package/components/raw_apps/dataTableRefUtils.test.js +29 -0
- package/package/components/raw_apps/datatableUtils.svelte.js +1 -1
- package/package/components/raw_apps/rawAppPolicy.d.ts +1 -0
- package/package/components/raw_apps/rawAppPolicy.js +17 -2
- package/package/components/resources/resourceTypesFilter.d.ts +19 -0
- package/package/components/resources/resourceTypesFilter.js +21 -0
- package/package/components/restartFromStepPath.d.ts +39 -0
- package/package/components/restartFromStepPath.js +89 -0
- package/package/components/runs/JobDetailFieldConfig.d.ts +1 -0
- package/package/components/runs/JobDetailFieldConfig.js +57 -10
- package/package/components/runs/JobDetailHeader.svelte +24 -3
- package/package/components/runs/runsFilter.d.ts +1 -1
- package/package/components/schema/FlowPropertyEditor.svelte +30 -1
- package/package/components/schema/FlowPropertyEditor.svelte.d.ts +5 -2
- package/package/components/script_builder.d.ts +1 -1
- package/package/components/search/GlobalSearchModal.svelte +8 -1
- package/package/components/select/Select.svelte +3 -2
- package/package/components/select/Select.svelte.d.ts +1 -0
- package/package/components/settings/CreateToken.svelte +91 -71
- package/package/components/settings/CreateToken.svelte.d.ts +3 -0
- package/package/components/settings/EditTokenScopesModal.svelte +57 -0
- package/package/components/settings/EditTokenScopesModal.svelte.d.ts +10 -0
- package/package/components/settings/ScopesPicker.svelte +43 -0
- package/package/components/settings/ScopesPicker.svelte.d.ts +11 -0
- package/package/components/settings/TokensTable.svelte +51 -15
- package/package/components/settings/WorkspaceUserSettings.svelte +34 -28
- package/package/components/sidebar/OperatorMenu.svelte +6 -0
- package/package/components/sidebar/SidebarContent.svelte +68 -2
- package/package/components/sidebar/WorkspaceMenu.svelte +8 -4
- package/package/components/triggers/AddTriggersButton.svelte +17 -0
- package/package/components/triggers/CaptureWrapper.svelte +19 -1
- package/package/components/triggers/PermissionedAsLine.svelte +37 -3
- package/package/components/triggers/PermissionedAsLine.svelte.d.ts +6 -0
- package/package/components/triggers/TriggerEditorToolbar.svelte.d.ts +1 -1
- package/package/components/triggers/TriggerModeToggle.svelte +36 -7
- package/package/components/triggers/TriggerModeToggle.svelte.d.ts +1 -1
- package/package/components/triggers/TriggerSuspendedJobsModal.svelte.d.ts +1 -1
- package/package/components/triggers/TriggersEditor.svelte +10 -2
- package/package/components/triggers/TriggersWrapper.svelte +20 -0
- package/package/components/triggers/azure/AzureCapture.svelte +41 -0
- package/package/components/triggers/azure/AzureCapture.svelte.d.ts +44 -0
- package/package/components/triggers/azure/AzureTriggerEditor.svelte +20 -0
- package/package/components/triggers/azure/AzureTriggerEditor.svelte.d.ts +9 -0
- package/package/components/triggers/azure/AzureTriggerEditorConfigSection.svelte +301 -0
- package/package/components/triggers/azure/AzureTriggerEditorConfigSection.svelte.d.ts +16 -0
- package/package/components/triggers/azure/AzureTriggerEditorInner.svelte +422 -0
- package/package/components/triggers/azure/AzureTriggerEditorInner.svelte.d.ts +25 -0
- package/package/components/triggers/azure/AzureTriggerPanel.svelte +55 -0
- package/package/components/triggers/azure/AzureTriggerPanel.svelte.d.ts +10 -0
- package/{dist/sharedUtils/components/triggers/kafka → package/components/triggers/azure}/utils.d.ts +1 -1
- package/package/components/triggers/azure/utils.js +56 -0
- package/package/components/triggers/email/EmailTriggerEditorInner.svelte +15 -11
- package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +22 -14
- package/package/components/triggers/http/RouteEditorConfigSection.svelte +15 -7
- package/package/components/triggers/http/RouteEditorInner.svelte +16 -14
- package/package/components/triggers/http/RoutesGenerator.svelte +6 -1
- package/package/components/triggers/http/RoutesPanel.svelte +1 -1
- package/package/components/triggers/http/utils.d.ts +1 -1
- package/package/components/triggers/http/utils.js +2 -2
- package/package/components/triggers/kafka/KafkaTriggerEditorInner.svelte +22 -14
- package/package/components/triggers/mqtt/MqttTriggerEditorInner.svelte +22 -14
- package/package/components/triggers/native/NativeTriggerEditor.svelte +3 -0
- package/package/components/triggers/native/services/github/GitHubTriggerForm.svelte +118 -0
- package/package/components/triggers/native/services/github/GitHubTriggerForm.svelte.d.ts +17 -0
- package/package/components/triggers/native/utils.js +14 -0
- package/package/components/triggers/nats/NatsTriggerEditor.svelte.d.ts +4 -3
- package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +22 -14
- package/package/components/triggers/postgres/PostgresTriggerEditor.svelte.d.ts +4 -3
- package/package/components/triggers/postgres/PostgresTriggerEditorInner.svelte +22 -14
- package/package/components/triggers/schedules/ScheduleEditorInner.svelte +22 -14
- package/package/components/triggers/sqs/SqsTriggerEditor.svelte.d.ts +4 -3
- package/package/components/triggers/sqs/SqsTriggerEditorInner.svelte +22 -14
- package/package/components/triggers/triggers.svelte.d.ts +1 -0
- package/package/components/triggers/triggers.svelte.js +24 -1
- package/package/components/triggers/utils.js +47 -6
- package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +22 -14
- package/package/components/triggers.d.ts +1 -1
- package/package/components/useFolderDefaultPermissionedAs.svelte.d.ts +13 -0
- package/package/components/useFolderDefaultPermissionedAs.svelte.js +63 -0
- package/package/components/useNestedRestartState.svelte.d.ts +56 -0
- package/package/components/useNestedRestartState.svelte.js +320 -0
- package/package/components/workspaceSettings/CreateWorkspace.svelte +16 -677
- package/package/components/workspaceSettings/CreateWorkspaceInner.svelte +604 -0
- package/package/components/workspaceSettings/CreateWorkspaceInner.svelte.d.ts +7 -0
- package/package/components/workspaceSettings/CustomInstanceDbSelect.svelte +27 -25
- package/package/components/workspaceSettings/CustomInstanceDbWizardModal.svelte +46 -8
- package/package/components/workspaceSettings/DataTableSettings.svelte +27 -22
- package/package/components/workspaceSettings/DucklakeSettings.svelte +1 -1
- package/package/components/workspaceSettings/ForkDatatableSection.svelte +228 -0
- package/package/components/workspaceSettings/ForkDatatableSection.svelte.d.ts +28 -0
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +8 -2
- package/package/components/workspaceSettings/RulesetEditor.svelte +27 -2
- package/package/components/workspaceSettings/SharedUiSettings.svelte +175 -0
- package/package/components/workspaceSettings/SharedUiSettings.svelte.d.ts +3 -0
- package/package/components/workspaceSettings/VolumeStorageSettings.svelte +1 -1
- package/package/components/workspaceSettings/WorkspaceIntegrations.svelte +17 -1
- package/package/consts.d.ts +3 -0
- package/package/consts.js +10 -0
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +795 -59
- package/package/gen/schemas.gen.js +801 -60
- package/package/gen/services.gen.d.ts +475 -5
- package/package/gen/services.gen.js +976 -23
- package/package/gen/types.gen.d.ts +1865 -75
- package/package/githubApp.js +5 -1
- package/package/hubPaths.json +2 -8
- package/package/infer.d.ts +1 -1
- package/package/infer.js +50 -52
- package/package/infer.svelte.js +10 -1
- package/package/mcpEndpointTools.js +60 -4
- package/package/monaco_workers/sqlTypePlugin.worker.d.ts +10 -0
- package/package/monaco_workers/sqlTypePlugin.worker.js +39 -0
- package/package/script_helpers.d.ts +8 -2
- package/package/script_helpers.js +31 -0
- package/package/stores.d.ts +11 -0
- package/package/stores.js +6 -0
- package/package/system_prompts/index.d.ts +1 -0
- package/package/system_prompts/index.js +8 -0
- package/package/system_prompts/prompts.d.ts +17 -13
- package/package/system_prompts/prompts.js +921 -61
- package/package/templates/ci_test_bun.ts.template +27 -0
- package/package/templates/ci_test_python.py.template +26 -0
- package/package/utils/forkConflict.d.ts +26 -0
- package/package/utils/forkConflict.js +56 -0
- package/package/utils_deployable.d.ts +164 -121
- package/package/utils_deployable.js +61 -11
- package/package/utils_workspace_deploy.d.ts +8 -8
- package/package/utils_workspace_deploy.js +89 -421
- package/package.json +30 -6
- 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/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/copilot/chat/__tests__/app/appChat.eval.test.js +0 -153
- package/package/components/copilot/chat/__tests__/app/appEvalComparison.d.ts +0 -21
- package/package/components/copilot/chat/__tests__/app/appEvalComparison.js +0 -136
- package/package/components/copilot/chat/__tests__/app/appEvalHelpers.d.ts +0 -15
- package/package/components/copilot/chat/__tests__/app/appEvalHelpers.js +0 -107
- package/package/components/copilot/chat/__tests__/app/appEvalRunner.d.ts +0 -50
- package/package/components/copilot/chat/__tests__/app/appEvalRunner.js +0 -93
- package/package/components/copilot/chat/__tests__/app/appFixtureLoader.d.ts +0 -29
- package/package/components/copilot/chat/__tests__/app/appFixtureLoader.js +0 -134
- package/package/components/copilot/chat/__tests__/app/appResultsWriter.d.ts +0 -30
- package/package/components/copilot/chat/__tests__/app/appResultsWriter.js +0 -197
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/createFolder/main.d.ts +0 -10
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/createFolder/main.js +0 -9
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/createFolder/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/deleteItem/main.d.ts +0 -6
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/deleteItem/main.js +0 -5
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/deleteItem/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/main.d.ts +0 -12
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/main.js +0 -14
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFolders/main.d.ts +0 -8
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFolders/main.js +0 -25
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFolders/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/moveItem/main.d.ts +0 -7
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/moveItem/main.js +0 -5
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/moveItem/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/renameItem/main.d.ts +0 -8
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/renameItem/main.js +0 -5
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/renameItem/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Breadcrumb.d.ts +0 -10
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Breadcrumb.tsx +0 -26
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileItem.d.ts +0 -10
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileItem.tsx +0 -79
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileList.d.ts +0 -10
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileList.tsx +0 -46
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FolderTree.d.ts +0 -10
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FolderTree.tsx +0 -56
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Toolbar.d.ts +0 -6
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Toolbar.tsx +0 -59
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/index.d.ts +0 -16
- package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/index.tsx +0 -119
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/addToCart/main.d.ts +0 -15
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/addToCart/main.js +0 -14
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/addToCart/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/calculateTotal/main.d.ts +0 -14
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/calculateTotal/main.js +0 -5
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/calculateTotal/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/getProducts/main.d.ts +0 -6
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/getProducts/main.js +0 -41
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/getProducts/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/removeFromCart/main.d.ts +0 -15
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/removeFromCart/main.js +0 -3
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/removeFromCart/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/Cart.d.ts +0 -9
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/Cart.tsx +0 -51
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductCard.d.ts +0 -8
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductCard.tsx +0 -27
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductList.d.ts +0 -8
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductList.tsx +0 -18
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/index.d.ts +0 -12
- package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/index.tsx +0 -81
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/decrementCounter/main.d.ts +0 -3
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/decrementCounter/main.js +0 -3
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/decrementCounter/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/incrementCounter/main.d.ts +0 -3
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/incrementCounter/main.js +0 -3
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/incrementCounter/meta.json +0 -4
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/frontend/index.d.ts +0 -2
- package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/frontend/index.tsx +0 -38
- package/package/components/copilot/chat/__tests__/app/variants/baseline.d.ts +0 -6
- package/package/components/copilot/chat/__tests__/app/variants/baseline.js +0 -10
- package/package/components/copilot/chat/__tests__/app/variants/index.d.ts +0 -3
- package/package/components/copilot/chat/__tests__/app/variants/index.js +0 -3
- package/package/components/copilot/chat/__tests__/app/variants/streamlined.d.ts +0 -6
- package/package/components/copilot/chat/__tests__/app/variants/streamlined.js +0 -137
- package/package/components/copilot/chat/__tests__/flow/expected/test1.json +0 -134
- package/package/components/copilot/chat/__tests__/flow/expected/test2.json +0 -183
- package/package/components/copilot/chat/__tests__/flow/expected/test3.json +0 -204
- package/package/components/copilot/chat/__tests__/flow/expected/test4.json +0 -175
- package/package/components/copilot/chat/__tests__/flow/expected/test5_modify_simple.json +0 -68
- package/package/components/copilot/chat/__tests__/flow/expected/test6_modify_medium.json +0 -142
- package/package/components/copilot/chat/__tests__/flow/expected/test7_modify_complex.json +0 -136
- package/package/components/copilot/chat/__tests__/flow/flowChat.eval.test.js +0 -294
- package/package/components/copilot/chat/__tests__/flow/flowEvalComparison.d.ts +0 -17
- package/package/components/copilot/chat/__tests__/flow/flowEvalComparison.js +0 -49
- package/package/components/copilot/chat/__tests__/flow/flowEvalHelpers.d.ts +0 -12
- package/package/components/copilot/chat/__tests__/flow/flowEvalHelpers.js +0 -79
- package/package/components/copilot/chat/__tests__/flow/flowEvalRunner.d.ts +0 -50
- package/package/components/copilot/chat/__tests__/flow/flowEvalRunner.js +0 -102
- package/package/components/copilot/chat/__tests__/flow/initial/test5_initial.json +0 -53
- package/package/components/copilot/chat/__tests__/flow/initial/test6_initial.json +0 -68
- package/package/components/copilot/chat/__tests__/flow/initial/test7_initial.json +0 -120
- package/package/components/copilot/chat/__tests__/flow/variants/baseline.d.ts +0 -6
- package/package/components/copilot/chat/__tests__/flow/variants/baseline.js +0 -10
- package/package/components/copilot/chat/__tests__/flow/variants/index.d.ts +0 -3
- package/package/components/copilot/chat/__tests__/flow/variants/index.js +0 -3
- package/package/components/copilot/chat/__tests__/flow/variants/minimal-single-tool.d.ts +0 -15
- package/package/components/copilot/chat/__tests__/flow/variants/minimal-single-tool.js +0 -388
- package/package/components/copilot/chat/__tests__/shared/baseEvalRunner.d.ts +0 -45
- package/package/components/copilot/chat/__tests__/shared/baseEvalRunner.js +0 -121
- package/package/components/copilot/chat/__tests__/shared/baseLLMEvaluator.d.ts +0 -28
- package/package/components/copilot/chat/__tests__/shared/baseLLMEvaluator.js +0 -96
- package/package/components/copilot/chat/__tests__/shared/baseResultsWriter.d.ts +0 -32
- package/package/components/copilot/chat/__tests__/shared/baseResultsWriter.js +0 -130
- package/package/components/copilot/chat/__tests__/shared/baseVariants.d.ts +0 -45
- package/package/components/copilot/chat/__tests__/shared/baseVariants.js +0 -57
- package/package/components/copilot/chat/__tests__/shared/index.d.ts +0 -10
- package/package/components/copilot/chat/__tests__/shared/index.js +0 -5
- package/package/components/copilot/chat/__tests__/shared/types.d.ts +0 -105
- package/package/components/copilot/chat/__tests__/shared/types.js +0 -9
- package/package/components/copilot/chat/flow/openFlowZod.js +0 -24
- package/package/components/copilot/chat/flow/utils.d.ts +0 -14
- package/package/components/copilot/chat/flow/utils.js +0 -108
- package/package/components/flows/agentToolUtils.test.js +0 -55
- /package/package/components/copilot/chat/{__tests__/app/appChat.eval.test.d.ts → app/core.test.d.ts} +0 -0
- /package/package/components/copilot/chat/{__tests__/flow/flowChat.eval.test.d.ts → flow/helperUtils.test.d.ts} +0 -0
- /package/package/components/copilot/chat/flow/{openFlowZod.d.ts → openFlowZod.gen.d.ts} +0 -0
- /package/package/components/{flows/agentToolUtils.test.d.ts → copilot/chat/flow/utils.test.d.ts} +0 -0
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import Anthropic from '@anthropic-ai/sdk';
|
|
2
|
-
import { BASE_EVALUATOR_RESPONSE_FORMAT } from '../shared';
|
|
3
|
-
/**
|
|
4
|
-
* System prompt for evaluating app generation without a reference expected app.
|
|
5
|
-
* Evaluates based on user request fulfillment and appropriate modifications to initial state.
|
|
6
|
-
*/
|
|
7
|
-
const APP_GENERATION_EVALUATOR_SYSTEM_PROMPT = `You are an expert evaluator for Windmill Raw App definitions. Your task is to evaluate a generated app based on:
|
|
8
|
-
1. The original user request/prompt
|
|
9
|
-
2. The initial app state (if any) - this is what the app looked like before the AI made changes
|
|
10
|
-
|
|
11
|
-
## Windmill Raw App Context
|
|
12
|
-
- Raw Apps consist of frontend files and backend runnables
|
|
13
|
-
- Frontend files are TypeScript/JavaScript files bundled with esbuild (entrypoint: index.tsx)
|
|
14
|
-
- Backend runnables can be: inline scripts (TypeScript/Python), workspace scripts, workspace flows, or hub scripts
|
|
15
|
-
- Frontend calls backend using \`await backend.<runnable_key>(args...)\`
|
|
16
|
-
- Each backend runnable has a key (identifier), name (description), type, and configuration
|
|
17
|
-
|
|
18
|
-
## Backend Runnable Types
|
|
19
|
-
- **inline**: Custom code with \`inlineScript.language\` and \`inlineScript.content\`
|
|
20
|
-
- **script**: Workspace script reference with \`path\`
|
|
21
|
-
- **flow**: Workspace flow reference with \`path\`
|
|
22
|
-
- **hubscript**: Hub script reference with \`path\`
|
|
23
|
-
|
|
24
|
-
## Evaluation Criteria
|
|
25
|
-
1. **User Request Fulfillment**: Does the generated app address ALL requirements from the user's original prompt?
|
|
26
|
-
- Are all requested features implemented?
|
|
27
|
-
- Does the frontend UI match the requirements?
|
|
28
|
-
- Are the correct backend runnables created?
|
|
29
|
-
2. **Appropriate Modifications** (if initial app was provided):
|
|
30
|
-
- Were the changes made relevant to the user's request?
|
|
31
|
-
- Was existing functionality preserved where appropriate?
|
|
32
|
-
- Were only necessary changes made (no unnecessary removals or additions)?
|
|
33
|
-
3. **Frontend Structure**: Are the frontend files correctly organized and implemented?
|
|
34
|
-
- Is the code valid TypeScript/JavaScript?
|
|
35
|
-
- Are components properly structured?
|
|
36
|
-
- Are backend calls correctly made?
|
|
37
|
-
4. **Backend Structure**: Are the backend runnables correctly configured?
|
|
38
|
-
- Do inline scripts have proper main functions?
|
|
39
|
-
- Are types and paths correct for non-inline runnables?
|
|
40
|
-
5. **Integration**: Does the frontend correctly call the backend?
|
|
41
|
-
- Are the runnable keys correctly referenced?
|
|
42
|
-
- Are arguments passed correctly?
|
|
43
|
-
6. **Code Quality**: Is the code functionally correct and well-structured?
|
|
44
|
-
|
|
45
|
-
## Important Notes
|
|
46
|
-
- Focus on whether the user's request was fulfilled, not on stylistic preferences
|
|
47
|
-
- If an initial app was provided, evaluate the appropriateness of the changes made
|
|
48
|
-
- For new apps (no initial state), evaluate completeness and correctness
|
|
49
|
-
- Extra helper functions or slightly different approaches can still score high if they accomplish the goal
|
|
50
|
-
|
|
51
|
-
${BASE_EVALUATOR_RESPONSE_FORMAT}`;
|
|
52
|
-
/**
|
|
53
|
-
* Evaluates how well a generated app fulfills the user's request, considering any initial app state.
|
|
54
|
-
* Uses Anthropic API directly.
|
|
55
|
-
*/
|
|
56
|
-
export async function evaluateAppGeneration(userPrompt, generatedApp, initialApp) {
|
|
57
|
-
// @ts-ignore
|
|
58
|
-
const apiKey = process.env.ANTHROPIC_API_KEY;
|
|
59
|
-
if (!apiKey) {
|
|
60
|
-
return {
|
|
61
|
-
success: false,
|
|
62
|
-
resemblanceScore: 0,
|
|
63
|
-
statement: 'No API key available for evaluation',
|
|
64
|
-
error: 'ANTHROPIC_API_KEY not set'
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
const client = new Anthropic({ apiKey });
|
|
68
|
-
let userMessage = `## User's Original Request
|
|
69
|
-
${userPrompt}
|
|
70
|
-
|
|
71
|
-
`;
|
|
72
|
-
if (initialApp) {
|
|
73
|
-
userMessage += `## Initial App State (before AI modifications)
|
|
74
|
-
\`\`\`json
|
|
75
|
-
${JSON.stringify(initialApp, null, 2)}
|
|
76
|
-
\`\`\`
|
|
77
|
-
|
|
78
|
-
`;
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
userMessage += `## Initial App State
|
|
82
|
-
No initial app was provided - this is a new app created from scratch.
|
|
83
|
-
|
|
84
|
-
`;
|
|
85
|
-
}
|
|
86
|
-
userMessage += `## Generated App
|
|
87
|
-
\`\`\`json
|
|
88
|
-
${JSON.stringify(generatedApp, null, 2)}
|
|
89
|
-
\`\`\`
|
|
90
|
-
|
|
91
|
-
Please evaluate how well the generated app:
|
|
92
|
-
1. Fulfills ALL requirements from the user's original request
|
|
93
|
-
2. ${initialApp ? 'Makes appropriate modifications to the initial app state' : 'Implements a complete and correct new app'}`;
|
|
94
|
-
try {
|
|
95
|
-
const response = await client.messages.create({
|
|
96
|
-
model: 'claude-sonnet-4-5-20250514',
|
|
97
|
-
max_tokens: 2048,
|
|
98
|
-
system: APP_GENERATION_EVALUATOR_SYSTEM_PROMPT,
|
|
99
|
-
messages: [
|
|
100
|
-
{ role: 'user', content: userMessage }
|
|
101
|
-
],
|
|
102
|
-
temperature: 0
|
|
103
|
-
});
|
|
104
|
-
const textBlock = response.content.find((block) => block.type === 'text');
|
|
105
|
-
const content = textBlock?.text;
|
|
106
|
-
if (!content) {
|
|
107
|
-
return {
|
|
108
|
-
success: false,
|
|
109
|
-
resemblanceScore: 0,
|
|
110
|
-
statement: 'No response from evaluator',
|
|
111
|
-
error: 'Empty response from LLM'
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
// Parse JSON response - handle potential markdown code blocks
|
|
115
|
-
let jsonContent = content.trim();
|
|
116
|
-
if (jsonContent.startsWith('```')) {
|
|
117
|
-
jsonContent = jsonContent.replace(/^```(?:json)?\n?/, '').replace(/\n?```$/, '');
|
|
118
|
-
}
|
|
119
|
-
const parsed = JSON.parse(jsonContent);
|
|
120
|
-
return {
|
|
121
|
-
success: true,
|
|
122
|
-
resemblanceScore: Math.max(0, Math.min(100, Math.round(parsed.resemblanceScore))),
|
|
123
|
-
statement: parsed.statement,
|
|
124
|
-
missingRequirements: parsed.missingRequirements ?? []
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
catch (err) {
|
|
128
|
-
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
129
|
-
return {
|
|
130
|
-
success: false,
|
|
131
|
-
resemblanceScore: 0,
|
|
132
|
-
statement: 'Evaluation failed',
|
|
133
|
-
error: errorMessage
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { AppAIChatHelpers, AppFiles, BackendRunnable } from '../../app/core';
|
|
2
|
-
/**
|
|
3
|
-
* Creates mock AppAIChatHelpers for eval testing.
|
|
4
|
-
* Tracks app files state in memory and allows tool functions to modify it.
|
|
5
|
-
*/
|
|
6
|
-
export declare function createAppEvalHelpers(initialFrontend?: Record<string, string>, initialBackend?: Record<string, BackendRunnable>): {
|
|
7
|
-
helpers: AppAIChatHelpers;
|
|
8
|
-
getFiles: () => AppFiles;
|
|
9
|
-
getFrontend: () => {
|
|
10
|
-
[x: string]: string;
|
|
11
|
-
};
|
|
12
|
-
getBackend: () => {
|
|
13
|
-
[x: string]: BackendRunnable;
|
|
14
|
-
};
|
|
15
|
-
};
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Creates an empty lint result (no errors or warnings).
|
|
3
|
-
*/
|
|
4
|
-
function createEmptyLintResult() {
|
|
5
|
-
return {
|
|
6
|
-
errorCount: 0,
|
|
7
|
-
warningCount: 0,
|
|
8
|
-
errors: { frontend: {}, backend: {} },
|
|
9
|
-
warnings: { frontend: {}, backend: {} }
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Creates mock AppAIChatHelpers for eval testing.
|
|
14
|
-
* Tracks app files state in memory and allows tool functions to modify it.
|
|
15
|
-
*/
|
|
16
|
-
export function createAppEvalHelpers(initialFrontend = {}, initialBackend = {}) {
|
|
17
|
-
// In-memory state
|
|
18
|
-
let frontend = { ...initialFrontend };
|
|
19
|
-
let backend = { ...initialBackend };
|
|
20
|
-
let snapshotId = 0;
|
|
21
|
-
const snapshots = new Map();
|
|
22
|
-
const helpers = {
|
|
23
|
-
// Frontend file operations
|
|
24
|
-
listFrontendFiles: () => Object.keys(frontend),
|
|
25
|
-
getFrontendFile: (path) => frontend[path],
|
|
26
|
-
getFrontendFiles: () => ({ ...frontend }),
|
|
27
|
-
setFrontendFile: (path, content) => {
|
|
28
|
-
frontend[path] = content;
|
|
29
|
-
// Return mock lint result - in real usage this would validate the file
|
|
30
|
-
return createEmptyLintResult();
|
|
31
|
-
},
|
|
32
|
-
deleteFrontendFile: (path) => {
|
|
33
|
-
delete frontend[path];
|
|
34
|
-
},
|
|
35
|
-
// Backend runnable operations
|
|
36
|
-
listBackendRunnables: () => {
|
|
37
|
-
return Object.entries(backend).map(([key, runnable]) => ({
|
|
38
|
-
key,
|
|
39
|
-
name: runnable.name
|
|
40
|
-
}));
|
|
41
|
-
},
|
|
42
|
-
getBackendRunnable: (key) => backend[key],
|
|
43
|
-
getBackendRunnables: () => ({ ...backend }),
|
|
44
|
-
setBackendRunnable: async (key, runnable) => {
|
|
45
|
-
backend[key] = runnable;
|
|
46
|
-
// Return mock lint result - in real usage this would validate the runnable
|
|
47
|
-
return createEmptyLintResult();
|
|
48
|
-
},
|
|
49
|
-
deleteBackendRunnable: (key) => {
|
|
50
|
-
delete backend[key];
|
|
51
|
-
},
|
|
52
|
-
// Combined view
|
|
53
|
-
getFiles: () => ({
|
|
54
|
-
frontend: { ...frontend },
|
|
55
|
-
backend: { ...backend }
|
|
56
|
-
}),
|
|
57
|
-
getSelectedContext: () => ({
|
|
58
|
-
type: 'none'
|
|
59
|
-
}),
|
|
60
|
-
// Snapshot management
|
|
61
|
-
snapshot: () => {
|
|
62
|
-
const id = ++snapshotId;
|
|
63
|
-
snapshots.set(id, {
|
|
64
|
-
frontend: { ...frontend },
|
|
65
|
-
backend: { ...backend }
|
|
66
|
-
});
|
|
67
|
-
return id;
|
|
68
|
-
},
|
|
69
|
-
revertToSnapshot: (id) => {
|
|
70
|
-
const snap = snapshots.get(id);
|
|
71
|
-
if (snap) {
|
|
72
|
-
frontend = { ...snap.frontend };
|
|
73
|
-
backend = { ...snap.backend };
|
|
74
|
-
}
|
|
75
|
-
},
|
|
76
|
-
// Linting
|
|
77
|
-
lint: () => {
|
|
78
|
-
// Return mock lint result - no actual linting in eval
|
|
79
|
-
return createEmptyLintResult();
|
|
80
|
-
},
|
|
81
|
-
// Data table operations (mock implementation for testing)
|
|
82
|
-
getDatatables: async () => {
|
|
83
|
-
// Return empty array for eval testing - no real datatables in test context
|
|
84
|
-
return [];
|
|
85
|
-
},
|
|
86
|
-
getAvailableDatatableNames: () => {
|
|
87
|
-
// Return empty array for eval testing - no real datatables in test context
|
|
88
|
-
return [];
|
|
89
|
-
},
|
|
90
|
-
execDatatableSql: async (_datatableName, _sql, _newTable) => {
|
|
91
|
-
// Return success with empty result for eval testing
|
|
92
|
-
return { success: true, result: [] };
|
|
93
|
-
},
|
|
94
|
-
addTableToWhitelist: (_datatableName, _schemaName, _tableName) => {
|
|
95
|
-
// No-op for eval testing - tables are not tracked in test context
|
|
96
|
-
}
|
|
97
|
-
};
|
|
98
|
-
return {
|
|
99
|
-
helpers,
|
|
100
|
-
getFiles: () => ({
|
|
101
|
-
frontend: { ...frontend },
|
|
102
|
-
backend: { ...backend }
|
|
103
|
-
}),
|
|
104
|
-
getFrontend: () => ({ ...frontend }),
|
|
105
|
-
getBackend: () => ({ ...backend })
|
|
106
|
-
};
|
|
107
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import type { AppFiles, BackendRunnable } from '../../app/core';
|
|
2
|
-
import { type VariantConfig, type BaseEvalResult } from '../shared';
|
|
3
|
-
import type { AIProvider } from '../../../../../gen/types.gen';
|
|
4
|
-
export type { InitialApp } from './appEvalComparison';
|
|
5
|
-
/**
|
|
6
|
-
* App-specific evaluation result.
|
|
7
|
-
*/
|
|
8
|
-
export interface AppEvalResult extends BaseEvalResult<AppFiles> {
|
|
9
|
-
/** Alias for output to maintain API compatibility */
|
|
10
|
-
files: AppFiles;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Options for running an app evaluation.
|
|
14
|
-
*/
|
|
15
|
-
export interface AppEvalOptions {
|
|
16
|
-
initialFrontend?: Record<string, string>;
|
|
17
|
-
initialBackend?: Record<string, BackendRunnable>;
|
|
18
|
-
model?: string;
|
|
19
|
-
customSystemPrompt?: string;
|
|
20
|
-
maxIterations?: number;
|
|
21
|
-
variant?: VariantConfig;
|
|
22
|
-
/** Whether to evaluate the generated app with LLM. Default: true. Set to false to skip evaluation. */
|
|
23
|
-
evaluateWithLLM?: boolean;
|
|
24
|
-
/** AI provider (inferred from model name if omitted) */
|
|
25
|
-
provider?: AIProvider;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Runs an app chat evaluation using the shared chat loop (same code path as production).
|
|
29
|
-
*/
|
|
30
|
-
export declare function runAppEval(userPrompt: string, apiKey: string, options?: AppEvalOptions): Promise<AppEvalResult>;
|
|
31
|
-
/**
|
|
32
|
-
* Per-variant provider override.
|
|
33
|
-
*/
|
|
34
|
-
export interface VariantProviderOverride {
|
|
35
|
-
provider: AIProvider;
|
|
36
|
-
apiKey: string;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Runs the same prompt against multiple variants sequentially for comparison.
|
|
40
|
-
* Accepts optional per-variant provider/apiKey overrides.
|
|
41
|
-
*/
|
|
42
|
-
export declare function runVariantComparison(userPrompt: string, variants: VariantConfig[], defaultApiKey: string, baseOptions?: Omit<AppEvalOptions, 'variant'>, providerOverrides?: VariantProviderOverride[]): Promise<AppEvalResult[]>;
|
|
43
|
-
/**
|
|
44
|
-
* Writes app comparison results to a folder-based structure.
|
|
45
|
-
* Each variant gets its own folder with frontend/, backend/, and details.json.
|
|
46
|
-
*/
|
|
47
|
-
export declare function writeAppComparisonResults(userPrompt: string, results: AppEvalResult[], outputDir?: string): Promise<{
|
|
48
|
-
summaryPath: string;
|
|
49
|
-
appPaths: string[];
|
|
50
|
-
}>;
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { getAppTools, prepareAppSystemMessage, prepareAppUserMessage } from '../../app/core';
|
|
2
|
-
import { createAppEvalHelpers } from './appEvalHelpers';
|
|
3
|
-
import { evaluateAppGeneration } from './appEvalComparison';
|
|
4
|
-
import { runEval, resolveSystemPrompt, resolveTools, resolveModel } from '../shared';
|
|
5
|
-
import { writeAppComparisonResultsToFolders } from './appResultsWriter';
|
|
6
|
-
/**
|
|
7
|
-
* App-specific variant defaults.
|
|
8
|
-
*/
|
|
9
|
-
const appDefaults = {
|
|
10
|
-
prepareSystemMessage: prepareAppSystemMessage,
|
|
11
|
-
tools: getAppTools()
|
|
12
|
-
};
|
|
13
|
-
/**
|
|
14
|
-
* Runs an app chat evaluation using the shared chat loop (same code path as production).
|
|
15
|
-
*/
|
|
16
|
-
export async function runAppEval(userPrompt, apiKey, options) {
|
|
17
|
-
const { helpers, getFiles } = createAppEvalHelpers(options?.initialFrontend ?? {}, options?.initialBackend ?? {});
|
|
18
|
-
// Resolve variant configuration
|
|
19
|
-
const variantName = options?.variant?.name ?? 'baseline';
|
|
20
|
-
const systemMessage = resolveSystemPrompt(options?.variant, appDefaults, options?.customSystemPrompt);
|
|
21
|
-
const { tools } = resolveTools(options?.variant, appDefaults);
|
|
22
|
-
const model = resolveModel(options?.variant, options?.model);
|
|
23
|
-
// Build user message
|
|
24
|
-
const userMessage = prepareAppUserMessage(userPrompt, helpers.getSelectedContext());
|
|
25
|
-
// Run the base evaluation
|
|
26
|
-
const rawResult = await runEval({
|
|
27
|
-
userPrompt,
|
|
28
|
-
systemMessage,
|
|
29
|
-
userMessage,
|
|
30
|
-
tools,
|
|
31
|
-
helpers,
|
|
32
|
-
apiKey,
|
|
33
|
-
getOutput: getFiles,
|
|
34
|
-
options: {
|
|
35
|
-
maxIterations: options?.maxIterations,
|
|
36
|
-
model,
|
|
37
|
-
workspace: 'test-workspace',
|
|
38
|
-
provider: options?.provider
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
// Run LLM evaluation unless explicitly disabled
|
|
42
|
-
let evaluationResult;
|
|
43
|
-
if (options?.evaluateWithLLM !== false) {
|
|
44
|
-
const generatedApp = getFiles();
|
|
45
|
-
const initialApp = options?.initialFrontend || options?.initialBackend
|
|
46
|
-
? {
|
|
47
|
-
frontend: options.initialFrontend ?? {},
|
|
48
|
-
backend: options.initialBackend ?? {}
|
|
49
|
-
}
|
|
50
|
-
: undefined;
|
|
51
|
-
evaluationResult = await evaluateAppGeneration(userPrompt, generatedApp, initialApp);
|
|
52
|
-
}
|
|
53
|
-
return {
|
|
54
|
-
...rawResult,
|
|
55
|
-
variantName,
|
|
56
|
-
files: rawResult.output,
|
|
57
|
-
evaluationResult
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Runs the same prompt against multiple variants sequentially for comparison.
|
|
62
|
-
* Accepts optional per-variant provider/apiKey overrides.
|
|
63
|
-
*/
|
|
64
|
-
export async function runVariantComparison(userPrompt, variants, defaultApiKey, baseOptions, providerOverrides) {
|
|
65
|
-
const results = await Promise.all(variants.map(async (variant, i) => {
|
|
66
|
-
const override = providerOverrides?.[i];
|
|
67
|
-
return await runAppEval(userPrompt, override?.apiKey ?? defaultApiKey, {
|
|
68
|
-
...baseOptions,
|
|
69
|
-
variant,
|
|
70
|
-
provider: override?.provider ?? baseOptions?.provider
|
|
71
|
-
});
|
|
72
|
-
}));
|
|
73
|
-
return results;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Writes app comparison results to a folder-based structure.
|
|
77
|
-
* Each variant gets its own folder with frontend/, backend/, and details.json.
|
|
78
|
-
*/
|
|
79
|
-
export async function writeAppComparisonResults(userPrompt, results, outputDir) {
|
|
80
|
-
// @ts-ignore
|
|
81
|
-
const { dirname, join } = await import('path');
|
|
82
|
-
// @ts-ignore
|
|
83
|
-
const { fileURLToPath } = await import('url');
|
|
84
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
85
|
-
const __dirname = dirname(__filename);
|
|
86
|
-
const resultsDir = outputDir ?? join(__dirname, 'results');
|
|
87
|
-
const result = await writeAppComparisonResultsToFolders({
|
|
88
|
-
userPrompt,
|
|
89
|
-
results,
|
|
90
|
-
outputDir: resultsDir
|
|
91
|
-
});
|
|
92
|
-
return { summaryPath: result.summaryPath, appPaths: result.variantPaths };
|
|
93
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import type { AppFiles, BackendRunnable } from '../../app/core';
|
|
2
|
-
/**
|
|
3
|
-
* Loads an app fixture from a directory structure.
|
|
4
|
-
*
|
|
5
|
-
* Expected structure:
|
|
6
|
-
* ```
|
|
7
|
-
* fixturePath/
|
|
8
|
-
* ├── frontend/
|
|
9
|
-
* │ └── index.tsx # → frontend["/index.tsx"]
|
|
10
|
-
* │ └── components/
|
|
11
|
-
* │ └── Button.tsx # → frontend["/components/Button.tsx"]
|
|
12
|
-
* └── backend/
|
|
13
|
-
* └── incrementCounter/
|
|
14
|
-
* ├── main.ts # The code content
|
|
15
|
-
* └── meta.json # { "name": "...", "language": "bun" }
|
|
16
|
-
* ```
|
|
17
|
-
*
|
|
18
|
-
* @param fixturePath - Path to the fixture directory
|
|
19
|
-
* @returns AppFiles object with frontend and backend
|
|
20
|
-
*/
|
|
21
|
-
export declare function loadAppFixture(fixturePath: string): Promise<AppFiles>;
|
|
22
|
-
/**
|
|
23
|
-
* Loads an app fixture and returns the separate frontend and backend objects.
|
|
24
|
-
* Convenience function for use with runAppEval options.
|
|
25
|
-
*/
|
|
26
|
-
export declare function loadAppFixtureForEval(fixturePath: string): Promise<{
|
|
27
|
-
initialFrontend: Record<string, string>;
|
|
28
|
-
initialBackend: Record<string, BackendRunnable>;
|
|
29
|
-
}>;
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Recursively reads all files in a directory and returns them as a record.
|
|
3
|
-
* File paths are relative to the base directory with a leading '/'.
|
|
4
|
-
*/
|
|
5
|
-
async function readFilesRecursively(dir, basePath = '') {
|
|
6
|
-
// @ts-ignore - Node.js fs/promises
|
|
7
|
-
const { readdir, readFile } = await import('fs/promises');
|
|
8
|
-
// @ts-ignore - Node.js path
|
|
9
|
-
const { join } = await import('path');
|
|
10
|
-
const result = {};
|
|
11
|
-
const entries = await readdir(dir, { withFileTypes: true });
|
|
12
|
-
for (const entry of entries) {
|
|
13
|
-
const fullPath = join(dir, entry.name);
|
|
14
|
-
const relativePath = basePath ? `${basePath}/${entry.name}` : `/${entry.name}`;
|
|
15
|
-
if (entry.isDirectory()) {
|
|
16
|
-
const subFiles = await readFilesRecursively(fullPath, relativePath);
|
|
17
|
-
Object.assign(result, subFiles);
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
const content = await readFile(fullPath, 'utf-8');
|
|
21
|
-
result[relativePath] = content;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
return result;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Loads frontend files from a directory.
|
|
28
|
-
* All files are read recursively and paths become keys with leading '/'.
|
|
29
|
-
*/
|
|
30
|
-
async function loadFrontend(frontendPath) {
|
|
31
|
-
// @ts-ignore - Node.js fs/promises
|
|
32
|
-
const { access } = await import('fs/promises');
|
|
33
|
-
try {
|
|
34
|
-
await access(frontendPath);
|
|
35
|
-
}
|
|
36
|
-
catch {
|
|
37
|
-
// Directory doesn't exist, return empty
|
|
38
|
-
return {};
|
|
39
|
-
}
|
|
40
|
-
return readFilesRecursively(frontendPath);
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Loads backend runnables from a directory.
|
|
44
|
-
* Each subdirectory is a runnable with:
|
|
45
|
-
* - main.ts or main.py: The code content
|
|
46
|
-
* - meta.json: Metadata { name, language }
|
|
47
|
-
*/
|
|
48
|
-
async function loadBackend(backendPath) {
|
|
49
|
-
// @ts-ignore - Node.js fs/promises
|
|
50
|
-
const { readdir, readFile, access } = await import('fs/promises');
|
|
51
|
-
// @ts-ignore - Node.js path
|
|
52
|
-
const { join } = await import('path');
|
|
53
|
-
try {
|
|
54
|
-
await access(backendPath);
|
|
55
|
-
}
|
|
56
|
-
catch {
|
|
57
|
-
// Directory doesn't exist, return empty
|
|
58
|
-
return {};
|
|
59
|
-
}
|
|
60
|
-
const result = {};
|
|
61
|
-
const entries = await readdir(backendPath, { withFileTypes: true });
|
|
62
|
-
for (const entry of entries) {
|
|
63
|
-
if (!entry.isDirectory())
|
|
64
|
-
continue;
|
|
65
|
-
const runnableKey = entry.name;
|
|
66
|
-
const runnablePath = join(backendPath, entry.name);
|
|
67
|
-
// Read meta.json
|
|
68
|
-
const metaPath = join(runnablePath, 'meta.json');
|
|
69
|
-
let meta;
|
|
70
|
-
try {
|
|
71
|
-
const metaContent = await readFile(metaPath, 'utf-8');
|
|
72
|
-
meta = JSON.parse(metaContent);
|
|
73
|
-
}
|
|
74
|
-
catch {
|
|
75
|
-
console.warn(`Missing or invalid meta.json for runnable '${runnableKey}', skipping`);
|
|
76
|
-
continue;
|
|
77
|
-
}
|
|
78
|
-
// Find and read the main file (main.ts or main.py)
|
|
79
|
-
const runnableFiles = await readdir(runnablePath);
|
|
80
|
-
const mainFile = runnableFiles.find((f) => f === 'main.ts' || f === 'main.py');
|
|
81
|
-
if (!mainFile) {
|
|
82
|
-
console.warn(`No main.ts or main.py found for runnable '${runnableKey}', skipping`);
|
|
83
|
-
continue;
|
|
84
|
-
}
|
|
85
|
-
const content = await readFile(join(runnablePath, mainFile), 'utf-8');
|
|
86
|
-
const inlineScript = {
|
|
87
|
-
language: meta.language,
|
|
88
|
-
content
|
|
89
|
-
};
|
|
90
|
-
result[runnableKey] = {
|
|
91
|
-
name: meta.name,
|
|
92
|
-
type: 'inline',
|
|
93
|
-
inlineScript
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
return result;
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Loads an app fixture from a directory structure.
|
|
100
|
-
*
|
|
101
|
-
* Expected structure:
|
|
102
|
-
* ```
|
|
103
|
-
* fixturePath/
|
|
104
|
-
* ├── frontend/
|
|
105
|
-
* │ └── index.tsx # → frontend["/index.tsx"]
|
|
106
|
-
* │ └── components/
|
|
107
|
-
* │ └── Button.tsx # → frontend["/components/Button.tsx"]
|
|
108
|
-
* └── backend/
|
|
109
|
-
* └── incrementCounter/
|
|
110
|
-
* ├── main.ts # The code content
|
|
111
|
-
* └── meta.json # { "name": "...", "language": "bun" }
|
|
112
|
-
* ```
|
|
113
|
-
*
|
|
114
|
-
* @param fixturePath - Path to the fixture directory
|
|
115
|
-
* @returns AppFiles object with frontend and backend
|
|
116
|
-
*/
|
|
117
|
-
export async function loadAppFixture(fixturePath) {
|
|
118
|
-
// @ts-ignore - Node.js path
|
|
119
|
-
const { join } = await import('path');
|
|
120
|
-
const frontend = await loadFrontend(join(fixturePath, 'frontend'));
|
|
121
|
-
const backend = await loadBackend(join(fixturePath, 'backend'));
|
|
122
|
-
return { frontend, backend };
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Loads an app fixture and returns the separate frontend and backend objects.
|
|
126
|
-
* Convenience function for use with runAppEval options.
|
|
127
|
-
*/
|
|
128
|
-
export async function loadAppFixtureForEval(fixturePath) {
|
|
129
|
-
const { frontend, backend } = await loadAppFixture(fixturePath);
|
|
130
|
-
return {
|
|
131
|
-
initialFrontend: frontend,
|
|
132
|
-
initialBackend: backend
|
|
133
|
-
};
|
|
134
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import type { AppEvalResult } from './appEvalRunner';
|
|
2
|
-
/**
|
|
3
|
-
* Parameters for writing app comparison results.
|
|
4
|
-
*/
|
|
5
|
-
export interface WriteAppResultsParams {
|
|
6
|
-
userPrompt: string;
|
|
7
|
-
results: AppEvalResult[];
|
|
8
|
-
outputDir: string;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Writes app comparison results to a folder-based structure.
|
|
12
|
-
*
|
|
13
|
-
* Creates:
|
|
14
|
-
* ```
|
|
15
|
-
* results/{timestamp}/
|
|
16
|
-
* ├── summary.md
|
|
17
|
-
* └── {variant_name}/
|
|
18
|
-
* ├── details.json # Metadata (toolsCalled, evaluationResult, etc.)
|
|
19
|
-
* ├── frontend/ # Frontend files
|
|
20
|
-
* │ └── index.tsx
|
|
21
|
-
* └── backend/ # Backend runnables
|
|
22
|
-
* └── myFunction/
|
|
23
|
-
* ├── main.ts
|
|
24
|
-
* └── meta.json
|
|
25
|
-
* ```
|
|
26
|
-
*/
|
|
27
|
-
export declare function writeAppComparisonResultsToFolders(params: WriteAppResultsParams): Promise<{
|
|
28
|
-
summaryPath: string;
|
|
29
|
-
variantPaths: string[];
|
|
30
|
-
}>;
|