@oomol-lab/open-flow 0.1.0-beta.73 → 0.1.0-beta.75

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 (444) hide show
  1. package/LICENSE +36 -0
  2. package/NOTICE +7 -0
  3. package/README.md +41 -0
  4. package/dist/browser/{ContentIcon-CUQHjQIw.js → ContentIcon-FCpKiwjp.js} +2 -1
  5. package/dist/browser/{FlowCanvas-Dtf8_cQp.js → FlowCanvas-dzRBnlUT.js} +1 -1
  6. package/dist/browser/{createResourceDialog-BWJkjiOO.js → createResourceDialog-BeYDdUl-.js} +2 -2
  7. package/dist/browser/{dialog-CUy_fwx9.js → dialog-ZtpsFbl4.js} +337 -31
  8. package/dist/browser/{exportSvg-BOoy7-Db.js → exportSvg-DqXw1yf-.js} +2 -2
  9. package/dist/browser/{flowChanges-CgSnSqqP.js → flowChanges-b_5UobFj.js} +586 -87
  10. package/dist/browser/{flowWorkspace-Bf7H-r0t.js → flowWorkspace-ItojZbO4.js} +21162 -20242
  11. package/dist/browser/preview.css +254 -179
  12. package/dist/browser/preview.js +22201 -20625
  13. package/dist/browser/{typeScriptSession-B0hC-C8y.js → typeScriptSession-CSRwWmZm.js} +1 -1
  14. package/dist/browser/ui.css +72 -2
  15. package/dist/browser/workbench.css +254 -179
  16. package/dist/browser/workbench.js +22 -78
  17. package/dist/browser/{workbenchSelect-C3e4J93X.js → workbenchSelect-M441Lz0d.js} +1 -1
  18. package/dist/command/index.js +42 -42
  19. package/dist/common/authoring.d.ts +5 -5
  20. package/dist/common/authoringExamples.d.ts +3 -2
  21. package/dist/common/authoringFields.d.ts +1 -1
  22. package/dist/common/authoringSchema.d.ts +95 -8
  23. package/dist/common/connector-proxy.d.ts +1 -1
  24. package/dist/common/control-api-conformance.d.ts +1 -1
  25. package/dist/common/control-api-conformance.js +119 -31
  26. package/dist/common/control-api.d.ts +4 -3
  27. package/dist/common/control-api.js +117 -29
  28. package/dist/common/control-requests.d.ts +5 -4
  29. package/dist/common/control-requests.js +437 -103
  30. package/dist/common/cron-trigger.d.ts +1 -1
  31. package/dist/common/decision.d.ts +1 -1
  32. package/dist/common/draftOperations.d.ts +1 -1
  33. package/dist/common/engine-contract.d.ts +4 -2
  34. package/dist/common/event-source-definition.d.ts +1 -1
  35. package/dist/common/flow-agent.d.ts +1 -1
  36. package/dist/{browser → common}/flow-authoring-node.d.ts +3 -3
  37. package/dist/{browser → common}/flow-authoring.js +131 -30
  38. package/dist/{browser → common}/flow-change-schema.d.ts +177 -6
  39. package/dist/{browser → common}/flow-change.d.ts +35 -15
  40. package/dist/{browser → common}/flow-change.js +133 -32
  41. package/dist/common/flow-connectionUsage.d.ts +1 -1
  42. package/dist/common/flow-encoding.d.ts +1 -1
  43. package/dist/common/flow-encoding.js +89 -23
  44. package/dist/common/flow-errorHandling.d.ts +1 -1
  45. package/dist/common/flow-graph.d.ts +3 -2
  46. package/dist/common/flow-modules.d.ts +1 -1
  47. package/dist/common/flow-promptTemplate.d.ts +1 -1
  48. package/dist/common/flow-retry.d.ts +2 -2
  49. package/dist/common/flow-semantics.d.ts +1 -1
  50. package/dist/common/flow-semantics.js +966 -614
  51. package/dist/common/flow-workflowFile.d.ts +1 -1
  52. package/dist/common/flowInspection.d.ts +3 -3
  53. package/dist/common/http-request.d.ts +156 -0
  54. package/dist/common/http-request.js +5254 -0
  55. package/dist/common/integration-trigger.d.ts +1 -1
  56. package/dist/common/licenses.md +118 -1
  57. package/dist/common/liveDetails.d.ts +1 -1
  58. package/dist/common/mcp.d.ts +5 -4
  59. package/dist/common/mcp.js +117 -29
  60. package/dist/common/openapi.d.ts +1 -1
  61. package/dist/common/poll-trigger.d.ts +1 -1
  62. package/dist/common/run-events.js +11 -9
  63. package/dist/common/run-results.d.ts +8 -1
  64. package/dist/common/runtime-contract.d.ts +8 -2
  65. package/dist/common/runtime-contract.js +25 -5
  66. package/dist/common/scheduler-checkpoint.d.ts +1 -1
  67. package/dist/common/scheduler-dependencies.d.ts +1 -1
  68. package/dist/common/scheduler-node-execution.d.ts +1 -1
  69. package/dist/common/scheduler.d.ts +3 -3
  70. package/dist/common/scheduler.js +101 -33
  71. package/dist/common/trigger-catalog.d.ts +1 -1
  72. package/dist/common/trigger-config-options.d.ts +1 -1
  73. package/dist/common/trigger-config.d.ts +1 -1
  74. package/dist/common/trigger-contract.d.ts +2 -2
  75. package/dist/common/trigger-localization.d.ts +1 -1
  76. package/dist/common/webhook-response.d.ts +1 -3
  77. package/dist/common/webhook-trigger.d.ts +1 -1
  78. package/dist/common/webhook-trigger.js +12 -11
  79. package/dist/common/workflow.d.ts +17 -1
  80. package/dist/common/workflow.js +68 -22
  81. package/dist/index.d.ts +6 -3
  82. package/package.json +11 -6
  83. package/skills/open-flow/references/flow-authoring.md +1 -0
  84. package/skills/open-flow/references/flow-n8n-conversion.md +19 -15
  85. package/src/base/common/json.ts +90 -0
  86. package/src/canvas/common/commands.ts +15 -0
  87. package/src/connector/common/actionSchema.ts +168 -0
  88. package/src/connector/common/proxy.ts +44 -0
  89. package/src/control/common/api.ts +1506 -0
  90. package/src/control/common/authoring.ts +923 -0
  91. package/src/control/common/authoringCondition.ts +110 -0
  92. package/src/control/common/authoringDiagnosticFields.ts +136 -0
  93. package/src/control/common/authoringExamples.ts +200 -0
  94. package/src/control/common/authoringFields.ts +53 -0
  95. package/src/control/common/authoringLlm.ts +70 -0
  96. package/src/control/common/authoringOpenApi.ts +129 -0
  97. package/src/control/common/authoringSchema.ts +410 -0
  98. package/src/control/common/authoringTools.ts +123 -0
  99. package/src/control/common/authoringTriggers.ts +26 -0
  100. package/src/control/common/checkDecoders.ts +65 -0
  101. package/src/control/common/conformance.ts +1989 -0
  102. package/src/control/common/connectorDecoders.ts +370 -0
  103. package/src/control/common/connectorQueries.ts +61 -0
  104. package/src/control/common/decoding.ts +60 -0
  105. package/src/control/common/draftOperations.ts +61 -0
  106. package/src/control/common/errors.ts +114 -0
  107. package/src/control/common/eventSourceSchemas.ts +13 -0
  108. package/src/control/common/eventSources.ts +186 -0
  109. package/src/control/common/flowDecoders.ts +153 -0
  110. package/src/control/common/flowInspection.ts +181 -0
  111. package/src/control/common/flowNotifications.ts +37 -0
  112. package/src/control/common/liveDetails.ts +124 -0
  113. package/src/control/common/mcp.ts +241 -0
  114. package/src/control/common/mcpConformance.ts +142 -0
  115. package/src/control/common/providerAccess.ts +28 -0
  116. package/src/control/common/providerIconSprite.ts +42 -0
  117. package/src/control/common/publicationDecoders.ts +98 -0
  118. package/src/control/common/random.ts +16 -0
  119. package/src/control/common/requests.ts +112 -0
  120. package/src/control/common/resultQuery.ts +8 -0
  121. package/src/control/common/results.ts +176 -0
  122. package/src/control/common/revisionDecoders.ts +52 -0
  123. package/src/control/common/runDecoders.ts +240 -0
  124. package/src/control/common/triggerCatalog.ts +89 -0
  125. package/src/control/common/triggerDecoders.ts +175 -0
  126. package/src/decision/common/decision.ts +168 -0
  127. package/src/event-source/common/catalog.generated.json +65 -0
  128. package/src/event-source/common/definition.ts +66 -0
  129. package/src/event-source/common/index.ts +99 -0
  130. package/src/execution/common/checkpoint.ts +311 -0
  131. package/src/execution/common/dependencies.ts +440 -0
  132. package/src/execution/common/engineContract.ts +84 -0
  133. package/src/execution/common/events.ts +331 -0
  134. package/src/execution/common/node-execution.ts +469 -0
  135. package/src/execution/common/runLifecycle.ts +250 -0
  136. package/src/execution/common/runtime.ts +563 -0
  137. package/src/execution/common/scheduler.ts +697 -0
  138. package/src/execution/common/wait.ts +36 -0
  139. package/src/flow/common/agent.ts +305 -0
  140. package/src/flow/common/authoring.ts +30 -0
  141. package/src/flow/common/change.ts +1037 -0
  142. package/src/flow/common/changeSchema.ts +792 -0
  143. package/src/flow/common/codePermissions.ts +2 -0
  144. package/src/flow/common/condition.ts +265 -0
  145. package/src/flow/common/connectionUsage.ts +131 -0
  146. package/src/flow/common/edgeChanges.ts +35 -0
  147. package/src/flow/common/encoding.ts +437 -0
  148. package/src/flow/common/errorHandling.ts +34 -0
  149. package/src/flow/common/graph.ts +898 -0
  150. package/src/flow/common/inputValue.ts +16 -0
  151. package/src/flow/common/json.ts +8 -0
  152. package/src/flow/common/moduleChanges.ts +31 -0
  153. package/src/flow/common/modules.ts +292 -0
  154. package/src/flow/common/nodeChanges.ts +762 -0
  155. package/src/flow/common/portChanges.ts +36 -0
  156. package/src/flow/common/promptTemplate.ts +15 -0
  157. package/src/flow/common/retry.ts +20 -0
  158. package/src/flow/common/schema.ts +162 -0
  159. package/src/flow/common/schemaCompare.ts +176 -0
  160. package/src/flow/common/schemaComparer.ts +178 -0
  161. package/src/flow/common/schemaKeywords.ts +53 -0
  162. package/src/flow/common/semantics.ts +531 -0
  163. package/src/flow/common/sourceField.ts +35 -0
  164. package/src/flow/common/triggerScheduleSchema.ts +8 -0
  165. package/src/flow/common/wait.ts +30 -0
  166. package/src/flow/common/webhookMethod.ts +7 -0
  167. package/src/flow/common/webhookResponse.ts +71 -0
  168. package/src/flow/common/workflowFile.ts +97 -0
  169. package/src/http/common/authBindings.ts +12 -0
  170. package/src/http/common/headers.ts +5 -0
  171. package/src/http/common/httpRequest.ts +251 -0
  172. package/src/json-schema-subset/checker/array.ts +142 -0
  173. package/src/json-schema-subset/checker/cache.ts +57 -0
  174. package/src/json-schema-subset/checker/checker.ts +230 -0
  175. package/src/json-schema-subset/checker/enumAndConst.ts +113 -0
  176. package/src/json-schema-subset/checker/equals.ts +93 -0
  177. package/src/json-schema-subset/checker/numeric/checker.ts +50 -0
  178. package/src/json-schema-subset/checker/numeric/float.ts +121 -0
  179. package/src/json-schema-subset/checker/numeric/index.ts +1 -0
  180. package/src/json-schema-subset/checker/numeric/integer.ts +119 -0
  181. package/src/json-schema-subset/checker/numeric/integerNormalizer.ts +72 -0
  182. package/src/json-schema-subset/checker/object.ts +354 -0
  183. package/src/json-schema-subset/checker/range.ts +91 -0
  184. package/src/json-schema-subset/checker/string.ts +60 -0
  185. package/src/json-schema-subset/checker/tools/index.ts +3 -0
  186. package/src/json-schema-subset/checker/tools/mark.ts +82 -0
  187. package/src/json-schema-subset/checker/tools/quantum.ts +106 -0
  188. package/src/json-schema-subset/checker/tools/range.ts +210 -0
  189. package/src/json-schema-subset/checker/validator.ts +23 -0
  190. package/src/json-schema-subset/compiler/array.ts +163 -0
  191. package/src/json-schema-subset/compiler/combination.ts +109 -0
  192. package/src/json-schema-subset/compiler/common.ts +99 -0
  193. package/src/json-schema-subset/compiler/compiler.ts +188 -0
  194. package/src/json-schema-subset/compiler/enumAndConst.ts +75 -0
  195. package/src/json-schema-subset/compiler/index.ts +11 -0
  196. package/src/json-schema-subset/compiler/object.ts +411 -0
  197. package/src/json-schema-subset/compiler/primitive.ts +144 -0
  198. package/src/json-schema-subset/compiler/utils.ts +24 -0
  199. package/src/json-schema-subset/compiler/wrapper.ts +192 -0
  200. package/src/json-schema-subset/error.ts +55 -0
  201. package/src/json-schema-subset/expression/calculator.ts +442 -0
  202. package/src/json-schema-subset/expression/combination.ts +49 -0
  203. package/src/json-schema-subset/expression/expression.ts +191 -0
  204. package/src/json-schema-subset/expression/index.ts +25 -0
  205. package/src/json-schema-subset/expression/result.ts +88 -0
  206. package/src/json-schema-subset/expression/types.ts +36 -0
  207. package/src/json-schema-subset/extends/extendsContext.ts +89 -0
  208. package/src/json-schema-subset/extends/index.ts +2 -0
  209. package/src/json-schema-subset/extends/types.ts +12 -0
  210. package/src/json-schema-subset/global.ts +60 -0
  211. package/src/json-schema-subset/index.ts +8 -0
  212. package/src/json-schema-subset/preprocessing.ts +74 -0
  213. package/src/json-schema-subset/types.ts +8 -0
  214. package/src/json-schema-subset/utils.ts +95 -0
  215. package/src/localization/common/languages.ts +118 -0
  216. package/src/localization/common/timeZone.ts +25 -0
  217. package/src/openapi/common/openapi.ts +459 -0
  218. package/src/trigger/common/config.ts +56 -0
  219. package/src/trigger/common/configOptions.ts +15 -0
  220. package/src/trigger/common/configSchema.ts +8 -0
  221. package/src/trigger/common/contract.ts +132 -0
  222. package/src/trigger/common/cron.ts +151 -0
  223. package/src/trigger/common/integration.ts +498 -0
  224. package/src/trigger/common/poll.ts +187 -0
  225. package/src/trigger/common/webhook.ts +413 -0
  226. package/src/trigger/providers/airtable/locales/fr.json +18 -0
  227. package/src/trigger/providers/airtable/locales/ja.json +18 -0
  228. package/src/trigger/providers/airtable/locales/ko.json +18 -0
  229. package/src/trigger/providers/airtable/locales/ru.json +18 -0
  230. package/src/trigger/providers/airtable/locales/zh-CN.json +18 -0
  231. package/src/trigger/providers/airtable/locales/zh-TW.json +18 -0
  232. package/src/trigger/providers/asana/locales/fr.json +15 -0
  233. package/src/trigger/providers/asana/locales/ja.json +15 -0
  234. package/src/trigger/providers/asana/locales/ko.json +15 -0
  235. package/src/trigger/providers/asana/locales/ru.json +15 -0
  236. package/src/trigger/providers/asana/locales/zh-CN.json +15 -0
  237. package/src/trigger/providers/asana/locales/zh-TW.json +15 -0
  238. package/src/trigger/providers/calendly/locales/fr.json +16 -0
  239. package/src/trigger/providers/calendly/locales/ja.json +16 -0
  240. package/src/trigger/providers/calendly/locales/ko.json +16 -0
  241. package/src/trigger/providers/calendly/locales/ru.json +16 -0
  242. package/src/trigger/providers/calendly/locales/zh-CN.json +16 -0
  243. package/src/trigger/providers/calendly/locales/zh-TW.json +16 -0
  244. package/src/trigger/providers/catalog.generated.json +4996 -0
  245. package/src/trigger/providers/clickup/locales/fr.json +16 -0
  246. package/src/trigger/providers/clickup/locales/ja.json +16 -0
  247. package/src/trigger/providers/clickup/locales/ko.json +16 -0
  248. package/src/trigger/providers/clickup/locales/ru.json +16 -0
  249. package/src/trigger/providers/clickup/locales/zh-CN.json +16 -0
  250. package/src/trigger/providers/clickup/locales/zh-TW.json +16 -0
  251. package/src/trigger/providers/definitions.ts +19 -0
  252. package/src/trigger/providers/feishu/locales/fr.json +20 -0
  253. package/src/trigger/providers/feishu/locales/ja.json +20 -0
  254. package/src/trigger/providers/feishu/locales/ko.json +20 -0
  255. package/src/trigger/providers/feishu/locales/ru.json +20 -0
  256. package/src/trigger/providers/feishu/locales/zh-CN.json +20 -0
  257. package/src/trigger/providers/feishu/locales/zh-TW.json +20 -0
  258. package/src/trigger/providers/fieldDescriptions.ts +392 -0
  259. package/src/trigger/providers/fieldLabels.ts +256 -0
  260. package/src/trigger/providers/fireflies/locales/fr.json +17 -0
  261. package/src/trigger/providers/fireflies/locales/ja.json +17 -0
  262. package/src/trigger/providers/fireflies/locales/ko.json +17 -0
  263. package/src/trigger/providers/fireflies/locales/ru.json +17 -0
  264. package/src/trigger/providers/fireflies/locales/zh-CN.json +17 -0
  265. package/src/trigger/providers/fireflies/locales/zh-TW.json +17 -0
  266. package/src/trigger/providers/github/locales/fr.json +30 -0
  267. package/src/trigger/providers/github/locales/ja.json +30 -0
  268. package/src/trigger/providers/github/locales/ko.json +30 -0
  269. package/src/trigger/providers/github/locales/ru.json +30 -0
  270. package/src/trigger/providers/github/locales/zh-CN.json +30 -0
  271. package/src/trigger/providers/github/locales/zh-TW.json +30 -0
  272. package/src/trigger/providers/gitlab/locales/fr.json +18 -0
  273. package/src/trigger/providers/gitlab/locales/ja.json +18 -0
  274. package/src/trigger/providers/gitlab/locales/ko.json +18 -0
  275. package/src/trigger/providers/gitlab/locales/ru.json +18 -0
  276. package/src/trigger/providers/gitlab/locales/zh-CN.json +18 -0
  277. package/src/trigger/providers/gitlab/locales/zh-TW.json +18 -0
  278. package/src/trigger/providers/gmail/locales/fr.json +18 -0
  279. package/src/trigger/providers/gmail/locales/ja.json +18 -0
  280. package/src/trigger/providers/gmail/locales/ko.json +18 -0
  281. package/src/trigger/providers/gmail/locales/ru.json +18 -0
  282. package/src/trigger/providers/gmail/locales/zh-CN.json +18 -0
  283. package/src/trigger/providers/gmail/locales/zh-TW.json +18 -0
  284. package/src/trigger/providers/google-calendar/locales/fr.json +15 -0
  285. package/src/trigger/providers/google-calendar/locales/ja.json +15 -0
  286. package/src/trigger/providers/google-calendar/locales/ko.json +15 -0
  287. package/src/trigger/providers/google-calendar/locales/ru.json +15 -0
  288. package/src/trigger/providers/google-calendar/locales/zh-CN.json +15 -0
  289. package/src/trigger/providers/google-calendar/locales/zh-TW.json +15 -0
  290. package/src/trigger/providers/google-drive/locales/fr.json +48 -0
  291. package/src/trigger/providers/google-drive/locales/ja.json +48 -0
  292. package/src/trigger/providers/google-drive/locales/ko.json +48 -0
  293. package/src/trigger/providers/google-drive/locales/ru.json +48 -0
  294. package/src/trigger/providers/google-drive/locales/zh-CN.json +48 -0
  295. package/src/trigger/providers/google-drive/locales/zh-TW.json +48 -0
  296. package/src/trigger/providers/google-sheets/locales/fr.json +19 -0
  297. package/src/trigger/providers/google-sheets/locales/ja.json +19 -0
  298. package/src/trigger/providers/google-sheets/locales/ko.json +19 -0
  299. package/src/trigger/providers/google-sheets/locales/ru.json +19 -0
  300. package/src/trigger/providers/google-sheets/locales/zh-CN.json +19 -0
  301. package/src/trigger/providers/google-sheets/locales/zh-TW.json +19 -0
  302. package/src/trigger/providers/intercom/locales/fr.json +17 -0
  303. package/src/trigger/providers/intercom/locales/ja.json +17 -0
  304. package/src/trigger/providers/intercom/locales/ko.json +17 -0
  305. package/src/trigger/providers/intercom/locales/ru.json +17 -0
  306. package/src/trigger/providers/intercom/locales/zh-CN.json +17 -0
  307. package/src/trigger/providers/intercom/locales/zh-TW.json +17 -0
  308. package/src/trigger/providers/jira/locales/fr.json +17 -0
  309. package/src/trigger/providers/jira/locales/ja.json +17 -0
  310. package/src/trigger/providers/jira/locales/ko.json +17 -0
  311. package/src/trigger/providers/jira/locales/ru.json +17 -0
  312. package/src/trigger/providers/jira/locales/zh-CN.json +17 -0
  313. package/src/trigger/providers/jira/locales/zh-TW.json +17 -0
  314. package/src/trigger/providers/linear/locales/fr.json +13 -0
  315. package/src/trigger/providers/linear/locales/ja.json +13 -0
  316. package/src/trigger/providers/linear/locales/ko.json +13 -0
  317. package/src/trigger/providers/linear/locales/ru.json +13 -0
  318. package/src/trigger/providers/linear/locales/zh-CN.json +13 -0
  319. package/src/trigger/providers/linear/locales/zh-TW.json +13 -0
  320. package/src/trigger/providers/locales/fr.ts +71 -0
  321. package/src/trigger/providers/locales/ja.ts +71 -0
  322. package/src/trigger/providers/locales/ko.ts +71 -0
  323. package/src/trigger/providers/locales/ru.ts +71 -0
  324. package/src/trigger/providers/locales/zh-CN.ts +71 -0
  325. package/src/trigger/providers/locales/zh-TW.ts +71 -0
  326. package/src/trigger/providers/localization.ts +59 -0
  327. package/src/trigger/providers/notion/locales/fr.json +16 -0
  328. package/src/trigger/providers/notion/locales/ja.json +16 -0
  329. package/src/trigger/providers/notion/locales/ko.json +16 -0
  330. package/src/trigger/providers/notion/locales/ru.json +16 -0
  331. package/src/trigger/providers/notion/locales/zh-CN.json +16 -0
  332. package/src/trigger/providers/notion/locales/zh-TW.json +16 -0
  333. package/src/trigger/providers/one-drive/locales/fr.json +16 -0
  334. package/src/trigger/providers/one-drive/locales/ja.json +16 -0
  335. package/src/trigger/providers/one-drive/locales/ko.json +16 -0
  336. package/src/trigger/providers/one-drive/locales/ru.json +16 -0
  337. package/src/trigger/providers/one-drive/locales/zh-CN.json +16 -0
  338. package/src/trigger/providers/one-drive/locales/zh-TW.json +16 -0
  339. package/src/trigger/providers/outlook/locales/fr.json +18 -0
  340. package/src/trigger/providers/outlook/locales/ja.json +18 -0
  341. package/src/trigger/providers/outlook/locales/ko.json +18 -0
  342. package/src/trigger/providers/outlook/locales/ru.json +18 -0
  343. package/src/trigger/providers/outlook/locales/zh-CN.json +18 -0
  344. package/src/trigger/providers/outlook/locales/zh-TW.json +18 -0
  345. package/src/trigger/providers/pandadoc/locales/fr.json +12 -0
  346. package/src/trigger/providers/pandadoc/locales/ja.json +12 -0
  347. package/src/trigger/providers/pandadoc/locales/ko.json +12 -0
  348. package/src/trigger/providers/pandadoc/locales/ru.json +12 -0
  349. package/src/trigger/providers/pandadoc/locales/zh-CN.json +12 -0
  350. package/src/trigger/providers/pandadoc/locales/zh-TW.json +12 -0
  351. package/src/trigger/providers/pipedrive/locales/fr.json +15 -0
  352. package/src/trigger/providers/pipedrive/locales/ja.json +15 -0
  353. package/src/trigger/providers/pipedrive/locales/ko.json +15 -0
  354. package/src/trigger/providers/pipedrive/locales/ru.json +15 -0
  355. package/src/trigger/providers/pipedrive/locales/zh-CN.json +15 -0
  356. package/src/trigger/providers/pipedrive/locales/zh-TW.json +15 -0
  357. package/src/trigger/providers/remote.ts +163 -0
  358. package/src/trigger/providers/resend/locales/fr.json +16 -0
  359. package/src/trigger/providers/resend/locales/ja.json +16 -0
  360. package/src/trigger/providers/resend/locales/ko.json +16 -0
  361. package/src/trigger/providers/resend/locales/ru.json +16 -0
  362. package/src/trigger/providers/resend/locales/zh-CN.json +16 -0
  363. package/src/trigger/providers/resend/locales/zh-TW.json +16 -0
  364. package/src/trigger/providers/sentry/locales/fr.json +19 -0
  365. package/src/trigger/providers/sentry/locales/ja.json +19 -0
  366. package/src/trigger/providers/sentry/locales/ko.json +19 -0
  367. package/src/trigger/providers/sentry/locales/ru.json +19 -0
  368. package/src/trigger/providers/sentry/locales/zh-CN.json +19 -0
  369. package/src/trigger/providers/sentry/locales/zh-TW.json +19 -0
  370. package/src/trigger/providers/shopify/locales/fr.json +18 -0
  371. package/src/trigger/providers/shopify/locales/ja.json +18 -0
  372. package/src/trigger/providers/shopify/locales/ko.json +18 -0
  373. package/src/trigger/providers/shopify/locales/ru.json +18 -0
  374. package/src/trigger/providers/shopify/locales/zh-CN.json +18 -0
  375. package/src/trigger/providers/shopify/locales/zh-TW.json +18 -0
  376. package/src/trigger/providers/slack/locales/fr.json +18 -0
  377. package/src/trigger/providers/slack/locales/ja.json +18 -0
  378. package/src/trigger/providers/slack/locales/ko.json +18 -0
  379. package/src/trigger/providers/slack/locales/ru.json +18 -0
  380. package/src/trigger/providers/slack/locales/zh-CN.json +18 -0
  381. package/src/trigger/providers/slack/locales/zh-TW.json +18 -0
  382. package/src/trigger/providers/slackbot/locales/fr.json +23 -0
  383. package/src/trigger/providers/slackbot/locales/ja.json +23 -0
  384. package/src/trigger/providers/slackbot/locales/ko.json +23 -0
  385. package/src/trigger/providers/slackbot/locales/ru.json +23 -0
  386. package/src/trigger/providers/slackbot/locales/zh-CN.json +23 -0
  387. package/src/trigger/providers/slackbot/locales/zh-TW.json +23 -0
  388. package/src/trigger/providers/source-events.ts +25 -0
  389. package/src/trigger/providers/stripe/locales/fr.json +17 -0
  390. package/src/trigger/providers/stripe/locales/ja.json +17 -0
  391. package/src/trigger/providers/stripe/locales/ko.json +17 -0
  392. package/src/trigger/providers/stripe/locales/ru.json +17 -0
  393. package/src/trigger/providers/stripe/locales/zh-CN.json +17 -0
  394. package/src/trigger/providers/stripe/locales/zh-TW.json +17 -0
  395. package/src/trigger/providers/tally/locales/fr.json +12 -0
  396. package/src/trigger/providers/tally/locales/ja.json +12 -0
  397. package/src/trigger/providers/tally/locales/ko.json +12 -0
  398. package/src/trigger/providers/tally/locales/ru.json +12 -0
  399. package/src/trigger/providers/tally/locales/zh-CN.json +12 -0
  400. package/src/trigger/providers/tally/locales/zh-TW.json +12 -0
  401. package/src/trigger/providers/telegram/locales/fr.json +17 -0
  402. package/src/trigger/providers/telegram/locales/ja.json +17 -0
  403. package/src/trigger/providers/telegram/locales/ko.json +17 -0
  404. package/src/trigger/providers/telegram/locales/ru.json +17 -0
  405. package/src/trigger/providers/telegram/locales/zh-CN.json +17 -0
  406. package/src/trigger/providers/telegram/locales/zh-TW.json +17 -0
  407. package/src/trigger/providers/typeform/locales/fr.json +12 -0
  408. package/src/trigger/providers/typeform/locales/ja.json +12 -0
  409. package/src/trigger/providers/typeform/locales/ko.json +12 -0
  410. package/src/trigger/providers/typeform/locales/ru.json +12 -0
  411. package/src/trigger/providers/typeform/locales/zh-CN.json +12 -0
  412. package/src/trigger/providers/typeform/locales/zh-TW.json +12 -0
  413. package/src/trigger/providers/vercel/locales/fr.json +18 -0
  414. package/src/trigger/providers/vercel/locales/ja.json +18 -0
  415. package/src/trigger/providers/vercel/locales/ko.json +18 -0
  416. package/src/trigger/providers/vercel/locales/ru.json +18 -0
  417. package/src/trigger/providers/vercel/locales/zh-CN.json +18 -0
  418. package/src/trigger/providers/vercel/locales/zh-TW.json +18 -0
  419. package/src/trigger/providers/woocommerce/locales/fr.json +19 -0
  420. package/src/trigger/providers/woocommerce/locales/ja.json +19 -0
  421. package/src/trigger/providers/woocommerce/locales/ko.json +19 -0
  422. package/src/trigger/providers/woocommerce/locales/ru.json +19 -0
  423. package/src/trigger/providers/woocommerce/locales/zh-CN.json +19 -0
  424. package/src/trigger/providers/woocommerce/locales/zh-TW.json +19 -0
  425. package/src/trigger/providers/zendesk/locales/fr.json +15 -0
  426. package/src/trigger/providers/zendesk/locales/ja.json +15 -0
  427. package/src/trigger/providers/zendesk/locales/ko.json +15 -0
  428. package/src/trigger/providers/zendesk/locales/ru.json +15 -0
  429. package/src/trigger/providers/zendesk/locales/zh-CN.json +15 -0
  430. package/src/trigger/providers/zendesk/locales/zh-TW.json +15 -0
  431. package/src/trigger/providers/zoom/locales/fr.json +17 -0
  432. package/src/trigger/providers/zoom/locales/ja.json +17 -0
  433. package/src/trigger/providers/zoom/locales/ko.json +17 -0
  434. package/src/trigger/providers/zoom/locales/ru.json +17 -0
  435. package/src/trigger/providers/zoom/locales/zh-CN.json +17 -0
  436. package/src/trigger/providers/zoom/locales/zh-TW.json +17 -0
  437. package/src/types/index.ts +112 -0
  438. package/src/workflow/common/workflow.ts +273 -0
  439. package/dist/browser/lib-DrKav3HG.js +0 -11403
  440. /package/dist/{browser → common}/flow-authoring-edge.d.ts +0 -0
  441. /package/dist/{browser → common}/flow-authoring-module.d.ts +0 -0
  442. /package/dist/{browser → common}/flow-authoring.d.ts +0 -0
  443. /package/dist/{browser → common}/flow-input-value.d.ts +0 -0
  444. /package/dist/{browser → common}/webhook-method.d.ts +0 -0
@@ -1,9 +1,9 @@
1
1
  import { o as __toESM, t as __commonJSMin } from "./rolldown-runtime-CEgmsyvS.js";
2
- import { $ as ko_default$2, Q as ru_default$2, T as DropdownMenuItem, X as zh_TW_default$2, Y as waitBranchLocales, Z as zh_CN_default$2, a as spriteIcon, at as Checkbox, et as ja_default$2, i as initialsIcon, it as providerIconAppearance, l as wrapLayout, nt as en_default$2, q as uiLocales, r as imageIcon, rt as I18n, tt as fr_default$2 } from "./ContentIcon-CUQHjQIw.js";
2
+ import { $ as ko_default$2, Q as ru_default$2, T as DropdownMenuItem, X as zh_TW_default$2, Y as waitBranchLocales, Z as zh_CN_default$2, a as spriteIcon, at as Checkbox, et as ja_default$2, i as initialsIcon, it as providerIconAppearance, l as wrapLayout, nt as en_default$2, q as uiLocales, r as imageIcon, rt as I18n, tt as fr_default$2 } from "./ContentIcon-FCpKiwjp.js";
3
3
  import { a as derive, i as compute, l as val, t as arrayShallowEqual } from "./dist-bO8nvHFH.js";
4
4
  import { a as toPlainObject, l as useTranslate, o as I18nProvider } from "./dist-BFmpkX4P.js";
5
5
  import { A as string$1, C as literal, Cr as useRenderElement, E as object$1, M as unknown, Nr as mergeProps, O as record$2, S as lazy$1, T as number, _ as array, b as int, br as cn, g as _enum, i as TooltipTrigger, j as union, k as strictObject, n as TooltipContent, p as timeZoneOffsetMinutes, t as Tooltip, v as boolean, vr as Button, x as json$2, xr as cva, y as discriminatedUnion, yr as buttonVariants } from "./tooltip-wZJRB9oP.js";
6
- import { B as decodeRevisionContent, Ct as SelectTrigger, D as nodeSystemOutputPorts, Ft as Label, G as webhookResponseInputs, H as webhookHeaderValuePort, I as otherwiseOutput, It as Input, J as workflowOutputsPort, N as nodeInputMappings, Q as retryConfigurationSchema, S as portsByHandle, U as webhookHeadersPort, V as webhookHeaderNameIssue, W as webhookResponseAllowsBody, _ as applyFlowChanges$1, _t as Select, bt as SelectGroup, ct as webhookSupportsBody, dt as portsAssignable, et as checkJsonDepth, ft as schemaObject, gt as dequal, ht as format, it as decisionTask, j as conditionInputPorts, k as clearConditionBindings, lt as comparePorts, mt as isSchemaKeyword, q as webhookStatusCodePort, ut as matchesSchema, v as isTriggerNode, wt as SelectValue, x as normalizeNodeName, xt as SelectItem, y as nextNodeName, yt as SelectContent, z as authoringDefinitionSchemas } from "./dialog-CUy_fwx9.js";
6
+ import { A as clearConditionBindings, At as isSchemaKeyword, B as agentToolFields, Bt as SelectValue, Dt as portsAssignable, Et as matchesSchema, Ft as SelectContent, G as workflowAgentToolSchema, H as connectorAgentToolSchema, It as SelectGroup, J as webhookResponseAllowsBody, K as webhookHeaderValuePort, L as otherwiseOutput, Lt as SelectItem, M as conditionInputPorts, Mt as dequal$1, Nt as Select, O as nodeSystemOutputPorts, Ot as schemaObject, P as nodeInputMappings, Q as workflowOutputsPort, Qt as Input, S as portsByHandle, Tt as comparePorts, U as connectorCapabilitySchema, V as authoringDefinitionSchemas, W as decodeRevisionContent, Y as webhookResponseInputs, Z as webhookStatusCodePort, Zt as Label, _ as applyFlowChanges$1, bt as decisionTask, ct as httpRequestInputs, dt as withHttpParameterFields, ft as withHttpParameterSource, gt as renamedPort, ht as renameOutputMapping, it as checkJsonDepth, jt as format, mt as remapInputMappings, nt as retryConfigurationSchema, pt as httpHeaderNameIssue, q as webhookHeadersPort, st as httpRequestConfigSchema, ut as httpRequestTask, v as isTriggerNode, wt as webhookSupportsBody, x as normalizeNodeName, y as nextNodeName, zt as SelectTrigger } from "./dialog-ZtpsFbl4.js";
7
7
  import { a as uiLanguages, n as isUiLanguage, r as resolveUiLanguage } from "./languages-gYzoQqCi.js";
8
8
  import "./lib-Dws05GHj.js";
9
9
  import { i as objectValue, s as valueType, t as initialValue } from "./value-BbFQZZ_V.js";
@@ -240,7 +240,7 @@ function optionalString(value) {
240
240
  }
241
241
  //#endregion
242
242
  //#region src/execution/common/engineContract.ts
243
- var currentEngineContract = "open-flow-engine/v7";
243
+ var currentEngineContract = "open-flow-engine/v8";
244
244
  `${JSON.stringify(currentEngineContract)}`, new Set([
245
245
  "assert",
246
246
  "assert/strict",
@@ -266,7 +266,7 @@ var currentEngineContract = "open-flow-engine/v7";
266
266
  "url",
267
267
  "util",
268
268
  "zlib"
269
- ].flatMap((name) => [name, `node:${name}`])), `${JSON.stringify("open-flow-engine/v7/nodejs-compat-v1")}`;
269
+ ].flatMap((name) => [name, `node:${name}`])), `${JSON.stringify("open-flow-engine/v8/nodejs-compat-v1")}`;
270
270
  //#endregion
271
271
  //#region src/workflow/common/workflow.ts
272
272
  var portSchema = object$1({
@@ -279,6 +279,16 @@ strictObject({
279
279
  inputs: array(portSchema).nullable(),
280
280
  outputs: array(portSchema).nullable()
281
281
  });
282
+ function comparablePorts(value) {
283
+ return value == null ? null : value.map(({ handle, jsonSchema, nullable }) => ({
284
+ handle,
285
+ jsonSchema,
286
+ nullable
287
+ })).toSorted((a, b) => a.handle < b.handle ? -1 : a.handle > b.handle ? 1 : 0);
288
+ }
289
+ function sameWorkflowInterface(left, right) {
290
+ return dequal$1(comparablePorts(left.inputs), comparablePorts(right.inputs)) && dequal$1(comparablePorts(left.outputs), comparablePorts(right.outputs));
291
+ }
282
292
  var workflowContractSchema = object$1({
283
293
  version: literal(1),
284
294
  flowId: string$1().min(1),
@@ -351,6 +361,49 @@ var workflowReferencesSchema = object$1({
351
361
  }).nullable()
352
362
  }))
353
363
  });
364
+ /** Workflow declarations share discovery across authoring, admission and resource indexing. */
365
+ function nodeWorkflowReferences(node) {
366
+ if (node.kind != "task") return [];
367
+ if ("moduleId" in node.task) return (node.task.capabilities ?? []).flatMap((item, index) => item.kind == "workflow" ? [{
368
+ target: item,
369
+ path: `task/capabilities/${index}`,
370
+ tool: item.name
371
+ }] : []);
372
+ if (node.task.executor.kind == "workflow") return [{
373
+ target: {
374
+ ...node.task.executor,
375
+ inputs: node.task.inputs.filter((port) => "handle" in port),
376
+ outputs: node.task.outputs.filter((port) => "handle" in port)
377
+ },
378
+ path: "task/executor"
379
+ }];
380
+ if (node.task.executor.kind == "agent") return node.task.executor.tools.flatMap((item, index) => item.kind == "workflow" ? [{
381
+ target: item,
382
+ path: `task/executor/tools/${index}`,
383
+ tool: item.name
384
+ }] : []);
385
+ return [];
386
+ }
387
+ function workflowCapability(name, target) {
388
+ return {
389
+ kind: "workflow",
390
+ name,
391
+ flowId: target.flowId,
392
+ revisionId: "inputs" in target ? target.revisionId : "",
393
+ inputs: "inputs" in target ? target.inputs : [],
394
+ outputs: "inputs" in target ? target.outputs : null
395
+ };
396
+ }
397
+ function workflowAgentTool(id, name, target, previous) {
398
+ const capability = workflowCapability(name, target);
399
+ return {
400
+ ...capability,
401
+ id,
402
+ description: previous?.description ?? target.name,
403
+ approval: previous?.approval ?? false,
404
+ inputs: capability.inputs.map((port) => Object.assign({}, port, { source: previous?.inputs.find((old) => old.handle == port.handle)?.source ?? { kind: "model" } }))
405
+ };
406
+ }
354
407
  //#endregion
355
408
  //#region src/control/common/authoringLlm.ts
356
409
  var authoringLlmConfiguration = strictObject({
@@ -761,12 +814,12 @@ function openApiFieldIssues(task) {
761
814
  httpUrl(config.serverUrl);
762
815
  if (new URL(config.serverUrl).search) throw new Error("Server URLs must not contain a query string.");
763
816
  field = "operation";
764
- if (!dequal(config.document, snapshot$7(config.document, config.path, config.method))) return [{
817
+ if (!dequal$1(config.document, snapshot$7(config.document, config.path, config.method))) return [{
765
818
  field,
766
819
  message: "Save only the selected operation and its dependencies."
767
820
  }];
768
821
  const expected = openApiTask(config, task.name);
769
- if (!dequal(expected.inputs, task.inputs) || !dequal(expected.outputs, task.outputs)) return [{
822
+ if (!dequal$1(expected.inputs, task.inputs) || !dequal$1(expected.outputs, task.outputs)) return [{
770
823
  field,
771
824
  message: "OpenAPI ports must match the saved operation."
772
825
  }];
@@ -834,6 +887,7 @@ var type = _enum([
834
887
  "llm",
835
888
  "decision",
836
889
  "openapi",
890
+ "http-request",
837
891
  "condition",
838
892
  "value",
839
893
  "wait",
@@ -885,10 +939,21 @@ var operand = union([
885
939
  system,
886
940
  variable$1
887
941
  ]);
888
- var agentTool$1 = authoringDefinitionSchemas.agent.shape.tools.element.omit({
942
+ var toolSources = record$2(id$1, agentToolFields.inputs.element.shape.source).optional().describe("Tool input sources by name. The platform resolves types from the selected Action or workflow. New inputs default to model-provided; omitted existing sources are preserved.");
943
+ var agentTool$1 = union([workflowAgentToolSchema.omit({
944
+ id: true,
945
+ inputs: true,
946
+ outputs: true,
947
+ revisionId: true
948
+ }).extend({ inputs: toolSources }).strict(), connectorAgentToolSchema.omit({
889
949
  id: true,
890
950
  inputs: true
891
- }).extend({ inputs: record$2(id$1, authoringDefinitionSchemas.agent.shape.tools.element.shape.inputs.element.shape.source).optional().describe("Action input sources by name. The tool resolves types from the Action. New inputs default to model-provided; existing sources are preserved when omitted.") }).strict();
951
+ }).extend({ inputs: toolSources }).strict()]);
952
+ var authoringCapabilities = array(union([connectorCapabilitySchema, strictObject({
953
+ kind: literal("workflow"),
954
+ name: id$1,
955
+ flowId: id$1
956
+ })]));
892
957
  var notification = strictObject({
893
958
  ...authoringDefinitionSchemas.connector.shape,
894
959
  messageHandle: id$1,
@@ -944,10 +1009,11 @@ var authoringConfigurations = {
944
1009
  "code": strictObject({
945
1010
  inputs: inputFields,
946
1011
  outputs: outputFields,
947
- capabilities: authoringDefinitionSchemas.capabilities.optional()
1012
+ capabilities: authoringCapabilities.optional()
948
1013
  }),
949
1014
  "connector": authoringDefinitionSchemas.connector.omit({ outputMode: true }).strict(),
950
1015
  "openapi": authoringOpenApiSchema,
1016
+ "http-request": httpRequestConfigSchema,
951
1017
  "agent": authoringDefinitionSchemas.agent.omit({
952
1018
  prompt: true,
953
1019
  tools: true
@@ -1011,7 +1077,8 @@ var authoringEditSchema = discriminatedUnion("op", [
1011
1077
  }),
1012
1078
  strictObject({
1013
1079
  op: literal("node.refresh"),
1014
- node: referenceSchema
1080
+ node: referenceSchema,
1081
+ tool: id$1.optional().describe("Name of a workflow tool on an Agent or Code node. Omit for a Call Workflow node.")
1015
1082
  }),
1016
1083
  strictObject({
1017
1084
  op: literal("node.remove"),
@@ -1631,7 +1698,7 @@ function connectionUsage$7(document) {
1631
1698
  for (const capability of node.task.capabilities ?? []) if ("mode" in capability && capability.mode == "independent") for (const action of capability.actions) add("code", action.action, action.connectionId);
1632
1699
  }
1633
1700
  if (task?.executor.kind == "agent") {
1634
- for (const tool of task.executor.tools) add("agent", tool.action, tool.connectionId);
1701
+ for (const tool of task.executor.tools) if (tool.kind != "workflow") add("agent", tool.action, tool.connectionId);
1635
1702
  const notification = task.executor.notification;
1636
1703
  if (notification != null) add("notification", notification.action, notification.connectionId);
1637
1704
  }
@@ -1676,6 +1743,7 @@ function clearNodeConnections(graph, connectionId) {
1676
1743
  return [id, node];
1677
1744
  }
1678
1745
  const capabilities = node.task.capabilities?.map((capability) => {
1746
+ if (capability.kind == "workflow") return capability;
1679
1747
  if (!("mode" in capability)) {
1680
1748
  if ("action" in capability) {
1681
1749
  const { connectionId: selected, ...rest } = capability;
@@ -1783,7 +1851,7 @@ function cleanWorkflowFile(value) {
1783
1851
  }
1784
1852
  },
1785
1853
  summary: {
1786
- changedNodeIds: Object.keys(nodes).filter((id) => !dequal(nodes[id], original.nodes[id])),
1854
+ changedNodeIds: Object.keys(nodes).filter((id) => !dequal$1(nodes[id], original.nodes[id])),
1787
1855
  removedBindings: Object.keys(file.content.document.bindings).length
1788
1856
  }
1789
1857
  };
@@ -2483,7 +2551,7 @@ function webhookResponseDiagnostics(graph, triggerId, path = `/document/graph/no
2483
2551
  if (headersSource == null) for (const [headers, location] of [[options.responseHeaders, `${path}/options/responseHeaders`], [headerOutputs, headersPath]]) {
2484
2552
  const names = [];
2485
2553
  for (const name of Object.keys(headers ?? {})) {
2486
- if (webhookHeaderNameIssue(name, names) != null) diagnostics.push(graphDiagnostic("trigger.webhook-response-header-name", "Use valid, unique HTTP header names.", location));
2554
+ if (httpHeaderNameIssue(name, names) != null) diagnostics.push(graphDiagnostic("trigger.webhook-response-header-name", "Use valid, unique HTTP header names.", location));
2487
2555
  names.push(name);
2488
2556
  }
2489
2557
  }
@@ -2754,9 +2822,9 @@ function checkInputSources(graph, target, handle, sources) {
2754
2822
  };
2755
2823
  }
2756
2824
  /** Enumerate structurally available outputs while retaining their compatibility with one input. */
2757
- function inputSourceCandidates(graph, target, handle) {
2825
+ function inputSourceCandidates(graph, target, handle, inputPort) {
2758
2826
  const targetNode = graph.nodes[target];
2759
- const input = targetNode == null ? void 0 : nodeInputPorts(targetNode)[handle];
2827
+ const input = inputPort ?? (targetNode == null ? void 0 : nodeInputPorts(targetNode)[handle]);
2760
2828
  if (input == null) return {};
2761
2829
  const analysis = graphPaths(graph);
2762
2830
  return Object.fromEntries([...analysis.ancestors.get(target) ?? []].flatMap((nodeId) => {
@@ -2959,10 +3027,17 @@ var result = object$1({
2959
3027
  resultId: string$1().min(1),
2960
3028
  callId: string$1().min(1),
2961
3029
  toolId: string$1().min(1),
2962
- source: discriminatedUnion("kind", [object$1({
2963
- kind: literal("connector"),
2964
- action: string$1().min(1)
2965
- }), object$1({ kind: literal("code") })]),
3030
+ source: discriminatedUnion("kind", [
3031
+ object$1({
3032
+ kind: literal("connector"),
3033
+ action: string$1().min(1)
3034
+ }),
3035
+ object$1({ kind: literal("code") }),
3036
+ object$1({
3037
+ kind: literal("workflow"),
3038
+ flowId: string$1().min(1)
3039
+ })
3040
+ ]),
2966
3041
  bytes: number().int().nonnegative(),
2967
3042
  digest: string$1().regex(/^[a-f0-9]{64}$/),
2968
3043
  createdAt: string$1().datetime()
@@ -3383,7 +3458,8 @@ function workflowIdentity(value) {
3383
3458
  flowId: string(ref.flowId),
3384
3459
  runId: string(ref.runId),
3385
3460
  nodeId: string(ref.nodeId),
3386
- executionId: string(ref.executionId)
3461
+ executionId: string(ref.executionId),
3462
+ ...ref.callId == null ? {} : { callId: string(ref.callId) }
3387
3463
  };
3388
3464
  }
3389
3465
  function runInitiator(value) {
@@ -3705,7 +3781,7 @@ function decodeRunEvent(value) {
3705
3781
  switch (kind) {
3706
3782
  case "node.started": {
3707
3783
  const nodeKind = payload.nodeKind;
3708
- if (nodeKind !== void 0 && nodeKind !== "approval" && nodeKind !== "condition" && nodeKind !== "connector" && nodeKind !== "javascript" && nodeKind !== "decision" && nodeKind !== "openapi" && nodeKind !== "llm" && nodeKind !== "agent" && nodeKind !== "value" && nodeKind !== "outputs" && nodeKind !== "webhook-response" && nodeKind !== "workflow" && nodeKind !== "wait") return invalidResponse();
3784
+ if (nodeKind !== void 0 && nodeKind !== "approval" && nodeKind !== "condition" && nodeKind !== "connector" && nodeKind !== "javascript" && nodeKind !== "decision" && nodeKind !== "openapi" && nodeKind !== "http-request" && nodeKind !== "llm" && nodeKind !== "agent" && nodeKind !== "value" && nodeKind !== "outputs" && nodeKind !== "webhook-response" && nodeKind !== "workflow" && nodeKind !== "wait") return invalidResponse();
3709
3785
  return {
3710
3786
  ...base,
3711
3787
  kind,
@@ -4614,6 +4690,7 @@ function errorNotice(error, t) {
4614
4690
  if (error instanceof ApiError) {
4615
4691
  if (error.code == controlErrorCode.flowInvalid && typeof error.details?.reason == "string" && [
4616
4692
  "workflow.unpublished",
4693
+ "workflow.missing-start",
4617
4694
  "workflow.disabled",
4618
4695
  "workflow.retiring",
4619
4696
  "workflow.recursive"
@@ -6552,6 +6629,10 @@ var resources = {
6552
6629
  "defaultOutputDescription": "The final result produced by the Agent."
6553
6630
  },
6554
6631
  actionPicker: {
6632
+ "discardTitle": "Discard tool changes?",
6633
+ "discardDescription": "Your tool changes have not been saved.",
6634
+ "continueEditing": "Continue editing",
6635
+ "discardChanges": "Discard changes",
6555
6636
  "saveFailed": "Could not save tools. Try again.",
6556
6637
  "selectionSummary": "Actions: {{actions}} · Services: {{providers}}",
6557
6638
  "preparing": "Preparing action…",
@@ -6967,6 +7048,50 @@ var resources = {
6967
7048
  "unavailable": "This form is no longer accessible. Choose another form.",
6968
7049
  "failed": "Could not load forms.",
6969
7050
  "retry": "Retry"
7051
+ },
7052
+ toolPicker: {
7053
+ "type": "Tool type",
7054
+ "connectors": "Connectors",
7055
+ "workflows": "Workflows",
7056
+ "alias": "Call name",
7057
+ "approval": "Require approval",
7058
+ "current": "Interface up to date",
7059
+ "summary": "{tools} tools · {workflows} workflows",
7060
+ "aliasInvalid": "Use a unique call name of 1–64 characters, starting with a letter and containing only letters, numbers, underscores or hyphens.",
7061
+ "connector": "Connector",
7062
+ "workflow": "Workflow"
7063
+ },
7064
+ httpRequest: {
7065
+ "title": "HTTP Request",
7066
+ "description": "Send an HTTP request and use its response in the workflow.",
7067
+ "method": "Method",
7068
+ "query": "Query parameters",
7069
+ "headers": "Request headers",
7070
+ "bodyFormat": "Request body format",
7071
+ "none": "None",
7072
+ "text": "Text",
7073
+ "authentication": "Authentication",
7074
+ "location": "Location",
7075
+ "keyName": "Key name",
7076
+ "responseFormat": "Response format",
7077
+ "auto": "Auto",
7078
+ "statusPolicy": "Accepted status codes",
7079
+ "success": "2xx",
7080
+ "all": "All status codes",
7081
+ "saveFailed": "Unable to save request settings.",
7082
+ "retry": "Retry",
7083
+ "bodyUnsupported": "GET and HEAD do not support a request body.",
7084
+ "parameterNamesInvalid": "Parameter names must be nonempty and unique.",
7085
+ "headerNameInvalid": "Invalid HTTP header name.",
7086
+ "keyNameRequired": "Enter an API Key name.",
7087
+ "authConflict": "Authentication conflicts with a request parameter.",
7088
+ "body": "Request body",
7089
+ "username": "Username",
7090
+ "password": "Password",
7091
+ "keyValue": "Key value",
7092
+ "responseOutputs": "Response outputs",
7093
+ "authenticationType": "Type",
7094
+ "responseSettings": "Response settings"
6970
7095
  }
6971
7096
  },
6972
7097
  "zh-CN": {
@@ -8027,6 +8152,10 @@ var resources = {
8027
8152
  "defaultOutputDescription": "Agent 完成任务后生成的最终结果。"
8028
8153
  },
8029
8154
  actionPicker: {
8155
+ "discardTitle": "放弃工具修改?",
8156
+ "discardDescription": "你对工具的修改尚未保存。",
8157
+ "continueEditing": "继续编辑",
8158
+ "discardChanges": "放弃修改",
8030
8159
  "saveFailed": "工具保存失败,请重试。",
8031
8160
  "selectionSummary": "{{actions}} 个工具 · {{providers}} 个服务",
8032
8161
  "preparing": "正在准备工具…",
@@ -8442,6 +8571,50 @@ var resources = {
8442
8571
  "unavailable": "此表单已无法访问,请选择其他表单。",
8443
8572
  "failed": "无法加载表单。",
8444
8573
  "retry": "重试"
8574
+ },
8575
+ toolPicker: {
8576
+ "type": "工具类型",
8577
+ "connectors": "连接器",
8578
+ "workflows": "工作流",
8579
+ "alias": "调用名称",
8580
+ "approval": "需要审批",
8581
+ "current": "接口已同步",
8582
+ "summary": "{tools} 个工具 · 含 {workflows} 个工作流",
8583
+ "aliasInvalid": "调用名称不能重复,长度为 1–64 个字符,以英文字母开头,仅包含英文字母、数字、下划线或连字符。",
8584
+ "connector": "连接器",
8585
+ "workflow": "工作流"
8586
+ },
8587
+ httpRequest: {
8588
+ "title": "HTTP 请求",
8589
+ "description": "发送 HTTP 请求,在工作流中使用响应数据。",
8590
+ "method": "请求方法",
8591
+ "query": "查询参数",
8592
+ "headers": "请求头",
8593
+ "bodyFormat": "请求体格式",
8594
+ "none": "无",
8595
+ "text": "文本",
8596
+ "authentication": "认证",
8597
+ "location": "位置",
8598
+ "keyName": "密钥名称",
8599
+ "responseFormat": "响应格式",
8600
+ "auto": "自动",
8601
+ "statusPolicy": "接受的状态码",
8602
+ "success": "2xx",
8603
+ "all": "所有状态码",
8604
+ "saveFailed": "无法保存请求配置。",
8605
+ "retry": "重试",
8606
+ "bodyUnsupported": "GET 和 HEAD 不支持请求体。",
8607
+ "parameterNamesInvalid": "参数名称不能为空或重复。",
8608
+ "headerNameInvalid": "HTTP 请求头名称无效。",
8609
+ "keyNameRequired": "请填写 API Key 名称。",
8610
+ "authConflict": "认证与请求参数冲突。",
8611
+ "body": "请求体",
8612
+ "username": "用户名",
8613
+ "password": "密码",
8614
+ "keyValue": "密钥值",
8615
+ "responseOutputs": "响应输出",
8616
+ "authenticationType": "认证方式",
8617
+ "responseSettings": "响应配置"
8445
8618
  }
8446
8619
  },
8447
8620
  "zh-TW": {
@@ -9502,6 +9675,10 @@ var resources = {
9502
9675
  "defaultOutputDescription": "Agent 完成任務後產生的最終結果。"
9503
9676
  },
9504
9677
  actionPicker: {
9678
+ "discardTitle": "放棄工具變更?",
9679
+ "discardDescription": "你對工具的變更尚未儲存。",
9680
+ "continueEditing": "繼續編輯",
9681
+ "discardChanges": "放棄變更",
9505
9682
  "saveFailed": "工具儲存失敗,請重試。",
9506
9683
  "selectionSummary": "{{actions}} 個工具 · {{providers}} 個服務",
9507
9684
  "preparing": "正在準備工具…",
@@ -9917,6 +10094,50 @@ var resources = {
9917
10094
  "unavailable": "此表單已無法存取,請選擇其他表單。",
9918
10095
  "failed": "無法載入表單。",
9919
10096
  "retry": "重試"
10097
+ },
10098
+ toolPicker: {
10099
+ "type": "工具類型",
10100
+ "connectors": "連接器",
10101
+ "workflows": "工作流程",
10102
+ "alias": "呼叫名稱",
10103
+ "approval": "需要審批",
10104
+ "current": "介面已同步",
10105
+ "summary": "{tools} 個工具 · 含 {workflows} 個工作流程",
10106
+ "aliasInvalid": "呼叫名稱不能重複,長度為 1–64 個字元,以英文字母開頭,僅包含英文字母、數字、底線或連字號。",
10107
+ "connector": "連接器",
10108
+ "workflow": "工作流程"
10109
+ },
10110
+ httpRequest: {
10111
+ "title": "HTTP 請求",
10112
+ "description": "傳送 HTTP 請求,在工作流程中使用回應資料。",
10113
+ "method": "請求方法",
10114
+ "query": "查詢參數",
10115
+ "headers": "請求標頭",
10116
+ "bodyFormat": "請求本文格式",
10117
+ "none": "無",
10118
+ "text": "文字",
10119
+ "authentication": "驗證",
10120
+ "location": "位置",
10121
+ "keyName": "金鑰名稱",
10122
+ "responseFormat": "回應格式",
10123
+ "auto": "自動",
10124
+ "statusPolicy": "接受的狀態碼",
10125
+ "success": "2xx",
10126
+ "all": "所有狀態碼",
10127
+ "saveFailed": "無法儲存請求設定。",
10128
+ "retry": "重試",
10129
+ "bodyUnsupported": "GET 和 HEAD 不支援請求本文。",
10130
+ "parameterNamesInvalid": "參數名稱不可為空或重複。",
10131
+ "headerNameInvalid": "HTTP 請求標頭名稱無效。",
10132
+ "keyNameRequired": "請填寫 API Key 名稱。",
10133
+ "authConflict": "驗證與請求參數衝突。",
10134
+ "body": "請求本文",
10135
+ "username": "使用者名稱",
10136
+ "password": "密碼",
10137
+ "keyValue": "金鑰值",
10138
+ "responseOutputs": "回應輸出",
10139
+ "authenticationType": "驗證方式",
10140
+ "responseSettings": "回應設定"
9920
10141
  }
9921
10142
  },
9922
10143
  "ja": {
@@ -10734,6 +10955,10 @@ var resources = {
10734
10955
  "defaultOutputDescription": "Agent がタスクを完了して生成した最終結果。"
10735
10956
  },
10736
10957
  actionPicker: {
10958
+ "discardTitle": "ツールの変更を破棄しますか?",
10959
+ "discardDescription": "ツールの変更はまだ保存されていません。",
10960
+ "continueEditing": "編集を続ける",
10961
+ "discardChanges": "変更を破棄",
10737
10962
  "saveFailed": "ツールを保存できませんでした。もう一度お試しください。",
10738
10963
  "selectionSummary": "ツール: {{actions}} · サービス: {{providers}}",
10739
10964
  "preparing": "ツールを準備中…",
@@ -11149,6 +11374,50 @@ var resources = {
11149
11374
  "unavailable": "このフォームにはアクセスできません。別のフォームを選択してください。",
11150
11375
  "failed": "フォームを読み込めませんでした。",
11151
11376
  "retry": "再試行"
11377
+ },
11378
+ toolPicker: {
11379
+ "type": "ツールの種類",
11380
+ "connectors": "コネクター",
11381
+ "workflows": "ワークフロー",
11382
+ "alias": "呼び出し名",
11383
+ "approval": "承認を必須にする",
11384
+ "current": "インターフェースは最新です",
11385
+ "summary": "ツール {tools} 個 · ワークフロー {workflows} 個",
11386
+ "aliasInvalid": "呼び出し名は重複しない1~64文字で、英字で始まり、英数字、アンダースコア、ハイフンのみを使用してください。",
11387
+ "connector": "コネクター",
11388
+ "workflow": "ワークフロー"
11389
+ },
11390
+ httpRequest: {
11391
+ "title": "HTTP リクエスト",
11392
+ "description": "HTTP リクエストを送信し、ワークフローでレスポンスを使用します。",
11393
+ "method": "メソッド",
11394
+ "query": "クエリパラメーター",
11395
+ "headers": "リクエストヘッダー",
11396
+ "bodyFormat": "リクエスト本文形式",
11397
+ "none": "なし",
11398
+ "text": "テキスト",
11399
+ "authentication": "認証",
11400
+ "location": "位置",
11401
+ "keyName": "キー名",
11402
+ "responseFormat": "レスポンス形式",
11403
+ "auto": "自動",
11404
+ "statusPolicy": "成功とするステータスコード",
11405
+ "success": "2xx",
11406
+ "all": "すべてのコード",
11407
+ "saveFailed": "リクエスト設定を保存できません。",
11408
+ "retry": "再試行",
11409
+ "bodyUnsupported": "GET と HEAD は本文をサポートしていません。",
11410
+ "parameterNamesInvalid": "パラメーター名は空白や重複にできません。",
11411
+ "headerNameInvalid": "HTTP ヘッダー名が無効です。",
11412
+ "keyNameRequired": "API キー名を入力してください。",
11413
+ "authConflict": "認証とリクエストパラメーターが競合しています。",
11414
+ "body": "リクエスト本文",
11415
+ "username": "ユーザー名",
11416
+ "password": "パスワード",
11417
+ "keyValue": "キーの値",
11418
+ "responseOutputs": "レスポンス出力",
11419
+ "authenticationType": "認証方式",
11420
+ "responseSettings": "レスポンス設定"
11152
11421
  }
11153
11422
  },
11154
11423
  "ko": {
@@ -11966,6 +12235,10 @@ var resources = {
11966
12235
  "defaultOutputDescription": "Agent가 작업을 완료한 후 생성한 최종 결과."
11967
12236
  },
11968
12237
  actionPicker: {
12238
+ "discardTitle": "도구 변경 사항을 버릴까요?",
12239
+ "discardDescription": "도구 변경 사항이 아직 저장되지 않았습니다.",
12240
+ "continueEditing": "계속 편집",
12241
+ "discardChanges": "변경 사항 버리기",
11969
12242
  "saveFailed": "도구를 저장하지 못했습니다. 다시 시도하세요.",
11970
12243
  "selectionSummary": "도구: {{actions}} · 서비스: {{providers}}",
11971
12244
  "preparing": "도구 준비 중…",
@@ -12381,6 +12654,50 @@ var resources = {
12381
12654
  "unavailable": "이 양식에 더 이상 접근할 수 없습니다. 다른 양식을 선택하세요.",
12382
12655
  "failed": "양식을 불러올 수 없습니다.",
12383
12656
  "retry": "다시 시도"
12657
+ },
12658
+ toolPicker: {
12659
+ "type": "도구 유형",
12660
+ "connectors": "커넥터",
12661
+ "workflows": "워크플로",
12662
+ "alias": "호출 이름",
12663
+ "approval": "승인 필요",
12664
+ "current": "인터페이스가 최신입니다",
12665
+ "summary": "도구 {tools}개 · 워크플로 {workflows}개",
12666
+ "aliasInvalid": "호출 이름은 중복 없이 1–64자로 지정하고, 영문자로 시작하여 영문자, 숫자, 밑줄 또는 하이픈만 사용하세요.",
12667
+ "connector": "커넥터",
12668
+ "workflow": "워크플로"
12669
+ },
12670
+ httpRequest: {
12671
+ "title": "HTTP 요청",
12672
+ "description": "HTTP 요청을 보내고 워크플로에서 응답을 사용합니다.",
12673
+ "method": "메서드",
12674
+ "query": "쿼리 매개변수",
12675
+ "headers": "요청 헤더",
12676
+ "bodyFormat": "요청 본문 형식",
12677
+ "none": "없음",
12678
+ "text": "텍스트",
12679
+ "authentication": "인증",
12680
+ "location": "위치",
12681
+ "keyName": "키 이름",
12682
+ "responseFormat": "응답 형식",
12683
+ "auto": "자동",
12684
+ "statusPolicy": "허용 상태 코드",
12685
+ "success": "2xx",
12686
+ "all": "모든 코드",
12687
+ "saveFailed": "요청 설정을 저장할 수 없습니다.",
12688
+ "retry": "다시 시도",
12689
+ "bodyUnsupported": "GET과 HEAD는 본문을 지원하지 않습니다.",
12690
+ "parameterNamesInvalid": "매개변수 이름은 비어 있거나 중복될 수 없습니다.",
12691
+ "headerNameInvalid": "HTTP 헤더 이름이 잘못되었습니다.",
12692
+ "keyNameRequired": "API 키 이름을 입력하세요.",
12693
+ "authConflict": "인증과 요청 매개변수가 충돌합니다.",
12694
+ "body": "요청 본문",
12695
+ "username": "사용자 이름",
12696
+ "password": "비밀번호",
12697
+ "keyValue": "키 값",
12698
+ "responseOutputs": "응답 출력",
12699
+ "authenticationType": "인증 방식",
12700
+ "responseSettings": "응답 설정"
12384
12701
  }
12385
12702
  },
12386
12703
  "ru": {
@@ -13198,6 +13515,10 @@ var resources = {
13198
13515
  "defaultOutputDescription": "Итоговый результат выполнения задачи агентом."
13199
13516
  },
13200
13517
  actionPicker: {
13518
+ "discardTitle": "Отменить изменения инструментов?",
13519
+ "discardDescription": "Изменения инструментов ещё не сохранены.",
13520
+ "continueEditing": "Продолжить редактирование",
13521
+ "discardChanges": "Отменить изменения",
13201
13522
  "saveFailed": "Не удалось сохранить инструменты. Повторите попытку.",
13202
13523
  "selectionSummary": "Действия: {{actions}} · Сервисы: {{providers}}",
13203
13524
  "preparing": "Подготовка действия…",
@@ -13613,6 +13934,50 @@ var resources = {
13613
13934
  "unavailable": "Эта форма больше недоступна. Выберите другую.",
13614
13935
  "failed": "Не удалось загрузить формы.",
13615
13936
  "retry": "Повторить"
13937
+ },
13938
+ toolPicker: {
13939
+ "type": "Тип инструмента",
13940
+ "connectors": "Коннекторы",
13941
+ "workflows": "Рабочие процессы",
13942
+ "alias": "Имя вызова",
13943
+ "approval": "Требуется одобрение",
13944
+ "current": "Интерфейс актуален",
13945
+ "summary": "Инструментов: {tools} · Процессов: {workflows}",
13946
+ "aliasInvalid": "Укажите уникальное имя вызова длиной 1–64 символа, начинающееся с латинской буквы и содержащее только латинские буквы, цифры, подчёркивания или дефисы.",
13947
+ "connector": "Коннектор",
13948
+ "workflow": "Рабочий процесс"
13949
+ },
13950
+ httpRequest: {
13951
+ "title": "HTTP-запрос",
13952
+ "description": "Отправить HTTP-запрос и использовать ответ в рабочем процессе.",
13953
+ "method": "Метод",
13954
+ "query": "Параметры запроса",
13955
+ "headers": "Заголовки запроса",
13956
+ "bodyFormat": "Формат тела запроса",
13957
+ "none": "Нет",
13958
+ "text": "Текст",
13959
+ "authentication": "Аутентификация",
13960
+ "location": "Расположение",
13961
+ "keyName": "Имя ключа",
13962
+ "responseFormat": "Формат ответа",
13963
+ "auto": "Автоматически",
13964
+ "statusPolicy": "Допустимые коды состояния",
13965
+ "success": "2xx",
13966
+ "all": "Все коды",
13967
+ "saveFailed": "Не удалось сохранить настройки запроса.",
13968
+ "retry": "Повторить",
13969
+ "bodyUnsupported": "GET и HEAD не поддерживают тело запроса.",
13970
+ "parameterNamesInvalid": "Имена параметров должны быть непустыми и уникальными.",
13971
+ "headerNameInvalid": "Недопустимое имя HTTP-заголовка.",
13972
+ "keyNameRequired": "Введите имя ключа API.",
13973
+ "authConflict": "Аутентификация конфликтует с параметром запроса.",
13974
+ "body": "Тело запроса",
13975
+ "username": "Имя пользователя",
13976
+ "password": "Пароль",
13977
+ "keyValue": "Значение ключа",
13978
+ "responseOutputs": "Выходы ответа",
13979
+ "authenticationType": "Тип",
13980
+ "responseSettings": "Настройки ответа"
13616
13981
  }
13617
13982
  },
13618
13983
  "fr": {
@@ -14430,6 +14795,10 @@ var resources = {
14430
14795
  "defaultOutputDescription": "Le résultat final produit par l’Agent."
14431
14796
  },
14432
14797
  actionPicker: {
14798
+ "discardTitle": "Ignorer les modifications des outils ?",
14799
+ "discardDescription": "Vos modifications des outils n’ont pas été enregistrées.",
14800
+ "continueEditing": "Continuer à modifier",
14801
+ "discardChanges": "Ignorer les modifications",
14433
14802
  "saveFailed": "Impossible d’enregistrer les outils. Réessayez.",
14434
14803
  "selectionSummary": "Actions : {{actions}} · Services : {{providers}}",
14435
14804
  "preparing": "Préparation de l’action…",
@@ -14845,6 +15214,50 @@ var resources = {
14845
15214
  "unavailable": "Ce formulaire n’est plus accessible. Choisissez-en un autre.",
14846
15215
  "failed": "Impossible de charger les formulaires.",
14847
15216
  "retry": "Réessayer"
15217
+ },
15218
+ toolPicker: {
15219
+ "type": "Type d’outil",
15220
+ "connectors": "Connecteurs",
15221
+ "workflows": "Workflows",
15222
+ "alias": "Nom d’appel",
15223
+ "approval": "Approbation requise",
15224
+ "current": "Interface à jour",
15225
+ "summary": "{tools} outils · {workflows} workflows",
15226
+ "aliasInvalid": "Utilisez un nom d’appel unique de 1 à 64 caractères, commençant par une lettre et contenant uniquement des lettres ASCII, chiffres, tirets ou traits de soulignement.",
15227
+ "connector": "Connecteur",
15228
+ "workflow": "Workflow"
15229
+ },
15230
+ httpRequest: {
15231
+ "title": "Requête HTTP",
15232
+ "description": "Envoyer une requête HTTP et utiliser sa réponse dans le workflow.",
15233
+ "method": "Méthode",
15234
+ "query": "Paramètres de requête",
15235
+ "headers": "En-têtes de requête",
15236
+ "bodyFormat": "Format du corps de la requête",
15237
+ "none": "Aucun",
15238
+ "text": "Texte",
15239
+ "authentication": "Authentification",
15240
+ "location": "Emplacement",
15241
+ "keyName": "Nom de la clé",
15242
+ "responseFormat": "Format de réponse",
15243
+ "auto": "Automatique",
15244
+ "statusPolicy": "Codes de statut acceptés",
15245
+ "success": "2xx",
15246
+ "all": "Tous les codes",
15247
+ "saveFailed": "Impossible d’enregistrer la configuration.",
15248
+ "retry": "Réessayer",
15249
+ "bodyUnsupported": "GET et HEAD ne prennent pas en charge de corps.",
15250
+ "parameterNamesInvalid": "Les noms doivent être uniques et non vides.",
15251
+ "headerNameInvalid": "Nom d’en-tête HTTP invalide.",
15252
+ "keyNameRequired": "Saisissez un nom de clé API.",
15253
+ "authConflict": "L’authentification est en conflit avec un paramètre.",
15254
+ "body": "Corps de la requête",
15255
+ "username": "Nom d’utilisateur",
15256
+ "password": "Mot de passe",
15257
+ "keyValue": "Valeur de la clé",
15258
+ "responseOutputs": "Sorties de réponse",
15259
+ "authenticationType": "Type",
15260
+ "responseSettings": "Paramètres de réponse"
14848
15261
  }
14849
15262
  }
14850
15263
  };
@@ -15813,40 +16226,66 @@ function WorkflowExportMenuItem({ disabled, onClick, className }) {
15813
16226
  });
15814
16227
  }
15815
16228
  //#endregion
15816
- //#region src/flow/common/portChanges.ts
15817
- function renamedPort(previous, next) {
15818
- const previousNames = new Set(previous.flatMap((port) => "handle" in port ? [port.handle] : []));
15819
- const nextNames = new Set(next.flatMap((port) => "handle" in port ? [port.handle] : []));
15820
- const removed = [...previousNames].filter((name) => !nextNames.has(name));
15821
- const added = [...nextNames].filter((name) => !previousNames.has(name));
15822
- return removed.length == 1 && added.length == 1 ? [removed[0], added[0]] : void 0;
15823
- }
15824
- function renameOutputMapping(mapping, nodeIds, rename) {
15825
- if (rename == null || mapping.kind != "sources") return mapping;
15826
- const sources = mapping.sources.map((source) => source.kind == "node" && !source.system && nodeIds.has(source.nodeId) && source.output == rename[0] ? {
15827
- ...source,
15828
- output: rename[1]
15829
- } : source);
15830
- return sources.every((source, index) => source === mapping.sources[index]) ? mapping : {
15831
- kind: "sources",
15832
- sources
15833
- };
15834
- }
15835
- /** Carry saved mappings through a field rename and remove only fields absent from the new contract. */
15836
- function remapInputMappings(mappings, ports, rename) {
15837
- const inputs = { ...mappings };
15838
- if (rename != null && Object.hasOwn(inputs, rename[0])) {
15839
- Object.defineProperty(inputs, rename[1], {
15840
- value: inputs[rename[0]],
15841
- enumerable: true,
15842
- configurable: true,
15843
- writable: true
15844
- });
15845
- delete inputs[rename[0]];
16229
+ //#region ../../node_modules/.bun/dequal@2.0.3/node_modules/dequal/dist/index.mjs
16230
+ var has = Object.prototype.hasOwnProperty;
16231
+ function find(iter, tar, key) {
16232
+ for (key of iter.keys()) if (dequal(key, tar)) return key;
16233
+ }
16234
+ function dequal(foo, bar) {
16235
+ var ctor, len, tmp;
16236
+ if (foo === bar) return true;
16237
+ if (foo && bar && (ctor = foo.constructor) === bar.constructor) {
16238
+ if (ctor === Date) return foo.getTime() === bar.getTime();
16239
+ if (ctor === RegExp) return foo.toString() === bar.toString();
16240
+ if (ctor === Array) {
16241
+ if ((len = foo.length) === bar.length) while (len-- && dequal(foo[len], bar[len]));
16242
+ return len === -1;
16243
+ }
16244
+ if (ctor === Set) {
16245
+ if (foo.size !== bar.size) return false;
16246
+ for (len of foo) {
16247
+ tmp = len;
16248
+ if (tmp && typeof tmp === "object") {
16249
+ tmp = find(bar, tmp);
16250
+ if (!tmp) return false;
16251
+ }
16252
+ if (!bar.has(tmp)) return false;
16253
+ }
16254
+ return true;
16255
+ }
16256
+ if (ctor === Map) {
16257
+ if (foo.size !== bar.size) return false;
16258
+ for (len of foo) {
16259
+ tmp = len[0];
16260
+ if (tmp && typeof tmp === "object") {
16261
+ tmp = find(bar, tmp);
16262
+ if (!tmp) return false;
16263
+ }
16264
+ if (!dequal(len[1], bar.get(tmp))) return false;
16265
+ }
16266
+ return true;
16267
+ }
16268
+ if (ctor === ArrayBuffer) {
16269
+ foo = new Uint8Array(foo);
16270
+ bar = new Uint8Array(bar);
16271
+ } else if (ctor === DataView) {
16272
+ if ((len = foo.byteLength) === bar.byteLength) while (len-- && foo.getInt8(len) === bar.getInt8(len));
16273
+ return len === -1;
16274
+ }
16275
+ if (ArrayBuffer.isView(foo)) {
16276
+ if ((len = foo.byteLength) === bar.byteLength) while (len-- && foo[len] === bar[len]);
16277
+ return len === -1;
16278
+ }
16279
+ if (!ctor || typeof foo === "object") {
16280
+ len = 0;
16281
+ for (ctor in foo) {
16282
+ if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;
16283
+ if (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false;
16284
+ }
16285
+ return Object.keys(bar).length === len;
16286
+ }
15846
16287
  }
15847
- const names = new Set(ports.flatMap((port) => "handle" in port ? [port.handle] : []));
15848
- for (const name of Object.keys(inputs)) if (!names.has(name)) delete inputs[name];
15849
- return inputs;
16288
+ return foo !== foo && bar !== bar;
15850
16289
  }
15851
16290
  //#endregion
15852
16291
  //#region src/flow/common/nodeChanges.ts
@@ -16183,7 +16622,7 @@ function updateSettings(content, nodeId, settings) {
16183
16622
  nodeId,
16184
16623
  value: settings.onError
16185
16624
  });
16186
- if (Object.hasOwn(settings, "retry") && !dequal(node.retry, settings.retry)) operations.push({
16625
+ if (Object.hasOwn(settings, "retry") && !dequal$1(node.retry, settings.retry)) operations.push({
16187
16626
  before: node.retry,
16188
16627
  field: "retry",
16189
16628
  kind: "graph.node.field.set",
@@ -16202,7 +16641,7 @@ function setInputValues(content, nodeId, values) {
16202
16641
  for (const [handle, value] of Object.entries(values)) {
16203
16642
  const before = nodeInputMappings(node)[handle];
16204
16643
  const next = fixedInputValue(value);
16205
- if (dequal(before, next)) continue;
16644
+ if (dequal$1(before, next)) continue;
16206
16645
  operations.push({
16207
16646
  before,
16208
16647
  handle,
@@ -16347,10 +16786,10 @@ function setServiceConnections(content, providerId, connectionId, previousConnec
16347
16786
  } else if (task.executor.kind == "agent") {
16348
16787
  const executor = {
16349
16788
  ...task.executor,
16350
- tools: task.executor.tools.map(assign),
16789
+ tools: task.executor.tools.map((tool) => tool.kind == "workflow" ? tool : assign(tool)),
16351
16790
  ...task.executor.notification == null ? {} : { notification: assign(task.executor.notification) }
16352
16791
  };
16353
- if (!dequal(executor, task.executor)) operations.push({
16792
+ if (!dequal$1(executor, task.executor)) operations.push({
16354
16793
  kind: "graph.node.task.set",
16355
16794
  nodeId,
16356
16795
  before: task,
@@ -16368,7 +16807,7 @@ function updateStartInputDefs(content, nodeId, value) {
16368
16807
  const node = content.document.graph.nodes[nodeId];
16369
16808
  if (node?.kind != "start") throw new TypeError("Expected a Start node.");
16370
16809
  const previous = node.inputDefs;
16371
- if (dequal(previous, value)) return [];
16810
+ if (dequal$1(previous, value)) return [];
16372
16811
  const operations = [{
16373
16812
  kind: "graph.node.replace",
16374
16813
  nodeId,
@@ -16401,7 +16840,7 @@ function updateTriggerConfig$1(content, nodeId, name, value) {
16401
16840
  const trigger = content.document.graph.nodes[nodeId];
16402
16841
  if (trigger == null || trigger.kind != "integration" && trigger.kind != "poll") return;
16403
16842
  const next = fixedInputValue(value);
16404
- if (dequal(trigger.config[name], next)) return [];
16843
+ if (dequal$1(trigger.config[name], next)) return [];
16405
16844
  return [{
16406
16845
  before: trigger.config[name],
16407
16846
  kind: "graph.trigger.config.set",
@@ -16414,13 +16853,13 @@ function updateTriggerSchedule(content, nodeId, schedule) {
16414
16853
  const trigger = content.document.graph.nodes[nodeId];
16415
16854
  if (trigger == null) return;
16416
16855
  switch (trigger.kind) {
16417
- case "cron": return dequal(trigger.cronTimes, schedule) ? [] : [{
16856
+ case "cron": return dequal$1(trigger.cronTimes, schedule) ? [] : [{
16418
16857
  before: trigger.cronTimes,
16419
16858
  kind: "graph.trigger.schedule.set",
16420
16859
  nodeId,
16421
16860
  value: schedule
16422
16861
  }];
16423
- case "poll": return dequal(trigger.pollTimes, schedule) ? [] : [{
16862
+ case "poll": return dequal$1(trigger.pollTimes, schedule) ? [] : [{
16424
16863
  before: trigger.pollTimes,
16425
16864
  kind: "graph.trigger.schedule.set",
16426
16865
  nodeId,
@@ -16455,7 +16894,7 @@ function llmInputValue(values, handle, fallback) {
16455
16894
  }
16456
16895
  function setCodeActions(content, nodeId, capabilities) {
16457
16896
  const node = content.document.graph?.nodes[nodeId];
16458
- if (node?.kind != "task" || !("moduleId" in node.task) || dequal(node.task.capabilities ?? [], capabilities)) return;
16897
+ if (node?.kind != "task" || !("moduleId" in node.task) || dequal$1(node.task.capabilities ?? [], capabilities)) return;
16459
16898
  return [{
16460
16899
  kind: "graph.node.task.capabilities.set",
16461
16900
  nodeId,
@@ -16477,7 +16916,7 @@ function updateOutputsDefs(content, nodeId, value, outputMappings) {
16477
16916
  outputDefs: value,
16478
16917
  outputMappings: mappings
16479
16918
  };
16480
- if (dequal(node, next)) return [];
16919
+ if (dequal$1(node, next)) return [];
16481
16920
  const changes = [{
16482
16921
  kind: "graph.node.replace",
16483
16922
  nodeId,
@@ -16523,7 +16962,7 @@ function renameFlowOutputSources(content, nodeIds, previous, next) {
16523
16962
  return Object.entries(content.document.graph.nodes).flatMap(([nodeId, node]) => {
16524
16963
  if (node.kind != "outputs") return [];
16525
16964
  const outputMappings = Object.fromEntries(Object.entries(node.outputMappings).map(([name, mapping]) => [name, renameOutputMapping(mapping, nodeIds, rename)]));
16526
- return dequal(node.outputMappings, outputMappings) ? [] : [{
16965
+ return dequal$1(node.outputMappings, outputMappings) ? [] : [{
16527
16966
  kind: "graph.node.replace",
16528
16967
  nodeId,
16529
16968
  before: node,
@@ -16730,7 +17169,7 @@ function canvasPresentationChange(before, after) {
16730
17169
  ]) {
16731
17170
  const previous = record(first[field]) ?? {};
16732
17171
  const next = record(last[field]) ?? {};
16733
- for (const id of /* @__PURE__ */ new Set([...Object.keys(previous), ...Object.keys(next)])) if (!dequal(previous[id], next[id])) nodeIds.add(id);
17172
+ for (const id of /* @__PURE__ */ new Set([...Object.keys(previous), ...Object.keys(next)])) if (!dequal$1(previous[id], next[id])) nodeIds.add(id);
16734
17173
  }
16735
17174
  const select = (value) => Object.fromEntries([
16736
17175
  "nodes",
@@ -17133,7 +17572,7 @@ function flowResourceReferences(content) {
17133
17572
  });
17134
17573
  }
17135
17574
  return {
17136
- calledFlowIds: [...new Set(Object.values(content.document.graph.nodes).flatMap((node) => node.kind == "task" && "executor" in node.task && node.task.executor.kind == "workflow" && node.task.executor.flowId ? [node.task.executor.flowId] : []))].toSorted(),
17575
+ calledFlowIds: [...new Set(Object.values(content.document.graph.nodes).flatMap((node) => nodeWorkflowReferences(node).map(({ target }) => target.flowId).filter(Boolean)))].toSorted(),
17137
17576
  variableNames: [...new Set(Object.values(variableBindings(content, flowDependencies(content).bindings)))].toSorted(),
17138
17577
  connections: [...connections].toSorted(([left], [right]) => left < right ? -1 : left > right ? 1 : 0).map(([, value]) => value),
17139
17578
  errorSourceFlowIds: [...new Set(Object.values(content.document.graph.nodes).flatMap((node) => node.kind == "error" ? node.sourceFlowIds ?? [] : []))].toSorted()
@@ -17189,7 +17628,7 @@ function agentActions(flow) {
17189
17628
  const task = node.task;
17190
17629
  if (task.executor.kind != "agent") return [];
17191
17630
  const notice = task.executor.notification;
17192
- return [...task.executor.tools, ...notice != null ? [notice] : []].filter((tool) => tool.connectionId !== "").map((tool) => ({
17631
+ return [...task.executor.tools.filter((tool) => tool.kind != "workflow"), ...notice != null ? [notice] : []].filter((tool) => tool.connectionId !== "").map((tool) => ({
17193
17632
  kind: "connector",
17194
17633
  action: tool.action,
17195
17634
  connections: tool.connectionId == null ? [] : [{ connectionId: tool.connectionId }]
@@ -17197,7 +17636,7 @@ function agentActions(flow) {
17197
17636
  });
17198
17637
  }
17199
17638
  function codeActions(flow) {
17200
- return Object.values(flow.graph.nodes).flatMap((node) => node.kind == "task" && "moduleId" in node.task ? node.task.capabilities ?? [] : []);
17639
+ return Object.values(flow.graph.nodes).flatMap((node) => node.kind == "task" && "moduleId" in node.task ? (node.task.capabilities ?? []).filter((item) => item.kind == "connector") : []);
17201
17640
  }
17202
17641
  //#endregion
17203
17642
  //#region src/workbench/browser/runtime/revisionView.ts
@@ -26470,6 +26909,14 @@ function homepageHostname(homepageUrl) {
26470
26909
  function actionSummary(entries, actions, providers) {
26471
26910
  const unique = /* @__PURE__ */ new Map();
26472
26911
  for (const entry of entries) {
26912
+ if (entry.kind == "workflow") {
26913
+ unique.set(`workflow:${entry.flowId}`, {
26914
+ id: `workflow:${entry.flowId}`,
26915
+ icon: "i-lucide-light:workflow",
26916
+ label: entry.name
26917
+ });
26918
+ continue;
26919
+ }
26473
26920
  const action = actions[entry.action];
26474
26921
  const serviceId = action?.serviceId ?? entry.action.split(".")[0];
26475
26922
  if (unique.has(serviceId)) continue;
@@ -26485,6 +26932,7 @@ function actionSummary(entries, actions, providers) {
26485
26932
  }
26486
26933
  return {
26487
26934
  count: entries.length,
26935
+ workflows: entries.filter((entry) => entry.kind == "workflow").length,
26488
26936
  providers: [...unique.values()]
26489
26937
  };
26490
26938
  }
@@ -26532,6 +26980,7 @@ function nodeIcon(node) {
26532
26980
  if ("moduleId" in task) return ":carbon:code:";
26533
26981
  if (task.executor.kind == "decision") return ":carbon:ml-model-reference:";
26534
26982
  if (task.executor.kind == "workflow") return ":lucide-light:workflow:";
26983
+ if (task.executor.kind == "http-request") return ":lucide-light:globe:";
26535
26984
  if (task.executor.kind == "openapi") return ":logos:openapi-icon:";
26536
26985
  return task.executor.kind == "connector" ? ":carbon:connection-signal:" : ":carbon:machine-learning-model:";
26537
26986
  }
@@ -26792,6 +27241,7 @@ function executorName(task, providerName, t) {
26792
27241
  if (task.executor.kind == "agent") return t?.("addNode.agent") ?? "AI Agent";
26793
27242
  if (task.executor.kind == "decision") return t?.("addNode.decision") ?? "AI Decision";
26794
27243
  if (task.executor.kind == "workflow") return t?.("addNode.workflow") ?? "Call Workflow";
27244
+ if (task.executor.kind == "http-request") return `${t?.("httpRequest.title") ?? "HTTP Request"} · ${task.executor.method}`;
26795
27245
  if (task.executor.kind == "openapi") return "OpenAPI";
26796
27246
  if (task.executor.kind == "llm") return t?.("designer.executorLlm") ?? "LLM";
26797
27247
  return `${t?.("designer.executorConnector") ?? "Connector"} · ${providerName ?? task.executor.action.split(".")[0]}`;
@@ -27044,7 +27494,7 @@ function semanticDesignerNode(nodeId, resolved, ports, position, context) {
27044
27494
  }),
27045
27495
  kind: node.kind,
27046
27496
  executorName: executorName(task, connectorAction?.serviceName, context.t),
27047
- ...task != null && "moduleId" in task ? { actionSummary: actionSummary((task.capabilities ?? []).flatMap((capability) => "mode" in capability && capability.mode === "independent" ? capability.actions : []), context.connectorActions, Object.values(context.providers)) } : {},
27497
+ ...task != null && "moduleId" in task ? { actionSummary: actionSummary((task.capabilities ?? []).flatMap((capability) => capability.kind == "workflow" ? [capability] : "mode" in capability && capability.mode === "independent" ? capability.actions : []), context.connectorActions, Object.values(context.providers)) } : {},
27048
27498
  ...task != null && "executor" in task && task.executor.kind == "agent" ? { actionSummary: actionSummary(task.executor.tools, context.connectorActions, Object.values(context.providers)) } : {},
27049
27499
  connectionRequired,
27050
27500
  connectionDeferred: connector?.connectionId === "",
@@ -27559,6 +28009,16 @@ function builtinOptions(_draft, t) {
27559
28009
  inputs: decisionTask().inputs.filter((port) => "handle" in port),
27560
28010
  outputs: decisionTask().outputs.filter((port) => "handle" in port)
27561
28011
  },
28012
+ {
28013
+ description: t("httpRequest.description"),
28014
+ group,
28015
+ icon: ":lucide-light:globe:",
28016
+ id: "http-request",
28017
+ inputs: httpRequestTask().inputs.filter((port) => "handle" in port),
28018
+ outputs: httpRequestTask().outputs.filter((port) => "handle" in port),
28019
+ kind: "http-request",
28020
+ label: t("httpRequest.title")
28021
+ },
27562
28022
  {
27563
28023
  description: t("openapi.description"),
27564
28024
  group,
@@ -27753,6 +28213,10 @@ function addNodeIntent(option, revision, t) {
27753
28213
  kind: "decision",
27754
28214
  name: t("addNode.decision")
27755
28215
  };
28216
+ case "http-request": return {
28217
+ kind: "http-request",
28218
+ name: t("httpRequest.title")
28219
+ };
27756
28220
  case "openapi": return {
27757
28221
  kind: "openapi",
27758
28222
  name: "OpenAPI"
@@ -28591,6 +29055,9 @@ function addNode(revision, nodeId, intent) {
28591
29055
  case "decision":
28592
29056
  changes = createDecisionTask({ nodeId }, intent.name);
28593
29057
  break;
29058
+ case "http-request":
29059
+ changes = createManagedTask({ nodeId }, httpRequestTask(void 0, intent.name));
29060
+ break;
28594
29061
  case "openapi":
28595
29062
  changes = createManagedTask({ nodeId }, {
28596
29063
  name: intent.name,
@@ -28772,7 +29239,7 @@ function updateCondition(revision, nodeId, settings) {
28772
29239
  cases: current.cases,
28773
29240
  matchMode: current.matchMode
28774
29241
  };
28775
- if (!dequal(before, settings)) changes.push({
29242
+ if (!dequal$1(before, settings)) changes.push({
28776
29243
  before,
28777
29244
  kind: "graph.node.condition.set",
28778
29245
  nodeId,
@@ -28790,7 +29257,7 @@ function updateValue(revision, nodeId, settings) {
28790
29257
  nullable: item.nullable ?? false,
28791
29258
  ...Object.hasOwn(item, "value") ? { value: item.value } : {}
28792
29259
  }));
28793
- if (dequal(node.values, values)) return [];
29260
+ if (dequal$1(node.values, values)) return [];
28794
29261
  return [{
28795
29262
  before: node.values,
28796
29263
  kind: "graph.node.values.set",
@@ -28821,13 +29288,13 @@ function updateResolution(revision, nodeId, settings, values) {
28821
29288
  nodeId,
28822
29289
  value: settings.name
28823
29290
  });
28824
- if (!dequal(before, value)) changes.push({
29291
+ if (!dequal$1(before, value)) changes.push({
28825
29292
  before,
28826
29293
  kind: "graph.node.resolution.set",
28827
29294
  nodeId,
28828
29295
  value
28829
29296
  });
28830
- if (values == null && dequal(before.inputDefinitions, value.inputDefinitions)) return changes;
29297
+ if (values == null && dequal$1(before.inputDefinitions, value.inputDefinitions)) return changes;
28831
29298
  const inputs = updatedInputMappings(current.inputs, before.inputDefinitions, value.inputDefinitions, void 0, values);
28832
29299
  changes.push(...changedInputs(current.inputs, inputs, nodeId));
28833
29300
  return cleanVariableBindings(revision.revision.content, changes);
@@ -28837,7 +29304,7 @@ function updateTask(revision, nodeId, settings) {
28837
29304
  if (node?.kind != "task") return;
28838
29305
  switch (settings.kind) {
28839
29306
  case "workflow": {
28840
- if (!dequal(node.task, settings.before)) return;
29307
+ if (!dequal$1(node.task, settings.before)) return;
28841
29308
  const next = withWorkflowTask(node, settings.task);
28842
29309
  if ("executor" in node.task && node.task.executor.kind == "workflow" && (!node.task.executor.flowId || node.name == node.task.name)) return [{
28843
29310
  kind: "graph.node.replace",
@@ -28856,9 +29323,10 @@ function updateTask(revision, nodeId, settings) {
28856
29323
  }];
28857
29324
  }
28858
29325
  case "decision":
29326
+ case "http-request":
28859
29327
  case "openapi":
28860
29328
  case "agent":
28861
- if (!dequal(node.task, settings.before)) return;
29329
+ if (!dequal$1(node.task, settings.before)) return;
28862
29330
  return replaceTaskPorts(revision, nodeId, settings.task);
28863
29331
  case "code":
28864
29332
  if (!("moduleId" in node.task)) return;
@@ -28877,7 +29345,7 @@ function updateTask(revision, nodeId, settings) {
28877
29345
  mode: settings.mode
28878
29346
  }
28879
29347
  };
28880
- return dequal(task, value) ? [] : [{
29348
+ return dequal$1(task, value) ? [] : [{
28881
29349
  before: task,
28882
29350
  kind: "graph.node.task.set",
28883
29351
  nodeId,
@@ -28909,7 +29377,7 @@ function updateTaskPorts(revision, nodeId, ports, values) {
28909
29377
  return changes == null ? void 0 : cleanVariableBindings(revision.revision.content, changes);
28910
29378
  }
28911
29379
  if (selection?.kind != "task" || !("moduleId" in selection.node.task) || selection.module == null) return;
28912
- if (values == null && dequal(selection.node.task.inputs, ports.inputs) && dequal(selection.node.task.outputs, ports.outputs)) return [];
29380
+ if (values == null && dequal$1(selection.node.task.inputs, ports.inputs) && dequal$1(selection.node.task.outputs, ports.outputs)) return [];
28913
29381
  const changes = replaceTaskPorts(revision, nodeId, {
28914
29382
  ...selection.node.task,
28915
29383
  ...ports
@@ -28921,7 +29389,7 @@ function updateTaskAdditionalInputs(revision, nodeId, additionalInputs, values)
28921
29389
  const selection = revision.node(nodeId);
28922
29390
  if (selection?.kind != "task" || "moduleId" in selection.node.task || selection.definition == null) return;
28923
29391
  const current = selection.node;
28924
- if (values == null && dequal(current.additionalInputs ?? [], additionalInputs)) return [];
29392
+ if (values == null && dequal$1(current.additionalInputs ?? [], additionalInputs)) return [];
28925
29393
  const rename = renamedPort(current.additionalInputs ?? [], additionalInputs);
28926
29394
  const handles = new Set(selection.definition.inputs.flatMap((port) => "handle" in port ? [port.handle] : []).concat(additionalInputs.map((port) => port.handle)));
28927
29395
  const inputs = Object.assign({}, current.inputs);
@@ -28952,7 +29420,7 @@ function updateWebhook(revision, triggerId, settings) {
28952
29420
  method: settings.method,
28953
29421
  options: Object.keys(settings.options).length == 0 ? void 0 : settings.options
28954
29422
  };
28955
- if (dequal(before, value)) return [];
29423
+ if (dequal$1(before, value)) return [];
28956
29424
  return [{
28957
29425
  before,
28958
29426
  kind: "graph.node.webhook.set",
@@ -28997,7 +29465,7 @@ function convertInputValues(inputs, previous, next, rename, values) {
28997
29465
  const oldHandle = rename?.[1] === port.handle ? rename[0] : port.handle;
28998
29466
  const before = previous.find((item) => "handle" in item && item.handle === oldHandle);
28999
29467
  const mapping = inputs[port.handle];
29000
- if (before == null || dequal(before.jsonSchema, port.jsonSchema) || mapping?.kind !== "value") continue;
29468
+ if (before == null || dequal$1(before.jsonSchema, port.jsonSchema) || mapping?.kind !== "value") continue;
29001
29469
  if (mapping.value === null && port.nullable) continue;
29002
29470
  const value = valueForEditor(port.jsonSchema, mapping.value);
29003
29471
  if (value === void 0) delete inputs[port.handle];
@@ -29010,7 +29478,7 @@ function convertInputValues(inputs, previous, next, rename, values) {
29010
29478
  function changedInputs(before, value, nodeId) {
29011
29479
  const handles = /* @__PURE__ */ new Set([...Object.keys(before), ...Object.keys(value)]);
29012
29480
  const changes = [];
29013
- for (const handle of handles) if (!dequal(before[handle], value[handle])) changes.push({
29481
+ for (const handle of handles) if (!dequal$1(before[handle], value[handle])) changes.push({
29014
29482
  before: before[handle],
29015
29483
  handle,
29016
29484
  kind: "graph.node.input.set",
@@ -29049,7 +29517,7 @@ function replaceTaskPorts(revision, nodeId, task, values) {
29049
29517
  }
29050
29518
  for (const [currentNodeId, node] of Object.entries(graph.nodes)) {
29051
29519
  if (isTriggerNode(node)) continue;
29052
- const inputs = currentNodeId == nodeId ? updatedInputMappings(revision.inputMappings(node), previous.inputs, task.inputs, inputRename, values) : { ...revision.inputMappings(node) };
29520
+ const inputs = currentNodeId == nodeId ? "executor" in task && task.executor.kind == "http-request" && "executor" in previous ? httpRequestInputs(revision.inputMappings(node), previous, task) : updatedInputMappings(revision.inputMappings(node), previous.inputs, task.inputs, inputRename, values) : { ...revision.inputMappings(node) };
29053
29521
  for (const [name, mapping] of Object.entries(inputs)) inputs[name] = renameOutputMapping(mapping, instances, outputRename);
29054
29522
  if (currentNodeId == nodeId && "moduleId" in current.task) {
29055
29523
  if (current.task.name != task.name) changes.push({
@@ -29066,7 +29534,7 @@ function replaceTaskPorts(revision, nodeId, task, values) {
29066
29534
  inputs: task.inputs,
29067
29535
  outputs: task.outputs
29068
29536
  };
29069
- if (!dequal(before, value)) changes.push({
29537
+ if (!dequal$1(before, value)) changes.push({
29070
29538
  before,
29071
29539
  kind: "graph.node.task.ports.set",
29072
29540
  nodeId,
@@ -29107,13 +29575,13 @@ function replaceTaskPorts(revision, nodeId, task, values) {
29107
29575
  } }
29108
29576
  }
29109
29577
  };
29110
- if (!dequal(previous, value)) changes.unshift({
29578
+ if (!dequal$1(previous, value)) changes.unshift({
29111
29579
  kind: "graph.node.task.set",
29112
29580
  nodeId,
29113
29581
  before: previous,
29114
29582
  value
29115
29583
  });
29116
- } else if ("executor" in task && !dequal(previous, task)) changes.unshift({
29584
+ } else if ("executor" in task && !dequal$1(previous, task)) changes.unshift({
29117
29585
  kind: "graph.node.task.set",
29118
29586
  nodeId,
29119
29587
  before: previous,
@@ -29134,5 +29602,36 @@ function updateOutputPorts(revision, nodeId, definitions, values) {
29134
29602
  }));
29135
29603
  return updateOutputsDefs(content, nodeId, ports, updatedInputMappings(node.outputMappings, node.outputDefs, ports, renamedPort(node.outputDefs, ports), values));
29136
29604
  }
29605
+ function updateHttpParameters(revision, nodeId, group, edit, bindingId) {
29606
+ const node = revision.graph().nodes[nodeId];
29607
+ if (node?.kind !== "task" || !("executor" in node.task) || node.task.executor.kind !== "http-request") return;
29608
+ const handle = edit.field == null ? group : `${group === "query" ? "query" : "header"}.${edit.field}`;
29609
+ let next = edit.kind === "fields" ? withHttpParameterFields(node, group, edit.value) : edit.field != null ? withHttpParameterFields(node, group, edit.fields) : withHttpParameterSource(node, group, edit.kind === "source" ? {
29610
+ kind: "sources",
29611
+ sources: [edit.source]
29612
+ } : void 0);
29613
+ if (edit.field != null && edit.kind !== "variable") next = {
29614
+ ...next,
29615
+ inputs: {
29616
+ ...next.inputs,
29617
+ [handle]: edit.kind === "source" ? {
29618
+ kind: "sources",
29619
+ sources: [edit.source]
29620
+ } : {
29621
+ kind: "value",
29622
+ value: edit.value[edit.field] ?? null
29623
+ }
29624
+ }
29625
+ };
29626
+ const operations = [{
29627
+ kind: "graph.node.replace",
29628
+ nodeId,
29629
+ before: node,
29630
+ node: next
29631
+ }];
29632
+ const content = revision.revision.content;
29633
+ const binding = edit.kind === "variable" ? setInputVariable$1(applyFlowChanges$1(content, operations), nodeId, handle, edit.name, bindingId) ?? [] : [];
29634
+ return cleanVariableBindings(content, [...operations, ...binding]);
29635
+ }
29137
29636
  //#endregion
29138
- export { designerGraph as $, errorNotice as $t, valueForEditor as A, servers as An, setInputSources as At, dateTimeWall as B, eventSourceKind as Bn, Empty as Bt, updateWebhook as C, listOperations as Cn, setFlowViewport as Ct, editorComponent as D, securityOptions as Dn, resetInputValues as Dt, defaultValueEditorSchema as E, openApiTask as En, repairNodeNames as Et, calendarDate as F, jsonValue as Fn, IdTooltip as Ft, combineSources as G, EmptyTitle as Gt, addNodeIntent as H, EmptyDescription as Ht, dateFromTimeZone as I, record$1 as In, followWorkbenchLink as It, CacheResource as J, SourceForm as Jt, mapSource as K, Badge as Kt, dateInTimeZone as L, string as Ln, InputGroup as Lt, isUnconstrainedSchema as M, workflowCandidateGroup as Mn, updateStartInputDefs as Mt, typeOfSchema as N, workflowSelectionTask as Nn, updateTriggerSchedule as Nt, editorGroups as O, selectOperation as On, setCodeActions as Ot, calendarChange as P, invalidResponse as Pn, WorkflowExportMenuItem as Pt, connectorActionPorts as Q, EventSourceSetup as Qt, datePickerChange as R, ApiError as Rn, InputGroupAddon as Rt, updateValue as S, inputValue as Sn, setComment as St, supportsFeishuChatFilter as T, openApiFieldIssues as Tn, setNodePositions as Tt, deriveAddNodeOptions as U, EmptyHeader as Ut, isDateFormat as V, EmptyContent as Vt, indexAddNodeOptions as W, EmptyMedia as Wt, resourceData as X, createI18n as Xt, observeResource as Y, SourceSelect as Yt, resourceValue as Z, FeishuEventPicker as Zt, updateResolution as _, parseWorkflowFile as _n, canvasPresentationChange as _t, nameCreatedNodes as a, executionReachableNodes as an, canCancelRun as at, updateTaskPorts as b, triggerConfigValue as bn, removeComments as bt, setInputVariable as c, sourceOutputLabel as cn, flowResourceReferences as ct, updateCondition as d, sampleErrorOutputs as dn, diagnosticItems as dt, WorkbenchClient as en, semanticNodeIcon as et, updateNodeDescription as f, triggerOutputDefinitions as fn, diagnosticMessage as ft, updateOutputPorts as g, encodeWorkflowFile as gn, connectionCatalog as gt, updateNodeSettings as h, connectorActionMetadata as hn, actionWithConnections as ht, deleteSelection as i, decodeTriggerCatalog as in, RunStore as it, getDefaultValue as j, workflowCandidate as jn, setServiceConnections as jt, schemaForEditor as k, serverAddress as kn, setConnectorConnection as kt, setTriggerConnection as l, sourcePort as ln, Latest as lt, updateNodeName as m, connection as mn, schemaMismatchMessage as mt, agentTool as n, allConnectorConnectionsQuery as nn, actionSummary as nt, selectWebhookResponse as o, resolutionOutputPorts as on, hasRunFilter as ot, updateNodeIcon as p, isJsonObject as pn, diagnosticNodeId as pt, scopedValue as q, EventSourcesPage as qt, applyFlowChanges as r, decodeResultList as rn, providerIcon as rt, setInputValue as s, webhookResponseDiagnostics as sn, revisionView as st, addNode as t, randomId as tn, triggerNodeIcon as tt, setTriggerEventSource as u, normalizeTriggerOutputs as un, deriveInspectorDiagnostics as ut, updateTask as v, workflowFileName as vn, commentIds as vt, feishuResourceKind as w, object as wn, setNodeContentHidden as wt, updateTriggerConfig as x, triggerConfigValues as xn, restoreCanvasPresentation as xt, updateTaskAdditionalInputs as y, workflowNameFromFile as yn, flowPresentation as yt, datePickerValue as z, controlErrorCode as zn, InputGroupInput as zt };
29637
+ export { connectorActionPorts as $, FeishuEventPicker as $t, schemaForEditor as A, securityOptions as An, setConnectorConnection as At, datePickerValue as B, invalidResponse as Bn, InputGroupAddon as Bt, updateValue as C, triggerConfigValue as Cn, setComment as Ct, defaultValueEditorSchema as D, object as Dn, repairNodeNames as Dt, supportsFeishuChatFilter as E, listOperations as En, setNodePositions as Et, calendarChange as F, workflowAgentTool as Fn, dequal as Ft, indexAddNodeOptions as G, controlErrorCode as Gn, EmptyHeader as Gt, isDateFormat as H, record$1 as Hn, Empty as Ht, calendarDate as I, workflowCandidate as In, WorkflowExportMenuItem as It, scopedValue as J, Badge as Jt, combineSources as K, eventSourceKind as Kn, EmptyMedia as Kt, dateFromTimeZone as L, workflowCandidateGroup as Ln, IdTooltip as Lt, getDefaultValue as M, serverAddress as Mn, setServiceConnections as Mt, isUnconstrainedSchema as N, servers as Nn, updateStartInputDefs as Nt, editorComponent as O, openApiFieldIssues as On, resetInputValues as Ot, typeOfSchema as P, sameWorkflowInterface as Pn, updateTriggerSchedule as Pt, resourceValue as Q, createI18n as Qt, dateInTimeZone as R, workflowCapability as Rn, followWorkbenchLink as Rt, updateTriggerConfig as S, workflowNameFromFile as Sn, restoreCanvasPresentation as St, feishuResourceKind as T, inputValue as Tn, setNodeContentHidden as Tt, addNodeIntent as U, string as Un, EmptyContent as Ut, dateTimeWall as V, jsonValue as Vn, InputGroupInput as Vt, deriveAddNodeOptions as W, ApiError as Wn, EmptyDescription as Wt, observeResource as X, SourceForm as Xt, CacheResource as Y, EventSourcesPage as Yt, resourceData as Z, SourceSelect as Zt, updateOutputPorts as _, connection as _n, connectionCatalog as _t, nameCreatedNodes as a, decodeResultList as an, RunStore as at, updateTaskAdditionalInputs as b, parseWorkflowFile as bn, flowPresentation as bt, setInputVariable as c, inputSourceCandidates as cn, revisionView as ct, updateCondition as d, sourceOutputLabel as dn, deriveInspectorDiagnostics as dt, EventSourceSetup as en, designerGraph as et, updateHttpParameters as f, sourcePort as fn, diagnosticItems as ft, updateNodeSettings as g, isJsonObject as gn, actionWithConnections as gt, updateNodeName as h, triggerOutputDefinitions as hn, schemaMismatchMessage as ht, deleteSelection as i, allConnectorConnectionsQuery as in, providerIcon as it, valueForEditor as j, selectOperation as jn, setInputSources as jt, editorGroups as k, openApiTask as kn, setCodeActions as kt, setTriggerConnection as l, resolutionOutputPorts as ln, flowResourceReferences as lt, updateNodeIcon as m, sampleErrorOutputs as mn, diagnosticNodeId as mt, agentTool as n, WorkbenchClient as nn, triggerNodeIcon as nt, selectWebhookResponse as o, decodeTriggerCatalog as on, canCancelRun as ot, updateNodeDescription as p, normalizeTriggerOutputs as pn, diagnosticMessage as pt, mapSource as q, EmptyTitle as qt, applyFlowChanges as r, randomId as rn, actionSummary as rt, setInputValue as s, executionReachableNodes as sn, hasRunFilter as st, addNode as t, errorNotice as tn, semanticNodeIcon as tt, setTriggerEventSource as u, webhookResponseDiagnostics as un, Latest as ut, updateResolution as v, connectorActionMetadata as vn, canvasPresentationChange as vt, updateWebhook as w, triggerConfigValues as wn, setFlowViewport as wt, updateTaskPorts as x, workflowFileName as xn, removeComments as xt, updateTask as y, encodeWorkflowFile as yn, commentIds as yt, datePickerChange as z, workflowSelectionTask as zn, InputGroup as zt };