windmill-components 1.677.1 → 1.687.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/CiTestResults.svelte +64 -0
- package/package/components/CiTestResults.svelte.d.ts +7 -0
- package/package/components/CompareWorkspaces.svelte +626 -418
- 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 +20 -3
- 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/FlowStatusViewerInner.svelte +269 -220
- package/package/components/FlowTimeline.svelte +1 -1
- package/package/components/FolderEditor.svelte +189 -4
- package/package/components/ForkWorkspaceBanner.svelte +82 -11
- package/package/components/GlobalUserOffboardingModal.svelte +293 -0
- package/package/components/GlobalUserOffboardingModal.svelte.d.ts +10 -0
- package/package/components/InstanceSettings.svelte +22 -3
- package/package/components/Login.svelte +22 -10
- 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/QueueAlerts.svelte +10 -10
- package/package/components/ResourcePicker.svelte +2 -2
- package/package/components/ScriptBuilder.svelte +52 -11
- package/package/components/ScriptEditor.svelte +1 -3
- package/package/components/ScriptEditor.svelte.d.ts +1 -1
- package/package/components/ShareModal.svelte +236 -98
- 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/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +4 -2
- package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +12 -0
- package/package/components/assets/AssetsDropdownButton.svelte +1 -1
- package/package/components/common/confirmationModal/ConfirmationModal.svelte +1 -1
- 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/AIChatManager.svelte.js +2 -2
- 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.js +129 -1
- package/package/components/copilot/chat/app/core.test.js +192 -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/flow/FlowAIChat.svelte +55 -76
- package/package/components/copilot/chat/flow/core.d.ts +13 -3
- package/package/components/copilot/chat/flow/core.js +467 -116
- package/package/components/copilot/chat/flow/helperUtils.d.ts +19 -0
- package/package/components/copilot/chat/flow/helperUtils.js +68 -0
- package/package/components/copilot/chat/flow/helperUtils.test.js +116 -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/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/shared.d.ts +1 -2
- package/package/components/copilot/chat/shared.js +94 -52
- package/package/components/copilot/chat/tokenUsage.d.ts +23 -0
- package/package/components/copilot/chat/tokenUsage.js +42 -0
- package/package/components/copilot/lib.d.ts +5 -1
- package/package/components/copilot/lib.js +21 -5
- 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/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/FlowModuleDeleteAfterUse.svelte +15 -7
- package/package/components/flows/content/FlowSettings.svelte +29 -0
- 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 +6 -1
- 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 +70 -227
- package/package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +0 -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 -5
- package/package/components/git_sync/GitSyncRepositoryCard.svelte +2 -29
- package/package/components/git_sync/PullWorkspaceModal.svelte +6 -7
- package/package/components/graph/FlowGraphV2.svelte +2 -2
- package/package/components/graph/FlowGraphV2.svelte.d.ts +1 -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 +5 -2
- package/package/components/home/HomeConnectDrawer.svelte +125 -0
- package/package/components/home/HomeConnectDrawer.svelte.d.ts +5 -0
- 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 +42 -8
- package/package/components/offboarding-utils.d.ts +11 -0
- package/package/components/offboarding-utils.js +100 -0
- package/package/components/raw_apps/RawAppDataTableDrawer.svelte +1 -1
- package/package/components/raw_apps/RawAppEditor.svelte +27 -0
- 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/RawAppYamlEditor.svelte +81 -0
- package/package/components/raw_apps/RawAppYamlEditor.svelte.d.ts +20 -0
- package/package/components/raw_apps/datatableUtils.svelte.js +1 -1
- package/package/components/runs/runsFilter.d.ts +1 -1
- package/package/components/script_builder.d.ts +1 -1
- package/package/components/select/Select.svelte +2 -1
- package/package/components/select/Select.svelte.d.ts +1 -0
- package/package/components/settings/CreateToken.svelte +113 -64
- package/package/components/settings/CreateToken.svelte.d.ts +3 -0
- package/package/components/settings/WorkspaceUserSettings.svelte +34 -28
- package/package/components/sidebar/SidebarContent.svelte +58 -2
- package/package/components/sidebar/WorkspaceMenu.svelte +8 -4
- package/package/components/triggers/AddTriggersButton.svelte +11 -0
- package/package/components/triggers/PermissionedAsLine.svelte +37 -3
- package/package/components/triggers/PermissionedAsLine.svelte.d.ts +6 -0
- package/package/components/triggers/TriggersEditor.svelte +5 -1
- package/package/components/triggers/TriggersWrapper.svelte +10 -0
- package/package/components/triggers/email/EmailTriggerEditorInner.svelte +13 -11
- package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +13 -11
- package/package/components/triggers/http/RouteEditorConfigSection.svelte +15 -7
- package/package/components/triggers/http/RouteEditorInner.svelte +14 -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 +13 -11
- package/package/components/triggers/mqtt/MqttTriggerEditorInner.svelte +13 -11
- 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 +13 -11
- package/package/components/triggers/postgres/PostgresTriggerEditor.svelte.d.ts +4 -3
- package/package/components/triggers/postgres/PostgresTriggerEditorInner.svelte +13 -11
- package/package/components/triggers/schedules/ScheduleEditorInner.svelte +13 -11
- package/package/components/triggers/sqs/SqsTriggerEditor.svelte.d.ts +4 -3
- package/package/components/triggers/sqs/SqsTriggerEditorInner.svelte +13 -11
- package/package/components/triggers/triggers.svelte.js +1 -0
- package/package/components/triggers/utils.js +27 -6
- package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +13 -11
- 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/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/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 +485 -19
- package/package/gen/schemas.gen.js +489 -20
- package/package/gen/services.gen.d.ts +229 -2
- package/package/gen/services.gen.js +463 -1
- package/package/gen/types.gen.d.ts +866 -29
- package/package/githubApp.js +5 -1
- package/package/hubPaths.json +1 -4
- package/package/infer.js +13 -1
- package/package/infer.svelte.js +10 -1
- 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 +14 -0
- package/package/stores.d.ts +4 -0
- package/package/stores.js +1 -0
- package/package/system_prompts/prompts.d.ts +4 -3
- package/package/system_prompts/prompts.js +270 -20
- package/package/templates/ci_test_bun.ts.template +19 -0
- package/package/templates/ci_test_python.py.template +18 -0
- package/package/utils_workspace_deploy.d.ts +8 -8
- package/package/utils_workspace_deploy.js +86 -420
- package/package.json +3 -3
- 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/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/{flows/agentToolUtils.test.d.ts → copilot/chat/flow/utils.test.d.ts} +0 -0
|
@@ -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
|
-
}>;
|
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
import { generateTimestamp } from '../shared';
|
|
2
|
-
/**
|
|
3
|
-
* Writes frontend files to a folder, preserving directory structure.
|
|
4
|
-
* File paths like "/components/Button.tsx" become "frontend/components/Button.tsx"
|
|
5
|
-
*/
|
|
6
|
-
async function writeFrontendFiles(frontend, frontendPath) {
|
|
7
|
-
// @ts-ignore - Node.js fs/promises
|
|
8
|
-
const { writeFile, mkdir } = await import('fs/promises');
|
|
9
|
-
// @ts-ignore - Node.js path
|
|
10
|
-
const { join, dirname } = await import('path');
|
|
11
|
-
for (const [filePath, content] of Object.entries(frontend)) {
|
|
12
|
-
// Remove leading slash and join with frontend path
|
|
13
|
-
const relativePath = filePath.startsWith('/') ? filePath.slice(1) : filePath;
|
|
14
|
-
const fullPath = join(frontendPath, relativePath);
|
|
15
|
-
// Ensure parent directory exists
|
|
16
|
-
await mkdir(dirname(fullPath), { recursive: true });
|
|
17
|
-
await writeFile(fullPath, content);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Writes backend runnables to a folder structure.
|
|
22
|
-
* Each runnable becomes a folder with main.ts/main.py and meta.json
|
|
23
|
-
*/
|
|
24
|
-
async function writeBackendRunnables(backend, backendPath) {
|
|
25
|
-
// @ts-ignore - Node.js fs/promises
|
|
26
|
-
const { writeFile, mkdir } = await import('fs/promises');
|
|
27
|
-
// @ts-ignore - Node.js path
|
|
28
|
-
const { join } = await import('path');
|
|
29
|
-
for (const [key, runnable] of Object.entries(backend)) {
|
|
30
|
-
const runnablePath = join(backendPath, key);
|
|
31
|
-
await mkdir(runnablePath, { recursive: true });
|
|
32
|
-
// Write meta.json
|
|
33
|
-
const meta = {
|
|
34
|
-
name: runnable.name
|
|
35
|
-
};
|
|
36
|
-
if (runnable.type === 'inline' && runnable.inlineScript) {
|
|
37
|
-
meta.language = runnable.inlineScript.language;
|
|
38
|
-
// Write main file
|
|
39
|
-
const extension = runnable.inlineScript.language === 'python3' ? 'py' : 'ts';
|
|
40
|
-
const mainPath = join(runnablePath, `main.${extension}`);
|
|
41
|
-
await writeFile(mainPath, runnable.inlineScript.content);
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
// For non-inline runnables, store type and path in meta
|
|
45
|
-
meta.type = runnable.type;
|
|
46
|
-
if (runnable.path) {
|
|
47
|
-
meta.path = runnable.path;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
const metaPath = join(runnablePath, 'meta.json');
|
|
51
|
-
await writeFile(metaPath, JSON.stringify(meta, null, '\t'));
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Writes app files (frontend + backend) to a folder structure.
|
|
56
|
-
*/
|
|
57
|
-
async function writeAppToFolder(appFiles, folderPath) {
|
|
58
|
-
// @ts-ignore - Node.js path
|
|
59
|
-
const { join } = await import('path');
|
|
60
|
-
if (Object.keys(appFiles.frontend).length > 0) {
|
|
61
|
-
await writeFrontendFiles(appFiles.frontend, join(folderPath, 'frontend'));
|
|
62
|
-
}
|
|
63
|
-
if (Object.keys(appFiles.backend).length > 0) {
|
|
64
|
-
await writeBackendRunnables(appFiles.backend, join(folderPath, 'backend'));
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Writes app comparison results to a folder-based structure.
|
|
69
|
-
*
|
|
70
|
-
* Creates:
|
|
71
|
-
* ```
|
|
72
|
-
* results/{timestamp}/
|
|
73
|
-
* ├── summary.md
|
|
74
|
-
* └── {variant_name}/
|
|
75
|
-
* ├── details.json # Metadata (toolsCalled, evaluationResult, etc.)
|
|
76
|
-
* ├── frontend/ # Frontend files
|
|
77
|
-
* │ └── index.tsx
|
|
78
|
-
* └── backend/ # Backend runnables
|
|
79
|
-
* └── myFunction/
|
|
80
|
-
* ├── main.ts
|
|
81
|
-
* └── meta.json
|
|
82
|
-
* ```
|
|
83
|
-
*/
|
|
84
|
-
export async function writeAppComparisonResultsToFolders(params) {
|
|
85
|
-
// @ts-ignore - Node.js fs/promises
|
|
86
|
-
const { writeFile, mkdir } = await import('fs/promises');
|
|
87
|
-
// @ts-ignore - Node.js path
|
|
88
|
-
const { join } = await import('path');
|
|
89
|
-
const { userPrompt, results, outputDir } = params;
|
|
90
|
-
const timestamp = generateTimestamp();
|
|
91
|
-
// Ensure results directory exists
|
|
92
|
-
await mkdir(outputDir, { recursive: true });
|
|
93
|
-
const resultFolder = join(outputDir, timestamp);
|
|
94
|
-
await mkdir(resultFolder, { recursive: true });
|
|
95
|
-
// Check if any results have evaluation data
|
|
96
|
-
const hasEvaluation = results.some((r) => r.evaluationResult);
|
|
97
|
-
// Build summary markdown
|
|
98
|
-
const summaryLines = [
|
|
99
|
-
`# App Eval Results - ${timestamp}`,
|
|
100
|
-
'',
|
|
101
|
-
'## User Prompt',
|
|
102
|
-
'```',
|
|
103
|
-
userPrompt.trim(),
|
|
104
|
-
'```',
|
|
105
|
-
'',
|
|
106
|
-
'## Results',
|
|
107
|
-
''
|
|
108
|
-
];
|
|
109
|
-
// Add results table header based on whether evaluation data exists
|
|
110
|
-
if (hasEvaluation) {
|
|
111
|
-
summaryLines.push('| Variant | Success | Total Tokens | Tool Calls | Iterations | Resemblance Score |');
|
|
112
|
-
summaryLines.push('|---------|---------|--------------|------------|------------|-------------------|');
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
summaryLines.push('| Variant | Success | Total Tokens | Tool Calls | Iterations |');
|
|
116
|
-
summaryLines.push('|---------|---------|--------------|------------|------------|');
|
|
117
|
-
}
|
|
118
|
-
for (const result of results) {
|
|
119
|
-
const baseRow = `| ${result.variantName} | ${result.success} | ${result.tokenUsage.total} | ${result.toolsCalled.length} | ${result.iterations}`;
|
|
120
|
-
if (hasEvaluation) {
|
|
121
|
-
const score = result.evaluationResult?.resemblanceScore ?? 'N/A';
|
|
122
|
-
summaryLines.push(`${baseRow} | ${score} |`);
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
summaryLines.push(`${baseRow} |`);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
// Add evaluation details section if available
|
|
129
|
-
if (hasEvaluation) {
|
|
130
|
-
summaryLines.push('');
|
|
131
|
-
summaryLines.push('## Evaluation Details');
|
|
132
|
-
summaryLines.push('');
|
|
133
|
-
for (const result of results) {
|
|
134
|
-
if (result.evaluationResult) {
|
|
135
|
-
summaryLines.push(`### ${result.variantName}`);
|
|
136
|
-
summaryLines.push('');
|
|
137
|
-
summaryLines.push(`**Score:** ${result.evaluationResult.resemblanceScore}/100`);
|
|
138
|
-
summaryLines.push('');
|
|
139
|
-
summaryLines.push(`**Statement:** ${result.evaluationResult.statement}`);
|
|
140
|
-
summaryLines.push('');
|
|
141
|
-
if (result.evaluationResult.missingRequirements &&
|
|
142
|
-
result.evaluationResult.missingRequirements.length > 0) {
|
|
143
|
-
summaryLines.push('**Missing Requirements:**');
|
|
144
|
-
for (const req of result.evaluationResult.missingRequirements) {
|
|
145
|
-
summaryLines.push(`- ${req}`);
|
|
146
|
-
}
|
|
147
|
-
summaryLines.push('');
|
|
148
|
-
}
|
|
149
|
-
if (result.evaluationResult.error) {
|
|
150
|
-
summaryLines.push(`**Error:** ${result.evaluationResult.error}`);
|
|
151
|
-
summaryLines.push('');
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
// Add errors section for failed variants
|
|
157
|
-
const failedResults = results.filter((r) => !r.success && r.error);
|
|
158
|
-
if (failedResults.length > 0) {
|
|
159
|
-
summaryLines.push('');
|
|
160
|
-
summaryLines.push('## Errors');
|
|
161
|
-
summaryLines.push('');
|
|
162
|
-
for (const result of failedResults) {
|
|
163
|
-
summaryLines.push(`### ${result.variantName}`);
|
|
164
|
-
summaryLines.push('');
|
|
165
|
-
summaryLines.push('```');
|
|
166
|
-
summaryLines.push(result.error);
|
|
167
|
-
summaryLines.push('```');
|
|
168
|
-
summaryLines.push('');
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
const variantPaths = [];
|
|
172
|
-
// Write each variant to its own folder
|
|
173
|
-
for (const result of results) {
|
|
174
|
-
const variantFolder = join(resultFolder, result.variantName);
|
|
175
|
-
await mkdir(variantFolder, { recursive: true });
|
|
176
|
-
variantPaths.push(variantFolder);
|
|
177
|
-
// Write details.json (metadata without app files)
|
|
178
|
-
const details = {
|
|
179
|
-
variantName: result.variantName,
|
|
180
|
-
success: result.success,
|
|
181
|
-
error: result.error ?? null,
|
|
182
|
-
evaluationResult: result.evaluationResult ?? null,
|
|
183
|
-
toolsCalled: result.toolsCalled,
|
|
184
|
-
toolCallDetails: result.toolCallDetails,
|
|
185
|
-
tokenUsage: result.tokenUsage,
|
|
186
|
-
iterations: result.iterations,
|
|
187
|
-
messages: result.messages
|
|
188
|
-
};
|
|
189
|
-
await writeFile(join(variantFolder, 'details.json'), JSON.stringify(details, null, '\t'));
|
|
190
|
-
// Write app files to frontend/ and backend/ folders
|
|
191
|
-
await writeAppToFolder(result.files, variantFolder);
|
|
192
|
-
}
|
|
193
|
-
// Write summary markdown file
|
|
194
|
-
const summaryPath = join(resultFolder, 'summary.md');
|
|
195
|
-
await writeFile(summaryPath, summaryLines.join('\n'));
|
|
196
|
-
return { summaryPath, variantPaths };
|
|
197
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
interface FileItem {
|
|
2
|
-
id: string;
|
|
3
|
-
name: string;
|
|
4
|
-
type: 'file' | 'folder';
|
|
5
|
-
size?: number;
|
|
6
|
-
modifiedAt: string;
|
|
7
|
-
parentId: string | null;
|
|
8
|
-
}
|
|
9
|
-
export declare function main({ folderId }: {
|
|
10
|
-
folderId: string | null;
|
|
11
|
-
}): Promise<FileItem[]>;
|
|
12
|
-
export {};
|
package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/main.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
// Mock file system data
|
|
2
|
-
const mockFiles = [
|
|
3
|
-
{ id: 'f1', name: 'Documents', type: 'folder', modifiedAt: '2024-01-15', parentId: null },
|
|
4
|
-
{ id: 'f2', name: 'Images', type: 'folder', modifiedAt: '2024-01-10', parentId: null },
|
|
5
|
-
{ id: 'f3', name: 'readme.txt', type: 'file', size: 1024, modifiedAt: '2024-01-20', parentId: null },
|
|
6
|
-
{ id: 'f4', name: 'report.pdf', type: 'file', size: 52400, modifiedAt: '2024-01-18', parentId: 'f1' },
|
|
7
|
-
{ id: 'f5', name: 'notes.txt', type: 'file', size: 256, modifiedAt: '2024-01-12', parentId: 'f1' },
|
|
8
|
-
{ id: 'f6', name: 'photo1.jpg', type: 'file', size: 2048000, modifiedAt: '2024-01-08', parentId: 'f2' },
|
|
9
|
-
{ id: 'f7', name: 'photo2.jpg', type: 'file', size: 1536000, modifiedAt: '2024-01-09', parentId: 'f2' },
|
|
10
|
-
{ id: 'f8', name: 'Projects', type: 'folder', modifiedAt: '2024-01-05', parentId: 'f1' }
|
|
11
|
-
];
|
|
12
|
-
export async function main({ folderId }) {
|
|
13
|
-
return mockFiles.filter((file) => file.parentId === folderId);
|
|
14
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
// Mock folder structure
|
|
2
|
-
const mockFolders = [
|
|
3
|
-
{
|
|
4
|
-
id: 'f1',
|
|
5
|
-
name: 'Documents',
|
|
6
|
-
parentId: null,
|
|
7
|
-
children: [
|
|
8
|
-
{
|
|
9
|
-
id: 'f8',
|
|
10
|
-
name: 'Projects',
|
|
11
|
-
parentId: 'f1',
|
|
12
|
-
children: []
|
|
13
|
-
}
|
|
14
|
-
]
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
id: 'f2',
|
|
18
|
-
name: 'Images',
|
|
19
|
-
parentId: null,
|
|
20
|
-
children: []
|
|
21
|
-
}
|
|
22
|
-
];
|
|
23
|
-
export async function main() {
|
|
24
|
-
return mockFolders;
|
|
25
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
|
|
3
|
-
interface BreadcrumbProps {
|
|
4
|
-
path: { id: string | null; name: string }[]
|
|
5
|
-
onNavigate: (folderId: string | null, folderName: string) => void
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export const Breadcrumb: React.FC<BreadcrumbProps> = ({ path, onNavigate }) => {
|
|
9
|
-
return (
|
|
10
|
-
<div className="px-4 py-2 bg-white border-b flex items-center gap-2 text-sm">
|
|
11
|
-
{path.map((item, index) => (
|
|
12
|
-
<React.Fragment key={item.id ?? 'root'}>
|
|
13
|
-
{index > 0 && <span className="text-gray-400">/</span>}
|
|
14
|
-
<button
|
|
15
|
-
onClick={() => onNavigate(item.id, item.name)}
|
|
16
|
-
className={`hover:text-blue-600 ${
|
|
17
|
-
index === path.length - 1 ? 'font-medium text-gray-900' : 'text-gray-600'
|
|
18
|
-
}`}
|
|
19
|
-
>
|
|
20
|
-
{item.name}
|
|
21
|
-
</button>
|
|
22
|
-
</React.Fragment>
|
|
23
|
-
))}
|
|
24
|
-
</div>
|
|
25
|
-
)
|
|
26
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import type { FileItem as FileItemType } from '../index';
|
|
3
|
-
interface FileItemProps {
|
|
4
|
-
item: FileItemType;
|
|
5
|
-
onDelete: (item: FileItemType) => void;
|
|
6
|
-
onRename: (item: FileItemType, newName: string) => void;
|
|
7
|
-
onFolderOpen: (folder: FileItemType) => void;
|
|
8
|
-
}
|
|
9
|
-
export declare const FileItem: React.FC<FileItemProps>;
|
|
10
|
-
export {};
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import React, { useState } from 'react'
|
|
2
|
-
import type { FileItem as FileItemType } from '../index'
|
|
3
|
-
|
|
4
|
-
interface FileItemProps {
|
|
5
|
-
item: FileItemType
|
|
6
|
-
onDelete: (item: FileItemType) => void
|
|
7
|
-
onRename: (item: FileItemType, newName: string) => void
|
|
8
|
-
onFolderOpen: (folder: FileItemType) => void
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export const FileItem: React.FC<FileItemProps> = ({ item, onDelete, onRename, onFolderOpen }) => {
|
|
12
|
-
const [isRenaming, setIsRenaming] = useState(false)
|
|
13
|
-
const [newName, setNewName] = useState(item.name)
|
|
14
|
-
|
|
15
|
-
const handleRename = () => {
|
|
16
|
-
if (newName.trim() && newName !== item.name) {
|
|
17
|
-
onRename(item, newName.trim())
|
|
18
|
-
}
|
|
19
|
-
setIsRenaming(false)
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const handleDoubleClick = () => {
|
|
23
|
-
if (item.type === 'folder') {
|
|
24
|
-
onFolderOpen(item)
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
const icon = item.type === 'folder' ? '📁' : '📄'
|
|
29
|
-
const formattedDate = new Date(item.modifiedAt).toLocaleDateString()
|
|
30
|
-
|
|
31
|
-
return (
|
|
32
|
-
<div
|
|
33
|
-
className="grid grid-cols-12 gap-4 px-4 py-2 border-b hover:bg-gray-50 items-center"
|
|
34
|
-
onDoubleClick={handleDoubleClick}
|
|
35
|
-
>
|
|
36
|
-
<div className="col-span-6 flex items-center gap-2">
|
|
37
|
-
<span>{icon}</span>
|
|
38
|
-
{isRenaming ? (
|
|
39
|
-
<input
|
|
40
|
-
type="text"
|
|
41
|
-
value={newName}
|
|
42
|
-
onChange={(e) => setNewName(e.target.value)}
|
|
43
|
-
onBlur={handleRename}
|
|
44
|
-
onKeyDown={(e) => e.key === 'Enter' && handleRename()}
|
|
45
|
-
className="border rounded px-2 py-1 flex-1"
|
|
46
|
-
autoFocus
|
|
47
|
-
/>
|
|
48
|
-
) : (
|
|
49
|
-
<span
|
|
50
|
-
className={item.type === 'folder' ? 'cursor-pointer hover:text-blue-600' : ''}
|
|
51
|
-
>
|
|
52
|
-
{item.name}
|
|
53
|
-
</span>
|
|
54
|
-
)}
|
|
55
|
-
</div>
|
|
56
|
-
|
|
57
|
-
<div className="col-span-2 text-gray-500 text-sm">
|
|
58
|
-
{item.type === 'folder' ? 'Folder' : 'File'}
|
|
59
|
-
</div>
|
|
60
|
-
|
|
61
|
-
<div className="col-span-2 text-gray-500 text-sm">{formattedDate}</div>
|
|
62
|
-
|
|
63
|
-
<div className="col-span-2 flex gap-2">
|
|
64
|
-
<button
|
|
65
|
-
onClick={() => setIsRenaming(true)}
|
|
66
|
-
className="text-blue-500 hover:text-blue-700 text-sm"
|
|
67
|
-
>
|
|
68
|
-
Rename
|
|
69
|
-
</button>
|
|
70
|
-
<button
|
|
71
|
-
onClick={() => onDelete(item)}
|
|
72
|
-
className="text-red-500 hover:text-red-700 text-sm"
|
|
73
|
-
>
|
|
74
|
-
Delete
|
|
75
|
-
</button>
|
|
76
|
-
</div>
|
|
77
|
-
</div>
|
|
78
|
-
)
|
|
79
|
-
}
|