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.
Files changed (354) hide show
  1. package/package/components/AppConnectInner.svelte +6 -0
  2. package/package/components/CiTestResults.svelte +64 -0
  3. package/package/components/CiTestResults.svelte.d.ts +7 -0
  4. package/package/components/CompareWorkspaces.svelte +626 -418
  5. package/package/components/DBManager.svelte +35 -4
  6. package/package/components/DBManager.svelte.d.ts +2 -0
  7. package/package/components/DBManagerContent.svelte +3 -1
  8. package/package/components/DBManagerContent.svelte.d.ts +3 -0
  9. package/package/components/DBManagerDrawer.svelte +145 -3
  10. package/package/components/DBTableEditor.svelte +14 -4
  11. package/package/components/DatatablePicker.svelte +2 -5
  12. package/package/components/DatatableSchemaDiff.svelte +531 -0
  13. package/package/components/DatatableSchemaDiff.svelte.d.ts +29 -0
  14. package/package/components/DedicatedWorkersSelector.svelte +4 -2
  15. package/package/components/DefaultTagsInner.svelte +42 -2
  16. package/package/components/DeployWorkspaceDrawer.svelte +1 -1
  17. package/package/components/Dev.svelte +20 -3
  18. package/package/components/Editor.svelte +1 -1
  19. package/package/components/EditorBar.svelte +1 -1
  20. package/package/components/EditorBar.svelte.d.ts +1 -1
  21. package/package/components/FlowStatusViewerInner.svelte +269 -220
  22. package/package/components/FlowTimeline.svelte +1 -1
  23. package/package/components/FolderEditor.svelte +189 -4
  24. package/package/components/ForkWorkspaceBanner.svelte +82 -11
  25. package/package/components/GlobalUserOffboardingModal.svelte +293 -0
  26. package/package/components/GlobalUserOffboardingModal.svelte.d.ts +10 -0
  27. package/package/components/InstanceSettings.svelte +22 -3
  28. package/package/components/Login.svelte +22 -10
  29. package/package/components/ModuleTest.svelte +2 -1
  30. package/package/components/NoMainFuncBadge.svelte +1 -1
  31. package/package/components/OffboardItemsBox.svelte +56 -0
  32. package/package/components/OffboardItemsBox.svelte.d.ts +12 -0
  33. package/package/components/OffboardReassignControls.svelte +47 -0
  34. package/package/components/OffboardReassignControls.svelte.d.ts +20 -0
  35. package/package/components/OffboardWorkspaceSection.svelte +110 -0
  36. package/package/components/OffboardWorkspaceSection.svelte.d.ts +24 -0
  37. package/package/components/OnBehalfOfSelector.svelte +21 -3
  38. package/package/components/OnBehalfOfSelector.svelte.d.ts +7 -0
  39. package/package/components/QueueAlerts.svelte +10 -10
  40. package/package/components/ResourcePicker.svelte +2 -2
  41. package/package/components/ScriptBuilder.svelte +52 -11
  42. package/package/components/ScriptEditor.svelte +1 -3
  43. package/package/components/ScriptEditor.svelte.d.ts +1 -1
  44. package/package/components/ShareModal.svelte +236 -98
  45. package/package/components/SuperadminSettingsInner.svelte +362 -315
  46. package/package/components/UserOffboardingModal.svelte +238 -0
  47. package/package/components/UserOffboardingModal.svelte.d.ts +10 -0
  48. package/package/components/WorkspaceDeployLayout.svelte +3 -3
  49. package/package/components/WorkspaceDeployLayout.svelte.d.ts +1 -0
  50. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +4 -2
  51. package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +12 -0
  52. package/package/components/assets/AssetsDropdownButton.svelte +1 -1
  53. package/package/components/common/confirmationModal/ConfirmationModal.svelte +1 -1
  54. package/package/components/common/table/AppRow.svelte +3 -3
  55. package/package/components/common/table/FlowRow.svelte +3 -3
  56. package/package/components/common/table/RawAppRow.svelte +4 -4
  57. package/package/components/common/table/Row.svelte +6 -2
  58. package/package/components/common/table/ScriptRow.svelte +11 -3
  59. package/package/components/copilot/chat/AIChatManager.svelte.js +2 -2
  60. package/package/components/copilot/chat/anthropic.d.ts +7 -1
  61. package/package/components/copilot/chat/anthropic.js +5 -2
  62. package/package/components/copilot/chat/app/core.js +129 -1
  63. package/package/components/copilot/chat/app/core.test.js +192 -0
  64. package/package/components/copilot/chat/chatLoop.d.ts +3 -0
  65. package/package/components/copilot/chat/chatLoop.js +13 -5
  66. package/package/components/copilot/chat/flow/FlowAIChat.svelte +55 -76
  67. package/package/components/copilot/chat/flow/core.d.ts +13 -3
  68. package/package/components/copilot/chat/flow/core.js +467 -116
  69. package/package/components/copilot/chat/flow/helperUtils.d.ts +19 -0
  70. package/package/components/copilot/chat/flow/helperUtils.js +68 -0
  71. package/package/components/copilot/chat/flow/helperUtils.test.js +116 -0
  72. package/package/components/copilot/chat/flow/inlineScriptsUtils.d.ts +5 -24
  73. package/package/components/copilot/chat/flow/inlineScriptsUtils.js +30 -55
  74. package/package/components/copilot/chat/flow/utils.test.js +59 -0
  75. package/package/components/copilot/chat/openai-responses.d.ts +7 -1
  76. package/package/components/copilot/chat/openai-responses.js +5 -2
  77. package/package/components/copilot/chat/shared.d.ts +1 -2
  78. package/package/components/copilot/chat/shared.js +94 -52
  79. package/package/components/copilot/chat/tokenUsage.d.ts +23 -0
  80. package/package/components/copilot/chat/tokenUsage.js +42 -0
  81. package/package/components/copilot/lib.d.ts +5 -1
  82. package/package/components/copilot/lib.js +21 -5
  83. package/package/components/deploymentRequest/DeploymentRequestPanel.svelte +337 -0
  84. package/package/components/deploymentRequest/DeploymentRequestPanel.svelte.d.ts +15 -0
  85. package/package/components/details/CopyableCodeBlock.svelte +18 -8
  86. package/package/components/details/CopyableCodeBlock.svelte.d.ts +1 -0
  87. package/package/components/flows/FlowAssetsHandler.svelte +19 -21
  88. package/package/components/flows/agentToolTree.d.ts +17 -0
  89. package/package/components/flows/agentToolTree.js +114 -0
  90. package/package/components/flows/agentToolTree.test.d.ts +1 -0
  91. package/package/components/flows/agentToolTree.test.js +86 -0
  92. package/package/components/flows/agentToolUtils.d.ts +0 -5
  93. package/package/components/flows/agentToolUtils.js +0 -49
  94. package/package/components/flows/content/FlowLoop.svelte +7 -4
  95. package/package/components/flows/content/FlowModuleDeleteAfterUse.svelte +15 -7
  96. package/package/components/flows/content/FlowSettings.svelte +29 -0
  97. package/package/components/flows/dfs.d.ts +6 -2
  98. package/package/components/flows/dfs.js +19 -11
  99. package/package/components/flows/flowDeleteController.d.ts +32 -0
  100. package/package/components/flows/flowDeleteController.js +54 -0
  101. package/package/components/flows/flowDeleteController.test.d.ts +1 -0
  102. package/package/components/flows/flowDeleteController.test.js +121 -0
  103. package/package/components/flows/flowDeleteUtils.d.ts +48 -0
  104. package/package/components/flows/flowDeleteUtils.js +150 -0
  105. package/package/components/flows/flowDeleteUtils.test.d.ts +1 -0
  106. package/package/components/flows/flowDeleteUtils.test.js +131 -0
  107. package/package/components/flows/flowDiff.d.ts +2 -47
  108. package/package/components/flows/flowDiff.js +16 -293
  109. package/package/components/flows/flowDiff.testUtils.d.ts +8 -0
  110. package/package/components/flows/flowDiff.testUtils.js +26 -0
  111. package/package/components/flows/flowDiffManager.svelte.js +20 -75
  112. package/package/components/flows/flowDiffManager.svelte.test.js +103 -2
  113. package/package/components/flows/flowExplorer.d.ts +4 -0
  114. package/package/components/flows/flowExplorer.js +7 -30
  115. package/package/components/flows/flowState.d.ts +1 -0
  116. package/package/components/flows/flowStateUtils.svelte.js +6 -1
  117. package/package/components/flows/flowTree.d.ts +91 -0
  118. package/package/components/flows/flowTree.js +326 -0
  119. package/package/components/flows/flowTree.test.d.ts +1 -0
  120. package/package/components/flows/flowTree.test.js +236 -0
  121. package/package/components/flows/map/FlowJobsMenu.svelte +36 -30
  122. package/package/components/flows/map/FlowModuleSchemaItem.svelte +1 -1
  123. package/package/components/flows/map/FlowModuleSchemaMap.svelte +70 -227
  124. package/package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +0 -2
  125. package/package/components/flows/pickers/PickHubScriptQuick.svelte +2 -2
  126. package/package/components/flows/previousResults.js +13 -41
  127. package/package/components/flows/previousResults.test.d.ts +1 -0
  128. package/package/components/flows/previousResults.test.js +65 -0
  129. package/package/components/flows/propPicker/OutputPicker.svelte +2 -1
  130. package/package/components/flows/propPicker/OutputPickerInner.svelte +41 -4
  131. package/package/components/flows/propPicker/StepHistory.svelte +9 -1
  132. package/package/components/git_sync/GitSyncContext.svelte.js +11 -5
  133. package/package/components/git_sync/GitSyncRepositoryCard.svelte +2 -29
  134. package/package/components/git_sync/PullWorkspaceModal.svelte +6 -7
  135. package/package/components/graph/FlowGraphV2.svelte +2 -2
  136. package/package/components/graph/FlowGraphV2.svelte.d.ts +1 -0
  137. package/package/components/graph/groupedModulesProxy.svelte.d.ts +10 -0
  138. package/package/components/graph/groupedModulesProxy.svelte.js +17 -1
  139. package/package/components/graph/renderers/triggers/TriggersBadge.svelte +5 -2
  140. package/package/components/home/HomeConnectDrawer.svelte +125 -0
  141. package/package/components/home/HomeConnectDrawer.svelte.d.ts +5 -0
  142. package/package/components/icons/GithubIcon.svelte +4 -4
  143. package/package/components/icons/GithubIcon.svelte.d.ts +5 -2
  144. package/package/components/instanceSettings/ExternalJwtTokens.svelte +85 -0
  145. package/package/components/instanceSettings/ExternalJwtTokens.svelte.d.ts +12 -0
  146. package/package/components/instanceSettings/GhesAppSettings.svelte +17 -0
  147. package/package/components/instanceSettings/IndexerMemorySettings.svelte +56 -29
  148. package/package/components/instanceSettings/SecretBackendConfig.svelte +9 -2
  149. package/package/components/instanceSettings.d.ts +1 -0
  150. package/package/components/instanceSettings.js +42 -8
  151. package/package/components/offboarding-utils.d.ts +11 -0
  152. package/package/components/offboarding-utils.js +100 -0
  153. package/package/components/raw_apps/RawAppDataTableDrawer.svelte +1 -1
  154. package/package/components/raw_apps/RawAppEditor.svelte +27 -0
  155. package/package/components/raw_apps/RawAppEditorHeader.svelte +6 -1
  156. package/package/components/raw_apps/RawAppEditorHeader.svelte.d.ts +1 -0
  157. package/package/components/raw_apps/RawAppYamlEditor.svelte +81 -0
  158. package/package/components/raw_apps/RawAppYamlEditor.svelte.d.ts +20 -0
  159. package/package/components/raw_apps/datatableUtils.svelte.js +1 -1
  160. package/package/components/runs/runsFilter.d.ts +1 -1
  161. package/package/components/script_builder.d.ts +1 -1
  162. package/package/components/select/Select.svelte +2 -1
  163. package/package/components/select/Select.svelte.d.ts +1 -0
  164. package/package/components/settings/CreateToken.svelte +113 -64
  165. package/package/components/settings/CreateToken.svelte.d.ts +3 -0
  166. package/package/components/settings/WorkspaceUserSettings.svelte +34 -28
  167. package/package/components/sidebar/SidebarContent.svelte +58 -2
  168. package/package/components/sidebar/WorkspaceMenu.svelte +8 -4
  169. package/package/components/triggers/AddTriggersButton.svelte +11 -0
  170. package/package/components/triggers/PermissionedAsLine.svelte +37 -3
  171. package/package/components/triggers/PermissionedAsLine.svelte.d.ts +6 -0
  172. package/package/components/triggers/TriggersEditor.svelte +5 -1
  173. package/package/components/triggers/TriggersWrapper.svelte +10 -0
  174. package/package/components/triggers/email/EmailTriggerEditorInner.svelte +13 -11
  175. package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +13 -11
  176. package/package/components/triggers/http/RouteEditorConfigSection.svelte +15 -7
  177. package/package/components/triggers/http/RouteEditorInner.svelte +14 -14
  178. package/package/components/triggers/http/RoutesGenerator.svelte +6 -1
  179. package/package/components/triggers/http/RoutesPanel.svelte +1 -1
  180. package/package/components/triggers/http/utils.d.ts +1 -1
  181. package/package/components/triggers/http/utils.js +2 -2
  182. package/package/components/triggers/kafka/KafkaTriggerEditorInner.svelte +13 -11
  183. package/package/components/triggers/mqtt/MqttTriggerEditorInner.svelte +13 -11
  184. package/package/components/triggers/native/NativeTriggerEditor.svelte +3 -0
  185. package/package/components/triggers/native/services/github/GitHubTriggerForm.svelte +118 -0
  186. package/package/components/triggers/native/services/github/GitHubTriggerForm.svelte.d.ts +17 -0
  187. package/package/components/triggers/native/utils.js +14 -0
  188. package/package/components/triggers/nats/NatsTriggerEditor.svelte.d.ts +4 -3
  189. package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +13 -11
  190. package/package/components/triggers/postgres/PostgresTriggerEditor.svelte.d.ts +4 -3
  191. package/package/components/triggers/postgres/PostgresTriggerEditorInner.svelte +13 -11
  192. package/package/components/triggers/schedules/ScheduleEditorInner.svelte +13 -11
  193. package/package/components/triggers/sqs/SqsTriggerEditor.svelte.d.ts +4 -3
  194. package/package/components/triggers/sqs/SqsTriggerEditorInner.svelte +13 -11
  195. package/package/components/triggers/triggers.svelte.js +1 -0
  196. package/package/components/triggers/utils.js +27 -6
  197. package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +13 -11
  198. package/package/components/triggers.d.ts +1 -1
  199. package/package/components/useFolderDefaultPermissionedAs.svelte.d.ts +13 -0
  200. package/package/components/useFolderDefaultPermissionedAs.svelte.js +63 -0
  201. package/package/components/workspaceSettings/CreateWorkspace.svelte +16 -677
  202. package/package/components/workspaceSettings/CreateWorkspaceInner.svelte +604 -0
  203. package/package/components/workspaceSettings/CreateWorkspaceInner.svelte.d.ts +7 -0
  204. package/package/components/workspaceSettings/CustomInstanceDbSelect.svelte +27 -25
  205. package/package/components/workspaceSettings/CustomInstanceDbWizardModal.svelte +46 -8
  206. package/package/components/workspaceSettings/DataTableSettings.svelte +27 -22
  207. package/package/components/workspaceSettings/DucklakeSettings.svelte +1 -1
  208. package/package/components/workspaceSettings/ForkDatatableSection.svelte +228 -0
  209. package/package/components/workspaceSettings/ForkDatatableSection.svelte.d.ts +28 -0
  210. package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +8 -2
  211. package/package/components/workspaceSettings/RulesetEditor.svelte +27 -2
  212. package/package/components/workspaceSettings/VolumeStorageSettings.svelte +1 -1
  213. package/package/components/workspaceSettings/WorkspaceIntegrations.svelte +17 -1
  214. package/package/consts.d.ts +3 -0
  215. package/package/consts.js +10 -0
  216. package/package/gen/core/OpenAPI.js +1 -1
  217. package/package/gen/schemas.gen.d.ts +485 -19
  218. package/package/gen/schemas.gen.js +489 -20
  219. package/package/gen/services.gen.d.ts +229 -2
  220. package/package/gen/services.gen.js +463 -1
  221. package/package/gen/types.gen.d.ts +866 -29
  222. package/package/githubApp.js +5 -1
  223. package/package/hubPaths.json +1 -4
  224. package/package/infer.js +13 -1
  225. package/package/infer.svelte.js +10 -1
  226. package/package/monaco_workers/sqlTypePlugin.worker.d.ts +10 -0
  227. package/package/monaco_workers/sqlTypePlugin.worker.js +39 -0
  228. package/package/script_helpers.d.ts +8 -2
  229. package/package/script_helpers.js +14 -0
  230. package/package/stores.d.ts +4 -0
  231. package/package/stores.js +1 -0
  232. package/package/system_prompts/prompts.d.ts +4 -3
  233. package/package/system_prompts/prompts.js +270 -20
  234. package/package/templates/ci_test_bun.ts.template +19 -0
  235. package/package/templates/ci_test_python.py.template +18 -0
  236. package/package/utils_workspace_deploy.d.ts +8 -8
  237. package/package/utils_workspace_deploy.js +86 -420
  238. package/package.json +3 -3
  239. package/package/components/copilot/chat/__tests__/app/appChat.eval.test.js +0 -153
  240. package/package/components/copilot/chat/__tests__/app/appEvalComparison.d.ts +0 -21
  241. package/package/components/copilot/chat/__tests__/app/appEvalComparison.js +0 -136
  242. package/package/components/copilot/chat/__tests__/app/appEvalHelpers.d.ts +0 -15
  243. package/package/components/copilot/chat/__tests__/app/appEvalHelpers.js +0 -107
  244. package/package/components/copilot/chat/__tests__/app/appEvalRunner.d.ts +0 -50
  245. package/package/components/copilot/chat/__tests__/app/appEvalRunner.js +0 -93
  246. package/package/components/copilot/chat/__tests__/app/appFixtureLoader.d.ts +0 -29
  247. package/package/components/copilot/chat/__tests__/app/appFixtureLoader.js +0 -134
  248. package/package/components/copilot/chat/__tests__/app/appResultsWriter.d.ts +0 -30
  249. package/package/components/copilot/chat/__tests__/app/appResultsWriter.js +0 -197
  250. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/createFolder/main.d.ts +0 -10
  251. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/createFolder/main.js +0 -9
  252. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/createFolder/meta.json +0 -4
  253. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/deleteItem/main.d.ts +0 -6
  254. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/deleteItem/main.js +0 -5
  255. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/deleteItem/meta.json +0 -4
  256. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/main.d.ts +0 -12
  257. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/main.js +0 -14
  258. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFiles/meta.json +0 -4
  259. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFolders/main.d.ts +0 -8
  260. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFolders/main.js +0 -25
  261. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/listFolders/meta.json +0 -4
  262. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/moveItem/main.d.ts +0 -7
  263. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/moveItem/main.js +0 -5
  264. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/moveItem/meta.json +0 -4
  265. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/renameItem/main.d.ts +0 -8
  266. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/renameItem/main.js +0 -5
  267. package/package/components/copilot/chat/__tests__/app/initial/file_manager/backend/renameItem/meta.json +0 -4
  268. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Breadcrumb.d.ts +0 -10
  269. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Breadcrumb.tsx +0 -26
  270. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileItem.d.ts +0 -10
  271. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileItem.tsx +0 -79
  272. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileList.d.ts +0 -10
  273. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FileList.tsx +0 -46
  274. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FolderTree.d.ts +0 -10
  275. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/FolderTree.tsx +0 -56
  276. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Toolbar.d.ts +0 -6
  277. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/components/Toolbar.tsx +0 -59
  278. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/index.d.ts +0 -16
  279. package/package/components/copilot/chat/__tests__/app/initial/file_manager/frontend/index.tsx +0 -119
  280. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/addToCart/main.d.ts +0 -15
  281. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/addToCart/main.js +0 -14
  282. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/addToCart/meta.json +0 -4
  283. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/calculateTotal/main.d.ts +0 -14
  284. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/calculateTotal/main.js +0 -5
  285. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/calculateTotal/meta.json +0 -4
  286. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/getProducts/main.d.ts +0 -6
  287. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/getProducts/main.js +0 -41
  288. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/getProducts/meta.json +0 -4
  289. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/removeFromCart/main.d.ts +0 -15
  290. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/removeFromCart/main.js +0 -3
  291. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/backend/removeFromCart/meta.json +0 -4
  292. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/Cart.d.ts +0 -9
  293. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/Cart.tsx +0 -51
  294. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductCard.d.ts +0 -8
  295. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductCard.tsx +0 -27
  296. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductList.d.ts +0 -8
  297. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/components/ProductList.tsx +0 -18
  298. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/index.d.ts +0 -12
  299. package/package/components/copilot/chat/__tests__/app/initial/shopping_cart/frontend/index.tsx +0 -81
  300. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/decrementCounter/main.d.ts +0 -3
  301. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/decrementCounter/main.js +0 -3
  302. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/decrementCounter/meta.json +0 -4
  303. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/incrementCounter/main.d.ts +0 -3
  304. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/incrementCounter/main.js +0 -3
  305. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/backend/incrementCounter/meta.json +0 -4
  306. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/frontend/index.d.ts +0 -2
  307. package/package/components/copilot/chat/__tests__/app/initial/test1_counter_app/frontend/index.tsx +0 -38
  308. package/package/components/copilot/chat/__tests__/app/variants/baseline.d.ts +0 -6
  309. package/package/components/copilot/chat/__tests__/app/variants/baseline.js +0 -10
  310. package/package/components/copilot/chat/__tests__/app/variants/index.d.ts +0 -3
  311. package/package/components/copilot/chat/__tests__/app/variants/index.js +0 -3
  312. package/package/components/copilot/chat/__tests__/app/variants/streamlined.d.ts +0 -6
  313. package/package/components/copilot/chat/__tests__/app/variants/streamlined.js +0 -137
  314. package/package/components/copilot/chat/__tests__/flow/expected/test1.json +0 -134
  315. package/package/components/copilot/chat/__tests__/flow/expected/test2.json +0 -183
  316. package/package/components/copilot/chat/__tests__/flow/expected/test3.json +0 -204
  317. package/package/components/copilot/chat/__tests__/flow/expected/test4.json +0 -175
  318. package/package/components/copilot/chat/__tests__/flow/expected/test5_modify_simple.json +0 -68
  319. package/package/components/copilot/chat/__tests__/flow/expected/test6_modify_medium.json +0 -142
  320. package/package/components/copilot/chat/__tests__/flow/expected/test7_modify_complex.json +0 -136
  321. package/package/components/copilot/chat/__tests__/flow/flowChat.eval.test.js +0 -294
  322. package/package/components/copilot/chat/__tests__/flow/flowEvalComparison.d.ts +0 -17
  323. package/package/components/copilot/chat/__tests__/flow/flowEvalComparison.js +0 -49
  324. package/package/components/copilot/chat/__tests__/flow/flowEvalHelpers.d.ts +0 -12
  325. package/package/components/copilot/chat/__tests__/flow/flowEvalHelpers.js +0 -79
  326. package/package/components/copilot/chat/__tests__/flow/flowEvalRunner.d.ts +0 -50
  327. package/package/components/copilot/chat/__tests__/flow/flowEvalRunner.js +0 -102
  328. package/package/components/copilot/chat/__tests__/flow/initial/test5_initial.json +0 -53
  329. package/package/components/copilot/chat/__tests__/flow/initial/test6_initial.json +0 -68
  330. package/package/components/copilot/chat/__tests__/flow/initial/test7_initial.json +0 -120
  331. package/package/components/copilot/chat/__tests__/flow/variants/baseline.d.ts +0 -6
  332. package/package/components/copilot/chat/__tests__/flow/variants/baseline.js +0 -10
  333. package/package/components/copilot/chat/__tests__/flow/variants/index.d.ts +0 -3
  334. package/package/components/copilot/chat/__tests__/flow/variants/index.js +0 -3
  335. package/package/components/copilot/chat/__tests__/flow/variants/minimal-single-tool.d.ts +0 -15
  336. package/package/components/copilot/chat/__tests__/flow/variants/minimal-single-tool.js +0 -388
  337. package/package/components/copilot/chat/__tests__/shared/baseEvalRunner.d.ts +0 -45
  338. package/package/components/copilot/chat/__tests__/shared/baseEvalRunner.js +0 -121
  339. package/package/components/copilot/chat/__tests__/shared/baseLLMEvaluator.d.ts +0 -28
  340. package/package/components/copilot/chat/__tests__/shared/baseLLMEvaluator.js +0 -96
  341. package/package/components/copilot/chat/__tests__/shared/baseResultsWriter.d.ts +0 -32
  342. package/package/components/copilot/chat/__tests__/shared/baseResultsWriter.js +0 -130
  343. package/package/components/copilot/chat/__tests__/shared/baseVariants.d.ts +0 -45
  344. package/package/components/copilot/chat/__tests__/shared/baseVariants.js +0 -57
  345. package/package/components/copilot/chat/__tests__/shared/index.d.ts +0 -10
  346. package/package/components/copilot/chat/__tests__/shared/index.js +0 -5
  347. package/package/components/copilot/chat/__tests__/shared/types.d.ts +0 -105
  348. package/package/components/copilot/chat/__tests__/shared/types.js +0 -9
  349. package/package/components/copilot/chat/flow/utils.d.ts +0 -14
  350. package/package/components/copilot/chat/flow/utils.js +0 -108
  351. package/package/components/flows/agentToolUtils.test.js +0 -55
  352. /package/package/components/copilot/chat/{__tests__/app/appChat.eval.test.d.ts → app/core.test.d.ts} +0 -0
  353. /package/package/components/copilot/chat/{__tests__/flow/flowChat.eval.test.d.ts → flow/helperUtils.test.d.ts} +0 -0
  354. /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,10 +0,0 @@
1
- interface Folder {
2
- id: string;
3
- name: string;
4
- parentId: string | null;
5
- }
6
- export declare function main({ name, parentId }: {
7
- name: string;
8
- parentId: string | null;
9
- }): Promise<Folder>;
10
- export {};
@@ -1,9 +0,0 @@
1
- export async function main({ name, parentId }) {
2
- // In a real implementation, this would create a folder in storage
3
- const newFolder = {
4
- id: `folder_${Date.now()}`,
5
- name,
6
- parentId
7
- };
8
- return newFolder;
9
- }
@@ -1,4 +0,0 @@
1
- {
2
- "name": "Create Folder",
3
- "language": "bun"
4
- }
@@ -1,6 +0,0 @@
1
- export declare function main({ id, type }: {
2
- id: string;
3
- type: 'file' | 'folder';
4
- }): Promise<{
5
- success: boolean;
6
- }>;
@@ -1,5 +0,0 @@
1
- export async function main({ id, type }) {
2
- // In a real implementation, this would delete from storage
3
- console.log(`Deleting ${type} with id: ${id}`);
4
- return { success: true };
5
- }
@@ -1,4 +0,0 @@
1
- {
2
- "name": "Delete Item",
3
- "language": "bun"
4
- }
@@ -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 {};
@@ -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,4 +0,0 @@
1
- {
2
- "name": "List Files",
3
- "language": "bun"
4
- }
@@ -1,8 +0,0 @@
1
- interface Folder {
2
- id: string;
3
- name: string;
4
- parentId: string | null;
5
- children: Folder[];
6
- }
7
- export declare function main(): Promise<Folder[]>;
8
- export {};
@@ -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,4 +0,0 @@
1
- {
2
- "name": "List Folders",
3
- "language": "bun"
4
- }
@@ -1,7 +0,0 @@
1
- export declare function main({ id, type, targetFolderId }: {
2
- id: string;
3
- type: 'file' | 'folder';
4
- targetFolderId: string | null;
5
- }): Promise<{
6
- success: boolean;
7
- }>;
@@ -1,5 +0,0 @@
1
- export async function main({ id, type, targetFolderId }) {
2
- // In a real implementation, this would move the item in storage
3
- console.log(`Moving ${type} ${id} to folder: ${targetFolderId ?? 'root'}`);
4
- return { success: true };
5
- }
@@ -1,4 +0,0 @@
1
- {
2
- "name": "Move Item",
3
- "language": "bun"
4
- }
@@ -1,8 +0,0 @@
1
- export declare function main({ id, type, newName }: {
2
- id: string;
3
- type: 'file' | 'folder';
4
- newName: string;
5
- }): Promise<{
6
- success: boolean;
7
- name: string;
8
- }>;
@@ -1,5 +0,0 @@
1
- export async function main({ id, type, newName }) {
2
- // In a real implementation, this would rename in storage
3
- console.log(`Renaming ${type} ${id} to: ${newName}`);
4
- return { success: true, name: newName };
5
- }
@@ -1,4 +0,0 @@
1
- {
2
- "name": "Rename Item",
3
- "language": "bun"
4
- }
@@ -1,10 +0,0 @@
1
- import React from 'react';
2
- interface BreadcrumbProps {
3
- path: {
4
- id: string | null;
5
- name: string;
6
- }[];
7
- onNavigate: (folderId: string | null, folderName: string) => void;
8
- }
9
- export declare const Breadcrumb: React.FC<BreadcrumbProps>;
10
- export {};
@@ -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
- }