flujo-ai 3.26.0 → 3.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (706) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +470 -306
  3. package/.next/app-path-routes-manifest.json +28 -8
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +24 -0
  6. package/.next/react-loadable-manifest.json +31 -18
  7. package/.next/routes-manifest.json +29 -0
  8. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/_not-found.html +1 -1
  10. package/.next/server/app/_not-found.rsc +2 -2
  11. package/.next/server/app/api/approvals/[id]/route.js +1 -1
  12. package/.next/server/app/api/approvals/[id]/route.js.nft.json +1 -1
  13. package/.next/server/app/api/approvals/[id]/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/approvals/route.js +2 -2
  15. package/.next/server/app/api/approvals/route.js.nft.json +1 -1
  16. package/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/backup/route.js +1 -1
  18. package/.next/server/app/api/backup/route.js.nft.json +1 -1
  19. package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/bugs/enhance/route.js +3 -3
  22. package/.next/server/app/api/bugs/enhance/route.js.nft.json +1 -1
  23. package/.next/server/app/api/bugs/enhance/route_client-reference-manifest.js +1 -1
  24. package/.next/server/app/api/cwd/route.js +1 -1
  25. package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/encryption/secure/route.js +1 -1
  27. package/.next/server/app/api/encryption/secure/route.js.nft.json +1 -1
  28. package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/env/route.js +2 -2
  30. package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/flow/[id]/route.js +1 -1
  32. package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -1
  33. package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/flow/[id]/versions/[versionId]/route.js +1 -0
  35. package/.next/server/app/api/flow/[id]/versions/[versionId]/route.js.nft.json +1 -0
  36. package/.next/server/app/api/flow/[id]/versions/[versionId]/route_client-reference-manifest.js +1 -0
  37. package/.next/server/app/api/flow/[id]/versions/route.js +1 -0
  38. package/.next/server/app/api/flow/[id]/versions/route.js.nft.json +1 -0
  39. package/.next/server/app/api/flow/[id]/versions/route_client-reference-manifest.js +1 -0
  40. package/.next/server/app/api/flow/compile/route.js +1 -1
  41. package/.next/server/app/api/flow/compile/route.js.nft.json +1 -1
  42. package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/flow/generate/route.js +1 -1
  44. package/.next/server/app/api/flow/generate/route.js.nft.json +1 -1
  45. package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/flow/improve/route.js +1 -1
  47. package/.next/server/app/api/flow/improve/route.js.nft.json +1 -1
  48. package/.next/server/app/api/flow/improve/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/flow/prompt-renderer/route.js +2 -2
  50. package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
  51. package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/flow/quick-chat/route.js +1 -1
  53. package/.next/server/app/api/flow/quick-chat/route.js.nft.json +1 -1
  54. package/.next/server/app/api/flow/quick-chat/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/flow/repair/route.js +1 -1
  56. package/.next/server/app/api/flow/repair/route.js.nft.json +1 -1
  57. package/.next/server/app/api/flow/repair/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/flow/route.js +1 -1
  59. package/.next/server/app/api/flow/route.js.nft.json +1 -1
  60. package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/git/route.js +2 -2
  62. package/.next/server/app/api/git/route.js.nft.json +1 -1
  63. package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/init/route.js +1 -1
  65. package/.next/server/app/api/init/route.js.nft.json +1 -1
  66. package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/local-models/capability/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/local-models/pull/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/local-models/suggest/route_client-reference-manifest.js +1 -1
  70. package/.next/server/app/api/mcp/app-sandbox/route.js +1 -0
  71. package/.next/server/app/api/mcp/app-sandbox/route.js.nft.json +1 -0
  72. package/.next/server/app/api/mcp/app-sandbox/route_client-reference-manifest.js +1 -0
  73. package/.next/server/app/api/mcp/cancel/route.js +2 -2
  74. package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -1
  75. package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/mcp/oauth-capability/route.js +1 -0
  77. package/.next/server/app/api/mcp/oauth-capability/route.js.nft.json +1 -0
  78. package/.next/server/app/api/mcp/oauth-capability/route_client-reference-manifest.js +1 -0
  79. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js +1 -1
  80. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -1
  81. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js +1 -1
  83. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -1
  84. package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js +1 -1
  86. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -1
  87. package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/mcp/servers/[name]/resources/route.js +1 -1
  89. package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -1
  90. package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/mcp/servers/[name]/route.js +1 -1
  92. package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -1
  93. package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/mcp/servers/[name]/status/route.js +1 -1
  95. package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -1
  96. package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js +1 -1
  98. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -1
  99. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/mcp/servers/[name]/tools/route.js +1 -1
  101. package/.next/server/app/api/mcp/servers/[name]/tools/route.js.nft.json +1 -1
  102. package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/mcp/servers/route.js +1 -1
  104. package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
  105. package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/mcp/test-connection/route.js +1 -1
  107. package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -1
  108. package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/mcp/test-connection/stream/route.js +1 -1
  110. package/.next/server/app/api/mcp/test-connection/stream/route.js.nft.json +1 -1
  111. package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/mcp-registry/route.js +2 -2
  113. package/.next/server/app/api/mcp-registry/route.js.nft.json +1 -1
  114. package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/mcp-registry/spotlight/route.js +1 -1
  116. package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/model/[id]/route.js +1 -1
  118. package/.next/server/app/api/model/[id]/route.js.nft.json +1 -1
  119. package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/model/provider/route.js +2 -2
  121. package/.next/server/app/api/model/provider/route.js.nft.json +1 -1
  122. package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/model/route.js +1 -1
  124. package/.next/server/app/api/model/route.js.nft.json +1 -1
  125. package/.next/server/app/api/model/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/model/test/route.js +2 -2
  127. package/.next/server/app/api/model/test/route.js.nft.json +1 -1
  128. package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/oauth/callback/route.js +2 -2
  130. package/.next/server/app/api/oauth/callback/route.js.nft.json +1 -1
  131. package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/oauth/initiate/route.js +2 -2
  133. package/.next/server/app/api/oauth/initiate/route.js.nft.json +1 -1
  134. package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/oauth/reset/route.js +2 -2
  136. package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -1
  137. package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/packages/build/route.js +1 -0
  139. package/.next/server/app/api/packages/build/route.js.nft.json +1 -0
  140. package/.next/server/app/api/packages/build/route_client-reference-manifest.js +1 -0
  141. package/.next/server/app/api/packages/derive-secrets/route.js +1 -0
  142. package/.next/server/app/api/packages/derive-secrets/route.js.nft.json +1 -0
  143. package/.next/server/app/api/packages/derive-secrets/route_client-reference-manifest.js +1 -0
  144. package/.next/server/app/api/packages/install/route.js +1 -0
  145. package/.next/server/app/api/packages/install/route.js.nft.json +1 -0
  146. package/.next/server/app/api/packages/install/route_client-reference-manifest.js +1 -0
  147. package/.next/server/app/api/packages/install/status/route.js +1 -0
  148. package/.next/server/app/api/packages/install/status/route.js.nft.json +1 -0
  149. package/.next/server/app/api/packages/install/status/route_client-reference-manifest.js +1 -0
  150. package/.next/server/app/api/packages/installed/route.js +1 -0
  151. package/.next/server/app/api/packages/installed/route.js.nft.json +1 -0
  152. package/.next/server/app/api/packages/installed/route_client-reference-manifest.js +1 -0
  153. package/.next/server/app/api/packages/resolve/route.js +1 -0
  154. package/.next/server/app/api/packages/resolve/route.js.nft.json +1 -0
  155. package/.next/server/app/api/packages/resolve/route_client-reference-manifest.js +1 -0
  156. package/.next/server/app/api/packages/uninstall/route.js +1 -0
  157. package/.next/server/app/api/packages/uninstall/route.js.nft.json +1 -0
  158. package/.next/server/app/api/packages/uninstall/route_client-reference-manifest.js +1 -0
  159. package/.next/server/app/api/planned-executions/[id]/route.js +2 -2
  160. package/.next/server/app/api/planned-executions/[id]/route.js.nft.json +1 -1
  161. package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/planned-executions/[id]/run/route.js +2 -2
  163. package/.next/server/app/api/planned-executions/[id]/run/route.js.nft.json +1 -1
  164. package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/api/planned-executions/[id]/runs/route.js +2 -2
  166. package/.next/server/app/api/planned-executions/[id]/runs/route.js.nft.json +1 -1
  167. package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/api/planned-executions/reconcile/route.js +1 -1
  170. package/.next/server/app/api/planned-executions/reconcile/route.js.nft.json +1 -1
  171. package/.next/server/app/api/planned-executions/reconcile/route_client-reference-manifest.js +1 -1
  172. package/.next/server/app/api/planned-executions/route.js +1 -1
  173. package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
  174. package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
  175. package/.next/server/app/api/registry/auth/resend/route.js +1 -0
  176. package/.next/server/app/api/registry/auth/resend/route.js.nft.json +1 -0
  177. package/.next/server/app/api/registry/auth/resend/route_client-reference-manifest.js +1 -0
  178. package/.next/server/app/api/registry/auth/reset/route.js +1 -0
  179. package/.next/server/app/api/registry/auth/reset/route.js.nft.json +1 -0
  180. package/.next/server/app/api/registry/auth/reset/route_client-reference-manifest.js +1 -0
  181. package/.next/server/app/api/registry/auth/route.js +1 -0
  182. package/.next/server/app/api/registry/auth/route.js.nft.json +1 -0
  183. package/.next/server/app/api/registry/auth/route_client-reference-manifest.js +1 -0
  184. package/.next/server/app/api/registry/oauth/callback/route.js +1 -0
  185. package/.next/server/app/api/registry/oauth/callback/route.js.nft.json +1 -0
  186. package/.next/server/app/api/registry/oauth/callback/route_client-reference-manifest.js +1 -0
  187. package/.next/server/app/api/registry/oauth/initiate/route.js +1 -0
  188. package/.next/server/app/api/registry/oauth/initiate/route.js.nft.json +1 -0
  189. package/.next/server/app/api/registry/oauth/initiate/route_client-reference-manifest.js +1 -0
  190. package/.next/server/app/api/registry/publish/route.js +1 -0
  191. package/.next/server/app/api/registry/publish/route.js.nft.json +1 -0
  192. package/.next/server/app/api/registry/publish/route_client-reference-manifest.js +1 -0
  193. package/.next/server/app/api/registry/settings/route.js +1 -0
  194. package/.next/server/app/api/registry/settings/route.js.nft.json +1 -0
  195. package/.next/server/app/api/registry/settings/route_client-reference-manifest.js +1 -0
  196. package/.next/server/app/api/restore/route.js +1 -1
  197. package/.next/server/app/api/restore/route.js.nft.json +1 -1
  198. package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
  199. package/.next/server/app/api/runs/active/route.js +2 -2
  200. package/.next/server/app/api/runs/active/route.js.nft.json +1 -1
  201. package/.next/server/app/api/runs/active/route_client-reference-manifest.js +1 -1
  202. package/.next/server/app/api/storage/route.js +1 -1
  203. package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/api/update/route.js +1 -1
  205. package/.next/server/app/api/update/route.js.nft.json +1 -1
  206. package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  207. package/.next/server/app/api/waves/route.js +1 -1
  208. package/.next/server/app/api/waves/route.js.nft.json +1 -1
  209. package/.next/server/app/api/waves/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/api/webhooks/[id]/route.js +1 -1
  211. package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
  212. package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
  213. package/.next/server/app/chat/page.js +9 -10
  214. package/.next/server/app/chat/page.js.nft.json +1 -1
  215. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  216. package/.next/server/app/chat.html +1 -1
  217. package/.next/server/app/chat.rsc +3 -3
  218. package/.next/server/app/docs/page.js +7 -6
  219. package/.next/server/app/docs/page.js.nft.json +1 -1
  220. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  221. package/.next/server/app/docs.html +1 -1
  222. package/.next/server/app/docs.rsc +3 -3
  223. package/.next/server/app/executions/page.js +39 -3
  224. package/.next/server/app/executions/page.js.nft.json +1 -1
  225. package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
  226. package/.next/server/app/executions.html +1 -1
  227. package/.next/server/app/executions.rsc +3 -3
  228. package/.next/server/app/flows/page.js +3 -3
  229. package/.next/server/app/flows/page.js.nft.json +1 -1
  230. package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
  231. package/.next/server/app/flows.html +1 -1
  232. package/.next/server/app/flows.rsc +4 -4
  233. package/.next/server/app/index.html +1 -1
  234. package/.next/server/app/index.rsc +3 -3
  235. package/.next/server/app/mcp/page.js +14 -14
  236. package/.next/server/app/mcp/page.js.nft.json +1 -1
  237. package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
  238. package/.next/server/app/mcp-flows/route.js +1 -1
  239. package/.next/server/app/mcp-flows/route.js.nft.json +1 -1
  240. package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
  241. package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
  242. package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -1
  243. package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
  244. package/.next/server/app/mcp.html +1 -1
  245. package/.next/server/app/mcp.rsc +3 -3
  246. package/.next/server/app/models/page.js +2 -2
  247. package/.next/server/app/models/page.js.nft.json +1 -1
  248. package/.next/server/app/models/page_client-reference-manifest.js +1 -1
  249. package/.next/server/app/packages/page.js +2 -0
  250. package/.next/server/app/packages/page.js.nft.json +1 -0
  251. package/.next/server/app/packages/page_client-reference-manifest.js +1 -0
  252. package/.next/server/app/packages.html +1 -0
  253. package/.next/server/app/packages.meta +7 -0
  254. package/.next/server/app/packages.rsc +22 -0
  255. package/.next/server/app/page.js +1 -1
  256. package/.next/server/app/page.js.nft.json +1 -1
  257. package/.next/server/app/page_client-reference-manifest.js +1 -1
  258. package/.next/server/app/settings/page.js +2 -2
  259. package/.next/server/app/settings/page.js.nft.json +1 -1
  260. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  261. package/.next/server/app/settings.html +1 -1
  262. package/.next/server/app/settings.rsc +3 -3
  263. package/.next/server/app/v1/chat/completions/route.js +1 -1
  264. package/.next/server/app/v1/chat/completions/route.js.nft.json +1 -1
  265. package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
  266. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +2 -2
  267. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -1
  268. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
  269. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +2 -2
  270. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -1
  271. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
  272. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -1
  273. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -1
  274. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
  275. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -1
  276. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -1
  277. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
  278. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +2 -2
  279. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -1
  280. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
  281. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +3 -3
  282. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -1
  283. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
  284. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route.js +1 -1
  285. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route_client-reference-manifest.js +1 -1
  286. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
  287. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
  288. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
  289. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +2 -2
  290. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -1
  291. package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  292. package/.next/server/app/v1/chat/conversations/route.js +2 -2
  293. package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
  294. package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
  295. package/.next/server/app/v1/chat/events/route.js +11 -0
  296. package/.next/server/app/v1/chat/events/route.js.nft.json +1 -0
  297. package/.next/server/app/v1/chat/events/route_client-reference-manifest.js +1 -0
  298. package/.next/server/app/v1/models/route.js +2 -2
  299. package/.next/server/app/v1/models/route.js.nft.json +1 -1
  300. package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -1
  301. package/.next/server/app/waves/page.js +4 -4
  302. package/.next/server/app/waves/page.js.nft.json +1 -1
  303. package/.next/server/app/waves/page_client-reference-manifest.js +1 -1
  304. package/.next/server/app/waves.html +1 -1
  305. package/.next/server/app/waves.rsc +3 -3
  306. package/.next/server/app-paths-manifest.json +28 -8
  307. package/.next/server/chunks/1083.js +1 -1
  308. package/.next/server/chunks/1114.js +1 -1
  309. package/.next/server/chunks/1197.js +1 -1
  310. package/.next/server/chunks/1226.js +1 -1
  311. package/.next/server/chunks/1314.js +1 -0
  312. package/.next/server/chunks/1604.js +70 -0
  313. package/.next/server/chunks/1615.js +1 -0
  314. package/.next/server/chunks/1659.js +1 -1
  315. package/.next/server/chunks/166.js +5 -5
  316. package/.next/server/chunks/1805.js +1 -0
  317. package/.next/server/chunks/1819.js +2 -0
  318. package/.next/server/chunks/1925.js +1 -0
  319. package/.next/server/chunks/2388.js +1 -0
  320. package/.next/server/chunks/2434.js +2 -0
  321. package/.next/server/chunks/2666.js +1 -0
  322. package/.next/server/chunks/2859.js +1 -1
  323. package/.next/server/chunks/2940.js +46 -0
  324. package/.next/server/chunks/2985.js +1 -0
  325. package/.next/server/chunks/3128.js +62 -0
  326. package/.next/server/chunks/3273.js +1 -0
  327. package/.next/server/chunks/3298.js +1 -1
  328. package/.next/server/chunks/{8445.js → 3392.js} +2 -2
  329. package/.next/server/chunks/346.js +1 -0
  330. package/.next/server/chunks/3570.js +249 -0
  331. package/.next/server/chunks/3629.js +1 -0
  332. package/.next/server/chunks/38.js +2 -2
  333. package/.next/server/chunks/3951.js +151 -0
  334. package/.next/server/chunks/4042.js +1 -0
  335. package/.next/server/chunks/4265.js +1 -1
  336. package/.next/server/chunks/4306.js +1 -0
  337. package/.next/server/chunks/4322.js +1 -0
  338. package/.next/server/chunks/4426.js +6 -0
  339. package/.next/server/chunks/{6745.js → 4661.js} +1 -1
  340. package/.next/server/chunks/4671.js +1 -1
  341. package/.next/server/chunks/4681.js +1 -0
  342. package/.next/server/chunks/4765.js +1 -0
  343. package/.next/server/chunks/4771.js +2 -2
  344. package/.next/server/chunks/5067.js +1 -0
  345. package/.next/server/chunks/5096.js +1 -0
  346. package/.next/server/chunks/510.js +1 -0
  347. package/.next/server/chunks/5148.js +1 -1
  348. package/.next/server/chunks/{4578.js → 5150.js} +1 -1
  349. package/.next/server/chunks/5200.js +1 -0
  350. package/.next/server/chunks/5463.js +1 -1
  351. package/.next/server/chunks/5471.js +1 -0
  352. package/.next/server/chunks/5544.js +5 -5
  353. package/.next/server/chunks/5708.js +6 -5
  354. package/.next/server/chunks/5880.js +1 -0
  355. package/.next/server/chunks/5958.js +2 -0
  356. package/.next/server/chunks/6005.js +1 -0
  357. package/.next/server/chunks/6126.js +53 -0
  358. package/.next/server/chunks/6529.js +5 -0
  359. package/.next/server/chunks/6537.js +1 -1
  360. package/.next/server/chunks/6826.js +1 -1
  361. package/.next/server/chunks/6849.js +66 -0
  362. package/.next/server/chunks/688.js +3 -0
  363. package/.next/server/chunks/701.js +1 -1
  364. package/.next/server/chunks/7032.js +1 -1
  365. package/.next/server/chunks/7214.js +4 -4
  366. package/.next/server/chunks/724.js +1 -1
  367. package/.next/server/chunks/7463.js +4 -4
  368. package/.next/server/chunks/7506.js +1 -1
  369. package/.next/server/chunks/7538.js +21 -0
  370. package/.next/server/chunks/7579.js +8 -7
  371. package/.next/server/chunks/{3030.js → 7674.js} +1 -1
  372. package/.next/server/chunks/7821.js +1 -1
  373. package/.next/server/chunks/793.js +393 -0
  374. package/.next/server/chunks/8037.js +1 -0
  375. package/.next/server/chunks/8165.js +3 -0
  376. package/.next/server/chunks/8339.js +1 -0
  377. package/.next/server/chunks/8387.js +1 -1
  378. package/.next/server/chunks/8522.js +2 -0
  379. package/.next/server/chunks/8568.js +12 -0
  380. package/.next/server/chunks/8667.js +1 -0
  381. package/.next/server/chunks/869.js +2 -0
  382. package/.next/server/chunks/{3489.js → 8730.js} +1 -1
  383. package/.next/server/chunks/8739.js +2 -2
  384. package/.next/server/chunks/8745.js +1 -1
  385. package/.next/server/chunks/8979.js +37 -0
  386. package/.next/server/chunks/8994.js +1 -1
  387. package/.next/server/chunks/9165.js +1 -1
  388. package/.next/server/chunks/9285.js +1 -1
  389. package/.next/server/chunks/94.js +1 -1
  390. package/.next/server/chunks/9400.js +2 -0
  391. package/.next/server/chunks/{4456.js → 9472.js} +2 -2
  392. package/.next/server/chunks/9583.js +1 -0
  393. package/.next/server/chunks/9671.js +1 -0
  394. package/.next/server/chunks/9724.js +393 -0
  395. package/.next/server/chunks/991.js +2 -0
  396. package/.next/server/functions-config-manifest.json +1 -0
  397. package/.next/server/instrumentation.js +1 -1
  398. package/.next/server/instrumentation.js.nft.json +1 -1
  399. package/.next/server/middleware-build-manifest.js +1 -1
  400. package/.next/server/middleware-manifest.json +1 -1
  401. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  402. package/.next/server/pages/404.html +1 -1
  403. package/.next/server/pages/500.html +1 -1
  404. package/.next/server/server-reference-manifest.js +1 -1
  405. package/.next/server/server-reference-manifest.json +1 -1
  406. package/.next/server/src/middleware.js +1 -1
  407. package/.next/server/src/middleware.js.map +1 -1
  408. package/.next/static/Q6ITx_bZyoEOnKdZu_C7j/_buildManifest.js +1 -0
  409. package/.next/static/chunks/1594-309fa6363f215d76.js +1 -0
  410. package/.next/static/chunks/1809-e56cf3c476261e34.js +1 -0
  411. package/.next/static/chunks/1937-6bbdcdc660db562c.js +1 -0
  412. package/.next/static/chunks/1988-1b651d581fc44a36.js +1 -0
  413. package/.next/static/chunks/{2003-7710c23acaef11c9.js → 2003-f826c607d609d1fa.js} +1 -1
  414. package/.next/static/chunks/2164-7d6451e88a447de7.js +1 -0
  415. package/.next/static/chunks/218-6cbe09820faa3272.js +1 -0
  416. package/.next/static/chunks/2566-60acd5838abd9f3f.js +1 -0
  417. package/.next/static/chunks/{2403-5c26e0abd76095b1.js → 2800-4fa29a3eeb693593.js} +1 -1
  418. package/.next/static/chunks/289-98f50bfcf833d661.js +1 -0
  419. package/.next/static/chunks/3089.9e15df4ffd0fe4e8.js +1 -0
  420. package/.next/static/chunks/{3217.f728df99ab5da33c.js → 3217.260785c2198d1e9d.js} +1 -1
  421. package/.next/static/chunks/3392-6dd9ad3be66a7ce9.js +1 -0
  422. package/.next/static/chunks/3418-a2f5d0c4f29ee2fb.js +1 -0
  423. package/.next/static/chunks/{3556-3b6f7c99b015b752.js → 3556-b9855146c7506696.js} +1 -1
  424. package/.next/static/chunks/3827-9e9a6e11ef808d90.js +1 -0
  425. package/.next/static/chunks/3910.5c6885d7a5bd753e.js +1 -0
  426. package/.next/static/chunks/3948-1cb8fc7a64805254.js +1 -0
  427. package/.next/static/chunks/3958-5641a828b320f2fe.js +100 -0
  428. package/.next/static/chunks/{488-623d07c3fbc21e28.js → 488-7ab54d8ae2b4b550.js} +1 -1
  429. package/.next/static/chunks/5328-4e556503b70e72b4.js +1 -0
  430. package/.next/static/chunks/{5512.d01d565f73109a1a.js → 5512.682bef7fd3a7c286.js} +1 -1
  431. package/.next/static/chunks/6195-8c4c57628e9013d5.js +1 -0
  432. package/.next/static/chunks/6669-a949326b30ea1d39.js +1 -0
  433. package/.next/static/chunks/6777-4b0d05731a089de4.js +1 -0
  434. package/.next/static/chunks/6947-0ff3545efb53e959.js +1 -0
  435. package/.next/static/chunks/7111-44538f8a64241b74.js +1 -0
  436. package/.next/static/chunks/7304-e7cd725083617b81.js +8 -0
  437. package/.next/static/chunks/7445-2802e158c9093556.js +1 -0
  438. package/.next/static/chunks/795-704a0e742ecc2ef6.js +1 -0
  439. package/.next/static/chunks/812-3ceea0da38ad2891.js +1 -0
  440. package/.next/static/chunks/{8345.fbc0af16acce7256.js → 8345.bc5534ec13abc9ee.js} +1 -1
  441. package/.next/static/chunks/8401-0f39d91810180a88.js +1 -0
  442. package/.next/static/chunks/{8405.e728bc83a7c9fed6.js → 8405.73e8be2c8e5b55c5.js} +1 -1
  443. package/.next/static/chunks/8551-a28272acfda62ac9.js +1 -0
  444. package/.next/static/chunks/8855-02889c9ab4bf0bcf.js +1 -0
  445. package/.next/static/chunks/{8989-401559d9f3bc80a0.js → 8989-5fa9c7c670eb9a1a.js} +1 -1
  446. package/.next/static/chunks/{9164-829ab5b085ec06d6.js → 9164-840f056a0e11d979.js} +1 -1
  447. package/.next/static/chunks/9562-ef0ddd4e6b9023cf.js +1 -0
  448. package/.next/static/chunks/app/api/approvals/[id]/route-c745e5b53b81491a.js +1 -0
  449. package/.next/static/chunks/app/api/approvals/route-c745e5b53b81491a.js +1 -0
  450. package/.next/static/chunks/app/api/backup/route-c745e5b53b81491a.js +1 -0
  451. package/.next/static/chunks/app/api/browse/route-c745e5b53b81491a.js +1 -0
  452. package/.next/static/chunks/app/api/bugs/enhance/route-c745e5b53b81491a.js +1 -0
  453. package/.next/static/chunks/app/api/cwd/route-c745e5b53b81491a.js +1 -0
  454. package/.next/static/chunks/app/api/encryption/secure/route-c745e5b53b81491a.js +1 -0
  455. package/.next/static/chunks/app/api/env/route-c745e5b53b81491a.js +1 -0
  456. package/.next/static/chunks/app/api/flow/[id]/route-c745e5b53b81491a.js +1 -0
  457. package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-c745e5b53b81491a.js +1 -0
  458. package/.next/static/chunks/app/api/flow/[id]/versions/route-c745e5b53b81491a.js +1 -0
  459. package/.next/static/chunks/app/api/flow/compile/route-c745e5b53b81491a.js +1 -0
  460. package/.next/static/chunks/app/api/flow/generate/route-c745e5b53b81491a.js +1 -0
  461. package/.next/static/chunks/app/api/flow/improve/route-c745e5b53b81491a.js +1 -0
  462. package/.next/static/chunks/app/api/flow/prompt-renderer/route-c745e5b53b81491a.js +1 -0
  463. package/.next/static/chunks/app/api/flow/quick-chat/route-c745e5b53b81491a.js +1 -0
  464. package/.next/static/chunks/app/api/flow/repair/route-c745e5b53b81491a.js +1 -0
  465. package/.next/static/chunks/app/api/flow/route-c745e5b53b81491a.js +1 -0
  466. package/.next/static/chunks/app/api/git/route-c745e5b53b81491a.js +1 -0
  467. package/.next/static/chunks/app/api/init/route-c745e5b53b81491a.js +1 -0
  468. package/.next/static/chunks/app/api/local-models/capability/route-c745e5b53b81491a.js +1 -0
  469. package/.next/static/chunks/app/api/local-models/pull/route-c745e5b53b81491a.js +1 -0
  470. package/.next/static/chunks/app/api/local-models/suggest/route-c745e5b53b81491a.js +1 -0
  471. package/.next/static/chunks/app/api/mcp/app-sandbox/route-c745e5b53b81491a.js +1 -0
  472. package/.next/static/chunks/app/api/mcp/cancel/route-c745e5b53b81491a.js +1 -0
  473. package/.next/static/chunks/app/api/mcp/oauth-capability/route-c745e5b53b81491a.js +1 -0
  474. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-c745e5b53b81491a.js +1 -0
  475. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-c745e5b53b81491a.js +1 -0
  476. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-c745e5b53b81491a.js +1 -0
  477. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-c745e5b53b81491a.js +1 -0
  478. package/.next/static/chunks/app/api/mcp/servers/[name]/route-c745e5b53b81491a.js +1 -0
  479. package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-c745e5b53b81491a.js +1 -0
  480. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-c745e5b53b81491a.js +1 -0
  481. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-c745e5b53b81491a.js +1 -0
  482. package/.next/static/chunks/app/api/mcp/servers/route-c745e5b53b81491a.js +1 -0
  483. package/.next/static/chunks/app/api/mcp/test-connection/route-c745e5b53b81491a.js +1 -0
  484. package/.next/static/chunks/app/api/mcp/test-connection/stream/route-c745e5b53b81491a.js +1 -0
  485. package/.next/static/chunks/app/api/mcp-registry/route-c745e5b53b81491a.js +1 -0
  486. package/.next/static/chunks/app/api/mcp-registry/spotlight/route-c745e5b53b81491a.js +1 -0
  487. package/.next/static/chunks/app/api/model/[id]/route-c745e5b53b81491a.js +1 -0
  488. package/.next/static/chunks/app/api/model/provider/route-c745e5b53b81491a.js +1 -0
  489. package/.next/static/chunks/app/api/model/route-c745e5b53b81491a.js +1 -0
  490. package/.next/static/chunks/app/api/model/test/route-c745e5b53b81491a.js +1 -0
  491. package/.next/static/chunks/app/api/oauth/callback/route-c745e5b53b81491a.js +1 -0
  492. package/.next/static/chunks/app/api/oauth/initiate/route-c745e5b53b81491a.js +1 -0
  493. package/.next/static/chunks/app/api/oauth/reset/route-c745e5b53b81491a.js +1 -0
  494. package/.next/static/chunks/app/api/packages/build/route-c745e5b53b81491a.js +1 -0
  495. package/.next/static/chunks/app/api/packages/derive-secrets/route-c745e5b53b81491a.js +1 -0
  496. package/.next/static/chunks/app/api/packages/install/route-c745e5b53b81491a.js +1 -0
  497. package/.next/static/chunks/app/api/packages/install/status/route-c745e5b53b81491a.js +1 -0
  498. package/.next/static/chunks/app/api/packages/installed/route-c745e5b53b81491a.js +1 -0
  499. package/.next/static/chunks/app/api/packages/resolve/route-c745e5b53b81491a.js +1 -0
  500. package/.next/static/chunks/app/api/packages/uninstall/route-c745e5b53b81491a.js +1 -0
  501. package/.next/static/chunks/app/api/planned-executions/[id]/route-c745e5b53b81491a.js +1 -0
  502. package/.next/static/chunks/app/api/planned-executions/[id]/run/route-c745e5b53b81491a.js +1 -0
  503. package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-c745e5b53b81491a.js +1 -0
  504. package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-c745e5b53b81491a.js +1 -0
  505. package/.next/static/chunks/app/api/planned-executions/reconcile/route-c745e5b53b81491a.js +1 -0
  506. package/.next/static/chunks/app/api/planned-executions/route-c745e5b53b81491a.js +1 -0
  507. package/.next/static/chunks/app/api/registry/auth/resend/route-c745e5b53b81491a.js +1 -0
  508. package/.next/static/chunks/app/api/registry/auth/reset/route-c745e5b53b81491a.js +1 -0
  509. package/.next/static/chunks/app/api/registry/auth/route-c745e5b53b81491a.js +1 -0
  510. package/.next/static/chunks/app/api/registry/oauth/callback/route-c745e5b53b81491a.js +1 -0
  511. package/.next/static/chunks/app/api/registry/oauth/initiate/route-c745e5b53b81491a.js +1 -0
  512. package/.next/static/chunks/app/api/registry/publish/route-c745e5b53b81491a.js +1 -0
  513. package/.next/static/chunks/app/api/registry/settings/route-c745e5b53b81491a.js +1 -0
  514. package/.next/static/chunks/app/api/restore/route-c745e5b53b81491a.js +1 -0
  515. package/.next/static/chunks/app/api/runs/active/route-c745e5b53b81491a.js +1 -0
  516. package/.next/static/chunks/app/api/storage/route-c745e5b53b81491a.js +1 -0
  517. package/.next/static/chunks/app/api/update/route-c745e5b53b81491a.js +1 -0
  518. package/.next/static/chunks/app/api/waves/route-c745e5b53b81491a.js +1 -0
  519. package/.next/static/chunks/app/api/webhooks/[id]/route-c745e5b53b81491a.js +1 -0
  520. package/.next/static/chunks/app/chat/page-c39160ddf90bbae9.js +1 -0
  521. package/.next/static/chunks/app/docs/page-250523af44e96120.js +1 -0
  522. package/.next/static/chunks/app/executions/page-10d09f36de30939f.js +1 -0
  523. package/.next/static/chunks/app/flows/page-0d8fb471adfc2981.js +1 -0
  524. package/.next/static/chunks/app/layout-eea7078d7553c21a.js +1 -0
  525. package/.next/static/chunks/app/mcp/page-8ad71bf5801bfe5f.js +1 -0
  526. package/.next/static/chunks/app/mcp-flows/route-c745e5b53b81491a.js +1 -0
  527. package/.next/static/chunks/app/mcp-proxy/[server]/route-c745e5b53b81491a.js +1 -0
  528. package/.next/static/chunks/app/models/page-17e8e6668f92f58d.js +1 -0
  529. package/.next/static/chunks/app/packages/page-9f61751e98134f3d.js +1 -0
  530. package/.next/static/chunks/app/{page-0a95c40a65dbd2eb.js → page-d3ea90b065b95d1e.js} +1 -1
  531. package/.next/static/chunks/app/settings/page-afbf8790e99fecaf.js +1 -0
  532. package/.next/static/chunks/app/v1/chat/completions/route-c745e5b53b81491a.js +1 -0
  533. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-c745e5b53b81491a.js +1 -0
  534. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-c745e5b53b81491a.js +1 -0
  535. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-c745e5b53b81491a.js +1 -0
  536. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-c745e5b53b81491a.js +1 -0
  537. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-c745e5b53b81491a.js +1 -0
  538. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-c745e5b53b81491a.js +1 -0
  539. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-c745e5b53b81491a.js +1 -0
  540. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-c745e5b53b81491a.js +1 -0
  541. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-c745e5b53b81491a.js +1 -0
  542. package/.next/static/chunks/app/v1/chat/conversations/route-c745e5b53b81491a.js +1 -0
  543. package/.next/static/chunks/app/v1/chat/events/route-c745e5b53b81491a.js +1 -0
  544. package/.next/static/chunks/app/v1/models/route-c745e5b53b81491a.js +1 -0
  545. package/.next/static/chunks/app/waves/page-97ad6b51c9cae4b3.js +1 -0
  546. package/.next/static/chunks/webpack-0d4a4e773990ac44.js +1 -0
  547. package/.next/static/css/{64cb1f185b52a623.css → 69ab44eb350e0b6c.css} +1 -1
  548. package/.next/trace +10 -10
  549. package/.next/types/app/api/flow/[id]/versions/[versionId]/route.ts +347 -0
  550. package/.next/types/app/api/flow/[id]/versions/route.ts +347 -0
  551. package/.next/types/app/api/mcp/app-sandbox/route.ts +347 -0
  552. package/.next/types/app/api/mcp/oauth-capability/route.ts +347 -0
  553. package/.next/types/app/api/packages/build/route.ts +347 -0
  554. package/.next/types/app/api/packages/derive-secrets/route.ts +347 -0
  555. package/.next/types/app/api/packages/install/route.ts +347 -0
  556. package/.next/types/app/api/packages/install/status/route.ts +347 -0
  557. package/.next/types/app/api/packages/installed/route.ts +347 -0
  558. package/.next/types/app/api/packages/resolve/route.ts +347 -0
  559. package/.next/types/app/api/packages/uninstall/route.ts +347 -0
  560. package/.next/types/app/api/registry/auth/resend/route.ts +347 -0
  561. package/.next/types/app/api/registry/auth/reset/route.ts +347 -0
  562. package/.next/types/app/api/registry/auth/route.ts +347 -0
  563. package/.next/types/app/api/registry/oauth/callback/route.ts +347 -0
  564. package/.next/types/app/api/registry/oauth/initiate/route.ts +347 -0
  565. package/.next/types/app/api/registry/publish/route.ts +347 -0
  566. package/.next/types/app/api/registry/settings/route.ts +347 -0
  567. package/.next/types/app/packages/page.ts +84 -0
  568. package/.next/types/app/v1/chat/events/route.ts +347 -0
  569. package/.next/types/routes.d.ts +22 -2
  570. package/.next/types/validator.ts +180 -0
  571. package/README.md +1 -1
  572. package/package.json +97 -90
  573. package/.next/server/chunks/1152.js +0 -2
  574. package/.next/server/chunks/1223.js +0 -1
  575. package/.next/server/chunks/1377.js +0 -1
  576. package/.next/server/chunks/2373.js +0 -1
  577. package/.next/server/chunks/289.js +0 -1
  578. package/.next/server/chunks/3774.js +0 -6
  579. package/.next/server/chunks/3823.js +0 -41
  580. package/.next/server/chunks/3855.js +0 -1
  581. package/.next/server/chunks/3924.js +0 -52
  582. package/.next/server/chunks/4372.js +0 -1
  583. package/.next/server/chunks/4545.js +0 -21
  584. package/.next/server/chunks/4561.js +0 -65
  585. package/.next/server/chunks/4677.js +0 -37
  586. package/.next/server/chunks/472.js +0 -1
  587. package/.next/server/chunks/4793.js +0 -2
  588. package/.next/server/chunks/4836.js +0 -1
  589. package/.next/server/chunks/5311.js +0 -1
  590. package/.next/server/chunks/5662.js +0 -2
  591. package/.next/server/chunks/5734.js +0 -60
  592. package/.next/server/chunks/584.js +0 -1
  593. package/.next/server/chunks/62.js +0 -1
  594. package/.next/server/chunks/6240.js +0 -1
  595. package/.next/server/chunks/6306.js +0 -1
  596. package/.next/server/chunks/6793.js +0 -1
  597. package/.next/server/chunks/6908.js +0 -12
  598. package/.next/server/chunks/6996.js +0 -62
  599. package/.next/server/chunks/7362.js +0 -158
  600. package/.next/server/chunks/8216.js +0 -1
  601. package/.next/server/chunks/856.js +0 -5
  602. package/.next/server/chunks/8652.js +0 -42
  603. package/.next/server/chunks/9427.js +0 -1
  604. package/.next/static/Il6IDWxf3CN0dv-P6QQrp/_buildManifest.js +0 -1
  605. package/.next/static/chunks/1675-773454288de4309d.js +0 -1
  606. package/.next/static/chunks/1731-6e45fb529f9044a3.js +0 -1
  607. package/.next/static/chunks/2318-76fcb6c769b1a569.js +0 -1
  608. package/.next/static/chunks/2566-6e2b9d9349814789.js +0 -1
  609. package/.next/static/chunks/2734-59fbe2f62a59df86.js +0 -1
  610. package/.next/static/chunks/3089.6b4e21e1faa304e2.js +0 -1
  611. package/.next/static/chunks/3109-11bdec9bdfd996c3.js +0 -1
  612. package/.next/static/chunks/333-5f3c5be57c80c48c.js +0 -1
  613. package/.next/static/chunks/3333-b7b3e5758a568013.js +0 -1
  614. package/.next/static/chunks/4003-3b3768446ae333df.js +0 -1
  615. package/.next/static/chunks/4635-0fe310d3be64e71e.js +0 -1
  616. package/.next/static/chunks/4690-ec7d397cfacedac3.js +0 -1
  617. package/.next/static/chunks/4775-cb9c0be621363a08.js +0 -8
  618. package/.next/static/chunks/5336-81da1080de29ebfc.js +0 -1
  619. package/.next/static/chunks/6691-117567b2b40cd9f4.js +0 -1
  620. package/.next/static/chunks/7274-1184563607f2b5f5.js +0 -1
  621. package/.next/static/chunks/812-624e93f4c0f671c7.js +0 -1
  622. package/.next/static/chunks/8166-e75acdc559b34fcd.js +0 -1
  623. package/.next/static/chunks/8607-5787e42775fc3acb.js +0 -1
  624. package/.next/static/chunks/8610-660d5088bc1dd7a7.js +0 -1
  625. package/.next/static/chunks/9240-d0a51f4d504f34b1.js +0 -1
  626. package/.next/static/chunks/9562-b7922ceb400ec536.js +0 -1
  627. package/.next/static/chunks/9704-6b7415964d7c042a.js +0 -1
  628. package/.next/static/chunks/app/api/approvals/[id]/route-6b442f97c5062f2c.js +0 -1
  629. package/.next/static/chunks/app/api/approvals/route-6b442f97c5062f2c.js +0 -1
  630. package/.next/static/chunks/app/api/backup/route-6b442f97c5062f2c.js +0 -1
  631. package/.next/static/chunks/app/api/browse/route-6b442f97c5062f2c.js +0 -1
  632. package/.next/static/chunks/app/api/bugs/enhance/route-6b442f97c5062f2c.js +0 -1
  633. package/.next/static/chunks/app/api/cwd/route-6b442f97c5062f2c.js +0 -1
  634. package/.next/static/chunks/app/api/encryption/secure/route-6b442f97c5062f2c.js +0 -1
  635. package/.next/static/chunks/app/api/env/route-6b442f97c5062f2c.js +0 -1
  636. package/.next/static/chunks/app/api/flow/[id]/route-6b442f97c5062f2c.js +0 -1
  637. package/.next/static/chunks/app/api/flow/compile/route-6b442f97c5062f2c.js +0 -1
  638. package/.next/static/chunks/app/api/flow/generate/route-6b442f97c5062f2c.js +0 -1
  639. package/.next/static/chunks/app/api/flow/improve/route-6b442f97c5062f2c.js +0 -1
  640. package/.next/static/chunks/app/api/flow/prompt-renderer/route-6b442f97c5062f2c.js +0 -1
  641. package/.next/static/chunks/app/api/flow/quick-chat/route-6b442f97c5062f2c.js +0 -1
  642. package/.next/static/chunks/app/api/flow/repair/route-6b442f97c5062f2c.js +0 -1
  643. package/.next/static/chunks/app/api/flow/route-6b442f97c5062f2c.js +0 -1
  644. package/.next/static/chunks/app/api/git/route-6b442f97c5062f2c.js +0 -1
  645. package/.next/static/chunks/app/api/init/route-6b442f97c5062f2c.js +0 -1
  646. package/.next/static/chunks/app/api/local-models/capability/route-6b442f97c5062f2c.js +0 -1
  647. package/.next/static/chunks/app/api/local-models/pull/route-6b442f97c5062f2c.js +0 -1
  648. package/.next/static/chunks/app/api/local-models/suggest/route-6b442f97c5062f2c.js +0 -1
  649. package/.next/static/chunks/app/api/mcp/cancel/route-6b442f97c5062f2c.js +0 -1
  650. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-6b442f97c5062f2c.js +0 -1
  651. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-6b442f97c5062f2c.js +0 -1
  652. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-6b442f97c5062f2c.js +0 -1
  653. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-6b442f97c5062f2c.js +0 -1
  654. package/.next/static/chunks/app/api/mcp/servers/[name]/route-6b442f97c5062f2c.js +0 -1
  655. package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-6b442f97c5062f2c.js +0 -1
  656. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-6b442f97c5062f2c.js +0 -1
  657. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-6b442f97c5062f2c.js +0 -1
  658. package/.next/static/chunks/app/api/mcp/servers/route-6b442f97c5062f2c.js +0 -1
  659. package/.next/static/chunks/app/api/mcp/test-connection/route-6b442f97c5062f2c.js +0 -1
  660. package/.next/static/chunks/app/api/mcp/test-connection/stream/route-6b442f97c5062f2c.js +0 -1
  661. package/.next/static/chunks/app/api/mcp-registry/route-6b442f97c5062f2c.js +0 -1
  662. package/.next/static/chunks/app/api/mcp-registry/spotlight/route-6b442f97c5062f2c.js +0 -1
  663. package/.next/static/chunks/app/api/model/[id]/route-6b442f97c5062f2c.js +0 -1
  664. package/.next/static/chunks/app/api/model/provider/route-6b442f97c5062f2c.js +0 -1
  665. package/.next/static/chunks/app/api/model/route-6b442f97c5062f2c.js +0 -1
  666. package/.next/static/chunks/app/api/model/test/route-6b442f97c5062f2c.js +0 -1
  667. package/.next/static/chunks/app/api/oauth/callback/route-6b442f97c5062f2c.js +0 -1
  668. package/.next/static/chunks/app/api/oauth/initiate/route-6b442f97c5062f2c.js +0 -1
  669. package/.next/static/chunks/app/api/oauth/reset/route-6b442f97c5062f2c.js +0 -1
  670. package/.next/static/chunks/app/api/planned-executions/[id]/route-6b442f97c5062f2c.js +0 -1
  671. package/.next/static/chunks/app/api/planned-executions/[id]/run/route-6b442f97c5062f2c.js +0 -1
  672. package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-6b442f97c5062f2c.js +0 -1
  673. package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-6b442f97c5062f2c.js +0 -1
  674. package/.next/static/chunks/app/api/planned-executions/reconcile/route-6b442f97c5062f2c.js +0 -1
  675. package/.next/static/chunks/app/api/planned-executions/route-6b442f97c5062f2c.js +0 -1
  676. package/.next/static/chunks/app/api/restore/route-6b442f97c5062f2c.js +0 -1
  677. package/.next/static/chunks/app/api/runs/active/route-6b442f97c5062f2c.js +0 -1
  678. package/.next/static/chunks/app/api/storage/route-6b442f97c5062f2c.js +0 -1
  679. package/.next/static/chunks/app/api/update/route-6b442f97c5062f2c.js +0 -1
  680. package/.next/static/chunks/app/api/waves/route-6b442f97c5062f2c.js +0 -1
  681. package/.next/static/chunks/app/api/webhooks/[id]/route-6b442f97c5062f2c.js +0 -1
  682. package/.next/static/chunks/app/chat/page-04ad1fad78048afb.js +0 -1
  683. package/.next/static/chunks/app/docs/page-5475c616764dbb18.js +0 -1
  684. package/.next/static/chunks/app/executions/page-c18708ed96d228ec.js +0 -1
  685. package/.next/static/chunks/app/flows/page-f7e44aa545bcc56e.js +0 -1
  686. package/.next/static/chunks/app/layout-e6fbae80e0f456a6.js +0 -1
  687. package/.next/static/chunks/app/mcp/page-3638fbee04a3a6ea.js +0 -1
  688. package/.next/static/chunks/app/mcp-flows/route-6b442f97c5062f2c.js +0 -1
  689. package/.next/static/chunks/app/mcp-proxy/[server]/route-6b442f97c5062f2c.js +0 -1
  690. package/.next/static/chunks/app/models/page-e690a986047b1e62.js +0 -1
  691. package/.next/static/chunks/app/settings/page-3ef9b95187e18a5a.js +0 -1
  692. package/.next/static/chunks/app/v1/chat/completions/route-6b442f97c5062f2c.js +0 -1
  693. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-6b442f97c5062f2c.js +0 -1
  694. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-6b442f97c5062f2c.js +0 -1
  695. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-6b442f97c5062f2c.js +0 -1
  696. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-6b442f97c5062f2c.js +0 -1
  697. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-6b442f97c5062f2c.js +0 -1
  698. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-6b442f97c5062f2c.js +0 -1
  699. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-6b442f97c5062f2c.js +0 -1
  700. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-6b442f97c5062f2c.js +0 -1
  701. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-6b442f97c5062f2c.js +0 -1
  702. package/.next/static/chunks/app/v1/chat/conversations/route-6b442f97c5062f2c.js +0 -1
  703. package/.next/static/chunks/app/v1/models/route-6b442f97c5062f2c.js +0 -1
  704. package/.next/static/chunks/app/waves/page-c9a307e2236423a4.js +0 -1
  705. package/.next/static/chunks/webpack-a6844e1074885c2f.js +0 -1
  706. /package/.next/static/{Il6IDWxf3CN0dv-P6QQrp → Q6ITx_bZyoEOnKdZu_C7j}/_ssgManifest.js +0 -0
@@ -0,0 +1,3 @@
1
+ "use strict";exports.id=688,exports.ids=[688],exports.modules={20688:(a,b,c)=>{let d,e;c.r(b),c.d(b,{CompactEncrypt:()=>by,CompactSign:()=>bA,EmbeddedJWK:()=>bI,EncryptJWT:()=>bE,FlattenedEncrypt:()=>bj,FlattenedSign:()=>bz,GeneralEncrypt:()=>bl,GeneralSign:()=>bC,SignJWT:()=>bD,UnsecuredJWT:()=>bS,base64url:()=>f,calculateJwkThumbprint:()=>bG,calculateJwkThumbprintUri:()=>bH,compactDecrypt:()=>bh,compactVerify:()=>bn,createLocalJWKSet:()=>bM,createRemoteJWKSet:()=>bR,cryptoRuntime:()=>bY,customFetch:()=>bN,decodeJwt:()=>bU,decodeProtectedHeader:()=>bT,errors:()=>g,exportJWK:()=>a1,exportPKCS8:()=>a0,exportSPKI:()=>a_,flattenedDecrypt:()=>bg,flattenedVerify:()=>bm,generalDecrypt:()=>bi,generalVerify:()=>bo,generateKeyPair:()=>bW,generateSecret:()=>bX,importJWK:()=>aZ,importPKCS8:()=>aY,importSPKI:()=>aW,importX509:()=>aX,jwksCache:()=>bP,jwtDecrypt:()=>bx,jwtVerify:()=>bw});var f={};c.r(f),c.d(f,{decode:()=>q,encode:()=>r});var g={};c.r(g),c.d(g,{JOSEAlgNotAllowed:()=>C,JOSEError:()=>z,JOSENotSupported:()=>D,JWEDecryptionFailed:()=>E,JWEInvalid:()=>F,JWKInvalid:()=>I,JWKSInvalid:()=>J,JWKSMultipleMatchingKeys:()=>L,JWKSNoMatchingKey:()=>K,JWKSTimeout:()=>M,JWSInvalid:()=>G,JWSSignatureVerificationFailed:()=>N,JWTClaimValidationFailed:()=>A,JWTExpired:()=>B,JWTInvalid:()=>H});let h=new TextEncoder,i=new TextDecoder;function j(...a){let b=new Uint8Array(a.reduce((a,{length:b})=>a+b,0)),c=0;for(let d of a)b.set(d,c),c+=d.length;return b}function k(a,b,c){if(b<0||b>=0x100000000)throw RangeError(`value must be >= 0 and <= ${0x100000000-1}. Received ${b}`);a.set([b>>>24,b>>>16,b>>>8,255&b],c)}function l(a){let b=Math.floor(a/0x100000000),c=new Uint8Array(8);return k(c,b,0),k(c,a%0x100000000,4),c}function m(a){let b=new Uint8Array(4);return k(b,a),b}function n(a){let b=new Uint8Array(a.length);for(let c=0;c<a.length;c++){let d=a.charCodeAt(c);if(d>127)throw TypeError("non-ASCII string encountered in encode()");b[c]=d}return b}function o(a){if(Uint8Array.prototype.toBase64)return a.toBase64();let b=[];for(let c=0;c<a.length;c+=32768)b.push(String.fromCharCode.apply(null,a.subarray(c,c+32768)));return btoa(b.join(""))}function p(a){if(Uint8Array.fromBase64)return Uint8Array.fromBase64(a);let b=atob(a),c=new Uint8Array(b.length);for(let a=0;a<b.length;a++)c[a]=b.charCodeAt(a);return c}function q(a){if(Uint8Array.fromBase64)return Uint8Array.fromBase64("string"==typeof a?a:i.decode(a),{alphabet:"base64url"});let b=a;b instanceof Uint8Array&&(b=i.decode(b)),b=b.replace(/-/g,"+").replace(/_/g,"/");try{return p(b)}catch{throw TypeError("The input to be decoded is not correctly encoded.")}}function r(a){let b=a;return("string"==typeof b&&(b=h.encode(b)),Uint8Array.prototype.toBase64)?b.toBase64({alphabet:"base64url",omitPadding:!0}):o(b).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}let s=(a,b="algorithm.name")=>TypeError(`CryptoKey does not support this operation, its ${b} must be ${a}`);function t(a,b){if(parseInt(a.hash.name.slice(4),10)!==b)throw s(`SHA-${b}`,"algorithm.hash")}function u(a,b){if(b&&!a.usages.includes(b))throw TypeError(`CryptoKey does not support this operation, its usages must include ${b}.`)}function v(a,b,c){switch(b){case"A128GCM":case"A192GCM":case"A256GCM":{if("AES-GCM"!==a.algorithm.name)throw s("AES-GCM");let c=parseInt(b.slice(1,4),10);if(a.algorithm.length!==c)throw s(c,"algorithm.length");break}case"A128KW":case"A192KW":case"A256KW":{if("AES-KW"!==a.algorithm.name)throw s("AES-KW");let c=parseInt(b.slice(1,4),10);if(a.algorithm.length!==c)throw s(c,"algorithm.length");break}case"ECDH":switch(a.algorithm.name){case"ECDH":case"X25519":break;default:throw s("ECDH or X25519")}break;case"PBES2-HS256+A128KW":case"PBES2-HS384+A192KW":case"PBES2-HS512+A256KW":if("PBKDF2"!==a.algorithm.name)throw s("PBKDF2");break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":if("RSA-OAEP"!==a.algorithm.name)throw s("RSA-OAEP");t(a.algorithm,parseInt(b.slice(9),10)||1);break;default:throw TypeError("CryptoKey does not support this operation")}u(a,c)}function w(a,b,...c){if((c=c.filter(Boolean)).length>2){let b=c.pop();a+=`one of type ${c.join(", ")}, or ${b}.`}else 2===c.length?a+=`one of type ${c[0]} or ${c[1]}.`:a+=`of type ${c[0]}.`;return null==b?a+=` Received ${b}`:"function"==typeof b&&b.name?a+=` Received function ${b.name}`:"object"==typeof b&&null!=b&&b.constructor?.name&&(a+=` Received an instance of ${b.constructor.name}`),a}let x=(a,...b)=>w("Key must be ",a,...b),y=(a,b,...c)=>w(`Key for the ${a} algorithm must be `,b,...c);class z extends Error{static code="ERR_JOSE_GENERIC";code="ERR_JOSE_GENERIC";constructor(a,b){super(a,b),this.name=this.constructor.name,Error.captureStackTrace?.(this,this.constructor)}}class A extends z{static code="ERR_JWT_CLAIM_VALIDATION_FAILED";code="ERR_JWT_CLAIM_VALIDATION_FAILED";claim;reason;payload;constructor(a,b,c="unspecified",d="unspecified"){super(a,{cause:{claim:c,reason:d,payload:b}}),this.claim=c,this.reason=d,this.payload=b}}class B extends z{static code="ERR_JWT_EXPIRED";code="ERR_JWT_EXPIRED";claim;reason;payload;constructor(a,b,c="unspecified",d="unspecified"){super(a,{cause:{claim:c,reason:d,payload:b}}),this.claim=c,this.reason=d,this.payload=b}}class C extends z{static code="ERR_JOSE_ALG_NOT_ALLOWED";code="ERR_JOSE_ALG_NOT_ALLOWED"}class D extends z{static code="ERR_JOSE_NOT_SUPPORTED";code="ERR_JOSE_NOT_SUPPORTED"}class E extends z{static code="ERR_JWE_DECRYPTION_FAILED";code="ERR_JWE_DECRYPTION_FAILED";constructor(a="decryption operation failed",b){super(a,b)}}class F extends z{static code="ERR_JWE_INVALID";code="ERR_JWE_INVALID"}class G extends z{static code="ERR_JWS_INVALID";code="ERR_JWS_INVALID"}class H extends z{static code="ERR_JWT_INVALID";code="ERR_JWT_INVALID"}class I extends z{static code="ERR_JWK_INVALID";code="ERR_JWK_INVALID"}class J extends z{static code="ERR_JWKS_INVALID";code="ERR_JWKS_INVALID"}class K extends z{static code="ERR_JWKS_NO_MATCHING_KEY";code="ERR_JWKS_NO_MATCHING_KEY";constructor(a="no applicable key found in the JSON Web Key Set",b){super(a,b)}}class L extends z{[Symbol.asyncIterator];static code="ERR_JWKS_MULTIPLE_MATCHING_KEYS";code="ERR_JWKS_MULTIPLE_MATCHING_KEYS";constructor(a="multiple matching keys found in the JSON Web Key Set",b){super(a,b)}}class M extends z{static code="ERR_JWKS_TIMEOUT";code="ERR_JWKS_TIMEOUT";constructor(a="request timed out",b){super(a,b)}}class N extends z{static code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED";code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED";constructor(a="signature verification failed",b){super(a,b)}}function O(a){if(!P(a))throw Error("CryptoKey instance expected")}let P=a=>{if(a?.[Symbol.toStringTag]==="CryptoKey")return!0;try{return a instanceof CryptoKey}catch{return!1}},Q=a=>a?.[Symbol.toStringTag]==="KeyObject",R=a=>P(a)||Q(a);function S(a){switch(a){case"A128GCM":return 128;case"A192GCM":return 192;case"A256GCM":case"A128CBC-HS256":return 256;case"A192CBC-HS384":return 384;case"A256CBC-HS512":return 512;default:throw new D(`Unsupported JWE Algorithm: ${a}`)}}let T=a=>crypto.getRandomValues(new Uint8Array(S(a)>>3));function U(a,b){let c=a.byteLength<<3;if(c!==b)throw new F(`Invalid Content Encryption Key length. Expected ${b} bits, got ${c} bits`)}function V(a){switch(a){case"A128GCM":case"A128GCMKW":case"A192GCM":case"A192GCMKW":case"A256GCM":case"A256GCMKW":return 96;case"A128CBC-HS256":case"A192CBC-HS384":case"A256CBC-HS512":return 128;default:throw new D(`Unsupported JWE Algorithm: ${a}`)}}function W(a,b){if(b.length<<3!==V(a))throw new F("Invalid Initialization Vector length")}async function X(a,b,c){if(!(b instanceof Uint8Array))throw TypeError(x(b,"Uint8Array"));let d=parseInt(a.slice(1,4),10);return{encKey:await crypto.subtle.importKey("raw",b.subarray(d>>3),"AES-CBC",!1,[c]),macKey:await crypto.subtle.importKey("raw",b.subarray(0,d>>3),{hash:`SHA-${d<<1}`,name:"HMAC"},!1,["sign"]),keySize:d}}async function Y(a,b,c){return new Uint8Array((await crypto.subtle.sign("HMAC",a,b)).slice(0,c>>3))}async function Z(a,b,c,d,e){let{encKey:f,macKey:g,keySize:h}=await X(a,c,"encrypt"),i=new Uint8Array(await crypto.subtle.encrypt({iv:d,name:"AES-CBC"},f,b)),k=j(e,d,i,l(e.length<<3));return{ciphertext:i,tag:await Y(g,k,h),iv:d}}async function $(a,b){if(!(a instanceof Uint8Array))throw TypeError("First argument must be a buffer");if(!(b instanceof Uint8Array))throw TypeError("Second argument must be a buffer");let c={name:"HMAC",hash:"SHA-256"},d=await crypto.subtle.generateKey(c,!1,["sign"]),e=new Uint8Array(await crypto.subtle.sign(c,d,a)),f=new Uint8Array(await crypto.subtle.sign(c,d,b)),g=0,h=-1;for(;++h<32;)g|=e[h]^f[h];return 0===g}async function _(a,b,c,d,e,f){let g,h,{encKey:i,macKey:k,keySize:m}=await X(a,b,"decrypt"),n=j(f,d,c,l(f.length<<3)),o=await Y(k,n,m);try{g=await $(e,o)}catch{}if(!g)throw new E;try{h=new Uint8Array(await crypto.subtle.decrypt({iv:d,name:"AES-CBC"},i,c))}catch{}if(!h)throw new E;return h}async function aa(a,b,c,d,e){let f;c instanceof Uint8Array?f=await crypto.subtle.importKey("raw",c,"AES-GCM",!1,["encrypt"]):(v(c,a,"encrypt"),f=c);let g=new Uint8Array(await crypto.subtle.encrypt({additionalData:e,iv:d,name:"AES-GCM",tagLength:128},f,b)),h=g.slice(-16);return{ciphertext:g.slice(0,-16),tag:h,iv:d}}async function ab(a,b,c,d,e,f){let g;b instanceof Uint8Array?g=await crypto.subtle.importKey("raw",b,"AES-GCM",!1,["decrypt"]):(v(b,a,"decrypt"),g=b);try{return new Uint8Array(await crypto.subtle.decrypt({additionalData:f,iv:d,name:"AES-GCM",tagLength:128},g,j(c,e)))}catch{throw new E}}let ac="Unsupported JWE Content Encryption Algorithm";async function ad(a,b,c,d,e){if(!P(c)&&!(c instanceof Uint8Array))throw TypeError(x(c,"CryptoKey","KeyObject","Uint8Array","JSON Web Key"));if(d)W(a,d);else d=crypto.getRandomValues(new Uint8Array(V(a)>>3));switch(a){case"A128CBC-HS256":case"A192CBC-HS384":case"A256CBC-HS512":return c instanceof Uint8Array&&U(c,parseInt(a.slice(-3),10)),Z(a,b,c,d,e);case"A128GCM":case"A192GCM":case"A256GCM":return c instanceof Uint8Array&&U(c,parseInt(a.slice(1,4),10)),aa(a,b,c,d,e);default:throw new D(ac)}}async function ae(a,b,c,d,e,f){if(!P(b)&&!(b instanceof Uint8Array))throw TypeError(x(b,"CryptoKey","KeyObject","Uint8Array","JSON Web Key"));if(!d)throw new F("JWE Initialization Vector missing");if(!e)throw new F("JWE Authentication Tag missing");switch(W(a,d),a){case"A128CBC-HS256":case"A192CBC-HS384":case"A256CBC-HS512":return b instanceof Uint8Array&&U(b,parseInt(a.slice(-3),10)),_(a,b,c,d,e,f);case"A128GCM":case"A192GCM":case"A256GCM":return b instanceof Uint8Array&&U(b,parseInt(a.slice(1,4),10)),ab(a,b,c,d,e,f);default:throw new D(ac)}}let af=Symbol();function ag(a,b){if(a)throw TypeError(`${b} can only be called once`)}function ah(a,b,c){try{return q(a)}catch{throw new c(`Failed to base64url decode the ${b}`)}}async function ai(a,b){let c=`SHA-${a.slice(-3)}`;return new Uint8Array(await crypto.subtle.digest(c,b))}function aj(a){if("object"!=typeof a||null===a||"[object Object]"!==Object.prototype.toString.call(a))return!1;if(null===Object.getPrototypeOf(a))return!0;let b=a;for(;null!==Object.getPrototypeOf(b);)b=Object.getPrototypeOf(b);return Object.getPrototypeOf(a)===b}function ak(...a){let b,c=a.filter(Boolean);if(0===c.length||1===c.length)return!0;for(let a of c){let c=Object.keys(a);if(!b||0===b.size){b=new Set(c);continue}for(let a of c){if(b.has(a))return!1;b.add(a)}}return!0}let al=a=>aj(a)&&"string"==typeof a.kty;function am(a,b){if(a.algorithm.length!==parseInt(b.slice(1,4),10))throw TypeError(`Invalid key size for alg: ${b}`)}function an(a,b,c){return a instanceof Uint8Array?crypto.subtle.importKey("raw",a,"AES-KW",!0,[c]):(v(a,b,c),a)}async function ao(a,b,c){let d=await an(b,a,"wrapKey");am(d,a);let e=await crypto.subtle.importKey("raw",c,{hash:"SHA-256",name:"HMAC"},!0,["sign"]);return new Uint8Array(await crypto.subtle.wrapKey("raw",e,d,"AES-KW"))}async function ap(a,b,c){let d=await an(b,a,"unwrapKey");am(d,a);let e=await crypto.subtle.unwrapKey("raw",c,d,"AES-KW",{hash:"SHA-256",name:"HMAC"},!0,["sign"]);return new Uint8Array(await crypto.subtle.exportKey("raw",e))}function aq(a){return j(m(a.length),a)}async function ar(a,b,c){let d=b>>3,e=Math.ceil(d/32),f=new Uint8Array(32*e);for(let b=1;b<=e;b++){let d=new Uint8Array(4+a.length+c.length);d.set(m(b),0),d.set(a,4),d.set(c,4+a.length);let e=await ai("sha256",d);f.set(e,(b-1)*32)}return f.slice(0,d)}async function as(a,b,c,d,e=new Uint8Array,f=new Uint8Array){var g;v(a,"ECDH"),v(b,"ECDH","deriveBits");let h=aq(n(c)),i=aq(e),k=aq(f),l=j(h,i,k,m(d),new Uint8Array);return ar(new Uint8Array(await crypto.subtle.deriveBits({name:a.algorithm.name,public:a},b,"X25519"===(g=a).algorithm.name?256:Math.ceil(parseInt(g.algorithm.namedCurve.slice(-3),10)/8)<<3)),d,l)}function at(a){switch(a.algorithm.namedCurve){case"P-256":case"P-384":case"P-521":return!0;default:return"X25519"===a.algorithm.name}}async function au(a,b,c,d){if(!(a instanceof Uint8Array)||a.length<8)throw new F("PBES2 Salt Input must be 8 or more octets");if(!Number.isSafeInteger(c)||1!==Math.sign(c))throw new F("PBES2 Count Input must be a positive integer");let e=j(n(b),Uint8Array.of(0),a),f=parseInt(b.slice(13,16),10),g={hash:`SHA-${b.slice(8,11)}`,iterations:c,name:"PBKDF2",salt:e},h=await (d instanceof Uint8Array?crypto.subtle.importKey("raw",d,"PBKDF2",!1,["deriveBits"]):(v(d,b,"deriveBits"),d));return new Uint8Array(await crypto.subtle.deriveBits(g,h,f))}async function av(a,b,c,d=2048,e=crypto.getRandomValues(new Uint8Array(16))){let f=await au(e,a,d,b);return{encryptedKey:await ao(a.slice(-6),f,c),p2c:d,p2s:r(e)}}async function aw(a,b,c,d,e){let f=await au(e,a,d,b);return ap(a.slice(-6),f,c)}function ax(a,b){if(a.startsWith("RS")||a.startsWith("PS")){let{modulusLength:c}=b.algorithm;if("number"!=typeof c||c<2048)throw TypeError(`${a} requires key modulusLength to be 2048 bits or larger`)}}function ay(a,b){let c=`SHA-${a.slice(-3)}`;switch(a){case"HS256":case"HS384":case"HS512":return{hash:c,name:"HMAC"};case"PS256":case"PS384":case"PS512":return{hash:c,name:"RSA-PSS",saltLength:parseInt(a.slice(-3),10)>>3};case"RS256":case"RS384":case"RS512":return{hash:c,name:"RSASSA-PKCS1-v1_5"};case"ES256":case"ES384":case"ES512":return{hash:c,name:"ECDSA",namedCurve:b.namedCurve};case"Ed25519":case"EdDSA":return{name:"Ed25519"};case"ML-DSA-44":case"ML-DSA-65":case"ML-DSA-87":return{name:a};default:throw new D(`alg ${a} is not supported either by JOSE or your javascript runtime`)}}async function az(a,b,c){if(b instanceof Uint8Array){if(!a.startsWith("HS"))throw TypeError(x(b,"CryptoKey","KeyObject","JSON Web Key"));return crypto.subtle.importKey("raw",b,{hash:`SHA-${a.slice(-3)}`,name:"HMAC"},!1,[c])}switch(a){case"HS256":case"HS384":case"HS512":if("HMAC"!==b.algorithm.name)throw s("HMAC");t(b.algorithm,parseInt(a.slice(2),10));break;case"RS256":case"RS384":case"RS512":if("RSASSA-PKCS1-v1_5"!==b.algorithm.name)throw s("RSASSA-PKCS1-v1_5");t(b.algorithm,parseInt(a.slice(2),10));break;case"PS256":case"PS384":case"PS512":if("RSA-PSS"!==b.algorithm.name)throw s("RSA-PSS");t(b.algorithm,parseInt(a.slice(2),10));break;case"Ed25519":case"EdDSA":if("Ed25519"!==b.algorithm.name)throw s("Ed25519");break;case"ML-DSA-44":case"ML-DSA-65":case"ML-DSA-87":let d;if(d=b.algorithm,d.name!==a)throw s(a);break;case"ES256":case"ES384":case"ES512":{if("ECDSA"!==b.algorithm.name)throw s("ECDSA");let c=function(a){switch(a){case"ES256":return"P-256";case"ES384":return"P-384";case"ES512":return"P-521";default:throw Error("unreachable")}}(a);if(b.algorithm.namedCurve!==c)throw s(c,"algorithm.namedCurve");break}default:throw TypeError("CryptoKey does not support this operation")}return u(b,c),b}async function aA(a,b,c){let d=await az(a,b,"sign");return ax(a,d),new Uint8Array(await crypto.subtle.sign(ay(a,d.algorithm),d,c))}async function aB(a,b,c,d){let e=await az(a,b,"verify");ax(a,e);let f=ay(a,e.algorithm);try{return await crypto.subtle.verify(f,e,c,d)}catch{return!1}}let aC=a=>{switch(a){case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":return"RSA-OAEP";default:throw new D(`alg ${a} is not supported either by JOSE or your javascript runtime`)}};async function aD(a,b,c){return v(b,a,"encrypt"),ax(a,b),new Uint8Array(await crypto.subtle.encrypt(aC(a),b,c))}async function aE(a,b,c){return v(b,a,"decrypt"),ax(a,b),new Uint8Array(await crypto.subtle.decrypt(aC(a),b,c))}let aF='Invalid or unsupported JWK "alg" (Algorithm) Parameter value';async function aG(a){if(!a.alg)throw TypeError('"alg" argument is required when "jwk.alg" is not present');let{algorithm:b,keyUsages:c}=function(a){let b,c;switch(a.kty){case"AKP":switch(a.alg){case"ML-DSA-44":case"ML-DSA-65":case"ML-DSA-87":b={name:a.alg},c=a.priv?["sign"]:["verify"];break;default:throw new D(aF)}break;case"RSA":switch(a.alg){case"PS256":case"PS384":case"PS512":b={name:"RSA-PSS",hash:`SHA-${a.alg.slice(-3)}`},c=a.d?["sign"]:["verify"];break;case"RS256":case"RS384":case"RS512":b={name:"RSASSA-PKCS1-v1_5",hash:`SHA-${a.alg.slice(-3)}`},c=a.d?["sign"]:["verify"];break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":b={name:"RSA-OAEP",hash:`SHA-${parseInt(a.alg.slice(-3),10)||1}`},c=a.d?["decrypt","unwrapKey"]:["encrypt","wrapKey"];break;default:throw new D(aF)}break;case"EC":switch(a.alg){case"ES256":case"ES384":case"ES512":b={name:"ECDSA",namedCurve:({ES256:"P-256",ES384:"P-384",ES512:"P-521"})[a.alg]},c=a.d?["sign"]:["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":b={name:"ECDH",namedCurve:a.crv},c=a.d?["deriveBits"]:[];break;default:throw new D(aF)}break;case"OKP":switch(a.alg){case"Ed25519":case"EdDSA":b={name:"Ed25519"},c=a.d?["sign"]:["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":b={name:a.crv},c=a.d?["deriveBits"]:[];break;default:throw new D(aF)}break;default:throw new D('Invalid or unsupported JWK "kty" (Key Type) Parameter value')}return{algorithm:b,keyUsages:c}}(a),d={...a};return"AKP"!==d.kty&&delete d.alg,delete d.use,crypto.subtle.importKey("jwk",d,b,a.ext??(!a.d&&!a.priv),a.key_ops??c)}let aH="given KeyObject instance cannot be used for this algorithm",aI=async(a,b,c,e=!1)=>{let f=(d||=new WeakMap).get(a);if(f?.[c])return f[c];let g=await aG({...b,alg:c});return e&&Object.freeze(a),f?f[c]=g:d.set(a,{[c]:g}),g};async function aJ(a,b){if(a instanceof Uint8Array||P(a))return a;if(Q(a)){if("secret"===a.type)return a.export();if("toCryptoKey"in a&&"function"==typeof a.toCryptoKey)try{return((a,b)=>{let c,e=(d||=new WeakMap).get(a);if(e?.[b])return e[b];let f="public"===a.type,g=!!f;if("x25519"===a.asymmetricKeyType){switch(b){case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":break;default:throw TypeError(aH)}c=a.toCryptoKey(a.asymmetricKeyType,g,f?[]:["deriveBits"])}if("ed25519"===a.asymmetricKeyType){if("EdDSA"!==b&&"Ed25519"!==b)throw TypeError(aH);c=a.toCryptoKey(a.asymmetricKeyType,g,[f?"verify":"sign"])}switch(a.asymmetricKeyType){case"ml-dsa-44":case"ml-dsa-65":case"ml-dsa-87":if(b!==a.asymmetricKeyType.toUpperCase())throw TypeError(aH);c=a.toCryptoKey(a.asymmetricKeyType,g,[f?"verify":"sign"])}if("rsa"===a.asymmetricKeyType){let d;switch(b){case"RSA-OAEP":d="SHA-1";break;case"RS256":case"PS256":case"RSA-OAEP-256":d="SHA-256";break;case"RS384":case"PS384":case"RSA-OAEP-384":d="SHA-384";break;case"RS512":case"PS512":case"RSA-OAEP-512":d="SHA-512";break;default:throw TypeError(aH)}if(b.startsWith("RSA-OAEP"))return a.toCryptoKey({name:"RSA-OAEP",hash:d},g,f?["encrypt"]:["decrypt"]);c=a.toCryptoKey({name:b.startsWith("PS")?"RSA-PSS":"RSASSA-PKCS1-v1_5",hash:d},g,[f?"verify":"sign"])}if("ec"===a.asymmetricKeyType){let d=new Map([["prime256v1","P-256"],["secp384r1","P-384"],["secp521r1","P-521"]]).get(a.asymmetricKeyDetails?.namedCurve);if(!d)throw TypeError(aH);let e={ES256:"P-256",ES384:"P-384",ES512:"P-521"};e[b]&&d===e[b]&&(c=a.toCryptoKey({name:"ECDSA",namedCurve:d},g,[f?"verify":"sign"])),b.startsWith("ECDH-ES")&&(c=a.toCryptoKey({name:"ECDH",namedCurve:d},g,f?[]:["deriveBits"]))}if(!c)throw TypeError(aH);return e?e[b]=c:d.set(a,{[b]:c}),c})(a,b)}catch(a){if(a instanceof TypeError)throw a}let c=a.export({format:"jwk"});return aI(a,c,b)}if(al(a))return a.k?q(a.k):aI(a,a,b,!0);throw Error("unreachable")}let aK=(a,b)=>{let c=(a.match(/.{1,64}/g)||[]).join("\n");return`-----BEGIN ${b}-----
2
+ ${c}
3
+ -----END ${b}-----`},aL=async(a,b,c)=>{if(Q(c)){if(c.type!==a)throw TypeError(`key is not a ${a} key`);return c.export({format:"pem",type:b})}if(!P(c))throw TypeError(x(c,"CryptoKey","KeyObject"));if(!c.extractable)throw TypeError("CryptoKey is not extractable");if(c.type!==a)throw TypeError(`key is not a ${a} key`);return aK(o(new Uint8Array(await crypto.subtle.exportKey(b,c))),`${a.toUpperCase()} KEY`)},aM=(a,b)=>{if(a.byteLength!==b.length)return!1;for(let c=0;c<a.byteLength;c++)if(a[c]!==b[c])return!1;return!0},aN=a=>({data:a,pos:0}),aO=a=>{let b=a.data[a.pos++];if(128&b){let c=127&b,d=0;for(let b=0;b<c;b++)d=d<<8|a.data[a.pos++];return d}return b},aP=(a,b=1)=>{if(b<=0)return;a.pos++;let c=aO(a);a.pos+=c,b>1&&aP(a,b-1)},aQ=(a,b,c)=>{if(a.data[a.pos++]!==b)throw Error(c)},aR=(a,b)=>{let c=a.data.subarray(a.pos,a.pos+b);return a.pos+=b,c},aS=a=>{let b=(a=>{aQ(a,6,"Expected algorithm OID");let b=aO(a);return aR(a,b)})(a);if(aM(b,[43,101,110]))return"X25519";if(!aM(b,[42,134,72,206,61,2,1]))throw Error("Unsupported key algorithm");aQ(a,6,"Expected curve OID");let c=aO(a),d=aR(a,c);for(let{name:a,oid:b}of[{name:"P-256",oid:[42,134,72,206,61,3,1,7]},{name:"P-384",oid:[43,129,4,0,34]},{name:"P-521",oid:[43,129,4,0,35]}])if(aM(d,b))return a;throw Error("Unsupported named curve")},aT=async(a,b,c,d)=>{let e,f,g="spki"===a,h=()=>g?["verify"]:["sign"];switch(c){case"PS256":case"PS384":case"PS512":e={name:"RSA-PSS",hash:`SHA-${c.slice(-3)}`},f=h();break;case"RS256":case"RS384":case"RS512":e={name:"RSASSA-PKCS1-v1_5",hash:`SHA-${c.slice(-3)}`},f=h();break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":e={name:"RSA-OAEP",hash:`SHA-${parseInt(c.slice(-3),10)||1}`},f=g?["encrypt","wrapKey"]:["decrypt","unwrapKey"];break;case"ES256":case"ES384":case"ES512":e={name:"ECDSA",namedCurve:({ES256:"P-256",ES384:"P-384",ES512:"P-521"})[c]},f=h();break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":try{let a=d.getNamedCurve(b);e="X25519"===a?{name:"X25519"}:{name:"ECDH",namedCurve:a}}catch(a){throw new D("Invalid or unsupported key format")}f=g?[]:["deriveBits"];break;case"Ed25519":case"EdDSA":e={name:"Ed25519"},f=h();break;case"ML-DSA-44":case"ML-DSA-65":case"ML-DSA-87":e={name:c},f=h();break;default:throw new D('Invalid or unsupported "alg" (Algorithm) value')}return crypto.subtle.importKey(a,b,e,d?.extractable??!!g,f)},aU=(a,b)=>p(a.replace(b,"")),aV=(a,b,c)=>{let d=aU(a,/(?:-----(?:BEGIN|END) PUBLIC KEY-----|\s)/g),e=c;return b?.startsWith?.("ECDH-ES")&&((e||={}).getNamedCurve=a=>{let b=aN(a);return!function(a){aQ(a,48,"Invalid SPKI structure"),aO(a),aQ(a,48,"Expected algorithm identifier"),aO(a),a.pos}(b),aS(b)}),aT("spki",d,b,e)};async function aW(a,b,c){if("string"!=typeof a||0!==a.indexOf("-----BEGIN PUBLIC KEY-----"))throw TypeError('"spki" must be SPKI formatted string');return aV(a,b,c)}async function aX(a,b,c){let d;if("string"!=typeof a||0!==a.indexOf("-----BEGIN CERTIFICATE-----"))throw TypeError('"x509" must be X.509 formatted string');try{d=function(a){var b=aU(a,/(?:-----(?:BEGIN|END) CERTIFICATE-----|\s)/g);let c=aN(b);aQ(c,48,"Invalid certificate structure"),aO(c),aQ(c,48,"Invalid tbsCertificate structure"),aO(c),160===b[c.pos]?aP(c,6):aP(c,5);let d=c.pos;aQ(c,48,"Invalid SPKI structure");let e=aO(c);return b.subarray(d,d+e+(c.pos-d))}(a)}catch(a){throw TypeError("Failed to parse the X.509 certificate",{cause:a})}return aV(aK(o(d),"PUBLIC KEY"),b,c)}async function aY(a,b,c){if("string"!=typeof a||0!==a.indexOf("-----BEGIN PRIVATE KEY-----"))throw TypeError('"pkcs8" must be PKCS#8 formatted string');let d=aU(a,/(?:-----(?:BEGIN|END) PRIVATE KEY-----|\s)/g),e=c;return b?.startsWith?.("ECDH-ES")&&((e||={}).getNamedCurve=a=>{let b=aN(a);return!function(a){aQ(a,48,"Invalid PKCS#8 structure"),aO(a),aQ(a,2,"Expected version field");let b=aO(a);a.pos+=b,aQ(a,48,"Expected algorithm identifier"),aO(a),a.pos}(b),aS(b)}),aT("pkcs8",d,b,e)}async function aZ(a,b,c){let d;if(!aj(a))throw TypeError("JWK must be an object");switch(b??=a.alg,d??=c?.extractable??a.ext,a.kty){case"oct":if("string"!=typeof a.k||!a.k)throw TypeError('missing "k" (Key Value) Parameter value');return q(a.k);case"RSA":if("oth"in a&&void 0!==a.oth)throw new D('RSA JWK "oth" (Other Primes Info) Parameter value is not supported');return aG({...a,alg:b,ext:d});case"AKP":if("string"!=typeof a.alg||!a.alg)throw TypeError('missing "alg" (Algorithm) Parameter value');if(void 0!==b&&b!==a.alg)throw TypeError("JWK alg and alg option value mismatch");return aG({...a,ext:d});case"EC":case"OKP":return aG({...a,alg:b,ext:d});default:throw new D('Unsupported "kty" (Key Type) Parameter value')}}async function a$(a){if(Q(a))if("secret"!==a.type)return a.export({format:"jwk"});else a=a.export();if(a instanceof Uint8Array)return{kty:"oct",k:r(a)};if(!P(a))throw TypeError(x(a,"CryptoKey","KeyObject","Uint8Array"));if(!a.extractable)throw TypeError("non-extractable CryptoKey cannot be exported as a JWK");let{ext:b,key_ops:c,alg:d,use:e,...f}=await crypto.subtle.exportKey("jwk",a);return"AKP"===f.kty&&(f.alg=d),f}async function a_(a){return aL("public","spki",a)}async function a0(a){return aL("private","pkcs8",a)}async function a1(a){return a$(a)}async function a2(a,b,c,d){let e=a.slice(0,7),f=await ad(e,c,b,d,new Uint8Array);return{encryptedKey:f.ciphertext,iv:r(f.iv),tag:r(f.tag)}}async function a3(a,b,c,d,e){return ae(a.slice(0,7),b,c,d,e,new Uint8Array)}let a4='Invalid or unsupported "alg" (JWE Algorithm) header value';function a5(a){if(void 0===a)throw new F("JWE Encrypted Key missing")}async function a6(a,b,c,d,e){switch(a){case"dir":if(void 0!==c)throw new F("Encountered unexpected JWE Encrypted Key");return b;case"ECDH-ES":if(void 0!==c)throw new F("Encountered unexpected JWE Encrypted Key");case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":{let e,f;if(!aj(d.epk))throw new F('JOSE Header "epk" (Ephemeral Public Key) missing or invalid');if(O(b),!at(b))throw new D("ECDH with the provided key is not allowed or not supported by your javascript runtime");let g=await aZ(d.epk,a);if(O(g),void 0!==d.apu){if("string"!=typeof d.apu)throw new F('JOSE Header "apu" (Agreement PartyUInfo) invalid');e=ah(d.apu,"apu",F)}if(void 0!==d.apv){if("string"!=typeof d.apv)throw new F('JOSE Header "apv" (Agreement PartyVInfo) invalid');f=ah(d.apv,"apv",F)}let h=await as(g,b,"ECDH-ES"===a?d.enc:a,"ECDH-ES"===a?S(d.enc):parseInt(a.slice(-5,-2),10),e,f);if("ECDH-ES"===a)return h;return a5(c),ap(a.slice(-6),h,c)}case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":return a5(c),O(b),aE(a,b,c);case"PBES2-HS256+A128KW":case"PBES2-HS384+A192KW":case"PBES2-HS512+A256KW":{let f;if(a5(c),"number"!=typeof d.p2c)throw new F('JOSE Header "p2c" (PBES2 Count) missing or invalid');let g=e?.maxPBES2Count||1e4;if(d.p2c>g)throw new F('JOSE Header "p2c" (PBES2 Count) out is of acceptable bounds');if("string"!=typeof d.p2s)throw new F('JOSE Header "p2s" (PBES2 Salt) missing or invalid');return f=ah(d.p2s,"p2s",F),aw(a,b,c,d.p2c,f)}case"A128KW":case"A192KW":case"A256KW":return a5(c),ap(a,b,c);case"A128GCMKW":case"A192GCMKW":case"A256GCMKW":if(a5(c),"string"!=typeof d.iv)throw new F('JOSE Header "iv" (Initialization Vector) missing or invalid');if("string"!=typeof d.tag)throw new F('JOSE Header "tag" (Authentication Tag) missing or invalid');return a3(a,b,c,ah(d.iv,"iv",F),ah(d.tag,"tag",F));default:throw new D(a4)}}async function a7(a,b,c,d,e={}){let f,g,h;switch(a){case"dir":h=c;break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":{let i;if(O(c),!at(c))throw new D("ECDH with the provided key is not allowed or not supported by your javascript runtime");let{apu:j,apv:k}=e;i=e.epk?await aJ(e.epk,a):(await crypto.subtle.generateKey(c.algorithm,!0,["deriveBits"])).privateKey;let{x:l,y:m,crv:n,kty:o}=await a1(i),p=await as(c,i,"ECDH-ES"===a?b:a,"ECDH-ES"===a?S(b):parseInt(a.slice(-5,-2),10),j,k);if(g={epk:{x:l,crv:n,kty:o}},"EC"===o&&(g.epk.y=m),j&&(g.apu=r(j)),k&&(g.apv=r(k)),"ECDH-ES"===a){h=p;break}h=d||T(b);let q=a.slice(-6);f=await ao(q,p,h);break}case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":h=d||T(b),O(c),f=await aD(a,c,h);break;case"PBES2-HS256+A128KW":case"PBES2-HS384+A192KW":case"PBES2-HS512+A256KW":{h=d||T(b);let{p2c:i,p2s:j}=e;({encryptedKey:f,...g}=await av(a,c,h,i,j));break}case"A128KW":case"A192KW":case"A256KW":h=d||T(b),f=await ao(a,c,h);break;case"A128GCMKW":case"A192GCMKW":case"A256GCMKW":{h=d||T(b);let{iv:i}=e;({encryptedKey:f,...g}=await a2(a,c,h,i));break}default:throw new D(a4)}return{cek:h,encryptedKey:f,parameters:g}}function a8(a,b,c,d,e){let f;if(void 0!==e.crit&&d?.crit===void 0)throw new a('"crit" (Critical) Header Parameter MUST be integrity protected');if(!d||void 0===d.crit)return new Set;if(!Array.isArray(d.crit)||0===d.crit.length||d.crit.some(a=>"string"!=typeof a||0===a.length))throw new a('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');for(let g of(f=void 0!==c?new Map([...Object.entries(c),...b.entries()]):b,d.crit)){if(!f.has(g))throw new D(`Extension Header Parameter "${g}" is not recognized`);if(void 0===e[g])throw new a(`Extension Header Parameter "${g}" is missing`);if(f.get(g)&&void 0===d[g])throw new a(`Extension Header Parameter "${g}" MUST be integrity protected`)}return new Set(d.crit)}function a9(a,b){if(void 0!==b&&(!Array.isArray(b)||b.some(a=>"string"!=typeof a)))throw TypeError(`"${a}" option must be an array of strings`);if(b)return new Set(b)}let ba=a=>a?.[Symbol.toStringTag],bb=(a,b,c)=>{if(void 0!==b.use){let a;switch(c){case"sign":case"verify":a="sig";break;case"encrypt":case"decrypt":a="enc"}if(b.use!==a)throw TypeError(`Invalid key for this operation, its "use" must be "${a}" when present`)}if(void 0!==b.alg&&b.alg!==a)throw TypeError(`Invalid key for this operation, its "alg" must be "${a}" when present`);if(Array.isArray(b.key_ops)){let d;switch(!0){case"sign"===c||"verify"===c:case"dir"===a:case a.includes("CBC-HS"):d=c;break;case a.startsWith("PBES2"):d="deriveBits";break;case/^A\d{3}(?:GCM)?(?:KW)?$/.test(a):d=!a.includes("GCM")&&a.endsWith("KW")?"encrypt"===c?"wrapKey":"unwrapKey":c;break;case"encrypt"===c&&a.startsWith("RSA"):d="wrapKey";break;case"decrypt"===c:d=a.startsWith("RSA")?"unwrapKey":"deriveBits"}if(d&&b.key_ops?.includes?.(d)===!1)throw TypeError(`Invalid key for this operation, its "key_ops" must include "${d}" when present`)}return!0};function bc(a,b,c){switch(a.substring(0,2)){case"A1":case"A2":case"di":case"HS":case"PB":((a,b,c)=>{if(!(b instanceof Uint8Array)){if(al(b)){let d;if("oct"===(d=b).kty&&"string"==typeof d.k&&bb(a,b,c))return;throw TypeError('JSON Web Key for symmetric algorithms must have JWK "kty" (Key Type) equal to "oct" and the JWK "k" (Key Value) present')}if(!R(b))throw TypeError(y(a,b,"CryptoKey","KeyObject","JSON Web Key","Uint8Array"));if("secret"!==b.type)throw TypeError(`${ba(b)} instances for symmetric algorithms must be of type "secret"`)}})(a,b,c);break;default:((a,b,c)=>{if(al(b))switch(c){case"decrypt":case"sign":let d;if("oct"!==(d=b).kty&&("AKP"===d.kty&&"string"==typeof d.priv||"string"==typeof d.d)&&bb(a,b,c))return;throw TypeError("JSON Web Key for this operation must be a private JWK");case"encrypt":case"verify":let e;if("oct"!==(e=b).kty&&void 0===e.d&&void 0===e.priv&&bb(a,b,c))return;throw TypeError("JSON Web Key for this operation must be a public JWK")}if(!R(b))throw TypeError(y(a,b,"CryptoKey","KeyObject","JSON Web Key"));if("secret"===b.type)throw TypeError(`${ba(b)} instances for asymmetric algorithms must not be of type "secret"`);if("public"===b.type)switch(c){case"sign":throw TypeError(`${ba(b)} instances for asymmetric algorithm signing must be of type "private"`);case"decrypt":throw TypeError(`${ba(b)} instances for asymmetric algorithm decryption must be of type "private"`)}if("private"===b.type)switch(c){case"verify":throw TypeError(`${ba(b)} instances for asymmetric algorithm verifying must be of type "public"`);case"encrypt":throw TypeError(`${ba(b)} instances for asymmetric algorithm encryption must be of type "public"`)}})(a,b,c)}}function bd(a){if(void 0===globalThis[a])throw new D(`JWE "zip" (Compression Algorithm) Header Parameter requires the ${a} API.`)}async function be(a){bd("CompressionStream");let b=new CompressionStream("deflate-raw"),c=b.writable.getWriter();c.write(a).catch(()=>{}),c.close().catch(()=>{});let d=[],e=b.readable.getReader();for(;;){let{value:a,done:b}=await e.read();if(b)break;d.push(a)}return j(...d)}async function bf(a,b){bd("DecompressionStream");let c=new DecompressionStream("deflate-raw"),d=c.writable.getWriter();d.write(a).catch(()=>{}),d.close().catch(()=>{});let e=[],f=0,g=c.readable.getReader();for(;;){let{value:a,done:c}=await g.read();if(c)break;if(e.push(a),f+=a.byteLength,b!==1/0&&f>b)throw new F("Decompressed plaintext exceeded the configured limit")}return j(...e)}async function bg(a,b,c){let d,e,f,g,h,k;if(!aj(a))throw new F("Flattened JWE must be an object");if(void 0===a.protected&&void 0===a.header&&void 0===a.unprotected)throw new F("JOSE Header missing");if(void 0!==a.iv&&"string"!=typeof a.iv)throw new F("JWE Initialization Vector incorrect type");if("string"!=typeof a.ciphertext)throw new F("JWE Ciphertext missing or incorrect type");if(void 0!==a.tag&&"string"!=typeof a.tag)throw new F("JWE Authentication Tag incorrect type");if(void 0!==a.protected&&"string"!=typeof a.protected)throw new F("JWE Protected Header incorrect type");if(void 0!==a.encrypted_key&&"string"!=typeof a.encrypted_key)throw new F("JWE Encrypted Key incorrect type");if(void 0!==a.aad&&"string"!=typeof a.aad)throw new F("JWE AAD incorrect type");if(void 0!==a.header&&!aj(a.header))throw new F("JWE Shared Unprotected Header incorrect type");if(void 0!==a.unprotected&&!aj(a.unprotected))throw new F("JWE Per-Recipient Unprotected Header incorrect type");if(a.protected)try{let b=q(a.protected);d=JSON.parse(i.decode(b))}catch{throw new F("JWE Protected Header is invalid")}if(!ak(d,a.header,a.unprotected))throw new F("JWE Protected, JWE Unprotected Header, and JWE Per-Recipient Unprotected Header Parameter names must be disjoint");let l={...d,...a.header,...a.unprotected};if(a8(F,new Map,c?.crit,d,l),void 0!==l.zip&&"DEF"!==l.zip)throw new D('Unsupported JWE "zip" (Compression Algorithm) Header Parameter value.');if(void 0!==l.zip&&!d?.zip)throw new F('JWE "zip" (Compression Algorithm) Header Parameter MUST be in a protected header.');let{alg:m,enc:o}=l;if("string"!=typeof m||!m)throw new F("missing JWE Algorithm (alg) in JWE Header");if("string"!=typeof o||!o)throw new F("missing JWE Encryption Algorithm (enc) in JWE Header");let p=c&&a9("keyManagementAlgorithms",c.keyManagementAlgorithms),r=c&&a9("contentEncryptionAlgorithms",c.contentEncryptionAlgorithms);if(p&&!p.has(m)||!p&&m.startsWith("PBES2"))throw new C('"alg" (Algorithm) Header Parameter value not allowed');if(r&&!r.has(o))throw new C('"enc" (Encryption Algorithm) Header Parameter value not allowed');void 0!==a.encrypted_key&&(e=ah(a.encrypted_key,"encrypted_key",F));let s=!1;"function"==typeof b&&(b=await b(d,a),s=!0),bc("dir"===m?o:m,b,"decrypt");let t=await aJ(b,m);try{f=await a6(m,t,e,l,c)}catch(a){if(a instanceof TypeError||a instanceof F||a instanceof D)throw a;f=T(o)}void 0!==a.iv&&(g=ah(a.iv,"iv",F)),void 0!==a.tag&&(h=ah(a.tag,"tag",F));let u=void 0!==a.protected?n(a.protected):new Uint8Array;k=void 0!==a.aad?j(u,n("."),n(a.aad)):u;let v=ah(a.ciphertext,"ciphertext",F),w=await ae(o,f,v,g,h,k),x={plaintext:w};if("DEF"===l.zip){let a=c?.maxDecompressedLength??25e4;if(0===a)throw new D('JWE "zip" (Compression Algorithm) Header Parameter is not supported.');if(a!==1/0&&(!Number.isSafeInteger(a)||a<1))throw TypeError("maxDecompressedLength must be 0, a positive safe integer, or Infinity");x.plaintext=await bf(w,a).catch(a=>{if(a instanceof F)throw a;throw new F("Failed to decompress plaintext",{cause:a})})}return(void 0!==a.protected&&(x.protectedHeader=d),void 0!==a.aad&&(x.additionalAuthenticatedData=ah(a.aad,"aad",F)),void 0!==a.unprotected&&(x.sharedUnprotectedHeader=a.unprotected),void 0!==a.header&&(x.unprotectedHeader=a.header),s)?{...x,key:t}:x}async function bh(a,b,c){if(a instanceof Uint8Array&&(a=i.decode(a)),"string"!=typeof a)throw new F("Compact JWE must be a string or Uint8Array");let{0:d,1:e,2:f,3:g,4:h,length:j}=a.split(".");if(5!==j)throw new F("Invalid Compact JWE");let k=await bg({ciphertext:g,iv:f||void 0,protected:d,tag:h||void 0,encrypted_key:e||void 0},b,c),l={plaintext:k.plaintext,protectedHeader:k.protectedHeader};return"function"==typeof b?{...l,key:k.key}:l}async function bi(a,b,c){if(!aj(a))throw new F("General JWE must be an object");if(!Array.isArray(a.recipients)||!a.recipients.every(aj))throw new F("JWE Recipients missing or incorrect type");if(!a.recipients.length)throw new F("JWE Recipients has no members");for(let d of a.recipients)try{return await bg({aad:a.aad,ciphertext:a.ciphertext,encrypted_key:d.encrypted_key,header:d.header,iv:a.iv,protected:a.protected,tag:a.tag,unprotected:a.unprotected},b,c)}catch{}throw new E}class bj{#a;#b;#c;#d;#e;#f;#g;#h;constructor(a){if(!(a instanceof Uint8Array))throw TypeError("plaintext must be an instance of Uint8Array");this.#a=a}setKeyManagementParameters(a){return ag(this.#h,"setKeyManagementParameters"),this.#h=a,this}setProtectedHeader(a){return ag(this.#b,"setProtectedHeader"),this.#b=a,this}setSharedUnprotectedHeader(a){return ag(this.#c,"setSharedUnprotectedHeader"),this.#c=a,this}setUnprotectedHeader(a){return ag(this.#d,"setUnprotectedHeader"),this.#d=a,this}setAdditionalAuthenticatedData(a){return this.#e=a,this}setContentEncryptionKey(a){return ag(this.#f,"setContentEncryptionKey"),this.#f=a,this}setInitializationVector(a){return ag(this.#g,"setInitializationVector"),this.#g=a,this}async encrypt(a,b){let c,d,e,f,g,h;if(!this.#b&&!this.#d&&!this.#c)throw new F("either setProtectedHeader, setUnprotectedHeader, or sharedUnprotectedHeader must be called before #encrypt()");if(!ak(this.#b,this.#d,this.#c))throw new F("JWE Protected, JWE Shared Unprotected and JWE Per-Recipient Header Parameter names must be disjoint");let i={...this.#b,...this.#d,...this.#c};if(a8(F,new Map,b?.crit,this.#b,i),void 0!==i.zip&&"DEF"!==i.zip)throw new D('Unsupported JWE "zip" (Compression Algorithm) Header Parameter value.');if(void 0!==i.zip&&!this.#b?.zip)throw new F('JWE "zip" (Compression Algorithm) Header Parameter MUST be in a protected header.');let{alg:k,enc:l}=i;if("string"!=typeof k||!k)throw new F('JWE "alg" (Algorithm) Header Parameter missing or invalid');if("string"!=typeof l||!l)throw new F('JWE "enc" (Encryption Algorithm) Header Parameter missing or invalid');if(this.#f&&("dir"===k||"ECDH-ES"===k))throw TypeError(`setContentEncryptionKey cannot be called with JWE "alg" (Algorithm) Header ${k}`);bc("dir"===k?l:k,a,"encrypt");{let e,f=await aJ(a,k);({cek:d,encryptedKey:c,parameters:e}=await a7(k,l,f,this.#f,this.#h)),e&&(b&&af in b?this.#d?this.#d={...this.#d,...e}:this.setUnprotectedHeader(e):this.#b?this.#b={...this.#b,...e}:this.setProtectedHeader(e))}if(this.#b?g=n(f=r(JSON.stringify(this.#b))):(f="",g=new Uint8Array),this.#e){let a=n(h=r(this.#e));e=j(g,n("."),a)}else e=g;let m=this.#a;"DEF"===i.zip&&(m=await be(m).catch(a=>{throw new F("Failed to compress plaintext",{cause:a})}));let{ciphertext:o,tag:p,iv:q}=await ad(l,m,d,this.#g,e),s={ciphertext:r(o)};return q&&(s.iv=r(q)),p&&(s.tag=r(p)),c&&(s.encrypted_key=r(c)),h&&(s.aad=h),this.#b&&(s.protected=f),this.#c&&(s.unprotected=this.#c),this.#d&&(s.header=this.#d),s}}class bk{#i;unprotectedHeader;keyManagementParameters;key;options;constructor(a,b,c){this.#i=a,this.key=b,this.options=c}setUnprotectedHeader(a){return ag(this.unprotectedHeader,"setUnprotectedHeader"),this.unprotectedHeader=a,this}setKeyManagementParameters(a){return ag(this.keyManagementParameters,"setKeyManagementParameters"),this.keyManagementParameters=a,this}addRecipient(...a){return this.#i.addRecipient(...a)}encrypt(...a){return this.#i.encrypt(...a)}done(){return this.#i}}class bl{#a;#j=[];#b;#d;#e;constructor(a){this.#a=a}addRecipient(a,b){let c=new bk(this,a,{crit:b?.crit});return this.#j.push(c),c}setProtectedHeader(a){return ag(this.#b,"setProtectedHeader"),this.#b=a,this}setSharedUnprotectedHeader(a){return ag(this.#d,"setSharedUnprotectedHeader"),this.#d=a,this}setAdditionalAuthenticatedData(a){return this.#e=a,this}async encrypt(){let a;if(!this.#j.length)throw new F("at least one recipient must be added");if(1===this.#j.length){let[a]=this.#j,b=await new bj(this.#a).setAdditionalAuthenticatedData(this.#e).setProtectedHeader(this.#b).setSharedUnprotectedHeader(this.#d).setUnprotectedHeader(a.unprotectedHeader).encrypt(a.key,{...a.options}),c={ciphertext:b.ciphertext,iv:b.iv,recipients:[{}],tag:b.tag};return b.aad&&(c.aad=b.aad),b.protected&&(c.protected=b.protected),b.unprotected&&(c.unprotected=b.unprotected),b.encrypted_key&&(c.recipients[0].encrypted_key=b.encrypted_key),b.header&&(c.recipients[0].header=b.header),c}for(let b=0;b<this.#j.length;b++){let c=this.#j[b];if(!ak(this.#b,this.#d,c.unprotectedHeader))throw new F("JWE Protected, JWE Shared Unprotected and JWE Per-Recipient Header Parameter names must be disjoint");let d={...this.#b,...this.#d,...c.unprotectedHeader},{alg:e}=d;if("string"!=typeof e||!e)throw new F('JWE "alg" (Algorithm) Header Parameter missing or invalid');if("dir"===e||"ECDH-ES"===e)throw new F('"dir" and "ECDH-ES" alg may only be used with a single recipient');if("string"!=typeof d.enc||!d.enc)throw new F('JWE "enc" (Encryption Algorithm) Header Parameter missing or invalid');if(a){if(a!==d.enc)throw new F('JWE "enc" (Encryption Algorithm) Header Parameter must be the same for all recipients')}else a=d.enc;if(a8(F,new Map,c.options.crit,this.#b,d),void 0!==d.zip&&"DEF"!==d.zip)throw new D('Unsupported JWE "zip" (Compression Algorithm) Header Parameter value.');if(void 0!==d.zip&&!this.#b?.zip)throw new F('JWE "zip" (Compression Algorithm) Header Parameter MUST be in a protected header.')}let b=T(a),c={ciphertext:"",recipients:[]};for(let d=0;d<this.#j.length;d++){let e=this.#j[d],f={};if(c.recipients.push(f),0===d){let a=await new bj(this.#a).setAdditionalAuthenticatedData(this.#e).setContentEncryptionKey(b).setProtectedHeader(this.#b).setSharedUnprotectedHeader(this.#d).setUnprotectedHeader(e.unprotectedHeader).setKeyManagementParameters(e.keyManagementParameters).encrypt(e.key,{...e.options,[af]:!0});c.ciphertext=a.ciphertext,c.iv=a.iv,c.tag=a.tag,a.aad&&(c.aad=a.aad),a.protected&&(c.protected=a.protected),a.unprotected&&(c.unprotected=a.unprotected),f.encrypted_key=a.encrypted_key,a.header&&(f.header=a.header);continue}let g=e.unprotectedHeader?.alg||this.#b?.alg||this.#d?.alg;bc("dir"===g?a:g,e.key,"encrypt");let h=await aJ(e.key,g),{encryptedKey:i,parameters:j}=await a7(g,a,h,b,e.keyManagementParameters);f.encrypted_key=r(i),(e.unprotectedHeader||j)&&(f.header={...e.unprotectedHeader,...j})}return c}}async function bm(a,b,c){if(!aj(a))throw new G("Flattened JWS must be an object");if(void 0===a.protected&&void 0===a.header)throw new G('Flattened JWS must have either of the "protected" or "header" members');if(void 0!==a.protected&&"string"!=typeof a.protected)throw new G("JWS Protected Header incorrect type");if(void 0===a.payload)throw new G("JWS Payload missing");if("string"!=typeof a.signature)throw new G("JWS Signature missing or incorrect type");if(void 0!==a.header&&!aj(a.header))throw new G("JWS Unprotected Header incorrect type");let d={};if(a.protected)try{let b=q(a.protected);d=JSON.parse(i.decode(b))}catch{throw new G("JWS Protected Header is invalid")}if(!ak(d,a.header))throw new G("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");let e={...d,...a.header},f=a8(G,new Map([["b64",!0]]),c?.crit,d,e),g=!0;if(f.has("b64")&&"boolean"!=typeof(g=d.b64))throw new G('The "b64" (base64url-encode payload) Header Parameter must be a boolean');let{alg:k}=e;if("string"!=typeof k||!k)throw new G('JWS "alg" (Algorithm) Header Parameter missing or invalid');let l=c&&a9("algorithms",c.algorithms);if(l&&!l.has(k))throw new C('"alg" (Algorithm) Header Parameter value not allowed');if(g){if("string"!=typeof a.payload)throw new G("JWS Payload must be a string")}else if("string"!=typeof a.payload&&!(a.payload instanceof Uint8Array))throw new G("JWS Payload must be a string or an Uint8Array instance");let m=!1;"function"==typeof b&&(b=await b(d,a),m=!0),bc(k,b,"verify");let o=j(void 0!==a.protected?n(a.protected):new Uint8Array,n("."),"string"==typeof a.payload?g?n(a.payload):h.encode(a.payload):a.payload),p=ah(a.signature,"signature",G),r=await aJ(b,k);if(!await aB(k,r,p,o))throw new N;let s={payload:g?ah(a.payload,"payload",G):"string"==typeof a.payload?h.encode(a.payload):a.payload};return(void 0!==a.protected&&(s.protectedHeader=d),void 0!==a.header&&(s.unprotectedHeader=a.header),m)?{...s,key:r}:s}async function bn(a,b,c){if(a instanceof Uint8Array&&(a=i.decode(a)),"string"!=typeof a)throw new G("Compact JWS must be a string or Uint8Array");let{0:d,1:e,2:f,length:g}=a.split(".");if(3!==g)throw new G("Invalid Compact JWS");let h=await bm({payload:e,protected:d,signature:f},b,c),j={payload:h.payload,protectedHeader:h.protectedHeader};return"function"==typeof b?{...j,key:h.key}:j}async function bo(a,b,c){if(!aj(a))throw new G("General JWS must be an object");if(!Array.isArray(a.signatures)||!a.signatures.every(aj))throw new G("JWS Signatures missing or incorrect type");for(let d of a.signatures)try{return await bm({header:d.header,payload:a.payload,protected:d.protected,signature:d.signature},b,c)}catch{}throw new N}let bp=a=>Math.floor(a.getTime()/1e3),bq=/^(\+|\-)? ?(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i;function br(a){let b,c=bq.exec(a);if(!c||c[4]&&c[1])throw TypeError("Invalid time period format");let d=parseFloat(c[2]);switch(c[3].toLowerCase()){case"sec":case"secs":case"second":case"seconds":case"s":b=Math.round(d);break;case"minute":case"minutes":case"min":case"mins":case"m":b=Math.round(60*d);break;case"hour":case"hours":case"hr":case"hrs":case"h":b=Math.round(3600*d);break;case"day":case"days":case"d":b=Math.round(86400*d);break;case"week":case"weeks":case"w":b=Math.round(604800*d);break;default:b=Math.round(0x1e187e0*d)}return"-"===c[1]||"ago"===c[4]?-b:b}function bs(a,b){if(!Number.isFinite(b))throw TypeError(`Invalid ${a} input`);return b}let bt=a=>a.includes("/")?a.toLowerCase():`application/${a.toLowerCase()}`;function bu(a,b,c={}){var d,e;let f,g;try{f=JSON.parse(i.decode(b))}catch{}if(!aj(f))throw new H("JWT Claims Set must be a top-level JSON object");let{typ:h}=c;if(h&&("string"!=typeof a.typ||bt(a.typ)!==bt(h)))throw new A('unexpected "typ" JWT header value',f,"typ","check_failed");let{requiredClaims:j=[],issuer:k,subject:l,audience:m,maxTokenAge:n}=c,o=[...j];for(let a of(void 0!==n&&o.push("iat"),void 0!==m&&o.push("aud"),void 0!==l&&o.push("sub"),void 0!==k&&o.push("iss"),new Set(o.reverse())))if(!(a in f))throw new A(`missing required "${a}" claim`,f,a,"missing");if(k&&!(Array.isArray(k)?k:[k]).includes(f.iss))throw new A('unexpected "iss" claim value',f,"iss","check_failed");if(l&&f.sub!==l)throw new A('unexpected "sub" claim value',f,"sub","check_failed");if(m&&(d=f.aud,e="string"==typeof m?[m]:m,"string"==typeof d?!e.includes(d):!(Array.isArray(d)&&e.some(Set.prototype.has.bind(new Set(d))))))throw new A('unexpected "aud" claim value',f,"aud","check_failed");switch(typeof c.clockTolerance){case"string":g=br(c.clockTolerance);break;case"number":g=c.clockTolerance;break;case"undefined":g=0;break;default:throw TypeError("Invalid clockTolerance option type")}let{currentDate:p}=c,q=bp(p||new Date);if((void 0!==f.iat||n)&&"number"!=typeof f.iat)throw new A('"iat" claim must be a number',f,"iat","invalid");if(void 0!==f.nbf){if("number"!=typeof f.nbf)throw new A('"nbf" claim must be a number',f,"nbf","invalid");if(f.nbf>q+g)throw new A('"nbf" claim timestamp check failed',f,"nbf","check_failed")}if(void 0!==f.exp){if("number"!=typeof f.exp)throw new A('"exp" claim must be a number',f,"exp","invalid");if(f.exp<=q-g)throw new B('"exp" claim timestamp check failed',f,"exp","check_failed")}if(n){let a=q-f.iat;if(a-g>("number"==typeof n?n:br(n)))throw new B('"iat" claim timestamp check failed (too far in the past)',f,"iat","check_failed");if(a<0-g)throw new A('"iat" claim timestamp check failed (it should be in the past)',f,"iat","check_failed")}return f}class bv{#k;constructor(a){if(!aj(a))throw TypeError("JWT Claims Set MUST be an object");this.#k=structuredClone(a)}data(){return h.encode(JSON.stringify(this.#k))}get iss(){return this.#k.iss}set iss(a){this.#k.iss=a}get sub(){return this.#k.sub}set sub(a){this.#k.sub=a}get aud(){return this.#k.aud}set aud(a){this.#k.aud=a}set jti(a){this.#k.jti=a}set nbf(a){"number"==typeof a?this.#k.nbf=bs("setNotBefore",a):a instanceof Date?this.#k.nbf=bs("setNotBefore",bp(a)):this.#k.nbf=bp(new Date)+br(a)}set exp(a){"number"==typeof a?this.#k.exp=bs("setExpirationTime",a):a instanceof Date?this.#k.exp=bs("setExpirationTime",bp(a)):this.#k.exp=bp(new Date)+br(a)}set iat(a){void 0===a?this.#k.iat=bp(new Date):a instanceof Date?this.#k.iat=bs("setIssuedAt",bp(a)):"string"==typeof a?this.#k.iat=bs("setIssuedAt",bp(new Date)+br(a)):this.#k.iat=bs("setIssuedAt",a)}}async function bw(a,b,c){let d=await bn(a,b,c);if(d.protectedHeader.crit?.includes("b64")&&!1===d.protectedHeader.b64)throw new H("JWTs MUST NOT use unencoded payload");let e={payload:bu(d.protectedHeader,d.payload,c),protectedHeader:d.protectedHeader};return"function"==typeof b?{...e,key:d.key}:e}async function bx(a,b,c){let d=await bh(a,b,c),e=bu(d.protectedHeader,d.plaintext,c),{protectedHeader:f}=d;if(void 0!==f.iss&&f.iss!==e.iss)throw new A('replicated "iss" claim header parameter mismatch',e,"iss","mismatch");if(void 0!==f.sub&&f.sub!==e.sub)throw new A('replicated "sub" claim header parameter mismatch',e,"sub","mismatch");if(void 0!==f.aud&&JSON.stringify(f.aud)!==JSON.stringify(e.aud))throw new A('replicated "aud" claim header parameter mismatch',e,"aud","mismatch");let g={payload:e,protectedHeader:f};return"function"==typeof b?{...g,key:d.key}:g}class by{#l;constructor(a){this.#l=new bj(a)}setContentEncryptionKey(a){return this.#l.setContentEncryptionKey(a),this}setInitializationVector(a){return this.#l.setInitializationVector(a),this}setProtectedHeader(a){return this.#l.setProtectedHeader(a),this}setKeyManagementParameters(a){return this.#l.setKeyManagementParameters(a),this}async encrypt(a,b){let c=await this.#l.encrypt(a,b);return[c.protected,c.encrypted_key,c.iv,c.ciphertext,c.tag].join(".")}}class bz{#k;#b;#d;constructor(a){if(!(a instanceof Uint8Array))throw TypeError("payload must be an instance of Uint8Array");this.#k=a}setProtectedHeader(a){return ag(this.#b,"setProtectedHeader"),this.#b=a,this}setUnprotectedHeader(a){return ag(this.#d,"setUnprotectedHeader"),this.#d=a,this}async sign(a,b){let c,d,e,f;if(!this.#b&&!this.#d)throw new G("either setProtectedHeader or setUnprotectedHeader must be called before #sign()");if(!ak(this.#b,this.#d))throw new G("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");let g={...this.#b,...this.#d},h=a8(G,new Map([["b64",!0]]),b?.crit,this.#b,g),i=!0;if(h.has("b64")&&"boolean"!=typeof(i=this.#b.b64))throw new G('The "b64" (base64url-encode payload) Header Parameter must be a boolean');let{alg:k}=g;if("string"!=typeof k||!k)throw new G('JWS "alg" (Algorithm) Header Parameter missing or invalid');bc(k,a,"sign"),i?d=n(c=r(this.#k)):(d=this.#k,c=""),this.#b?f=n(e=r(JSON.stringify(this.#b))):(e="",f=new Uint8Array);let l=j(f,n("."),d),m=await aJ(a,k),o={signature:r(await aA(k,m,l)),payload:c};return this.#d&&(o.header=this.#d),this.#b&&(o.protected=e),o}}class bA{#l;constructor(a){this.#l=new bz(a)}setProtectedHeader(a){return this.#l.setProtectedHeader(a),this}async sign(a,b){let c=await this.#l.sign(a,b);if(void 0===c.payload)throw TypeError("use the flattened module for creating JWS with b64: false");return`${c.protected}.${c.payload}.${c.signature}`}}class bB{#i;protectedHeader;unprotectedHeader;options;key;constructor(a,b,c){this.#i=a,this.key=b,this.options=c}setProtectedHeader(a){return ag(this.protectedHeader,"setProtectedHeader"),this.protectedHeader=a,this}setUnprotectedHeader(a){return ag(this.unprotectedHeader,"setUnprotectedHeader"),this.unprotectedHeader=a,this}addSignature(...a){return this.#i.addSignature(...a)}sign(...a){return this.#i.sign(...a)}done(){return this.#i}}class bC{#k;#m=[];constructor(a){this.#k=a}addSignature(a,b){let c=new bB(this,a,b);return this.#m.push(c),c}async sign(){if(!this.#m.length)throw new G("at least one signature must be added");let a={signatures:[],payload:""};for(let b=0;b<this.#m.length;b++){let c=this.#m[b],d=new bz(this.#k);d.setProtectedHeader(c.protectedHeader),d.setUnprotectedHeader(c.unprotectedHeader);let{payload:e,...f}=await d.sign(c.key,c.options);if(0===b)a.payload=e;else if(a.payload!==e)throw new G("inconsistent use of JWS Unencoded Payload (RFC7797)");a.signatures.push(f)}return a}}class bD{#b;#n;constructor(a={}){this.#n=new bv(a)}setIssuer(a){return this.#n.iss=a,this}setSubject(a){return this.#n.sub=a,this}setAudience(a){return this.#n.aud=a,this}setJti(a){return this.#n.jti=a,this}setNotBefore(a){return this.#n.nbf=a,this}setExpirationTime(a){return this.#n.exp=a,this}setIssuedAt(a){return this.#n.iat=a,this}setProtectedHeader(a){return this.#b=a,this}async sign(a,b){let c=new bA(this.#n.data());if(c.setProtectedHeader(this.#b),Array.isArray(this.#b?.crit)&&this.#b.crit.includes("b64")&&!1===this.#b.b64)throw new H("JWTs MUST NOT use unencoded payload");return c.sign(a,b)}}class bE{#f;#g;#h;#b;#o;#p;#q;#n;constructor(a={}){this.#n=new bv(a)}setIssuer(a){return this.#n.iss=a,this}setSubject(a){return this.#n.sub=a,this}setAudience(a){return this.#n.aud=a,this}setJti(a){return this.#n.jti=a,this}setNotBefore(a){return this.#n.nbf=a,this}setExpirationTime(a){return this.#n.exp=a,this}setIssuedAt(a){return this.#n.iat=a,this}setProtectedHeader(a){return ag(this.#b,"setProtectedHeader"),this.#b=a,this}setKeyManagementParameters(a){return ag(this.#h,"setKeyManagementParameters"),this.#h=a,this}setContentEncryptionKey(a){return ag(this.#f,"setContentEncryptionKey"),this.#f=a,this}setInitializationVector(a){return ag(this.#g,"setInitializationVector"),this.#g=a,this}replicateIssuerAsHeader(){return this.#o=!0,this}replicateSubjectAsHeader(){return this.#p=!0,this}replicateAudienceAsHeader(){return this.#q=!0,this}async encrypt(a,b){let c=new by(this.#n.data());return this.#b&&(this.#o||this.#p||this.#q)&&(this.#b={...this.#b,iss:this.#o?this.#n.iss:void 0,sub:this.#p?this.#n.sub:void 0,aud:this.#q?this.#n.aud:void 0}),c.setProtectedHeader(this.#b),this.#g&&c.setInitializationVector(this.#g),this.#f&&c.setContentEncryptionKey(this.#f),this.#h&&c.setKeyManagementParameters(this.#h),c.encrypt(a,b)}}let bF=(a,b)=>{if("string"!=typeof a||!a)throw new I(`${b} missing or invalid`)};async function bG(a,b){let c,d;if(al(a))c=a;else if(R(a))c=await a1(a);else throw TypeError(x(a,"CryptoKey","KeyObject","JSON Web Key"));if("sha256"!==(b??="sha256")&&"sha384"!==b&&"sha512"!==b)throw TypeError('digestAlgorithm must one of "sha256", "sha384", or "sha512"');switch(c.kty){case"AKP":bF(c.alg,'"alg" (Algorithm) Parameter'),bF(c.pub,'"pub" (Public key) Parameter'),d={alg:c.alg,kty:c.kty,pub:c.pub};break;case"EC":bF(c.crv,'"crv" (Curve) Parameter'),bF(c.x,'"x" (X Coordinate) Parameter'),bF(c.y,'"y" (Y Coordinate) Parameter'),d={crv:c.crv,kty:c.kty,x:c.x,y:c.y};break;case"OKP":bF(c.crv,'"crv" (Subtype of Key Pair) Parameter'),bF(c.x,'"x" (Public Key) Parameter'),d={crv:c.crv,kty:c.kty,x:c.x};break;case"RSA":bF(c.e,'"e" (Exponent) Parameter'),bF(c.n,'"n" (Modulus) Parameter'),d={e:c.e,kty:c.kty,n:c.n};break;case"oct":bF(c.k,'"k" (Key Value) Parameter'),d={k:c.k,kty:c.kty};break;default:throw new D('"kty" (Key Type) Parameter missing or unsupported')}let e=n(JSON.stringify(d));return r(await ai(b,e))}async function bH(a,b){b??="sha256";let c=await bG(a,b);return`urn:ietf:params:oauth:jwk-thumbprint:sha-${b.slice(-3)}:${c}`}async function bI(a,b){let c={...a,...b?.header};if(!aj(c.jwk))throw new G('"jwk" (JSON Web Key) Header Parameter must be a JSON object');let d=await aZ({...c.jwk,ext:!0},c.alg);if(d instanceof Uint8Array||"public"!==d.type)throw new G('"jwk" (JSON Web Key) Header Parameter must be a public key');return d}function bJ(a){return aj(a)}class bK{#r;#s=new WeakMap;constructor(a){if(!function(a){return a&&"object"==typeof a&&Array.isArray(a.keys)&&a.keys.every(bJ)}(a))throw new J("JSON Web Key Set malformed");this.#r=structuredClone(a)}jwks(){return this.#r}async getKey(a,b){let{alg:c,kid:d}={...a,...b?.header},e=function(a){switch("string"==typeof a&&a.slice(0,2)){case"RS":case"PS":return"RSA";case"ES":return"EC";case"Ed":return"OKP";case"ML":return"AKP";default:throw new D('Unsupported "alg" value for a JSON Web Key Set')}}(c),f=this.#r.keys.filter(a=>{let b=e===a.kty;if(b&&"string"==typeof d&&(b=d===a.kid),b&&("string"==typeof a.alg||"AKP"===e)&&(b=c===a.alg),b&&"string"==typeof a.use&&(b="sig"===a.use),b&&Array.isArray(a.key_ops)&&(b=a.key_ops.includes("verify")),b)switch(c){case"ES256":b="P-256"===a.crv;break;case"ES384":b="P-384"===a.crv;break;case"ES512":b="P-521"===a.crv;break;case"Ed25519":case"EdDSA":b="Ed25519"===a.crv}return b}),{0:g,length:h}=f;if(0===h)throw new K;if(1!==h){let a=new L,b=this.#s;throw a[Symbol.asyncIterator]=async function*(){for(let a of f)try{yield await bL(b,a,c)}catch{}},a}return bL(this.#s,g,c)}}async function bL(a,b,c){let d=a.get(b)||a.set(b,{}).get(b);if(void 0===d[c]){let a=await aZ({...b,ext:!0},c);if(a instanceof Uint8Array||"public"!==a.type)throw new J("JSON Web Key Set members must be public keys");d[c]=a}return d[c]}function bM(a){let b=new bK(a),c=async(a,c)=>b.getKey(a,c);return Object.defineProperties(c,{jwks:{value:()=>structuredClone(b.jwks()),enumerable:!1,configurable:!1,writable:!1}}),c}"undefined"!=typeof navigator&&navigator.userAgent?.startsWith?.("Mozilla/5.0 ")||(e="jose/v6.2.3");let bN=Symbol();async function bO(a,b,c,d=fetch){let e=await d(a,{method:"GET",signal:c,redirect:"manual",headers:b}).catch(a=>{if("TimeoutError"===a.name)throw new M;throw a});if(200!==e.status)throw new z("Expected 200 OK from the JSON Web Key Set HTTP response");try{return await e.json()}catch{throw new z("Failed to parse the JSON Web Key Set HTTP response as JSON")}}let bP=Symbol();class bQ{#t;#u;#v;#w;#x;#y;#z;#A;#B;#C;constructor(a,b){if(!(a instanceof URL))throw TypeError("url must be an instance of URL");this.#t=new URL(a.href),this.#u="number"==typeof b?.timeoutDuration?b?.timeoutDuration:5e3,this.#v="number"==typeof b?.cooldownDuration?b?.cooldownDuration:3e4,this.#w="number"==typeof b?.cacheMaxAge?b?.cacheMaxAge:6e5,this.#z=new Headers(b?.headers),e&&!this.#z.has("User-Agent")&&this.#z.set("User-Agent",e),this.#z.has("accept")||(this.#z.set("accept","application/json"),this.#z.append("accept","application/jwk-set+json")),this.#A=b?.[bN],b?.[bP]!==void 0&&(this.#C=b?.[bP],function(a,b){return!("object"!=typeof a||null===a||!("uat"in a)||"number"!=typeof a.uat||Date.now()-a.uat>=b)&&"jwks"in a&&!!aj(a.jwks)&&!!Array.isArray(a.jwks.keys)&&!!Array.prototype.every.call(a.jwks.keys,aj)}(b?.[bP],this.#w)&&(this.#x=this.#C.uat,this.#B=bM(this.#C.jwks)))}pendingFetch(){return!!this.#y}coolingDown(){return"number"==typeof this.#x&&Date.now()<this.#x+this.#v}fresh(){return"number"==typeof this.#x&&Date.now()<this.#x+this.#w}jwks(){return this.#B?.jwks()}async getKey(a,b){this.#B&&this.fresh()||await this.reload();try{return await this.#B(a,b)}catch(c){if(c instanceof K&&!1===this.coolingDown())return await this.reload(),this.#B(a,b);throw c}}async reload(){this.#y&&("undefined"!=typeof WebSocketPair||"undefined"!=typeof navigator&&"Cloudflare-Workers"===navigator.userAgent||"undefined"!=typeof EdgeRuntime&&"vercel"===EdgeRuntime)&&(this.#y=void 0),this.#y||=bO(this.#t.href,this.#z,AbortSignal.timeout(this.#u),this.#A).then(a=>{this.#B=bM(a),this.#C&&(this.#C.uat=Date.now(),this.#C.jwks=a),this.#x=Date.now(),this.#y=void 0}).catch(a=>{throw this.#y=void 0,a}),await this.#y}}function bR(a,b){let c=new bQ(a,b),d=async(a,b)=>c.getKey(a,b);return Object.defineProperties(d,{coolingDown:{get:()=>c.coolingDown(),enumerable:!0,configurable:!1},fresh:{get:()=>c.fresh(),enumerable:!0,configurable:!1},reload:{value:()=>c.reload(),enumerable:!0,configurable:!1,writable:!1},reloading:{get:()=>c.pendingFetch(),enumerable:!0,configurable:!1},jwks:{value:()=>c.jwks(),enumerable:!0,configurable:!1,writable:!1}}),d}class bS{#n;constructor(a={}){this.#n=new bv(a)}encode(){let a=r(JSON.stringify({alg:"none"})),b=r(this.#n.data());return`${a}.${b}.`}setIssuer(a){return this.#n.iss=a,this}setSubject(a){return this.#n.sub=a,this}setAudience(a){return this.#n.aud=a,this}setJti(a){return this.#n.jti=a,this}setNotBefore(a){return this.#n.nbf=a,this}setExpirationTime(a){return this.#n.exp=a,this}setIssuedAt(a){return this.#n.iat=a,this}static decode(a,b){let c;if("string"!=typeof a)throw new H("Unsecured JWT must be a string");let{0:d,1:e,2:f,length:g}=a.split(".");if(3!==g||""!==f)throw new H("Invalid Unsecured JWT");try{if(c=JSON.parse(i.decode(q(d))),"none"!==c.alg)throw Error()}catch{throw new H("Invalid Unsecured JWT")}return{payload:bu(c,q(e),b),header:c}}}function bT(a){let b;if("string"==typeof a){let c=a.split(".");(3===c.length||5===c.length)&&([b]=c)}else if("object"==typeof a&&a)if("protected"in a)b=a.protected;else throw TypeError("Token does not contain a Protected Header");try{if("string"!=typeof b||!b)throw Error();let a=JSON.parse(i.decode(q(b)));if(!aj(a))throw Error();return a}catch{throw TypeError("Invalid Token or Protected Header formatting")}}function bU(a){let b,c;if("string"!=typeof a)throw new H("JWTs must use Compact JWS serialization, JWT must be a string");let{1:d,length:e}=a.split(".");if(5===e)throw new H("Only JWTs using Compact JWS serialization can be decoded");if(3!==e)throw new H("Invalid JWT");if(!d)throw new H("JWTs must contain a payload");try{b=q(d)}catch{throw new H("Failed to base64url decode the payload")}try{c=JSON.parse(i.decode(b))}catch{throw new H("Failed to parse the decoded payload as JSON")}if(!aj(c))throw new H("Invalid JWT Claims Set");return c}function bV(a){let b=a?.modulusLength??2048;if("number"!=typeof b||b<2048)throw new D("Invalid or unsupported modulusLength option provided, 2048 bits or larger keys must be used");return b}async function bW(a,b){let c,d;switch(a){case"PS256":case"PS384":case"PS512":c={name:"RSA-PSS",hash:`SHA-${a.slice(-3)}`,publicExponent:Uint8Array.of(1,0,1),modulusLength:bV(b)},d=["sign","verify"];break;case"RS256":case"RS384":case"RS512":c={name:"RSASSA-PKCS1-v1_5",hash:`SHA-${a.slice(-3)}`,publicExponent:Uint8Array.of(1,0,1),modulusLength:bV(b)},d=["sign","verify"];break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":c={name:"RSA-OAEP",hash:`SHA-${parseInt(a.slice(-3),10)||1}`,publicExponent:Uint8Array.of(1,0,1),modulusLength:bV(b)},d=["decrypt","unwrapKey","encrypt","wrapKey"];break;case"ES256":c={name:"ECDSA",namedCurve:"P-256"},d=["sign","verify"];break;case"ES384":c={name:"ECDSA",namedCurve:"P-384"},d=["sign","verify"];break;case"ES512":c={name:"ECDSA",namedCurve:"P-521"},d=["sign","verify"];break;case"Ed25519":case"EdDSA":d=["sign","verify"],c={name:"Ed25519"};break;case"ML-DSA-44":case"ML-DSA-65":case"ML-DSA-87":d=["sign","verify"],c={name:a};break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":{d=["deriveBits"];let a=b?.crv??"P-256";switch(a){case"P-256":case"P-384":case"P-521":c={name:"ECDH",namedCurve:a};break;case"X25519":c={name:"X25519"};break;default:throw new D("Invalid or unsupported crv option provided, supported values are P-256, P-384, P-521, and X25519")}break}default:throw new D('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}return crypto.subtle.generateKey(c,b?.extractable??!1,d)}async function bX(a,b){let c,d,e;switch(a){case"HS256":case"HS384":case"HS512":c=parseInt(a.slice(-3),10),d={name:"HMAC",hash:`SHA-${c}`,length:c},e=["sign","verify"];break;case"A128CBC-HS256":case"A192CBC-HS384":case"A256CBC-HS512":return c=parseInt(a.slice(-3),10),crypto.getRandomValues(new Uint8Array(c>>3));case"A128KW":case"A192KW":case"A256KW":d={name:"AES-KW",length:c=parseInt(a.slice(1,4),10)},e=["wrapKey","unwrapKey"];break;case"A128GCMKW":case"A192GCMKW":case"A256GCMKW":case"A128GCM":case"A192GCM":case"A256GCM":d={name:"AES-GCM",length:c=parseInt(a.slice(1,4),10)},e=["encrypt","decrypt"];break;default:throw new D('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}return crypto.subtle.generateKey(d,b?.extractable??!1,e)}let bY="WebCryptoAPI"}};
@@ -5,6 +5,6 @@ ${b.condition}
5
5
  Tool result (untrusted data):
6
6
  \`\`\`json
7
7
  ${m}
8
- \`\`\``;try{let c="llm-gate"===b.mode?await j(b.modelId,n):await k(b.flowId,n),g=function(a){let b=a.match(/\{[\s\S]*\}/);if(!b)return null;try{let a=JSON.parse(b[0]);if("boolean"!=typeof a?.fire)return null;return{fire:a.fire,reason:"string"==typeof a.reason?a.reason:""}}catch{return null}}(c);if(!g)return f.warn(`Gate returned unparseable output: ${c.slice(0,200)}`),{fire:!1,newState:{lastHash:d,...l},error:"The AI check returned an unreadable answer — did not run the flow"};if(!g.fire)return{fire:!1,newState:{lastHash:d,...l}};return{fire:!0,summary:"flow-gate"===b.mode?"Flow condition met":"AI condition met",context:{result:(0,e.Je)(a),aiReason:g.reason},newState:{lastHash:d,...l}}}catch(b){let a=b instanceof Error?b.message:String(b);return f.warn(`Gate check failed: ${a}`),{fire:!1,newState:a.startsWith("config:")?{lastHash:d}:l,error:a.replace(/^config:\s*/,"")}}}async function j(a,b){let{modelService:d}=await Promise.resolve().then(c.bind(c,12763)),{getCompletionAdapter:e}=await Promise.resolve().then(c.bind(c,36303)),f=await d.getModel(a);if(!f)throw Error(`config: The AI-check model no longer exists (${a})`);let g=await d.resolveAndDecryptApiKey(f.ApiKey);if(!g)throw Error("config: Could not resolve the AI-check model API key");let i=e(f),{completion:j}=await i.createCompletion({model:f,apiKey:g,temperature:0,messages:[{role:"system",content:h},{role:"user",content:b}]}),k=j.choices?.[0]?.message?.content;return"string"==typeof k?k:""}async function k(a,b){let{runFlow:d}=await Promise.all([c.e(3304),c.e(4561),c.e(1659),c.e(7463)]).then(c.bind(c,67463)),e=await d({flowId:a,prompt:`${b}
8
+ \`\`\``;try{let c="llm-gate"===b.mode?await j(b.modelId,n):await k(b.flowId,n),g=function(a){let b=a.match(/\{[\s\S]*\}/);if(!b)return null;try{let a=JSON.parse(b[0]);if("boolean"!=typeof a?.fire)return null;return{fire:a.fire,reason:"string"==typeof a.reason?a.reason:""}}catch{return null}}(c);if(!g)return f.warn(`Gate returned unparseable output: ${c.slice(0,200)}`),{fire:!1,newState:{lastHash:d,...l},error:"The AI check returned an unreadable answer — did not run the flow"};if(!g.fire)return{fire:!1,newState:{lastHash:d,...l}};return{fire:!0,summary:"flow-gate"===b.mode?"Flow condition met":"AI condition met",context:{result:(0,e.Je)(a),aiReason:g.reason},newState:{lastHash:d,...l}}}catch(b){let a=b instanceof Error?b.message:String(b);return f.warn(`Gate check failed: ${a}`),{fire:!1,newState:a.startsWith("config:")?{lastHash:d}:l,error:a.replace(/^config:\s*/,"")}}}async function j(a,b){let{modelService:d}=await Promise.resolve().then(c.bind(c,12763)),{getCompletionAdapter:e}=await Promise.resolve().then(c.bind(c,16699)),{normalizeMaxTokens:f}=await Promise.resolve().then(c.bind(c,498)),g=await d.getModel(a);if(!g)throw Error(`config: The AI-check model no longer exists (${a})`);let i=await d.resolveAndDecryptApiKey(g.ApiKey);if(!i)throw Error("config: Could not resolve the AI-check model API key");let j=e(g),{completion:k}=await j.createCompletion({model:g,apiKey:i,temperature:0,maxTokens:f(g.maxTokens),messages:[{role:"system",content:h},{role:"user",content:b}]}),l=k.choices?.[0]?.message?.content;return"string"==typeof l?l:""}async function k(a,b){let{runFlow:d}=await Promise.all([c.e(3304),c.e(1604),c.e(1659),c.e(7463)]).then(c.bind(c,67463)),e=await d({flowId:a,prompt:`${b}
9
9
 
10
10
  ${g}`,mode:"ephemeral",requireApproval:!1,debug:!1,userTurn:!0});if("completed"!==e.status)throw Error(e.error?.message??`The checker flow ended with status "${e.status}"`);return e.outputText??""}}};
@@ -1 +1 @@
1
- "use strict";exports.id=7032,exports.ids=[7032],exports.modules={67032:(a,b,c)=>{c.d(b,{putPendingApproval:()=>j});var d=c(79111),e=c(89392);let f=(0,c(18230).h)("backend/services/scheduler/pendingApprovals"),g=e.Z.PENDING_APPROVALS,h=Promise.resolve();async function i(){try{let a=await (0,d.YM)(g,{});return a&&"object"==typeof a?a:{}}catch(a){return f.error("Failed to load pending approvals:",a),{}}}async function j(a){let b=h.catch(()=>{}).then(async()=>{let b=await i();b[a.approvalId]=a,await (0,d.VH)(g,b)});h=b,await b}}};
1
+ "use strict";exports.id=7032,exports.ids=[7032],exports.modules={67032:(a,b,c)=>{c.d(b,{putPendingApproval:()=>j});var d=c(79111),e=c(14247);let f=(0,c(18230).h)("backend/services/scheduler/pendingApprovals"),g=e.Z.PENDING_APPROVALS,h=Promise.resolve();async function i(){try{let a=await (0,d.YM)(g,{});return a&&"object"==typeof a?a:{}}catch(a){return f.error("Failed to load pending approvals:",a),{}}}async function j(a){let b=h.catch(()=>{}).then(async()=>{let b=await i();b[a.approvalId]=a,await (0,d.VH)(g,b)});h=b,await b}}};
@@ -1,6 +1,6 @@
1
- "use strict";exports.id=7214,exports.ids=[7214],exports.modules={38291:(a,b,c)=>{c.d(b,{n:()=>g});var d=c(92372),e=c(75028);let f=(0,c(50846).h)("backend/execution/flow/persistConversationState");async function g(a,b){let c="conversations/",g=String(a).startsWith(c)?String(a).slice(c.length):String(a);return((0,d.ln)(g),null!=b.conversationId&&(0,d.ln)(b.conversationId),b.ephemeral)?(f.debug(`Refusing to persist ephemeral state (key ${a}); ephemeral runs never reach the conversations store.`),Promise.resolve()):(0,e.isConversationDeleted)(b.conversationId)?(f.info(`Refusing to persist state for deleted conversation ${b.conversationId} (key ${a}).`),Promise.resolve()):(0,d.VH)(a,{...b,executionTrace:void 0,emit:void 0})}},44681:(a,b,c)=>{c.d(b,{Q:()=>j,validateFlowForRun:()=>k});var d=c(50846),e=c(87821),f=c(20433),g=c(61397),h=c(84671);let i=(0,d.h)("backend/execution/flow/validateFlowForRun");async function j(a){let b,c;try{b=await f.modelService.loadModels()}catch(a){i.warn("validateFlowObjectForRun: could not load models; skipping model checks",a)}try{let a=await g.mcpService.loadServerConfigs();Array.isArray(a)&&(c=a.map(a=>({name:a.name,status:a.disabled?"disabled":void 0})))}catch(a){i.warn("validateFlowObjectForRun: could not load servers; skipping server checks",a)}return(0,h.nC)(a,{models:b,servers:c})}async function k(a){let b=await e.flowService.getFlow(a);return b?j(b):(i.warn(`validateFlowForRun: flow ${a} could not be loaded; skipping pre-run checks`),{issues:[],errorCount:0,warningCount:0,isRunnable:!0})}},57214:(a,b,c)=>{c.d(b,{runFlow:()=>x});var d=c(50846),e=c(23823),f=c(38291),g=c(60184),h=c(14214),i=c(56793),j=c(99978),k=c(32642),l=c(75312),m=c(87821),n=c(92372),o=c(13516),p=c(44681),q=c(67490),r=c(75028),s=c(23529);let t=(0,d.h)("backend/execution/flow/runFlow");m.flowService.getFlowByName||(m.flowService.getFlowByName=async a=>(await m.flowService.loadFlows()).find(b=>b.name===a)||null,t.info("Added getFlowByName method directly to flowService instance."));let u=m.flowService,v=f.n;async function w(a,b,c){try{let d,e=a.flowId;if(!e)return;try{d=(await m.flowService.getFlow(e))?.name??void 0}catch{}let f="api"===a.source?"api":"chat",g=c&&c.length>4096?`${c.slice(0,4096)}…`:c;(0,i.eh)().publish({flowId:e,flowName:d,executionId:a.plannedExecutionId,runId:a.conversationId||"",conversationId:a.conversationId||"",status:b,outputText:g,firedBy:f,chainDepth:a.chainDepth??0,timestamp:new Date().toISOString()})}catch(a){t.warn("Failed to publish runFlow flow-run event:",a)}}async function x(a){let b,c,d,f=Date.now(),i=a.flujo??!0,x=a.requireApproval??!1,y=a.debug??!1,z=a.continueDebug??!1,A=a.userTurn??!1,B="ephemeral"===a.mode,C=a.messages??(void 0!==a.prompt?[{role:"user",content:a.prompt}]:[]),D={model:a.modelName,messages:C,processNodeId:a.processNodeId};t.info("runFlow invoked",{flowId:a.flowId,model:a.modelName,messageCount:C.length,mode:B?"ephemeral":"conversation",flujo:i,requireApproval:x,flujodebug:y,conversationId:a.conversationId});let E=a.conversationId||crypto.randomUUID(),F=`conversations/${E}`,G="new",H=!1;if(t.info(`Effective Conversation ID for this run: ${E}`,{providedId:a.conversationId}),e.FlowExecutor.conversationStates.has(E))c=e.FlowExecutor.conversationStates.get(E),t.info(`Resuming conversation ${E} from memory`,{currentNodeId:c.currentNodeId}),G="memory";else if(!B)try{(c=await (0,n.YM)(F,void 0))?(t.info(`Loaded conversation state from storage: ${E}`),G="storage",await (0,g.jM)(c),e.FlowExecutor.conversationStates.set(E,c)):t.info(`No state found in storage for conversation: ${E}. Will create new state.`)}catch(a){t.warn(`Error loading conversation state from storage for ${E}:`,a)}if(c?((b=c).conversationId!==E&&(t.warn(`Loaded state's internal conversationId (${b.conversationId}) differs from effectiveConvId (${E}). Using effectiveConvId.`),b.conversationId=E),"new"!==G&&("completed"===b.status||"error"===b.status||void 0===b.status)&&(t.info(`Resuming completed/errored/fresh conversation ${E}. Resetting status to 'running'.`),H="error"===b.status,b.status="running",b.lastResponse=void 0,b.isCancelled=!1,"storage"===G&&e.FlowExecutor.conversationStates.set(E,b)),D.processNodeId&&"new"!==G&&(t.info(`Edit detected: Resetting currentNodeId for conversation ${E} to provided processNodeId: ${D.processNodeId}`),b.currentNodeId=D.processNodeId,b.status="running",b.lastResponse=void 0,b.pendingToolCalls=void 0,b.handoffRequested=void 0,b.isCancelled=!1,b.trackingInfo={executionId:crypto.randomUUID(),startTime:Date.now(),nodeExecutionTracker:[]},o.G.ENABLE_EXECUTION_TRACKER&&b.executionTrace&&(b.executionTrace=[]),e.FlowExecutor.conversationStates.set(E,b),t.verbose(`State updated in memory with reset currentNodeId: ${b.currentNodeId}`))):(t.info(`Creating new conversation state object for ID: ${E}`),b={trackingInfo:{executionId:crypto.randomUUID(),startTime:Date.now(),nodeExecutionTracker:(o.G.ENABLE_EXECUTION_TRACKER,[])},messages:[],flowId:"",conversationId:E,currentNodeId:void 0,status:"running",title:a.title?.trim()||"New Conversation",createdAt:Date.now(),updatedAt:Date.now(),debugMode:y,executionTrace:y&&o.G.ENABLE_EXECUTION_TRACKER?[]:void 0,variables:{}}),a.variables&&"object"==typeof a.variables)for(let[c,d]of(b.variables=b.variables??{},Object.entries(a.variables)))null!=d&&(b.variables[c]="string"==typeof d?d:String(d));if(b.requireApproval=x,a.source&&(b.source=a.source),a.plannedExecutionId&&(b.plannedExecutionId=a.plannedExecutionId),B&&(b.ephemeral=!0),a.parentRunId&&(b.parentRunId=a.parentRunId),b.runDepth=a.depth??b.runDepth??0,b.chainDepth=a.chainDepth??b.chainDepth??0,b.onApprovalRequired=a.onApprovalRequired??b.onApprovalRequired??"auto",b.runDepth>q.A)return t.error(`runFlow aborted: subflow depth ${b.runDepth} exceeds max ${q.A}`),b.status="error",{status:"error",conversationId:E,outputText:"",messages:b.messages,error:{message:`Subflow recursion limit (${q.A}) exceeded`,statusCode:500},finalAction:j.O,sharedState:b};let I=[...b.messages??[]];if("new"===G){a.flowDefinition&&(b.flowSnapshot=a.flowDefinition,b.flowId=a.flowDefinition.id);let c=a.flowDefinition?a.flowDefinition.id:a.flowId;if(!c&&D.model){let a=D.model.substring(5),d=await u.getFlowByName(a);if(!d)return t.error(`Flow not found: ${a}`),{status:"error",conversationId:E,outputText:"",messages:b.messages,flowNotFound:{name:a},error:{message:`Flow not found: ${a}`,statusCode:400},finalAction:j.O,sharedState:b};c=d.id}if(!c)return t.error("No flow specified for run (neither flowId nor model provided)."),{status:"error",conversationId:E,outputText:"",messages:b.messages,error:{message:"No flow specified (provide flowId or model).",statusCode:400},finalAction:j.O,sharedState:b};b.flowId=c;let d=(D.messages||[]).filter(a=>!(a.depth>0)).map(a=>({...a,id:a.id||crypto.randomUUID(),timestamp:a.timestamp||Date.now(),processNodeId:a.processNodeId||void 0}));b.messages=d;try{if(b.updatedAt=Date.now(),"New Conversation"===b.title&&b.messages.length>0){let a=b.messages.find(a=>"user"===a.role);a&&"string"==typeof a.content&&(b.title=(0,s.oO)(a.content),t.verbose(`Updated conversation title for ${E} during init to: ${b.title}`))}await v(F,b),t.debug(`Saved initial state for new conversation ${E}.`)}catch(a){t.error(`Failed to save initial state for new conversation ${E}:`,a)}e.FlowExecutor.conversationStates.set(E,b)}else D.messages&&D.messages.length>0&&(b.messages=D.messages.filter(a=>!(a.depth>0)).map(a=>({...a,id:a.id||crypto.randomUUID(),timestamp:a.timestamp||Date.now(),processNodeId:a.processNodeId||void 0})),t.info(`Updated conversation ${b.conversationId} with ${b.messages.length} messages from request`)),(A||void 0===b.debugMode)&&(b.debugMode=y),A&&(b.debugPendingToolCalls=void 0),b.debugMode&&o.G.ENABLE_EXECUTION_TRACKER&&!b.executionTrace&&(b.executionTrace=[]);try{await (0,g.UG)(b,I)}catch(a){t.warn(`Conversation-log reconcile failed for ${E}; continuing`,a)}if(A&&"new"!==G&&!D.processNodeId){let a=b.messages.length>0?b.messages[b.messages.length-1]:void 0;a?.role==="user"&&a.processNodeId&&a.processNodeId!==b.currentNodeId&&(t.info(`New user turn for ${E}: directing execution to node ${a.processNodeId} (was ${b.currentNodeId}).`),b.currentNodeId=a.processNodeId,e.FlowExecutor.conversationStates.set(E,b))}if(H&&A&&!B&&"new"!==G&&!D.processNodeId){let a=b.messages.length>0?b.messages[b.messages.length-1]:void 0;if(a?.role!=="user"){let a;for(let c=b.messages.length-1;c>=0;c--)if("user"===b.messages[c].role){a=b.messages[c].processNodeId;break}if(!a&&b.flowId)try{let c=await m.flowService.getFlow(b.flowId);a=c?.nodes?.find(a=>"start"===a.type)?.id}catch(a){t.warn(`Could not resolve start node for error-resume of ${E}`,a)}a&&a!==b.currentNodeId&&(t.info(`Error-resume for ${E}: replaying turn from entry node ${a} (was ${b.currentNodeId}).`),b.currentNodeId=a,e.FlowExecutor.conversationStates.set(E,b))}}A&&b.flowId&&(e.FlowExecutor.clearFlowCache(b.flowId),t.debug(`Cleared compiled-flow cache for ${b.flowId} at start of user turn ${E}.`));let J=!1,K=0,L=a.emit??h.$.emitterFor(E),M=new Set(b.messages.map(a=>a.id).filter(a=>!!a)),N=a=>{if(!a.usage)return;let c=b.usage??{promptTokens:0,completionTokens:0,totalTokens:0,costUsd:0,byNode:{}};c.promptTokens+=a.usage.promptTokens,c.completionTokens+=a.usage.completionTokens,c.totalTokens+=a.usage.totalTokens;let d=a.usage.cacheReadTokens??0;d&&(c.cacheReadTokens=(c.cacheReadTokens??0)+d);let e=a.processNodeId||"unknown",f=c.byNode[e]??{promptTokens:0,completionTokens:0,totalTokens:0,costUsd:0};f.promptTokens+=a.usage.promptTokens,f.completionTokens+=a.usage.completionTokens,f.totalTokens+=a.usage.totalTokens,d&&(f.cacheReadTokens=(f.cacheReadTokens??0)+d),c.byNode[e]=f,b.usage=c,L({type:"usage",node:a.processNodeId?{nodeId:a.processNodeId}:void 0,promptTokens:a.usage.promptTokens,completionTokens:a.usage.completionTokens,totalTokens:a.usage.totalTokens,costUsd:0,...d?{cacheReadTokens:d}:{}})},O=()=>{for(let a of b.messages)a.id||(a.id=crypto.randomUUID()),M.has(a.id)||(M.add(a.id),"system"!==a.role&&(L({type:"message",message:a,node:a.processNodeId?{nodeId:a.processNodeId}:void 0}),N(a)))};if(L({type:"run:start",flowId:b.flowId}),(A||"new"===G)&&b.flowId)try{let a=b.flowSnapshot?await (0,p.Q)(b.flowSnapshot):await (0,p.validateFlowForRun)(b.flowId);if(!a.isRunnable){let c=a.issues.filter(a=>"error"===a.severity),e=`This flow can't run yet — please fix the following before running:
2
- `+c.map(a=>`• ${a.message}`).join("\n");t.warn(`Pre-run validation blocked flow ${b.flowId} for conv ${E}`,{errorCount:c.length,codes:c.map(a=>a.code)}),b.lastResponse={success:!1,error:e,errorDetails:{message:e,type:"invalid_request_error",code:"flow_invalid",status:400}},d=j.O,J=!0}}catch(a){t.warn(`Pre-run validation could not complete for ${b.flowId}; proceeding`,a)}let P=()=>!!b.isCancelled||!!(0,r.isCancelledByAncestry)(b.parentRunId,e.FlowExecutor.conversationStates)&&(b.isCancelled=!0,!0),Q=!!b.debugMode&&!z,R=()=>{b.status="paused_debug",L({type:"run:paused",reason:"debug",node:b.currentNodeId?{nodeId:b.currentNodeId}:void 0})};try{if(!J)for(;;){if(K++,t.debug(`--- Starting Execution Step ${K} for Conv ${E} ---`),K>150){t.warn(`Max internal iterations (150) reached for conv ${E}. Breaking loop.`),d!==j.O&&(b.lastResponse={success:!1,error:"Maximum internal iterations (150) reached."},d=j.O);break}if(P()){t.info(`Cancellation flag detected for conv ${E}. Terminating execution.`),b.status="error",b.lastResponse={success:!1,error:"Execution cancelled by user."},d=j.O;break}if(b.debugPendingToolCalls&&b.debugPendingToolCalls.length>0){let a=b.debugPendingToolCalls;b.debugPendingToolCalls=void 0,t.info(`[Debug Step] Executing ${a.length} pending tool call(s) for conv ${E}.`);let c=await k.s.processToolCalls({toolCalls:a,toolNameMap:b.toolNameMap,emit:L,conversationId:b.ephemeral?void 0:b.conversationId,node:b.currentNodeId?{nodeId:b.currentNodeId}:void 0,shouldAbort:P});if(!c.success){t.error(`Debug tool processing failed for conv ${E}`,{error:c.error}),b.lastResponse={success:!1,error:"Tool processing failed",errorDetails:c.error},d=j.O;break}let f=c.value.toolCallMessages.map(a=>({...a,id:crypto.randomUUID(),timestamp:Date.now(),processNodeId:b.currentNodeId}));b.messages.push(...f),e.FlowExecutor.conversationStates.set(E,b),O();try{b.updatedAt=Date.now(),await v(F,b)}catch(a){t.error(`Failed to save state after debug tool execution for conv ${E}:`,a)}if(Q){t.info(`[Debug Step] Paused after tool execution for conv ${E}.`),R();break}continue}if(!Q&&b.breakpoints&&b.breakpoints.length>0){let a=await e.FlowExecutor.peekNextNodeId(b);if(a&&b.breakpoints.includes(a)&&b.lastBreakNodeId!==a){t.info(`Breakpoint hit at node ${a} for conv ${E}. Pausing.`),b.status="paused_debug",b.debugMode=!0,b.lastBreakNodeId=a,L({type:"breakpoint:hit",node:{nodeId:a}}),L({type:"run:paused",reason:"breakpoint",node:{nodeId:a}});try{b.updatedAt=Date.now(),await v(F,b)}catch(a){t.error(`Failed to save state on breakpoint for conv ${E}:`,a)}break}a&&b.lastBreakNodeId&&a!==b.lastBreakNodeId&&(b.lastBreakNodeId=void 0)}if(b.messages.length>0){let a=b.messages.slice(-3);t.verbose(`Message history before step ${K}`,a)}else t.verbose(`No messages in history before step ${K}`);let a=await e.FlowExecutor.executeStep(b,L);if(b=a.sharedState,d=a.action,O(),b.updatedAt=Date.now(),"New Conversation"===b.title&&b.messages.length>0){let a=b.messages.find(a=>"user"===a.role);a&&"string"==typeof a.content&&(b.title=(0,s.oO)(a.content),t.verbose(`Updated conversation title for ${E} after step ${K} to: ${b.title}`))}if(t.info(`Step ${K} completed for conv ${E}. Action: ${d}`,{currentNodeId:b.currentNodeId}),t.verbose(`Shared state after step ${K}`,b),t.debug(`[Action Handling] Step ${K}: Received action "${d}" for conv ${E}`),d===j.O){t.info(`[Action Handling] Step ${K}: Handling ERROR_ACTION for conv ${E}`),t.error(`Error action received during step ${K} for conv ${E}`,{error:b.lastResponse});break}if(d===j.g4){t.info(`[Action Handling] Step ${K}: Handling FINAL_RESPONSE_ACTION for conv ${E}`),t.info(`Final response action received at step ${K} for conv ${E}`),b.status="completed",t.info(`Setting conversation status to 'completed' for conv ${E}`);break}if(d===j.Jp){t.info(`[Action Handling] Step ${K}: Handling TOOL_CALL_ACTION for conv ${E}`),t.info(`Tool call action received at step ${K} for conv ${E}`);let a=b.messages.length>0?b.messages[b.messages.length-1]:null;if(a?.role==="assistant"&&a.tool_calls)if(i){if(x&&"fail"===b.onApprovalRequired){let c=a.tool_calls[0],e=c&&"function"===c.type?c.function.name:"unknown";t.info(`[flujo=true, onApprovalRequired=fail] Failing fast for tool "${e}" (conv ${E})`),b.status="error",b.pendingToolCalls=a.tool_calls,b.lastResponse={success:!1,error:`Headless run requires approval for tool "${e}" but no approver is available (approvalPolicy: fail).`,errorDetails:{message:`Headless run requires approval for tool "${e}" but no approver is available (approvalPolicy: fail).`,type:"approval_required",name:e}},d=j.O;break}if(x){t.info(`[flujo=true, requireApproval=true] Pausing execution for tool approval for conv ${E}`),b.status="awaiting_tool_approval",b.pendingToolCalls=a.tool_calls,b.lastResponse=void 0,e.FlowExecutor.conversationStates.set(E,b);try{if(b.updatedAt=Date.now(),"New Conversation"===b.title&&b.messages.length>0){let a=b.messages.find(a=>"user"===a.role);a&&"string"==typeof a.content&&(b.title=(0,s.oO)(a.content),t.verbose(`Updated conversation title for ${E} before pausing to: ${b.title}`))}await v(F,b),t.verbose(`Saved state before pausing for approval for conv ${E}`)}catch(a){t.error(`Failed to save state before pausing for approval for conv ${E}:`,a)}L({type:"run:awaiting_approval",pendingToolCalls:a.tool_calls});break}if(Q){t.info(`[Debug Step] Paused before executing ${a.tool_calls.length} tool call(s) for conv ${E}.`),b.debugPendingToolCalls=a.tool_calls,e.FlowExecutor.conversationStates.set(E,b);try{b.updatedAt=Date.now(),await v(F,b)}catch(a){t.error(`Failed to save state before debug tool pause for conv ${E}:`,a)}R();break}{t.info(`[flujo=true, requireApproval=false] Processing ${a.tool_calls.length} tools internally for conv ${E}`);let c=await k.s.processToolCalls({toolCalls:a.tool_calls,toolNameMap:b.toolNameMap,emit:L,conversationId:b.ephemeral?void 0:b.conversationId,node:b.currentNodeId?{nodeId:b.currentNodeId}:void 0,shouldAbort:P});if(!c.success){t.error(`Internal tool processing failed for conv ${E}`,{error:c.error}),b.lastResponse={success:!1,error:"Tool processing failed",errorDetails:c.error},d=j.O;break}t.info(`Adding ${c.value.toolCallMessages.length} tool result messages for conv ${E}`);let f=c.value.toolCallMessages.map(a=>({...a,id:crypto.randomUUID(),timestamp:Date.now(),processNodeId:b.currentNodeId}));b.messages.push(...f),e.FlowExecutor.conversationStates.set(E,b),O(),t.info(`Continuing loop for conv ${E} after internal tool processing (no approval needed).`);continue}}else{t.info(`[flujo=false] Tool call action received for conv ${E}. Checking tool types.`);let c=a.tool_calls||[],f=[],g=[];if(c.forEach(a=>{"function"===a.type&&(0,l.$9)(a.function.name,b.toolNameMap)?(t.verbose("tool is internal:",a.function.name),f.push(a)):(t.verbose("tool is external:",a.function.name),g.push(a))}),f.length>0){t.info(`[flujo=false] Processing ${f.length} internal tools for conv ${E}. External tools (${g.length}) will be ignored this step.`);let a=await k.s.processToolCalls({toolCalls:f,toolNameMap:b.toolNameMap,emit:L,conversationId:b.ephemeral?void 0:b.conversationId,node:b.currentNodeId?{nodeId:b.currentNodeId}:void 0,shouldAbort:P});if(!a.success){t.error(`[flujo=false] Internal tool processing failed for conv ${E}`,{error:a.error}),b.lastResponse={success:!1,error:"Internal tool processing failed",errorDetails:a.error},d=j.O;break}t.info(`Adding ${a.value.toolCallMessages.length} internal tool result messages for conv ${E}`);let c=a.value.toolCallMessages.map(a=>({...a,id:crypto.randomUUID(),timestamp:Date.now(),processNodeId:b.currentNodeId}));b.messages.push(...c),e.FlowExecutor.conversationStates.set(E,b),t.info(`Continuing loop for conv ${E} after internal tool processing (flujo=false).`);continue}if(g.length>0){t.info(`[flujo=false] Found ${g.length} external tools for conv ${E}. Wrapping in XML and returning.`);let a=[];for(let b of g)if("function"===b.type)try{let c=JSON.parse(b.function.arguments||"{}"),d="";for(let a in c){let b=String(c[a]).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;");d+=`
1
+ "use strict";exports.id=7214,exports.ids=[4681,7214],exports.modules={38291:(a,b,c)=>{c.d(b,{n:()=>g});var d=c(92372),e=c(75028);let f=(0,c(50846).h)("backend/execution/flow/persistConversationState");async function g(a,b){let c="conversations/",g=String(a).startsWith(c)?String(a).slice(c.length):String(a);return((0,d.ln)(g),null!=b.conversationId&&(0,d.ln)(b.conversationId),b.ephemeral)?(f.debug(`Refusing to persist ephemeral state (key ${a}); ephemeral runs never reach the conversations store.`),Promise.resolve()):(0,e.isConversationDeleted)(b.conversationId)?(f.info(`Refusing to persist state for deleted conversation ${b.conversationId} (key ${a}).`),Promise.resolve()):(0,d.VH)(a,{...b,executionTrace:void 0,emit:void 0})}},44681:(a,b,c)=>{c.d(b,{Q:()=>j,validateFlowForRun:()=>k});var d=c(50846),e=c(87821),f=c(20433),g=c(24463),h=c(84671);let i=(0,d.h)("backend/execution/flow/validateFlowForRun");async function j(a){let b,c;try{b=await f.modelService.loadModels()}catch(a){i.warn("validateFlowObjectForRun: could not load models; skipping model checks",a)}try{let a=await g.mcpService.loadServerConfigs();Array.isArray(a)&&(c=a.map(a=>({name:a.name,status:a.disabled?"disabled":void 0})))}catch(a){i.warn("validateFlowObjectForRun: could not load servers; skipping server checks",a)}return(0,h.nC)(a,{models:b,servers:c})}async function k(a){let b=await e.flowService.getFlow(a);return b?j(b):(i.warn(`validateFlowForRun: flow ${a} could not be loaded; skipping pre-run checks`),{issues:[],errorCount:0,warningCount:0,isRunnable:!0})}},57214:(a,b,c)=>{c.d(b,{runFlow:()=>z});var d=c(50846),e=c(52940),f=c(38291),g=c(60184),h=c(14214),i=c(56793),j=c(99978),k=c(41742),l=c(75312),m=c(87821),n=c(92372),o=c(13516),p=c(44681),q=c(67490),r=c(75028),s=c(23529);let t=(0,d.h)("backend/execution/flow/runFlow");m.flowService.getFlowByName||(m.flowService.getFlowByName=async a=>(await m.flowService.loadFlows()).find(b=>b.name===a)||null,t.info("Added getFlowByName method directly to flowService instance."));let u=m.flowService,v=f.n;async function w(a){let b;if("boolean"==typeof a.unattended)return a.unattended;try{let c=a.flowSnapshot??(a.flowId?await m.flowService.getFlow(a.flowId)??void 0:void 0);b=c?.unattended}catch(a){t.debug("resolveUnattended: flow load failed; using source default",{err:a})}let c="boolean"==typeof b?b:"schedule"===a.source;return a.unattended=c,c}async function x(a,b,c){let d;if(!await w(a))return"complete";let e=a.currentNodeId;if(!e)return"complete";try{d=a.flowSnapshot??(a.flowId?await m.flowService.getFlow(a.flowId)??void 0:void 0)}catch(a){return t.debug("[Unattended] flow load failed; completing normally",{err:a}),"complete"}if(!d)return"complete";let f=d.nodes?.find(a=>a.id===e);if(!f||"process"!==f.type)return"complete";let g=new Set((d.nodes??[]).filter(a=>"mcp"===a.type).map(a=>a.id)),h=Array.from(new Set((d.edges??[]).filter(a=>a.source===e&&"mcpEdge"!==a.type&&a.data?.edgeType!=="mcp"&&a.data?.bidirectional!==!0&&!g.has(a.target)).map(a=>a.target))).filter(a=>(d.nodes??[]).some(b=>b.id===a));if(1===h.length){let d=h[0];t.info(`[Unattended] Process node ${e} ended on plain text; auto-advancing to sole forward successor ${d} for conv ${a.conversationId}.`);let f=a.currentNodeId;return a.currentNodeId=d,a.handoffRequested=void 0,c.delete(e),b({type:"handoff",from:f?{nodeId:f}:void 0,toNodeId:d,edgeId:`unattended-auto:${e}->${d}`}),"advanced"}if(h.length>1){let b=c.get(e)??0;if(b<1)return c.set(e,b+1),t.info(`[Unattended] Process node ${e} ended on plain text with ${h.length} forward successors; nudging to hand off (attempt ${b+1}/1).`),a.messages.push({id:crypto.randomUUID(),role:"user",content:"You ended your turn without calling a tool or handing off, but this is an unattended run that cannot stop at this step. To continue you MUST call one of your handoff tools to route to the next step. If your work at this step is complete, hand off to the finishing/next step now.",timestamp:Date.now(),processNodeId:e}),"nudged";t.warn(`[Unattended] Process node ${e} still did not hand off after 1 nudge(s); completing the run to avoid a loop.`)}return"complete"}async function y(a,b,c){try{let d,e=a.flowId;if(!e)return;try{d=(await m.flowService.getFlow(e))?.name??void 0}catch{}let f="api"===a.source?"api":"chat",g=c&&c.length>4096?`${c.slice(0,4096)}…`:c;(0,i.eh)().publish({flowId:e,flowName:d,executionId:a.plannedExecutionId,runId:a.conversationId||"",conversationId:a.conversationId||"",status:b,outputText:g,firedBy:f,chainDepth:a.chainDepth??0,timestamp:new Date().toISOString()})}catch(a){t.warn("Failed to publish runFlow flow-run event:",a)}}async function z(a){let b,c,d,f=Date.now(),i=a.flujo??!0,w=a.requireApproval??!1,z=a.debug??!1,A=a.continueDebug??!1,B=a.userTurn??!1,C="ephemeral"===a.mode,D=a.messages??(void 0!==a.prompt?[{role:"user",content:a.prompt}]:[]),E={model:a.modelName,messages:D,processNodeId:a.processNodeId};t.info("runFlow invoked",{flowId:a.flowId,model:a.modelName,messageCount:D.length,mode:C?"ephemeral":"conversation",flujo:i,requireApproval:w,flujodebug:z,conversationId:a.conversationId});let F=a.conversationId||crypto.randomUUID(),G=`conversations/${F}`,H="new",I=!1;if(t.info(`Effective Conversation ID for this run: ${F}`,{providedId:a.conversationId}),e.FlowExecutor.conversationStates.has(F))c=e.FlowExecutor.conversationStates.get(F),t.info(`Resuming conversation ${F} from memory`,{currentNodeId:c.currentNodeId}),H="memory";else if(!C)try{(c=await (0,n.YM)(G,void 0))?(t.info(`Loaded conversation state from storage: ${F}`),H="storage",await (0,g.jM)(c),e.FlowExecutor.conversationStates.set(F,c)):t.info(`No state found in storage for conversation: ${F}. Will create new state.`)}catch(a){t.warn(`Error loading conversation state from storage for ${F}:`,a)}if(c?((b=c).conversationId!==F&&(t.warn(`Loaded state's internal conversationId (${b.conversationId}) differs from effectiveConvId (${F}). Using effectiveConvId.`),b.conversationId=F),"new"!==H&&("completed"===b.status||"error"===b.status||void 0===b.status)&&(t.info(`Resuming completed/errored/fresh conversation ${F}. Resetting status to 'running'.`),I="error"===b.status,b.status="running",b.lastResponse=void 0,b.isCancelled=!1,"storage"===H&&e.FlowExecutor.conversationStates.set(F,b)),E.processNodeId&&"new"!==H&&(t.info(`Edit detected: Resetting currentNodeId for conversation ${F} to provided processNodeId: ${E.processNodeId}`),b.currentNodeId=E.processNodeId,b.status="running",b.lastResponse=void 0,b.pendingToolCalls=void 0,b.handoffRequested=void 0,b.isCancelled=!1,b.trackingInfo={executionId:crypto.randomUUID(),startTime:Date.now(),nodeExecutionTracker:[]},o.G.ENABLE_EXECUTION_TRACKER&&b.executionTrace&&(b.executionTrace=[]),e.FlowExecutor.conversationStates.set(F,b),t.verbose(`State updated in memory with reset currentNodeId: ${b.currentNodeId}`))):(t.info(`Creating new conversation state object for ID: ${F}`),b={trackingInfo:{executionId:crypto.randomUUID(),startTime:Date.now(),nodeExecutionTracker:(o.G.ENABLE_EXECUTION_TRACKER,[])},messages:[],flowId:"",conversationId:F,currentNodeId:void 0,status:"running",title:a.title?.trim()||"New Conversation",createdAt:Date.now(),updatedAt:Date.now(),debugMode:z,executionTrace:z&&o.G.ENABLE_EXECUTION_TRACKER?[]:void 0,variables:{}}),a.variables&&"object"==typeof a.variables)for(let[c,d]of(b.variables=b.variables??{},Object.entries(a.variables)))null!=d&&(b.variables[c]="string"==typeof d?d:String(d));if(b.requireApproval=w,a.source&&(b.source=a.source),a.plannedExecutionId&&(b.plannedExecutionId=a.plannedExecutionId),C&&(b.ephemeral=!0),a.parentRunId&&(b.parentRunId=a.parentRunId,b.parentConversationId=a.parentRunId,!b.rootConversationId)){let c=e.FlowExecutor.conversationStates.get(a.parentRunId);b.rootConversationId=c?.rootConversationId??c?.conversationId??a.parentRunId}if(b.runDepth=a.depth??b.runDepth??0,b.chainDepth=a.chainDepth??b.chainDepth??0,b.onApprovalRequired=a.onApprovalRequired??b.onApprovalRequired??"auto",b.runDepth>q.A)return t.error(`runFlow aborted: subflow depth ${b.runDepth} exceeds max ${q.A}`),b.status="error",{status:"error",conversationId:F,outputText:"",messages:b.messages,error:{message:`Subflow recursion limit (${q.A}) exceeded`,statusCode:500},finalAction:j.O,sharedState:b};let J=[...b.messages??[]];if("new"===H){a.flowDefinition&&(b.flowSnapshot=a.flowDefinition,b.flowId=a.flowDefinition.id);let c=a.flowDefinition?a.flowDefinition.id:a.flowId;if(!c&&E.model){let a=E.model.substring(5),d=await u.getFlowByName(a);if(!d)return t.error(`Flow not found: ${a}`),{status:"error",conversationId:F,outputText:"",messages:b.messages,flowNotFound:{name:a},error:{message:`Flow not found: ${a}`,statusCode:400},finalAction:j.O,sharedState:b};c=d.id}if(!c)return t.error("No flow specified for run (neither flowId nor model provided)."),{status:"error",conversationId:F,outputText:"",messages:b.messages,error:{message:"No flow specified (provide flowId or model).",statusCode:400},finalAction:j.O,sharedState:b};b.flowId=c;let d=(E.messages||[]).filter(a=>!(a.depth>0)).map(a=>({...a,id:a.id||crypto.randomUUID(),timestamp:a.timestamp||Date.now(),processNodeId:a.processNodeId||void 0}));b.messages=d;try{if(b.updatedAt=Date.now(),"New Conversation"===b.title&&b.messages.length>0){let a=b.messages.find(a=>"user"===a.role);a&&"string"==typeof a.content&&(b.title=(0,s.oO)(a.content),t.verbose(`Updated conversation title for ${F} during init to: ${b.title}`))}await v(G,b),t.debug(`Saved initial state for new conversation ${F}.`)}catch(a){t.error(`Failed to save initial state for new conversation ${F}:`,a)}e.FlowExecutor.conversationStates.set(F,b)}else E.messages&&E.messages.length>0&&(b.messages=E.messages.filter(a=>!(a.depth>0)).map(a=>({...a,id:a.id||crypto.randomUUID(),timestamp:a.timestamp||Date.now(),processNodeId:a.processNodeId||void 0})),t.info(`Updated conversation ${b.conversationId} with ${b.messages.length} messages from request`)),(B||void 0===b.debugMode)&&(b.debugMode=z),B&&(b.debugPendingToolCalls=void 0),b.debugMode&&o.G.ENABLE_EXECUTION_TRACKER&&!b.executionTrace&&(b.executionTrace=[]);try{await (0,g.UG)(b,J)}catch(a){t.warn(`Conversation-log reconcile failed for ${F}; continuing`,a)}if(B&&"new"!==H&&!E.processNodeId){let a=b.messages.length>0?b.messages[b.messages.length-1]:void 0;a?.role==="user"&&a.processNodeId&&a.processNodeId!==b.currentNodeId&&(t.info(`New user turn for ${F}: directing execution to node ${a.processNodeId} (was ${b.currentNodeId}).`),b.currentNodeId=a.processNodeId,e.FlowExecutor.conversationStates.set(F,b))}if(I&&B&&!C&&"new"!==H&&!E.processNodeId){let a=b.messages.length>0?b.messages[b.messages.length-1]:void 0;if(a?.role!=="user"){let a;for(let c=b.messages.length-1;c>=0;c--)if("user"===b.messages[c].role){a=b.messages[c].processNodeId;break}if(!a&&b.flowId)try{let c=await m.flowService.getFlow(b.flowId);a=c?.nodes?.find(a=>"start"===a.type)?.id}catch(a){t.warn(`Could not resolve start node for error-resume of ${F}`,a)}a&&a!==b.currentNodeId&&(t.info(`Error-resume for ${F}: replaying turn from entry node ${a} (was ${b.currentNodeId}).`),b.currentNodeId=a,e.FlowExecutor.conversationStates.set(F,b))}}B&&b.flowId&&(e.FlowExecutor.clearFlowCache(b.flowId),t.debug(`Cleared compiled-flow cache for ${b.flowId} at start of user turn ${F}.`));let K=!1,L=0,M=new Map,N=a.emit??h.$.emitterFor(F),O=new Set(b.messages.map(a=>a.id).filter(a=>!!a)),P=a=>{if(!a.usage)return;let c=b.usage??{promptTokens:0,completionTokens:0,totalTokens:0,costUsd:0,byNode:{}};c.promptTokens+=a.usage.promptTokens,c.completionTokens+=a.usage.completionTokens,c.totalTokens+=a.usage.totalTokens;let d=a.usage.cacheReadTokens??0;d&&(c.cacheReadTokens=(c.cacheReadTokens??0)+d);let e=a.processNodeId||"unknown",f=c.byNode[e]??{promptTokens:0,completionTokens:0,totalTokens:0,costUsd:0};f.promptTokens+=a.usage.promptTokens,f.completionTokens+=a.usage.completionTokens,f.totalTokens+=a.usage.totalTokens,d&&(f.cacheReadTokens=(f.cacheReadTokens??0)+d),c.byNode[e]=f,b.usage=c,N({type:"usage",node:a.processNodeId?{nodeId:a.processNodeId}:void 0,promptTokens:a.usage.promptTokens,completionTokens:a.usage.completionTokens,totalTokens:a.usage.totalTokens,costUsd:0,...d?{cacheReadTokens:d}:{}})},Q=()=>{for(let a of b.messages)a.id||(a.id=crypto.randomUUID()),O.has(a.id)||(O.add(a.id),"system"!==a.role&&(N({type:"message",message:a,node:a.processNodeId?{nodeId:a.processNodeId}:void 0}),P(a)))};if(N({type:"run:start",flowId:b.flowId}),(B||"new"===H)&&b.flowId)try{let a=b.flowSnapshot?await (0,p.Q)(b.flowSnapshot):await (0,p.validateFlowForRun)(b.flowId);if(!a.isRunnable){let c=a.issues.filter(a=>"error"===a.severity),e=`This flow can't run yet — please fix the following before running:
2
+ `+c.map(a=>`• ${a.message}`).join("\n");t.warn(`Pre-run validation blocked flow ${b.flowId} for conv ${F}`,{errorCount:c.length,codes:c.map(a=>a.code)}),b.lastResponse={success:!1,error:e,errorDetails:{message:e,type:"invalid_request_error",code:"flow_invalid",status:400}},d=j.O,K=!0}}catch(a){t.warn(`Pre-run validation could not complete for ${b.flowId}; proceeding`,a)}let R=()=>!!b.isCancelled||!!(0,r.isCancelledByAncestry)(b.parentRunId,e.FlowExecutor.conversationStates)&&(b.isCancelled=!0,!0),S=!!b.debugMode&&!A,T=()=>{b.status="paused_debug",N({type:"run:paused",reason:"debug",node:b.currentNodeId?{nodeId:b.currentNodeId}:void 0})};try{if(!K)for(;;){if(L++,t.debug(`--- Starting Execution Step ${L} for Conv ${F} ---`),L>150){t.warn(`Max internal iterations (150) reached for conv ${F}. Breaking loop.`),d!==j.O&&(b.lastResponse={success:!1,error:"Maximum internal iterations (150) reached."},d=j.O);break}if(R()){t.info(`Cancellation flag detected for conv ${F}. Terminating execution.`),b.status="error",b.lastResponse={success:!1,error:"Execution cancelled by user."},d=j.O;break}if(b.debugPendingToolCalls&&b.debugPendingToolCalls.length>0){let a=b.debugPendingToolCalls;b.debugPendingToolCalls=void 0,t.info(`[Debug Step] Executing ${a.length} pending tool call(s) for conv ${F}.`);let c=await k.s.processToolCalls({toolCalls:a,toolNameMap:b.toolNameMap,emit:N,conversationId:b.ephemeral?void 0:b.conversationId,node:b.currentNodeId?{nodeId:b.currentNodeId}:void 0,shouldAbort:R});if(!c.success){t.error(`Debug tool processing failed for conv ${F}`,{error:c.error}),b.lastResponse={success:!1,error:"Tool processing failed",errorDetails:c.error},d=j.O;break}let f=c.value.toolCallMessages.map(a=>({...a,id:crypto.randomUUID(),timestamp:Date.now(),processNodeId:b.currentNodeId}));b.messages.push(...f),e.FlowExecutor.conversationStates.set(F,b),Q();try{b.updatedAt=Date.now(),await v(G,b)}catch(a){t.error(`Failed to save state after debug tool execution for conv ${F}:`,a)}if(S){t.info(`[Debug Step] Paused after tool execution for conv ${F}.`),T();break}continue}if(!S&&b.breakpoints&&b.breakpoints.length>0){let a=await e.FlowExecutor.peekNextNodeId(b),c=b.breakpoints.includes("*");if(a&&(c||b.breakpoints.includes(a))&&b.lastBreakNodeId!==a){c&&(b.breakpoints=b.breakpoints.filter(a=>"*"!==a)),t.info(`Breakpoint hit at node ${a}${c?" (attach)":""} for conv ${F}. Pausing.`),b.status="paused_debug",b.debugMode=!0,b.lastBreakNodeId=a,N({type:"breakpoint:hit",node:{nodeId:a}}),N({type:"run:paused",reason:"breakpoint",node:{nodeId:a}});try{b.updatedAt=Date.now(),await v(G,b)}catch(a){t.error(`Failed to save state on breakpoint for conv ${F}:`,a)}break}a&&b.lastBreakNodeId&&a!==b.lastBreakNodeId&&(b.lastBreakNodeId=void 0)}if(b.messages.length>0){let a=b.messages.slice(-3);t.verbose(`Message history before step ${L}`,a)}else t.verbose(`No messages in history before step ${L}`);let a=await e.FlowExecutor.executeStep(b,N);if(b=a.sharedState,d=a.action,Q(),b.updatedAt=Date.now(),"New Conversation"===b.title&&b.messages.length>0){let a=b.messages.find(a=>"user"===a.role);a&&"string"==typeof a.content&&(b.title=(0,s.oO)(a.content),t.verbose(`Updated conversation title for ${F} after step ${L} to: ${b.title}`))}if(t.info(`Step ${L} completed for conv ${F}. Action: ${d}`,{currentNodeId:b.currentNodeId}),t.verbose(`Shared state after step ${L}`,b),t.debug(`[Action Handling] Step ${L}: Received action "${d}" for conv ${F}`),d===j.O){t.info(`[Action Handling] Step ${L}: Handling ERROR_ACTION for conv ${F}`),t.error(`Error action received during step ${L} for conv ${F}`,{error:b.lastResponse});break}if(d===j.g4){t.info(`[Action Handling] Step ${L}: Handling FINAL_RESPONSE_ACTION for conv ${F}`),t.info(`Final response action received at step ${L} for conv ${F}`);let a=await x(b,N,M);if("advanced"===a||"nudged"===a){Q(),e.FlowExecutor.conversationStates.set(F,b);continue}b.status="completed",t.info(`Setting conversation status to 'completed' for conv ${F}`);break}if(d===j.Jp){t.info(`[Action Handling] Step ${L}: Handling TOOL_CALL_ACTION for conv ${F}`),t.info(`Tool call action received at step ${L} for conv ${F}`);let a=b.messages.length>0?b.messages[b.messages.length-1]:null;if(a?.role==="assistant"&&a.tool_calls)if(i){if(w&&"fail"===b.onApprovalRequired){let c=a.tool_calls[0],e=c&&"function"===c.type?c.function.name:"unknown";t.info(`[flujo=true, onApprovalRequired=fail] Failing fast for tool "${e}" (conv ${F})`),b.status="error",b.pendingToolCalls=a.tool_calls,b.lastResponse={success:!1,error:`Headless run requires approval for tool "${e}" but no approver is available (approvalPolicy: fail).`,errorDetails:{message:`Headless run requires approval for tool "${e}" but no approver is available (approvalPolicy: fail).`,type:"approval_required",name:e}},d=j.O;break}if(w){t.info(`[flujo=true, requireApproval=true] Pausing execution for tool approval for conv ${F}`),b.status="awaiting_tool_approval",b.pendingToolCalls=a.tool_calls,b.lastResponse=void 0,e.FlowExecutor.conversationStates.set(F,b);try{if(b.updatedAt=Date.now(),"New Conversation"===b.title&&b.messages.length>0){let a=b.messages.find(a=>"user"===a.role);a&&"string"==typeof a.content&&(b.title=(0,s.oO)(a.content),t.verbose(`Updated conversation title for ${F} before pausing to: ${b.title}`))}await v(G,b),t.verbose(`Saved state before pausing for approval for conv ${F}`)}catch(a){t.error(`Failed to save state before pausing for approval for conv ${F}:`,a)}N({type:"run:awaiting_approval",pendingToolCalls:a.tool_calls});break}if(S){t.info(`[Debug Step] Paused before executing ${a.tool_calls.length} tool call(s) for conv ${F}.`),b.debugPendingToolCalls=a.tool_calls,e.FlowExecutor.conversationStates.set(F,b);try{b.updatedAt=Date.now(),await v(G,b)}catch(a){t.error(`Failed to save state before debug tool pause for conv ${F}:`,a)}T();break}{t.info(`[flujo=true, requireApproval=false] Processing ${a.tool_calls.length} tools internally for conv ${F}`);let c=await k.s.processToolCalls({toolCalls:a.tool_calls,toolNameMap:b.toolNameMap,emit:N,conversationId:b.ephemeral?void 0:b.conversationId,node:b.currentNodeId?{nodeId:b.currentNodeId}:void 0,shouldAbort:R});if(!c.success){t.error(`Internal tool processing failed for conv ${F}`,{error:c.error}),b.lastResponse={success:!1,error:"Tool processing failed",errorDetails:c.error},d=j.O;break}t.info(`Adding ${c.value.toolCallMessages.length} tool result messages for conv ${F}`);let f=c.value.toolCallMessages.map(a=>({...a,id:crypto.randomUUID(),timestamp:Date.now(),processNodeId:b.currentNodeId}));b.messages.push(...f),e.FlowExecutor.conversationStates.set(F,b),Q(),t.info(`Continuing loop for conv ${F} after internal tool processing (no approval needed).`);continue}}else{t.info(`[flujo=false] Tool call action received for conv ${F}. Checking tool types.`);let c=a.tool_calls||[],f=[],g=[];if(c.forEach(a=>{"function"===a.type&&(0,l.$9)(a.function.name,b.toolNameMap)?(t.verbose("tool is internal:",a.function.name),f.push(a)):(t.verbose("tool is external:",a.function.name),g.push(a))}),f.length>0){t.info(`[flujo=false] Processing ${f.length} internal tools for conv ${F}. External tools (${g.length}) will be ignored this step.`);let a=await k.s.processToolCalls({toolCalls:f,toolNameMap:b.toolNameMap,emit:N,conversationId:b.ephemeral?void 0:b.conversationId,node:b.currentNodeId?{nodeId:b.currentNodeId}:void 0,shouldAbort:R});if(!a.success){t.error(`[flujo=false] Internal tool processing failed for conv ${F}`,{error:a.error}),b.lastResponse={success:!1,error:"Internal tool processing failed",errorDetails:a.error},d=j.O;break}t.info(`Adding ${a.value.toolCallMessages.length} internal tool result messages for conv ${F}`);let c=a.value.toolCallMessages.map(a=>({...a,id:crypto.randomUUID(),timestamp:Date.now(),processNodeId:b.currentNodeId}));b.messages.push(...c),e.FlowExecutor.conversationStates.set(F,b),t.info(`Continuing loop for conv ${F} after internal tool processing (flujo=false).`);continue}if(g.length>0){t.info(`[flujo=false] Found ${g.length} external tools for conv ${F}. Wrapping in XML and returning.`);let a=[];for(let b of g)if("function"===b.type)try{let c=JSON.parse(b.function.arguments||"{}"),d="";for(let a in c){let b=String(c[a]).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;");d+=`
3
3
  <${a}>${b}</${a}>`}a.push(`<${b.function.name}>${d}
4
- </${b.function.name}>`)}catch(c){t.error(`[flujo=false] Failed to parse arguments for external tool ${b.function.name}`,{args:b.function.arguments,error:c,convId:E}),a.push(`<${b.function.name}>
4
+ </${b.function.name}>`)}catch(c){t.error(`[flujo=false] Failed to parse arguments for external tool ${b.function.name}`,{args:b.function.arguments,error:c,convId:F}),a.push(`<${b.function.name}>
5
5
  <error>Failed to parse arguments: ${c instanceof Error?c.message:String(c)}</error>
6
- </${b.function.name}>`)}b.lastResponse={_flujo_xml_tools:a.join("\n\n")},d=j.g4,t.info(`[flujo=false] Prepared XML for external tools. Exiting loop for conv ${E}.`);break}t.warn(`[flujo=false] TOOL_CALL_ACTION received for conv ${E} but no tools found after classification. Treating as final.`),d=j.g4;break}t.warn(`TOOL_CALL_ACTION received for conv ${E} but no tool_calls found in last message. Treating as final.`),d=j.g4;break}let c=await e.FlowExecutor.resolveHandoff(b,d);if(c.isSuccessorEdge){t.info(`[Action Handling] Step ${K}: Handling Handoff Action (Edge ID) for conv ${E}`),t.info(`Handoff action received for conv ${E}. Edge: ${d}`);let a=c.targetNodeId;if("string"==typeof a&&a.length>0){let c=b.messages.length>0?b.messages[b.messages.length-1]:null;if(c?.role==="assistant"&&c.tool_calls){let e,f,g=c.tool_calls.filter(a=>"function"===a.type&&("handoff"===a.function.name||a.function.name.startsWith("handoff_to_"))),h=a=>b.handoffNameMap?.[a]||a.replace("handoff_to_",""),i=g.filter(b=>"function"===b.type&&h(b.function.name)===a),j=i.length>0?i:g.slice(0,1);0===j.length&&t.warn(`Handoff action received for edge ${d}, but could not find corresponding handoff tool call in last assistant message.`);let k=[],l="";for(let c of(j.forEach((c,g)=>{if("function"===c.type)try{let a=JSON.parse(c.function.arguments||"{}"),b="string"==typeof a?.task?a.task.trim():"",d="string"==typeof a?.prompt?a.prompt.trim():"",g=b||(j.length>1?d:"");if(g&&k.push(g),!l&&d&&(l=d),!e&&Array.isArray(a?.parallelFlows)){let b=a.parallelFlows.filter(a=>"string"==typeof a&&""!==a.trim());b.length>0&&(e=b)}let h=a?.concurrencyLimit;void 0===f&&"number"==typeof h&&h>=1&&(f=Math.floor(h))}catch(a){t.warn(`Could not parse handoff tool-call arguments for edge ${d}; ignoring caller input for this call`,{parseError:a})}b.messages.push({id:crypto.randomUUID(),role:"tool",tool_call_id:c.id,content:JSON.stringify({status:"Handoff processed",targetNodeId:a,...j.length>1?{lane:g+1,laneCount:j.length}:{}}),timestamp:Date.now(),processNodeId:b.currentNodeId})}),g))j.includes(c)||(b.messages.push({id:crypto.randomUUID(),role:"tool",tool_call_id:c.id,content:JSON.stringify({status:"Not executed",reason:"A different handoff was chosen this turn."}),timestamp:Date.now(),processNodeId:b.currentNodeId}),t.warn(`Handoff call ${"function"===c.type?c.function.name:c.id} targeted a different node than the chosen route; answered as not executed.`));if(l||1!==k.length||(l=k[0]),l||k.length>0||e&&e.length>0)b.handoffInput={targetNodeId:a,prompt:l,...k.length>0?{tasks:k}:{},...e&&e.length>0?{parallelFlows:e}:{},...void 0!==f?{concurrencyLimit:f}:{}},t.info(`Captured caller handoff input for node ${a}`,{promptChars:l.length,spawnBriefs:k.length,fanoutCount:e?.length??0});else try{let c=await m.flowService.getFlow(b.flowId),d=c?.nodes?.find(b=>b.id===a),e=d?.data?.properties;d?.type!=="subflow"||e?.inputMode!=="isolated"||e?.allowCallerPrompt!==!0||e?.allowCallerFanout===!0||e?.promptTemplate?.trim()||t.warn(`Handoff to isolated subflow node ${a} has neither a caller-supplied prompt nor an authored promptTemplate; the subflow will start with an empty prompt and may stall. The routing model should have supplied the required "prompt" argument (issue #169).`,{targetNodeId:a})}catch(a){t.debug("Issue #169 empty-prompt handoff guard check failed (non-fatal)",{guardErr:a})}}else t.warn(`Handoff action received for edge ${d}, but the last message was not an assistant message with tool calls.`);O();let f=b.currentNodeId;if(b.currentNodeId=a,b.handoffRequested=void 0,L({type:"handoff",from:f?{nodeId:f}:void 0,toNodeId:a,edgeId:d}),t.info(`Transitioning conv ${E} to node ${b.currentNodeId}`),e.FlowExecutor.conversationStates.set(E,b),Q){t.info(`[Debug Step] Paused after handoff to node ${b.currentNodeId} for conv ${E}.`),R();break}t.info(`Continuing loop for conv ${E} after handoff.`);continue}t.error(`Handoff failed for conv ${E}: Successor node for edge ${d} has invalid ID.`),b.lastResponse={success:!1,error:`Handoff failed: Target node for edge ${d} has invalid ID.`},d=j.O;break}if(d===j.E5){t.info(`[Action Handling] Step ${K}: Handling STAY_ON_NODE_ACTION for conv ${E}`),t.info(`Stay on node action received for conv ${E} at step ${K}`);break}t.warn(`Unrecognized action '${d}' received at step ${K} for conv ${E}. Treating as final response.`),d=j.g4;break}}catch(a){if(t.error(`Unhandled error during execution loop for conv ${E}`,{loopError:a}),d!==j.O&&P()&&(b.status="error",b.lastResponse={success:!1,error:"Execution cancelled by user."},d=j.O),d!==j.O){let c=a?.details;b.lastResponse={success:!1,error:a instanceof Error?a.message:String(a),errorDetails:a instanceof Error?{name:a.name,message:a.message,stack:a.stack,...c&&"object"==typeof c?c:{}}:void 0},d=j.O}}d!==j.O&&P()&&(t.info(`Cancellation flag set at run end for conv ${E}; reporting cancelled instead of '${b.status}'.`),b.status="error",b.lastResponse={success:!1,error:"Execution cancelled by user."},d=j.O),d===j.O&&"error"!==b.status&&(b.status="error");let S=Date.now()-f,T=b.status||(d===j.g4?"completed":d===j.O?"error":"running");if(t.info(`Execution finished for conv ${E}. Final Action: ${d}, Final Status: ${T}`,{duration:`${S}ms`}),O(),("completed"===T||"error"===T)&&(L({type:"run:done",status:T}),"schedule"!==b.source&&(b.runDepth??0)===0)){let a=b.messages[b.messages.length-1],c=a&&"assistant"===a.role&&"string"==typeof a.content?a.content:void 0;w(b,T,c)}try{if(b.updatedAt=Date.now(),"New Conversation"===b.title&&b.messages.length>0){let a=b.messages.find(a=>"user"===a.role);a&&"string"==typeof a.content&&(b.title=(0,s.oO)(a.content),t.verbose(`Updated conversation title for ${E} before final return to: ${b.title}`))}await v(F,b),t.debug(`Saved final state for conversation ${E} before returning.`)}catch(a){t.error(`Failed to save final state for conversation ${E}:`,a)}(0,r.isConversationDeleted)(E)?e.FlowExecutor.conversationStates.delete(E):e.FlowExecutor.conversationStates.set(E,b);let U=()=>{B&&("completed"===b.status||"error"===b.status)&&e.FlowExecutor.conversationStates.delete(E)},V={conversationId:b.conversationId||E,messages:b.messages,usage:b.usage,finalAction:d,sharedState:b};if("paused_debug"===b.status)return t.info(`Returning paused debug state for conv ${E}`),{...V,status:"paused_debug",outputText:"",pendingToolCalls:b.pendingToolCalls};if("error"===b.status||d===j.O){let a,c="Unknown error during execution",d=500;if("object"==typeof b.lastResponse&&null!==b.lastResponse)if("success"in b.lastResponse&&!1===b.lastResponse.success&&"error"in b.lastResponse&&"string"==typeof b.lastResponse.error){if(c=b.lastResponse.error,"errorDetails"in b.lastResponse&&"object"==typeof b.lastResponse.errorDetails&&null!==b.lastResponse.errorDetails){let e=b.lastResponse.errorDetails;(a={message:"string"==typeof e.message?e.message:c,type:"string"==typeof e.type?e.type:void 0,code:"string"==typeof e.code?e.code:void 0,param:"string"==typeof e.param?e.param:void 0,status:"number"==typeof e.status?e.status:void 0,stack:"string"==typeof e.stack?e.stack:void 0,name:"string"==typeof e.name?e.name:void 0}).status&&(d=a.status)}}else try{c=`Unexpected error state object: ${JSON.stringify(b.lastResponse)}`}catch{c="Unexpected error state object (unserializable)"}else"string"==typeof b.lastResponse&&(c=b.lastResponse);return a?a.message=a.message||c:a={message:c},t.error(`Returning error result for conv ${E}`,{errorMessage:c,errorDetails:a,statusCode:d}),"error"!==b.status&&(b.status="error"),U(),{...V,status:"error",outputText:"",error:{message:c,details:a,statusCode:d}}}let W=b.messages.length>0?b.messages[b.messages.length-1]:null,X="",Y="";"object"==typeof b.lastResponse&&null!==b.lastResponse&&"_flujo_xml_tools"in b.lastResponse?(Y=b.lastResponse._flujo_xml_tools,X=W?.role==="assistant"&&"string"==typeof W.content?W.content:"",X+=(X?"\n\n":"")+Y,b.lastResponse=X):X="string"==typeof b.lastResponse?b.lastResponse:W?.role==="assistant"&&"string"==typeof W.content?W.content:d!==j.Jp||i?"Processing complete.":"";let Z=Y?void 0:W?.role==="assistant"?W.tool_calls:void 0;return t.info(`Returning success result for conv ${E}`,{action:d,status:b.status,flujo:i,requireApproval:x,flujodebug:y}),U(),{...V,status:b.status||(d===j.g4?"completed":"running"),outputText:X,toolCalls:Z,pendingToolCalls:b.pendingToolCalls}}}};
6
+ </${b.function.name}>`)}b.lastResponse={_flujo_xml_tools:a.join("\n\n")},d=j.g4,t.info(`[flujo=false] Prepared XML for external tools. Exiting loop for conv ${F}.`);break}t.warn(`[flujo=false] TOOL_CALL_ACTION received for conv ${F} but no tools found after classification. Treating as final.`),d=j.g4;break}t.warn(`TOOL_CALL_ACTION received for conv ${F} but no tool_calls found in last message. Treating as final.`),d=j.g4;break}let c=await e.FlowExecutor.resolveHandoff(b,d);if(c.isSuccessorEdge){t.info(`[Action Handling] Step ${L}: Handling Handoff Action (Edge ID) for conv ${F}`),t.info(`Handoff action received for conv ${F}. Edge: ${d}`);let a=c.targetNodeId;if("string"==typeof a&&a.length>0){b.handoffInput=void 0;let c=b.messages.length>0?b.messages[b.messages.length-1]:null;if(c?.role==="assistant"&&c.tool_calls){let e,f,g=c.tool_calls.filter(a=>"function"===a.type&&("handoff"===a.function.name||a.function.name.startsWith("handoff_to_"))),h=a=>b.handoffNameMap?.[a]||a.replace("handoff_to_",""),i=g.filter(b=>"function"===b.type&&h(b.function.name)===a),j=i.length>0?i:g.slice(0,1);0===j.length&&t.warn(`Handoff action received for edge ${d}, but could not find corresponding handoff tool call in last assistant message.`);let k=[],l="";for(let c of(j.forEach((c,g)=>{if("function"===c.type)try{let a=JSON.parse(c.function.arguments||"{}"),b="string"==typeof a?.task?a.task.trim():"",d="string"==typeof a?.prompt?a.prompt.trim():"",g=b||(j.length>1?d:"");if(g&&k.push(g),!l&&d&&(l=d),!e&&Array.isArray(a?.parallelFlows)){let b=a.parallelFlows.filter(a=>"string"==typeof a&&""!==a.trim());b.length>0&&(e=b)}let h=a?.concurrencyLimit;void 0===f&&"number"==typeof h&&h>=1&&(f=Math.floor(h))}catch(a){t.warn(`Could not parse handoff tool-call arguments for edge ${d}; ignoring caller input for this call`,{parseError:a})}b.messages.push({id:crypto.randomUUID(),role:"tool",tool_call_id:c.id,content:JSON.stringify({status:"Handoff processed",targetNodeId:a,...j.length>1?{lane:g+1,laneCount:j.length}:{}}),timestamp:Date.now(),processNodeId:b.currentNodeId})}),g))j.includes(c)||(b.messages.push({id:crypto.randomUUID(),role:"tool",tool_call_id:c.id,content:JSON.stringify({status:"Not executed",reason:"A different handoff was chosen this turn."}),timestamp:Date.now(),processNodeId:b.currentNodeId}),t.warn(`Handoff call ${"function"===c.type?c.function.name:c.id} targeted a different node than the chosen route; answered as not executed.`));if(l||1!==k.length||(l=k[0]),l||k.length>0||e&&e.length>0)b.handoffInput={targetNodeId:a,prompt:l,...k.length>0?{tasks:k}:{},...e&&e.length>0?{parallelFlows:e}:{},...void 0!==f?{concurrencyLimit:f}:{}},t.info(`Captured caller handoff input for node ${a}`,{promptChars:l.length,spawnBriefs:k.length,fanoutCount:e?.length??0});else try{let c=await m.flowService.getFlow(b.flowId),d=c?.nodes?.find(b=>b.id===a),e=d?.data?.properties,f=d?.type==="subflow"?e?.promptTemplate:e?.isolatedPrompt;d?.type!=="subflow"&&d?.type!=="process"||e?.inputMode!=="isolated"||e?.allowCallerPrompt===!1||e?.allowCallerFanout===!0||f?.trim()||t.warn(`Handoff to isolated ${d?.type} node ${a} has neither a caller-supplied prompt nor an authored message; the target will start with an empty prompt and may stall. The routing model should have supplied the required "prompt" argument (issue #169).`,{targetNodeId:a})}catch(a){t.debug("Issue #169 empty-prompt handoff guard check failed (non-fatal)",{guardErr:a})}}else t.warn(`Handoff action received for edge ${d}, but the last message was not an assistant message with tool calls.`);Q();let f=b.currentNodeId;if(b.currentNodeId=a,b.handoffRequested=void 0,N({type:"handoff",from:f?{nodeId:f}:void 0,toNodeId:a,edgeId:d}),t.info(`Transitioning conv ${F} to node ${b.currentNodeId}`),e.FlowExecutor.conversationStates.set(F,b),S){t.info(`[Debug Step] Paused after handoff to node ${b.currentNodeId} for conv ${F}.`),T();break}t.info(`Continuing loop for conv ${F} after handoff.`);continue}t.error(`Handoff failed for conv ${F}: Successor node for edge ${d} has invalid ID.`),b.lastResponse={success:!1,error:`Handoff failed: Target node for edge ${d} has invalid ID.`},d=j.O;break}if(d===j.E5){t.info(`[Action Handling] Step ${L}: Handling STAY_ON_NODE_ACTION for conv ${F}`),t.info(`Stay on node action received for conv ${F} at step ${L}`);break}t.warn(`Unrecognized action '${d}' received at step ${L} for conv ${F}. Treating as final response.`),d=j.g4;break}}catch(a){if(t.error(`Unhandled error during execution loop for conv ${F}`,{loopError:a}),d!==j.O&&R()&&(b.status="error",b.lastResponse={success:!1,error:"Execution cancelled by user."},d=j.O),d!==j.O){let c=a?.details;b.lastResponse={success:!1,error:a instanceof Error?a.message:String(a),errorDetails:a instanceof Error?{name:a.name,message:a.message,stack:a.stack,...c&&"object"==typeof c?c:{}}:void 0},d=j.O}}d!==j.O&&R()&&(t.info(`Cancellation flag set at run end for conv ${F}; reporting cancelled instead of '${b.status}'.`),b.status="error",b.lastResponse={success:!1,error:"Execution cancelled by user."},d=j.O),d===j.O&&"error"!==b.status&&(b.status="error");let U=Date.now()-f,V=b.status||(d===j.g4?"completed":d===j.O?"error":"running");if(t.info(`Execution finished for conv ${F}. Final Action: ${d}, Final Status: ${V}`,{duration:`${U}ms`}),Q(),("completed"===V||"error"===V)&&(N({type:"run:done",status:V}),"schedule"!==b.source&&(b.runDepth??0)===0)){let a=b.messages[b.messages.length-1],c=a&&"assistant"===a.role&&"string"==typeof a.content?a.content:void 0;y(b,V,c)}try{if(b.updatedAt=Date.now(),"New Conversation"===b.title&&b.messages.length>0){let a=b.messages.find(a=>"user"===a.role);a&&"string"==typeof a.content&&(b.title=(0,s.oO)(a.content),t.verbose(`Updated conversation title for ${F} before final return to: ${b.title}`))}await v(G,b),t.debug(`Saved final state for conversation ${F} before returning.`)}catch(a){t.error(`Failed to save final state for conversation ${F}:`,a)}(0,r.isConversationDeleted)(F)?e.FlowExecutor.conversationStates.delete(F):e.FlowExecutor.conversationStates.set(F,b);let W=()=>{C&&("completed"===b.status||"error"===b.status)&&e.FlowExecutor.conversationStates.delete(F)},X={conversationId:b.conversationId||F,messages:b.messages,usage:b.usage,finalAction:d,sharedState:b};if("paused_debug"===b.status)return t.info(`Returning paused debug state for conv ${F}`),{...X,status:"paused_debug",outputText:"",pendingToolCalls:b.pendingToolCalls};if("error"===b.status||d===j.O){let a,c="Unknown error during execution",d=500;if("object"==typeof b.lastResponse&&null!==b.lastResponse)if("success"in b.lastResponse&&!1===b.lastResponse.success&&"error"in b.lastResponse&&"string"==typeof b.lastResponse.error){if(c=b.lastResponse.error,"errorDetails"in b.lastResponse&&"object"==typeof b.lastResponse.errorDetails&&null!==b.lastResponse.errorDetails){let e=b.lastResponse.errorDetails;(a={message:"string"==typeof e.message?e.message:c,type:"string"==typeof e.type?e.type:void 0,code:"string"==typeof e.code?e.code:void 0,param:"string"==typeof e.param?e.param:void 0,status:"number"==typeof e.status?e.status:void 0,stack:"string"==typeof e.stack?e.stack:void 0,name:"string"==typeof e.name?e.name:void 0}).status&&(d=a.status)}}else try{c=`Unexpected error state object: ${JSON.stringify(b.lastResponse)}`}catch{c="Unexpected error state object (unserializable)"}else"string"==typeof b.lastResponse&&(c=b.lastResponse);return a?a.message=a.message||c:a={message:c},t.error(`Returning error result for conv ${F}`,{errorMessage:c,errorDetails:a,statusCode:d}),"error"!==b.status&&(b.status="error"),W(),{...X,status:"error",outputText:"",error:{message:c,details:a,statusCode:d}}}let Y=b.messages.length>0?b.messages[b.messages.length-1]:null,Z="",$="";"object"==typeof b.lastResponse&&null!==b.lastResponse&&"_flujo_xml_tools"in b.lastResponse?($=b.lastResponse._flujo_xml_tools,Z=Y?.role==="assistant"&&"string"==typeof Y.content?Y.content:"",Z+=(Z?"\n\n":"")+$,b.lastResponse=Z):Z="string"==typeof b.lastResponse?b.lastResponse:Y?.role==="assistant"&&"string"==typeof Y.content?Y.content:d!==j.Jp||i?"Processing complete.":"";let _=$?void 0:Y?.role==="assistant"?Y.tool_calls:void 0;return t.info(`Returning success result for conv ${F}`,{action:d,status:b.status,flujo:i,requireApproval:w,flujodebug:z}),W(),{...X,status:b.status||(d===j.g4?"completed":"running"),outputText:Z,toolCalls:_,pendingToolCalls:b.pendingToolCalls}}}};
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=724,exports.ids=[724],exports.modules={49181:(a,b,c)=>{c.d(b,{A$:()=>g});let d="_-_-_",e=/^(tool|resource):(.+)$/,f=/\$\{((?:tool|resource):[^}]+|_-_-_[^}]+)\}/g;function g(a){let b,c=[];for(f.lastIndex=0;null!==(b=f.exec(a));){let a=function(a){let b=e.exec(a);if(b){let a=b[1],c=function(a){let b=a.indexOf("__");if(b<=0)return null;let c=a.slice(b+2);return c?{server:a.slice(0,b),name:c}:null}(b[2]);return c?{kind:a,server:c.server,name:c.name}:null}if(a.startsWith(d)){let b=a.split(d);if(3===b.length&&b[1]&&b[2])return{kind:"tool",server:b[1],name:b[2]}}return null}(b[1]);a&&c.push({...a,fullMatch:b[0],index:b.index})}return c}},60724:(a,b,c)=>{c.d(b,{h:()=>k});var d=c(87821),e=c(20433),f=c(61397),g=c(50846),h=c(65007);let i=(0,g.h)("backend/utils/PromptRenderer");class j{async renderPrompt(a,b,c){let d=c?.renderMode||"rendered",e=c?.includeConversationHistory||!1;i.info(`Rendering prompt for node ${b} in flow ${a}`,{renderMode:d,includeConversationHistory:e});let{prompt:f,excludeModelPrompt:g,excludeStartNodePrompt:h,excludeSystemPrompt:j}=await this.findNodePrompt(b,a),k=c?.excludeModelPrompt!==void 0?c?.excludeModelPrompt:g,l=c?.excludeStartNodePrompt!==void 0?c?.excludeStartNodePrompt:h,m=c?.excludeSystemPrompt!==void 0?c?.excludeSystemPrompt:j;i.debug("Exclusion settings",{excludeModelPrompt:k,excludeStartNodePrompt:l,excludeSystemPrompt:m,fromOptions:{excludeModelPrompt:c?.excludeModelPrompt!==void 0,excludeStartNodePrompt:c?.excludeStartNodePrompt!==void 0,excludeSystemPrompt:c?.excludeSystemPrompt!==void 0}});let n="",o=null;if(!l){let b=await this.findStartNodePrompt(a);b&&(i.debug("Adding start node prompt",{length:b.length}),n+=b+"\n\n")}if(!k){let c=await this.findModelPrompt(b,a);c.prompt&&(i.debug("Adding model prompt",{modelId:c.modelId,length:c.prompt.length}),n+=c.prompt+"\n\n"),o=c.functionCallingSchema,c.reasoningSchema&&(n+=`Please use the following pattern to mark your reasoning: ${c.reasoningSchema}
1
+ "use strict";exports.id=724,exports.ids=[724],exports.modules={60724:(a,b,c)=>{c.d(b,{h:()=>k});var d=c(87821),e=c(20433),f=c(24463),g=c(50846),h=c(65007);let i=(0,g.h)("backend/utils/PromptRenderer");class j{async renderPrompt(a,b,c){let d=c?.renderMode||"rendered",e=c?.includeConversationHistory||!1;i.info(`Rendering prompt for node ${b} in flow ${a}`,{renderMode:d,includeConversationHistory:e});let{prompt:f,excludeModelPrompt:g,excludeStartNodePrompt:h,excludeSystemPrompt:j}=await this.findNodePrompt(b,a),k=c?.excludeModelPrompt!==void 0?c?.excludeModelPrompt:g,l=c?.excludeStartNodePrompt!==void 0?c?.excludeStartNodePrompt:h,m=c?.excludeSystemPrompt!==void 0?c?.excludeSystemPrompt:j;i.debug("Exclusion settings",{excludeModelPrompt:k,excludeStartNodePrompt:l,excludeSystemPrompt:m,fromOptions:{excludeModelPrompt:c?.excludeModelPrompt!==void 0,excludeStartNodePrompt:c?.excludeStartNodePrompt!==void 0,excludeSystemPrompt:c?.excludeSystemPrompt!==void 0}});let n="",o=null;if(!l){let b=await this.findStartNodePrompt(a);b&&(i.debug("Adding start node prompt",{length:b.length}),n+=b+"\n\n")}if(!k){let c=await this.findModelPrompt(b,a);c.prompt&&(i.debug("Adding model prompt",{modelId:c.modelId,length:c.prompt.length}),n+=c.prompt+"\n\n"),o=c.functionCallingSchema,c.reasoningSchema&&(n+=`Please use the following pattern to mark your reasoning: ${c.reasoningSchema}
2
2
 
3
3
  `),o&&(n+=`Please use the following pattern to use a tool: ${o}
4
4