flujo-ai 3.22.0 → 3.24.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 (304) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +171 -168
  3. package/.next/app-path-routes-manifest.json +13 -13
  4. package/.next/build-manifest.json +7 -7
  5. package/.next/prerender-manifest.json +12 -12
  6. package/.next/react-loadable-manifest.json +6 -6
  7. package/.next/routes-manifest.json +19 -1
  8. package/.next/server/app/_not-found/page.js +1 -1
  9. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/_not-found.html +1 -1
  11. package/.next/server/app/_not-found.rsc +1 -1
  12. package/.next/server/app/api/approvals/[id]/route.js +1 -1
  13. package/.next/server/app/api/approvals/[id]/route.js.nft.json +1 -1
  14. package/.next/server/app/api/approvals/[id]/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/approvals/route.js +1 -1
  16. package/.next/server/app/api/approvals/route.js.nft.json +1 -1
  17. package/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/backup/route.js +1 -1
  19. package/.next/server/app/api/backup/route.js.nft.json +1 -1
  20. package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/browse/route.js +1 -1
  22. package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/bugs/enhance/route.js +1 -1
  24. package/.next/server/app/api/bugs/enhance/route.js.nft.json +1 -1
  25. package/.next/server/app/api/bugs/enhance/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/cwd/route.js +1 -1
  27. package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/encryption/secure/route.js +1 -1
  29. package/.next/server/app/api/encryption/secure/route.js.nft.json +1 -1
  30. package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/env/route.js +1 -1
  32. package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -1
  34. package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/flow/compile/route.js +1 -1
  36. package/.next/server/app/api/flow/compile/route.js.nft.json +1 -1
  37. package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/flow/generate/route.js +1 -1
  39. package/.next/server/app/api/flow/generate/route.js.nft.json +1 -1
  40. package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/flow/improve/route.js +1 -1
  42. package/.next/server/app/api/flow/improve/route.js.nft.json +1 -1
  43. package/.next/server/app/api/flow/improve/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/flow/prompt-renderer/route.js +1 -1
  45. package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
  46. package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/flow/quick-chat/route.js +1 -1
  48. package/.next/server/app/api/flow/quick-chat/route.js.nft.json +1 -1
  49. package/.next/server/app/api/flow/quick-chat/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/flow/repair/route.js +1 -1
  51. package/.next/server/app/api/flow/repair/route.js.nft.json +1 -1
  52. package/.next/server/app/api/flow/repair/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/flow/route.js.nft.json +1 -1
  54. package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/git/route.js +5 -5
  56. package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/init/route.js +1 -1
  58. package/.next/server/app/api/init/route.js.nft.json +1 -1
  59. package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/local-models/capability/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/local-models/pull/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/local-models/suggest/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/mcp/cancel/route.js +1 -1
  64. package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -1
  65. package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
  66. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js +1 -1
  67. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -1
  68. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js +1 -1
  70. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -1
  71. package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
  72. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js +1 -1
  73. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -1
  74. package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/mcp/servers/[name]/resources/route.js +1 -1
  76. package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -1
  77. package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/mcp/servers/[name]/route.js +1 -1
  79. package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -1
  80. package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/mcp/servers/[name]/status/route.js +1 -1
  82. package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -1
  83. package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js +1 -1
  85. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -1
  86. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/mcp/servers/[name]/tools/route.js +1 -1
  88. package/.next/server/app/api/mcp/servers/[name]/tools/route.js.nft.json +1 -1
  89. package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/mcp/servers/route.js +1 -1
  91. package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
  92. package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/mcp/test-connection/route.js +1 -1
  94. package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -1
  95. package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/mcp/test-connection/stream/route.js +1 -1
  97. package/.next/server/app/api/mcp/test-connection/stream/route.js.nft.json +1 -1
  98. package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/mcp-registry/route.js +1 -1
  100. package/.next/server/app/api/mcp-registry/route.js.nft.json +1 -1
  101. package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/model/[id]/route.js +1 -1
  104. package/.next/server/app/api/model/[id]/route.js.nft.json +1 -1
  105. package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/model/provider/route.js +1 -1
  107. package/.next/server/app/api/model/provider/route.js.nft.json +1 -1
  108. package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/model/route.js +1 -1
  110. package/.next/server/app/api/model/route.js.nft.json +1 -1
  111. package/.next/server/app/api/model/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/model/test/route.js +1 -1
  113. package/.next/server/app/api/model/test/route.js.nft.json +1 -1
  114. package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/oauth/reset/route.js +1 -1
  118. package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -1
  119. package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/planned-executions/[id]/route.js.nft.json +1 -1
  121. package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/planned-executions/[id]/run/route.js.nft.json +1 -1
  123. package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/planned-executions/[id]/runs/route.js.nft.json +1 -1
  125. package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/planned-executions/reconcile/route.js +1 -1
  128. package/.next/server/app/api/planned-executions/reconcile/route.js.nft.json +1 -1
  129. package/.next/server/app/api/planned-executions/reconcile/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/planned-executions/route.js +1 -1
  131. package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
  132. package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/restore/route.js +1 -1
  134. package/.next/server/app/api/restore/route.js.nft.json +1 -1
  135. package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/runs/active/route.js +1 -1
  137. package/.next/server/app/api/runs/active/route.js.nft.json +1 -1
  138. package/.next/server/app/api/runs/active/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/update/route.js +1 -1
  141. package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/waves/route.js +1 -1
  143. package/.next/server/app/api/waves/route.js.nft.json +1 -1
  144. package/.next/server/app/api/waves/route_client-reference-manifest.js +1 -1
  145. package/.next/server/app/api/webhooks/[id]/route.js +1 -1
  146. package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
  147. package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/chat/page.js +10 -10
  149. package/.next/server/app/chat/page.js.nft.json +1 -1
  150. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  151. package/.next/server/app/chat.html +1 -1
  152. package/.next/server/app/chat.rsc +2 -2
  153. package/.next/server/app/docs/page.js +8 -2
  154. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  155. package/.next/server/app/docs.html +1 -1
  156. package/.next/server/app/docs.rsc +2 -2
  157. package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
  158. package/.next/server/app/executions.html +1 -1
  159. package/.next/server/app/executions.rsc +2 -2
  160. package/.next/server/app/flows/page.js +3 -3
  161. package/.next/server/app/flows/page.js.nft.json +1 -1
  162. package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
  163. package/.next/server/app/flows.html +1 -1
  164. package/.next/server/app/flows.rsc +2 -2
  165. package/.next/server/app/index.html +1 -1
  166. package/.next/server/app/index.rsc +2 -2
  167. package/.next/server/app/mcp/page.js +7 -7
  168. package/.next/server/app/mcp/page.js.nft.json +1 -1
  169. package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
  170. package/.next/server/app/mcp-flows/route.js +1 -1
  171. package/.next/server/app/mcp-flows/route.js.nft.json +1 -1
  172. package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
  173. package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
  174. package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -1
  175. package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
  176. package/.next/server/app/mcp.html +1 -1
  177. package/.next/server/app/mcp.rsc +2 -2
  178. package/.next/server/app/models/page.js +1 -1
  179. package/.next/server/app/models/page.js.nft.json +1 -1
  180. package/.next/server/app/models/page_client-reference-manifest.js +1 -1
  181. package/.next/server/app/page.js +1 -1
  182. package/.next/server/app/page_client-reference-manifest.js +1 -1
  183. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  184. package/.next/server/app/settings.html +1 -1
  185. package/.next/server/app/settings.rsc +2 -2
  186. package/.next/server/app/v1/chat/completions/route.js +1 -1
  187. package/.next/server/app/v1/chat/completions/route.js.nft.json +1 -1
  188. package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
  189. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +2 -2
  190. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -1
  191. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +2 -2
  193. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -1
  194. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -1
  196. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -1
  197. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -1
  199. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -1
  200. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +2 -2
  202. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -1
  203. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +3 -3
  205. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -1
  206. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
  207. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route_client-reference-manifest.js +1 -1
  208. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
  209. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
  210. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
  211. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +2 -2
  212. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -1
  213. package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  214. package/.next/server/app/v1/chat/conversations/route.js +2 -2
  215. package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
  216. package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
  217. package/.next/server/app/v1/models/route.js +1 -1
  218. package/.next/server/app/v1/models/route.js.nft.json +1 -1
  219. package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -1
  220. package/.next/server/app/waves/page.js +1 -1
  221. package/.next/server/app/waves/page_client-reference-manifest.js +1 -1
  222. package/.next/server/app/waves.html +1 -1
  223. package/.next/server/app/waves.rsc +1 -1
  224. package/.next/server/app-paths-manifest.json +13 -13
  225. package/.next/server/chunks/1083.js +1 -1
  226. package/.next/server/chunks/1197.js +1 -1
  227. package/.next/server/chunks/1226.js +1 -1
  228. package/.next/server/chunks/1373.js +1 -1
  229. package/.next/server/chunks/2823.js +6 -0
  230. package/.next/server/chunks/2859.js +1 -1
  231. package/.next/server/chunks/289.js +1 -1
  232. package/.next/server/chunks/{1556.js → 2998.js} +1 -1
  233. package/.next/server/chunks/3291.js +1 -0
  234. package/.next/server/chunks/3774.js +1 -1
  235. package/.next/server/chunks/3823.js +7 -6
  236. package/.next/server/chunks/3984.js +4 -4
  237. package/.next/server/chunks/4239.js +1 -1
  238. package/.next/server/chunks/4545.js +17 -0
  239. package/.next/server/chunks/4561.js +7 -6
  240. package/.next/server/chunks/4637.js +8 -2
  241. package/.next/server/chunks/4671.js +1 -1
  242. package/.next/server/chunks/472.js +1 -1
  243. package/.next/server/chunks/4771.js +3 -3
  244. package/.next/server/chunks/5708.js +7 -1
  245. package/.next/server/chunks/5734.js +4 -4
  246. package/.next/server/chunks/6996.js +3 -3
  247. package/.next/server/chunks/701.js +1 -1
  248. package/.next/server/chunks/7362.js +11 -11
  249. package/.next/server/chunks/7506.js +1 -1
  250. package/.next/server/chunks/7723.js +1 -0
  251. package/.next/server/chunks/7769.js +6 -0
  252. package/.next/server/chunks/7821.js +1 -1
  253. package/.next/server/chunks/8652.js +1 -1
  254. package/.next/server/chunks/8739.js +1 -1
  255. package/.next/server/chunks/9509.js +2 -2
  256. package/.next/server/edge-instrumentation.js +2 -0
  257. package/.next/server/edge-instrumentation.js.map +1 -0
  258. package/.next/server/edge-runtime-webpack.js +2 -0
  259. package/.next/server/edge-runtime-webpack.js.map +1 -0
  260. package/.next/server/instrumentation.js.nft.json +1 -1
  261. package/.next/server/middleware-build-manifest.js +1 -1
  262. package/.next/server/middleware-manifest.json +33 -2
  263. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  264. package/.next/server/pages/404.html +1 -1
  265. package/.next/server/pages/500.html +1 -1
  266. package/.next/server/server-reference-manifest.js +1 -1
  267. package/.next/server/server-reference-manifest.json +1 -1
  268. package/.next/server/src/middleware.js +14 -0
  269. package/.next/server/src/middleware.js.map +1 -0
  270. package/.next/static/chunks/3454-a8db9caba457e5fa.js +1 -0
  271. package/.next/static/chunks/3730-149f2f058529f75f.js +1 -0
  272. package/.next/static/chunks/4749-f8796d16ff604d54.js +1 -0
  273. package/.next/static/chunks/6016.8201fa15ab6aa90e.js +1 -0
  274. package/.next/static/chunks/{6730-c330b55cd0fe4f47.js → 6257-ee5d8d88050d7705.js} +1 -1
  275. package/.next/static/chunks/{7583.7cb88044a5212b29.js → 7583.7af90b94e3c263f2.js} +1 -1
  276. package/.next/static/chunks/812-624e93f4c0f671c7.js +1 -0
  277. package/.next/static/chunks/{9181-8d8ecd3f641b7209.js → 8611-f6d51119761d52ff.js} +3 -3
  278. package/.next/static/chunks/{9164-3d34bf7eab100ac7.js → 9164-d9f1abba780231e0.js} +1 -1
  279. package/.next/static/chunks/app/chat/page-6a5b5f9ea2542fb3.js +1 -0
  280. package/.next/static/chunks/app/docs/page-935b0386917b91bb.js +1 -0
  281. package/.next/static/chunks/app/executions/page-d72027b0179e8fa2.js +1 -0
  282. package/.next/static/chunks/app/flows/page-fbce5abe34500f28.js +1 -0
  283. package/.next/static/chunks/app/mcp/{page-770a870b3d40766b.js → page-8666173926cabf31.js} +1 -1
  284. package/.next/static/chunks/app/models/{page-5a13ea6ff5ac1b9c.js → page-18dbd8e01cf87e98.js} +1 -1
  285. package/.next/static/chunks/{main-be8e823624954fab.js → main-9bda5041078d2b6a.js} +1 -1
  286. package/.next/static/chunks/{webpack-dded92b3d7b33173.js → webpack-f4a471ab560eb19e.js} +1 -1
  287. package/.next/trace +8 -9
  288. package/README.md +1 -1
  289. package/next.config.mjs +139 -119
  290. package/package.json +1 -1
  291. package/.next/server/chunks/264.js +0 -17
  292. package/.next/server/chunks/7214.js +0 -6
  293. package/.next/server/chunks/7463.js +0 -6
  294. package/.next/server/chunks/8357.js +0 -1
  295. package/.next/static/chunks/5545-2ab6e5d749e103cd.js +0 -1
  296. package/.next/static/chunks/6016.a157e5bde2faa652.js +0 -1
  297. package/.next/static/chunks/6920-a83ad5c0d5a54cf3.js +0 -1
  298. package/.next/static/chunks/812-181496bc32cd0cd3.js +0 -1
  299. package/.next/static/chunks/app/chat/page-3a3efba25b59a747.js +0 -1
  300. package/.next/static/chunks/app/docs/page-84a92c3d5d8d5e13.js +0 -1
  301. package/.next/static/chunks/app/executions/page-445afbf37819e3ce.js +0 -1
  302. package/.next/static/chunks/app/flows/page-74ebca19957cc6db.js +0 -1
  303. /package/.next/static/{MMmWHUQ3UAJBdRB7G1zGj → eUM7C1boixGI469h5wtIk}/_buildManifest.js +0 -0
  304. /package/.next/static/{MMmWHUQ3UAJBdRB7G1zGj → eUM7C1boixGI469h5wtIk}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8329],{32098:()=>{},43856:(e,t,l)=>{"use strict";l.r(t),l.d(t,{default:()=>ea});var r=l(95155),n=l(12115),a=l(20063),o=l(2300),s=l(94049),i=l(9562),d=l(56422),c=l(91871),u=l(22003),p=l(86946),m=l(51611),x=l(74879),h=l(33567),f=l(4474),v=l(33077),b=l(25635),g=l(41983),y=l(36314),j=l(86973),A=l(49501),w=l(17681),k=l(21067),C=l(64419),S=l(28466),N=l(45587),T=l(81952),U=l(94885),M=l(15686),I=l(91665),P=l(61267),K=l(22573),L=l(38459),W=l(97104),z=l(48072),B=l(87021);let D=(0,B.h)("frontend/components/models/list/ModelList"),O=e=>{let{models:t,isLoading:l,onAdd:a,onUpdate:i,onDelete:d,folders:c=[],onSetFolder:u}=e,p=(0,h.A)(),[m,x]=(0,W.Xk)("flujo-ui:models:sort","name-asc"),[B,O]=(0,W.Xk)("flujo-ui:models:group","none"),[F,E]=(0,n.useState)(null),[_,R]=(0,n.useState)(null),[X,q]=(0,W.Xk)("flujo-ui:models:collapsed",[]),$=(0,n.useMemo)(()=>new Set(X),[X]),G=e=>{x(e),E(null)},Z=e=>{O(e),R(null)},H=async e=>{let t=await i(e);t.success||D.error("Failed to update model in ModelList",t.error)},J=(0,n.useMemo)(()=>(0,z.h5)(t,m),[t,m]),V=(0,n.useMemo)(()=>"folder"===B?(0,L.Je)(J,e=>e.folder):"sort"===B?(0,L.Az)(J,e=>(0,z.eZ)(e,m)):[],[B,J,m]);if(l)return(0,r.jsx)(s.default,{display:"flex",justifyContent:"center",py:4,children:(0,r.jsx)(f.default,{})});let Y=e=>(0,r.jsx)(v.Ay,{container:!0,spacing:2,children:e.map(e=>(0,r.jsx)(v.Ay,{item:!0,xs:12,sm:6,md:4,children:(0,r.jsx)(P.A,{model:e,onEdit:()=>H(e),onDelete:()=>d(e.id),folder:e.folder,folders:c,onSetFolder:u?t=>u(e.id,t):void 0})},e.id))});return(0,r.jsxs)(s.default,{children:[(0,r.jsx)(o.A,{elevation:1,sx:{mb:2,p:1},children:(0,r.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:1},children:[(0,r.jsxs)(b.default,{variant:"body2",color:"textSecondary",children:[t.length," model",1===t.length?"":"s",(0,r.jsx)(s.default,{component:"span",sx:{mx:1,opacity:.5},children:"\xb7"}),"Sorted by: ",z.fC[m]]}),(0,r.jsxs)(s.default,{sx:{display:"flex",gap:1,alignItems:"center"},children:[(0,r.jsx)(g.A,{size:"small",onClick:e=>R(e.currentTarget),color:"none"!==B?"primary":"default",sx:{border:"1px solid ".concat(p.palette.divider),backgroundColor:p.palette.background.default},title:"Group cards",children:(0,r.jsx)(U.A,{fontSize:"small"})}),(0,r.jsx)(g.A,{size:"small",onClick:e=>E(e.currentTarget),sx:{border:"1px solid ".concat(p.palette.divider),backgroundColor:p.palette.background.default},title:"Sort models",children:(0,r.jsx)(C.A,{fontSize:"small"})})]})]})}),t&&0!==t.length?"none"===B?Y(J):V.map(e=>(0,r.jsx)(K.A,{label:e.label,count:e.items.length,expanded:!$.has(e.key),onToggle:()=>(e=>{q(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])})(e.key),showFolderIcon:"folder"===B,children:Y(e.items)},e.key)):(0,r.jsx)(s.default,{textAlign:"center",py:4,children:"No models found"}),(0,r.jsxs)(y.A,{anchorEl:_,open:!!_,onClose:()=>R(null),anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:[(0,r.jsxs)(j.A,{selected:"none"===B,onClick:()=>Z("none"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(M.A,{fontSize:"small"})}),(0,r.jsx)(w.A,{primary:"No grouping"})]}),(0,r.jsxs)(j.A,{selected:"folder"===B,onClick:()=>Z("folder"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(I.A,{fontSize:"small"})}),(0,r.jsx)(w.A,{primary:"By folder"})]}),(0,r.jsxs)(j.A,{selected:"sort"===B,onClick:()=>Z("sort"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(U.A,{fontSize:"small"})}),(0,r.jsx)(w.A,{primary:"By sort setting"})]})]}),(0,r.jsxs)(y.A,{anchorEl:F,open:!!F,onClose:()=>E(null),anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:[(0,r.jsxs)(j.A,{selected:"name-asc"===m,onClick:()=>G("name-asc"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(S.A,{fontSize:"small"})}),(0,r.jsx)(w.A,{primary:"Name (A-Z)"})]}),(0,r.jsxs)(j.A,{selected:"name-desc"===m,onClick:()=>G("name-desc"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(S.A,{fontSize:"small",sx:{transform:"scaleX(-1)"}})}),(0,r.jsx)(w.A,{primary:"Name (Z-A)"})]}),(0,r.jsx)(k.A,{}),(0,r.jsxs)(j.A,{selected:"provider"===m,onClick:()=>G("provider"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(N.A,{fontSize:"small"})}),(0,r.jsx)(w.A,{primary:"Provider"})]}),(0,r.jsx)(k.A,{}),(0,r.jsxs)(j.A,{selected:"context-desc"===m,onClick:()=>G("context-desc"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(T.A,{fontSize:"small"})}),(0,r.jsx)(w.A,{primary:"Context (largest)"})]}),(0,r.jsxs)(j.A,{selected:"context-asc"===m,onClick:()=>G("context-asc"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(T.A,{fontSize:"small",sx:{transform:"scaleY(-1)"}})}),(0,r.jsx)(w.A,{primary:"Context (smallest)"})]})]})]})};var F=l(2778),E=l(52363),_=l(65036),R=l(52641),X=l(51221),q=l(55606),$=l(63109),G=l(75912),Z=l(12857),H=l(48363),J=l(9164),V=l(95480),Y=l(88107),Q=l(52397),ee=l(43076);let et=(0,B.h)("frontend/components/models/modal"),el=e=>{var t,l,o;let{open:d,model:p,onSave:m,onClose:x}=e,h=(0,a.useRouter)(),{globalEnvVars:y}=(0,J.useStorage)(),[A,w]=(0,n.useState)({}),[k,C]=(0,n.useState)({}),[S,N]=(0,n.useState)(null),[T,U]=(0,n.useState)(!1),[M,I]=(0,n.useState)(null),[P,K]=(0,n.useState)(!1),[L,W]=(0,n.useState)([]),[z,B]=(0,n.useState)(!1),D=(0,n.useRef)(null),O=(0,n.useRef)(null);(0,n.useEffect)(()=>{d&&W([])},[d]),(0,n.useEffect)(()=>{A.baseUrl&&(et.debug("Base URL or API Key changed",{baseUrl:A.baseUrl}),W([]))},[A.baseUrl,A.ApiKey]),(0,n.useEffect)(()=>(O.current&&clearTimeout(O.current),A.baseUrl&&(O.current=setTimeout(()=>{et.debug("Debounced fetchModels triggered",{name:A.name,baseUrl:A.baseUrl,searchTerm:A.name?'"'.concat(A.name,'"'):"none"}),el(A.baseUrl,A.name)},100)),()=>{O.current&&clearTimeout(O.current)}),[A.name,A.baseUrl]),(0,n.useEffect)(()=>()=>{O.current&&clearTimeout(O.current)},[]);let el=async(e,t)=>{et.debug("fetchModels called",{baseUrl:e,searchTerm:t?'"'.concat(t,'"'):"none",apiKey:A.ApiKey?"present":"not present",isApiKeyBound:T}),B(!0),C({});try{let l=T&&M?"${global:".concat(M,"}"):A.ApiKey&&A.ApiKey!==Q.RJ?A.ApiKey:void 0,r=await ee.N.fetchProviderModels(e,p.id,t,l);et.debug("Models fetched successfully",{count:null==r?void 0:r.length,searchTerm:t?'"'.concat(t,'"'):"none"}),Array.isArray(r)?(W(r),et.info("Models set in state",{count:r.length,searchTerm:t?'"'.concat(t,'"'):"none"})):(et.warn("Unexpected API response format",{models:r}),W([]))}catch(l){et.warn("Error fetching models",{baseUrl:e,searchTerm:t,error:l}),W([])}finally{B(!1)}};(0,n.useEffect)(()=>{if(d){w({...p,displayName:p.displayName||p.name});let e=(p.ApiKey||"").match(/\$\{global:([^}]+)\}/);e?(U(!0),I(e[1])):(U(!1),I(null),w(e=>({...e,ApiKey:p.name?Q.RJ:""})))}else w({name:"",displayName:"",description:"",ApiKey:"",baseUrl:"https://api.openai.com/v1",provider:"openai",adapter:"openai",promptTemplate:"",temperature:"0.0"}),U(!1),I(null);C({}),N(null)},[d,p]);let er=(0,Y.T_)(A.provider,A.adapter),en=(e,t)=>{w(l=>({...l,[e]:t})),C(t=>({...t,[e]:""}))},ea=async e=>{var t,l,r;e.preventDefault();let n={};if((null==(t=A.name)?void 0:t.trim())||(n.name="Name is required"),(null==(l=A.displayName)?void 0:l.trim())||(n.displayName="Display Name is required"),T||(null==(r=A.ApiKey)?void 0:r.trim())||(n.ApiKey="API key is required"),Object.keys(n).length>0)return void C(n);try{let e=await m({id:p.id,name:A.name,displayName:A.displayName,description:A.description,ApiKey:A.ApiKey,baseUrl:A.baseUrl,provider:A.provider,adapter:A.adapter||"openai",promptTemplate:A.promptTemplate,temperature:A.temperature,contextWindow:A.contextWindow,maxTurns:A.maxTurns});e.success?h.refresh():C({submit:e.error||"Failed to save model"})}catch(e){et.error("Failed to save model",{error:e}),C({submit:(null==e?void 0:e.message)||"Failed to save model"})}};return(0,r.jsx)(F.A,{open:d,onClose:x,maxWidth:"xl",fullWidth:!0,PaperProps:{sx:{width:"95vw",height:"90vh",maxWidth:"95vw",maxHeight:"90vh"}},children:(0,r.jsxs)("form",{onSubmit:ea,children:[(0,r.jsx)(E.A,{children:p?"Edit Model":"Add Model"}),(0,r.jsxs)(_.A,{sx:{display:"flex",flexDirection:"column",height:"calc(90vh - 130px)"},children:[k.submit&&(0,r.jsx)(u.A,{severity:"error",sx:{mb:2},children:k.submit}),S&&(0,r.jsx)(u.A,{severity:"info",sx:{mb:2},children:S}),(0,r.jsxs)(v.Ay,{container:!0,spacing:2,sx:{flexGrow:1},children:[(0,r.jsx)(v.Ay,{item:!0,xs:6,sx:{height:"100%"},children:(0,r.jsxs)(s.default,{sx:{display:"flex",flexDirection:"column",height:"100%",pr:2},children:[(0,r.jsx)(b.default,{variant:"h6",gutterBottom:!0,children:"Model Configuration"}),(0,r.jsx)(i.A,{autoFocus:!0,margin:"dense",label:"Display Name",fullWidth:!0,required:!0,value:A.displayName||"",onChange:e=>en("displayName",e.target.value),error:!!k.displayName,helperText:k.displayName||"The name shown in the UI"}),(0,r.jsxs)(R.A,{fullWidth:!0,margin:"dense",children:[(0,r.jsx)(X.A,{id:"provider-profile-label",children:"Provider"}),(0,r.jsx)(q.A,{labelId:"provider-profile-label",label:"Provider",value:er.id,onChange:e=>(e=>{let t=Y.xx.find(t=>t.id===e);t&&(w(e=>({...e,provider:t.provider,adapter:t.adapter,baseUrl:t.baseUrl})),C(e=>({...e,baseUrl:""})))})(e.target.value),children:Y.xx.map(e=>(0,r.jsx)(j.A,{value:e.id,children:e.label},e.id))})]}),(0,r.jsxs)(b.default,{variant:"caption",color:"text.secondary",sx:{mt:.5,mb:1,display:"block"},children:["Uses the ",(0,r.jsx)("strong",{children:er.sdkLabel}),"claude-cli"===er.adapter?". Paste an OAuth token from `claude setup-token` into the API Key field.":""]}),er.showBaseUrl&&(0,r.jsx)(i.A,{margin:"dense",label:"Base URL",fullWidth:!0,value:A.baseUrl||"",onChange:e=>en("baseUrl",e.target.value),helperText:"Endpoint for the OpenAI-compatible API."}),(0,r.jsx)(s.default,{sx:{position:"relative",mt:1,mb:1},children:(0,r.jsx)(i.A,{margin:"dense",label:"API Key",fullWidth:!0,required:!T,type:T?"text":"password",value:A.ApiKey||"",onChange:e=>en("ApiKey",e.target.value),error:!!k.ApiKey,helperText:k.ApiKey||"API key is required for this provider",InputProps:{readOnly:T,endAdornment:(0,r.jsx)(s.default,{sx:{display:"flex",alignItems:"center"},children:T?(0,r.jsx)(g.A,{onClick:()=>{U(!1),I(null),w(e=>({...e,ApiKey:""}))},size:"small",title:"Unbind from global variable",children:(0,r.jsx)(Z.A,{})}):(0,r.jsx)(g.A,{onClick:()=>{K(!0)},size:"small",title:"Bind to global variable",children:(0,r.jsx)(H.A,{})})})}})}),(0,r.jsx)($.A,{freeSolo:!0,loading:z,options:er.showBaseUrl?L.map(e=>e.id):null!=(t=er.defaultModels)?t:[],value:A.name||"",onChange:(e,t)=>{en("name",t||"")},onInputChange:(e,t)=>{en("name",t)},filterOptions:(e,t)=>{let l=t.inputValue.toLowerCase();return l?e.filter(e=>{let t=e.toLowerCase();if(t.includes(l))return!0;let r=0,n=0;for(;r<t.length&&n<l.length;)t[r]===l[n]&&n++,r++;return n===l.length}):e},ListboxProps:{style:{maxHeight:"300px",overflow:"auto"}},renderInput:e=>(0,r.jsx)(i.A,{...e,margin:"dense",label:"Technical Name",required:!0,error:!!k.name,helperText:k.name||"Used for API calls to the LLM. Type to search available models.",InputProps:{...e.InputProps,endAdornment:(0,r.jsxs)(r.Fragment,{children:[z?(0,r.jsx)(f.default,{color:"inherit",size:20}):null,e.InputProps.endAdornment]})}}),renderOption:(e,t)=>{let l=L.find(e=>e.id===t),{key:n,...a}=e;return(0,r.jsx)("li",{...a,style:{borderBottom:"1px solid rgba(0,0,0,0.1)",padding:"8px 16px"},children:(0,r.jsxs)(s.default,{children:[(0,r.jsx)(b.default,{variant:"body1",fontWeight:"bold",children:t}),(null==l?void 0:l.description)&&(0,r.jsx)(b.default,{variant:"body2",color:"text.secondary",sx:{fontSize:"0.75rem"},children:l.description})]})},n)},noOptionsText:"No matching models found",loadingText:"Loading models..."}),(0,r.jsx)(i.A,{margin:"dense",label:"Description",fullWidth:!0,multiline:!0,rows:3,value:A.description||"",onChange:e=>en("description",e.target.value)}),(0,r.jsx)(i.A,{margin:"dense",label:"Context Window (tokens)",fullWidth:!0,type:"number",value:null!=(l=A.contextWindow)?l:"",onChange:e=>{let t=e.target.value,l=""===t?void 0:Number(t);w(e=>({...e,contextWindow:void 0!==l&&Number.isFinite(l)&&l>0?Math.floor(l):void 0}))},helperText:"Optional. Enables the context-usage meter in chat (e.g. 200000 for Claude, 128000 for GPT-4o)."}),(0,r.jsx)(i.A,{margin:"dense",label:"Max Turns",fullWidth:!0,type:"number",value:null!=(o=A.maxTurns)?o:"",onChange:e=>{let t=e.target.value,l=""===t?void 0:Number(t);w(e=>({...e,maxTurns:void 0!==l&&Number.isFinite(l)&&l>0?Math.floor(l):void 0}))},inputProps:{min:1},helperText:"Max agentic turns before a run stops (default 50). Process nodes can override this per-node."})]})}),(0,r.jsx)(v.Ay,{item:!0,xs:6,sx:{height:"100%"},children:(0,r.jsxs)(s.default,{sx:{display:"flex",flexDirection:"column",height:"100%",pl:2},children:[(0,r.jsx)(b.default,{variant:"h6",gutterBottom:!0,children:"Prompt Template"}),(0,r.jsx)(s.default,{sx:{flexGrow:1,display:"flex",flexDirection:"column",height:"calc(100% - 32px)"},children:(0,r.jsx)(V.A,{ref:D,value:A.promptTemplate||"",onChange:e=>en("promptTemplate",e),label:"",height:"100%"})})]})})]}),P&&(0,r.jsxs)(s.default,{sx:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",width:400,bgcolor:"background.paper",boxShadow:24,p:4,borderRadius:1,zIndex:9999},children:[(0,r.jsx)(b.default,{variant:"h6",component:"h2",sx:{mb:2},children:"Bind to Global Variable"}),0===Object.keys(y).length?(0,r.jsx)(b.default,{sx:{mb:2},children:"No global variables available. Add some in Settings first."}):(0,r.jsx)(s.default,{sx:{maxHeight:300,overflow:"auto",mb:2},children:Object.entries(y).map(e=>{let[t,l]=e;return(0,r.jsx)(c.A,{onClick:()=>(e=>{U(!0),I(e),w(t=>({...t,ApiKey:"${global:".concat(e,"}")})),K(!1)})(t),fullWidth:!0,sx:{justifyContent:"flex-start",textAlign:"left",mb:1,p:1,"&:hover":{bgcolor:"action.hover"}},children:(0,r.jsxs)(s.default,{sx:{display:"flex",justifyContent:"space-between",width:"100%"},children:[(0,r.jsx)(b.default,{children:t}),(0,r.jsx)(b.default,{variant:"body2",color:"text.secondary",children:t.toLowerCase().includes("key")||t.toLowerCase().includes("secret")||t.toLowerCase().includes("token")||t.toLowerCase().includes("password")?"********":"object"==typeof l&&null!==l&&"value"in l?l.value:l})]})},t)})}),(0,r.jsx)(s.default,{sx:{display:"flex",justifyContent:"flex-end"},children:(0,r.jsx)(c.A,{onClick:()=>K(!1),children:"Cancel"})})]})]}),(0,r.jsxs)(G.A,{children:[(0,r.jsx)(c.A,{onClick:x,children:"Cancel"}),(0,r.jsx)(c.A,{type:"submit",variant:"contained",color:"primary",children:"Save"})]})]})})};var er=l(94929);let en=(0,B.h)("app/models/ModelClient");function ea(e){var t;let{initialModels:l}=e,h=(0,a.useRouter)(),f=(0,a.useSearchParams)(),[v,b]=(0,n.useState)(l),[g,y]=(0,n.useState)(""),[j,A]=(0,n.useState)(null),[w,k]=(0,n.useState)(!1),[C,S]=(0,n.useState)(!1),[N,T]=(0,n.useState)(null),U="1"===f.get("add");if((0,n.useEffect)(()=>{U?T(e=>null!=e?e:{id:(0,x.A)(),name:"",displayName:"",description:"",ApiKey:"",baseUrl:"",provider:"openai",promptTemplate:"",temperature:"0.0"}):T(null)},[U]),(0,n.useEffect)(()=>{try{let e=(0,ee.X)();e&&"function"==typeof e.loadModels&&(S(!0),en.debug("Model service is ready"))}catch(t){en.warn("Model service not ready, retrying...",t);let e=setTimeout(()=>{try{let e=(0,ee.X)();e&&"function"==typeof e.loadModels&&(S(!0),en.debug("Model service is now ready"))}catch(e){en.warn("Model service still not ready",e)}},100);return()=>clearTimeout(e)}},[]),!C)return en.debug("Waiting for model service to be ready..."),(0,r.jsx)(er.default,{});let M=f.get("edit"),I=U?N:M&&null!=(t=v.find(e=>e.id===M))?t:null,P=U?!!N:!!M,K=async e=>{en.info("Saving model",{modelId:e.id,modelName:e.name,mode:U?"add":"update"}),k(!0);try{let t=(0,ee.X)(),l=U?await t.addModel(e):await t.updateModel(e);if(!l.success)return A(l.error||"Failed to save model."),{success:!1,error:l.error};{let e=await t.loadModels();return b(e),T(null),h.push("/models"),{success:!0,model:l.model}}}catch(e){return en.error("Failed to save model",e),A((null==e?void 0:e.message)||"Failed to save model. Please try again."),{success:!1,error:(null==e?void 0:e.message)||"Failed to save model"}}finally{k(!1)}},W=async e=>(en.info("Editing model",{modelId:e.id,modelName:e.name}),h.push("/models?edit=".concat(e.id)),{success:!0}),z=async()=>{en.info("Opening add-model modal"),h.push("/models?add=1")},B=async e=>{en.info("Deleting model",{modelId:e}),k(!0);try{let t=(0,ee.X)();await t.deleteModel(e);let l=await t.loadModels();b(l)}catch(e){en.error("Failed to delete model",e),A("Failed to delete model. Please try again.")}finally{k(!1)}},D=async(e,t)=>{en.info("Setting model folder",{modelId:e,folder:t}),k(!0);try{let l=(0,ee.X)(),r=await l.getModel(e);if(!r)return void A("Model not found.");let n=await l.updateModel({...r,folder:t});if(!n.success)return void A(n.error||"Failed to move model to folder.");let a=await l.loadModels();b(a)}catch(e){en.error("Failed to set model folder",e),A((null==e?void 0:e.message)||"Failed to move model to folder. Please try again.")}finally{k(!1)}},F=async()=>{T(null),h.push("/models")},E=g.trim()?v.filter(e=>{let t=g.toLowerCase();return(e.displayName||"").toLowerCase().includes(t)||(e.name||"").toLowerCase().includes(t)}):v;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(o.A,{elevation:1,sx:{mb:2,p:1},children:(0,r.jsxs)(s.default,{sx:{display:"flex",flexDirection:{xs:"column",sm:"row"},gap:1,alignItems:{xs:"stretch",sm:"center"},justifyContent:"space-between"},children:[(0,r.jsx)(i.A,{placeholder:"Search models...",variant:"outlined",size:"small",value:g,onChange:e=>y(e.target.value),InputProps:{startAdornment:(0,r.jsx)(d.A,{position:"start",children:(0,r.jsx)(m.A,{fontSize:"small"})})},sx:{maxWidth:{sm:300},width:"100%"}}),(0,r.jsx)(c.A,{variant:"contained",color:"primary",startIcon:(0,r.jsx)(p.A,{}),onClick:z,"data-tour":"add-model",children:"Add Model"})]})}),j&&(0,r.jsx)(s.default,{sx:{mb:2},children:(0,r.jsx)(u.A,{severity:"error",onClose:()=>A(null),children:j})}),(0,r.jsx)(O,{models:E,isLoading:w,onAdd:z,onUpdate:W,onDelete:B,folders:(0,L.yF)(v,e=>e.folder),onSetFolder:D}),P&&I?(0,r.jsx)(el,{open:P,model:I,onSave:K,onClose:F}):null]})}},48072:(e,t,l)=>{"use strict";l.d(t,{Lg:()=>o,eZ:()=>i,fC:()=>a,h5:()=>d});var r=l(88107),n=l(38459);let a={"name-asc":"Name (A-Z)","name-desc":"Name (Z-A)",provider:"Provider","context-desc":"Context (largest)","context-asc":"Context (smallest)"},o=e=>e.displayName||e.name||"",s=e=>(0,r.T_)(e.provider,e.adapter).label;function i(e,t){switch(t){case"provider":{let t=s(e);return{key:"provider:".concat(t),label:t}}case"context-asc":case"context-desc":var l;return"number"!=typeof(l=e.contextWindow)||Number.isNaN(l)?{key:"ctx:unknown",label:"Unknown context"}:l<=8e3?{key:"ctx:<=8k",label:"≤ 8K tokens"}:l<=32e3?{key:"ctx:8k-32k",label:"8K–32K tokens"}:l<=128e3?{key:"ctx:32k-128k",label:"32K–128K tokens"}:l<=1e6?{key:"ctx:128k-1m",label:"128K–1M tokens"}:{key:"ctx:>1m",label:"> 1M tokens"};default:return(0,n.po)(o(e))}}function d(e,t){return[...e].sort((e,l)=>{switch(t){case"name-asc":return o(e).localeCompare(o(l));case"name-desc":return o(l).localeCompare(o(e));case"provider":return s(e).localeCompare(s(l))||o(e).localeCompare(o(l));case"context-desc":case"context-asc":{let r="number"!=typeof e.contextWindow||Number.isNaN(e.contextWindow)?void 0:e.contextWindow,n="number"!=typeof l.contextWindow||Number.isNaN(l.contextWindow)?void 0:l.contextWindow;if(void 0===r&&void 0===n)return o(e).localeCompare(o(l));if(void 0===r)return 1;if(void 0===n)return -1;let a="context-desc"===t?n-r:r-n;return 0!==a?a:o(e).localeCompare(o(l))}default:return 0}})}},52397:(e,t,l)=>{"use strict";l.d(t,{RJ:()=>n,gF:()=>r});let r="masked:********",n="********"},61033:(e,t,l)=>{"use strict";l.d(t,{A$:()=>c,X8:()=>s,YP:()=>u,js:()=>d});let r="_-_-_",n=/^(tool|resource):(.+)$/,a=/\$\{((?:tool|resource):[^}]+|_-_-_[^}]+)\}/g;function o(e,t){return"".concat(e,"__").concat(t)}function s(e,t,l){return"${".concat(e,":").concat(o(t,l),"}")}function i(e){let t=n.exec(e);if(t){let e=t[1],l=function(e){let t=e.indexOf("__");if(t<=0)return null;let l=e.slice(t+2);return l?{server:e.slice(0,t),name:l}:null}(t[2]);return l?{kind:e,server:l.server,name:l.name}:null}if(e.startsWith(r)){let t=e.split(r);if(3===t.length&&t[1]&&t[2])return{kind:"tool",server:t[1],name:t[2]}}return null}function d(e){return e.startsWith("${")&&e.endsWith("}")?i(e.slice(2,-1)):null}function c(e){let t,l=[];for(a.lastIndex=0;null!==(t=a.exec(e));){let e=i(t[1]);e&&l.push({...e,fullMatch:t[0],index:t.index})}return l}function u(e){return"tool"===e.kind&&"handoff"===e.server?"handoff:".concat(e.name):"".concat(e.kind,":").concat(o(e.server,e.name))}},61267:(e,t,l)=>{"use strict";l.d(t,{A:()=>z});var r=l(95155),n=l(12115),a=l(84578),o=l(25635),s=l(94049),i=l(78470),d=l(28548),c=l(29767),u=l(53062),p=l(1702),m=l(41983),x=l(14915),h=l(4484),f=l(89623),v=l(11665),b=l(91665),g=l(88107),y=l(43076),j=l(87021),A=l(2778),w=l(52363),k=l(65036),C=l(4474),S=l(22003),N=l(21067),T=l(75912),U=l(91871),M=l(36741),I=l(48563);let P=e=>{var t,l,n,a,i,c,u,p,m;let{title:x,attempt:h}=e;return(0,r.jsxs)(s.default,{sx:{mb:2},children:[(0,r.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:1,mb:.5},children:[h.ok?(0,r.jsx)(M.A,{color:"success",fontSize:"small"}):(0,r.jsx)(I.A,{color:"error",fontSize:"small"}),(0,r.jsx)(o.default,{variant:"subtitle2",children:x}),"number"==typeof h.status&&(0,r.jsx)(d.A,{size:"small",label:"HTTP ".concat(h.status)}),(0,r.jsx)(d.A,{size:"small",variant:"outlined",label:"".concat(h.durationMs," ms")})]}),h.ok?(0,r.jsxs)(o.default,{variant:"body2",color:"text.secondary",sx:{pl:3},children:["Response: ",h.content?'"'.concat(h.content,'"'):"(empty)"]}):(0,r.jsxs)(s.default,{sx:{pl:3},children:[(0,r.jsx)(o.default,{variant:"body2",color:"error.main",children:null==(t=h.error)?void 0:t.message}),((null==(l=h.error)?void 0:l.code)||(null==(n=h.error)?void 0:n.type))&&(0,r.jsxs)(o.default,{variant:"caption",color:"text.secondary",display:"block",children:[(null==(a=h.error)?void 0:a.type)?"type: ".concat(h.error.type):"",(null==(i=h.error)?void 0:i.type)&&(null==(c=h.error)?void 0:c.code)?" \xb7 ":"",(null==(u=h.error)?void 0:u.code)?"code: ".concat(h.error.code):""]}),(null==(p=h.error)?void 0:p.retryAfter)&&(0,r.jsxs)(o.default,{variant:"caption",color:"text.secondary",display:"block",children:["retry-after: ",h.error.retryAfter,"s"]}),(null==(m=h.error)?void 0:m.body)!==void 0&&(0,r.jsx)(s.default,{component:"pre",sx:{mt:.5,p:1,bgcolor:"action.hover",borderRadius:1,fontSize:"0.7rem",overflowX:"auto",maxHeight:160},children:JSON.stringify(h.error.body,null,2)})]})]})},K=e=>{let{open:t,modelLabel:l,loading:n,result:a,error:i,onClose:d,onRetry:c}=e;return(0,r.jsxs)(A.A,{open:t,onClose:d,maxWidth:"sm",fullWidth:!0,children:[(0,r.jsxs)(w.A,{children:["Test model: ",l]}),(0,r.jsx)(k.A,{dividers:!0,children:n?(0,r.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:2,py:3},children:[(0,r.jsx)(C.default,{size:24}),(0,r.jsx)(o.default,{variant:"body2",children:"Sending a direct test request (SDK + axios)…"})]}):i?(0,r.jsx)(S.A,{severity:"error",children:i}):a?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(S.A,{severity:a.ok?"success":"warning",sx:{mb:2},children:a.diagnosis}),(0,r.jsxs)(o.default,{variant:"caption",color:"text.secondary",display:"block",sx:{mb:2},children:["model: ",a.model,a.baseUrl?" \xb7 ".concat(a.baseUrl):"",a.provider?" \xb7 ".concat(a.provider):""]}),(0,r.jsx)(N.A,{sx:{mb:2}}),(0,r.jsx)(P,{title:"OpenAI SDK (used by flows)",attempt:a.sdk}),(0,r.jsx)(P,{title:"axios (independent cross-check)",attempt:a.axios})]}):null}),(0,r.jsxs)(T.A,{children:[(0,r.jsx)(U.A,{onClick:c,disabled:n,children:"Run again"}),(0,r.jsx)(U.A,{onClick:d,variant:"contained",children:"Close"})]})]})};var L=l(81956);let W=(0,j.h)("frontend/components/models/list/ModelCard"),z=e=>{let{model:t,onEdit:l,onDelete:j,folder:A,folders:w=[],onSetFolder:k,selectable:C=!1,selected:S=!1,onSelect:N}=e,[T,U]=(0,n.useState)(!1),[M,I]=(0,n.useState)(!1),[P,z]=(0,n.useState)(null),[B,D]=(0,n.useState)(null),[O,F]=(0,n.useState)(null),E=async()=>{I(!0),D(null),z(null);try{let e=await (0,y.X)().testModel({modelId:t.id});z(e)}catch(e){W.error("Model test failed",{modelId:t.id,error:e}),D(e instanceof Error?e.message:"Failed to run test")}finally{I(!1)}},_=(0,r.jsx)(r.Fragment,{children:(0,r.jsxs)(a.A,{sx:{flexGrow:1},children:[(0,r.jsx)(o.default,{variant:"h6",gutterBottom:!0,children:t.displayName||t.name}),(0,r.jsx)(o.default,{variant:"body2",color:"text.secondary",sx:{mb:2},style:{display:"-webkit-box",WebkitLineClamp:3,WebkitBoxOrient:"vertical",overflow:"hidden",textOverflow:"ellipsis"},children:t.description}),(0,r.jsxs)(s.default,{sx:{mb:1},children:[(0,r.jsxs)(o.default,{variant:"body2",color:"text.secondary",children:["Provider: ",(0,g.T_)(t.provider,t.adapter).label]}),t.displayName&&(0,r.jsxs)(o.default,{variant:"body2",color:"text.secondary",noWrap:!0,children:["Model: ",t.name]}),"number"==typeof t.contextWindow&&(0,r.jsxs)(o.default,{variant:"body2",color:"text.secondary",children:["Context: ",t.contextWindow.toLocaleString()," tokens"]})]}),t.baseUrl&&(0,r.jsx)(i.A,{title:t.baseUrl,arrow:!0,placement:"top",children:(0,r.jsxs)(o.default,{variant:"body2",color:"text.secondary",noWrap:!0,children:["Base URL: ",t.baseUrl]})}),A&&(0,r.jsx)(d.A,{icon:(0,r.jsx)(b.A,{}),label:A,size:"small",variant:"outlined",sx:{mt:1,maxWidth:"100%"}})]})});return C?(0,r.jsx)(c.A,{elevation:S?4:2,role:"radio","aria-checked":S,sx:{height:"100%",display:"flex",flexDirection:"column",border:e=>S?"2px solid ".concat(e.palette.primary.main):"2px solid transparent",transition:"border-color 120ms, box-shadow 120ms"},children:(0,r.jsx)(u.A,{onClick:()=>null==N?void 0:N(t.id),sx:{height:"100%",display:"flex",flexDirection:"column",alignItems:"stretch"},children:_})}):(0,r.jsxs)(c.A,{elevation:2,sx:{height:"100%",display:"flex",flexDirection:"column"},children:[_,(0,r.jsxs)(p.A,{disableSpacing:!0,children:[(0,r.jsx)(i.A,{title:"Test model (direct SDK call, no flow)",arrow:!0,children:(0,r.jsx)(m.A,{"aria-label":"test",onClick:()=>{U(!0),E()},children:(0,r.jsx)(f.A,{})})}),(0,r.jsx)(m.A,{"aria-label":"edit",onClick:l,children:(0,r.jsx)(x.A,{})}),(0,r.jsx)(m.A,{"aria-label":"delete",onClick:j,children:(0,r.jsx)(h.A,{})}),k&&(0,r.jsx)(i.A,{title:"Move to folder…",arrow:!0,children:(0,r.jsx)(m.A,{"aria-label":"move to folder",onClick:e=>F(e.currentTarget),sx:{ml:"auto"},children:(0,r.jsx)(v.A,{})})})]}),k&&(0,r.jsx)(L.A,{anchorEl:O,open:!!O,currentFolder:A,folders:w,onClose:()=>F(null),onAssign:k}),(0,r.jsx)(K,{open:T,modelLabel:t.displayName||t.name,loading:M,result:P,error:B,onClose:()=>U(!1),onRetry:E})]})}},67034:(e,t,l)=>{Promise.resolve().then(l.bind(l,94049)),Promise.resolve().then(l.bind(l,25635)),Promise.resolve().then(l.bind(l,24437)),Promise.resolve().then(l.bind(l,36552)),Promise.resolve().then(l.bind(l,43856)),Promise.resolve().then(l.bind(l,94929))},88107:(e,t,l)=>{"use strict";l.d(t,{T_:()=>n,xx:()=>r});let r=[{id:"openai",label:"OpenAI",provider:"openai",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.openai.com/v1",showBaseUrl:!0},{id:"openrouter",label:"OpenRouter",provider:"openrouter",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://openrouter.ai/api/v1",showBaseUrl:!0},{id:"requesty",label:"Requesty",provider:"requesty",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://router.requesty.ai/v1",showBaseUrl:!0},{id:"xai",label:"X.ai",provider:"xai",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.x.ai/v1",showBaseUrl:!0},{id:"ollama",label:"Ollama",provider:"ollama",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"http://localhost:11434/v1",showBaseUrl:!0},{id:"litellm",label:"LiteLLM",provider:"litellm",adapter:"openai",sdkLabel:"OpenAI SDK (via LiteLLM Proxy)",baseUrl:"http://localhost:4000/v1",showBaseUrl:!0},{id:"gemini-openai",label:"Gemini (OpenAI Format)",provider:"gemini",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://generativelanguage.googleapis.com/v1beta/openai/",showBaseUrl:!0},{id:"gemini-native",label:"Gemini (Native)",provider:"gemini",adapter:"gemini",sdkLabel:"GenAI SDK",baseUrl:"",showBaseUrl:!1,defaultModels:["gemini-2.5-pro","gemini-2.5-flash","gemini-2.5-flash-lite","gemini-2.0-flash"]},{id:"anthropic-openai",label:"Anthropic (OpenAI Format)",provider:"anthropic",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.anthropic.com/v1/",showBaseUrl:!0},{id:"anthropic-native",label:"Anthropic (Native)",provider:"anthropic",adapter:"anthropic",sdkLabel:"Anthropic SDK",baseUrl:"",showBaseUrl:!1,defaultModels:["claude-opus-4-8","claude-sonnet-4-6","claude-haiku-4-5-20251001","claude-fable-5"]},{id:"claude-subscription",label:"Claude Subscription",provider:"claude-subscription",adapter:"claude-cli",sdkLabel:"Claude CLI",baseUrl:"",showBaseUrl:!1,defaultModels:["opus","sonnet","haiku","fable"]}];function n(e,t){let l=e||"openai",n=t||"openai";return r.find(e=>e.provider===l&&e.adapter===n)||r.find(e=>e.provider===l)||r[0]}},95480:(e,t,l)=>{"use strict";l.d(t,{A:()=>T});var r=l(95155),n=l(12115),a=l(87021),o=l(63941),s=l(29985),i=l(80372),d=l(94049),c=l(25635),u=l(14913),p=l(57883),m=l(2300),x=l(89218),h=l(42063),f=l(17897);l(32098);var v=l(61033);let b=(0,a.h)("frontend/components/shared/PromptBuilder"),g=e=>{b.debug("Deserializing markdown to Slate value");let t=e.split("\n").map(e=>({type:"paragraph",children:(e=>{let t=(0,v.A$)(e);if(0===t.length)return[{text:e}];let l=[],r=0;for(let n of t)n.index>r&&l.push({text:e.slice(r,n.index)}),l.push({type:"binding-reference",kind:n.kind,server:n.server,name:n.name,children:[{text:""}]}),r=n.index+n.fullMatch.length;return r<e.length&&l.push({text:e.slice(r)}),l})(e)}));return t.length>0?t:[{type:"paragraph",children:[{text:""}]}]},y=e=>{b.debug("Serializing Slate value to markdown");let t=0,l=e.map(e=>e.children?e.children.map(e=>o.EY.isText(e)?e.text:"binding-reference"===e.type?(t++,(0,v.X8)(e.kind,e.server,e.name)):"").join(""):"").join("\n");return t>0&&b.debug("Serialized ".concat(t," binding references")),l},j=e=>{let{attributes:t,children:l,element:n}=e;return"binding-reference"===n.type?(0,r.jsxs)("span",{...t,className:"tool-reference-wrapper",children:[(0,r.jsx)(()=>{let e=(0,s.Zi)(),t=(e=>"tool"===e.kind&&"handoff"===e.server)(n),l="resource"===n.kind?"resource":t?"handoff":"",a=()=>{let t=s.rL.findPath(e,n);b.debug("Removing binding reference: ".concat(n.kind,":").concat(n.server,":").concat(n.name)),o.gB.removeNodes(e,{at:t})};return(0,r.jsxs)("span",{contentEditable:!1,className:"tool-reference-container ".concat(l),children:[(0,r.jsx)("span",{className:"tool-reference ".concat(l),children:(0,v.YP)(n)}),(0,r.jsx)("span",{className:"tool-reference-delete ".concat(l),role:"button",tabIndex:0,onClick:e=>{e.preventDefault(),e.stopPropagation(),a()},onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),e.stopPropagation(),a())},children:"\xd7"})]})},{}),l," "]}):(0,r.jsx)("p",{...t,children:l})},A=e=>{let{attributes:t,children:l,leaf:n}=e,a=l;return n.bold&&(a=(0,r.jsx)("strong",{children:a})),n.italic&&(a=(0,r.jsx)("em",{children:a})),n.code&&(a=(0,r.jsx)("code",{children:a})),(0,r.jsx)("span",{...t,children:a})},w=e=>{let{server:t,name:l}=e,a="handoff"===t,[o,s]=(0,n.useState)(null),[i,d]=(0,n.useState)(!0);return((0,n.useEffect)(()=>{let e=!1;return(async()=>{try{var r;d(!0);let n=null==(r=(await f.S.listServerTools(t)).tools)?void 0:r.find(e=>e.name===l);e||s(n||null)}catch(e){b.error("Failed to fetch tool info for ".concat(t,":").concat(l),e)}finally{e||d(!1)}})(),()=>{e=!0}},[t,l]),i)?(0,r.jsx)("span",{className:"tool-reference-preview loading ".concat(a?"handoff":""),children:"tool:".concat(t,"__").concat(l)}):o?(0,r.jsxs)("span",{className:"tool-reference-preview ".concat(a?"handoff":""),children:["[The user is referencing a ",a?"handoff":"tool"," `tool:",t,"__",l,"` (",o.description||"No description",")]"]}):(0,r.jsx)("span",{className:"tool-reference-preview not-found ".concat(a?"handoff":""),children:"tool:".concat(t,"__").concat(l," (Tool not found)")})},k=e=>{let{server:t,name:l}=e,[a,o]=(0,n.useState)(null),[s,i]=(0,n.useState)(!0);return((0,n.useEffect)(()=>{let e=!1;return(async()=>{try{i(!0);let r=await f.S.listServerResources(t),n=[...r.resources||[],...r.resourceTemplates||[]].find(e=>e.uri===l||e.uriTemplate===l);e||o((null==n?void 0:n.description)||(null==n?void 0:n.name)||null)}catch(e){b.error("Failed to fetch resource info for ".concat(t,":").concat(l),e)}finally{e||i(!1)}})(),()=>{e=!0}},[t,l]),s)?(0,r.jsx)("span",{className:"tool-reference-preview loading resource",children:"resource:".concat(t,"__").concat(l)}):(0,r.jsxs)("span",{className:"tool-reference-preview resource",children:["[The contents of resource `",l,"` from `",t,"`",a?" (".concat(a,")"):""," will be inserted here]"]})},C=e=>{let{binding:t}=e;return"resource"===t.kind?(0,r.jsx)(k,{server:t.server,name:t.name}):(0,r.jsx)(w,{server:t.server,name:t.name})},S=e=>{let{value:t}=e;b.debug("Rendering preview");let l=[],n=0;for(let e of(0,v.A$)(t))e.index>n&&l.push({type:"text",value:t.slice(n,e.index)}),l.push({type:"binding",binding:e,key:e.index}),n=e.index+e.fullMatch.length;n<t.length&&l.push({type:"text",value:t.slice(n)});let a=[],o=[],s=()=>{a.push((0,r.jsx)("p",{children:o},"p-".concat(a.length))),o=[]};for(let e of l)if("text"===e.type){let t=e.value.split("\n");for(let e=0;e<t.length;e++)o.push(t[e]),e<t.length-1&&s()}else o.push((0,r.jsx)(C,{binding:e.binding},"binding-".concat(e.key)));return o.length>0&&s(),(0,r.jsx)("div",{className:"preview-content",children:a})},N=(0,n.forwardRef)((e,t)=>{let{value:l,onChange:a,label:f="Prompt Builder",height:w=300,onModeChange:k,customPreviewRenderer:C}=e;b.info("PromptBuilder initialized");let N=(0,n.useMemo)(()=>{let e=(0,i.$k)((0,s.o$)((0,o.ie)())),{isInline:t,isVoid:l}=e;return e.isInline=e=>"binding-reference"===e.type||t(e),e.isVoid=e=>"binding-reference"===e.type||l(e),e},[]),[T,U]=(0,n.useState)("raw"),[M,I]=(0,n.useState)(()=>g(l||"")),P=(0,n.useRef)(!1),[,K]=(0,n.useState)(0);(0,n.useImperativeHandle)(t,()=>({insertText:e=>{b.info("insertText called with text length: ".concat(e.length));let t=(0,v.js)(e);if(t){b.info("Inserting ".concat(t.kind," reference: ").concat(t.server,":").concat(t.name));let e={type:"binding-reference",kind:t.kind,server:t.server,name:t.name,children:[{text:""}]};N.selection||o.gB.select(N,o.KE.end(N,[])),o.gB.insertNodes(N,e),o.gB.move(N),K(e=>e+1),I([...N.children])}else N.selection||o.gB.select(N,o.KE.end(N,[])),o.gB.insertText(N,e);a(y(N.children)),b.info("insertText completed successfully")},getMode:()=>T})),(0,n.useEffect)(()=>{y(M)!==y(g(l||""))&&(b.debug("External value change detected"),P.current=!0,I(g(l||"")))},[l,M]);let L=(0,n.useCallback)(e=>{if(P.current){P.current=!1;return}I(e),a(y(e))},[a]);return(0,r.jsxs)(d.default,{sx:{width:"100%",height:"100%",display:"flex",flexDirection:"column"},children:[f&&(0,r.jsx)(c.default,{variant:"subtitle1",gutterBottom:!0,sx:{fontWeight:"medium",mb:1},children:f}),(0,r.jsx)(d.default,{sx:{mb:1},children:(0,r.jsxs)(u.A,{value:T,exclusive:!0,onChange:(e,t)=>{null!==t&&(b.info("Mode changed from ".concat(T," to ").concat(t)),U(t),k&&k(t))},size:"small",children:[(0,r.jsxs)(p.A,{value:"raw",children:[(0,r.jsx)(x.A,{fontSize:"small",sx:{mr:.5}}),"Raw"]}),(0,r.jsxs)(p.A,{value:"preview",children:[(0,r.jsx)(h.A,{fontSize:"small",sx:{mr:.5}}),"Preview"]})]})}),(0,r.jsx)(m.A,{elevation:0,sx:{border:"1px solid rgba(0, 0, 0, 0.12)",borderRadius:1,overflow:"hidden",flexGrow:1,display:"flex",flexDirection:"column"},children:"raw"===T?(0,r.jsx)(d.default,{className:"slate-editor-container",sx:{height:"number"==typeof w?w:"100%",overflow:"auto",p:2},children:(0,r.jsx)(s.A,{editor:N,initialValue:M,onChange:L,children:(0,r.jsx)(s.Fo,{className:"slate-editor",renderElement:j,renderLeaf:A,placeholder:"Write your prompt here..."})})}):C?(0,r.jsx)(d.default,{className:"custom-preview-container",sx:{height:"number"==typeof w?w:"100%",overflow:"auto"},children:C()}):(0,r.jsx)(d.default,{className:"preview-container",sx:{height:"number"==typeof w?w:"100%",overflow:"auto",p:2},children:(0,r.jsx)(S,{value:l})})})]})});N.displayName="PromptBuilder";let T=N}},e=>{e.O(0,[1137,7926,2678,4754,9244,8548,1983,1871,2003,5501,488,3272,3077,9659,9451,6920,3736,9164,812,8441,1255,7358],()=>e(e.s=67034)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8329],{32098:()=>{},43856:(e,t,l)=>{"use strict";l.r(t),l.d(t,{default:()=>ea});var r=l(95155),n=l(12115),a=l(20063),o=l(2300),s=l(94049),i=l(9562),d=l(56422),c=l(91871),u=l(22003),p=l(86946),m=l(51611),x=l(74879),h=l(33567),f=l(4474),v=l(33077),b=l(25635),g=l(41983),y=l(36314),j=l(86973),A=l(49501),w=l(17681),k=l(21067),C=l(64419),S=l(28466),N=l(45587),T=l(81952),U=l(94885),M=l(15686),I=l(91665),P=l(61267),K=l(22573),L=l(38459),W=l(97104),z=l(48072),B=l(87021);let D=(0,B.h)("frontend/components/models/list/ModelList"),O=e=>{let{models:t,isLoading:l,onAdd:a,onUpdate:i,onDelete:d,folders:c=[],onSetFolder:u}=e,p=(0,h.A)(),[m,x]=(0,W.Xk)("flujo-ui:models:sort","name-asc"),[B,O]=(0,W.Xk)("flujo-ui:models:group","none"),[F,E]=(0,n.useState)(null),[_,R]=(0,n.useState)(null),[X,q]=(0,W.Xk)("flujo-ui:models:collapsed",[]),$=(0,n.useMemo)(()=>new Set(X),[X]),G=e=>{x(e),E(null)},Z=e=>{O(e),R(null)},H=async e=>{let t=await i(e);t.success||D.error("Failed to update model in ModelList",t.error)},J=(0,n.useMemo)(()=>(0,z.h5)(t,m),[t,m]),V=(0,n.useMemo)(()=>"folder"===B?(0,L.Je)(J,e=>e.folder):"sort"===B?(0,L.Az)(J,e=>(0,z.eZ)(e,m)):[],[B,J,m]);if(l)return(0,r.jsx)(s.default,{display:"flex",justifyContent:"center",py:4,children:(0,r.jsx)(f.default,{})});let Y=e=>(0,r.jsx)(v.Ay,{container:!0,spacing:2,children:e.map(e=>(0,r.jsx)(v.Ay,{item:!0,xs:12,sm:6,md:4,children:(0,r.jsx)(P.A,{model:e,onEdit:()=>H(e),onDelete:()=>d(e.id),folder:e.folder,folders:c,onSetFolder:u?t=>u(e.id,t):void 0})},e.id))});return(0,r.jsxs)(s.default,{children:[(0,r.jsx)(o.A,{elevation:1,sx:{mb:2,p:1},children:(0,r.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:1},children:[(0,r.jsxs)(b.default,{variant:"body2",color:"textSecondary",children:[t.length," model",1===t.length?"":"s",(0,r.jsx)(s.default,{component:"span",sx:{mx:1,opacity:.5},children:"\xb7"}),"Sorted by: ",z.fC[m]]}),(0,r.jsxs)(s.default,{sx:{display:"flex",gap:1,alignItems:"center"},children:[(0,r.jsx)(g.A,{size:"small",onClick:e=>R(e.currentTarget),color:"none"!==B?"primary":"default",sx:{border:"1px solid ".concat(p.palette.divider),backgroundColor:p.palette.background.default},title:"Group cards",children:(0,r.jsx)(U.A,{fontSize:"small"})}),(0,r.jsx)(g.A,{size:"small",onClick:e=>E(e.currentTarget),sx:{border:"1px solid ".concat(p.palette.divider),backgroundColor:p.palette.background.default},title:"Sort models",children:(0,r.jsx)(C.A,{fontSize:"small"})})]})]})}),t&&0!==t.length?"none"===B?Y(J):V.map(e=>(0,r.jsx)(K.A,{label:e.label,count:e.items.length,expanded:!$.has(e.key),onToggle:()=>(e=>{q(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])})(e.key),showFolderIcon:"folder"===B,children:Y(e.items)},e.key)):(0,r.jsx)(s.default,{textAlign:"center",py:4,children:"No models found"}),(0,r.jsxs)(y.A,{anchorEl:_,open:!!_,onClose:()=>R(null),anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:[(0,r.jsxs)(j.A,{selected:"none"===B,onClick:()=>Z("none"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(M.A,{fontSize:"small"})}),(0,r.jsx)(w.A,{primary:"No grouping"})]}),(0,r.jsxs)(j.A,{selected:"folder"===B,onClick:()=>Z("folder"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(I.A,{fontSize:"small"})}),(0,r.jsx)(w.A,{primary:"By folder"})]}),(0,r.jsxs)(j.A,{selected:"sort"===B,onClick:()=>Z("sort"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(U.A,{fontSize:"small"})}),(0,r.jsx)(w.A,{primary:"By sort setting"})]})]}),(0,r.jsxs)(y.A,{anchorEl:F,open:!!F,onClose:()=>E(null),anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:[(0,r.jsxs)(j.A,{selected:"name-asc"===m,onClick:()=>G("name-asc"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(S.A,{fontSize:"small"})}),(0,r.jsx)(w.A,{primary:"Name (A-Z)"})]}),(0,r.jsxs)(j.A,{selected:"name-desc"===m,onClick:()=>G("name-desc"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(S.A,{fontSize:"small",sx:{transform:"scaleX(-1)"}})}),(0,r.jsx)(w.A,{primary:"Name (Z-A)"})]}),(0,r.jsx)(k.A,{}),(0,r.jsxs)(j.A,{selected:"provider"===m,onClick:()=>G("provider"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(N.A,{fontSize:"small"})}),(0,r.jsx)(w.A,{primary:"Provider"})]}),(0,r.jsx)(k.A,{}),(0,r.jsxs)(j.A,{selected:"context-desc"===m,onClick:()=>G("context-desc"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(T.A,{fontSize:"small"})}),(0,r.jsx)(w.A,{primary:"Context (largest)"})]}),(0,r.jsxs)(j.A,{selected:"context-asc"===m,onClick:()=>G("context-asc"),children:[(0,r.jsx)(A.A,{children:(0,r.jsx)(T.A,{fontSize:"small",sx:{transform:"scaleY(-1)"}})}),(0,r.jsx)(w.A,{primary:"Context (smallest)"})]})]})]})};var F=l(2778),E=l(52363),_=l(65036),R=l(52641),X=l(51221),q=l(55606),$=l(63109),G=l(75912),Z=l(12857),H=l(48363),J=l(9164),V=l(95480),Y=l(88107),Q=l(52397),ee=l(43076);let et=(0,B.h)("frontend/components/models/modal"),el=e=>{var t,l,o;let{open:d,model:p,onSave:m,onClose:x}=e,h=(0,a.useRouter)(),{globalEnvVars:y}=(0,J.useStorage)(),[A,w]=(0,n.useState)({}),[k,C]=(0,n.useState)({}),[S,N]=(0,n.useState)(null),[T,U]=(0,n.useState)(!1),[M,I]=(0,n.useState)(null),[P,K]=(0,n.useState)(!1),[L,W]=(0,n.useState)([]),[z,B]=(0,n.useState)(!1),D=(0,n.useRef)(null),O=(0,n.useRef)(null);(0,n.useEffect)(()=>{d&&W([])},[d]),(0,n.useEffect)(()=>{A.baseUrl&&(et.debug("Base URL or API Key changed",{baseUrl:A.baseUrl}),W([]))},[A.baseUrl,A.ApiKey]),(0,n.useEffect)(()=>(O.current&&clearTimeout(O.current),A.baseUrl&&(O.current=setTimeout(()=>{et.debug("Debounced fetchModels triggered",{name:A.name,baseUrl:A.baseUrl,searchTerm:A.name?'"'.concat(A.name,'"'):"none"}),el(A.baseUrl,A.name)},100)),()=>{O.current&&clearTimeout(O.current)}),[A.name,A.baseUrl]),(0,n.useEffect)(()=>()=>{O.current&&clearTimeout(O.current)},[]);let el=async(e,t)=>{et.debug("fetchModels called",{baseUrl:e,searchTerm:t?'"'.concat(t,'"'):"none",apiKey:A.ApiKey?"present":"not present",isApiKeyBound:T}),B(!0),C({});try{let l=T&&M?"${global:".concat(M,"}"):A.ApiKey&&A.ApiKey!==Q.RJ?A.ApiKey:void 0,r=await ee.N.fetchProviderModels(e,p.id,t,l);et.debug("Models fetched successfully",{count:null==r?void 0:r.length,searchTerm:t?'"'.concat(t,'"'):"none"}),Array.isArray(r)?(W(r),et.info("Models set in state",{count:r.length,searchTerm:t?'"'.concat(t,'"'):"none"})):(et.warn("Unexpected API response format",{models:r}),W([]))}catch(l){et.warn("Error fetching models",{baseUrl:e,searchTerm:t,error:l}),W([])}finally{B(!1)}};(0,n.useEffect)(()=>{if(d){w({...p,displayName:p.displayName||p.name});let e=(p.ApiKey||"").match(/\$\{global:([^}]+)\}/);e?(U(!0),I(e[1])):(U(!1),I(null),w(e=>({...e,ApiKey:p.name?Q.RJ:""})))}else w({name:"",displayName:"",description:"",ApiKey:"",baseUrl:"https://api.openai.com/v1",provider:"openai",adapter:"openai",promptTemplate:"",temperature:"0.0"}),U(!1),I(null);C({}),N(null)},[d,p]);let er=(0,Y.T_)(A.provider,A.adapter),en=(e,t)=>{w(l=>({...l,[e]:t})),C(t=>({...t,[e]:""}))},ea=async e=>{var t,l,r;e.preventDefault();let n={};if((null==(t=A.name)?void 0:t.trim())||(n.name="Name is required"),(null==(l=A.displayName)?void 0:l.trim())||(n.displayName="Display Name is required"),T||(null==(r=A.ApiKey)?void 0:r.trim())||(n.ApiKey="API key is required"),Object.keys(n).length>0)return void C(n);try{let e=await m({id:p.id,name:A.name,displayName:A.displayName,description:A.description,ApiKey:A.ApiKey,baseUrl:A.baseUrl,provider:A.provider,adapter:A.adapter||"openai",promptTemplate:A.promptTemplate,temperature:A.temperature,contextWindow:A.contextWindow,maxTurns:A.maxTurns});e.success?h.refresh():C({submit:e.error||"Failed to save model"})}catch(e){et.error("Failed to save model",{error:e}),C({submit:(null==e?void 0:e.message)||"Failed to save model"})}};return(0,r.jsx)(F.A,{open:d,onClose:x,maxWidth:"xl",fullWidth:!0,PaperProps:{sx:{width:"95vw",height:"90vh",maxWidth:"95vw",maxHeight:"90vh"}},children:(0,r.jsxs)("form",{onSubmit:ea,children:[(0,r.jsx)(E.A,{children:p?"Edit Model":"Add Model"}),(0,r.jsxs)(_.A,{sx:{display:"flex",flexDirection:"column",height:"calc(90vh - 130px)"},children:[k.submit&&(0,r.jsx)(u.A,{severity:"error",sx:{mb:2},children:k.submit}),S&&(0,r.jsx)(u.A,{severity:"info",sx:{mb:2},children:S}),(0,r.jsxs)(v.Ay,{container:!0,spacing:2,sx:{flexGrow:1},children:[(0,r.jsx)(v.Ay,{item:!0,xs:6,sx:{height:"100%"},children:(0,r.jsxs)(s.default,{sx:{display:"flex",flexDirection:"column",height:"100%",pr:2},children:[(0,r.jsx)(b.default,{variant:"h6",gutterBottom:!0,children:"Model Configuration"}),(0,r.jsx)(i.A,{autoFocus:!0,margin:"dense",label:"Display Name",fullWidth:!0,required:!0,value:A.displayName||"",onChange:e=>en("displayName",e.target.value),error:!!k.displayName,helperText:k.displayName||"The name shown in the UI"}),(0,r.jsxs)(R.A,{fullWidth:!0,margin:"dense",children:[(0,r.jsx)(X.A,{id:"provider-profile-label",children:"Provider"}),(0,r.jsx)(q.A,{labelId:"provider-profile-label",label:"Provider",value:er.id,onChange:e=>(e=>{let t=Y.xx.find(t=>t.id===e);t&&(w(e=>({...e,provider:t.provider,adapter:t.adapter,baseUrl:t.baseUrl})),C(e=>({...e,baseUrl:""})))})(e.target.value),children:Y.xx.map(e=>(0,r.jsx)(j.A,{value:e.id,children:e.label},e.id))})]}),(0,r.jsxs)(b.default,{variant:"caption",color:"text.secondary",sx:{mt:.5,mb:1,display:"block"},children:["Uses the ",(0,r.jsx)("strong",{children:er.sdkLabel}),"claude-cli"===er.adapter?". Paste an OAuth token from `claude setup-token` into the API Key field.":""]}),er.showBaseUrl&&(0,r.jsx)(i.A,{margin:"dense",label:"Base URL",fullWidth:!0,value:A.baseUrl||"",onChange:e=>en("baseUrl",e.target.value),helperText:"Endpoint for the OpenAI-compatible API."}),(0,r.jsx)(s.default,{sx:{position:"relative",mt:1,mb:1},children:(0,r.jsx)(i.A,{margin:"dense",label:"API Key",fullWidth:!0,required:!T,type:T?"text":"password",value:A.ApiKey||"",onChange:e=>en("ApiKey",e.target.value),error:!!k.ApiKey,helperText:k.ApiKey||"API key is required for this provider",InputProps:{readOnly:T,endAdornment:(0,r.jsx)(s.default,{sx:{display:"flex",alignItems:"center"},children:T?(0,r.jsx)(g.A,{onClick:()=>{U(!1),I(null),w(e=>({...e,ApiKey:""}))},size:"small",title:"Unbind from global variable",children:(0,r.jsx)(Z.A,{})}):(0,r.jsx)(g.A,{onClick:()=>{K(!0)},size:"small",title:"Bind to global variable",children:(0,r.jsx)(H.A,{})})})}})}),(0,r.jsx)($.A,{freeSolo:!0,loading:z,options:er.showBaseUrl?L.map(e=>e.id):null!=(t=er.defaultModels)?t:[],value:A.name||"",onChange:(e,t)=>{en("name",t||"")},onInputChange:(e,t)=>{en("name",t)},filterOptions:(e,t)=>{let l=t.inputValue.toLowerCase();return l?e.filter(e=>{let t=e.toLowerCase();if(t.includes(l))return!0;let r=0,n=0;for(;r<t.length&&n<l.length;)t[r]===l[n]&&n++,r++;return n===l.length}):e},ListboxProps:{style:{maxHeight:"300px",overflow:"auto"}},renderInput:e=>(0,r.jsx)(i.A,{...e,margin:"dense",label:"Technical Name",required:!0,error:!!k.name,helperText:k.name||"Used for API calls to the LLM. Type to search available models.",InputProps:{...e.InputProps,endAdornment:(0,r.jsxs)(r.Fragment,{children:[z?(0,r.jsx)(f.default,{color:"inherit",size:20}):null,e.InputProps.endAdornment]})}}),renderOption:(e,t)=>{let l=L.find(e=>e.id===t),{key:n,...a}=e;return(0,r.jsx)("li",{...a,style:{borderBottom:"1px solid rgba(0,0,0,0.1)",padding:"8px 16px"},children:(0,r.jsxs)(s.default,{children:[(0,r.jsx)(b.default,{variant:"body1",fontWeight:"bold",children:t}),(null==l?void 0:l.description)&&(0,r.jsx)(b.default,{variant:"body2",color:"text.secondary",sx:{fontSize:"0.75rem"},children:l.description})]})},n)},noOptionsText:"No matching models found",loadingText:"Loading models..."}),(0,r.jsx)(i.A,{margin:"dense",label:"Description",fullWidth:!0,multiline:!0,rows:3,value:A.description||"",onChange:e=>en("description",e.target.value)}),(0,r.jsx)(i.A,{margin:"dense",label:"Context Window (tokens)",fullWidth:!0,type:"number",value:null!=(l=A.contextWindow)?l:"",onChange:e=>{let t=e.target.value,l=""===t?void 0:Number(t);w(e=>({...e,contextWindow:void 0!==l&&Number.isFinite(l)&&l>0?Math.floor(l):void 0}))},helperText:"Optional. Enables the context-usage meter in chat (e.g. 200000 for Claude, 128000 for GPT-4o)."}),(0,r.jsx)(i.A,{margin:"dense",label:"Max Turns",fullWidth:!0,type:"number",value:null!=(o=A.maxTurns)?o:"",onChange:e=>{let t=e.target.value,l=""===t?void 0:Number(t);w(e=>({...e,maxTurns:void 0!==l&&Number.isFinite(l)&&l>0?Math.floor(l):void 0}))},inputProps:{min:1},helperText:"Max agentic turns before a run stops (default 50). Process nodes can override this per-node."})]})}),(0,r.jsx)(v.Ay,{item:!0,xs:6,sx:{height:"100%"},children:(0,r.jsxs)(s.default,{sx:{display:"flex",flexDirection:"column",height:"100%",pl:2},children:[(0,r.jsx)(b.default,{variant:"h6",gutterBottom:!0,children:"Prompt Template"}),(0,r.jsx)(s.default,{sx:{flexGrow:1,display:"flex",flexDirection:"column",height:"calc(100% - 32px)"},children:(0,r.jsx)(V.A,{ref:D,value:A.promptTemplate||"",onChange:e=>en("promptTemplate",e),label:"",height:"100%"})})]})})]}),P&&(0,r.jsxs)(s.default,{sx:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",width:400,bgcolor:"background.paper",boxShadow:24,p:4,borderRadius:1,zIndex:9999},children:[(0,r.jsx)(b.default,{variant:"h6",component:"h2",sx:{mb:2},children:"Bind to Global Variable"}),0===Object.keys(y).length?(0,r.jsx)(b.default,{sx:{mb:2},children:"No global variables available. Add some in Settings first."}):(0,r.jsx)(s.default,{sx:{maxHeight:300,overflow:"auto",mb:2},children:Object.entries(y).map(e=>{let[t,l]=e;return(0,r.jsx)(c.A,{onClick:()=>(e=>{U(!0),I(e),w(t=>({...t,ApiKey:"${global:".concat(e,"}")})),K(!1)})(t),fullWidth:!0,sx:{justifyContent:"flex-start",textAlign:"left",mb:1,p:1,"&:hover":{bgcolor:"action.hover"}},children:(0,r.jsxs)(s.default,{sx:{display:"flex",justifyContent:"space-between",width:"100%"},children:[(0,r.jsx)(b.default,{children:t}),(0,r.jsx)(b.default,{variant:"body2",color:"text.secondary",children:t.toLowerCase().includes("key")||t.toLowerCase().includes("secret")||t.toLowerCase().includes("token")||t.toLowerCase().includes("password")?"********":"object"==typeof l&&null!==l&&"value"in l?l.value:l})]})},t)})}),(0,r.jsx)(s.default,{sx:{display:"flex",justifyContent:"flex-end"},children:(0,r.jsx)(c.A,{onClick:()=>K(!1),children:"Cancel"})})]})]}),(0,r.jsxs)(G.A,{children:[(0,r.jsx)(c.A,{onClick:x,children:"Cancel"}),(0,r.jsx)(c.A,{type:"submit",variant:"contained",color:"primary",children:"Save"})]})]})})};var er=l(94929);let en=(0,B.h)("app/models/ModelClient");function ea(e){var t;let{initialModels:l}=e,h=(0,a.useRouter)(),f=(0,a.useSearchParams)(),[v,b]=(0,n.useState)(l),[g,y]=(0,n.useState)(""),[j,A]=(0,n.useState)(null),[w,k]=(0,n.useState)(!1),[C,S]=(0,n.useState)(!1),[N,T]=(0,n.useState)(null),U="1"===f.get("add");if((0,n.useEffect)(()=>{U?T(e=>null!=e?e:{id:(0,x.A)(),name:"",displayName:"",description:"",ApiKey:"",baseUrl:"",provider:"openai",promptTemplate:"",temperature:"0.0"}):T(null)},[U]),(0,n.useEffect)(()=>{try{let e=(0,ee.X)();e&&"function"==typeof e.loadModels&&(S(!0),en.debug("Model service is ready"))}catch(t){en.warn("Model service not ready, retrying...",t);let e=setTimeout(()=>{try{let e=(0,ee.X)();e&&"function"==typeof e.loadModels&&(S(!0),en.debug("Model service is now ready"))}catch(e){en.warn("Model service still not ready",e)}},100);return()=>clearTimeout(e)}},[]),!C)return en.debug("Waiting for model service to be ready..."),(0,r.jsx)(er.default,{});let M=f.get("edit"),I=U?N:M&&null!=(t=v.find(e=>e.id===M))?t:null,P=U?!!N:!!M,K=async e=>{en.info("Saving model",{modelId:e.id,modelName:e.name,mode:U?"add":"update"}),k(!0);try{let t=(0,ee.X)(),l=U?await t.addModel(e):await t.updateModel(e);if(!l.success)return A(l.error||"Failed to save model."),{success:!1,error:l.error};{let e=await t.loadModels();return b(e),T(null),h.push("/models"),{success:!0,model:l.model}}}catch(e){return en.error("Failed to save model",e),A((null==e?void 0:e.message)||"Failed to save model. Please try again."),{success:!1,error:(null==e?void 0:e.message)||"Failed to save model"}}finally{k(!1)}},W=async e=>(en.info("Editing model",{modelId:e.id,modelName:e.name}),h.push("/models?edit=".concat(e.id)),{success:!0}),z=async()=>{en.info("Opening add-model modal"),h.push("/models?add=1")},B=async e=>{en.info("Deleting model",{modelId:e}),k(!0);try{let t=(0,ee.X)();await t.deleteModel(e);let l=await t.loadModels();b(l)}catch(e){en.error("Failed to delete model",e),A("Failed to delete model. Please try again.")}finally{k(!1)}},D=async(e,t)=>{en.info("Setting model folder",{modelId:e,folder:t}),k(!0);try{let l=(0,ee.X)(),r=await l.getModel(e);if(!r)return void A("Model not found.");let n=await l.updateModel({...r,folder:t});if(!n.success)return void A(n.error||"Failed to move model to folder.");let a=await l.loadModels();b(a)}catch(e){en.error("Failed to set model folder",e),A((null==e?void 0:e.message)||"Failed to move model to folder. Please try again.")}finally{k(!1)}},F=async()=>{T(null),h.push("/models")},E=g.trim()?v.filter(e=>{let t=g.toLowerCase();return(e.displayName||"").toLowerCase().includes(t)||(e.name||"").toLowerCase().includes(t)}):v;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(o.A,{elevation:1,sx:{mb:2,p:1},children:(0,r.jsxs)(s.default,{sx:{display:"flex",flexDirection:{xs:"column",sm:"row"},gap:1,alignItems:{xs:"stretch",sm:"center"},justifyContent:"space-between"},children:[(0,r.jsx)(i.A,{placeholder:"Search models...",variant:"outlined",size:"small",value:g,onChange:e=>y(e.target.value),InputProps:{startAdornment:(0,r.jsx)(d.A,{position:"start",children:(0,r.jsx)(m.A,{fontSize:"small"})})},sx:{maxWidth:{sm:300},width:"100%"}}),(0,r.jsx)(c.A,{variant:"contained",color:"primary",startIcon:(0,r.jsx)(p.A,{}),onClick:z,"data-tour":"add-model",children:"Add Model"})]})}),j&&(0,r.jsx)(s.default,{sx:{mb:2},children:(0,r.jsx)(u.A,{severity:"error",onClose:()=>A(null),children:j})}),(0,r.jsx)(O,{models:E,isLoading:w,onAdd:z,onUpdate:W,onDelete:B,folders:(0,L.yF)(v,e=>e.folder),onSetFolder:D}),P&&I?(0,r.jsx)(el,{open:P,model:I,onSave:K,onClose:F}):null]})}},48072:(e,t,l)=>{"use strict";l.d(t,{Lg:()=>o,eZ:()=>i,fC:()=>a,h5:()=>d});var r=l(88107),n=l(38459);let a={"name-asc":"Name (A-Z)","name-desc":"Name (Z-A)",provider:"Provider","context-desc":"Context (largest)","context-asc":"Context (smallest)"},o=e=>e.displayName||e.name||"",s=e=>(0,r.T_)(e.provider,e.adapter).label;function i(e,t){switch(t){case"provider":{let t=s(e);return{key:"provider:".concat(t),label:t}}case"context-asc":case"context-desc":var l;return"number"!=typeof(l=e.contextWindow)||Number.isNaN(l)?{key:"ctx:unknown",label:"Unknown context"}:l<=8e3?{key:"ctx:<=8k",label:"≤ 8K tokens"}:l<=32e3?{key:"ctx:8k-32k",label:"8K–32K tokens"}:l<=128e3?{key:"ctx:32k-128k",label:"32K–128K tokens"}:l<=1e6?{key:"ctx:128k-1m",label:"128K–1M tokens"}:{key:"ctx:>1m",label:"> 1M tokens"};default:return(0,n.po)(o(e))}}function d(e,t){return[...e].sort((e,l)=>{switch(t){case"name-asc":return o(e).localeCompare(o(l));case"name-desc":return o(l).localeCompare(o(e));case"provider":return s(e).localeCompare(s(l))||o(e).localeCompare(o(l));case"context-desc":case"context-asc":{let r="number"!=typeof e.contextWindow||Number.isNaN(e.contextWindow)?void 0:e.contextWindow,n="number"!=typeof l.contextWindow||Number.isNaN(l.contextWindow)?void 0:l.contextWindow;if(void 0===r&&void 0===n)return o(e).localeCompare(o(l));if(void 0===r)return 1;if(void 0===n)return -1;let a="context-desc"===t?n-r:r-n;return 0!==a?a:o(e).localeCompare(o(l))}default:return 0}})}},52397:(e,t,l)=>{"use strict";l.d(t,{RJ:()=>n,gF:()=>r});let r="masked:********",n="********"},61033:(e,t,l)=>{"use strict";l.d(t,{A$:()=>c,X8:()=>s,YP:()=>u,js:()=>d});let r="_-_-_",n=/^(tool|resource):(.+)$/,a=/\$\{((?:tool|resource):[^}]+|_-_-_[^}]+)\}/g;function o(e,t){return"".concat(e,"__").concat(t)}function s(e,t,l){return"${".concat(e,":").concat(o(t,l),"}")}function i(e){let t=n.exec(e);if(t){let e=t[1],l=function(e){let t=e.indexOf("__");if(t<=0)return null;let l=e.slice(t+2);return l?{server:e.slice(0,t),name:l}:null}(t[2]);return l?{kind:e,server:l.server,name:l.name}:null}if(e.startsWith(r)){let t=e.split(r);if(3===t.length&&t[1]&&t[2])return{kind:"tool",server:t[1],name:t[2]}}return null}function d(e){return e.startsWith("${")&&e.endsWith("}")?i(e.slice(2,-1)):null}function c(e){let t,l=[];for(a.lastIndex=0;null!==(t=a.exec(e));){let e=i(t[1]);e&&l.push({...e,fullMatch:t[0],index:t.index})}return l}function u(e){return"tool"===e.kind&&"handoff"===e.server?"handoff:".concat(e.name):"".concat(e.kind,":").concat(o(e.server,e.name))}},61267:(e,t,l)=>{"use strict";l.d(t,{A:()=>z});var r=l(95155),n=l(12115),a=l(84578),o=l(25635),s=l(94049),i=l(78470),d=l(28548),c=l(29767),u=l(53062),p=l(1702),m=l(41983),x=l(14915),h=l(4484),f=l(89623),v=l(11665),b=l(91665),g=l(88107),y=l(43076),j=l(87021),A=l(2778),w=l(52363),k=l(65036),C=l(4474),S=l(22003),N=l(21067),T=l(75912),U=l(91871),M=l(36741),I=l(48563);let P=e=>{var t,l,n,a,i,c,u,p,m;let{title:x,attempt:h}=e;return(0,r.jsxs)(s.default,{sx:{mb:2},children:[(0,r.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:1,mb:.5},children:[h.ok?(0,r.jsx)(M.A,{color:"success",fontSize:"small"}):(0,r.jsx)(I.A,{color:"error",fontSize:"small"}),(0,r.jsx)(o.default,{variant:"subtitle2",children:x}),"number"==typeof h.status&&(0,r.jsx)(d.A,{size:"small",label:"HTTP ".concat(h.status)}),(0,r.jsx)(d.A,{size:"small",variant:"outlined",label:"".concat(h.durationMs," ms")})]}),h.ok?(0,r.jsxs)(o.default,{variant:"body2",color:"text.secondary",sx:{pl:3},children:["Response: ",h.content?'"'.concat(h.content,'"'):"(empty)"]}):(0,r.jsxs)(s.default,{sx:{pl:3},children:[(0,r.jsx)(o.default,{variant:"body2",color:"error.main",children:null==(t=h.error)?void 0:t.message}),((null==(l=h.error)?void 0:l.code)||(null==(n=h.error)?void 0:n.type))&&(0,r.jsxs)(o.default,{variant:"caption",color:"text.secondary",display:"block",children:[(null==(a=h.error)?void 0:a.type)?"type: ".concat(h.error.type):"",(null==(i=h.error)?void 0:i.type)&&(null==(c=h.error)?void 0:c.code)?" \xb7 ":"",(null==(u=h.error)?void 0:u.code)?"code: ".concat(h.error.code):""]}),(null==(p=h.error)?void 0:p.retryAfter)&&(0,r.jsxs)(o.default,{variant:"caption",color:"text.secondary",display:"block",children:["retry-after: ",h.error.retryAfter,"s"]}),(null==(m=h.error)?void 0:m.body)!==void 0&&(0,r.jsx)(s.default,{component:"pre",sx:{mt:.5,p:1,bgcolor:"action.hover",borderRadius:1,fontSize:"0.7rem",overflowX:"auto",maxHeight:160},children:JSON.stringify(h.error.body,null,2)})]})]})},K=e=>{let{open:t,modelLabel:l,loading:n,result:a,error:i,onClose:d,onRetry:c}=e;return(0,r.jsxs)(A.A,{open:t,onClose:d,maxWidth:"sm",fullWidth:!0,children:[(0,r.jsxs)(w.A,{children:["Test model: ",l]}),(0,r.jsx)(k.A,{dividers:!0,children:n?(0,r.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",gap:2,py:3},children:[(0,r.jsx)(C.default,{size:24}),(0,r.jsx)(o.default,{variant:"body2",children:"Sending a direct test request (SDK + axios)…"})]}):i?(0,r.jsx)(S.A,{severity:"error",children:i}):a?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(S.A,{severity:a.ok?"success":"warning",sx:{mb:2},children:a.diagnosis}),(0,r.jsxs)(o.default,{variant:"caption",color:"text.secondary",display:"block",sx:{mb:2},children:["model: ",a.model,a.baseUrl?" \xb7 ".concat(a.baseUrl):"",a.provider?" \xb7 ".concat(a.provider):""]}),(0,r.jsx)(N.A,{sx:{mb:2}}),(0,r.jsx)(P,{title:"OpenAI SDK (used by flows)",attempt:a.sdk}),(0,r.jsx)(P,{title:"axios (independent cross-check)",attempt:a.axios})]}):null}),(0,r.jsxs)(T.A,{children:[(0,r.jsx)(U.A,{onClick:c,disabled:n,children:"Run again"}),(0,r.jsx)(U.A,{onClick:d,variant:"contained",children:"Close"})]})]})};var L=l(81956);let W=(0,j.h)("frontend/components/models/list/ModelCard"),z=e=>{let{model:t,onEdit:l,onDelete:j,folder:A,folders:w=[],onSetFolder:k,selectable:C=!1,selected:S=!1,onSelect:N}=e,[T,U]=(0,n.useState)(!1),[M,I]=(0,n.useState)(!1),[P,z]=(0,n.useState)(null),[B,D]=(0,n.useState)(null),[O,F]=(0,n.useState)(null),E=async()=>{I(!0),D(null),z(null);try{let e=await (0,y.X)().testModel({modelId:t.id});z(e)}catch(e){W.error("Model test failed",{modelId:t.id,error:e}),D(e instanceof Error?e.message:"Failed to run test")}finally{I(!1)}},_=(0,r.jsx)(r.Fragment,{children:(0,r.jsxs)(a.A,{sx:{flexGrow:1},children:[(0,r.jsx)(o.default,{variant:"h6",gutterBottom:!0,children:t.displayName||t.name}),(0,r.jsx)(o.default,{variant:"body2",color:"text.secondary",sx:{mb:2},style:{display:"-webkit-box",WebkitLineClamp:3,WebkitBoxOrient:"vertical",overflow:"hidden",textOverflow:"ellipsis"},children:t.description}),(0,r.jsxs)(s.default,{sx:{mb:1},children:[(0,r.jsxs)(o.default,{variant:"body2",color:"text.secondary",children:["Provider: ",(0,g.T_)(t.provider,t.adapter).label]}),t.displayName&&(0,r.jsxs)(o.default,{variant:"body2",color:"text.secondary",noWrap:!0,children:["Model: ",t.name]}),"number"==typeof t.contextWindow&&(0,r.jsxs)(o.default,{variant:"body2",color:"text.secondary",children:["Context: ",t.contextWindow.toLocaleString()," tokens"]})]}),t.baseUrl&&(0,r.jsx)(i.A,{title:t.baseUrl,arrow:!0,placement:"top",children:(0,r.jsxs)(o.default,{variant:"body2",color:"text.secondary",noWrap:!0,children:["Base URL: ",t.baseUrl]})}),A&&(0,r.jsx)(d.A,{icon:(0,r.jsx)(b.A,{}),label:A,size:"small",variant:"outlined",sx:{mt:1,maxWidth:"100%"}})]})});return C?(0,r.jsx)(c.A,{elevation:S?4:2,role:"radio","aria-checked":S,sx:{height:"100%",display:"flex",flexDirection:"column",border:e=>S?"2px solid ".concat(e.palette.primary.main):"2px solid transparent",transition:"border-color 120ms, box-shadow 120ms"},children:(0,r.jsx)(u.A,{onClick:()=>null==N?void 0:N(t.id),sx:{height:"100%",display:"flex",flexDirection:"column",alignItems:"stretch"},children:_})}):(0,r.jsxs)(c.A,{elevation:2,sx:{height:"100%",display:"flex",flexDirection:"column"},children:[_,(0,r.jsxs)(p.A,{disableSpacing:!0,children:[(0,r.jsx)(i.A,{title:"Test model (direct SDK call, no flow)",arrow:!0,children:(0,r.jsx)(m.A,{"aria-label":"test",onClick:()=>{U(!0),E()},children:(0,r.jsx)(f.A,{})})}),(0,r.jsx)(m.A,{"aria-label":"edit",onClick:l,children:(0,r.jsx)(x.A,{})}),(0,r.jsx)(m.A,{"aria-label":"delete",onClick:j,children:(0,r.jsx)(h.A,{})}),k&&(0,r.jsx)(i.A,{title:"Move to folder…",arrow:!0,children:(0,r.jsx)(m.A,{"aria-label":"move to folder",onClick:e=>F(e.currentTarget),sx:{ml:"auto"},children:(0,r.jsx)(v.A,{})})})]}),k&&(0,r.jsx)(L.A,{anchorEl:O,open:!!O,currentFolder:A,folders:w,onClose:()=>F(null),onAssign:k}),(0,r.jsx)(K,{open:T,modelLabel:t.displayName||t.name,loading:M,result:P,error:B,onClose:()=>U(!1),onRetry:E})]})}},67034:(e,t,l)=>{Promise.resolve().then(l.bind(l,94049)),Promise.resolve().then(l.bind(l,25635)),Promise.resolve().then(l.bind(l,24437)),Promise.resolve().then(l.bind(l,36552)),Promise.resolve().then(l.bind(l,43856)),Promise.resolve().then(l.bind(l,94929))},88107:(e,t,l)=>{"use strict";l.d(t,{T_:()=>n,xx:()=>r});let r=[{id:"openai",label:"OpenAI",provider:"openai",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.openai.com/v1",showBaseUrl:!0},{id:"openrouter",label:"OpenRouter",provider:"openrouter",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://openrouter.ai/api/v1",showBaseUrl:!0},{id:"requesty",label:"Requesty",provider:"requesty",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://router.requesty.ai/v1",showBaseUrl:!0},{id:"xai",label:"X.ai",provider:"xai",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.x.ai/v1",showBaseUrl:!0},{id:"ollama",label:"Ollama",provider:"ollama",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"http://localhost:11434/v1",showBaseUrl:!0},{id:"litellm",label:"LiteLLM",provider:"litellm",adapter:"openai",sdkLabel:"OpenAI SDK (via LiteLLM Proxy)",baseUrl:"http://localhost:4000/v1",showBaseUrl:!0},{id:"gemini-openai",label:"Gemini (OpenAI Format)",provider:"gemini",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://generativelanguage.googleapis.com/v1beta/openai/",showBaseUrl:!0},{id:"gemini-native",label:"Gemini (Native)",provider:"gemini",adapter:"gemini",sdkLabel:"GenAI SDK",baseUrl:"",showBaseUrl:!1,defaultModels:["gemini-2.5-pro","gemini-2.5-flash","gemini-2.5-flash-lite","gemini-2.0-flash"]},{id:"anthropic-openai",label:"Anthropic (OpenAI Format)",provider:"anthropic",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.anthropic.com/v1/",showBaseUrl:!0},{id:"anthropic-native",label:"Anthropic (Native)",provider:"anthropic",adapter:"anthropic",sdkLabel:"Anthropic SDK",baseUrl:"",showBaseUrl:!1,defaultModels:["claude-opus-4-8","claude-sonnet-4-6","claude-haiku-4-5-20251001","claude-fable-5"]},{id:"claude-subscription",label:"Claude Subscription",provider:"claude-subscription",adapter:"claude-cli",sdkLabel:"Claude CLI",baseUrl:"",showBaseUrl:!1,defaultModels:["opus","sonnet","haiku","fable"]}];function n(e,t){let l=e||"openai",n=t||"openai";return r.find(e=>e.provider===l&&e.adapter===n)||r.find(e=>e.provider===l)||r[0]}},95480:(e,t,l)=>{"use strict";l.d(t,{A:()=>T});var r=l(95155),n=l(12115),a=l(87021),o=l(63941),s=l(29985),i=l(80372),d=l(94049),c=l(25635),u=l(14913),p=l(57883),m=l(2300),x=l(89218),h=l(42063),f=l(17897);l(32098);var v=l(61033);let b=(0,a.h)("frontend/components/shared/PromptBuilder"),g=e=>{b.debug("Deserializing markdown to Slate value");let t=e.split("\n").map(e=>({type:"paragraph",children:(e=>{let t=(0,v.A$)(e);if(0===t.length)return[{text:e}];let l=[],r=0;for(let n of t)n.index>r&&l.push({text:e.slice(r,n.index)}),l.push({type:"binding-reference",kind:n.kind,server:n.server,name:n.name,children:[{text:""}]}),r=n.index+n.fullMatch.length;return r<e.length&&l.push({text:e.slice(r)}),l})(e)}));return t.length>0?t:[{type:"paragraph",children:[{text:""}]}]},y=e=>{b.debug("Serializing Slate value to markdown");let t=0,l=e.map(e=>e.children?e.children.map(e=>o.EY.isText(e)?e.text:"binding-reference"===e.type?(t++,(0,v.X8)(e.kind,e.server,e.name)):"").join(""):"").join("\n");return t>0&&b.debug("Serialized ".concat(t," binding references")),l},j=e=>{let{attributes:t,children:l,element:n}=e;return"binding-reference"===n.type?(0,r.jsxs)("span",{...t,className:"tool-reference-wrapper",children:[(0,r.jsx)(()=>{let e=(0,s.Zi)(),t=(e=>"tool"===e.kind&&"handoff"===e.server)(n),l="resource"===n.kind?"resource":t?"handoff":"",a=()=>{let t=s.rL.findPath(e,n);b.debug("Removing binding reference: ".concat(n.kind,":").concat(n.server,":").concat(n.name)),o.gB.removeNodes(e,{at:t})};return(0,r.jsxs)("span",{contentEditable:!1,className:"tool-reference-container ".concat(l),children:[(0,r.jsx)("span",{className:"tool-reference ".concat(l),children:(0,v.YP)(n)}),(0,r.jsx)("span",{className:"tool-reference-delete ".concat(l),role:"button",tabIndex:0,onClick:e=>{e.preventDefault(),e.stopPropagation(),a()},onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),e.stopPropagation(),a())},children:"\xd7"})]})},{}),l," "]}):(0,r.jsx)("p",{...t,children:l})},A=e=>{let{attributes:t,children:l,leaf:n}=e,a=l;return n.bold&&(a=(0,r.jsx)("strong",{children:a})),n.italic&&(a=(0,r.jsx)("em",{children:a})),n.code&&(a=(0,r.jsx)("code",{children:a})),(0,r.jsx)("span",{...t,children:a})},w=e=>{let{server:t,name:l}=e,a="handoff"===t,[o,s]=(0,n.useState)(null),[i,d]=(0,n.useState)(!0);return((0,n.useEffect)(()=>{let e=!1;return(async()=>{try{var r;d(!0);let n=null==(r=(await f.S.listServerTools(t)).tools)?void 0:r.find(e=>e.name===l);e||s(n||null)}catch(e){b.error("Failed to fetch tool info for ".concat(t,":").concat(l),e)}finally{e||d(!1)}})(),()=>{e=!0}},[t,l]),i)?(0,r.jsx)("span",{className:"tool-reference-preview loading ".concat(a?"handoff":""),children:"tool:".concat(t,"__").concat(l)}):o?(0,r.jsxs)("span",{className:"tool-reference-preview ".concat(a?"handoff":""),children:["[The user is referencing a ",a?"handoff":"tool"," `tool:",t,"__",l,"` (",o.description||"No description",")]"]}):(0,r.jsx)("span",{className:"tool-reference-preview not-found ".concat(a?"handoff":""),children:"tool:".concat(t,"__").concat(l," (Tool not found)")})},k=e=>{let{server:t,name:l}=e,[a,o]=(0,n.useState)(null),[s,i]=(0,n.useState)(!0);return((0,n.useEffect)(()=>{let e=!1;return(async()=>{try{i(!0);let r=await f.S.listServerResources(t),n=[...r.resources||[],...r.resourceTemplates||[]].find(e=>e.uri===l||e.uriTemplate===l);e||o((null==n?void 0:n.description)||(null==n?void 0:n.name)||null)}catch(e){b.error("Failed to fetch resource info for ".concat(t,":").concat(l),e)}finally{e||i(!1)}})(),()=>{e=!0}},[t,l]),s)?(0,r.jsx)("span",{className:"tool-reference-preview loading resource",children:"resource:".concat(t,"__").concat(l)}):(0,r.jsxs)("span",{className:"tool-reference-preview resource",children:["[The contents of resource `",l,"` from `",t,"`",a?" (".concat(a,")"):""," will be inserted here]"]})},C=e=>{let{binding:t}=e;return"resource"===t.kind?(0,r.jsx)(k,{server:t.server,name:t.name}):(0,r.jsx)(w,{server:t.server,name:t.name})},S=e=>{let{value:t}=e;b.debug("Rendering preview");let l=[],n=0;for(let e of(0,v.A$)(t))e.index>n&&l.push({type:"text",value:t.slice(n,e.index)}),l.push({type:"binding",binding:e,key:e.index}),n=e.index+e.fullMatch.length;n<t.length&&l.push({type:"text",value:t.slice(n)});let a=[],o=[],s=()=>{a.push((0,r.jsx)("p",{children:o},"p-".concat(a.length))),o=[]};for(let e of l)if("text"===e.type){let t=e.value.split("\n");for(let e=0;e<t.length;e++)o.push(t[e]),e<t.length-1&&s()}else o.push((0,r.jsx)(C,{binding:e.binding},"binding-".concat(e.key)));return o.length>0&&s(),(0,r.jsx)("div",{className:"preview-content",children:a})},N=(0,n.forwardRef)((e,t)=>{let{value:l,onChange:a,label:f="Prompt Builder",height:w=300,onModeChange:k,customPreviewRenderer:C}=e;b.info("PromptBuilder initialized");let N=(0,n.useMemo)(()=>{let e=(0,i.$k)((0,s.o$)((0,o.ie)())),{isInline:t,isVoid:l}=e;return e.isInline=e=>"binding-reference"===e.type||t(e),e.isVoid=e=>"binding-reference"===e.type||l(e),e},[]),[T,U]=(0,n.useState)("raw"),[M,I]=(0,n.useState)(()=>g(l||"")),P=(0,n.useRef)(!1),[,K]=(0,n.useState)(0);(0,n.useImperativeHandle)(t,()=>({insertText:e=>{b.info("insertText called with text length: ".concat(e.length));let t=(0,v.js)(e);if(t){b.info("Inserting ".concat(t.kind," reference: ").concat(t.server,":").concat(t.name));let e={type:"binding-reference",kind:t.kind,server:t.server,name:t.name,children:[{text:""}]};N.selection||o.gB.select(N,o.KE.end(N,[])),o.gB.insertNodes(N,e),o.gB.move(N),K(e=>e+1),I([...N.children])}else N.selection||o.gB.select(N,o.KE.end(N,[])),o.gB.insertText(N,e);a(y(N.children)),b.info("insertText completed successfully")},getMode:()=>T})),(0,n.useEffect)(()=>{y(M)!==y(g(l||""))&&(b.debug("External value change detected"),P.current=!0,I(g(l||"")))},[l,M]);let L=(0,n.useCallback)(e=>{if(P.current){P.current=!1;return}I(e),a(y(e))},[a]);return(0,r.jsxs)(d.default,{sx:{width:"100%",height:"100%",display:"flex",flexDirection:"column"},children:[f&&(0,r.jsx)(c.default,{variant:"subtitle1",gutterBottom:!0,sx:{fontWeight:"medium",mb:1},children:f}),(0,r.jsx)(d.default,{sx:{mb:1},children:(0,r.jsxs)(u.A,{value:T,exclusive:!0,onChange:(e,t)=>{null!==t&&(b.info("Mode changed from ".concat(T," to ").concat(t)),U(t),k&&k(t))},size:"small",children:[(0,r.jsxs)(p.A,{value:"raw",children:[(0,r.jsx)(x.A,{fontSize:"small",sx:{mr:.5}}),"Raw"]}),(0,r.jsxs)(p.A,{value:"preview",children:[(0,r.jsx)(h.A,{fontSize:"small",sx:{mr:.5}}),"Preview"]})]})}),(0,r.jsx)(m.A,{elevation:0,sx:{border:"1px solid rgba(0, 0, 0, 0.12)",borderRadius:1,overflow:"hidden",flexGrow:1,display:"flex",flexDirection:"column"},children:"raw"===T?(0,r.jsx)(d.default,{className:"slate-editor-container",sx:{height:"number"==typeof w?w:"100%",overflow:"auto",p:2},children:(0,r.jsx)(s.A,{editor:N,initialValue:M,onChange:L,children:(0,r.jsx)(s.Fo,{className:"slate-editor",renderElement:j,renderLeaf:A,placeholder:"Write your prompt here..."})})}):C?(0,r.jsx)(d.default,{className:"custom-preview-container",sx:{height:"number"==typeof w?w:"100%",overflow:"auto"},children:C()}):(0,r.jsx)(d.default,{className:"preview-container",sx:{height:"number"==typeof w?w:"100%",overflow:"auto",p:2},children:(0,r.jsx)(S,{value:l})})})]})});N.displayName="PromptBuilder";let T=N}},e=>{e.O(0,[1137,7926,2678,4754,9244,8548,1983,1871,2003,5501,488,3272,3077,9659,9451,3730,4749,3736,9164,812,8441,1255,7358],()=>e(e.s=67034)),_N_E=e.O()}]);