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,81 +0,0 @@
1
- import React, { useState, useEffect } from 'react'
2
- import { backend } from 'wmill'
3
- import { ProductList } from './components/ProductList'
4
- import { Cart } from './components/Cart'
5
-
6
- export interface Product {
7
- id: string
8
- name: string
9
- price: number
10
- image: string
11
- }
12
-
13
- export interface CartItem {
14
- product: Product
15
- quantity: number
16
- }
17
-
18
- const App = () => {
19
- const [products, setProducts] = useState<Product[]>([])
20
- const [cartItems, setCartItems] = useState<CartItem[]>([])
21
- const [total, setTotal] = useState(0)
22
- const [loading, setLoading] = useState(true)
23
-
24
- useEffect(() => {
25
- loadProducts()
26
- }, [])
27
-
28
- useEffect(() => {
29
- updateTotal()
30
- }, [cartItems])
31
-
32
- const loadProducts = async () => {
33
- setLoading(true)
34
- const data = await backend.getProducts()
35
- setProducts(data)
36
- setLoading(false)
37
- }
38
-
39
- const updateTotal = async () => {
40
- if (cartItems.length === 0) {
41
- setTotal(0)
42
- return
43
- }
44
- const newTotal = await backend.calculateTotal({ items: cartItems })
45
- setTotal(newTotal)
46
- }
47
-
48
- const handleAddToCart = async (product: Product) => {
49
- const updatedCart = await backend.addToCart({
50
- cart: cartItems,
51
- product
52
- })
53
- setCartItems(updatedCart)
54
- }
55
-
56
- const handleRemoveFromCart = async (productId: string) => {
57
- const updatedCart = await backend.removeFromCart({
58
- cart: cartItems,
59
- productId
60
- })
61
- setCartItems(updatedCart)
62
- }
63
-
64
- if (loading) {
65
- return <div className="p-8 text-center">Loading products...</div>
66
- }
67
-
68
- return (
69
- <div className="flex h-screen">
70
- <div className="flex-1 p-6 overflow-auto">
71
- <h1 className="text-2xl font-bold mb-6">Shop</h1>
72
- <ProductList products={products} onAddToCart={handleAddToCart} />
73
- </div>
74
- <div className="w-80 border-l bg-gray-50 p-6">
75
- <Cart items={cartItems} total={total} onRemoveItem={handleRemoveFromCart} />
76
- </div>
77
- </div>
78
- )
79
- }
80
-
81
- export default App
@@ -1,3 +0,0 @@
1
- export declare function main({ currentCount }: {
2
- currentCount: number;
3
- }): Promise<number>;
@@ -1,3 +0,0 @@
1
- export async function main({ currentCount }) {
2
- return currentCount - 1;
3
- }
@@ -1,4 +0,0 @@
1
- {
2
- "name": "Decrement Counter",
3
- "language": "bun"
4
- }
@@ -1,3 +0,0 @@
1
- export declare function main({ currentCount }: {
2
- currentCount: number;
3
- }): Promise<number>;
@@ -1,3 +0,0 @@
1
- export async function main({ currentCount }) {
2
- return currentCount + 1;
3
- }
@@ -1,4 +0,0 @@
1
- {
2
- "name": "Increment Counter",
3
- "language": "bun"
4
- }
@@ -1,2 +0,0 @@
1
- declare const CounterApp: () => any;
2
- export default CounterApp;
@@ -1,38 +0,0 @@
1
- import React, { useState } from 'react'
2
- import { backend } from 'wmill'
3
-
4
- const CounterApp = () => {
5
- const [count, setCount] = useState(0)
6
-
7
- const increment = async () => {
8
- const newCount = await backend.incrementCounter({ currentCount: count })
9
- setCount(newCount)
10
- }
11
-
12
- const decrement = async () => {
13
- const newCount = await backend.decrementCounter({ currentCount: count })
14
- setCount(newCount)
15
- }
16
-
17
- return (
18
- <div className="p-4">
19
- <h1 className="text-2xl font-bold mb-4">Counter: {count}</h1>
20
- <div className="flex gap-2">
21
- <button
22
- onClick={decrement}
23
- className="px-4 py-2 bg-red-500 text-white rounded hover:bg-red-600"
24
- >
25
- Decrement
26
- </button>
27
- <button
28
- onClick={increment}
29
- className="px-4 py-2 bg-green-500 text-white rounded hover:bg-green-600"
30
- >
31
- Increment
32
- </button>
33
- </div>
34
- </div>
35
- )
36
- }
37
-
38
- export default CounterApp
@@ -1,6 +0,0 @@
1
- import type { VariantConfig } from '../../shared';
2
- /**
3
- * Baseline variant - uses the production system prompt and all tools.
4
- * This is the default configuration that matches the actual app chat implementation.
5
- */
6
- export declare const BASELINE_VARIANT: VariantConfig;
@@ -1,10 +0,0 @@
1
- /**
2
- * Baseline variant - uses the production system prompt and all tools.
3
- * This is the default configuration that matches the actual app chat implementation.
4
- */
5
- export const BASELINE_VARIANT = {
6
- name: 'baseline',
7
- description: 'Production configuration with default system prompt and all tools',
8
- systemPrompt: { type: 'default' },
9
- tools: { type: 'default' }
10
- };
@@ -1,3 +0,0 @@
1
- export { BASELINE_VARIANT } from './baseline';
2
- export { STREAMLINED_VARIANT } from './streamlined';
3
- export type { VariantConfig } from '../../shared';
@@ -1,3 +0,0 @@
1
- // Re-export all variant configurations
2
- export { BASELINE_VARIANT } from './baseline';
3
- export { STREAMLINED_VARIANT } from './streamlined';
@@ -1,6 +0,0 @@
1
- import type { VariantConfig } from '../../shared';
2
- /**
3
- * Streamlined variant - removes batch-fetch tools and uses simplified instructions.
4
- * Forces the model to read individual files before making changes.
5
- */
6
- export declare const STREAMLINED_VARIANT: VariantConfig;
@@ -1,137 +0,0 @@
1
- import { getAppTools } from '../../../app/core';
2
- // Tool names to remove (batch-fetch tools)
3
- const TOOLS_TO_REMOVE = ['get_files', 'get_frontend_files', 'get_backend_runnables'];
4
- /**
5
- * Build the streamlined tools by filtering out batch-fetch tools.
6
- */
7
- function buildStreamlinedTools() {
8
- const defaultTools = getAppTools();
9
- return defaultTools.filter((t) => !TOOLS_TO_REMOVE.includes(t.def.function.name));
10
- }
11
- /**
12
- * Streamlined system prompt - simplified instructions focused on:
13
- * 1. Reading relevant files first
14
- * 2. Making changes with appropriate tools
15
- * 3. Using lint at the end to fix errors
16
- */
17
- const STREAMLINED_SYSTEM_PROMPT = `You are a helpful assistant that creates and edits apps on the Windmill platform. Apps are defined as a collection of files that contains both the frontend and the backend.
18
-
19
- ## App Structure
20
-
21
- ### Frontend
22
- - The frontend is bundled using esbuild with entrypoint \`index.tsx\`
23
- - Frontend files are managed separately from backend runnables
24
- - The \`wmill.d.ts\` file is generated automatically from the backend runnables shape
25
-
26
- ### Backend
27
- Backend runnables can be of different types:
28
- - **inline**: Custom code written directly in the app (TypeScript/Bun or Python)
29
- - **script**: Reference to a workspace script by path
30
- - **flow**: Reference to a workspace flow by path
31
- - **hubscript**: Reference to a hub script by path
32
-
33
- Frontend calls backend using \`await backend.<runnable_key>(args...)\`.
34
-
35
- For inline scripts, the code must have a \`main\` function as its entrypoint.
36
-
37
- ## Available Tools
38
-
39
- ### File Management
40
- - \`list_frontend_files()\`: List all frontend file paths (use this first to see what exists)
41
- - \`get_frontend_file(path)\`: Get content of a specific frontend file
42
- - \`set_frontend_file(path, content)\`: Create or update a frontend file. Returns lint diagnostics.
43
- - \`delete_frontend_file(path)\`: Delete a frontend file
44
- - \`list_backend_runnables()\`: List all backend runnable keys and names (use this first to see what exists)
45
- - \`get_backend_runnable(key)\`: Get full configuration of a specific backend runnable
46
- - \`set_backend_runnable(key, name, type, ...)\`: Create or update a backend runnable. Returns lint diagnostics.
47
- - \`delete_backend_runnable(key)\`: Delete a backend runnable
48
-
49
- ### Linting
50
- - \`lint()\`: Lint all files. Returns errors/warnings grouped by frontend/backend.
51
-
52
- ### Discovery
53
- - \`search_workspace(query, type)\`: Search workspace scripts and flows
54
- - \`search_hub_scripts(query)\`: Search hub scripts
55
-
56
- ## Backend Runnable Configuration
57
-
58
- When creating a backend runnable with \`set_backend_runnable\`:
59
-
60
- 1. **For inline scripts** (type: "inline"):
61
- \`\`\`
62
- {
63
- key: "myFunction",
64
- name: "Does something useful",
65
- type: "inline",
66
- inlineScript: {
67
- language: "bun", // or "python3"
68
- content: "export async function main(arg1: string) { return result; }"
69
- }
70
- }
71
- \`\`\`
72
-
73
- 2. **For workspace scripts** (type: "script"):
74
- \`\`\`
75
- {
76
- key: "sendEmail",
77
- name: "Send email via SMTP",
78
- type: "script",
79
- path: "f/folder/send_email",
80
- staticInputs: { smtp_server: "mail.example.com" } // optional pre-filled inputs
81
- }
82
- \`\`\`
83
-
84
- 3. **For workspace flows** (type: "flow"):
85
- \`\`\`
86
- {
87
- key: "processOrder",
88
- name: "Process customer order",
89
- type: "flow",
90
- path: "f/folder/process_order_flow"
91
- }
92
- \`\`\`
93
-
94
- 4. **For hub scripts** (type: "hubscript"):
95
- \`\`\`
96
- {
97
- key: "slackMessage",
98
- name: "Send Slack message",
99
- type: "hubscript",
100
- path: "hub/123/slack/send_message"
101
- }
102
- \`\`\`
103
-
104
- ## Instructions
105
-
106
- 1. Start by reading relevant files to understand the current state
107
- 2. Make changes using the appropriate tools
108
- 3. Use \`lint()\` at the end to check for and fix any errors
109
-
110
- Windmill expects all backend runnable calls to use an object parameter structure. For example for:
111
- \`\`\`typescript
112
- export async function main(arg1: string, arg2: string, arg3: number, arg4: { field1: string, field2: number }) {
113
- ...
114
- }
115
- \`\`\`
116
-
117
- You would call it like this:
118
- \`\`\`typescript
119
- await backend.myFunction({ arg1: 'value1', arg2: 'value2', arg3: 3, arg4: { field1: 'value1', field2: 2 } })
120
- \`\`\`
121
- If the runnable has no parameters, you can call it without an object:
122
- \`\`\`typescript
123
- await backend.myFunction()
124
- \`\`\`
125
-
126
- When you are using the windmill-client, do not forget that as id for variables or resources, those are path that are of the form 'u/<user>/<name>' or 'f/<folder>/<name>'.
127
- `;
128
- /**
129
- * Streamlined variant - removes batch-fetch tools and uses simplified instructions.
130
- * Forces the model to read individual files before making changes.
131
- */
132
- export const STREAMLINED_VARIANT = {
133
- name: 'streamlined',
134
- description: 'No batch tools - forces reading individual files before making changes',
135
- systemPrompt: { type: 'custom', content: STREAMLINED_SYSTEM_PROMPT },
136
- tools: { type: 'custom', tools: buildStreamlinedTools() }
137
- };
@@ -1,134 +0,0 @@
1
- {
2
- "summary": "",
3
- "value": {
4
- "modules": [
5
- {
6
- "id": "fetch_users",
7
- "value": {
8
- "type": "rawscript",
9
- "language": "bun",
10
- "content": "export async function main() {\n return [\n { id: 1, name: \"Alice\", role: \"admin\", active: true },\n { id: 2, name: \"Bob\", role: \"user\", active: false },\n { id: 4, name: \"Dana\", role: \"moderator\", active: true },\n { id: 3, name: \"Charlie\", role: \"user\", active: true },\n ];\n}",
11
- "input_transforms": {}
12
- }
13
- },
14
- {
15
- "id": "filter_active_users",
16
- "value": {
17
- "type": "rawscript",
18
- "language": "bun",
19
- "content": "export async function main(users) {\n return users.filter(user => user.active);\n}",
20
- "input_transforms": {
21
- "users": {
22
- "type": "javascript",
23
- "expr": "results.fetch_users"
24
- }
25
- }
26
- }
27
- },
28
- {
29
- "id": "loop_users",
30
- "value": {
31
- "type": "forloopflow",
32
- "iterator": {
33
- "type": "javascript",
34
- "expr": "results.filter_active_users"
35
- },
36
- "skip_failures": false,
37
- "modules": [
38
- {
39
- "id": "branch_user_role",
40
- "value": {
41
- "type": "branchone",
42
- "branches": [
43
- {
44
- "summary": "Admin Action",
45
- "expr": "flow_input.iter.value.role === 'admin'",
46
- "modules": [
47
- {
48
- "id": "admin_action",
49
- "value": {
50
- "type": "rawscript",
51
- "language": "bun",
52
- "content": "export async function main(user) {\n return `Admin action taken for ${user.name}`;\n}",
53
- "input_transforms": {
54
- "user": {
55
- "type": "javascript",
56
- "expr": "flow_input.iter.value"
57
- }
58
- }
59
- }
60
- }
61
- ]
62
- },
63
- {
64
- "summary": "User Action",
65
- "expr": "flow_input.iter.value.role === 'user'",
66
- "modules": [
67
- {
68
- "id": "user_action",
69
- "value": {
70
- "type": "rawscript",
71
- "language": "bun",
72
- "content": "export async function main(user) {\n return `User action taken for ${user.name}`;\n}",
73
- "input_transforms": {
74
- "user": {
75
- "type": "javascript",
76
- "expr": "flow_input.iter.value"
77
- }
78
- }
79
- }
80
- }
81
- ]
82
- },
83
- {
84
- "summary": "Moderator Action",
85
- "expr": "flow_input.iter.value.role === 'moderator'",
86
- "modules": [
87
- {
88
- "id": "moderator_action",
89
- "value": {
90
- "type": "rawscript",
91
- "language": "bun",
92
- "content": "export async function main(user) { return `Moderator action taken for ${user.name}`; }",
93
- "input_transforms": {
94
- "user": {
95
- "type": "javascript",
96
- "expr": "flow_input.iter.value"
97
- }
98
- }
99
- }
100
- }
101
- ]
102
- }
103
- ],
104
- "default": []
105
- }
106
- }
107
- ],
108
- "parallel": false,
109
- "squash": false
110
- }
111
- },
112
- {
113
- "id": "return_actions",
114
- "value": {
115
- "type": "rawscript",
116
- "language": "bun",
117
- "content": "export async function main(actions) {\n return actions;\n}",
118
- "input_transforms": {
119
- "actions": {
120
- "type": "javascript",
121
- "expr": "results.loop_users"
122
- }
123
- }
124
- }
125
- }
126
- ]
127
- },
128
- "schema": {
129
- "$schema": "https://json-schema.org/draft/2020-12/schema",
130
- "properties": {},
131
- "required": [],
132
- "type": "object"
133
- }
134
- }
@@ -1,183 +0,0 @@
1
- {
2
- "summary": "E-commerce Order Processing Pipeline",
3
- "value": {
4
- "modules": [
5
- {
6
- "id": "validate_order",
7
- "value": {
8
- "type": "rawscript",
9
- "language": "bun",
10
- "content": "export async function main(items: { name: string; price: number; quantity: number }[]) {\n const invalid = items.filter(item => item.price <= 0 || item.quantity <= 0);\n return { valid: invalid.length === 0, invalidItems: invalid };\n}",
11
- "input_transforms": {
12
- "items": {
13
- "type": "javascript",
14
- "expr": "flow_input.items"
15
- }
16
- }
17
- }
18
- },
19
- {
20
- "id": "calculate_total",
21
- "value": {
22
- "type": "rawscript",
23
- "language": "bun",
24
- "content": "export async function main(items: { name: string; price: number; quantity: number }[]) {\n const subtotal = items.reduce((sum, item) => sum + item.price * item.quantity, 0);\n const tax = subtotal * 0.08;\n return { subtotal, tax, total: subtotal + tax };\n}",
25
- "input_transforms": {
26
- "items": {
27
- "type": "javascript",
28
- "expr": "flow_input.items"
29
- }
30
- }
31
- }
32
- },
33
- {
34
- "id": "check_inventory",
35
- "value": {
36
- "type": "forloopflow",
37
- "iterator": {
38
- "type": "javascript",
39
- "expr": "flow_input.items"
40
- },
41
- "skip_failures": false,
42
- "parallel": true,
43
- "modules": [
44
- {
45
- "id": "check_item_stock",
46
- "value": {
47
- "type": "rawscript",
48
- "language": "bun",
49
- "content": "export async function main(item: { name: string; quantity: number }) {\n // Mock inventory check - items with even quantity are in stock\n const inStock = item.quantity % 2 === 0 || item.quantity < 5;\n return { name: item.name, requested: item.quantity, inStock, available: inStock ? item.quantity : 0 };\n}",
50
- "input_transforms": {
51
- "item": {
52
- "type": "javascript",
53
- "expr": "flow_input.iter.value"
54
- }
55
- }
56
- }
57
- }
58
- ]
59
- }
60
- },
61
- {
62
- "id": "process_inventory_result",
63
- "value": {
64
- "type": "branchone",
65
- "branches": [
66
- {
67
- "summary": "All items in stock - create shipment",
68
- "expr": "results.check_inventory.every(item => item.inStock)",
69
- "modules": [
70
- {
71
- "id": "create_shipment",
72
- "value": {
73
- "type": "rawscript",
74
- "language": "bun",
75
- "content": "export async function main(shipping_address: string, total: number) {\n return {\n shipment_id: `SHIP-${Date.now()}`,\n status: 'created',\n address: shipping_address,\n total,\n estimated_delivery: '3-5 business days'\n };\n}",
76
- "input_transforms": {
77
- "shipping_address": {
78
- "type": "javascript",
79
- "expr": "flow_input.shipping_address"
80
- },
81
- "total": {
82
- "type": "javascript",
83
- "expr": "results.calculate_total.total"
84
- }
85
- }
86
- }
87
- }
88
- ]
89
- }
90
- ],
91
- "default": [
92
- {
93
- "id": "create_backorder",
94
- "value": {
95
- "type": "rawscript",
96
- "language": "bun",
97
- "content": "export async function main(inventory_results: { name: string; inStock: boolean }[]) {\n const outOfStock = inventory_results.filter(item => !item.inStock);\n return {\n backorder_id: `BO-${Date.now()}`,\n status: 'backorder',\n unavailable_items: outOfStock.map(item => item.name),\n message: 'Some items are out of stock. We will notify you when available.'\n };\n}",
98
- "input_transforms": {
99
- "inventory_results": {
100
- "type": "javascript",
101
- "expr": "results.check_inventory"
102
- }
103
- }
104
- }
105
- }
106
- ]
107
- }
108
- },
109
- {
110
- "id": "send_confirmation",
111
- "value": {
112
- "type": "rawscript",
113
- "language": "bun",
114
- "content": "export async function main(customer_email: string, order_result: any) {\n // Mock email sending\n return {\n email_sent: true,\n to: customer_email,\n subject: order_result.shipment_id ? 'Order Confirmed' : 'Order Update - Backorder',\n sent_at: new Date().toISOString()\n };\n}",
115
- "input_transforms": {
116
- "customer_email": {
117
- "type": "javascript",
118
- "expr": "flow_input.customer_email"
119
- },
120
- "order_result": {
121
- "type": "javascript",
122
- "expr": "results.process_inventory_result"
123
- }
124
- }
125
- }
126
- },
127
- {
128
- "id": "return_summary",
129
- "value": {
130
- "type": "rawscript",
131
- "language": "bun",
132
- "content": "export async function main(validation: any, totals: any, order_result: any, confirmation: any) {\n return {\n order_valid: validation.valid,\n totals,\n order_status: order_result.shipment_id ? 'shipped' : 'backorder',\n order_id: order_result.shipment_id || order_result.backorder_id,\n confirmation_sent: confirmation.email_sent\n };\n}",
133
- "input_transforms": {
134
- "validation": {
135
- "type": "javascript",
136
- "expr": "results.validate_order"
137
- },
138
- "totals": {
139
- "type": "javascript",
140
- "expr": "results.calculate_total"
141
- },
142
- "order_result": {
143
- "type": "javascript",
144
- "expr": "results.process_inventory_result"
145
- },
146
- "confirmation": {
147
- "type": "javascript",
148
- "expr": "results.send_confirmation"
149
- }
150
- }
151
- }
152
- }
153
- ]
154
- },
155
- "schema": {
156
- "$schema": "https://json-schema.org/draft/2020-12/schema",
157
- "type": "object",
158
- "properties": {
159
- "items": {
160
- "type": "array",
161
- "description": "Array of order items",
162
- "items": {
163
- "type": "object",
164
- "properties": {
165
- "name": { "type": "string" },
166
- "price": { "type": "number" },
167
- "quantity": { "type": "integer" }
168
- },
169
- "required": ["name", "price", "quantity"]
170
- }
171
- },
172
- "customer_email": {
173
- "type": "string",
174
- "description": "Customer email address"
175
- },
176
- "shipping_address": {
177
- "type": "string",
178
- "description": "Shipping address"
179
- }
180
- },
181
- "required": ["items", "customer_email", "shipping_address"]
182
- }
183
- }