@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,17 +1,17 @@
1
1
  import type { JsonValue, Port, PortDefinition } from '../index.js';
2
2
  export { fixedInputValue, inputValue, inputValues } from './flow-input-value.js';
3
- import type { RetryConfiguration } from '../common/flow-retry.js';
3
+ import type { RetryConfiguration } from './flow-retry.js';
4
4
  import type { WebhookMethod } from './webhook-method.js';
5
5
  import { currentFlowModelVersion } from './flow-change-schema.js';
6
6
  export { changeOperationsSchema, currentFlowModelVersion, decodeChangeOperations } from './flow-change-schema.js';
7
- export type { RetryConfiguration } from '../common/flow-retry.js';
8
- export { supportsNodeRetry } from '../common/flow-retry.js';
9
- export { nodeSystemOutputPorts, supportsNodeErrorHandling, nodeErrorSchema } from '../common/flow-errorHandling.js';
10
- export type { NodeErrorData } from '../common/flow-errorHandling.js';
7
+ export type { RetryConfiguration } from './flow-retry.js';
8
+ export { supportsNodeRetry } from './flow-retry.js';
9
+ export { nodeSystemOutputPorts, supportsNodeErrorHandling, nodeErrorSchema } from './flow-errorHandling.js';
10
+ export type { NodeErrorData } from './flow-errorHandling.js';
11
11
  export type { WebhookMethod };
12
12
  export type { JsonValue, Port, PortDefinition } from '../index.js';
13
- export { isSchemaKeyword } from '../common/flow-schemaKeywords.js';
14
- export type { SchemaKeyword, SchemaMismatch } from '../common/flow-schemaKeywords.js';
13
+ export { isSchemaKeyword } from './flow-schemaKeywords.js';
14
+ export type { SchemaKeyword, SchemaMismatch } from './flow-schemaKeywords.js';
15
15
  export declare const resourceNameMaxLength = 80;
16
16
  export type ResourceNameIssue = 'controlCharacter' | 'empty' | 'specialCharacter' | 'tooLong';
17
17
  export declare function resourceNameIssue(value: string): ResourceNameIssue | undefined;
@@ -113,7 +113,7 @@ export interface ConditionNode extends GraphNodeBase {
113
113
  readonly matchMode: 'first' | 'all';
114
114
  readonly kind: 'condition';
115
115
  }
116
- export type ManagedTaskExecutor = import('../common/workflow.js').WorkflowExecutor | import('../common/decision.js').DecisionExecutor | import('../common/openapi.js').OpenApiExecutor | {
116
+ export type ManagedTaskExecutor = import('./http-request.js').HttpRequestExecutor | import('./workflow.js').WorkflowExecutor | import('./decision.js').DecisionExecutor | import('./openapi.js').OpenApiExecutor | {
117
117
  readonly kind: 'connector';
118
118
  readonly action: string;
119
119
  readonly connectionId?: string;
@@ -147,17 +147,37 @@ export type AgentInput = {
147
147
  } | {
148
148
  readonly kind: 'model';
149
149
  };
150
- export interface AgentTool {
150
+ interface AgentToolBase {
151
151
  readonly id: string;
152
152
  readonly name: string;
153
153
  readonly description: string;
154
- readonly action: string;
155
- readonly connectionId?: string;
156
154
  readonly approval: boolean;
157
155
  readonly inputs: readonly (InputPort & {
158
156
  readonly source: AgentInput;
159
157
  })[];
160
158
  }
159
+ export interface AgentConnectorTool extends AgentToolBase {
160
+ readonly kind?: 'connector';
161
+ readonly action: string;
162
+ readonly connectionId?: string;
163
+ }
164
+ export interface WorkflowCapability {
165
+ readonly kind: 'workflow';
166
+ readonly name: string;
167
+ readonly flowId: string;
168
+ readonly revisionId: string;
169
+ readonly inputs: readonly Port[];
170
+ readonly outputs: readonly Port[] | null;
171
+ }
172
+ export interface AgentWorkflowTool extends AgentToolBase, Omit<WorkflowCapability, 'inputs'> {
173
+ readonly action?: never;
174
+ readonly connectionId?: never;
175
+ }
176
+ export type AgentTool = AgentConnectorTool | AgentWorkflowTool;
177
+ export type TaskCapability = ConnectorCapability | WorkflowCapability;
178
+ export declare const workflowToolNamePattern: RegExp;
179
+ export declare function workflowToolNameIssue(name: string, otherNames?: Iterable<string>): 'invalid' | 'duplicate' | undefined;
180
+ export declare function decodeTaskCapabilities(value: unknown): readonly TaskCapability[];
161
181
  export interface ConnectorAccessCapability {
162
182
  readonly actionHints?: readonly string[];
163
183
  readonly connectionHints?: readonly {
@@ -195,7 +215,7 @@ interface TaskDefinitionBase {
195
215
  readonly outputs: readonly (Port | Group)[];
196
216
  }
197
217
  export interface InlineTaskDefinition extends TaskDefinitionBase {
198
- readonly capabilities?: readonly ConnectorCapability[];
218
+ readonly capabilities?: readonly TaskCapability[];
199
219
  readonly moduleId: string;
200
220
  }
201
221
  export interface ManagedTaskDefinition extends TaskDefinitionBase {
@@ -334,7 +354,7 @@ export interface CodeModule {
334
354
  }
335
355
  export interface RevisionContent {
336
356
  readonly document: FlowDocument;
337
- readonly modelVersion: 2 | 4 | 5 | 6 | 7 | 8 | 9 | typeof currentFlowModelVersion;
357
+ readonly modelVersion: 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | typeof currentFlowModelVersion;
338
358
  readonly modules: Readonly<Record<string, CodeModule>>;
339
359
  }
340
360
  export interface GraphEdge {
@@ -354,10 +374,10 @@ export type ChangeOperation = {
354
374
  readonly before: GraphNode;
355
375
  readonly node: GraphNode;
356
376
  } | {
357
- readonly before?: readonly ConnectorCapability[];
377
+ readonly before?: readonly TaskCapability[];
358
378
  readonly kind: 'graph.node.task.capabilities.set';
359
379
  readonly nodeId: string;
360
- readonly value?: readonly ConnectorCapability[];
380
+ readonly value?: readonly TaskCapability[];
361
381
  } | {
362
382
  readonly kind: 'graph.trigger.sources.set';
363
383
  readonly nodeId: string;
@@ -1,9 +1,9 @@
1
- //#region src/openapi/common/authBindings.ts
1
+ //#region src/http/common/authBindings.ts
2
2
  /** Never allow credentials to enter a Revision as literal node inputs. */
3
- function assertOpenApiAuthBindings(document) {
3
+ function assertHttpAuthBindings(document) {
4
4
  for (const node of Object.values(document.graph.nodes)) {
5
- if (node.kind != "task" || !("executor" in node.task) || node.task.executor.kind != "openapi") continue;
6
- for (const [handle, mapping] of Object.entries(node.inputs)) if (handle.startsWith("auth.") && mapping.kind == "value") throw new TypeError("OpenAPI authentication accepts deployment variables and upstream outputs only.");
5
+ if (node.kind != "task" || !("executor" in node.task) || !["openapi", "http-request"].includes(node.task.executor.kind)) continue;
6
+ for (const [handle, mapping] of Object.entries(node.inputs)) if (handle.startsWith("auth.") && mapping.kind == "value") throw new TypeError("HTTP authentication accepts deployment variables and upstream outputs only.");
7
7
  }
8
8
  }
9
9
  //#endregion
@@ -8779,6 +8779,52 @@ function answerSchema(question) {
8779
8779
  required: Object.keys(properties)
8780
8780
  };
8781
8781
  }
8782
+ //#endregion
8783
+ //#region src/http/common/httpRequest.ts
8784
+ var parameterSchema = strictObject({
8785
+ mode: _enum(["fields", "object"]).default("fields"),
8786
+ names: array(string()).default([])
8787
+ });
8788
+ var httpRequestExecutorSchema = strictObject({
8789
+ method: _enum([
8790
+ "GET",
8791
+ "POST",
8792
+ "PUT",
8793
+ "PATCH",
8794
+ "DELETE",
8795
+ "HEAD",
8796
+ "OPTIONS"
8797
+ ]).default("GET"),
8798
+ query: parameterSchema.default({
8799
+ mode: "fields",
8800
+ names: []
8801
+ }),
8802
+ headers: parameterSchema.default({
8803
+ mode: "fields",
8804
+ names: []
8805
+ }),
8806
+ bodyFormat: _enum([
8807
+ "none",
8808
+ "json",
8809
+ "text",
8810
+ "form"
8811
+ ]).default("none"),
8812
+ authentication: union([
8813
+ strictObject({ type: literal("none") }),
8814
+ strictObject({ type: _enum(["bearer", "basic"]) }),
8815
+ strictObject({
8816
+ type: literal("apiKey"),
8817
+ name: string(),
8818
+ in: _enum(["header", "query"])
8819
+ })
8820
+ ]).default({ type: "none" }),
8821
+ responseFormat: _enum([
8822
+ "auto",
8823
+ "json",
8824
+ "text"
8825
+ ]).default("auto"),
8826
+ statusPolicy: _enum(["success", "all"]).default("success")
8827
+ }).extend({ kind: literal("http-request") });
8782
8828
  function checkJsonDepth(value, depth = 0) {
8783
8829
  if (depth > 64) throw new TypeError("Value exceeds the maximum JSON depth.");
8784
8830
  if (value != null && typeof value == "object") for (const child of Object.values(value)) checkJsonDepth(child, depth + 1);
@@ -8789,6 +8835,7 @@ var retryNodeTypes = [
8789
8835
  "code",
8790
8836
  "connector",
8791
8837
  "openapi",
8838
+ "http-request",
8792
8839
  "llm",
8793
8840
  "decision"
8794
8841
  ];
@@ -8844,7 +8891,8 @@ var waitAutoContinueDraftSchema = discriminatedUnion("kind", [strictObject({
8844
8891
  at: string(),
8845
8892
  timezone: string().optional()
8846
8893
  })]);
8847
- discriminatedUnion("kind", [waitAutoContinueDraftSchema.options[0].extend({ durationMs: number().int().positive().max(Number.MAX_SAFE_INTEGER) }), waitAutoContinueDraftSchema.options[1].extend({
8894
+ /** Static business configuration; the deployment owns the allowed wait lifetime. */
8895
+ var waitAutoContinueSchema = discriminatedUnion("kind", [waitAutoContinueDraftSchema.options[0].extend({ durationMs: number().int().positive().max(Number.MAX_SAFE_INTEGER) }), waitAutoContinueDraftSchema.options[1].extend({
8848
8896
  at: datetime({ offset: true }),
8849
8897
  timezone: string().refine(isTimeZone, "Select a valid IANA timezone.").optional()
8850
8898
  })]);
@@ -8877,7 +8925,7 @@ var webhookResponseTimeout = {
8877
8925
  }).jsonSchema;
8878
8926
  //#endregion
8879
8927
  //#region src/flow/common/changeSchema.ts
8880
- var currentFlowModelVersion = 10;
8928
+ var currentFlowModelVersion = 11;
8881
8929
  var text = string();
8882
8930
  var actionConnection = text.describe("Account selection: omit while unconfigured; use an account ID to select it; use \"\" to explicitly defer configuration. Deferred Actions fail if called; deferred Agent tools are excluded from the callable tool set. Not supported by Triggers.");
8883
8931
  var json = json$1();
@@ -8917,7 +8965,7 @@ var ports = {
8917
8965
  inputs: array(union([input, group])),
8918
8966
  outputs: array(union([port, group]))
8919
8967
  };
8920
- var capability = union([
8968
+ var connectorCapabilitySchema = union([
8921
8969
  strictObject({
8922
8970
  kind: literal("connector"),
8923
8971
  action: text,
@@ -8949,6 +8997,15 @@ var capability = union([
8949
8997
  })).optional()
8950
8998
  })
8951
8999
  ]);
9000
+ var workflowCapabilitySchema = strictObject({
9001
+ kind: literal("workflow"),
9002
+ name: text,
9003
+ flowId: text,
9004
+ revisionId: text,
9005
+ inputs: array(port),
9006
+ outputs: array(port).nullable()
9007
+ });
9008
+ var capability = union([connectorCapabilitySchema, workflowCapabilitySchema]);
8952
9009
  var inline = object({
8953
9010
  ...ports,
8954
9011
  name: text,
@@ -8963,6 +9020,20 @@ var agentValue = union([object({
8963
9020
  input: text
8964
9021
  })]);
8965
9022
  var agentInput = union([agentValue, object({ kind: literal("model") })]);
9023
+ var agentToolFields = {
9024
+ id: text,
9025
+ name: text,
9026
+ description: text,
9027
+ approval: boolean(),
9028
+ inputs: array(input.extend({ source: agentInput }))
9029
+ };
9030
+ var connectorAgentToolSchema = object({
9031
+ ...agentToolFields,
9032
+ kind: literal("connector").optional(),
9033
+ action: text,
9034
+ connectionId: actionConnection.optional()
9035
+ });
9036
+ var workflowAgentToolSchema = workflowCapabilitySchema.extend(agentToolFields);
8966
9037
  var decisionQuestion = discriminatedUnion("type", [
8967
9038
  strictObject({
8968
9039
  name: text,
@@ -9031,15 +9102,7 @@ var managedFields = object({
9031
9102
  model: text,
9032
9103
  prompt: text,
9033
9104
  maxRounds: number(),
9034
- tools: array(object({
9035
- id: text,
9036
- name: text,
9037
- description: text,
9038
- action: text,
9039
- connectionId: actionConnection.optional(),
9040
- approval: boolean(),
9041
- inputs: array(input.extend({ source: agentInput }))
9042
- })),
9105
+ tools: array(union([workflowAgentToolSchema, connectorAgentToolSchema])),
9043
9106
  notification: object({
9044
9107
  action: text,
9045
9108
  connectionId: actionConnection.optional(),
@@ -9052,7 +9115,8 @@ var managedFields = object({
9052
9115
  kind: literal("workflow"),
9053
9116
  flowId: text,
9054
9117
  revisionId: text
9055
- })
9118
+ }),
9119
+ httpRequestExecutorSchema
9056
9120
  ])
9057
9121
  });
9058
9122
  var managed = managedFields.transform(limitDecisionTask);
@@ -9265,10 +9329,26 @@ var node = union([
9265
9329
  })
9266
9330
  })
9267
9331
  ]);
9268
- strictObject(condition), strictObject(wait), strictObject(webhook), managedFields.shape.executor.options[0].omit({ kind: true }).strict(), managedFields.shape.executor.options[1].omit({ kind: true }).strict(), managedFields.shape.executor.options[2].omit({ kind: true }).strict(), managedFields.shape.executor.options[3].omit({ kind: true }).strict(), managedFields.shape.executor.options[4].omit({
9269
- kind: true,
9270
- notification: true
9271
- }).strict();
9332
+ /** Configuration schemas shared by the node authoring boundary. */
9333
+ var authoringDefinitionSchemas = {
9334
+ input,
9335
+ port,
9336
+ ports,
9337
+ condition: strictObject(condition),
9338
+ wait: strictObject(wait),
9339
+ waitAutoContinue: waitAutoContinueSchema,
9340
+ webhook: strictObject(webhook),
9341
+ schedule: triggerScheduleSchema,
9342
+ capabilities: array(capability),
9343
+ connector: managedFields.shape.executor.options[0].omit({ kind: true }).strict(),
9344
+ openapi: managedFields.shape.executor.options[1].omit({ kind: true }).strict(),
9345
+ decision: managedFields.shape.executor.options[2].omit({ kind: true }).strict(),
9346
+ llm: managedFields.shape.executor.options[3].omit({ kind: true }).strict(),
9347
+ agent: managedFields.shape.executor.options[4].omit({
9348
+ kind: true,
9349
+ notification: true
9350
+ }).strict()
9351
+ };
9272
9352
  var edge = object({
9273
9353
  source: text,
9274
9354
  target: text,
@@ -9304,7 +9384,8 @@ var revision = object({
9304
9384
  literal(7),
9305
9385
  literal(8),
9306
9386
  literal(9),
9307
- literal(10)
9387
+ literal(10),
9388
+ literal(11)
9308
9389
  ]),
9309
9390
  document,
9310
9391
  modules: record$1(text, module)
@@ -9335,7 +9416,7 @@ function decodeRevisionContent(value) {
9335
9416
  checkJsonDepth(value);
9336
9417
  const content = revision.parse(value);
9337
9418
  checkModelVersion(content);
9338
- assertOpenApiAuthBindings(content.document);
9419
+ assertHttpAuthBindings(content.document);
9339
9420
  return content;
9340
9421
  }
9341
9422
  var shapes = {
@@ -9529,6 +9610,8 @@ function changeOperationsSchema(kind) {
9529
9610
  return toJSONSchema(schema, { io: "input" });
9530
9611
  }
9531
9612
  function checkModelVersion(content) {
9613
+ if (content.modelVersion < 11 && Object.values(content.document.graph.nodes).some((candidateNode) => candidateNode.kind == "task" && "executor" in candidateNode.task && candidateNode.task.executor.kind == "http-request")) throw new TypeError("HTTP Request requires Flow model version 11.");
9614
+ if (content.modelVersion < 11 && Object.values(content.document.graph.nodes).some((candidateNode) => candidateNode.kind == "task" && ("moduleId" in candidateNode.task ? candidateNode.task.capabilities?.some((item) => item.kind == "workflow") : candidateNode.task.executor.kind == "agent" && candidateNode.task.executor.tools.some((item) => item.kind == "workflow")))) throw new TypeError("Workflow tools require Flow model version 11.");
9532
9615
  if (content.modelVersion < 10 && Object.values(content.document.graph.nodes).some((candidateNode) => candidateNode.kind == "webhook" && (candidateNode.options?.responseBody != null || candidateNode.options?.responseStatusCodeOutput != null || candidateNode.options?.responseHeadersSource != null || candidateNode.options?.responseHeaderOutputs != null))) throw new TypeError("Dynamic Webhook responses require Flow model version 10.");
9533
9616
  if (content.modelVersion < 9 && Object.values(content.document.graph.nodes).some((candidateNode) => "retry" in candidateNode && candidateNode.retry != null)) throw new TypeError("Node retries require Flow model version 9.");
9534
9617
  if (content.modelVersion < 9 && Object.values(content.document.graph.nodes).some((candidateNode) => {
@@ -9648,6 +9731,24 @@ function validVariableName(value) {
9648
9731
  function portsByHandle(ports) {
9649
9732
  return Object.fromEntries(ports.flatMap((port) => "handle" in port ? [[port.handle, port]] : []));
9650
9733
  }
9734
+ var workflowToolNamePattern = /^[A-Za-z][A-Za-z0-9_-]{0,63}$/;
9735
+ function workflowToolNameIssue(name, otherNames = []) {
9736
+ if (!workflowToolNamePattern.test(name)) return "invalid";
9737
+ for (const other of otherNames) if (other == name) return "duplicate";
9738
+ }
9739
+ function decodeTaskCapabilities(value) {
9740
+ if (!Array.isArray(value)) throw new TypeError("Task capabilities must be an array.");
9741
+ const parsed = authoringDefinitionSchemas.capabilities.parse(value);
9742
+ const connectors = decodeConnectorCapabilities(parsed.filter((item) => item.kind == "connector"));
9743
+ const names = /* @__PURE__ */ new Set();
9744
+ for (const item of parsed) {
9745
+ if (item.kind != "workflow") continue;
9746
+ if (workflowToolNameIssue(item.name, names)) throw new TypeError("Workflow tool names must be unique provider-compatible names.");
9747
+ names.add(item.name);
9748
+ }
9749
+ let connectorIndex = 0;
9750
+ return parsed.map((item) => item.kind == "connector" ? connectors[connectorIndex++] : item);
9751
+ }
9651
9752
  function decodeConnectorCapabilities(value) {
9652
9753
  if (!Array.isArray(value)) throw new TypeError("Connector capabilities must be an array.");
9653
9754
  if (value.length == 0) return [];
@@ -9780,10 +9881,10 @@ function upgradeRevisionContent(content) {
9780
9881
  function upgradeDecodedRevisionContent(content) {
9781
9882
  const graph = content.document.graph;
9782
9883
  const hasManual = Object.values(graph.nodes).some((node) => node.kind == "manual");
9783
- if (!hasManual && content.modelVersion == 10) return content;
9884
+ if (!hasManual && content.modelVersion == 11) return content;
9784
9885
  return {
9785
9886
  ...content,
9786
- modelVersion: 10,
9887
+ modelVersion: 11,
9787
9888
  document: {
9788
9889
  ...content.document,
9789
9890
  graph: hasManual ? {
@@ -9830,7 +9931,7 @@ function invalid(message) {
9830
9931
  throw new FlowChangeError(message);
9831
9932
  }
9832
9933
  function applyFlowChanges(content, operations) {
9833
- const source = content.modelVersion != 10 || Object.values(content.document.graph.nodes).some((node) => node.kind == "manual") ? decodeRevisionContent(content) : content;
9934
+ const source = content.modelVersion != 11 || Object.values(content.document.graph.nodes).some((node) => node.kind == "manual") ? decodeRevisionContent(content) : content;
9834
9935
  const document = { ...source.document };
9835
9936
  const modules = { ...source.modules };
9836
9937
  for (const operation of operations) switch (operation.kind) {
@@ -9944,7 +10045,7 @@ function applyFlowChanges(content, operations) {
9944
10045
  const graph = document.graph;
9945
10046
  if (!dequal(graph.nodes[operation.nodeId], operation.before)) invalid("The Node changed before this operation was applied.");
9946
10047
  if (operation.node.kind != operation.before.kind) invalid("Replacing a Node cannot change its kind.");
9947
- if (operation.node.kind == "task" && "moduleId" in operation.node.task && operation.node.task.capabilities !== void 0) decodeConnectorCapabilities(operation.node.task.capabilities);
10048
+ if (operation.node.kind == "task" && "moduleId" in operation.node.task && operation.node.task.capabilities !== void 0) decodeTaskCapabilities(operation.node.task.capabilities);
9948
10049
  const name = normalizeNodeName(operation.node.name ?? "");
9949
10050
  const issue = nodeNameIssue(graph, operation.nodeId, name);
9950
10051
  if (issue != null) invalid(`Node name is ${issue}.`);
@@ -9966,7 +10067,7 @@ function applyFlowChanges(content, operations) {
9966
10067
  if (graph.nodes[operation.nodeId] != null) invalid("A Node with this ID already exists in the target graph.");
9967
10068
  if (operation.node.kind == "error" && Object.values(graph.nodes).some((node) => node.kind == "error")) invalid("A graph can contain only one Flow Error node.");
9968
10069
  if ((operation.node.kind == "manual" || operation.node.kind == "start") && Object.values(graph.nodes).some((node) => node.kind == "manual" || node.kind == "start")) invalid("A graph can contain only one Start Trigger.");
9969
- if (operation.node.kind == "task" && "moduleId" in operation.node.task && operation.node.task.capabilities !== void 0) decodeConnectorCapabilities(operation.node.task.capabilities);
10070
+ if (operation.node.kind == "task" && "moduleId" in operation.node.task && operation.node.task.capabilities !== void 0) decodeTaskCapabilities(operation.node.task.capabilities);
9970
10071
  if (operation.node.name == null) invalid("A Node name cannot be empty.");
9971
10072
  if (operation.node.kind == "outputs" && Object.values(graph.nodes).some((node) => node.kind == "outputs")) invalid("A graph can contain only one Outputs node.");
9972
10073
  const name = normalizeNodeName(operation.node.name);
@@ -10065,7 +10166,7 @@ function applyFlowChanges(content, operations) {
10065
10166
  if (!dequal(node.task.capabilities, operation.before)) invalid("The inline Task capabilities changed before this operation was applied.");
10066
10167
  const task = { ...node.task };
10067
10168
  if (operation.value === void 0) delete task.capabilities;
10068
- else task.capabilities = decodeConnectorCapabilities(operation.value);
10169
+ else task.capabilities = decodeTaskCapabilities(operation.value);
10069
10170
  Object.assign(document, { graph: {
10070
10171
  ...graph,
10071
10172
  nodes: {
@@ -10275,12 +10376,12 @@ function applyFlowChanges(content, operations) {
10275
10376
  break;
10276
10377
  }
10277
10378
  }
10278
- assertOpenApiAuthBindings(document);
10379
+ assertHttpAuthBindings(document);
10279
10380
  return upgradeDecodedRevisionContent({
10280
10381
  document,
10281
- modelVersion: 10,
10382
+ modelVersion: 11,
10282
10383
  modules
10283
10384
  });
10284
10385
  }
10285
10386
  //#endregion
10286
- export { FlowChangeError, applyFlowChanges, changeOperationsSchema, currentFlowModelVersion, decodeChangeOperations, decodeConnectorCapabilities, fixedInputValue, inputValue, inputValues, isSchemaKeyword, isTriggerNode, nextNodeName, nodeErrorSchema, nodeNameIssue, nodeSystemOutputPorts, normalizeNodeName, portsByHandle, resourceNameIssue, resourceNameMaxLength, supportsNodeErrorHandling, supportsNodeRetry, upgradeManualTrigger, upgradeRevisionContent, validVariableName };
10387
+ export { FlowChangeError, applyFlowChanges, changeOperationsSchema, currentFlowModelVersion, decodeChangeOperations, decodeConnectorCapabilities, decodeTaskCapabilities, fixedInputValue, inputValue, inputValues, isSchemaKeyword, isTriggerNode, nextNodeName, nodeErrorSchema, nodeNameIssue, nodeSystemOutputPorts, normalizeNodeName, portsByHandle, resourceNameIssue, resourceNameMaxLength, supportsNodeErrorHandling, supportsNodeRetry, upgradeManualTrigger, upgradeRevisionContent, validVariableName, workflowToolNameIssue, workflowToolNamePattern };
@@ -1,4 +1,4 @@
1
- import type { FlowDocument, RevisionContent } from '../browser/flow-change.js';
1
+ import type { FlowDocument, RevisionContent } from './flow-change.js';
2
2
  export interface ConnectionUsage {
3
3
  readonly providerId: string;
4
4
  readonly connectionId?: string;
@@ -1,7 +1,7 @@
1
1
  import type { CodeModule, FlowDocument, Graph, Group, InputMapping, InputPort, JsonValue, ManagedTaskDefinition, Port, RevisionContent, TriggerNode } from '@oomol-lab/open-flow/flow-change';
2
2
  export * from './flow-workflowFile.js';
3
3
  export { maxJsonDepth } from './flow-json.js';
4
- export { decodeFlowDocument, decodeRevisionContent, upgradeWorkflowInterfaceDocument } from '../browser/flow-change-schema.js';
4
+ export { decodeFlowDocument, decodeRevisionContent, upgradeWorkflowInterfaceDocument } from './flow-change-schema.js';
5
5
  export { upgradeRevisionContent } from '@oomol-lab/open-flow/flow-change';
6
6
  export declare function canonicalJsonBytes(value: JsonValue): Uint8Array;
7
7
  export declare function digestBytes(bytes: Uint8Array): Promise<string>;
@@ -1,9 +1,9 @@
1
- //#region src/openapi/common/authBindings.ts
1
+ //#region src/http/common/authBindings.ts
2
2
  /** Never allow credentials to enter a Revision as literal node inputs. */
3
- function assertOpenApiAuthBindings(document) {
3
+ function assertHttpAuthBindings(document) {
4
4
  for (const node of Object.values(document.graph.nodes)) {
5
- if (node.kind != "task" || !("executor" in node.task) || node.task.executor.kind != "openapi") continue;
6
- for (const [handle, mapping] of Object.entries(node.inputs)) if (handle.startsWith("auth.") && mapping.kind == "value") throw new TypeError("OpenAPI authentication accepts deployment variables and upstream outputs only.");
5
+ if (node.kind != "task" || !("executor" in node.task) || !["openapi", "http-request"].includes(node.task.executor.kind)) continue;
6
+ for (const [handle, mapping] of Object.entries(node.inputs)) if (handle.startsWith("auth.") && mapping.kind == "value") throw new TypeError("HTTP authentication accepts deployment variables and upstream outputs only.");
7
7
  }
8
8
  }
9
9
  //#endregion
@@ -8551,6 +8551,52 @@ function answerSchema(question) {
8551
8551
  };
8552
8552
  }
8553
8553
  //#endregion
8554
+ //#region src/http/common/httpRequest.ts
8555
+ var parameterSchema = strictObject({
8556
+ mode: _enum(["fields", "object"]).default("fields"),
8557
+ names: array(string()).default([])
8558
+ });
8559
+ var httpRequestExecutorSchema = strictObject({
8560
+ method: _enum([
8561
+ "GET",
8562
+ "POST",
8563
+ "PUT",
8564
+ "PATCH",
8565
+ "DELETE",
8566
+ "HEAD",
8567
+ "OPTIONS"
8568
+ ]).default("GET"),
8569
+ query: parameterSchema.default({
8570
+ mode: "fields",
8571
+ names: []
8572
+ }),
8573
+ headers: parameterSchema.default({
8574
+ mode: "fields",
8575
+ names: []
8576
+ }),
8577
+ bodyFormat: _enum([
8578
+ "none",
8579
+ "json",
8580
+ "text",
8581
+ "form"
8582
+ ]).default("none"),
8583
+ authentication: union([
8584
+ strictObject({ type: literal("none") }),
8585
+ strictObject({ type: _enum(["bearer", "basic"]) }),
8586
+ strictObject({
8587
+ type: literal("apiKey"),
8588
+ name: string(),
8589
+ in: _enum(["header", "query"])
8590
+ })
8591
+ ]).default({ type: "none" }),
8592
+ responseFormat: _enum([
8593
+ "auto",
8594
+ "json",
8595
+ "text"
8596
+ ]).default("auto"),
8597
+ statusPolicy: _enum(["success", "all"]).default("success")
8598
+ }).extend({ kind: literal("http-request") });
8599
+ //#endregion
8554
8600
  //#region src/flow/common/json.ts
8555
8601
  var maxJsonDepth = 64;
8556
8602
  function checkJsonDepth(value, depth = 0) {
@@ -8678,7 +8724,7 @@ var ports = {
8678
8724
  inputs: array(union([input, group])),
8679
8725
  outputs: array(union([port, group]))
8680
8726
  };
8681
- var capability = union([
8727
+ var connectorCapabilitySchema = union([
8682
8728
  strictObject({
8683
8729
  kind: literal("connector"),
8684
8730
  action: text,
@@ -8710,6 +8756,15 @@ var capability = union([
8710
8756
  })).optional()
8711
8757
  })
8712
8758
  ]);
8759
+ var workflowCapabilitySchema = strictObject({
8760
+ kind: literal("workflow"),
8761
+ name: text,
8762
+ flowId: text,
8763
+ revisionId: text,
8764
+ inputs: array(port),
8765
+ outputs: array(port).nullable()
8766
+ });
8767
+ var capability = union([connectorCapabilitySchema, workflowCapabilitySchema]);
8713
8768
  var inline = object({
8714
8769
  ...ports,
8715
8770
  name: text,
@@ -8724,6 +8779,20 @@ var agentValue = union([object({
8724
8779
  input: text
8725
8780
  })]);
8726
8781
  var agentInput = union([agentValue, object({ kind: literal("model") })]);
8782
+ var agentToolFields = {
8783
+ id: text,
8784
+ name: text,
8785
+ description: text,
8786
+ approval: boolean(),
8787
+ inputs: array(input.extend({ source: agentInput }))
8788
+ };
8789
+ var connectorAgentToolSchema = object({
8790
+ ...agentToolFields,
8791
+ kind: literal("connector").optional(),
8792
+ action: text,
8793
+ connectionId: actionConnection.optional()
8794
+ });
8795
+ var workflowAgentToolSchema = workflowCapabilitySchema.extend(agentToolFields);
8727
8796
  var decisionQuestion = discriminatedUnion("type", [
8728
8797
  strictObject({
8729
8798
  name: text,
@@ -8792,15 +8861,7 @@ var managedFields = object({
8792
8861
  model: text,
8793
8862
  prompt: text,
8794
8863
  maxRounds: number(),
8795
- tools: array(object({
8796
- id: text,
8797
- name: text,
8798
- description: text,
8799
- action: text,
8800
- connectionId: actionConnection.optional(),
8801
- approval: boolean(),
8802
- inputs: array(input.extend({ source: agentInput }))
8803
- })),
8864
+ tools: array(union([workflowAgentToolSchema, connectorAgentToolSchema])),
8804
8865
  notification: object({
8805
8866
  action: text,
8806
8867
  connectionId: actionConnection.optional(),
@@ -8813,7 +8874,8 @@ var managedFields = object({
8813
8874
  kind: literal("workflow"),
8814
8875
  flowId: text,
8815
8876
  revisionId: text
8816
- })
8877
+ }),
8878
+ httpRequestExecutorSchema
8817
8879
  ])
8818
8880
  });
8819
8881
  var managed = managedFields.transform(limitDecisionTask);
@@ -9065,7 +9127,8 @@ var revision = object({
9065
9127
  literal(7),
9066
9128
  literal(8),
9067
9129
  literal(9),
9068
- literal(10)
9130
+ literal(10),
9131
+ literal(11)
9069
9132
  ]),
9070
9133
  document,
9071
9134
  modules: record$1(text, module)
@@ -9320,14 +9383,14 @@ function repairRevisionEnvelope(value) {
9320
9383
  checkJsonDepth(value);
9321
9384
  const envelopeSource = record(value);
9322
9385
  if (envelopeSource.kind != "open-flow-flow-revision" || envelopeSource.version != 1) throw new TypeError("The value is not an Open Flow Revision envelope.");
9323
- if (typeof envelopeSource.modelVersion == "number" && envelopeSource.modelVersion > 10) throw new TypeError("The Flow model is newer than this package.");
9386
+ if (typeof envelopeSource.modelVersion == "number" && envelopeSource.modelVersion > 11) throw new TypeError("The Flow model is newer than this package.");
9324
9387
  let sourceDocument = record(envelopeSource.modelVersion == 1 || envelopeSource.modelVersion == 2 ? upgradeLegacyDocument(envelopeSource.document) : envelopeSource.document);
9325
9388
  if (typeof envelopeSource.modelVersion == "number" && envelopeSource.modelVersion < 6) sourceDocument = upgradeTaskNodes(sourceDocument);
9326
9389
  sourceDocument = record(normalizeDocument(sourceDocument));
9327
9390
  const bindings = record(sourceDocument.bindings);
9328
9391
  const sourceGraph = repairGraph(sourceDocument.graph, bindings);
9329
9392
  return decodeRevisionContent({
9330
- modelVersion: 10,
9393
+ modelVersion: 11,
9331
9394
  document: {
9332
9395
  bindings: repairedEntries(sourceDocument.bindings, binding),
9333
9396
  graph: sourceGraph
@@ -9343,7 +9406,7 @@ function decodeRevisionContent(value) {
9343
9406
  checkJsonDepth(value);
9344
9407
  const content = revision.parse(value);
9345
9408
  checkModelVersion(content);
9346
- assertOpenApiAuthBindings(content.document);
9409
+ assertHttpAuthBindings(content.document);
9347
9410
  return content;
9348
9411
  }
9349
9412
  function decodeRevisionEnvelope(value) {
@@ -9355,7 +9418,7 @@ function decodeRevisionEnvelope(value) {
9355
9418
  } : value;
9356
9419
  const content = envelope$1.parse(candidate);
9357
9420
  checkModelVersion(content);
9358
- assertOpenApiAuthBindings(content.document);
9421
+ assertHttpAuthBindings(content.document);
9359
9422
  return {
9360
9423
  modelVersion: content.modelVersion,
9361
9424
  document: content.document,
@@ -9529,6 +9592,8 @@ array(union([...new Map(Object.entries(shapes).map(([kind, shape]) => [kind, sha
9529
9592
  ...shape
9530
9593
  })])).values()])).min(1);
9531
9594
  function checkModelVersion(content) {
9595
+ if (content.modelVersion < 11 && Object.values(content.document.graph.nodes).some((candidateNode) => candidateNode.kind == "task" && "executor" in candidateNode.task && candidateNode.task.executor.kind == "http-request")) throw new TypeError("HTTP Request requires Flow model version 11.");
9596
+ if (content.modelVersion < 11 && Object.values(content.document.graph.nodes).some((candidateNode) => candidateNode.kind == "task" && ("moduleId" in candidateNode.task ? candidateNode.task.capabilities?.some((item) => item.kind == "workflow") : candidateNode.task.executor.kind == "agent" && candidateNode.task.executor.tools.some((item) => item.kind == "workflow")))) throw new TypeError("Workflow tools require Flow model version 11.");
9532
9597
  if (content.modelVersion < 10 && Object.values(content.document.graph.nodes).some((candidateNode) => candidateNode.kind == "webhook" && (candidateNode.options?.responseBody != null || candidateNode.options?.responseStatusCodeOutput != null || candidateNode.options?.responseHeadersSource != null || candidateNode.options?.responseHeaderOutputs != null))) throw new TypeError("Dynamic Webhook responses require Flow model version 10.");
9533
9598
  if (content.modelVersion < 9 && Object.values(content.document.graph.nodes).some((candidateNode) => "retry" in candidateNode && candidateNode.retry != null)) throw new TypeError("Node retries require Flow model version 9.");
9534
9599
  if (content.modelVersion < 9 && Object.values(content.document.graph.nodes).some((candidateNode) => {
@@ -9584,10 +9649,10 @@ function upgradeRevisionContent(content) {
9584
9649
  function upgradeDecodedRevisionContent(content) {
9585
9650
  const graph = content.document.graph;
9586
9651
  const hasManual = Object.values(graph.nodes).some((node) => node.kind == "manual");
9587
- if (!hasManual && content.modelVersion == 10) return content;
9652
+ if (!hasManual && content.modelVersion == 11) return content;
9588
9653
  return {
9589
9654
  ...content,
9590
- modelVersion: 10,
9655
+ modelVersion: 11,
9591
9656
  document: {
9592
9657
  ...content.document,
9593
9658
  graph: hasManual ? {
@@ -9663,6 +9728,7 @@ function clearNodeConnections(graph, connectionId) {
9663
9728
  return [id, node];
9664
9729
  }
9665
9730
  const capabilities = node.task.capabilities?.map((capability) => {
9731
+ if (capability.kind == "workflow") return capability;
9666
9732
  if (!("mode" in capability)) {
9667
9733
  if ("action" in capability) {
9668
9734
  const { connectionId: selected, ...rest } = capability;
@@ -10158,7 +10224,7 @@ function revisionRepairKind(bytes) {
10158
10224
  return;
10159
10225
  }
10160
10226
  const source = value;
10161
- return typeof source.modelVersion == "number" && source.modelVersion < 10 ? "upgrade" : "repair";
10227
+ return typeof source.modelVersion == "number" && source.modelVersion < 11 ? "upgrade" : "repair";
10162
10228
  }
10163
10229
  function repairRevision(bytes) {
10164
10230
  return repairRevisionEnvelope(revisionValue(bytes));
@@ -1,4 +1,4 @@
1
- import type { GraphNode, PortDefinition } from '../browser/flow-change.js';
1
+ import type { GraphNode, PortDefinition } from './flow-change.js';
2
2
  export type NodeErrorData = {
3
3
  readonly code: string;
4
4
  readonly message: string;