flujo-ai 3.38.0 → 3.40.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 (997) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +617 -433
  3. package/.next/app-path-routes-manifest.json +42 -26
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +90 -18
  6. package/.next/react-loadable-manifest.json +40 -47
  7. package/.next/routes-manifest.json +34 -0
  8. package/.next/server/app/_not-found/page.js +3 -4
  9. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  10. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  11. package/.next/server/app/_not-found.html +1 -1
  12. package/.next/server/app/_not-found.rsc +5 -5
  13. package/.next/server/app/api/approvals/[id]/route.js +1 -1
  14. package/.next/server/app/api/approvals/[id]/route.js.nft.json +1 -1
  15. package/.next/server/app/api/approvals/[id]/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/approvals/route.js +2 -2
  17. package/.next/server/app/api/approvals/route.js.nft.json +1 -1
  18. package/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/backup/route.js +1 -1
  20. package/.next/server/app/api/backup/route.js.nft.json +1 -1
  21. package/.next/server/app/api/backup/route_client-reference-manifest.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 +2 -2
  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_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/encryption/secure/route.js +1 -1
  28. package/.next/server/app/api/encryption/secure/route.js.nft.json +1 -1
  29. package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/env/route.js +2 -2
  31. package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/flow/[id]/convert-process-to-subflow/route.js +1 -0
  33. package/.next/server/app/api/flow/[id]/convert-process-to-subflow/route.js.nft.json +1 -0
  34. package/.next/server/app/api/flow/[id]/convert-process-to-subflow/route_client-reference-manifest.js +1 -0
  35. package/.next/server/app/api/flow/[id]/route.js +1 -1
  36. package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -1
  37. package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/flow/[id]/versions/[versionId]/route.js +1 -1
  39. package/.next/server/app/api/flow/[id]/versions/[versionId]/route.js.nft.json +1 -1
  40. package/.next/server/app/api/flow/[id]/versions/[versionId]/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/flow/[id]/versions/route.js +1 -1
  42. package/.next/server/app/api/flow/[id]/versions/route.js.nft.json +1 -1
  43. package/.next/server/app/api/flow/[id]/versions/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/flow/assist/route.js +1 -0
  45. package/.next/server/app/api/flow/assist/route.js.nft.json +1 -0
  46. package/.next/server/app/api/flow/assist/route_client-reference-manifest.js +1 -0
  47. package/.next/server/app/api/flow/compile/route.js +1 -1
  48. package/.next/server/app/api/flow/compile/route.js.nft.json +1 -1
  49. package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/flow/generate/route.js +1 -1
  51. package/.next/server/app/api/flow/generate/route.js.nft.json +1 -1
  52. package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/flow/generator/route.js +2 -2
  54. package/.next/server/app/api/flow/generator/route.js.nft.json +1 -1
  55. package/.next/server/app/api/flow/generator/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/flow/improve/route.js +1 -1
  57. package/.next/server/app/api/flow/improve/route.js.nft.json +1 -1
  58. package/.next/server/app/api/flow/improve/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/flow/prompt-renderer/route.js +2 -2
  60. package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
  61. package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/flow/quick-chat/route.js +1 -1
  63. package/.next/server/app/api/flow/quick-chat/route.js.nft.json +1 -1
  64. package/.next/server/app/api/flow/quick-chat/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/flow/repair/route.js +1 -1
  66. package/.next/server/app/api/flow/repair/route.js.nft.json +1 -1
  67. package/.next/server/app/api/flow/repair/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/flow/route.js +1 -1
  69. package/.next/server/app/api/flow/route.js.nft.json +1 -1
  70. package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/git/route.js +6 -6
  72. package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/init/route.js +1 -1
  74. package/.next/server/app/api/init/route.js.nft.json +1 -1
  75. package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/local-models/capability/route.js +1 -1
  77. package/.next/server/app/api/local-models/capability/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/local-models/pull/route.js +1 -1
  79. package/.next/server/app/api/local-models/pull/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/local-models/suggest/route.js +1 -1
  81. package/.next/server/app/api/local-models/suggest/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/mcp/app-sandbox/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/mcp/cancel/route.js +2 -2
  84. package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -1
  85. package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/mcp/flujo/authoring/route.js +1 -0
  87. package/.next/server/app/api/mcp/flujo/authoring/route.js.nft.json +1 -0
  88. package/.next/server/app/api/mcp/flujo/authoring/route_client-reference-manifest.js +1 -0
  89. package/.next/server/app/api/mcp/flujo/automation/route.js +1 -0
  90. package/.next/server/app/api/mcp/flujo/automation/route.js.nft.json +1 -0
  91. package/.next/server/app/api/mcp/flujo/automation/route_client-reference-manifest.js +1 -0
  92. package/.next/server/app/api/mcp/flujo/flows/route.js +1 -0
  93. package/.next/server/app/api/mcp/flujo/flows/route.js.nft.json +1 -0
  94. package/.next/server/app/api/mcp/flujo/flows/route_client-reference-manifest.js +1 -0
  95. package/.next/server/app/api/mcp/flujo/resources/read/route.js +1 -0
  96. package/.next/server/app/api/mcp/flujo/resources/read/route.js.nft.json +1 -0
  97. package/.next/server/app/api/mcp/flujo/resources/read/route_client-reference-manifest.js +1 -0
  98. package/.next/server/app/api/mcp/flujo/resources/route.js +1 -0
  99. package/.next/server/app/api/mcp/flujo/resources/route.js.nft.json +1 -0
  100. package/.next/server/app/api/mcp/flujo/resources/route_client-reference-manifest.js +1 -0
  101. package/.next/server/app/api/mcp/flujo/servers/route.js +1 -0
  102. package/.next/server/app/api/mcp/flujo/servers/route.js.nft.json +1 -0
  103. package/.next/server/app/api/mcp/flujo/servers/route_client-reference-manifest.js +1 -0
  104. package/.next/server/app/api/mcp/flujo/state/route.js +1 -0
  105. package/.next/server/app/api/mcp/flujo/state/route.js.nft.json +1 -0
  106. package/.next/server/app/api/mcp/flujo/state/route_client-reference-manifest.js +1 -0
  107. package/.next/server/app/api/mcp/flujo/tools/route.js +1 -0
  108. package/.next/server/app/api/mcp/flujo/tools/route.js.nft.json +1 -0
  109. package/.next/server/app/api/mcp/flujo/tools/route_client-reference-manifest.js +1 -0
  110. package/.next/server/app/api/mcp/oauth-capability/route.js +1 -1
  111. package/.next/server/app/api/mcp/oauth-capability/route.js.nft.json +1 -1
  112. package/.next/server/app/api/mcp/oauth-capability/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js +1 -1
  114. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -1
  115. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js +1 -1
  117. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -1
  118. package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js +1 -1
  120. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -1
  121. package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/mcp/servers/[name]/resources/route.js +1 -1
  123. package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -1
  124. package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/mcp/servers/[name]/route.js +1 -1
  126. package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -1
  127. package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/mcp/servers/[name]/status/route.js +1 -1
  129. package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -1
  130. package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js +1 -1
  132. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -1
  133. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/mcp/servers/[name]/tools/route.js +1 -1
  135. package/.next/server/app/api/mcp/servers/[name]/tools/route.js.nft.json +1 -1
  136. package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/mcp/servers/route.js +1 -1
  138. package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
  139. package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/mcp/test-connection/route.js +1 -1
  141. package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -1
  142. package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/mcp/test-connection/stream/route.js +1 -1
  144. package/.next/server/app/api/mcp/test-connection/stream/route.js.nft.json +1 -1
  145. package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
  146. package/.next/server/app/api/mcp-registry/route.js +2 -2
  147. package/.next/server/app/api/mcp-registry/route.js.nft.json +1 -1
  148. package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
  149. package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/api/model/[id]/route.js +1 -1
  151. package/.next/server/app/api/model/[id]/route.js.nft.json +1 -1
  152. package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/api/model/provider/route.js +2 -2
  154. package/.next/server/app/api/model/provider/route.js.nft.json +1 -1
  155. package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/api/model/route.js +1 -1
  157. package/.next/server/app/api/model/route.js.nft.json +1 -1
  158. package/.next/server/app/api/model/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/api/model/test/route.js +2 -2
  160. package/.next/server/app/api/model/test/route.js.nft.json +1 -1
  161. package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/api/oauth/callback/route.js +1 -1
  163. package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/api/oauth/initiate/route.js +1 -1
  165. package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/api/oauth/reset/route.js +2 -2
  167. package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -1
  168. package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/api/packages/build/route.js +1 -1
  170. package/.next/server/app/api/packages/build/route.js.nft.json +1 -1
  171. package/.next/server/app/api/packages/build/route_client-reference-manifest.js +1 -1
  172. package/.next/server/app/api/packages/derive-secrets/route.js +1 -1
  173. package/.next/server/app/api/packages/derive-secrets/route.js.nft.json +1 -1
  174. package/.next/server/app/api/packages/derive-secrets/route_client-reference-manifest.js +1 -1
  175. package/.next/server/app/api/packages/install/route.js +1 -1
  176. package/.next/server/app/api/packages/install/route.js.nft.json +1 -1
  177. package/.next/server/app/api/packages/install/route_client-reference-manifest.js +1 -1
  178. package/.next/server/app/api/packages/install/status/route.js +1 -1
  179. package/.next/server/app/api/packages/install/status/route.js.nft.json +1 -1
  180. package/.next/server/app/api/packages/install/status/route_client-reference-manifest.js +1 -1
  181. package/.next/server/app/api/packages/installed/route.js +1 -1
  182. package/.next/server/app/api/packages/installed/route.js.nft.json +1 -1
  183. package/.next/server/app/api/packages/installed/route_client-reference-manifest.js +1 -1
  184. package/.next/server/app/api/packages/resolve/route.js +1 -1
  185. package/.next/server/app/api/packages/resolve/route.js.nft.json +1 -1
  186. package/.next/server/app/api/packages/resolve/route_client-reference-manifest.js +1 -1
  187. package/.next/server/app/api/packages/scan-targets/route.js +1 -1
  188. package/.next/server/app/api/packages/scan-targets/route.js.nft.json +1 -1
  189. package/.next/server/app/api/packages/scan-targets/route_client-reference-manifest.js +1 -1
  190. package/.next/server/app/api/packages/search/route_client-reference-manifest.js +1 -1
  191. package/.next/server/app/api/packages/uninstall/route.js +1 -1
  192. package/.next/server/app/api/packages/uninstall/route.js.nft.json +1 -1
  193. package/.next/server/app/api/packages/uninstall/route_client-reference-manifest.js +1 -1
  194. package/.next/server/app/api/planned-executions/[id]/route.js +2 -2
  195. package/.next/server/app/api/planned-executions/[id]/route.js.nft.json +1 -1
  196. package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/api/planned-executions/[id]/run/route.js +2 -2
  198. package/.next/server/app/api/planned-executions/[id]/run/route.js.nft.json +1 -1
  199. package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/api/planned-executions/[id]/runs/route.js +2 -2
  201. package/.next/server/app/api/planned-executions/[id]/runs/route.js.nft.json +1 -1
  202. package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -1
  203. package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/api/planned-executions/reconcile/route.js +1 -1
  205. package/.next/server/app/api/planned-executions/reconcile/route.js.nft.json +1 -1
  206. package/.next/server/app/api/planned-executions/reconcile/route_client-reference-manifest.js +1 -1
  207. package/.next/server/app/api/planned-executions/route.js +1 -1
  208. package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
  209. package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/api/registry/auth/resend/route.js +1 -1
  211. package/.next/server/app/api/registry/auth/resend/route_client-reference-manifest.js +1 -1
  212. package/.next/server/app/api/registry/auth/reset/route.js +1 -1
  213. package/.next/server/app/api/registry/auth/reset/route_client-reference-manifest.js +1 -1
  214. package/.next/server/app/api/registry/auth/route.js +1 -1
  215. package/.next/server/app/api/registry/auth/route_client-reference-manifest.js +1 -1
  216. package/.next/server/app/api/registry/feedback/route_client-reference-manifest.js +1 -1
  217. package/.next/server/app/api/registry/oauth/callback/route.js +1 -1
  218. package/.next/server/app/api/registry/oauth/callback/route_client-reference-manifest.js +1 -1
  219. package/.next/server/app/api/registry/oauth/initiate/route.js +1 -1
  220. package/.next/server/app/api/registry/oauth/initiate/route_client-reference-manifest.js +1 -1
  221. package/.next/server/app/api/registry/packages/route.js +1 -1
  222. package/.next/server/app/api/registry/packages/route_client-reference-manifest.js +1 -1
  223. package/.next/server/app/api/registry/publish/route.js +1 -1
  224. package/.next/server/app/api/registry/publish/route_client-reference-manifest.js +1 -1
  225. package/.next/server/app/api/registry/settings/route.js +1 -1
  226. package/.next/server/app/api/registry/settings/route_client-reference-manifest.js +1 -1
  227. package/.next/server/app/api/restore/route.js +1 -1
  228. package/.next/server/app/api/restore/route.js.nft.json +1 -1
  229. package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
  230. package/.next/server/app/api/runs/active/route.js +2 -2
  231. package/.next/server/app/api/runs/active/route.js.nft.json +1 -1
  232. package/.next/server/app/api/runs/active/route_client-reference-manifest.js +1 -1
  233. package/.next/server/app/api/setup/ai-cli/route.js +3 -0
  234. package/.next/server/app/api/setup/ai-cli/route.js.nft.json +1 -0
  235. package/.next/server/app/api/setup/ai-cli/route_client-reference-manifest.js +1 -0
  236. package/.next/server/app/api/statistics/route.js +2 -0
  237. package/.next/server/app/api/statistics/route.js.nft.json +1 -0
  238. package/.next/server/app/api/statistics/route_client-reference-manifest.js +1 -0
  239. package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
  240. package/.next/server/app/api/telemetry/daily-active/route.js +1 -1
  241. package/.next/server/app/api/telemetry/daily-active/route_client-reference-manifest.js +1 -1
  242. package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  243. package/.next/server/app/api/waves/route.js +1 -1
  244. package/.next/server/app/api/waves/route.js.nft.json +1 -1
  245. package/.next/server/app/api/waves/route_client-reference-manifest.js +1 -1
  246. package/.next/server/app/api/webhooks/[id]/route.js +1 -1
  247. package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
  248. package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
  249. package/.next/server/app/automation/triggers/page.js +2 -0
  250. package/.next/server/app/automation/triggers/page.js.nft.json +1 -0
  251. package/.next/server/app/automation/triggers/page_client-reference-manifest.js +1 -0
  252. package/.next/server/app/automation/triggers.html +1 -0
  253. package/.next/server/app/automation/triggers.meta +7 -0
  254. package/.next/server/app/automation/triggers.rsc +23 -0
  255. package/.next/server/app/automation/waves/page.js +2 -0
  256. package/.next/server/app/automation/waves/page.js.nft.json +1 -0
  257. package/.next/server/app/automation/waves/page_client-reference-manifest.js +1 -0
  258. package/.next/server/app/automation/waves.html +1 -0
  259. package/.next/server/app/automation/waves.meta +7 -0
  260. package/.next/server/app/automation/waves.rsc +22 -0
  261. package/.next/server/app/chat/page.js +6 -58
  262. package/.next/server/app/chat/page.js.nft.json +1 -1
  263. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  264. package/.next/server/app/chat.html +1 -1
  265. package/.next/server/app/chat.rsc +7 -6
  266. package/.next/server/app/docs/page.js +3 -4
  267. package/.next/server/app/docs/page.js.nft.json +1 -1
  268. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  269. package/.next/server/app/docs.html +1 -1
  270. package/.next/server/app/docs.rsc +6 -6
  271. package/.next/server/app/executions/page.js +2 -3
  272. package/.next/server/app/executions/page.js.nft.json +1 -1
  273. package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
  274. package/.next/server/app/executions.html +1 -1
  275. package/.next/server/app/executions.rsc +7 -6
  276. package/.next/server/app/flows/page.js +3 -3
  277. package/.next/server/app/flows/page.js.nft.json +1 -1
  278. package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
  279. package/.next/server/app/flows.html +1 -1
  280. package/.next/server/app/flows.rsc +7 -7
  281. package/.next/server/app/index.html +1 -1
  282. package/.next/server/app/index.rsc +6 -6
  283. package/.next/server/app/mcp/page.js +6 -57
  284. package/.next/server/app/mcp/page.js.nft.json +1 -1
  285. package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
  286. package/.next/server/app/mcp-flows/route.js +2 -1
  287. package/.next/server/app/mcp-flows/route.js.nft.json +1 -1
  288. package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
  289. package/.next/server/app/mcp-proxy/[server]/route.js +2 -1
  290. package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -1
  291. package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
  292. package/.next/server/app/mcp.html +1 -1
  293. package/.next/server/app/mcp.rsc +7 -6
  294. package/.next/server/app/models/page.js +64 -2
  295. package/.next/server/app/models/page.js.nft.json +1 -1
  296. package/.next/server/app/models/page_client-reference-manifest.js +1 -1
  297. package/.next/server/app/packages/page.js +2 -2
  298. package/.next/server/app/packages/page.js.nft.json +1 -1
  299. package/.next/server/app/packages/page_client-reference-manifest.js +1 -1
  300. package/.next/server/app/packages.html +1 -1
  301. package/.next/server/app/packages.rsc +6 -6
  302. package/.next/server/app/page.js +3 -4
  303. package/.next/server/app/page.js.nft.json +1 -1
  304. package/.next/server/app/page_client-reference-manifest.js +1 -1
  305. package/.next/server/app/settings/page.js +2 -2
  306. package/.next/server/app/settings/page.js.nft.json +1 -1
  307. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  308. package/.next/server/app/settings.html +1 -1
  309. package/.next/server/app/settings.rsc +6 -6
  310. package/.next/server/app/statistics/page.js +54 -0
  311. package/.next/server/app/statistics/page.js.nft.json +1 -0
  312. package/.next/server/app/statistics/page_client-reference-manifest.js +1 -0
  313. package/.next/server/app/statistics.html +1 -0
  314. package/.next/server/app/statistics.meta +7 -0
  315. package/.next/server/app/statistics.rsc +22 -0
  316. package/.next/server/app/v1/chat/completions/route.js +1 -1
  317. package/.next/server/app/v1/chat/completions/route.js.nft.json +1 -1
  318. package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
  319. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +2 -2
  320. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -1
  321. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
  322. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +2 -2
  323. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -1
  324. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
  325. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -1
  326. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -1
  327. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
  328. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -1
  329. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -1
  330. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
  331. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +2 -2
  332. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -1
  333. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
  334. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +3 -3
  335. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -1
  336. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
  337. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js +2 -2
  338. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js.nft.json +1 -1
  339. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route_client-reference-manifest.js +1 -1
  340. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/[resourceId]/content/route.js +1 -1
  341. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/[resourceId]/content/route.js.nft.json +1 -1
  342. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/[resourceId]/content/route_client-reference-manifest.js +1 -1
  343. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route.js +1 -1
  344. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route.js.nft.json +1 -1
  345. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route_client-reference-manifest.js +1 -1
  346. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
  347. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
  348. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
  349. package/.next/server/app/v1/chat/conversations/[conversationId]/revert/route.js +2 -0
  350. package/.next/server/app/v1/chat/conversations/[conversationId]/revert/route.js.nft.json +1 -0
  351. package/.next/server/app/v1/chat/conversations/[conversationId]/revert/route_client-reference-manifest.js +1 -0
  352. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +2 -2
  353. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -1
  354. package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  355. package/.next/server/app/v1/chat/conversations/route.js +2 -2
  356. package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
  357. package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
  358. package/.next/server/app/v1/chat/events/route.js +6 -6
  359. package/.next/server/app/v1/chat/events/route.js.nft.json +1 -1
  360. package/.next/server/app/v1/chat/events/route_client-reference-manifest.js +1 -1
  361. package/.next/server/app/v1/models/route.js +2 -2
  362. package/.next/server/app/v1/models/route.js.nft.json +1 -1
  363. package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -1
  364. package/.next/server/app/waves/page.js +2 -4
  365. package/.next/server/app/waves/page.js.nft.json +1 -1
  366. package/.next/server/app/waves/page_client-reference-manifest.js +1 -1
  367. package/.next/server/app/waves.html +1 -1
  368. package/.next/server/app/waves.rsc +6 -6
  369. package/.next/server/app-paths-manifest.json +42 -26
  370. package/.next/server/chunks/1227.js +1 -1
  371. package/.next/server/chunks/1314.js +1 -1
  372. package/.next/server/chunks/1403.js +3 -0
  373. package/.next/server/chunks/{180.js → 1532.js} +1 -1
  374. package/.next/server/chunks/1539.js +1 -0
  375. package/.next/server/chunks/1662.js +2 -0
  376. package/.next/server/chunks/1805.js +1 -1
  377. package/.next/server/chunks/1925.js +1 -1
  378. package/.next/server/chunks/2069.js +1 -0
  379. package/.next/server/chunks/227.js +1 -1
  380. package/.next/server/chunks/2372.js +2 -2
  381. package/.next/server/chunks/2446.js +1 -0
  382. package/.next/server/chunks/2828.js +2 -0
  383. package/.next/server/chunks/2949.js +1 -0
  384. package/.next/server/chunks/{6034.js → 300.js} +15 -15
  385. package/.next/server/chunks/3032.js +29 -0
  386. package/.next/server/chunks/3206.js +2 -0
  387. package/.next/server/chunks/3262.js +90 -0
  388. package/.next/server/chunks/3418.js +1 -0
  389. package/.next/server/chunks/3945.js +10 -0
  390. package/.next/server/chunks/{6967.js → 3954.js} +3 -3
  391. package/.next/server/chunks/3963.js +6 -0
  392. package/.next/server/chunks/3991.js +2 -0
  393. package/.next/server/chunks/4265.js +1 -1
  394. package/.next/server/chunks/4306.js +1 -1
  395. package/.next/server/chunks/4671.js +1 -1
  396. package/.next/server/chunks/4681.js +1 -1
  397. package/.next/server/chunks/4771.js +2 -2
  398. package/.next/server/chunks/5096.js +1 -1
  399. package/.next/server/chunks/5141.js +2 -0
  400. package/.next/server/chunks/519.js +2 -2
  401. package/.next/server/chunks/5444.js +2 -0
  402. package/.next/server/chunks/5446.js +1 -0
  403. package/.next/server/chunks/{7058.js → 5494.js} +2 -2
  404. package/.next/server/chunks/558.js +1 -1
  405. package/.next/server/chunks/5591.js +1 -0
  406. package/.next/server/chunks/{3312.js → 5642.js} +1 -1
  407. package/.next/server/chunks/566.js +2 -0
  408. package/.next/server/chunks/5750.js +1 -0
  409. package/.next/server/chunks/{7519.js → 5807.js} +1 -1
  410. package/.next/server/chunks/5858.js +1 -0
  411. package/.next/server/chunks/5918.js +436 -0
  412. package/.next/server/chunks/5936.js +1 -0
  413. package/.next/server/chunks/6033.js +1 -0
  414. package/.next/server/chunks/6226.js +4 -4
  415. package/.next/server/chunks/6607.js +1 -0
  416. package/.next/server/chunks/6687.js +1 -0
  417. package/.next/server/chunks/701.js +2 -2
  418. package/.next/server/chunks/7031.js +1 -0
  419. package/.next/server/chunks/7147.js +1 -0
  420. package/.next/server/chunks/7480.js +2 -0
  421. package/.next/server/chunks/{8284.js → 7498.js} +2 -2
  422. package/.next/server/chunks/7506.js +2 -2
  423. package/.next/server/chunks/7508.js +5 -0
  424. package/.next/server/chunks/7628.js +1 -1
  425. package/.next/server/chunks/7630.js +1 -1
  426. package/.next/server/chunks/773.js +9 -0
  427. package/.next/server/chunks/7821.js +1 -1
  428. package/.next/server/chunks/7883.js +1 -0
  429. package/.next/server/chunks/7969.js +1 -1
  430. package/.next/server/chunks/8001.js +1 -1
  431. package/.next/server/chunks/8092.js +1 -1
  432. package/.next/server/chunks/8291.js +1 -0
  433. package/.next/server/chunks/8598.js +1 -0
  434. package/.next/server/chunks/8645.js +1 -1
  435. package/.next/server/chunks/{3489.js → 8730.js} +1 -1
  436. package/.next/server/chunks/8897.js +1 -0
  437. package/.next/server/chunks/8903.js +4 -0
  438. package/.next/server/chunks/8940.js +1 -0
  439. package/.next/server/chunks/9088.js +6 -0
  440. package/.next/server/chunks/9543.js +8 -0
  441. package/.next/server/chunks/9624.js +136 -0
  442. package/.next/server/functions-config-manifest.json +4 -3
  443. package/.next/server/instrumentation.js +1 -1
  444. package/.next/server/instrumentation.js.nft.json +1 -1
  445. package/.next/server/middleware-build-manifest.js +1 -1
  446. package/.next/server/middleware-manifest.json +1 -1
  447. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  448. package/.next/server/pages/404.html +1 -1
  449. package/.next/server/pages/500.html +1 -1
  450. package/.next/server/server-reference-manifest.js +1 -1
  451. package/.next/server/server-reference-manifest.json +1 -1
  452. package/.next/static/b1aMk0634gkkiunttd1SQ/_buildManifest.js +1 -0
  453. package/.next/static/chunks/1161-19176c3e7c655121.js +1 -0
  454. package/.next/static/chunks/1521-1c98c9a56726e053.js +1 -0
  455. package/.next/static/chunks/155-12f2a537db5dacec.js +1 -0
  456. package/.next/static/chunks/1576.bc6ae6c9e6d939d8.js +1 -0
  457. package/.next/static/chunks/1871-dd8c10ed9d37100b.js +1 -0
  458. package/.next/static/chunks/1983-242862b3dc022a26.js +1 -0
  459. package/.next/static/chunks/2005.300528b5119c2d38.js +1 -0
  460. package/.next/static/chunks/2141-dba0d13715fe1a28.js +1 -0
  461. package/.next/static/chunks/2498-4f7f5de1cac6feba.js +1 -0
  462. package/.next/static/chunks/2499-92cd97ce4993999f.js +1 -0
  463. package/.next/static/chunks/3272-42d1acae08d1ef0a.js +1 -0
  464. package/.next/static/chunks/3303-febfba58226aebed.js +1 -0
  465. package/.next/static/chunks/{361.bb75b03b740930cd.js → 361.51d642c530c84295.js} +1 -1
  466. package/.next/static/chunks/3731-64070760ae44448f.js +1 -0
  467. package/.next/static/chunks/3776.72638b35ce9bb874.js +1 -0
  468. package/.next/static/chunks/3816-807978463638bb71.js +1 -0
  469. package/.next/static/chunks/4122-d82fad8d1fca26d6.js +1 -0
  470. package/.next/static/chunks/4123-906362aeb986d6db.js +1 -0
  471. package/.next/static/chunks/4156-3823d1c89c4a7e3d.js +1 -0
  472. package/.next/static/chunks/{4555-c9070f8c79bccfad.js → 4483-00dc5c1b601ec898.js} +3 -3
  473. package/.next/static/chunks/4755-83df83d0dbd97483.js +1 -0
  474. package/.next/static/chunks/4814-31eb5f3b10c651c1.js +1 -0
  475. package/.next/static/chunks/4965.39e24b54c3c6ca58.js +1 -0
  476. package/.next/static/chunks/57-64bab7d5db89c9cc.js +1 -0
  477. package/.next/static/chunks/5954-dd2b25224f389fc0.js +1 -0
  478. package/.next/static/chunks/5962-8c59d06b3ee1c42a.js +1 -0
  479. package/.next/static/chunks/5967-59fde8c214c9ca9f.js +1 -0
  480. package/.next/static/chunks/6417.70056fe81ca21682.js +1 -0
  481. package/.next/static/chunks/6420-25dd04f98f3b34b8.js +1 -0
  482. package/.next/static/chunks/6547-2adc20e1ace927fc.js +1 -0
  483. package/.next/static/chunks/684-289a73150568def2.js +1 -0
  484. package/.next/static/chunks/7203-2704865539fa551d.js +1 -0
  485. package/.next/static/chunks/760-2ad13a61701630da.js +1 -0
  486. package/.next/static/chunks/7711-4b017720ec49c96d.js +1 -0
  487. package/.next/static/chunks/7758-42ab0b9cce1dc0e3.js +1 -0
  488. package/.next/static/chunks/8124-94140ee1dd8ed87c.js +1 -0
  489. package/.next/static/chunks/8135-5b975b9014f8920b.js +1 -0
  490. package/.next/static/chunks/{8198.cd0d3f8429c02862.js → 8198.a9cc35771b354b03.js} +1 -1
  491. package/.next/static/chunks/8326-4915403bc93459d2.js +1 -0
  492. package/.next/static/chunks/8529.b5a43e728bb5bb8a.js +1 -0
  493. package/.next/static/chunks/{6428-951188daa6f74b86.js → 8620-c9fa9d75cdc18a5e.js} +3 -3
  494. package/.next/static/chunks/8853-b80e50cbec6fd13c.js +1 -0
  495. package/.next/static/chunks/8862-0e37dd5488b21c77.js +1 -0
  496. package/.next/static/chunks/889-e64385ddb2259b1b.js +1 -0
  497. package/.next/static/chunks/9001-4c27a608feddb878.js +1 -0
  498. package/.next/static/chunks/9050-fcb7a0c89314acb4.js +1 -0
  499. package/.next/static/chunks/9053-283dd8d615f904a5.js +8 -0
  500. package/.next/static/chunks/9136-9c415453ec02519c.js +1 -0
  501. package/.next/static/chunks/9140.6502327a2c098d33.js +1 -0
  502. package/.next/static/chunks/9195-3c9c4300e7505d9e.js +1 -0
  503. package/.next/static/chunks/9524-b9d2c7e4426edd07.js +1 -0
  504. package/.next/static/chunks/9562-5494feecd8c6f7a3.js +1 -0
  505. package/.next/static/chunks/9611-190b55ade8b3af3c.js +1 -0
  506. package/.next/static/chunks/app/api/approvals/[id]/route-e70b5e2b4e09002b.js +1 -0
  507. package/.next/static/chunks/app/api/approvals/route-e70b5e2b4e09002b.js +1 -0
  508. package/.next/static/chunks/app/api/backup/route-e70b5e2b4e09002b.js +1 -0
  509. package/.next/static/chunks/app/api/browse/route-e70b5e2b4e09002b.js +1 -0
  510. package/.next/static/chunks/app/api/bugs/enhance/route-e70b5e2b4e09002b.js +1 -0
  511. package/.next/static/chunks/app/api/cwd/route-e70b5e2b4e09002b.js +1 -0
  512. package/.next/static/chunks/app/api/encryption/secure/route-e70b5e2b4e09002b.js +1 -0
  513. package/.next/static/chunks/app/api/env/route-e70b5e2b4e09002b.js +1 -0
  514. package/.next/static/chunks/app/api/flow/[id]/convert-process-to-subflow/route-e70b5e2b4e09002b.js +1 -0
  515. package/.next/static/chunks/app/api/flow/[id]/route-e70b5e2b4e09002b.js +1 -0
  516. package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-e70b5e2b4e09002b.js +1 -0
  517. package/.next/static/chunks/app/api/flow/[id]/versions/route-e70b5e2b4e09002b.js +1 -0
  518. package/.next/static/chunks/app/api/flow/assist/route-e70b5e2b4e09002b.js +1 -0
  519. package/.next/static/chunks/app/api/flow/compile/route-e70b5e2b4e09002b.js +1 -0
  520. package/.next/static/chunks/app/api/flow/generate/route-e70b5e2b4e09002b.js +1 -0
  521. package/.next/static/chunks/app/api/flow/generator/route-e70b5e2b4e09002b.js +1 -0
  522. package/.next/static/chunks/app/api/flow/improve/route-e70b5e2b4e09002b.js +1 -0
  523. package/.next/static/chunks/app/api/flow/prompt-renderer/route-e70b5e2b4e09002b.js +1 -0
  524. package/.next/static/chunks/app/api/flow/quick-chat/route-e70b5e2b4e09002b.js +1 -0
  525. package/.next/static/chunks/app/api/flow/repair/route-e70b5e2b4e09002b.js +1 -0
  526. package/.next/static/chunks/app/api/flow/route-e70b5e2b4e09002b.js +1 -0
  527. package/.next/static/chunks/app/api/git/route-e70b5e2b4e09002b.js +1 -0
  528. package/.next/static/chunks/app/api/init/route-e70b5e2b4e09002b.js +1 -0
  529. package/.next/static/chunks/app/api/local-models/capability/route-e70b5e2b4e09002b.js +1 -0
  530. package/.next/static/chunks/app/api/local-models/pull/route-e70b5e2b4e09002b.js +1 -0
  531. package/.next/static/chunks/app/api/local-models/suggest/route-e70b5e2b4e09002b.js +1 -0
  532. package/.next/static/chunks/app/api/mcp/app-sandbox/route-e70b5e2b4e09002b.js +1 -0
  533. package/.next/static/chunks/app/api/mcp/cancel/route-e70b5e2b4e09002b.js +1 -0
  534. package/.next/static/chunks/app/api/mcp/flujo/authoring/route-e70b5e2b4e09002b.js +1 -0
  535. package/.next/static/chunks/app/api/mcp/flujo/automation/route-e70b5e2b4e09002b.js +1 -0
  536. package/.next/static/chunks/app/api/mcp/flujo/flows/route-e70b5e2b4e09002b.js +1 -0
  537. package/.next/static/chunks/app/api/mcp/flujo/resources/read/route-e70b5e2b4e09002b.js +1 -0
  538. package/.next/static/chunks/app/api/mcp/flujo/resources/route-e70b5e2b4e09002b.js +1 -0
  539. package/.next/static/chunks/app/api/mcp/flujo/servers/route-e70b5e2b4e09002b.js +1 -0
  540. package/.next/static/chunks/app/api/mcp/flujo/state/route-e70b5e2b4e09002b.js +1 -0
  541. package/.next/static/chunks/app/api/mcp/flujo/tools/route-e70b5e2b4e09002b.js +1 -0
  542. package/.next/static/chunks/app/api/mcp/oauth-capability/route-e70b5e2b4e09002b.js +1 -0
  543. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-e70b5e2b4e09002b.js +1 -0
  544. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-e70b5e2b4e09002b.js +1 -0
  545. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-e70b5e2b4e09002b.js +1 -0
  546. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-e70b5e2b4e09002b.js +1 -0
  547. package/.next/static/chunks/app/api/mcp/servers/[name]/route-e70b5e2b4e09002b.js +1 -0
  548. package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-e70b5e2b4e09002b.js +1 -0
  549. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-e70b5e2b4e09002b.js +1 -0
  550. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-e70b5e2b4e09002b.js +1 -0
  551. package/.next/static/chunks/app/api/mcp/servers/route-e70b5e2b4e09002b.js +1 -0
  552. package/.next/static/chunks/app/api/mcp/test-connection/route-e70b5e2b4e09002b.js +1 -0
  553. package/.next/static/chunks/app/api/mcp/test-connection/stream/route-e70b5e2b4e09002b.js +1 -0
  554. package/.next/static/chunks/app/api/mcp-registry/route-e70b5e2b4e09002b.js +1 -0
  555. package/.next/static/chunks/app/api/mcp-registry/spotlight/route-e70b5e2b4e09002b.js +1 -0
  556. package/.next/static/chunks/app/api/model/[id]/route-e70b5e2b4e09002b.js +1 -0
  557. package/.next/static/chunks/app/api/model/provider/route-e70b5e2b4e09002b.js +1 -0
  558. package/.next/static/chunks/app/api/model/route-e70b5e2b4e09002b.js +1 -0
  559. package/.next/static/chunks/app/api/model/test/route-e70b5e2b4e09002b.js +1 -0
  560. package/.next/static/chunks/app/api/oauth/callback/route-e70b5e2b4e09002b.js +1 -0
  561. package/.next/static/chunks/app/api/oauth/initiate/route-e70b5e2b4e09002b.js +1 -0
  562. package/.next/static/chunks/app/api/oauth/reset/route-e70b5e2b4e09002b.js +1 -0
  563. package/.next/static/chunks/app/api/packages/build/route-e70b5e2b4e09002b.js +1 -0
  564. package/.next/static/chunks/app/api/packages/derive-secrets/route-e70b5e2b4e09002b.js +1 -0
  565. package/.next/static/chunks/app/api/packages/install/route-e70b5e2b4e09002b.js +1 -0
  566. package/.next/static/chunks/app/api/packages/install/status/route-e70b5e2b4e09002b.js +1 -0
  567. package/.next/static/chunks/app/api/packages/installed/route-e70b5e2b4e09002b.js +1 -0
  568. package/.next/static/chunks/app/api/packages/resolve/route-e70b5e2b4e09002b.js +1 -0
  569. package/.next/static/chunks/app/api/packages/scan-targets/route-e70b5e2b4e09002b.js +1 -0
  570. package/.next/static/chunks/app/api/packages/search/route-e70b5e2b4e09002b.js +1 -0
  571. package/.next/static/chunks/app/api/packages/uninstall/route-e70b5e2b4e09002b.js +1 -0
  572. package/.next/static/chunks/app/api/planned-executions/[id]/route-e70b5e2b4e09002b.js +1 -0
  573. package/.next/static/chunks/app/api/planned-executions/[id]/run/route-e70b5e2b4e09002b.js +1 -0
  574. package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-e70b5e2b4e09002b.js +1 -0
  575. package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-e70b5e2b4e09002b.js +1 -0
  576. package/.next/static/chunks/app/api/planned-executions/reconcile/route-e70b5e2b4e09002b.js +1 -0
  577. package/.next/static/chunks/app/api/planned-executions/route-e70b5e2b4e09002b.js +1 -0
  578. package/.next/static/chunks/app/api/registry/auth/resend/route-e70b5e2b4e09002b.js +1 -0
  579. package/.next/static/chunks/app/api/registry/auth/reset/route-e70b5e2b4e09002b.js +1 -0
  580. package/.next/static/chunks/app/api/registry/auth/route-e70b5e2b4e09002b.js +1 -0
  581. package/.next/static/chunks/app/api/registry/feedback/route-e70b5e2b4e09002b.js +1 -0
  582. package/.next/static/chunks/app/api/registry/oauth/callback/route-e70b5e2b4e09002b.js +1 -0
  583. package/.next/static/chunks/app/api/registry/oauth/initiate/route-e70b5e2b4e09002b.js +1 -0
  584. package/.next/static/chunks/app/api/registry/packages/route-e70b5e2b4e09002b.js +1 -0
  585. package/.next/static/chunks/app/api/registry/publish/route-e70b5e2b4e09002b.js +1 -0
  586. package/.next/static/chunks/app/api/registry/settings/route-e70b5e2b4e09002b.js +1 -0
  587. package/.next/static/chunks/app/api/restore/route-e70b5e2b4e09002b.js +1 -0
  588. package/.next/static/chunks/app/api/runs/active/route-e70b5e2b4e09002b.js +1 -0
  589. package/.next/static/chunks/app/api/setup/ai-cli/route-e70b5e2b4e09002b.js +1 -0
  590. package/.next/static/chunks/app/api/statistics/route-e70b5e2b4e09002b.js +1 -0
  591. package/.next/static/chunks/app/api/storage/route-e70b5e2b4e09002b.js +1 -0
  592. package/.next/static/chunks/app/api/telemetry/daily-active/route-e70b5e2b4e09002b.js +1 -0
  593. package/.next/static/chunks/app/api/update/route-e70b5e2b4e09002b.js +1 -0
  594. package/.next/static/chunks/app/api/waves/route-e70b5e2b4e09002b.js +1 -0
  595. package/.next/static/chunks/app/api/webhooks/[id]/route-e70b5e2b4e09002b.js +1 -0
  596. package/.next/static/chunks/app/automation/triggers/page-594a6294c58344bf.js +1 -0
  597. package/.next/static/chunks/app/automation/waves/page-ce2fef4996cad8e6.js +1 -0
  598. package/.next/static/chunks/app/chat/page-203cb7bf21638ada.js +1 -0
  599. package/.next/static/chunks/app/docs/page-c466a58caf5e3336.js +1 -0
  600. package/.next/static/chunks/app/executions/page-fcc848de86714386.js +1 -0
  601. package/.next/static/chunks/app/flows/page-172c759ca81ba02f.js +1 -0
  602. package/.next/static/chunks/app/layout-a6ca531683a518a7.js +1 -0
  603. package/.next/static/chunks/app/mcp/page-0a96e6b30e45b1e6.js +1 -0
  604. package/.next/static/chunks/app/mcp-flows/route-e70b5e2b4e09002b.js +1 -0
  605. package/.next/static/chunks/app/mcp-proxy/[server]/route-e70b5e2b4e09002b.js +1 -0
  606. package/.next/static/chunks/app/models/error-1964203c5c6e7d0e.js +1 -0
  607. package/.next/static/chunks/app/models/{loading-1687ae86584f5b1b.js → loading-0cdcf9bae7d3b8f3.js} +1 -1
  608. package/.next/static/chunks/app/models/page-ad1cbea6d3324966.js +1 -0
  609. package/.next/static/chunks/app/packages/page-dda48425be9fc137.js +1 -0
  610. package/.next/static/chunks/app/page-04189aa1b1318c2d.js +1 -0
  611. package/.next/static/chunks/app/settings/page-906c229c87011ead.js +1 -0
  612. package/.next/static/chunks/app/statistics/page-9b13a95549f438c0.js +1 -0
  613. package/.next/static/chunks/app/v1/chat/completions/route-e70b5e2b4e09002b.js +1 -0
  614. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-e70b5e2b4e09002b.js +1 -0
  615. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-e70b5e2b4e09002b.js +1 -0
  616. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-e70b5e2b4e09002b.js +1 -0
  617. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-e70b5e2b4e09002b.js +1 -0
  618. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-e70b5e2b4e09002b.js +1 -0
  619. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-e70b5e2b4e09002b.js +1 -0
  620. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/inject/route-e70b5e2b4e09002b.js +1 -0
  621. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/[resourceId]/content/route-e70b5e2b4e09002b.js +1 -0
  622. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-e70b5e2b4e09002b.js +1 -0
  623. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-e70b5e2b4e09002b.js +1 -0
  624. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/revert/route-e70b5e2b4e09002b.js +1 -0
  625. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-e70b5e2b4e09002b.js +1 -0
  626. package/.next/static/chunks/app/v1/chat/conversations/route-e70b5e2b4e09002b.js +1 -0
  627. package/.next/static/chunks/app/v1/chat/events/route-e70b5e2b4e09002b.js +1 -0
  628. package/.next/static/chunks/app/v1/models/route-e70b5e2b4e09002b.js +1 -0
  629. package/.next/static/chunks/app/waves/page-5b53af3eb9409414.js +1 -0
  630. package/.next/static/chunks/webpack-9fbd3587b9ef4dca.js +1 -0
  631. package/.next/static/css/400b1b927c3ffaf6.css +1 -0
  632. package/.next/static/css/82efa7d39b03a714.css +1 -0
  633. package/.next/trace +11 -10
  634. package/.next/types/app/api/flow/[id]/convert-process-to-subflow/route.ts +347 -0
  635. package/.next/types/app/api/flow/assist/route.ts +347 -0
  636. package/.next/types/app/api/mcp/flujo/authoring/route.ts +347 -0
  637. package/.next/types/app/api/mcp/flujo/automation/route.ts +347 -0
  638. package/.next/types/app/api/mcp/flujo/flows/route.ts +347 -0
  639. package/.next/types/app/api/mcp/flujo/resources/read/route.ts +347 -0
  640. package/.next/types/app/api/mcp/flujo/resources/route.ts +347 -0
  641. package/.next/types/app/api/mcp/flujo/servers/route.ts +347 -0
  642. package/.next/types/app/api/mcp/flujo/state/route.ts +347 -0
  643. package/.next/types/app/api/mcp/flujo/tools/route.ts +347 -0
  644. package/.next/types/app/api/setup/ai-cli/route.ts +347 -0
  645. package/.next/types/app/api/statistics/route.ts +347 -0
  646. package/.next/types/app/{layout.ts → automation/triggers/page.ts} +6 -6
  647. package/.next/types/app/{waves → automation/waves}/page.ts +3 -3
  648. package/.next/types/app/{executions → statistics}/page.ts +3 -3
  649. package/.next/types/app/v1/chat/conversations/[conversationId]/revert/route.ts +347 -0
  650. package/.next/types/routes.d.ts +18 -2
  651. package/.next/types/validator.ts +144 -0
  652. package/README.md +79 -52
  653. package/bin/flujo.mjs +42 -5
  654. package/mcp-servers/README.md +94 -0
  655. package/mcp-servers/bash/dist/index.d.ts +3 -0
  656. package/mcp-servers/bash/dist/index.js +85 -0
  657. package/mcp-servers/bash/dist/index.js.map +1 -0
  658. package/mcp-servers/bash/dist/resources.d.ts +13 -0
  659. package/mcp-servers/bash/dist/resources.js +298 -0
  660. package/mcp-servers/bash/dist/resources.js.map +1 -0
  661. package/mcp-servers/bash/dist/shared.d.ts +24 -0
  662. package/mcp-servers/bash/dist/shared.js +161 -0
  663. package/mcp-servers/bash/dist/shared.js.map +1 -0
  664. package/mcp-servers/bash/dist/tools.d.ts +59 -0
  665. package/mcp-servers/bash/dist/tools.js +1493 -0
  666. package/mcp-servers/bash/dist/tools.js.map +1 -0
  667. package/mcp-servers/bash/package.json +33 -0
  668. package/mcp-servers/browser/dist/index.d.ts +4 -0
  669. package/mcp-servers/browser/dist/index.js +34 -0
  670. package/mcp-servers/browser/dist/index.js.map +1 -0
  671. package/mcp-servers/browser/dist/resources.d.ts +6 -0
  672. package/mcp-servers/browser/dist/resources.js +78 -0
  673. package/mcp-servers/browser/dist/resources.js.map +1 -0
  674. package/mcp-servers/browser/dist/runtime.d.ts +26 -0
  675. package/mcp-servers/browser/dist/runtime.js +343 -0
  676. package/mcp-servers/browser/dist/runtime.js.map +1 -0
  677. package/mcp-servers/browser/dist/tools.d.ts +3 -0
  678. package/mcp-servers/browser/dist/tools.js +283 -0
  679. package/mcp-servers/browser/dist/tools.js.map +1 -0
  680. package/mcp-servers/browser/package.json +31 -0
  681. package/mcp-servers/filesystem/dist/index.d.ts +3 -0
  682. package/mcp-servers/filesystem/dist/index.js +56 -0
  683. package/mcp-servers/filesystem/dist/index.js.map +1 -0
  684. package/mcp-servers/filesystem/dist/resources.d.ts +49 -0
  685. package/{.next/server/chunks/9724.js → mcp-servers/filesystem/dist/resources.js} +592 -391
  686. package/mcp-servers/filesystem/dist/resources.js.map +1 -0
  687. package/mcp-servers/filesystem/dist/shared.d.ts +24 -0
  688. package/mcp-servers/filesystem/dist/shared.js +161 -0
  689. package/mcp-servers/filesystem/dist/shared.js.map +1 -0
  690. package/mcp-servers/filesystem/dist/tools.d.ts +3 -0
  691. package/mcp-servers/filesystem/dist/tools.js +1229 -0
  692. package/mcp-servers/filesystem/dist/tools.js.map +1 -0
  693. package/mcp-servers/filesystem/package.json +30 -0
  694. package/mcp-servers/flujo/dist/client.d.ts +12 -0
  695. package/mcp-servers/flujo/dist/client.js +144 -0
  696. package/mcp-servers/flujo/dist/client.js.map +1 -0
  697. package/mcp-servers/flujo/dist/index.d.ts +2 -0
  698. package/mcp-servers/flujo/dist/index.js +31 -0
  699. package/mcp-servers/flujo/dist/index.js.map +1 -0
  700. package/mcp-servers/flujo/package.json +29 -0
  701. package/mcp-servers/mcp-whatsapp-web/dist/auth/link-page.d.ts +11 -0
  702. package/mcp-servers/mcp-whatsapp-web/dist/auth/link-page.js +161 -0
  703. package/mcp-servers/mcp-whatsapp-web/dist/auth/link-page.js.map +1 -0
  704. package/mcp-servers/mcp-whatsapp-web/dist/auth/oauth-provider.d.ts +53 -0
  705. package/mcp-servers/mcp-whatsapp-web/dist/auth/oauth-provider.js +206 -0
  706. package/mcp-servers/mcp-whatsapp-web/dist/auth/oauth-provider.js.map +1 -0
  707. package/mcp-servers/mcp-whatsapp-web/dist/index.d.ts +2 -0
  708. package/mcp-servers/mcp-whatsapp-web/dist/index.js +128 -0
  709. package/mcp-servers/mcp-whatsapp-web/dist/index.js.map +1 -0
  710. package/mcp-servers/mcp-whatsapp-web/dist/server.d.ts +28 -0
  711. package/mcp-servers/mcp-whatsapp-web/dist/server.js +268 -0
  712. package/mcp-servers/mcp-whatsapp-web/dist/server.js.map +1 -0
  713. package/mcp-servers/mcp-whatsapp-web/dist/services/whatsapp.d.ts +149 -0
  714. package/mcp-servers/mcp-whatsapp-web/dist/services/whatsapp.js +818 -0
  715. package/mcp-servers/mcp-whatsapp-web/dist/services/whatsapp.js.map +1 -0
  716. package/mcp-servers/mcp-whatsapp-web/dist/tools/auth.d.ts +8 -0
  717. package/mcp-servers/mcp-whatsapp-web/dist/tools/auth.js +232 -0
  718. package/mcp-servers/mcp-whatsapp-web/dist/tools/auth.js.map +1 -0
  719. package/mcp-servers/mcp-whatsapp-web/dist/tools/chats.d.ts +3 -0
  720. package/mcp-servers/mcp-whatsapp-web/dist/tools/chats.js +90 -0
  721. package/mcp-servers/mcp-whatsapp-web/dist/tools/chats.js.map +1 -0
  722. package/mcp-servers/mcp-whatsapp-web/dist/tools/contacts.d.ts +3 -0
  723. package/mcp-servers/mcp-whatsapp-web/dist/tools/contacts.js +65 -0
  724. package/mcp-servers/mcp-whatsapp-web/dist/tools/contacts.js.map +1 -0
  725. package/mcp-servers/mcp-whatsapp-web/dist/tools/media.d.ts +3 -0
  726. package/mcp-servers/mcp-whatsapp-web/dist/tools/media.js +245 -0
  727. package/mcp-servers/mcp-whatsapp-web/dist/tools/media.js.map +1 -0
  728. package/mcp-servers/mcp-whatsapp-web/dist/tools/messages.d.ts +3 -0
  729. package/mcp-servers/mcp-whatsapp-web/dist/tools/messages.js +141 -0
  730. package/mcp-servers/mcp-whatsapp-web/dist/tools/messages.js.map +1 -0
  731. package/mcp-servers/mcp-whatsapp-web/dist/types/index.d.ts +1 -0
  732. package/mcp-servers/mcp-whatsapp-web/dist/types/index.js +3 -0
  733. package/mcp-servers/mcp-whatsapp-web/dist/types/index.js.map +1 -0
  734. package/mcp-servers/mcp-whatsapp-web/dist/types/whatsapp.d.ts +16 -0
  735. package/mcp-servers/mcp-whatsapp-web/dist/types/whatsapp.js +5 -0
  736. package/mcp-servers/mcp-whatsapp-web/dist/types/whatsapp.js.map +1 -0
  737. package/mcp-servers/mcp-whatsapp-web/dist/utils/audio.d.ts +23 -0
  738. package/mcp-servers/mcp-whatsapp-web/dist/utils/audio.js +99 -0
  739. package/mcp-servers/mcp-whatsapp-web/dist/utils/audio.js.map +1 -0
  740. package/mcp-servers/mcp-whatsapp-web/dist/utils/browser-finder.d.ts +12 -0
  741. package/mcp-servers/mcp-whatsapp-web/dist/utils/browser-finder.js +72 -0
  742. package/mcp-servers/mcp-whatsapp-web/dist/utils/browser-finder.js.map +1 -0
  743. package/mcp-servers/mcp-whatsapp-web/dist/utils/browser-process-manager.d.ts +84 -0
  744. package/mcp-servers/mcp-whatsapp-web/dist/utils/browser-process-manager.js +297 -0
  745. package/mcp-servers/mcp-whatsapp-web/dist/utils/browser-process-manager.js.map +1 -0
  746. package/mcp-servers/mcp-whatsapp-web/dist/utils/cleanup-browsers.d.ts +12 -0
  747. package/mcp-servers/mcp-whatsapp-web/dist/utils/cleanup-browsers.js +141 -0
  748. package/mcp-servers/mcp-whatsapp-web/dist/utils/cleanup-browsers.js.map +1 -0
  749. package/mcp-servers/mcp-whatsapp-web/dist/utils/logger.d.ts +2 -0
  750. package/mcp-servers/mcp-whatsapp-web/dist/utils/logger.js +69 -0
  751. package/mcp-servers/mcp-whatsapp-web/dist/utils/logger.js.map +1 -0
  752. package/mcp-servers/mcp-whatsapp-web/package.json +75 -0
  753. package/mcp-servers/mcp-windows-desktop-automation/dist/index.d.ts +8 -0
  754. package/mcp-servers/mcp-windows-desktop-automation/dist/index.js +95 -0
  755. package/mcp-servers/mcp-windows-desktop-automation/dist/index.js.map +1 -0
  756. package/mcp-servers/mcp-windows-desktop-automation/dist/prompts/index.d.ts +8 -0
  757. package/mcp-servers/mcp-windows-desktop-automation/dist/prompts/index.js +195 -0
  758. package/mcp-servers/mcp-windows-desktop-automation/dist/prompts/index.js.map +1 -0
  759. package/mcp-servers/mcp-windows-desktop-automation/dist/resources/index.d.ts +8 -0
  760. package/mcp-servers/mcp-windows-desktop-automation/dist/resources/index.js +214 -0
  761. package/mcp-servers/mcp-windows-desktop-automation/dist/resources/index.js.map +1 -0
  762. package/mcp-servers/mcp-windows-desktop-automation/dist/server/server.d.ts +21 -0
  763. package/mcp-servers/mcp-windows-desktop-automation/dist/server/server.js +108 -0
  764. package/mcp-servers/mcp-windows-desktop-automation/dist/server/server.js.map +1 -0
  765. package/mcp-servers/mcp-windows-desktop-automation/dist/tools/control.d.ts +8 -0
  766. package/mcp-servers/mcp-windows-desktop-automation/dist/tools/control.js +301 -0
  767. package/mcp-servers/mcp-windows-desktop-automation/dist/tools/control.js.map +1 -0
  768. package/mcp-servers/mcp-windows-desktop-automation/dist/tools/index.d.ts +8 -0
  769. package/mcp-servers/mcp-windows-desktop-automation/dist/tools/index.js +22 -0
  770. package/mcp-servers/mcp-windows-desktop-automation/dist/tools/index.js.map +1 -0
  771. package/mcp-servers/mcp-windows-desktop-automation/dist/tools/keyboard.d.ts +8 -0
  772. package/mcp-servers/mcp-windows-desktop-automation/dist/tools/keyboard.js +146 -0
  773. package/mcp-servers/mcp-windows-desktop-automation/dist/tools/keyboard.js.map +1 -0
  774. package/mcp-servers/mcp-windows-desktop-automation/dist/tools/mouse.d.ts +8 -0
  775. package/mcp-servers/mcp-windows-desktop-automation/dist/tools/mouse.js +179 -0
  776. package/mcp-servers/mcp-windows-desktop-automation/dist/tools/mouse.js.map +1 -0
  777. package/mcp-servers/mcp-windows-desktop-automation/dist/tools/process.d.ts +8 -0
  778. package/mcp-servers/mcp-windows-desktop-automation/dist/tools/process.js +236 -0
  779. package/mcp-servers/mcp-windows-desktop-automation/dist/tools/process.js.map +1 -0
  780. package/mcp-servers/mcp-windows-desktop-automation/dist/tools/window.d.ts +8 -0
  781. package/mcp-servers/mcp-windows-desktop-automation/dist/tools/window.js +300 -0
  782. package/mcp-servers/mcp-windows-desktop-automation/dist/tools/window.js.map +1 -0
  783. package/mcp-servers/mcp-windows-desktop-automation/dist/utils/logger/logger.d.ts +50 -0
  784. package/mcp-servers/mcp-windows-desktop-automation/dist/utils/logger/logger.js +78 -0
  785. package/mcp-servers/mcp-windows-desktop-automation/dist/utils/logger/logger.js.map +1 -0
  786. package/mcp-servers/mcp-windows-desktop-automation/dist/utils/types.d.ts +51 -0
  787. package/mcp-servers/mcp-windows-desktop-automation/dist/utils/types.js +61 -0
  788. package/mcp-servers/mcp-windows-desktop-automation/dist/utils/types.js.map +1 -0
  789. package/mcp-servers/mcp-windows-desktop-automation/package.json +38 -0
  790. package/mcp-servers/patchright-mcp/package.json +32 -0
  791. package/mcp-servers/reddit-mcp-server/package.json +88 -0
  792. package/mcp-servers/servers/package.json +31 -0
  793. package/mcp-servers/shared/dist/index.d.ts +24 -0
  794. package/mcp-servers/shared/dist/index.js +161 -0
  795. package/mcp-servers/shared/dist/index.js.map +1 -0
  796. package/mcp-servers/shared/package.json +26 -0
  797. package/package.json +119 -99
  798. package/scripts/launch-next.mjs +13 -1
  799. package/.next/server/chunks/1114.js +0 -1
  800. package/.next/server/chunks/1439.js +0 -1
  801. package/.next/server/chunks/1578.js +0 -5
  802. package/.next/server/chunks/1634.js +0 -1
  803. package/.next/server/chunks/166.js +0 -5
  804. package/.next/server/chunks/1664.js +0 -2
  805. package/.next/server/chunks/1690.js +0 -1
  806. package/.next/server/chunks/2859.js +0 -1
  807. package/.next/server/chunks/3629.js +0 -1
  808. package/.next/server/chunks/3653.js +0 -2
  809. package/.next/server/chunks/366.js +0 -2
  810. package/.next/server/chunks/3717.js +0 -1
  811. package/.next/server/chunks/3935.js +0 -4
  812. package/.next/server/chunks/3984.js +0 -9
  813. package/.next/server/chunks/4013.js +0 -1
  814. package/.next/server/chunks/4436.js +0 -1
  815. package/.next/server/chunks/4466.js +0 -1
  816. package/.next/server/chunks/4551.js +0 -6
  817. package/.next/server/chunks/4663.js +0 -1
  818. package/.next/server/chunks/4822.js +0 -1
  819. package/.next/server/chunks/5200.js +0 -1
  820. package/.next/server/chunks/5285.js +0 -1
  821. package/.next/server/chunks/5309.js +0 -78
  822. package/.next/server/chunks/544.js +0 -136
  823. package/.next/server/chunks/5463.js +0 -1
  824. package/.next/server/chunks/5544.js +0 -5
  825. package/.next/server/chunks/5880.js +0 -1
  826. package/.next/server/chunks/6747.js +0 -435
  827. package/.next/server/chunks/6793.js +0 -1
  828. package/.next/server/chunks/7069.js +0 -6
  829. package/.next/server/chunks/7104.js +0 -1
  830. package/.next/server/chunks/7634.js +0 -4
  831. package/.next/server/chunks/793.js +0 -403
  832. package/.next/server/chunks/7965.js +0 -39
  833. package/.next/server/chunks/7993.js +0 -2
  834. package/.next/server/chunks/8356.js +0 -1
  835. package/.next/server/chunks/8387.js +0 -1
  836. package/.next/server/chunks/87.js +0 -1
  837. package/.next/server/chunks/9085.js +0 -2
  838. package/.next/server/chunks/9174.js +0 -1
  839. package/.next/server/chunks/9235.js +0 -29
  840. package/.next/server/chunks/94.js +0 -1
  841. package/.next/server/chunks/9983.js +0 -2
  842. package/.next/static/chunks/1871-14c3e63ca865d85e.js +0 -1
  843. package/.next/static/chunks/2003-f826c607d609d1fa.js +0 -1
  844. package/.next/static/chunks/2005.4eea65c00d9a29cd.js +0 -1
  845. package/.next/static/chunks/2318-13ef0d3048e97834.js +0 -1
  846. package/.next/static/chunks/3077-565833c67440a7fa.js +0 -1
  847. package/.next/static/chunks/3217.260785c2198d1e9d.js +0 -1
  848. package/.next/static/chunks/3272-fd8d59523f61da96.js +0 -1
  849. package/.next/static/chunks/3429-34fb1a84aed96703.js +0 -1
  850. package/.next/static/chunks/3545.353a62a68d3b7fd1.js +0 -1
  851. package/.next/static/chunks/3659-0ab9580d5ee5deea.js +0 -1
  852. package/.next/static/chunks/3772-20197853c04a6993.js +0 -1
  853. package/.next/static/chunks/422-61b173ba64cf0c94.js +0 -1
  854. package/.next/static/chunks/4523-a540747aa2ed34e8.js +0 -1
  855. package/.next/static/chunks/454.5fc2f8eef98483e3.js +0 -1
  856. package/.next/static/chunks/488-7ab54d8ae2b4b550.js +0 -1
  857. package/.next/static/chunks/4919-6c8a48e3cc642349.js +0 -1
  858. package/.next/static/chunks/4929-150b03595474c9d8.js +0 -1
  859. package/.next/static/chunks/5733-1419095a28c1ddc3.js +0 -1
  860. package/.next/static/chunks/639-90ed75d402dc872b.js +0 -1
  861. package/.next/static/chunks/6404-86615a5f5ce5c00f.js +0 -1
  862. package/.next/static/chunks/6430-8c6dac4a758119f2.js +0 -1
  863. package/.next/static/chunks/6539-118a0084e0bfae34.js +0 -1
  864. package/.next/static/chunks/7264-91d1fa99abcd91ad.js +0 -1
  865. package/.next/static/chunks/7328-c8a51bb8c7470d77.js +0 -1
  866. package/.next/static/chunks/7391-5a0abd837ba241f5.js +0 -1
  867. package/.next/static/chunks/7445-d8a8be6e451c522e.js +0 -1
  868. package/.next/static/chunks/7561-2b366ddcbc3cc0ec.js +0 -1
  869. package/.next/static/chunks/8124-4a80e3201b8e51b0.js +0 -1
  870. package/.next/static/chunks/8345.bc5534ec13abc9ee.js +0 -1
  871. package/.next/static/chunks/8404-5aa8ea49197b98b8.js +0 -1
  872. package/.next/static/chunks/8405.a425f94b6b13d2be.js +0 -1
  873. package/.next/static/chunks/8470-72cf748472d4d501.js +0 -1
  874. package/.next/static/chunks/8551-a28272acfda62ac9.js +0 -1
  875. package/.next/static/chunks/8650-f879564a0ed89bc3.js +0 -1
  876. package/.next/static/chunks/8989-5fa9c7c670eb9a1a.js +0 -1
  877. package/.next/static/chunks/9164-de1d167d87614a6d.js +0 -1
  878. package/.next/static/chunks/9195.294887f083b1a11b.js +0 -1
  879. package/.next/static/chunks/9203-786f457ecf60b49c.js +0 -1
  880. package/.next/static/chunks/9244-3281f7fd02003a2c.js +0 -1
  881. package/.next/static/chunks/9345-11d6e48d892b1862.js +0 -8
  882. package/.next/static/chunks/9562-f8371be653010627.js +0 -1
  883. package/.next/static/chunks/9581-6d2523fd68a5e3c4.js +0 -1
  884. package/.next/static/chunks/9611-9867e6e8e65172ec.js +0 -1
  885. package/.next/static/chunks/9951-566fc6b05c12209e.js +0 -1
  886. package/.next/static/chunks/app/api/approvals/[id]/route-b9c783850b4c2acf.js +0 -1
  887. package/.next/static/chunks/app/api/approvals/route-b9c783850b4c2acf.js +0 -1
  888. package/.next/static/chunks/app/api/backup/route-b9c783850b4c2acf.js +0 -1
  889. package/.next/static/chunks/app/api/browse/route-b9c783850b4c2acf.js +0 -1
  890. package/.next/static/chunks/app/api/bugs/enhance/route-b9c783850b4c2acf.js +0 -1
  891. package/.next/static/chunks/app/api/cwd/route-b9c783850b4c2acf.js +0 -1
  892. package/.next/static/chunks/app/api/encryption/secure/route-b9c783850b4c2acf.js +0 -1
  893. package/.next/static/chunks/app/api/env/route-b9c783850b4c2acf.js +0 -1
  894. package/.next/static/chunks/app/api/flow/[id]/route-b9c783850b4c2acf.js +0 -1
  895. package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-b9c783850b4c2acf.js +0 -1
  896. package/.next/static/chunks/app/api/flow/[id]/versions/route-b9c783850b4c2acf.js +0 -1
  897. package/.next/static/chunks/app/api/flow/compile/route-b9c783850b4c2acf.js +0 -1
  898. package/.next/static/chunks/app/api/flow/generate/route-b9c783850b4c2acf.js +0 -1
  899. package/.next/static/chunks/app/api/flow/generator/route-b9c783850b4c2acf.js +0 -1
  900. package/.next/static/chunks/app/api/flow/improve/route-b9c783850b4c2acf.js +0 -1
  901. package/.next/static/chunks/app/api/flow/prompt-renderer/route-b9c783850b4c2acf.js +0 -1
  902. package/.next/static/chunks/app/api/flow/quick-chat/route-b9c783850b4c2acf.js +0 -1
  903. package/.next/static/chunks/app/api/flow/repair/route-b9c783850b4c2acf.js +0 -1
  904. package/.next/static/chunks/app/api/flow/route-b9c783850b4c2acf.js +0 -1
  905. package/.next/static/chunks/app/api/git/route-b9c783850b4c2acf.js +0 -1
  906. package/.next/static/chunks/app/api/init/route-b9c783850b4c2acf.js +0 -1
  907. package/.next/static/chunks/app/api/local-models/capability/route-b9c783850b4c2acf.js +0 -1
  908. package/.next/static/chunks/app/api/local-models/pull/route-b9c783850b4c2acf.js +0 -1
  909. package/.next/static/chunks/app/api/local-models/suggest/route-b9c783850b4c2acf.js +0 -1
  910. package/.next/static/chunks/app/api/mcp/app-sandbox/route-b9c783850b4c2acf.js +0 -1
  911. package/.next/static/chunks/app/api/mcp/cancel/route-b9c783850b4c2acf.js +0 -1
  912. package/.next/static/chunks/app/api/mcp/oauth-capability/route-b9c783850b4c2acf.js +0 -1
  913. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-b9c783850b4c2acf.js +0 -1
  914. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-b9c783850b4c2acf.js +0 -1
  915. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-b9c783850b4c2acf.js +0 -1
  916. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-b9c783850b4c2acf.js +0 -1
  917. package/.next/static/chunks/app/api/mcp/servers/[name]/route-b9c783850b4c2acf.js +0 -1
  918. package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-b9c783850b4c2acf.js +0 -1
  919. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-b9c783850b4c2acf.js +0 -1
  920. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-b9c783850b4c2acf.js +0 -1
  921. package/.next/static/chunks/app/api/mcp/servers/route-b9c783850b4c2acf.js +0 -1
  922. package/.next/static/chunks/app/api/mcp/test-connection/route-b9c783850b4c2acf.js +0 -1
  923. package/.next/static/chunks/app/api/mcp/test-connection/stream/route-b9c783850b4c2acf.js +0 -1
  924. package/.next/static/chunks/app/api/mcp-registry/route-b9c783850b4c2acf.js +0 -1
  925. package/.next/static/chunks/app/api/mcp-registry/spotlight/route-b9c783850b4c2acf.js +0 -1
  926. package/.next/static/chunks/app/api/model/[id]/route-b9c783850b4c2acf.js +0 -1
  927. package/.next/static/chunks/app/api/model/provider/route-b9c783850b4c2acf.js +0 -1
  928. package/.next/static/chunks/app/api/model/route-b9c783850b4c2acf.js +0 -1
  929. package/.next/static/chunks/app/api/model/test/route-b9c783850b4c2acf.js +0 -1
  930. package/.next/static/chunks/app/api/oauth/callback/route-b9c783850b4c2acf.js +0 -1
  931. package/.next/static/chunks/app/api/oauth/initiate/route-b9c783850b4c2acf.js +0 -1
  932. package/.next/static/chunks/app/api/oauth/reset/route-b9c783850b4c2acf.js +0 -1
  933. package/.next/static/chunks/app/api/packages/build/route-b9c783850b4c2acf.js +0 -1
  934. package/.next/static/chunks/app/api/packages/derive-secrets/route-b9c783850b4c2acf.js +0 -1
  935. package/.next/static/chunks/app/api/packages/install/route-b9c783850b4c2acf.js +0 -1
  936. package/.next/static/chunks/app/api/packages/install/status/route-b9c783850b4c2acf.js +0 -1
  937. package/.next/static/chunks/app/api/packages/installed/route-b9c783850b4c2acf.js +0 -1
  938. package/.next/static/chunks/app/api/packages/resolve/route-b9c783850b4c2acf.js +0 -1
  939. package/.next/static/chunks/app/api/packages/scan-targets/route-b9c783850b4c2acf.js +0 -1
  940. package/.next/static/chunks/app/api/packages/search/route-b9c783850b4c2acf.js +0 -1
  941. package/.next/static/chunks/app/api/packages/uninstall/route-b9c783850b4c2acf.js +0 -1
  942. package/.next/static/chunks/app/api/planned-executions/[id]/route-b9c783850b4c2acf.js +0 -1
  943. package/.next/static/chunks/app/api/planned-executions/[id]/run/route-b9c783850b4c2acf.js +0 -1
  944. package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-b9c783850b4c2acf.js +0 -1
  945. package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-b9c783850b4c2acf.js +0 -1
  946. package/.next/static/chunks/app/api/planned-executions/reconcile/route-b9c783850b4c2acf.js +0 -1
  947. package/.next/static/chunks/app/api/planned-executions/route-b9c783850b4c2acf.js +0 -1
  948. package/.next/static/chunks/app/api/registry/auth/resend/route-b9c783850b4c2acf.js +0 -1
  949. package/.next/static/chunks/app/api/registry/auth/reset/route-b9c783850b4c2acf.js +0 -1
  950. package/.next/static/chunks/app/api/registry/auth/route-b9c783850b4c2acf.js +0 -1
  951. package/.next/static/chunks/app/api/registry/feedback/route-b9c783850b4c2acf.js +0 -1
  952. package/.next/static/chunks/app/api/registry/oauth/callback/route-b9c783850b4c2acf.js +0 -1
  953. package/.next/static/chunks/app/api/registry/oauth/initiate/route-b9c783850b4c2acf.js +0 -1
  954. package/.next/static/chunks/app/api/registry/packages/route-b9c783850b4c2acf.js +0 -1
  955. package/.next/static/chunks/app/api/registry/publish/route-b9c783850b4c2acf.js +0 -1
  956. package/.next/static/chunks/app/api/registry/settings/route-b9c783850b4c2acf.js +0 -1
  957. package/.next/static/chunks/app/api/restore/route-b9c783850b4c2acf.js +0 -1
  958. package/.next/static/chunks/app/api/runs/active/route-b9c783850b4c2acf.js +0 -1
  959. package/.next/static/chunks/app/api/storage/route-b9c783850b4c2acf.js +0 -1
  960. package/.next/static/chunks/app/api/telemetry/daily-active/route-b9c783850b4c2acf.js +0 -1
  961. package/.next/static/chunks/app/api/update/route-b9c783850b4c2acf.js +0 -1
  962. package/.next/static/chunks/app/api/waves/route-b9c783850b4c2acf.js +0 -1
  963. package/.next/static/chunks/app/api/webhooks/[id]/route-b9c783850b4c2acf.js +0 -1
  964. package/.next/static/chunks/app/chat/page-e37bbc561f40ce60.js +0 -1
  965. package/.next/static/chunks/app/docs/page-3b9ce48854b2147d.js +0 -1
  966. package/.next/static/chunks/app/executions/page-8296fd69c439ccee.js +0 -1
  967. package/.next/static/chunks/app/flows/page-e52c8943555e38dd.js +0 -1
  968. package/.next/static/chunks/app/layout-abed1f211e03152f.js +0 -1
  969. package/.next/static/chunks/app/mcp/page-4a3e5a643d84ee89.js +0 -1
  970. package/.next/static/chunks/app/mcp-flows/route-b9c783850b4c2acf.js +0 -1
  971. package/.next/static/chunks/app/mcp-proxy/[server]/route-b9c783850b4c2acf.js +0 -1
  972. package/.next/static/chunks/app/models/error-1718b538d6967e56.js +0 -1
  973. package/.next/static/chunks/app/models/page-595597042e227970.js +0 -1
  974. package/.next/static/chunks/app/packages/page-2f2d29c17841b3cf.js +0 -1
  975. package/.next/static/chunks/app/page-2f9da78a4891731a.js +0 -1
  976. package/.next/static/chunks/app/settings/page-f35e939032b0277d.js +0 -1
  977. package/.next/static/chunks/app/v1/chat/completions/route-b9c783850b4c2acf.js +0 -1
  978. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-b9c783850b4c2acf.js +0 -1
  979. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-b9c783850b4c2acf.js +0 -1
  980. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-b9c783850b4c2acf.js +0 -1
  981. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-b9c783850b4c2acf.js +0 -1
  982. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-b9c783850b4c2acf.js +0 -1
  983. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-b9c783850b4c2acf.js +0 -1
  984. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/inject/route-b9c783850b4c2acf.js +0 -1
  985. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/[resourceId]/content/route-b9c783850b4c2acf.js +0 -1
  986. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-b9c783850b4c2acf.js +0 -1
  987. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-b9c783850b4c2acf.js +0 -1
  988. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-b9c783850b4c2acf.js +0 -1
  989. package/.next/static/chunks/app/v1/chat/conversations/route-b9c783850b4c2acf.js +0 -1
  990. package/.next/static/chunks/app/v1/chat/events/route-b9c783850b4c2acf.js +0 -1
  991. package/.next/static/chunks/app/v1/models/route-b9c783850b4c2acf.js +0 -1
  992. package/.next/static/chunks/app/waves/page-dc99a16141dd902b.js +0 -1
  993. package/.next/static/chunks/webpack-9d09d53b271f49e2.js +0 -1
  994. package/.next/static/css/30253fcfa8035221.css +0 -1
  995. package/.next/static/css/69ab44eb350e0b6c.css +0 -1
  996. package/.next/static/kIFnN4S0HHOnvpPGsSzi9/_buildManifest.js +0 -1
  997. /package/.next/static/{kIFnN4S0HHOnvpPGsSzi9 → b1aMk0634gkkiunttd1SQ}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9034],{2226:(e,t,r)=>{"use strict";r.d(t,{Dp:()=>l,Dg:()=>u}),r(12115);var n=r(33065),s=r(95695),o=r(50361),a=r(46892),i=r(95155);let c=function(e){return(0,i.jsx)(s.A,{...e,defaultTheme:o.A,themeId:a.A})};function l(e){return function(t){return(0,i.jsx)(c,{styles:"function"==typeof e?r=>e({theme:r,...t}):e})}}function u(){return n.A}},4474:(e,t,r)=>{"use strict";r.d(t,{default:()=>w});var n=r(3648),s=r(12115),o=r(2821),a=r(57001),i=r(10225),c=r(48116),l=r(66964),u=r(16625),f=r(81852),d=r(74798),y=r(85795),p=r(95195);function m(e){return(0,p.Ay)("MuiCircularProgress",e)}(0,y.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"]);var g=r(95155);function h(){let e=(0,n._)(["\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n"]);return h=function(){return e},e}function E(){let e=(0,n._)(["\n 0% {\n stroke-dasharray: 1px, 200px;\n stroke-dashoffset: 0;\n }\n\n 50% {\n stroke-dasharray: 100px, 200px;\n stroke-dashoffset: -15px;\n }\n\n 100% {\n stroke-dasharray: 1px, 200px;\n stroke-dashoffset: -126px;\n }\n"]);return E=function(){return e},e}function A(){let e=(0,n._)(["\n animation: "," 1.4s linear infinite;\n "]);return A=function(){return e},e}function v(){let e=(0,n._)(["\n animation: "," 1.4s ease-in-out infinite;\n "]);return v=function(){return e},e}let k=(0,i.i7)(h()),x=(0,i.i7)(E()),b="string"!=typeof k?(0,i.AH)(A(),k):null,R="string"!=typeof x?(0,i.AH)(v(),x):null,O=(0,c.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:r}=e;return[t.root,t[r.variant],t["color".concat((0,f.A)(r.color))]]}})((0,l.A)(e=>{let{theme:t}=e;return{display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:t.transitions.create("transform")}},{props:{variant:"indeterminate"},style:b||{animation:"".concat(k," 1.4s linear infinite")}},...Object.entries(t.palette).filter((0,d.A)()).map(e=>{let[r]=e;return{props:{color:r},style:{color:(t.vars||t).palette[r].main}}})]}})),S=(0,c.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,t)=>t.svg})({display:"block"}),_=(0,c.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,t)=>{let{ownerState:r}=e;return[t.circle,t["circle".concat((0,f.A)(r.variant))],r.disableShrink&&t.circleDisableShrink]}})((0,l.A)(e=>{let{theme:t}=e;return{stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:t.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:e=>{let{ownerState:t}=e;return"indeterminate"===t.variant&&!t.disableShrink},style:R||{animation:"".concat(x," 1.4s ease-in-out infinite")}}]}})),w=s.forwardRef(function(e,t){let r=(0,u.b)({props:e,name:"MuiCircularProgress"}),{className:n,color:s="primary",disableShrink:i=!1,size:c=40,style:l,thickness:d=3.6,value:y=0,variant:p="indeterminate",...h}=r,E={...r,color:s,disableShrink:i,size:c,thickness:d,value:y,variant:p},A=(e=>{let{classes:t,variant:r,color:n,disableShrink:s}=e,o={root:["root",r,"color".concat((0,f.A)(n))],svg:["svg"],circle:["circle","circle".concat((0,f.A)(r)),s&&"circleDisableShrink"]};return(0,a.A)(o,m,t)})(E),v={},k={},x={};if("determinate"===p){let e=2*Math.PI*((44-d)/2);v.strokeDasharray=e.toFixed(3),x["aria-valuenow"]=Math.round(y),v.strokeDashoffset="".concat(((100-y)/100*e).toFixed(3),"px"),k.transform="rotate(-90deg)"}return(0,g.jsx)(O,{className:(0,o.A)(A.root,n),style:{width:c,height:c,...k,...l},ownerState:E,ref:t,role:"progressbar",...x,...h,children:(0,g.jsx)(S,{className:A.svg,ownerState:E,viewBox:"".concat(22," ").concat(22," ").concat(44," ").concat(44),children:(0,g.jsx)(_,{className:A.circle,style:v,ownerState:E,cx:44,cy:44,r:(44-d)/2,fill:"none",strokeWidth:d})})})})},27879:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>l});var n=r(95155),s=r(94049),o=r(25635),a=r(91871),i=r(12115);let c=(0,r(73288).h)("app/models/error");function l(e){let{error:t,reset:r}=e;return(0,i.useEffect)(()=>{c.error("Error in models page:",{error:t.message,digest:t.digest})},[t]),(0,n.jsxs)(s.default,{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%",p:4,children:[(0,n.jsx)(o.A,{variant:"h6",color:"error",gutterBottom:!0,children:"Error loading models"}),(0,n.jsx)(o.A,{color:"text.secondary",sx:{mb:2},children:t.message||"Something went wrong while loading the models."}),(0,n.jsx)(s.default,{sx:{display:"flex",gap:2},children:(0,n.jsx)(a.A,{variant:"contained",onClick:r,children:"Try again"})})]})}},44090:(e,t,r)=>{Promise.resolve().then(r.bind(r,27879))},44102:(e,t,r)=>{"use strict";r.d(t,{A:()=>o}),r(12115);var n=r(10225),s=r(95155);function o(e){let{styles:t,defaultTheme:r={}}=e,o="function"==typeof t?e=>t(null==e||0===Object.keys(e).length?r:e):t;return(0,s.jsx)(n.mL,{styles:o})}},53228:(e,t,r)=>{"use strict";r.d(t,{G:()=>n});let n={LOG_LEVEL:3,INCLUDE_TOOL_CALLS_IN_RESPONSE:!0,ENABLE_EXECUTION_TRACKER:!1,ENABLE_REVERT_TO_HERE:!1}},61952:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=r(99347).A},73288:(e,t,r)=>{"use strict";r.d(t,{h:()=>c});var n=r(53228);let s={VERBOSE:-1,DEBUG:0,INFO:1,WARN:2,ERROR:3},o="number"==typeof n.G.LOG_LEVEL?n.G.LOG_LEVEL:s.ERROR;function a(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(t>6)return String(e);if(!(e instanceof Error))return e;let r={name:e.name,message:e.message};for(let n of Object.getOwnPropertyNames(e)){if("name"===n||"message"===n)continue;let s=e[n];"function"!=typeof s&&("stack"===n?r.stack=s:"cause"===n?r.cause=a(s,t+1):"errors"===n&&Array.isArray(s)?r.errors=s.map(e=>a(e,t+1)):r[n]=s)}return r}function i(e,t,r,n,i){if(e>=("number"==typeof i?i:o)){if("function"==typeof n)try{n=n()}catch(e){n="[lazy log data threw]"}let o=new Date().toISOString(),i="[".concat(o,"] [").concat(t,"]"),c="".concat(i," ").concat(r);if(void 0!==n)if(n instanceof Error||"object"==typeof n)try{let e=n instanceof Error?a(n):n,t=JSON.stringify(e,(e,t)=>t instanceof Error?a(t):t,2);c+=":\n".concat(t)}catch(e){c+=": [Object cannot be stringified]"}else c+=": ".concat(n);switch(e){case s.VERBOSE:console.debug("[VERBOSE] ".concat(c));break;case s.DEBUG:console.debug(c);break;case s.INFO:console.info(c);break;case s.WARN:console.warn(c);break;case s.ERROR:console.error(c);break;default:console.log(c)}}}function c(e,t){let r,n=((r=e.replace(/^src\//,"")).startsWith("/")&&(r=r.substring(1)),r);return{verbose:(e,r)=>{i(s.VERBOSE,n,e,r,t)},debug:(e,r)=>{i(s.DEBUG,n,e,r,t)},info:(e,r)=>{i(s.INFO,n,e,r,t)},warn:(e,r)=>{i(s.WARN,n,e,r,t)},error:(e,r)=>{i(s.ERROR,n,e,r,t)}}}},89255:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});var n=r(12115);let s="undefined"!=typeof window?n.useLayoutEffect:n.useEffect},95695:(e,t,r)=>{"use strict";r.d(t,{A:()=>c}),r(12115);var n=r(54211),s=r(44102),o=r(89505),a=r(95155);function i(e){let t=(0,n.tT)(e);return e!==t&&t.styles?(t.styles.match(/^@layer\s+[^{]*$/)||(t.styles="@layer global{".concat(t.styles,"}")),t):e}let c=function(e){let{styles:t,themeId:r,defaultTheme:n={}}=e,c=(0,o.A)(n),l=r&&c[r]||c,u="function"==typeof t?t(l):t;return l.modularCssLayers&&(u=Array.isArray(u)?u.map(e=>"function"==typeof e?i(e(l)):i(e)):i(u)),(0,a.jsx)(s.A,{styles:u})}},99347:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n,s=r(12115);let o=0,a={...n||(n=r.t(s,2))}.useId;function i(e){if(void 0!==a){let t=a();return null!=e?e:t}let[t,r]=s.useState(e),n=e||t;return s.useEffect(()=>{null==t&&(o+=1,r("mui-".concat(o)))},[t]),n}}},e=>{e.O(0,[4754,7758,2678,1871,8441,1255,7358],()=>e(e.s=44090)),_N_E=e.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5020],{4474:(r,e,t)=>{"use strict";t.d(e,{default:()=>D});var n=t(3648),i=t(12115),a=t(2821),o=t(57001),s=t(10225),c=t(48116),l=t(66964),u=t(16625),f=t(81852),d=t(74798),p=t(85795),m=t(95195);function h(r){return(0,m.Ay)("MuiCircularProgress",r)}(0,p.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"]);var v=t(95155);function y(){let r=(0,n._)(["\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n"]);return y=function(){return r},r}function k(){let r=(0,n._)(["\n 0% {\n stroke-dasharray: 1px, 200px;\n stroke-dashoffset: 0;\n }\n\n 50% {\n stroke-dasharray: 100px, 200px;\n stroke-dashoffset: -15px;\n }\n\n 100% {\n stroke-dasharray: 1px, 200px;\n stroke-dashoffset: -126px;\n }\n"]);return k=function(){return r},r}function g(){let r=(0,n._)(["\n animation: "," 1.4s linear infinite;\n "]);return g=function(){return r},r}function x(){let r=(0,n._)(["\n animation: "," 1.4s ease-in-out infinite;\n "]);return x=function(){return r},r}let A=(0,s.i7)(y()),b=(0,s.i7)(k()),C="string"!=typeof A?(0,s.AH)(g(),A):null,P="string"!=typeof b?(0,s.AH)(x(),b):null,S=(0,c.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(r,e)=>{let{ownerState:t}=r;return[e.root,e[t.variant],e["color".concat((0,f.A)(t.color))]]}})((0,l.A)(r=>{let{theme:e}=r;return{display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("transform")}},{props:{variant:"indeterminate"},style:C||{animation:"".concat(A," 1.4s linear infinite")}},...Object.entries(e.palette).filter((0,d.A)()).map(r=>{let[t]=r;return{props:{color:t},style:{color:(e.vars||e).palette[t].main}}})]}})),_=(0,c.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(r,e)=>e.svg})({display:"block"}),w=(0,c.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(r,e)=>{let{ownerState:t}=r;return[e.circle,e["circle".concat((0,f.A)(t.variant))],t.disableShrink&&e.circleDisableShrink]}})((0,l.A)(r=>{let{theme:e}=r;return{stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:r=>{let{ownerState:e}=r;return"indeterminate"===e.variant&&!e.disableShrink},style:P||{animation:"".concat(b," 1.4s ease-in-out infinite")}}]}})),D=i.forwardRef(function(r,e){let t=(0,u.b)({props:r,name:"MuiCircularProgress"}),{className:n,color:i="primary",disableShrink:s=!1,size:c=40,style:l,thickness:d=3.6,value:p=0,variant:m="indeterminate",...y}=t,k={...t,color:i,disableShrink:s,size:c,thickness:d,value:p,variant:m},g=(r=>{let{classes:e,variant:t,color:n,disableShrink:i}=r,a={root:["root",t,"color".concat((0,f.A)(n))],svg:["svg"],circle:["circle","circle".concat((0,f.A)(t)),i&&"circleDisableShrink"]};return(0,o.A)(a,h,e)})(k),x={},A={},b={};if("determinate"===m){let r=2*Math.PI*((44-d)/2);x.strokeDasharray=r.toFixed(3),b["aria-valuenow"]=Math.round(p),x.strokeDashoffset="".concat(((100-p)/100*r).toFixed(3),"px"),A.transform="rotate(-90deg)"}return(0,v.jsx)(S,{className:(0,a.A)(g.root,n),style:{width:c,height:c,...A,...l},ownerState:k,ref:e,role:"progressbar",...b,...y,children:(0,v.jsx)(_,{className:g.svg,ownerState:k,viewBox:"".concat(22," ").concat(22," ").concat(44," ").concat(44),children:(0,v.jsx)(w,{className:g.circle,style:x,ownerState:k,cx:44,cy:44,r:(44-d)/2,fill:"none",strokeWidth:d})})})})},11479:(r,e,t)=>{Promise.resolve().then(t.bind(t,94049)),Promise.resolve().then(t.bind(t,4474))}},r=>{r.O(0,[2678,4754,8441,1255,7358],()=>r(r.s=11479)),_N_E=r.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5020],{4474:(r,e,t)=>{"use strict";t.d(e,{default:()=>D});var n=t(3648),i=t(12115),a=t(2821),o=t(57001),s=t(10225),c=t(48116),l=t(66964),u=t(16625),f=t(81852),d=t(74798),p=t(85795),m=t(95195);function h(r){return(0,m.Ay)("MuiCircularProgress",r)}(0,p.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"]);var v=t(95155);function y(){let r=(0,n._)(["\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n"]);return y=function(){return r},r}function k(){let r=(0,n._)(["\n 0% {\n stroke-dasharray: 1px, 200px;\n stroke-dashoffset: 0;\n }\n\n 50% {\n stroke-dasharray: 100px, 200px;\n stroke-dashoffset: -15px;\n }\n\n 100% {\n stroke-dasharray: 1px, 200px;\n stroke-dashoffset: -126px;\n }\n"]);return k=function(){return r},r}function g(){let r=(0,n._)(["\n animation: "," 1.4s linear infinite;\n "]);return g=function(){return r},r}function x(){let r=(0,n._)(["\n animation: "," 1.4s ease-in-out infinite;\n "]);return x=function(){return r},r}let A=(0,s.i7)(y()),b=(0,s.i7)(k()),C="string"!=typeof A?(0,s.AH)(g(),A):null,P="string"!=typeof b?(0,s.AH)(x(),b):null,S=(0,c.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(r,e)=>{let{ownerState:t}=r;return[e.root,e[t.variant],e["color".concat((0,f.A)(t.color))]]}})((0,l.A)(r=>{let{theme:e}=r;return{display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("transform")}},{props:{variant:"indeterminate"},style:C||{animation:"".concat(A," 1.4s linear infinite")}},...Object.entries(e.palette).filter((0,d.A)()).map(r=>{let[t]=r;return{props:{color:t},style:{color:(e.vars||e).palette[t].main}}})]}})),_=(0,c.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(r,e)=>e.svg})({display:"block"}),w=(0,c.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(r,e)=>{let{ownerState:t}=r;return[e.circle,e["circle".concat((0,f.A)(t.variant))],t.disableShrink&&e.circleDisableShrink]}})((0,l.A)(r=>{let{theme:e}=r;return{stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:e.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:r=>{let{ownerState:e}=r;return"indeterminate"===e.variant&&!e.disableShrink},style:P||{animation:"".concat(b," 1.4s ease-in-out infinite")}}]}})),D=i.forwardRef(function(r,e){let t=(0,u.b)({props:r,name:"MuiCircularProgress"}),{className:n,color:i="primary",disableShrink:s=!1,size:c=40,style:l,thickness:d=3.6,value:p=0,variant:m="indeterminate",...y}=t,k={...t,color:i,disableShrink:s,size:c,thickness:d,value:p,variant:m},g=(r=>{let{classes:e,variant:t,color:n,disableShrink:i}=r,a={root:["root",t,"color".concat((0,f.A)(n))],svg:["svg"],circle:["circle","circle".concat((0,f.A)(t)),i&&"circleDisableShrink"]};return(0,o.A)(a,h,e)})(k),x={},A={},b={};if("determinate"===m){let r=2*Math.PI*((44-d)/2);x.strokeDasharray=r.toFixed(3),b["aria-valuenow"]=Math.round(p),x.strokeDashoffset="".concat(((100-p)/100*r).toFixed(3),"px"),A.transform="rotate(-90deg)"}return(0,v.jsx)(S,{className:(0,a.A)(g.root,n),style:{width:c,height:c,...A,...l},ownerState:k,ref:e,role:"progressbar",...b,...y,children:(0,v.jsx)(_,{className:g.svg,ownerState:k,viewBox:"".concat(22," ").concat(22," ").concat(44," ").concat(44),children:(0,v.jsx)(w,{className:g.circle,style:x,ownerState:k,cx:44,cy:44,r:(44-d)/2,fill:"none",strokeWidth:d})})})})},11479:(r,e,t)=>{Promise.resolve().then(t.bind(t,94049)),Promise.resolve().then(t.bind(t,4474))}},r=>{r.O(0,[4754,2678,8441,1255,7358],()=>r(r.s=11479)),_N_E=r.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8329],{11433:(e,t,r)=>{"use strict";r.d(t,{Ay:()=>v});var n=r(95155),o=r(12115),a=r(94049),l=r(2300),i=r(25635),s=r(63941),d=r(80372),c=r(29985),u=r(90880);function p(e,t){let r=t.toLocaleLowerCase(),n=new Set;return e.filter(e=>{var t;return!n.has(e.value)&&(n.add(e.value),"".concat(e.label," ").concat(e.name," ").concat(e.server," ").concat(null!=(t=e.description)?t:"").toLocaleLowerCase().includes(r))}).sort((e,t)=>{let r={tool:0,resource:1,global:2,runres:3};return r[e.kind]-r[t.kind]||e.label.localeCompare(t.label)})}function m(e){let t=e.split("\n").map(e=>({type:"paragraph",children:(e=>{let t=(0,u.sE)(e);if(0===t.length)return[{text:e}];let r=[],n=0;for(let o of t)o.index>n&&r.push({text:e.slice(n,o.index)}),r.push({type:"binding-reference",kind:o.kind,server:o.server,name:o.name,children:[{text:""}]}),n=o.index+o.fullMatch.length;return n<e.length&&r.push({text:e.slice(n)}),r})(e)}));return t.length>0?t:[{type:"paragraph",children:[{text:""}]}]}function h(e){return e.map(e=>(e.children||[]).map(e=>s.EY.isText(e)?e.text:(0,u.Pj)(e.kind,e.server,e.name)).join("")).join("\n")}r(32098);let x=(e,t)=>{e.selection||s.gB.select(e,s.KE.end(e,[])),s.gB.insertNodes(e,(e=>({type:"binding-reference",kind:e.kind,server:e.server,name:e.name,children:[{text:""}]}))(t)),s.gB.move(e)},f=e=>{let{element:t,disabled:r,invalid:o}=e,a=(0,c.Zi)(),l="tool"===t.kind&&"handoff"===t.server,i="global"===t.kind?"global":"runres"===t.kind?"runres":"resource"===t.kind?"resource":l?"handoff":"",d=()=>{r||(s.gB.removeNodes(a,{at:c.rL.findPath(a,t)}),c.rL.focus(a))};return(0,n.jsxs)("span",{contentEditable:!1,className:"tool-reference-container ".concat(i).concat(o?" invalid":""),title:o?"This reference is not available in the current context":void 0,"aria-invalid":o||void 0,children:[(0,n.jsx)("span",{className:"tool-reference ".concat(i).concat(o?" invalid":""),children:(0,u.CN)(t)}),!r&&(0,n.jsx)("span",{className:"tool-reference-delete ".concat(i),role:"button","aria-label":"Remove ".concat((0,u.CN)(t)),tabIndex:0,onClick:e=>{e.preventDefault(),e.stopPropagation(),d()},onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),e.stopPropagation(),d())},children:"\xd7"})]})},g=(0,o.forwardRef)((e,t)=>{let{value:r,onChange:g,globalNames:v=[],suggestions:y,placeholder:b,disabled:j=!1,multiline:A=!0,minRows:w=1,maxRows:k,autoFocus:C=!1,bare:S=!1,ariaLabel:T,dataTour:I,containerSx:O,onKeyDown:N,onPaste:P}=e,L=(0,o.useMemo)(()=>(0,d.$k)((e=>{let{isInline:t,isVoid:r,insertData:n,insertText:o}=e;return e.isInline=e=>"binding-reference"===e.type||t(e),e.isVoid=e=>"binding-reference"===e.type||r(e),e.insertText=t=>{o(t),t.includes("}")&&(e=>{if(!e.selection||!s.Q6.isCollapsed(e.selection))return;let t=e.selection.anchor,r=s.bP.get(e,t.path);if(!s.EY.isText(r))return;let n=r.text.slice(0,t.offset).match(/\$\{global:([^}\r\n]+)\}$/);if(!n||void 0===n.index)return;let o=(0,u.y4)(n[0]);o&&(s.gB.select(e,{anchor:{path:t.path,offset:n.index},focus:t}),s.gB.delete(e),x(e,o))})(e)},e.insertData=t=>{let r=t.getData("text/plain");if(r&&(0,u.sE)(r).length>0)return void s.gB.insertFragment(e,m(r));n(t)},e})((0,c.o$)((0,s.ie)()))),[]),U=(0,o.useMemo)(()=>m(r||""),[]),[M,R]=(0,o.useState)(null),[F,E]=(0,o.useState)(0),[z,W]=(0,o.useState)(0),D=(0,o.useRef)(!1),q=(0,o.useMemo)(()=>p([...null!=y?y:[],...v.map(e=>(0,u.Ub)({kind:"global",server:"",name:e},e))],""),[v,y]),B=(0,o.useMemo)(()=>y?new Set(q.map(e=>e.value)):null,[q,y]),K=(0,o.useCallback)(()=>{if(!L.selection||!s.Q6.isCollapsed(L.selection))return void R(null);let e=L.selection.anchor,t=s.bP.get(L,e.path);if(!s.EY.isText(t))return void R(null);let r=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.length,r=e.slice(0,t).match(/(?:^|\s)@([^\s@{}]*)$/);if(!r||void 0===r.index)return null;let n=r.index+ +!r[0].startsWith("@");return{query:r[1],start:n,end:t}}(t.text,e.offset),n=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.length,r=e.slice(0,t).match(/\$\{global:([^{}\r\n]*)$/);return r&&void 0!==r.index?{query:r[1],start:r.index,end:t}:null}(t.text,e.offset),o=null!=r?r:n;if(!o)return void R(null);let a=r?"at":"global",l=p("at"===a?q:q.filter(e=>"global"===e.kind),o.query);E(0),R({...o,mode:a,items:l,range:{anchor:{path:e.path,offset:o.start},focus:e}})},[L,q]),G=(0,o.useCallback)(e=>{if(!M)return;s.gB.select(L,M.range),s.gB.delete(L);let t=(0,u.y4)(e.value);t&&x(L,t),R(null),c.rL.focus(L)},[M,L]);(0,o.useImperativeHandle)(t,()=>({insertText:e=>{let t=(0,u.y4)(e);t?x(L,t):L.insertText(e),g(h(L.children)),c.rL.focus(L)},focus:()=>c.rL.focus(L)}),[L,g]),(0,o.useEffect)(()=>{h(L.children)!==h(m(r||""))&&(D.current=!0,L.children=m(r||""),L.selection=null,L.onChange(),W(e=>e+1))},[L,r]);let X=(0,o.useCallback)(e=>{if(D.current){D.current=!1;return}g(h(e)),K()},[g,K]),_=(0,o.useCallback)(e=>{let{attributes:t,children:r,element:o}=e;if("binding-reference"===o.type){let e=(0,u.Pj)(o.kind,o.server,o.name);return(0,n.jsxs)("span",{...t,className:"tool-reference-wrapper",children:[(0,n.jsx)(f,{element:o,disabled:j,invalid:null!==B&&!B.has(e)}),r]})}return(0,n.jsx)("p",{...t,children:r})},[j,B]),J="".concat(1.5*Math.max(1,w),"em"),$=k?"".concat(1.5*Math.max(w,k),"em"):void 0;return(0,n.jsxs)(a.default,{sx:{position:"relative",width:"100%",...O},"data-revision":z,children:[(0,n.jsx)(a.default,{className:S?"global-reference-editor bare":"global-reference-editor",sx:{border:S?"none":"1px solid",borderColor:"rgba(0, 0, 0, 0.23)",borderRadius:+!S,px:1.75*!S,py:+!S,bgcolor:j?"action.disabledBackground":"background.paper","&:focus-within":S?{}:{borderColor:"primary.main",borderWidth:2,px:"13px",py:"7px"}},children:(0,n.jsx)(c.A,{editor:L,initialValue:U,onChange:X,children:(0,n.jsx)(c.Fo,{className:"slate-editor global-reference-editable",renderElement:_,placeholder:b,readOnly:j,autoFocus:C,"aria-label":T,"data-tour":I,role:"textbox","aria-multiline":A,onKeyDown:e=>{if(M){if("ArrowDown"===e.key&&M.items.length>0){e.preventDefault(),E(e=>(e+1)%M.items.length);return}if("ArrowUp"===e.key&&M.items.length>0){e.preventDefault(),E(e=>(e-1+M.items.length)%M.items.length);return}if(("Enter"===e.key||"Tab"===e.key)&&M.items[F]){e.preventDefault(),G(M.items[F]);return}if("Escape"===e.key){e.preventDefault(),e.stopPropagation(),R(null);return}}if(!A&&"Enter"===e.key)return void e.preventDefault();null==N||N(e)},onPaste:P,style:{minHeight:J,maxHeight:$,overflowY:$?"auto":void 0,whiteSpace:A?"pre-wrap":"nowrap"}})})}),M&&(0,n.jsx)(l.A,{elevation:8,role:"listbox","aria-label":"at"===M.mode?"Available references":"Global variables",sx:{position:"absolute",zIndex:1500,top:"100%",left:0,right:0,mt:.5,maxHeight:240,overflowY:"auto"},children:0===M.items.length?(0,n.jsx)(a.default,{sx:{px:1.5,py:1.25},children:(0,n.jsx)(i.A,{variant:"body2",color:"text.secondary",children:"No matching references"})}):M.items.map((e,t)=>{var r;let l=null==(r=M.items[t-1])?void 0:r.kind,s="tool"===e.kind?"Tools":"resource"===e.kind?"Resources":"global"===e.kind?"Globals":"Temporary data";return(0,n.jsxs)(o.Fragment,{children:[e.kind!==l&&(0,n.jsx)(i.A,{component:"div",variant:"overline",sx:{px:1.5,pt:0===t?.75:1.25,color:"text.secondary"},children:s}),(0,n.jsxs)(a.default,{role:"option","aria-selected":t===F,onMouseDown:t=>{t.preventDefault(),G(e)},sx:{px:1.5,py:1,cursor:"pointer",bgcolor:t===F?"action.selected":"background.paper","&:hover":{bgcolor:"action.hover"}},children:[(0,n.jsx)(i.A,{component:"div",sx:{fontFamily:"monospace",fontSize:14},children:e.label}),(0,n.jsx)(i.A,{variant:"caption",color:"text.secondary",sx:{wordBreak:"break-all"},children:e.description||e.value})]})]},e.value)})})]})});g.displayName="GlobalReferenceEditor";let v=g},22573:(e,t,r)=>{"use strict";r.d(t,{A:()=>p});var n=r(95155);r(12115);var o=r(33567),a=r(94049),l=r(41983),i=r(25635),s=r(28548),d=r(50430),c=r(63186),u=r(91665);let p=e=>{let{label:t,count:r,expanded:p,onToggle:m,showFolderIcon:h=!1,children:x}=e,f=(0,o.A)();return(0,n.jsxs)(a.default,{sx:{mb:1.5},children:[(0,n.jsxs)(a.default,{role:"button",tabIndex:0,"aria-expanded":p,onClick:m,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),m())},sx:{display:"flex",alignItems:"center",gap:1,px:1,py:.75,borderRadius:1,cursor:"pointer",userSelect:"none",backgroundColor:f.palette.background.default,border:"1px solid ".concat(f.palette.divider),"&:hover":{backgroundColor:f.palette.action.hover}},children:[(0,n.jsx)(l.A,{size:"small","aria-label":p?"Collapse section":"Expand section",onClick:e=>{e.stopPropagation(),m()},sx:{transition:"transform 0.2s",transform:p?"rotate(0deg)":"rotate(-90deg)"},children:(0,n.jsx)(c.A,{fontSize:"small"})}),h&&(0,n.jsx)(u.A,{fontSize:"small",sx:{color:"text.secondary"}}),(0,n.jsx)(i.A,{variant:"subtitle2",sx:{fontWeight:600},children:t}),(0,n.jsx)(s.A,{label:r,size:"small",sx:{height:20,fontSize:"0.7rem"}})]}),(0,n.jsx)(d.A,{in:p,unmountOnExit:!0,children:(0,n.jsx)(a.default,{sx:{pt:1.5},children:x})})]})}},23201:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(95155);r(12115);var o=r(5421),a=r(67895),l=r(97430);function i(e){let{show:t,onClick:r,sx:i}=e;return(0,n.jsx)(o.A,{in:t,unmountOnExit:!0,children:(0,n.jsx)(a.A,{size:"small",color:"primary","aria-label":"Back to top",onClick:r,sx:{position:"fixed",bottom:24,right:24,zIndex:1200,...i},children:(0,n.jsx)(l.A,{})})})}},32098:()=>{},36982:(e,t,r)=>{"use strict";r.d(t,{default:()=>i});var n=r(95155);r(12115);var o=r(94049),a=r(64598),l=r(23201);function i(e){let{storageKey:t,sx:r,threshold:i,deps:s,children:d}=e,{ref:c,showBackToTop:u,scrollToTop:p}=(0,a.R)(t,{threshold:i,deps:s});return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(o.default,{ref:c,sx:{...r,overflow:"auto"},children:d}),(0,n.jsx)(l.A,{show:u,onClick:p})]})}},38459:(e,t,r)=>{"use strict";r.d(t,{Az:()=>o,FM:()=>n,Je:()=>l,po:()=>a,yF:()=>i});let n="folder";function o(e,t){let r=[],n=new Map;for(let o of e){let{key:e,label:a}=t(o),l=n.get(e);l||(l={key:e,label:a,items:[]},n.set(e,l),r.push(l)),l.items.push(o)}return r}function a(e){let t=(null!=e?e:"").trim().charAt(0).toUpperCase();return t>="A"&&t<="Z"?{key:"letter:".concat(t),label:t}:{key:"letter:#",label:"#"}}function l(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Ungrouped",n=new Map,o=[];for(let r of e){var a;let e=null==(a=t(r))?void 0:a.trim();if(e){let t=n.get(e);t?t.push(r):n.set(e,[r])}else o.push(r)}let l=Array.from(n.keys()).sort((e,t)=>e.localeCompare(t)).map(e=>({key:"folder:".concat(e),label:e,items:n.get(e)}));return o.length>0&&l.push({key:"folder:__ungrouped__",label:r,items:o}),l}function i(e,t){let r=new Set;for(let o of e){var n;let e=null==(n=t(o))?void 0:n.trim();e&&r.add(e)}return Array.from(r).sort((e,t)=>e.localeCompare(t))}},48072:(e,t,r)=>{"use strict";r.d(t,{CR:()=>d,Lg:()=>l,eZ:()=>s,fC:()=>a});var n=r(88107),o=r(38459);let a={"name-asc":"Name (A-Z)","name-desc":"Name (Z-A)",provider:"Provider","context-desc":"Context (largest)","context-asc":"Context (smallest)"},l=e=>e.displayName||e.name||"",i=e=>(0,n.T_)(e.provider,e.adapter).label;function s(e,t){switch(t){case"provider":{let t=i(e);return{key:"provider:".concat(t),label:t}}case"context-asc":case"context-desc":var r;return"number"!=typeof(r=e.contextWindow)||Number.isNaN(r)?{key:"ctx:unknown",label:"Unknown context"}:r<=8e3?{key:"ctx:<=8k",label:"≤ 8K tokens"}:r<=32e3?{key:"ctx:8k-32k",label:"8K–32K tokens"}:r<=128e3?{key:"ctx:32k-128k",label:"32K–128K tokens"}:r<=1e6?{key:"ctx:128k-1m",label:"128K–1M tokens"}:{key:"ctx:>1m",label:"> 1M tokens"};default:return(0,o.po)(l(e))}}function d(e,t){let r=(e,r)=>{switch(t){case"name-asc":return l(e).localeCompare(l(r));case"name-desc":return l(r).localeCompare(l(e));case"provider":return i(e).localeCompare(i(r))||l(e).localeCompare(l(r));case"context-desc":case"context-asc":{let n="number"!=typeof e.contextWindow||Number.isNaN(e.contextWindow)?void 0:e.contextWindow,o="number"!=typeof r.contextWindow||Number.isNaN(r.contextWindow)?void 0:r.contextWindow;if(void 0===n&&void 0===o)return l(e).localeCompare(l(r));if(void 0===n)return 1;if(void 0===o)return -1;let a="context-desc"===t?o-n:n-o;return 0!==a?a:l(e).localeCompare(l(r))}default:return 0}};return[...e].sort((e,t)=>{let n=Number(!!t.favorite)-Number(!!e.favorite);return 0!==n?n:r(e,t)})}},52397:(e,t,r)=>{"use strict";r.d(t,{RJ:()=>o,gF:()=>n});let n="masked:********",o="********"},58971:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>eZ});var n=r(95155),o=r(12115),a=r(20063),l=r(2300),i=r(94049),s=r(9562),d=r(56422),c=r(27845),u=r(91871),p=r(36314),m=r(86973),h=r(49501),x=r(17681),f=r(22003),g=r(86946),v=r(30989),y=r(60700),b=r(51611),j=r(25766),A=r(74879),w=r(33567),k=r(4474),C=r(33077),S=r(25635),T=r(41983),I=r(21067),O=r(64419),N=r(28466),P=r(45587),L=r(81952),U=r(94885),M=r(15686),R=r(91665),F=r(61267),E=r(22573),z=r(38459),W=r(97104),D=r(48072),q=r(73288);let B=(0,q.h)("frontend/components/models/list/ModelList"),K=e=>{let{models:t,isLoading:r,onAdd:a,onUpdate:s,onDelete:d,folders:c=[],onSetFolder:u,onToggleFavorite:f}=e,g=(0,w.A)(),[v,y]=(0,W.Xk)("flujo-ui:models:sort","name-asc"),[b,j]=(0,W.Xk)("flujo-ui:models:group",z.FM),[A,q]=(0,o.useState)(null),[K,G]=(0,o.useState)(null),[X,_]=(0,W.Xk)("flujo-ui:models:collapsed",[]),J=(0,o.useMemo)(()=>new Set(X),[X]),$=e=>{y(e),q(null)},H=e=>{j(e),G(null)},Y=async e=>{let t=await s(e);t.success||B.error("Failed to update model in ModelList",t.error)},Z=(0,o.useMemo)(()=>(0,D.CR)(t,v),[t,v]),V=(0,o.useMemo)(()=>"folder"===b?(0,z.Je)(Z,e=>e.folder):"sort"===b?(0,z.Az)(Z,e=>(0,D.eZ)(e,v)):[],[b,Z,v]);if(r)return(0,n.jsx)(i.default,{display:"flex",justifyContent:"center",py:4,children:(0,n.jsx)(k.default,{})});let Q=e=>(0,n.jsx)(C.Ay,{container:!0,spacing:2.5,children:e.map(e=>(0,n.jsx)(C.Ay,{item:!0,xs:12,sm:6,md:4,children:(0,n.jsx)(F.A,{model:e,onEdit:()=>Y(e),onDelete:()=>d(e.id),folder:e.folder,folders:c,onSetFolder:u?t=>u(e.id,t):void 0,onToggleFavorite:f})},e.id))});return(0,n.jsxs)(i.default,{children:[(0,n.jsx)(l.A,{elevation:0,variant:"outlined",sx:{mb:2.5,p:1.1,borderRadius:3,bgcolor:"transparent"},children:(0,n.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:1},children:[(0,n.jsxs)(S.A,{variant:"body2",color:"textSecondary",children:[t.length," AI connection",1===t.length?"":"s",(0,n.jsx)(i.default,{component:"span",sx:{mx:1,opacity:.5},children:"\xb7"}),"Sorted by: ",D.fC[v]]}),(0,n.jsxs)(i.default,{sx:{display:"flex",gap:1,alignItems:"center"},children:[(0,n.jsx)(T.A,{size:"small",onClick:e=>G(e.currentTarget),color:"none"!==b?"primary":"default",sx:{border:"1px solid ".concat(g.palette.divider),backgroundColor:g.palette.background.default},title:"Group cards",children:(0,n.jsx)(U.A,{fontSize:"small"})}),(0,n.jsx)(T.A,{size:"small",onClick:e=>q(e.currentTarget),sx:{border:"1px solid ".concat(g.palette.divider),backgroundColor:g.palette.background.default},title:"Sort models",children:(0,n.jsx)(O.A,{fontSize:"small"})})]})]})}),t&&0!==t.length?"none"===b?Q(Z):V.map(e=>(0,n.jsx)(E.A,{label:e.label,count:e.items.length,expanded:!J.has(e.key),onToggle:()=>(e=>{_(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])})(e.key),showFolderIcon:"folder"===b,children:Q(e.items)},e.key)):(0,n.jsx)(l.A,{variant:"outlined",sx:{display:"grid",minHeight:240,p:4,placeItems:"center",textAlign:"center",borderStyle:"dashed",bgcolor:"transparent"},children:(0,n.jsxs)(i.default,{children:[(0,n.jsx)(L.A,{sx:{mb:1.5,fontSize:38,color:"primary.light"}}),(0,n.jsx)(S.A,{variant:"h6",children:"Your AI is not connected yet"}),(0,n.jsx)(S.A,{variant:"body2",color:"text.secondary",sx:{mt:.7,mb:2},children:"Connect a provider once, then use it across agents and conversations."}),(0,n.jsx)(i.default,{children:(0,n.jsx)(T.A,{color:"primary",onClick:a,title:"Connect AI",children:(0,n.jsx)(L.A,{})})})]})}),(0,n.jsxs)(p.A,{anchorEl:K,open:!!K,onClose:()=>G(null),anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:[(0,n.jsxs)(m.A,{selected:"none"===b,onClick:()=>H("none"),children:[(0,n.jsx)(h.A,{children:(0,n.jsx)(M.A,{fontSize:"small"})}),(0,n.jsx)(x.A,{primary:"No grouping"})]}),(0,n.jsxs)(m.A,{selected:"folder"===b,onClick:()=>H("folder"),children:[(0,n.jsx)(h.A,{children:(0,n.jsx)(R.A,{fontSize:"small"})}),(0,n.jsx)(x.A,{primary:"By folder"})]}),(0,n.jsxs)(m.A,{selected:"sort"===b,onClick:()=>H("sort"),children:[(0,n.jsx)(h.A,{children:(0,n.jsx)(U.A,{fontSize:"small"})}),(0,n.jsx)(x.A,{primary:"By sort setting"})]})]}),(0,n.jsxs)(p.A,{anchorEl:A,open:!!A,onClose:()=>q(null),anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:[(0,n.jsxs)(m.A,{selected:"name-asc"===v,onClick:()=>$("name-asc"),children:[(0,n.jsx)(h.A,{children:(0,n.jsx)(N.A,{fontSize:"small"})}),(0,n.jsx)(x.A,{primary:"Name (A-Z)"})]}),(0,n.jsxs)(m.A,{selected:"name-desc"===v,onClick:()=>$("name-desc"),children:[(0,n.jsx)(h.A,{children:(0,n.jsx)(N.A,{fontSize:"small",sx:{transform:"scaleX(-1)"}})}),(0,n.jsx)(x.A,{primary:"Name (Z-A)"})]}),(0,n.jsx)(I.A,{}),(0,n.jsxs)(m.A,{selected:"provider"===v,onClick:()=>$("provider"),children:[(0,n.jsx)(h.A,{children:(0,n.jsx)(P.A,{fontSize:"small"})}),(0,n.jsx)(x.A,{primary:"Provider"})]}),(0,n.jsx)(I.A,{}),(0,n.jsxs)(m.A,{selected:"context-desc"===v,onClick:()=>$("context-desc"),children:[(0,n.jsx)(h.A,{children:(0,n.jsx)(L.A,{fontSize:"small"})}),(0,n.jsx)(x.A,{primary:"Context (largest)"})]}),(0,n.jsxs)(m.A,{selected:"context-asc"===v,onClick:()=>$("context-asc"),children:[(0,n.jsx)(h.A,{children:(0,n.jsx)(L.A,{fontSize:"small",sx:{transform:"scaleY(-1)"}})}),(0,n.jsx)(x.A,{primary:"Context (smallest)"})]})]})]})};var G=r(2778),X=r(52363),_=r(65036),J=r(52641),$=r(95436),H=r(55606),Y=r(98286),Z=r(75912),V=r(12857),Q=r(48363),ee=r(9164),et=r(95480),er=r(88107),en=r(52397),eo=r(43076);let ea=(0,q.h)("frontend/components/models/modal"),el=e=>({...void 0!==e.contextWindow?{contextWindow:e.contextWindow}:{},...void 0!==e.maxTokens?{maxTokens:e.maxTokens}:{},...void 0!==e.supportsTools?{supportsTools:e.supportsTools}:{},...void 0!==e.supportedParameters?{supportedParameters:e.supportedParameters}:{},...void 0!==e.inputModalities?{inputModalities:e.inputModalities}:{},...void 0!==e.outputModalities?{outputModalities:e.outputModalities}:{},...void 0!==e.visionInputCapability?{visionInputCapability:e.visionInputCapability}:{}}),ei=e=>{var t,r,l,d,c,p,h;let{open:x,model:g,onSave:v,onClose:y}=e,b=(0,a.useRouter)(),{globalEnvVars:j,settings:A}=(0,ee.useStorage)(),[w,I]=(0,o.useState)({}),[O,N]=(0,o.useState)({}),[P,L]=(0,o.useState)(null),[U,M]=(0,o.useState)(!1),[R,F]=(0,o.useState)(null),[E,z]=(0,o.useState)(!1),[W,D]=(0,o.useState)([]),[q,B]=(0,o.useState)(!1),K=(0,o.useRef)(null),ei=(0,o.useRef)(null);(0,o.useEffect)(()=>{x&&D([])},[x]),(0,o.useEffect)(()=>{w.baseUrl&&(ea.debug("Base URL or API Key changed",{baseUrl:w.baseUrl}),D([]))},[w.baseUrl,w.ApiKey]),(0,o.useEffect)(()=>(ei.current&&clearTimeout(ei.current),w.baseUrl&&(ei.current=setTimeout(()=>{ea.debug("Debounced fetchModels triggered",{name:w.name,baseUrl:w.baseUrl,searchTerm:w.name?'"'.concat(w.name,'"'):"none"}),es(w.baseUrl,w.name)},100)),()=>{ei.current&&clearTimeout(ei.current)}),[w.name,w.baseUrl]),(0,o.useEffect)(()=>()=>{ei.current&&clearTimeout(ei.current)},[]);let es=async(e,t)=>{ea.debug("fetchModels called",{baseUrl:e,searchTerm:t?'"'.concat(t,'"'):"none",apiKey:w.ApiKey?"present":"not present",isApiKeyBound:U}),B(!0),N({});try{let r=U&&R?"${global:".concat(R,"}"):w.ApiKey&&w.ApiKey!==en.RJ?w.ApiKey:void 0,n=await eo.N.fetchProviderModels(e,g.id,t,r);if(ea.debug("Models fetched successfully",{count:null==n?void 0:n.length,searchTerm:t?'"'.concat(t,'"'):"none"}),Array.isArray(n)){D(n);let e=n.find(e=>e.id===w.name);e&&I(t=>t.name===e.id?{...t,...el(e)}:t),ea.info("Models set in state",{count:n.length,searchTerm:t?'"'.concat(t,'"'):"none"})}else ea.warn("Unexpected API response format",{models:n}),D([])}catch(r){ea.warn("Error fetching models",{baseUrl:e,searchTerm:t,error:r}),D([])}finally{B(!1)}};(0,o.useEffect)(()=>{if(x){I({...g,displayName:g.displayName||g.name});let e=(g.ApiKey||"").match(/\$\{global:([^}]+)\}/);e?(M(!0),F(e[1])):(M(!1),F(null),I(e=>({...e,ApiKey:g.name?en.RJ:""})))}else I({name:"",displayName:"",description:"",ApiKey:"",baseUrl:"https://api.openai.com/v1",provider:"openai",adapter:"openai",promptTemplate:"",temperature:"0.0"}),M(!1),F(null);N({}),L(null)},[x,g]);let ed=(0,er.T_)(w.provider,w.adapter),ec=(0,er.g3)(w.provider,w.adapter,w.name),eu=(0,o.useMemo)(()=>{var e;return(null==A||null==(e=A.experimental)?void 0:e.showModelsWithoutToolCapabilities)?W:W.filter(e=>!1!==e.supportsTools)},[W,null==A||null==(t=A.experimental)?void 0:t.showModelsWithoutToolCapabilities]),ep=(e,t)=>{I(r=>({...r,[e]:t})),N(t=>({...t,[e]:""}))},em=async e=>{var t,r,n,o,a,l,i;e.preventDefault();let s={};if((null==(t=w.name)?void 0:t.trim())||(s.name="Name is required"),(null==(r=w.displayName)?void 0:r.trim())||(s.displayName="Display Name is required"),ec.creativity&&(null==(n=w.temperature)?void 0:n.trim())){let e=Number(w.temperature);(!Number.isFinite(e)||e<ec.creativity.min||e>ec.creativity.max)&&(s.temperature="Creativity must be between ".concat(ec.creativity.min," and ").concat(ec.creativity.max))}if(U||(null==(o=w.ApiKey)?void 0:o.trim())||"codex-cli"===ed.adapter||(s.ApiKey="API key is required"),Object.keys(s).length>0)return void N(s);try{let e=await v({id:g.id,name:w.name,displayName:w.displayName,description:w.description,ApiKey:w.ApiKey,baseUrl:w.baseUrl,provider:w.provider,adapter:w.adapter||"openai",promptTemplate:w.promptTemplate,temperature:ec.creativity?w.temperature:void 0,reasoningEffort:(null==(a=ec.effortLevels)?void 0:a.includes(w.reasoningEffort))?w.reasoningEffort:void 0,thinkingLevel:(null==(l=ec.thinkingLevels)?void 0:l.includes(w.thinkingLevel))?w.thinkingLevel:void 0,thinkingBudget:ec.thinkingBudget?w.thinkingBudget:void 0,serviceTier:ec.priority?w.serviceTier||"default":void 0,contextWindow:w.contextWindow,supportsTools:w.supportsTools,supportedParameters:w.supportedParameters,inputModalities:w.inputModalities,outputModalities:w.outputModalities,visionInputCapability:null!=(i=w.visionInputCapability)?i:Array.isArray(w.inputModalities)?w.inputModalities.some(e=>/^(?:image|vision)$/i.test(e))?"supported":"unsupported":"unknown",maxTurns:w.maxTurns,maxTokens:ec.maxOutputTokens?w.maxTokens:void 0});e.success?b.refresh():N({submit:e.error||"Failed to save model"})}catch(e){ea.error("Failed to save model",{error:e}),N({submit:(null==e?void 0:e.message)||"Failed to save model"})}};return(0,n.jsx)(G.A,{open:x,onClose:y,maxWidth:"xl",fullWidth:!0,PaperProps:{sx:{width:"95vw",height:"90vh",maxWidth:"95vw",maxHeight:"90vh"}},children:(0,n.jsxs)("form",{onSubmit:em,children:[(0,n.jsx)(X.A,{children:g.name?"Edit AI connection":"Connect your AI"}),(0,n.jsxs)(_.A,{sx:{display:"flex",flexDirection:"column",height:"calc(90vh - 130px)"},children:[O.submit&&(0,n.jsx)(f.A,{severity:"error",sx:{mb:2},children:O.submit}),P&&(0,n.jsx)(f.A,{severity:"info",sx:{mb:2},children:P}),(0,n.jsxs)(C.Ay,{container:!0,spacing:2,sx:{flexGrow:1},children:[(0,n.jsx)(C.Ay,{item:!0,xs:6,sx:{height:"100%"},children:(0,n.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",height:"100%",pr:2,overflowY:"auto"},children:[(0,n.jsx)(S.A,{variant:"h6",gutterBottom:!0,children:"Connection details"}),(0,n.jsx)(s.A,{autoFocus:!0,margin:"dense",label:"Display Name",fullWidth:!0,required:!0,value:w.displayName||"",onChange:e=>ep("displayName",e.target.value),error:!!O.displayName,helperText:O.displayName||"The name shown in the UI"}),(0,n.jsxs)(J.A,{fullWidth:!0,margin:"dense",children:[(0,n.jsx)($.A,{id:"provider-profile-label",children:"Provider"}),(0,n.jsx)(H.A,{labelId:"provider-profile-label",label:"Provider",value:ed.id,onChange:e=>(e=>{let t=er.xx.find(t=>t.id===e);t&&(I(e=>({...e,provider:t.provider,adapter:t.adapter,baseUrl:t.baseUrl})),N(e=>({...e,baseUrl:""})))})(e.target.value),children:er.xx.map(e=>(0,n.jsx)(m.A,{value:e.id,children:e.label},e.id))})]}),(0,n.jsxs)(S.A,{variant:"caption",color:"text.secondary",sx:{mt:.5,mb:1,display:"block"},children:["Uses the ",(0,n.jsx)("strong",{children:ed.sdkLabel}),"claude-cli"===ed.adapter?". Paste an OAuth token from `claude setup-token` into the API Key field.":"codex-cli"===ed.adapter?". Paste an OpenAI API key — or leave it empty to use your ChatGPT plan via `codex login`.":""]}),ed.showBaseUrl&&(0,n.jsx)(s.A,{margin:"dense",label:"Base URL",fullWidth:!0,value:w.baseUrl||"",onChange:e=>ep("baseUrl",e.target.value),helperText:"Endpoint for the OpenAI-compatible API."}),(0,n.jsx)(i.default,{sx:{position:"relative",mt:1,mb:1},children:(0,n.jsx)(s.A,{margin:"dense",label:"API Key",fullWidth:!0,required:!U&&"codex-cli"!==ed.adapter,type:U?"text":"password",value:w.ApiKey||"",onChange:e=>ep("ApiKey",e.target.value),error:!!O.ApiKey,helperText:O.ApiKey||("codex-cli"===ed.adapter?"Optional — leave empty to use your ChatGPT plan (codex login)":"API key is required for this provider"),InputProps:{readOnly:U,endAdornment:(0,n.jsx)(i.default,{sx:{display:"flex",alignItems:"center"},children:U?(0,n.jsx)(T.A,{onClick:()=>{M(!1),F(null),I(e=>({...e,ApiKey:""}))},size:"small",title:"Unbind from global variable",children:(0,n.jsx)(V.A,{})}):(0,n.jsx)(T.A,{onClick:()=>{z(!0)},size:"small",title:"Bind to global variable",children:(0,n.jsx)(Q.A,{})})})}})}),(0,n.jsx)(Y.A,{freeSolo:!0,loading:q,options:ed.showBaseUrl?eu.map(e=>e.id):null!=(r=ed.defaultModels)?r:[],value:w.name||"",onChange:(e,t)=>{let r=W.find(e=>e.id===t);I(e=>{var n;return{...e,name:t||"",...r?{description:null!=(n=r.description)?n:e.description,...el(r)}:{}}}),N(e=>({...e,name:""}))},onInputChange:(e,t)=>{ep("name",t)},filterOptions:(e,t)=>{let r=t.inputValue.toLowerCase();return r?e.filter(e=>{let t=e.toLowerCase();if(t.includes(r))return!0;let n=0,o=0;for(;n<t.length&&o<r.length;)t[n]===r[o]&&o++,n++;return o===r.length}):e},ListboxProps:{style:{maxHeight:"300px",overflow:"auto"}},renderInput:e=>(0,n.jsx)(s.A,{...e,margin:"dense",label:"Technical Name",required:!0,error:!!O.name,helperText:O.name||"Used for API calls to the LLM. Type to search available models.",InputProps:{...e.InputProps,endAdornment:(0,n.jsxs)(n.Fragment,{children:[q?(0,n.jsx)(k.default,{color:"inherit",size:20}):null,e.InputProps.endAdornment]})}}),renderOption:(e,t)=>{let r=W.find(e=>e.id===t),{key:o,...a}=e;return(0,n.jsx)("li",{...a,style:{borderBottom:"1px solid rgba(0,0,0,0.1)",padding:"8px 16px"},children:(0,n.jsxs)(i.default,{children:[(0,n.jsx)(S.A,{variant:"body1",fontWeight:"bold",children:t}),(null==r?void 0:r.description)&&(0,n.jsx)(S.A,{variant:"body2",color:"text.secondary",sx:{fontSize:"0.75rem"},children:r.description})]})},o)},noOptionsText:"No matching models found",loadingText:"Loading models..."}),(0,n.jsx)(s.A,{margin:"dense",label:"Description",fullWidth:!0,multiline:!0,rows:3,value:w.description||"",onChange:e=>ep("description",e.target.value)}),ec.creativity&&(0,n.jsx)(s.A,{margin:"dense",label:"Creativity",fullWidth:!0,type:"number",value:null!=(l=w.temperature)?l:"",onChange:e=>ep("temperature",e.target.value),error:!!O.temperature,inputProps:ec.creativity,helperText:O.temperature||"Sampling temperature (".concat(ec.creativity.min,"–").concat(ec.creativity.max,"). Blank uses FLUJO's deterministic default (0).")}),ec.effortLevels&&(0,n.jsxs)(J.A,{fullWidth:!0,margin:"dense",children:[(0,n.jsx)($.A,{id:"reasoning-effort-label",children:"Effort"}),(0,n.jsxs)(H.A,{labelId:"reasoning-effort-label",label:"Effort",value:w.reasoningEffort||"",onChange:e=>I(t=>({...t,reasoningEffort:e.target.value?e.target.value:void 0})),children:[(0,n.jsx)(m.A,{value:"",children:(0,n.jsx)("em",{children:"Provider default"})}),ec.effortLevels.map(e=>(0,n.jsx)(m.A,{value:e,children:"xhigh"===e?"Extra high":e.charAt(0).toUpperCase()+e.slice(1)},e))]}),(0,n.jsx)(S.A,{variant:"caption",color:"text.secondary",sx:{mt:.5,ml:1.75},children:"Controls how much reasoning the model performs."})]}),ec.thinkingLevels&&(0,n.jsxs)(J.A,{fullWidth:!0,margin:"dense",children:[(0,n.jsx)($.A,{id:"thinking-level-label",children:"Thinking Level"}),(0,n.jsxs)(H.A,{labelId:"thinking-level-label",label:"Thinking Level",value:w.thinkingLevel||"",onChange:e=>I(t=>({...t,thinkingLevel:e.target.value?e.target.value:void 0})),children:[(0,n.jsx)(m.A,{value:"",children:(0,n.jsx)("em",{children:"Provider default"})}),ec.thinkingLevels.map(e=>(0,n.jsx)(m.A,{value:e,children:e.charAt(0).toUpperCase()+e.slice(1)},e))]})]}),ec.thinkingBudget&&(0,n.jsx)(s.A,{margin:"dense",label:"Thinking Budget",fullWidth:!0,type:"number",value:null!=(d=w.thinkingBudget)?d:"",onChange:e=>{let t=e.target.value,r=""===t?void 0:Number(t);I(e=>({...e,thinkingBudget:void 0!==r&&Number.isFinite(r)&&r>=-1?Math.floor(r):void 0}))},inputProps:{min:-1,step:1},helperText:"Gemini 2.5 thinking tokens. -1 = adaptive, 0 = disabled where supported, blank = provider default."}),ec.priority&&(0,n.jsxs)(J.A,{fullWidth:!0,margin:"dense",children:[(0,n.jsx)($.A,{id:"service-tier-label",children:"Priority"}),(0,n.jsxs)(H.A,{labelId:"service-tier-label",label:"Priority",value:w.serviceTier||"default",onChange:e=>I(t=>({...t,serviceTier:e.target.value})),children:[(0,n.jsx)(m.A,{value:"default",children:"Standard"}),(0,n.jsx)(m.A,{value:"priority",children:"Priority (faster)"})]}),(0,n.jsx)(S.A,{variant:"caption",color:"text.secondary",sx:{mt:.5,ml:1.75},children:"Priority uses Codex Fast mode and may consume more plan usage."})]}),(0,n.jsx)(s.A,{margin:"dense",label:"Context Window (tokens)",fullWidth:!0,type:"number",value:null!=(c=w.contextWindow)?c:"",onChange:e=>{let t=e.target.value,r=""===t?void 0:Number(t);I(e=>({...e,contextWindow:void 0!==r&&Number.isFinite(r)&&r>0?Math.floor(r):void 0}))},helperText:"Discovered automatically when the provider advertises it; you can override it manually."}),(0,n.jsx)(s.A,{margin:"dense",label:"Max Turns",fullWidth:!0,type:"number",value:null!=(p=w.maxTurns)?p:"",onChange:e=>{let t=e.target.value,r=""===t?void 0:Number(t);I(e=>({...e,maxTurns:void 0!==r&&Number.isFinite(r)&&r>0?Math.floor(r):void 0}))},inputProps:{min:1},helperText:"Max agentic turns before a run stops (default 50). Process nodes can override this per-node."}),ec.maxOutputTokens&&(0,n.jsx)(s.A,{margin:"dense",label:"Max Output Tokens (optional)",fullWidth:!0,type:"number",value:null!=(h=w.maxTokens)?h:"",onChange:e=>{let t=e.target.value,r=""===t?void 0:Number(t);I(e=>({...e,maxTokens:void 0!==r&&Number.isFinite(r)&&r>0?Math.floor(r):void 0}))},inputProps:{min:1},helperText:"Optional. Default cap on generated tokens. A request's max_tokens overrides this. Anthropic uses 8192 when unset."})]})}),(0,n.jsx)(C.Ay,{item:!0,xs:6,sx:{height:"100%"},children:(0,n.jsxs)(i.default,{sx:{display:"flex",flexDirection:"column",height:"100%",pl:2},children:[(0,n.jsx)(S.A,{variant:"h6",gutterBottom:!0,children:"Prompt Template"}),(0,n.jsx)(i.default,{sx:{flexGrow:1,display:"flex",flexDirection:"column",height:"calc(100% - 32px)"},children:(0,n.jsx)(et.A,{ref:K,value:w.promptTemplate||"",onChange:e=>ep("promptTemplate",e),label:"",height:"100%"})})]})})]}),E&&(0,n.jsxs)(i.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,n.jsx)(S.A,{variant:"h6",component:"h2",sx:{mb:2},children:"Bind to Global Variable"}),0===Object.keys(j).length?(0,n.jsx)(S.A,{sx:{mb:2},children:"No global variables available. Add some in Settings first."}):(0,n.jsx)(i.default,{sx:{maxHeight:300,overflow:"auto",mb:2},children:Object.entries(j).map(e=>{let[t,r]=e;return(0,n.jsx)(u.A,{onClick:()=>(e=>{M(!0),F(e),I(t=>({...t,ApiKey:"${global:".concat(e,"}")})),z(!1)})(t),fullWidth:!0,sx:{justifyContent:"flex-start",textAlign:"left",mb:1,p:1,"&:hover":{bgcolor:"action.hover"}},children:(0,n.jsxs)(i.default,{sx:{display:"flex",justifyContent:"space-between",width:"100%"},children:[(0,n.jsx)(S.A,{children:t}),(0,n.jsx)(S.A,{variant:"body2",color:"text.secondary",children:t.toLowerCase().includes("key")||t.toLowerCase().includes("secret")||t.toLowerCase().includes("token")||t.toLowerCase().includes("password")?"********":"object"==typeof r&&null!==r&&"value"in r?r.value:r})]})},t)})}),(0,n.jsx)(i.default,{sx:{display:"flex",justifyContent:"flex-end"},children:(0,n.jsx)(u.A,{onClick:()=>z(!1),children:"Cancel"})})]})]}),(0,n.jsxs)(Z.A,{children:[(0,n.jsx)(u.A,{onClick:y,children:"Cancel"}),(0,n.jsx)(u.A,{type:"submit",variant:"contained",color:"primary",children:"Save"})]})]})})};var es=r(3648),ed=r(28548),ec=r(78470),eu=r(80777),ep=r(52005),em=r(99944),eh=r(22822),ex=r(10225),ef=r(8532),eg=r(88500),ev=r(92437),ey=r(14418),eb=r(83478),ej=r(93896),eA=r(42675),ew=r(36866),ek=r(825),eC=r(99352),eS=r(73703),eT=r(30351),eI=r(40463),eO=r(81685),eN=r(90123),eP=r(62984),eL=r(80345),eU=r(7072),eM=r(38786),eR=r(56290);let eF={"openrouter-free":[{name:"openrouter/free",displayName:"OpenRouter Free",description:"Automatically routes each request to an available free OpenRouter model.",provider:"openrouter",adapter:"openai",baseUrl:"https://openrouter.ai/api/v1",supportsTools:!0}],"requesty-free":[{name:"openrouter/free",displayName:"Requesty Free Router",description:"Routes to OpenRouter’s free-model router through your Requesty account.",provider:"requesty",adapter:"openai",baseUrl:"https://router.requesty.ai/v1",supportsTools:!0}],"openrouter-paid":[{name:"openrouter/auto",displayName:"OpenRouter Auto",description:"A balanced automatic router for everyday work.",provider:"openrouter",adapter:"openai",baseUrl:"https://openrouter.ai/api/v1",supportsTools:!0},{name:"deepseek/deepseek-v3.2",displayName:"DeepSeek V3.2",description:"A cost-conscious model for fast general-purpose work.",provider:"openrouter",adapter:"openai",baseUrl:"https://openrouter.ai/api/v1",supportsTools:!0},{name:"openai/gpt-5.6-sol",displayName:"GPT-5.6 Sol via OpenRouter",description:"A high-capability model for demanding agentic work.",provider:"openrouter",adapter:"openai",baseUrl:"https://openrouter.ai/api/v1",reasoningEffort:"medium",supportsTools:!0}],"requesty-paid":[{name:"deepseek/deepseek-v3.2",displayName:"DeepSeek V3.2 via Requesty",description:"A cost-conscious default routed through Requesty.",provider:"requesty",adapter:"openai",baseUrl:"https://router.requesty.ai/v1",supportsTools:!0},{name:"anthropic/claude-sonnet-4-6",displayName:"Claude Sonnet via Requesty",description:"A balanced model for planning, writing, and tool use.",provider:"requesty",adapter:"openai",baseUrl:"https://router.requesty.ai/v1",supportsTools:!0},{name:"openai/gpt-5.6-sol",displayName:"GPT-5.6 Sol via Requesty",description:"A high-capability model for demanding agentic work.",provider:"requesty",adapter:"openai",baseUrl:"https://router.requesty.ai/v1",reasoningEffort:"medium",supportsTools:!0}],"claude-subscription":[{name:"haiku",displayName:"Claude Haiku",description:"Fast and light for small tasks through your Claude subscription.",provider:"claude-subscription",adapter:"claude-cli",supportsTools:!0},{name:"sonnet",displayName:"Claude Sonnet",description:"The balanced everyday choice through your Claude subscription.",provider:"claude-subscription",adapter:"claude-cli",reasoningEffort:"medium",supportsTools:!0},{name:"opus",displayName:"Claude Opus",description:"The strongest Claude option for complex work.",provider:"claude-subscription",adapter:"claude-cli",reasoningEffort:"high",supportsTools:!0},{name:"fable",displayName:"Claude Fable",description:"An additional Claude subscription model for flexible routing.",provider:"claude-subscription",adapter:"claude-cli",reasoningEffort:"medium",supportsTools:!0}],"codex-subscription":[{name:"gpt-5.6-terra",displayName:"Codex Terra",description:"A balanced Codex model for everyday agent work.",provider:"codex",adapter:"codex-cli",reasoningEffort:"medium",supportsTools:!0},{name:"gpt-5.6-sol",displayName:"Codex Sol",description:"The high-capability Codex model for difficult work.",provider:"codex",adapter:"codex-cli",reasoningEffort:"high",supportsTools:!0},{name:"gpt-5.4-mini",displayName:"Codex Mini",description:"A quick, efficient Codex option for smaller tasks.",provider:"codex",adapter:"codex-cli",reasoningEffort:"medium",supportsTools:!0}],"gemini-native":[{name:"gemini-2.5-flash-lite",displayName:"Gemini Flash Lite",description:"A quick and economical native Gemini model.",provider:"gemini",adapter:"gemini",supportsTools:!0},{name:"gemini-2.5-flash",displayName:"Gemini Flash",description:"A balanced native Gemini model for everyday work.",provider:"gemini",adapter:"gemini",supportsTools:!0},{name:"gemini-2.5-pro",displayName:"Gemini Pro",description:"A stronger native Gemini model for complex work.",provider:"gemini",adapter:"gemini",supportsTools:!0}]};function eE(e){var t,r,n,o;let a=null!=(o=null==(t=e.apiKey)?void 0:t.trim())?o:"";return("ollama"===e.kind?[{name:(null==(r=e.ollamaModel)?void 0:r.trim())||"llama3.2:3b",displayName:"Local ".concat((null==(n=e.ollamaModel)?void 0:n.trim())||"Llama 3.2"),description:"Runs privately on this machine through Ollama.",provider:"ollama",adapter:"openai",baseUrl:"".concat((e.ollamaUrl||"http://localhost:11434").replace(/\/+$/,""),"/v1"),supportsTools:!0}]:eF[e.kind]).map(t=>({id:(0,A.A)(),name:t.name,displayName:t.displayName,description:t.description,ApiKey:"ollama"===e.kind?"ollama":a,baseUrl:t.baseUrl||"",provider:t.provider,adapter:t.adapter,promptTemplate:"",temperature:"openai"===t.adapter||"gemini"===t.adapter?"0.0":void 0,reasoningEffort:t.reasoningEffort,supportsTools:t.supportsTools}))}function ez(){let e=(0,es._)(["\n 0%, 100% { transform: translate3d(0, 0, 0) rotate(0deg); }\n 50% { transform: translate3d(0, -9px, 0) rotate(5deg); }\n"]);return ez=function(){return e},e}function eW(){let e=(0,es._)(["\n from { opacity: 0; transform: translate3d(18px, 0, 0) scale(.985); }\n to { opacity: 1; transform: translate3d(0, 0, 0) scale(1); }\n"]);return eW=function(){return e},e}function eD(){let e=(0,es._)(["\n 0% { transform: scale(.6) rotate(-12deg); opacity: 0; }\n 70% { transform: scale(1.08) rotate(3deg); opacity: 1; }\n 100% { transform: scale(1) rotate(0); opacity: 1; }\n"]);return eD=function(){return e},e}let eq=(0,ex.i7)(ez()),eB=(0,ex.i7)(eW()),eK=(0,ex.i7)(eD()),eG={"openrouter-free":{eyebrow:"Free \xb7 online",title:"Meet your free AI router",summary:"OpenRouter will pick an available zero-cost model for every request. It is ideal for learning and light use.",accountUrl:"https://openrouter.ai/settings/keys",accountLabel:"Create an OpenRouter key",keyLabel:"OpenRouter API key",note:"Free models have lower rate limits and can change as availability shifts. FLUJO creates the exact technical model openrouter/free."},"requesty-free":{eyebrow:"Free \xb7 online",title:"Connect through Requesty",summary:"Requesty gives you one gateway for many providers. This starter connection targets OpenRouter’s free router.",accountUrl:"https://app.requesty.ai/api-keys",accountLabel:"Create a Requesty key",keyLabel:"Requesty API key",note:"The target model is free, but Requesty account terms and routing limits still apply. Check the dashboard before heavier use."},"openrouter-paid":{eyebrow:"Pay as you go \xb7 online",title:"One key, a useful starter team",summary:"Add credits when you need them—no monthly subscription. FLUJO will create an automatic router, a cost-conscious model, and a high-capability model.",accountUrl:"https://openrouter.ai/settings/keys",accountLabel:"Open OpenRouter keys",keyLabel:"OpenRouter API key",note:"Provider usage is metered. Set a spending limit in OpenRouter before connecting if you want a hard ceiling."},"requesty-paid":{eyebrow:"Pay as you go \xb7 online",title:"Route a starter team with Requesty",summary:"Use a single funded account for DeepSeek, Claude, and OpenAI models, with Requesty handling the gateway.",accountUrl:"https://app.requesty.ai/api-keys",accountLabel:"Open Requesty keys",keyLabel:"Requesty API key",note:"Usage is billed through your Requesty account. Add budgets or policies in Requesty when you need tighter controls."},"claude-subscription":{eyebrow:"Existing subscription \xb7 Claude",title:"Bring your Claude plan to FLUJO",summary:"Claude Code signs in to your Pro or Max plan. One setup token powers four useful aliases in FLUJO.",keyLabel:"Token from claude setup-token",note:"The token is stored using FLUJO’s normal encrypted model-key storage. Your plan’s usage limits still apply."},"codex-subscription":{eyebrow:"Existing subscription \xb7 ChatGPT",title:"Bring your ChatGPT plan through Codex",summary:"Codex uses its local ChatGPT sign-in. FLUJO does not need your password or a copied browser token.",note:"Run codex login in a terminal and complete the browser flow. FLUJO then creates a balanced Codex model set."},"gemini-native":{eyebrow:"Google \xb7 native SDK",title:"Connect Gemini natively",summary:"FLUJO talks directly to Google’s GenAI SDK and creates light, balanced, and pro Gemini choices.",accountUrl:"https://aistudio.google.com/app/apikey",accountLabel:"Create a Gemini API key",keyLabel:"Gemini API key",note:"A Gemini app subscription and Gemini API billing are separate products. The API key controls this connection."}};function eX(e){let{icon:t,title:r,description:o,badge:a,onClick:s}=e,d=(0,w.A)();return(0,n.jsxs)(l.A,{component:"button",type:"button",variant:"outlined",onClick:s,sx:{position:"relative",width:"100%",minHeight:132,p:2.2,borderRadius:3,color:"text.primary",textAlign:"left",cursor:"pointer",font:"inherit",background:"linear-gradient(145deg, ".concat((0,ef.X4)(d.palette.primary.main,.08),", ").concat((0,ef.X4)(d.palette.background.paper,.72)," 55%)"),transition:"transform 180ms ease, border-color 180ms ease, box-shadow 180ms ease","&:hover":{transform:"translateY(-3px) rotate(-.2deg)",borderColor:(0,ef.X4)(d.palette.primary.main,.7),boxShadow:"0 16px 38px ".concat((0,ef.X4)(d.palette.primary.main,.16))},"&:focus-visible":{outline:"3px solid ".concat((0,ef.X4)(d.palette.primary.main,.3)),outlineOffset:3}},children:[a?(0,n.jsx)(ed.A,{label:a,size:"small",color:"primary",sx:{position:"absolute",top:12,right:12}}):null,(0,n.jsx)(i.default,{sx:{width:43,height:43,display:"grid",placeItems:"center",mb:1.3,borderRadius:2.4,color:"primary.main",bgcolor:(0,ef.X4)(d.palette.primary.main,.12)},children:(0,n.jsx)(t,{})}),(0,n.jsx)(S.A,{variant:"subtitle1",sx:{fontWeight:720,pr:7*!!a},children:r}),(0,n.jsx)(S.A,{variant:"body2",color:"text.secondary",sx:{mt:.45},children:o})]})}function e_(e){let{children:t}=e;return(0,n.jsx)(i.default,{sx:{display:"grid",gridTemplateColumns:{xs:"1fr",sm:"repeat(3, minmax(0, 1fr))"},gap:1.5},children:t})}function eJ(e){let{command:t,copied:r,onCopy:o}=e,a=(0,w.A)();return(0,n.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1,px:1.5,py:1,borderRadius:2,bgcolor:(0,ef.X4)(a.palette.common.black,"dark"===a.palette.mode?.26:.055)},children:[(0,n.jsx)(eU.A,{fontSize:"small",color:"action"}),(0,n.jsx)(S.A,{component:"code",variant:"body2",sx:{flex:1,overflowWrap:"anywhere",fontFamily:"var(--font-geist-mono), ui-monospace, monospace"},children:t}),(0,n.jsx)(ec.A,{title:r?"Copied":"Copy command",children:(0,n.jsx)(T.A,{size:"small",onClick:o,"aria-label":"Copy ".concat(t),children:r?(0,n.jsx)(ey.A,{color:"success",fontSize:"small"}):(0,n.jsx)(ew.A,{fontSize:"small"})})})]})}function e$(e){var t;let{open:r,onClose:a,onManualCreation:d,onCreateModels:c}=e,p=(0,w.A)(),[m,h]=(0,o.useState)("welcome"),[x,g]=(0,o.useState)([]),[v,b]=(0,o.useState)("beginner"),[A,C]=(0,o.useState)(null),[I,O]=(0,o.useState)(""),[N,P]=(0,o.useState)(!1),[L,U]=(0,o.useState)(!1),[M,R]=(0,o.useState)(null),[F,E]=(0,o.useState)([]),[z,W]=(0,o.useState)([]),[D,q]=(0,o.useState)(null),[B,K]=(0,o.useState)(null),[X,J]=(0,o.useState)([]),[$,H]=(0,o.useState)("idle"),[Y,Z]=(0,o.useState)(null),[V,Q]=(0,o.useState)(!1),[ee,et]=(0,o.useState)(!1),[er,en]=(0,o.useState)(!1),[eo,ea]=(0,o.useState)([]);(0,o.useEffect)(()=>{r&&(h("welcome"),g([]),b("beginner"),C(null),O(""),P(!1),U(!1),R(null),E([]),W([]),q(null),K(null),J([]),H("idle"),Z(null),et(!1),ea([]))},[r]);let el=e=>{g(e=>[...e,m]),h(e),R(null)},ei=e=>{C(e),el("setup")},es=async e=>{try{await navigator.clipboard.writeText(e),q(e),window.setTimeout(()=>q(t=>t===e?null:t),1600)}catch(e){R("Could not copy automatically. Select the command and copy it manually.")}},ec=(0,o.useCallback)(async()=>{Q(!0),R(null);try{let e=await fetch("/api/local-models/capability",{cache:"no-store"});if(!e.ok)throw Error("Could not inspect this machine.");Z(await e.json())}catch(e){R(e instanceof Error?e.message:"Could not inspect this machine.")}finally{et(!0),Q(!1)}},[]);(0,o.useEffect)(()=>{!r||"setup"!==m||"ollama"!==A||ee||V||ec()},[A,ec,ee,V,r,m]);let ex=async e=>{K(e),H("idle"),J([]),R(null);try{let t=await fetch("/api/setup/ai-cli",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tool:e})});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error||"The installer could not be started.")}let r=!1,n="";if(await (0,eR.z)(t,e=>{("stdout"===e.type||"stderr"===e.type)&&J(t=>[...t,e.data].slice(-8)),"status"===e.type&&e.message&&J(t=>[...t,e.message].slice(-8)),"result"===e.type&&(r=e.success,n=e.error||"")}),!r)throw Error(n||"WinGet did not finish successfully.");H("success"),"ollama"===e&&window.setTimeout(()=>void ec(),1200)}catch(e){H("error"),R(e instanceof Error?e.message:"Installation failed.")}finally{K(null)}},ew=async e=>{U(!0),R(null);try{let t=await c(e);if(!t.success)throw Error(t.error||"FLUJO could not create the model connection.");E(t.created),W(t.existing),el("success")}catch(e){R(e instanceof Error?e.message:"FLUJO could not create the model connection.")}finally{U(!1)}},eF=async()=>A&&"ollama"!==A?"codex-subscription"===A||I.trim()?"codex-subscription"!==A||N?void await ew(eE({kind:A,apiKey:I})):void R("Confirm that codex login is complete before creating the models."):void R("claude-subscription"===A?"Paste the token produced by claude setup-token first.":"Paste your API key first."):void 0,ez=async()=>{var e;let t=(null==Y?void 0:Y.suggestedModel)||"llama3.2:3b",r=null==Y||null==(e=Y.installedModels)?void 0:e.some(e=>e===t);if(!(null==Y?void 0:Y.ollamaReachable))return void R("Start Ollama, then use “Check again” before downloading a model.");if(!r){en(!0),ea([]),R(null);try{let e=await fetch("/api/local-models/pull",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:t})});if(!e.ok)throw Error("Ollama could not start the model download.");let r=!1,n="";if(await (0,eR.z)(e,e=>{("stdout"===e.type||"stderr"===e.type)&&ea(t=>[...t,e.data].slice(-6)),"result"===e.type&&(r=e.success,n=e.error||"")}),!r)throw Error(n||"Could not download ".concat(t,"."))}catch(e){R(e instanceof Error?e.message:"The model download failed."),en(!1);return}en(!1)}await ew(eE({kind:"ollama",ollamaModel:t,ollamaUrl:null==Y?void 0:Y.ollamaUrl}))},eW="beginner"===v,eD=Math.min(96,"welcome"===m?8:"success"===m?100:22+15*x.length),e$=A&&"ollama"!==A?eG[A]:null,eH=(0,o.useMemo)(()=>A?eE({kind:A}).map(e=>e.displayName||e.name):[],[A]),eY=(null==Y?void 0:Y.suggestedModel)||"llama3.2:3b",eZ=!!(null==Y||null==(t=Y.installedModels)?void 0:t.includes(eY)),eV=(e,t,r)=>(0,n.jsxs)(eu.A,{spacing:1.1,children:[(0,n.jsx)(eJ,{command:t,copied:D===t,onCopy:()=>void es(t)}),(0,n.jsx)(u.A,{variant:"outlined",startIcon:B===e?(0,n.jsx)(k.default,{size:17}):(0,n.jsx)(eC.A,{}),disabled:!!B,onClick:()=>void ex(e),sx:{alignSelf:"flex-start"},children:B===e?"Installing…":"Install with WinGet"}),r?(0,n.jsx)(eJ,{command:r,copied:D===r,onCopy:()=>void es(r)}):null,"success"===$?(0,n.jsx)(f.A,{severity:"success",children:"Installed. Continue with the sign-in command below."}):null,X.length?(0,n.jsx)(i.default,{component:"pre",sx:{m:0,p:1.4,maxHeight:110,overflow:"auto",borderRadius:2,bgcolor:(0,ef.X4)(p.palette.common.black,"dark"===p.palette.mode?.3:.06),color:"text.secondary",whiteSpace:"pre-wrap",fontSize:11},children:X.join("\n")}):null]});return(0,n.jsx)(G.A,{open:r,onClose:L||er||B?void 0:a,fullWidth:!0,maxWidth:"md","aria-label":"Connect AI setup wizard",children:(0,n.jsxs)(_.A,{sx:{position:"relative",minHeight:{xs:560,sm:590},p:{xs:2.2,sm:4},overflowX:"hidden",overflowY:"auto"},children:[(0,n.jsx)(i.default,{"aria-hidden":!0,sx:{position:"absolute",width:220,height:220,borderRadius:"50%",top:-120,right:-70,bgcolor:(0,ef.X4)(p.palette.secondary.main,.12),filter:"blur(1px)",animation:"".concat(eq," 6s ease-in-out infinite")}}),(0,n.jsx)(i.default,{"aria-hidden":!0,sx:{position:"absolute",width:150,height:150,borderRadius:5,bottom:-100,left:-70,bgcolor:(0,ef.X4)(p.palette.primary.main,.1),transform:"rotate(24deg)",animation:"".concat(eq," 7s ease-in-out -2s infinite")}}),(0,n.jsxs)(i.default,{sx:{position:"relative",zIndex:1},children:[(0,n.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1,mb:2},children:[x.length&&"success"!==m?(0,n.jsx)(T.A,{onClick:()=>{let e=x[x.length-1];e&&(g(e=>e.slice(0,-1)),h(e),R(null))},"aria-label":"Back",children:(0,n.jsx)(eg.A,{})}):(0,n.jsx)(i.default,{sx:{width:40}}),(0,n.jsx)(i.default,{sx:{flex:1},children:(0,n.jsx)(ep.A,{variant:"determinate",value:eD,"aria-label":"Connection progress"})}),(0,n.jsx)(T.A,{onClick:a,"aria-label":"Close connection wizard",disabled:L||er||!!B,children:(0,n.jsx)(eb.A,{})})]}),M?(0,n.jsx)(f.A,{severity:"error",onClose:()=>R(null),sx:{mb:2},children:M}):null,(0,n.jsx)(i.default,{sx:{animation:"".concat(eB," 260ms ease-out both"),"@media (prefers-reduced-motion: reduce)":{animation:"none"}},children:(()=>{if("welcome"===m)return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(ed.A,{icon:(0,n.jsx)(y.A,{}),label:"A two-minute setup",color:"primary",variant:"outlined",sx:{mb:2}}),(0,n.jsx)(S.A,{variant:"h4",children:"Let’s connect your AI!"}),(0,n.jsx)(S.A,{variant:"body1",color:"text.secondary",sx:{mt:1,mb:3,maxWidth:680},children:"Do you already know how model providers, API keys, and local AI work?"}),(0,n.jsxs)(e_,{children:[(0,n.jsx)(eX,{icon:eP.A,title:"No idea",description:"Explain the choices and guide me one small step at a time.",badge:"Gentle guide",onClick:()=>{b("beginner"),el("budget")}}),(0,n.jsx)(eX,{icon:ev.A,title:"I know a bit",description:"Give me the important tradeoffs, then let me move quickly.",onClick:()=>{b("familiar"),el("budget")}}),(0,n.jsx)(eX,{icon:j.A,title:"I’m an expert",description:"Skip the wizard and open every model setting.",onClick:d})]})]});if("budget"===m)return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(S.A,{variant:"overline",color:"primary.main",children:"First things first"}),(0,n.jsx)(S.A,{variant:"h4",children:"How would you like to pay for AI?"}),eW?(0,n.jsx)(S.A,{variant:"body1",color:"text.secondary",sx:{mt:1,mb:3,maxWidth:700},children:"Free services are great for learning but have tighter limits. A subscription reuses a plan you already have. Pay-as-you-go APIs charge only for what your flows use and are usually the most flexible."}):(0,n.jsx)(S.A,{color:"text.secondary",sx:{mt:1,mb:3},children:"Pick the billing style you want FLUJO to build around."}),(0,n.jsxs)(e_,{children:[(0,n.jsx)(eX,{icon:eN.A,title:"Let’s start free",description:"No model usage bill; expect lower limits and changing availability.",badge:"Start here",onClick:()=>el("location")}),(0,n.jsx)(eX,{icon:eM.A,title:"I already subscribe",description:"Use Claude, ChatGPT/Codex, or a native Gemini developer key.",onClick:()=>el("subscription-provider")}),(0,n.jsx)(eX,{icon:ek.A,title:"I can pay—no subscription",description:"Fund an API account and pay only for the requests you make.",onClick:()=>el("paid-provider")})]})]});if("location"===m)return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(S.A,{variant:"overline",color:"primary.main",children:"Free route"}),(0,n.jsx)(S.A,{variant:"h4",children:"Online or offline?"}),(0,n.jsx)(S.A,{color:"text.secondary",sx:{mt:1,mb:3},children:eW?"Online is easier and uses someone else’s hardware. Offline keeps prompts on this machine but downloads a model and uses your RAM or GPU.":"Online is quickest; offline is private and uses this computer."}),(0,n.jsxs)(i.default,{sx:{display:"grid",gridTemplateColumns:{xs:"1fr",sm:"1fr 1fr"},gap:1.5},children:[(0,n.jsx)(eX,{icon:ej.A,title:"Online",description:"Fastest setup. Create a provider account and an API key.",badge:"Easy",onClick:()=>el("free-provider")}),(0,n.jsx)(eX,{icon:eA.A,title:"Offline",description:"Install Ollama and download a model sized for this computer.",badge:"Private",onClick:()=>ei("ollama")})]})]});if("free-provider"===m)return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(S.A,{variant:"overline",color:"primary.main",children:"Free \xb7 online"}),(0,n.jsx)(S.A,{variant:"h4",children:"Choose your gateway"}),(0,n.jsx)(S.A,{color:"text.secondary",sx:{mt:1,mb:3},children:eW?"Both use the same free-router target; OpenRouter is the most direct route.":"OpenRouter is the direct route; Requesty adds gateway features."}),(0,n.jsxs)(i.default,{sx:{display:"grid",gridTemplateColumns:{xs:"1fr",sm:"1fr 1fr"},gap:1.5},children:[(0,n.jsx)(eX,{icon:eO.A,title:"OpenRouter",description:"Direct access to openrouter/free, with no model charges.",badge:"Recommended",onClick:()=>ei("openrouter-free")}),(0,n.jsx)(eX,{icon:ej.A,title:"Requesty",description:"A unified gateway that can grow into policies and paid models later.",onClick:()=>ei("requesty-free")})]})]});if("subscription-provider"===m)return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(S.A,{variant:"overline",color:"primary.main",children:"Use what you already have"}),(0,n.jsx)(S.A,{variant:"h4",children:"Which service are you connecting?"}),(0,n.jsx)(S.A,{color:"text.secondary",sx:{mt:1,mb:3},children:eW?"FLUJO will create a ready-to-use bundle, not just one empty model record.":"Pick the account you already use."}),(0,n.jsxs)(e_,{children:[(0,n.jsx)(eX,{icon:eL.A,title:"Claude",description:"Use a Claude Pro or Max plan through Claude Code.",onClick:()=>ei("claude-subscription")}),(0,n.jsx)(eX,{icon:eU.A,title:"ChatGPT / Codex",description:"Use the local Codex sign-in attached to your ChatGPT plan.",badge:"No key paste",onClick:()=>ei("codex-subscription")}),(0,n.jsx)(eX,{icon:y.A,title:"Gemini Native",description:"Use Google’s native GenAI SDK with a Gemini developer key.",onClick:()=>ei("gemini-native")})]})]});if("paid-provider"===m)return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(S.A,{variant:"overline",color:"primary.main",children:"Pay only for usage"}),(0,n.jsx)(S.A,{variant:"h4",children:"Choose your model gateway"}),(0,n.jsx)(S.A,{color:"text.secondary",sx:{mt:1,mb:3},children:eW?"You fund one account, and FLUJO creates several model choices that share its encrypted key.":"Both gateways share one encrypted key across the starter bundle."}),(0,n.jsxs)(i.default,{sx:{display:"grid",gridTemplateColumns:{xs:"1fr",sm:"1fr 1fr"},gap:1.5},children:[(0,n.jsx)(eX,{icon:eO.A,title:"OpenRouter",description:"Broad model catalog with direct auto-routing and spending limits.",badge:"Recommended",onClick:()=>ei("openrouter-paid")}),(0,n.jsx)(eX,{icon:ej.A,title:"Requesty",description:"Unified routing with policies, observability, and provider fallbacks.",onClick:()=>ei("requesty-paid")})]})]});if("setup"===m&&"ollama"===A)return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(S.A,{variant:"overline",color:"primary.main",children:"Free \xb7 offline"}),(0,n.jsx)(S.A,{variant:"h4",children:"Make this computer the AI provider"}),(0,n.jsx)(S.A,{color:"text.secondary",sx:{mt:1,mb:2.5},children:"Ollama runs the model locally. The first model download can be several gigabytes; after that, prompts stay on this machine."}),V?(0,n.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1.5,py:3},children:[(0,n.jsx)(k.default,{size:22}),(0,n.jsx)(S.A,{children:"Checking Ollama and this machine…"})]}):null,!V&&Y?(0,n.jsx)(l.A,{variant:"outlined",sx:{p:2,mb:2,borderRadius:3},children:(0,n.jsxs)(eu.A,{direction:{xs:"column",sm:"row"},justifyContent:"space-between",spacing:1.5,children:[(0,n.jsxs)(i.default,{children:[(0,n.jsxs)(S.A,{variant:"subtitle1",sx:{fontWeight:720},children:["Recommended: ",eY]}),(0,n.jsx)(S.A,{variant:"body2",color:"text.secondary",children:Y.ollamaReachable?eZ?"Ollama is ready and this model is already downloaded.":"Ollama is ready. FLUJO can download this model now.":"Ollama is not running yet. Install or start it, then check again."})]}),(0,n.jsx)(ed.A,{color:Y.ollamaReachable?"success":"warning",label:Y.ollamaReachable?"Ollama ready":"Not running"})]})}):null,V||(null==Y?void 0:Y.ollamaReachable)?null:(0,n.jsxs)(i.default,{sx:{mb:2},children:[eV("ollama","winget install --id Ollama.Ollama -e --source winget"),(0,n.jsx)(u.A,{startIcon:(0,n.jsx)(eI.A,{}),onClick:()=>void ec(),disabled:V||!!B,sx:{mt:1},children:"Check again"})]}),er?(0,n.jsxs)(i.default,{sx:{my:2},children:[(0,n.jsx)(ep.A,{}),(0,n.jsxs)(S.A,{variant:"body2",sx:{mt:1},children:["Downloading ",eY,"… keep FLUJO open."]}),eo.length?(0,n.jsx)(S.A,{component:"pre",variant:"caption",color:"text.secondary",sx:{whiteSpace:"pre-wrap"},children:eo.join("\n")}):null]}):null,(0,n.jsx)(u.A,{variant:"contained",size:"large",startIcon:L||er?(0,n.jsx)(k.default,{size:18,color:"inherit"}):(0,n.jsx)(eC.A,{}),onClick:()=>void ez(),disabled:!(null==Y?void 0:Y.ollamaReachable)||L||er,children:eZ?"Connect ".concat(eY):"Download ".concat(eY," & connect")})]});if("setup"===m&&A&&e$){let e="claude-subscription"===A,t="codex-subscription"===A;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(S.A,{variant:"overline",color:"primary.main",children:e$.eyebrow}),(0,n.jsx)(S.A,{variant:"h4",children:e$.title}),(0,n.jsx)(S.A,{color:"text.secondary",sx:{mt:1,mb:2.2,maxWidth:720},children:e$.summary}),e?(0,n.jsxs)(i.default,{sx:{mb:2},children:[(0,n.jsx)(S.A,{variant:"subtitle2",sx:{mb:1},children:"1. Install Claude Code, then create a setup token"}),eV("claude","winget install --id Anthropic.ClaudeCode -e --source winget","claude setup-token")]}):null,t?(0,n.jsxs)(i.default,{sx:{mb:2},children:[(0,n.jsx)(S.A,{variant:"subtitle2",sx:{mb:1},children:"1. Install Codex, then sign in with ChatGPT"}),eV("codex","winget install --id OpenAI.Codex -e --source winget","codex login"),(0,n.jsx)(em.A,{sx:{mt:1},control:(0,n.jsx)(eh.A,{checked:N,onChange:e=>P(e.target.checked)}),label:"I completed the Codex browser sign-in"})]}):null,e$.accountUrl?(0,n.jsx)(u.A,{href:e$.accountUrl,target:"_blank",rel:"noreferrer",variant:"outlined",startIcon:(0,n.jsx)(eT.A,{}),sx:{mb:2},children:e$.accountLabel}):null,t?null:(0,n.jsx)(s.A,{fullWidth:!0,type:"password",autoComplete:"off",label:"".concat(e?"2. ":"").concat(e$.keyLabel),value:I,onChange:e=>{O(e.target.value),R(null)},InputProps:{startAdornment:(0,n.jsx)(eS.A,{color:"action",sx:{mr:1}})},helperText:"Saved only when you finish; FLUJO encrypts it through the existing model-storage path.",sx:{mb:2}}),(0,n.jsx)(f.A,{severity:"info",sx:{mb:2},children:e$.note}),(0,n.jsx)(S.A,{variant:"subtitle2",sx:{mb:1},children:"FLUJO will add"}),(0,n.jsx)(eu.A,{direction:"row",gap:.8,flexWrap:"wrap",sx:{mb:2.5},children:eH.map(e=>(0,n.jsx)(ed.A,{label:e,variant:"outlined"},e))}),(0,n.jsxs)(u.A,{variant:"contained",size:"large",startIcon:L?(0,n.jsx)(k.default,{size:18,color:"inherit"}):(0,n.jsx)(y.A,{}),onClick:()=>void eF(),disabled:L||!!B,children:["Create ",1===eH.length?"my model":"my ".concat(eH.length," models")]})]})}if("success"===m){let e=[...F,...z].map(e=>e.displayName||e.name);return(0,n.jsxs)(i.default,{sx:{textAlign:"center",py:2},children:[(0,n.jsx)(i.default,{sx:{width:78,height:78,mx:"auto",mb:2,display:"grid",placeItems:"center",borderRadius:"50%",color:"success.main",bgcolor:(0,ef.X4)(p.palette.success.main,.13),animation:"".concat(eK," 520ms cubic-bezier(.2,.8,.2,1) both")},children:(0,n.jsx)(ey.A,{sx:{fontSize:47}})}),(0,n.jsx)(S.A,{variant:"h4",children:"Your AI is ready to flow"}),(0,n.jsxs)(S.A,{color:"text.secondary",sx:{mt:1,mb:2.2},children:[F.length?"".concat(F.length," new connection").concat(1===F.length?"":"s"," created."):"Your matching connections were already here.",z.length?" ".concat(z.length," existing connection").concat(1===z.length?" was":"s were"," kept."):""]}),(0,n.jsx)(eu.A,{direction:"row",gap:.8,justifyContent:"center",flexWrap:"wrap",sx:{mb:3},children:e.map(e=>(0,n.jsx)(ed.A,{icon:(0,n.jsx)(eL.A,{}),label:e,color:"primary",variant:"outlined"},e))}),(0,n.jsx)(u.A,{variant:"contained",size:"large",onClick:a,children:"See my models"})]})}return null})()},m)]})]})})}var eH=r(94929);let eY=(0,q.h)("app/models/ModelClient");function eZ(e){var t;let{initialModels:r}=e,w=(0,a.useRouter)(),k=(0,a.useSearchParams)(),[C,S]=(0,o.useState)(r),[T,I]=(0,o.useState)(""),[O,N]=(0,o.useState)(null),[P,L]=(0,o.useState)(!1),[U,M]=(0,o.useState)(!1),[R,F]=(0,o.useState)(null),[E,W]=(0,o.useState)(null),D=k.get("add"),q="manual"===D;if((0,o.useEffect)(()=>{q?W(e=>null!=e?e:{id:(0,A.A)(),name:"",displayName:"",description:"",ApiKey:"",baseUrl:"",provider:"openai",promptTemplate:"",temperature:"0.0"}):W(null)},[q]),(0,o.useEffect)(()=>{try{let e=(0,eo.X)();e&&"function"==typeof e.loadModels&&(M(!0),eY.debug("Model service is ready"))}catch(t){eY.warn("Model service not ready, retrying...",t);let e=setTimeout(()=>{try{let e=(0,eo.X)();e&&"function"==typeof e.loadModels&&(M(!0),eY.debug("Model service is now ready"))}catch(e){eY.warn("Model service still not ready",e)}},100);return()=>clearTimeout(e)}},[]),!U)return eY.debug("Waiting for model service to be ready..."),(0,n.jsx)(eH.default,{});let B=k.get("edit"),G=q?E:B&&null!=(t=C.find(e=>e.id===B))?t:null,X=q?!!E:!!B,_=async e=>{eY.info("Saving model",{modelId:e.id,modelName:e.name,mode:q?"add":"update"}),L(!0);try{let t=(0,eo.X)(),r=q?await t.addModel(e):await t.updateModel(e);if(!r.success)return N(r.error||"Failed to save model."),{success:!1,error:r.error};{let e=await t.loadModels();return S(e),W(null),w.push("/models"),{success:!0,model:r.model}}}catch(e){return eY.error("Failed to save model",e),N((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{L(!1)}},J=async e=>(eY.info("Editing model",{modelId:e.id,modelName:e.name}),w.push("/models?edit=".concat(e.id)),{success:!0}),$=async()=>{eY.info("Opening guided model connection wizard"),F(null),w.push("/models?add=1")},H=()=>{eY.info("Opening manual add-model modal"),F(null),w.push("/models?add=manual")},Y=async e=>{eY.info("Creating guided model bundle",{count:e.length}),L(!0),N(null);let t=[],r=[];try{let n=(0,eo.X)(),o=[...await n.loadModels()];for(let a of e){let e=o.find(e=>e.provider===a.provider&&(e.adapter||"openai")===(a.adapter||"openai")&&e.name.trim().toLowerCase()===a.name.trim().toLowerCase());if(e){r.push(e);continue}let l=a.displayName||a.name,i=l,s=2;for(;o.some(e=>{var t;return(null==(t=e.displayName)?void 0:t.trim().toLowerCase())===i.trim().toLowerCase()});)i="".concat(l," (").concat(s,")"),s+=1;let d=await n.addModel({...a,displayName:i});if(!d.success||!d.model){let e=await n.loadModels();return S(e),{success:!1,created:t,existing:r,error:d.error||"Could not create ".concat(i,".")}}t.push(d.model),o.push(d.model)}let a=await n.loadModels();return S(a),w.refresh(),{success:!0,created:t,existing:r}}catch(n){eY.error("Failed to create guided model bundle",n);let e=(null==n?void 0:n.message)||"Failed to create the guided model bundle.";return N(e),{success:!1,created:t,existing:r,error:e}}finally{L(!1)}},Z=async e=>{eY.info("Deleting model",{modelId:e}),L(!0);try{let t=(0,eo.X)();await t.deleteModel(e);let r=await t.loadModels();S(r)}catch(e){eY.error("Failed to delete model",e),N("Failed to delete model. Please try again.")}finally{L(!1)}},V=async(e,t)=>{eY.info("Setting model folder",{modelId:e,folder:t}),L(!0);try{let r=(0,eo.X)(),n=await r.getModel(e);if(!n)return void N("Model not found.");let o=await r.updateModel({...n,folder:t});if(!o.success)return void N(o.error||"Failed to move model to folder.");let a=await r.loadModels();S(a)}catch(e){eY.error("Failed to set model folder",e),N((null==e?void 0:e.message)||"Failed to move model to folder. Please try again.")}finally{L(!1)}},Q=async e=>{eY.info("Toggling model favorite",{modelId:e}),L(!0);try{let t=(0,eo.X)(),r=await t.getModel(e);if(!r)return void N("Model not found.");let n=!r.favorite,o=await t.updateModel({...r,favorite:n||void 0});if(!o.success)return void N(o.error||"Failed to update favorite.");let a=await t.loadModels();S(a)}catch(e){eY.error("Failed to toggle model favorite",e),N((null==e?void 0:e.message)||"Failed to update favorite. Please try again.")}finally{L(!1)}},ee=async()=>{W(null),w.push("/models")},et=T.trim()?C.filter(e=>{let t=T.toLowerCase();return(e.displayName||"").toLowerCase().includes(t)||(e.name||"").toLowerCase().includes(t)}):C;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(l.A,{elevation:0,variant:"outlined",sx:{mb:2.5,p:1.2,borderRadius:3},children:(0,n.jsxs)(i.default,{sx:{display:"flex",flexDirection:{xs:"column",sm:"row"},gap:1,alignItems:{xs:"stretch",sm:"center"},justifyContent:"space-between"},children:[(0,n.jsx)(s.A,{placeholder:"Search AI connections...",variant:"outlined",size:"small",value:T,onChange:e=>I(e.target.value),InputProps:{startAdornment:(0,n.jsx)(d.A,{position:"start",children:(0,n.jsx)(b.A,{fontSize:"small"})})},sx:{maxWidth:{sm:300},width:"100%"}}),(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(c.A,{variant:"contained",color:"primary","aria-label":"AI connection options",children:[(0,n.jsx)(u.A,{startIcon:(0,n.jsx)(g.A,{}),onClick:$,"data-tour":"add-model",children:"Connect AI"}),(0,n.jsx)(u.A,{size:"small","aria-label":"More AI connection options","aria-controls":R?"add-model-menu":void 0,"aria-haspopup":"menu","aria-expanded":R?"true":void 0,onClick:e=>F(e.currentTarget),sx:{px:.8,minWidth:40},children:(0,n.jsx)(v.A,{})})]}),(0,n.jsxs)(p.A,{id:"add-model-menu",anchorEl:R,open:!!R,onClose:()=>F(null),children:[(0,n.jsxs)(m.A,{onClick:$,children:[(0,n.jsx)(h.A,{children:(0,n.jsx)(y.A,{fontSize:"small"})}),(0,n.jsx)(x.A,{primary:"Guided connection",secondary:"Let FLUJO choose the setup"})]}),(0,n.jsxs)(m.A,{onClick:H,children:[(0,n.jsx)(h.A,{children:(0,n.jsx)(j.A,{fontSize:"small"})}),(0,n.jsx)(x.A,{primary:"Manual Creation",secondary:"Configure every model field"})]})]})]})]})}),O&&(0,n.jsx)(i.default,{sx:{mb:2},children:(0,n.jsx)(f.A,{severity:"error",onClose:()=>N(null),children:O})}),(0,n.jsx)(K,{models:et,isLoading:P,onAdd:$,onUpdate:J,onDelete:Z,folders:(0,z.yF)(C,e=>e.folder),onSetFolder:V,onToggleFavorite:Q}),(0,n.jsx)(e$,{open:"1"===D,onClose:ee,onManualCreation:H,onCreateModels:Y}),X&&G?(0,n.jsx)(ei,{open:X,model:G,onSave:_,onClose:ee}):null]})}},61033:(e,t,r)=>{"use strict";r.d(t,{A$:()=>c,X8:()=>i,YP:()=>u,js:()=>d});let n="_-_-_",o=/^(tool|resource):(.+)$/,a=/\$\{((?:tool|resource):[^}]+|_-_-_[^}]+)\}/g;function l(e,t){return"".concat(e,"__").concat(t)}function i(e,t,r){return"${".concat(e,":").concat(l(t,r),"}")}function s(e){let t=o.exec(e);if(t){let e=t[1],r=function(e){let t=e.indexOf("__");if(t<=0)return null;let r=e.slice(t+2);return r?{server:e.slice(0,t),name:r}:null}(t[2]);return r?{kind:e,server:r.server,name:r.name}:null}if(e.startsWith(n)){let t=e.split(n);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("}")?s(e.slice(2,-1)):null}function c(e){let t,r=[];for(a.lastIndex=0;null!==(t=a.exec(e));){let e=s(t[1]);e&&r.push({...e,fullMatch:t[0],index:t.index})}return r}function u(e){return"tool"===e.kind&&"handoff"===e.server?"handoff:".concat(e.name):"".concat(e.kind,":").concat(l(e.server,e.name))}},61267:(e,t,r)=>{"use strict";r.d(t,{A:()=>D});var n=r(95155),o=r(12115),a=r(33567),l=r(78470),i=r(41983),s=r(8532),d=r(84578),c=r(94049),u=r(25635),p=r(28548),m=r(29767),h=r(53062),x=r(1702),f=r(14915),g=r(4484),v=r(89623),y=r(11665),b=r(91665),j=r(62291),A=r(47529),w=r(88107),k=r(43076),C=r(73288),S=r(2778),T=r(52363),I=r(65036),O=r(4474),N=r(22003),P=r(21067),L=r(75912),U=r(91871),M=r(36741),R=r(48563);let F=e=>{var t,r,o,a,l,i,s,d,m;let{title:h,attempt:x}=e;return(0,n.jsxs)(c.default,{sx:{mb:2},children:[(0,n.jsxs)(c.default,{sx:{display:"flex",alignItems:"center",gap:1,mb:.5},children:[x.ok?(0,n.jsx)(M.A,{color:"success",fontSize:"small"}):(0,n.jsx)(R.A,{color:"error",fontSize:"small"}),(0,n.jsx)(u.A,{variant:"subtitle2",children:h}),"number"==typeof x.status&&(0,n.jsx)(p.A,{size:"small",label:"HTTP ".concat(x.status)}),(0,n.jsx)(p.A,{size:"small",variant:"outlined",label:"".concat(x.durationMs," ms")})]}),x.ok?(0,n.jsxs)(u.A,{variant:"body2",color:"text.secondary",sx:{pl:3},children:["Response: ",x.content?'"'.concat(x.content,'"'):"(empty)"]}):(0,n.jsxs)(c.default,{sx:{pl:3},children:[(0,n.jsx)(u.A,{variant:"body2",color:"error.main",children:null==(t=x.error)?void 0:t.message}),((null==(r=x.error)?void 0:r.code)||(null==(o=x.error)?void 0:o.type))&&(0,n.jsxs)(u.A,{variant:"caption",color:"text.secondary",display:"block",children:[(null==(a=x.error)?void 0:a.type)?"type: ".concat(x.error.type):"",(null==(l=x.error)?void 0:l.type)&&(null==(i=x.error)?void 0:i.code)?" \xb7 ":"",(null==(s=x.error)?void 0:s.code)?"code: ".concat(x.error.code):""]}),(null==(d=x.error)?void 0:d.retryAfter)&&(0,n.jsxs)(u.A,{variant:"caption",color:"text.secondary",display:"block",children:["retry-after: ",x.error.retryAfter,"s"]}),(null==(m=x.error)?void 0:m.body)!==void 0&&(0,n.jsx)(c.default,{component:"pre",sx:{mt:.5,p:1,bgcolor:"action.hover",borderRadius:1,fontSize:"0.7rem",overflowX:"auto",maxHeight:160},children:JSON.stringify(x.error.body,null,2)})]})]})},E=e=>{let{open:t,modelLabel:r,loading:o,result:a,error:l,onClose:i,onRetry:s}=e,d=(null==a?void 0:a.provider)==="codex"?"Codex SDK (used by flows)":"OpenAI SDK (used by flows)";return(0,n.jsxs)(S.A,{open:t,onClose:i,maxWidth:"sm",fullWidth:!0,children:[(0,n.jsxs)(T.A,{children:["Test model: ",r]}),(0,n.jsx)(I.A,{dividers:!0,children:o?(0,n.jsxs)(c.default,{sx:{display:"flex",alignItems:"center",gap:2,py:3},children:[(0,n.jsx)(O.default,{size:24}),(0,n.jsx)(u.A,{variant:"body2",children:"Sending a direct test request (SDK + axios)…"})]}):l?(0,n.jsx)(N.A,{severity:"error",children:l}):a?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(N.A,{severity:a.ok?"success":"warning",sx:{mb:2},children:a.diagnosis}),(0,n.jsxs)(u.A,{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,n.jsx)(P.A,{sx:{mb:2}}),(0,n.jsx)(F,{title:d,attempt:a.sdk}),(0,n.jsx)(F,{title:"axios (independent cross-check)",attempt:a.axios})]}):null}),(0,n.jsxs)(L.A,{children:[(0,n.jsx)(U.A,{onClick:s,disabled:o,children:"Run again"}),(0,n.jsx)(U.A,{onClick:i,variant:"contained",children:"Close"})]})]})};var z=r(81956);let W=(0,C.h)("frontend/components/models/list/ModelCard"),D=e=>{let{model:t,onEdit:r,onDelete:C,folder:S,folders:T=[],onSetFolder:I,selectable:O=!1,selected:N=!1,onSelect:P,onToggleFavorite:L}=e,U=(0,a.A)(),[M,R]=(0,o.useState)(!1),[F,D]=(0,o.useState)(!1),[q,B]=(0,o.useState)(null),[K,G]=(0,o.useState)(null),[X,_]=(0,o.useState)(null),J=async()=>{D(!0),G(null),B(null);try{let e=await (0,k.X)().testModel({modelId:t.id});B(e)}catch(e){W.error("Model test failed",{modelId:t.id,error:e}),G(e instanceof Error?e.message:"Failed to run test")}finally{D(!1)}},$=L?(0,n.jsx)(l.A,{title:t.favorite?"Remove from favorites":"Add to favorites",arrow:!0,placement:"top",children:(0,n.jsx)(i.A,{size:"small","aria-label":t.favorite?"remove from favorites":"add to favorites",onClick:e=>{e.stopPropagation(),null==L||L(t.id)},sx:{position:"absolute",top:4,left:4,zIndex:2,color:t.favorite?U.palette.warning.main:U.palette.text.secondary,backgroundColor:(0,s.X4)(U.palette.background.paper,.6),"&:hover":{backgroundColor:(0,s.X4)(U.palette.background.paper,.9)}},children:t.favorite?(0,n.jsx)(j.A,{fontSize:"small"}):(0,n.jsx)(A.A,{fontSize:"small"})})}):null,H=(0,n.jsx)(n.Fragment,{children:(0,n.jsxs)(d.A,{sx:{flexGrow:1,p:2.25},children:[(0,n.jsxs)(c.default,{sx:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:1,mb:1.2},children:[(0,n.jsx)(u.A,{variant:"h6",sx:{pr:1},children:t.displayName||t.name}),(0,n.jsx)(p.A,{label:(0,w.T_)(t.provider,t.adapter).label,size:"small",sx:{flexShrink:0,color:"primary.light",bgcolor:(0,s.X4)(U.palette.primary.main,.09),border:"1px solid ".concat((0,s.X4)(U.palette.primary.main,.16))}})]}),(0,n.jsx)(u.A,{variant:"body2",color:"text.secondary",sx:{mb:2,minHeight:42},style:{display:"-webkit-box",WebkitLineClamp:3,WebkitBoxOrient:"vertical",overflow:"hidden",textOverflow:"ellipsis"},children:t.description}),(0,n.jsxs)(c.default,{sx:{mb:1,p:1.25,border:1,borderColor:"divider",borderRadius:2.5,bgcolor:(0,s.X4)(U.palette.background.default,.44)},children:[t.displayName&&(0,n.jsxs)(u.A,{variant:"body2",color:"text.secondary",noWrap:!0,children:[(0,n.jsx)(c.default,{component:"span",sx:{color:"text.primary",fontWeight:650},children:"Model"})," \xb7 ",t.name]}),"number"==typeof t.contextWindow&&(0,n.jsxs)(u.A,{variant:"body2",color:"text.secondary",children:[(0,n.jsx)(c.default,{component:"span",sx:{color:"text.primary",fontWeight:650},children:"Context"})," \xb7 ",t.contextWindow.toLocaleString()," tokens"]})]}),t.baseUrl&&(0,n.jsx)(l.A,{title:t.baseUrl,arrow:!0,placement:"top",children:(0,n.jsxs)(u.A,{variant:"body2",color:"text.secondary",noWrap:!0,children:["Base URL: ",t.baseUrl]})}),S&&(0,n.jsx)(p.A,{icon:(0,n.jsx)(b.A,{}),label:S,size:"small",variant:"outlined",sx:{mt:1,maxWidth:"100%"}})]})});return O?(0,n.jsxs)(m.A,{elevation:0,role:"radio","aria-checked":N,sx:{height:"100%",display:"flex",flexDirection:"column",position:"relative",border:e=>"1px solid ".concat(N?e.palette.primary.main:e.palette.divider),boxShadow:N?"0 0 0 3px ".concat((0,s.X4)(U.palette.primary.main,.13)):void 0,transition:"transform 180ms ease, border-color 180ms ease, box-shadow 180ms ease","&:hover":{borderColor:(0,s.X4)(U.palette.primary.main,.42),transform:"translateY(-3px)"}},children:[$,(0,n.jsx)(h.A,{onClick:()=>null==P?void 0:P(t.id),sx:{height:"100%",display:"flex",flexDirection:"column",alignItems:"stretch"},children:H})]}):(0,n.jsxs)(m.A,{elevation:0,sx:{height:"100%",display:"flex",flexDirection:"column",position:"relative",transition:"transform 200ms ease, border-color 200ms ease, box-shadow 200ms ease","&:hover":{borderColor:(0,s.X4)(U.palette.primary.main,.38),boxShadow:"0 22px 60px ".concat((0,s.X4)(U.palette.primary.main,.12)),transform:"translateY(-4px)"}},children:[$,H,(0,n.jsxs)(x.A,{disableSpacing:!0,sx:{px:1.5,pb:1.4,borderTop:1,borderColor:"divider"},children:[(0,n.jsx)(l.A,{title:"Test model (direct SDK call, no flow)",arrow:!0,children:(0,n.jsx)(i.A,{"aria-label":"test",onClick:()=>{R(!0),J()},children:(0,n.jsx)(v.A,{})})}),(0,n.jsx)(i.A,{"aria-label":"edit",onClick:r,children:(0,n.jsx)(f.A,{})}),(0,n.jsx)(i.A,{"aria-label":"delete",onClick:C,children:(0,n.jsx)(g.A,{})}),I&&(0,n.jsx)(l.A,{title:"Move to folder…",arrow:!0,children:(0,n.jsx)(i.A,{"aria-label":"move to folder",onClick:e=>_(e.currentTarget),sx:{ml:"auto"},children:(0,n.jsx)(y.A,{})})})]}),I&&(0,n.jsx)(z.A,{anchorEl:X,open:!!X,currentFolder:S,folders:T,onClose:()=>_(null),onAssign:I}),(0,n.jsx)(E,{open:M,modelLabel:t.displayName||t.name,loading:F,result:q,error:K,onClose:()=>R(!1),onRetry:J})]})}},64598:(e,t,r)=>{"use strict";r.d(t,{R:()=>a});var n=r(12115),o=r(97104);function a(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{threshold:r=200,deps:a=[]}=t,l=(0,n.useRef)(null),[i,s]=(0,n.useState)(!1),d=(0,n.useRef)(!1),c=(0,n.useCallback)(()=>{let e=l.current;return e&&e.scrollHeight>e.clientHeight+1?e:null},[]),u=(0,n.useCallback)(()=>{let e=c();return e?e.scrollTop:window.scrollY||document.documentElement.scrollTop||0},[c]),p=(0,n.useCallback)(e=>{let t=c();t?t.scrollTop=e:window.scrollTo(0,e)},[c]);return(0,n.useEffect)(()=>{let t=l.current,n=0,a="function"==typeof window.requestAnimationFrame?window.requestAnimationFrame.bind(window):e=>window.setTimeout(()=>e(0),16),i="function"==typeof window.cancelAnimationFrame?window.cancelAnimationFrame.bind(window):e=>window.clearTimeout(e),d=()=>{let t=u();s(t>r),n&&i(n),n=a(()=>(0,o.vi)(e,t))};return null==t||t.addEventListener("scroll",d,{passive:!0}),window.addEventListener("scroll",d,{passive:!0}),()=>{n&&i(n),null==t||t.removeEventListener("scroll",d),window.removeEventListener("scroll",d)}},[e,r,u]),(0,n.useEffect)(()=>{if(d.current)return;let t=(0,o.Aq)(e,0);if(t<=0){d.current=!0;return}p(t);let n=u();n>0&&(d.current=!0,s(n>r))},a),{ref:l,showBackToTop:i,scrollToTop:(0,n.useCallback)(()=>{let e=c();e?e.scrollTo({top:0,behavior:"smooth"}):window.scrollTo({top:0,behavior:"smooth"}),s(!1)},[c])}}},69586:(e,t,r)=>{Promise.resolve().then(r.bind(r,96429)),Promise.resolve().then(r.bind(r,94049)),Promise.resolve().then(r.bind(r,24437)),Promise.resolve().then(r.bind(r,36552)),Promise.resolve().then(r.bind(r,58971)),Promise.resolve().then(r.bind(r,79508)),Promise.resolve().then(r.bind(r,36982)),Promise.resolve().then(r.bind(r,94929))},79508:(e,t,r)=>{"use strict";r.d(t,{default:()=>d});var n=r(95155),o=r(33567),a=r(94049),l=r(80777),i=r(25635),s=r(8532);function d(e){let{title:t,description:r,eyebrow:d,icon:c,leading:u,badge:p,actions:m,compact:h=!1,maxWidth:x=1440}=e,f=(0,o.A)();return(0,n.jsx)(a.default,{component:"header",sx:{position:"relative",overflow:"hidden",borderBottom:1,borderColor:"divider",background:"linear-gradient(110deg, ".concat((0,s.X4)(f.palette.primary.main,"dark"===f.palette.mode?.09:.055),", transparent 38%, ").concat((0,s.X4)(f.palette.secondary.main,.045),")"),"&::after":{position:"absolute",top:-90,right:"8%",width:220,height:160,borderRadius:"50%",content:'""',pointerEvents:"none",background:"radial-gradient(circle, ".concat((0,s.X4)(f.palette.primary.main,.16),", transparent 68%)"),filter:"blur(20px)"}},children:(0,n.jsxs)(a.default,{sx:{position:"relative",zIndex:1,display:"flex",width:"100%",maxWidth:x,mx:"auto",px:{xs:2,sm:3,lg:4},py:h?{xs:1.8,sm:2}:{xs:2.2,sm:2.8},alignItems:{xs:"flex-start",md:"center"},justifyContent:"space-between",flexDirection:{xs:"column",md:"row"},gap:2},children:[(0,n.jsxs)(l.A,{direction:"row",spacing:1.5,alignItems:"center",sx:{minWidth:0},children:[u,c&&(0,n.jsx)(a.default,{"aria-hidden":"true",sx:{display:"grid",width:h?40:46,height:h?40:46,flexShrink:0,placeItems:"center",border:"1px solid ".concat((0,s.X4)(f.palette.primary.main,.24)),borderRadius:h?2.8:3.2,color:"primary.light",bgcolor:(0,s.X4)(f.palette.primary.main,.1),boxShadow:"inset 0 1px 0 ".concat((0,s.X4)(f.palette.common.white,.08),", 0 10px 30px ").concat((0,s.X4)(f.palette.primary.main,.12))},children:(0,n.jsx)(c,{sx:{fontSize:h?21:24}})}),(0,n.jsxs)(a.default,{sx:{minWidth:0},children:[(d||p)&&(0,n.jsxs)(l.A,{direction:"row",spacing:1,alignItems:"center",sx:{mb:.35},children:[d&&(0,n.jsx)(i.A,{sx:{color:"primary.light",fontSize:"0.67rem",fontWeight:780,letterSpacing:"0.13em",textTransform:"uppercase"},children:d}),p]}),(0,n.jsx)(i.A,{component:"h1",variant:"h5",sx:{overflow:"hidden",textOverflow:"ellipsis",fontSize:h?"1.2rem":void 0,whiteSpace:{xs:"normal",sm:"nowrap"}},children:t}),r&&(0,n.jsx)(i.A,{variant:"body2",color:"text.secondary",sx:{mt:.45,maxWidth:720,textWrap:"balance"},children:r})]})]}),m&&(0,n.jsx)(a.default,{sx:{display:"flex",width:{xs:"100%",md:"auto"},flexShrink:0,flexWrap:"wrap",alignItems:"center",gap:1,"& > .MuiButton-root":{flex:{xs:"1 1 auto",sm:"0 0 auto"}}},children:m})]})})}},81956:(e,t,r)=>{"use strict";r.d(t,{A:()=>b});var n=r(95155),o=r(12115),a=r(36314),l=r(86973),i=r(49501),s=r(17681),d=r(21067),c=r(2778),u=r(52363),p=r(65036),m=r(9562),h=r(75912),x=r(91871),f=r(9693),g=r(91665),v=r(7517),y=r(8190);let b=e=>{let{anchorEl:t,open:r,currentFolder:b,folders:j,onClose:A,onAssign:w}=e,[k,C]=(0,o.useState)(!1),[S,T]=(0,o.useState)(""),I=e=>{w(e),A()},O=()=>{let e=S.trim();e&&(C(!1),I(e))};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(a.A,{anchorEl:t,open:r,onClose:A,onClick:e=>e.stopPropagation(),children:[j.length>0&&j.map(e=>(0,n.jsxs)(l.A,{onClick:()=>I(e),selected:e===b,children:[(0,n.jsx)(i.A,{children:e===b?(0,n.jsx)(f.A,{fontSize:"small"}):(0,n.jsx)(g.A,{fontSize:"small"})}),(0,n.jsx)(s.A,{primary:e})]},e)),j.length>0&&(0,n.jsx)(d.A,{}),(0,n.jsxs)(l.A,{onClick:()=>{T(""),C(!0)},children:[(0,n.jsx)(i.A,{children:(0,n.jsx)(v.A,{fontSize:"small"})}),(0,n.jsx)(s.A,{primary:"New folder…"})]}),b&&(0,n.jsxs)(l.A,{onClick:()=>I(void 0),children:[(0,n.jsx)(i.A,{children:(0,n.jsx)(y.A,{fontSize:"small"})}),(0,n.jsx)(s.A,{primary:"Remove from folder"})]})]}),(0,n.jsxs)(c.A,{open:k,onClose:()=>C(!1),maxWidth:"xs",fullWidth:!0,onClick:e=>e.stopPropagation(),children:[(0,n.jsx)(u.A,{children:"New folder"}),(0,n.jsx)(p.A,{children:(0,n.jsx)(m.A,{autoFocus:!0,margin:"dense",label:"Folder name",fullWidth:!0,value:S,onChange:e=>T(e.target.value),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),O())}})}),(0,n.jsxs)(h.A,{children:[(0,n.jsx)(x.A,{onClick:()=>C(!1),children:"Cancel"}),(0,n.jsx)(x.A,{variant:"contained",disabled:!S.trim(),onClick:O,children:"Create"})]})]})]})}},88107:(e,t,r)=>{"use strict";r.d(t,{T_:()=>s,g3:()=>l,xx:()=>i});let n=/(^|[/_-])(o[1-9]|gpt-5)(?:[./_-]|$)/i,o=/claude-(?:fable|mythos)-5|claude-opus-4-(?:[7-9]|\d{2,})|claude-sonnet-5/i,a=/^(?:opus|sonnet|fable)$|claude-(?:fable|mythos)-5|claude-opus-4-(?:[6-9]|\d{2,})|claude-sonnet-4-6/i;function l(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",l=t||"openai",i=r.trim();if("codex-cli"===l)return{effortLevels:/^gpt-5\.6-(?:sol|terra)$/i.test(i)?["low","medium","high","xhigh","max","ultra"]:/^gpt-5\.6-/i.test(i)?["low","medium","high","xhigh","max"]:["low","medium","high","xhigh"],priority:!/(?:mini|spark|review)/i.test(i),maxOutputTokens:!1};if("claude-cli"===l)return{...a.test(i)?{effortLevels:["low","medium","high","xhigh","max"]}:{},maxOutputTokens:!1};if("anthropic"===l)return{...!o.test(i)?{creativity:{min:0,max:1,step:.1}}:{},...a.test(i)?{effortLevels:["low","medium","high","xhigh","max"]}:{},maxOutputTokens:!0};if("gemini"===l)return{creativity:{min:0,max:2,step:.1},.../^gemini-2\.5/i.test(i)?{thinkingBudget:!0}:!/^gemini-2\.0/i.test(i)?{thinkingLevels:["minimal","low","medium","high"]}:{},maxOutputTokens:!0};let s="openai"===(e||"openai")&&n.test(i);return{...!s?{creativity:{min:0,max:2,step:.1}}:{},...s?{effortLevels:["low","medium","high"]}:{},maxOutputTokens:!0}}let i=[{id:"openai",label:"OpenAI",provider:"openai",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.openai.com/v1",showBaseUrl:!0},{id:"openai-responses",label:"OpenAI (Responses API)",provider:"openai",adapter:"openai-responses",sdkLabel:"OpenAI SDK (Responses)",baseUrl:"https://api.openai.com/v1",showBaseUrl:!0,defaultModels:["gpt-5","gpt-5-mini","o4-mini","o3"]},{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"]},{id:"codex",label:"Codex (OpenAI)",provider:"codex",adapter:"codex-cli",sdkLabel:"Codex SDK",baseUrl:"",showBaseUrl:!1,defaultModels:["gpt-5.6-sol","gpt-5.6-terra","gpt-5.6-luna","gpt-5.5","gpt-5.4","gpt-5.4-mini"]}];function s(e,t){let r=e||"openai",n=t||"openai";return i.find(e=>e.provider===r&&e.adapter===n)||i.find(e=>e.provider===r)||i[0]}},90880:(e,t,r)=>{"use strict";r.d(t,{CN:()=>c,Pj:()=>s,Ub:()=>d,jX:()=>u,sE:()=>l,y4:()=>i});var n=r(61033);let o=/\$\{res:([^}]+)\}/g,a=/\$\{global:([^}]+)\}/g;function l(e){let t,r=(0,n.A$)(e).map(e=>({kind:e.kind,server:e.server,name:e.name,fullMatch:e.fullMatch,index:e.index}));for(o.lastIndex=0;null!==(t=o.exec(e));)r.push({kind:"runres",server:"",name:t[1],fullMatch:t[0],index:t.index});for(a.lastIndex=0;null!==(t=a.exec(e));)r.push({kind:"global",server:"",name:t[1],fullMatch:t[0],index:t.index});return r.sort((e,t)=>e.index-t.index)}function i(e){if(e.startsWith("${res:")&&e.endsWith("}")){let t=e.slice(6,-1);return t?{kind:"runres",server:"",name:t}:null}if(e.startsWith("${global:")&&e.endsWith("}")){let t=e.slice(9,-1);return t?{kind:"global",server:"",name:t}:null}let t=(0,n.js)(e);return t?{kind:t.kind,server:t.server,name:t.name}:null}function s(e,t,r){return"runres"===e?"${res:".concat(r,"}"):"global"===e?"${global:".concat(r,"}"):(0,n.X8)(e,t,r)}function d(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.name,r=arguments.length>2?arguments[2]:void 0;return{...e,label:t,value:s(e.kind,e.server,e.name),description:r}}function c(e){return"runres"===e.kind?"res:".concat(e.name):"global"===e.kind?"global:".concat(e.name):(0,n.YP)({kind:e.kind,server:e.server,name:e.name})}function u(e){let t=new Set;for(let r of e){let e;if("string"==typeof r&&0!==r.length)for(o.lastIndex=0;null!==(e=o.exec(r));){let r=e[1].trim();r&&t.add(r)}}return[...t].sort((e,t)=>e.localeCompare(t))}},95480:(e,t,r)=>{"use strict";r.d(t,{A:()=>C});var n=r(95155),o=r(12115),a=r(94049),l=r(25635),i=r(14913),s=r(57883),d=r(2300),c=r(89218),u=r(42063),p=r(17897),m=r(9164),h=r(73288),x=r(90880),f=r(11433);r(32098);let g=(0,h.h)("frontend/components/shared/PromptBuilder"),v=e=>{let{server:t,name:r}=e,a="handoff"===t,[l,i]=(0,o.useState)(null),[s,d]=(0,o.useState)(!0);return((0,o.useEffect)(()=>{let e=!1;return(async()=>{try{var n;d(!0);let o=null==(n=(await p.S.listServerTools(t)).tools)?void 0:n.find(e=>e.name===r);e||i(o||null)}catch(e){g.error("Failed to fetch tool info for ".concat(t,":").concat(r),e)}finally{e||d(!1)}})(),()=>{e=!0}},[t,r]),s)?(0,n.jsx)("span",{className:"tool-reference-preview loading ".concat(a?"handoff":""),children:"tool:".concat(t,"__").concat(r)}):l?(0,n.jsxs)("span",{className:"tool-reference-preview ".concat(a?"handoff":""),children:["[The user is referencing a ",a?"handoff":"tool"," `tool:",t,"__",r,"` (",l.description||"No description",")]"]}):(0,n.jsx)("span",{className:"tool-reference-preview not-found ".concat(a?"handoff":""),children:"tool:".concat(t,"__").concat(r," (Tool not found)")})},y=e=>{let{server:t,name:r}=e,[a,l]=(0,o.useState)(null),[i,s]=(0,o.useState)(!0);return((0,o.useEffect)(()=>{let e=!1;return(async()=>{try{s(!0);let n=await p.S.listServerResources(t),o=[...n.resources||[],...n.resourceTemplates||[]].find(e=>e.uri===r||e.uriTemplate===r);e||l((null==o?void 0:o.description)||(null==o?void 0:o.name)||null)}catch(e){g.error("Failed to fetch resource info for ".concat(t,":").concat(r),e)}finally{e||s(!1)}})(),()=>{e=!0}},[t,r]),i)?(0,n.jsx)("span",{className:"tool-reference-preview loading resource",children:"resource:".concat(t,"__").concat(r)}):(0,n.jsxs)("span",{className:"tool-reference-preview resource",children:["[The contents of resource `",r,"` from `",t,"`",a?" (".concat(a,")"):""," will be inserted here]"]})},b=e=>{let{name:t}=e;return(0,n.jsxs)("span",{className:"tool-reference-preview runres",children:["[The contents of the Temporary Data `",t,"` will be inserted here at run time]"]})},j=e=>{let{name:t}=e;return(0,n.jsxs)("span",{className:"tool-reference-preview global",children:["[Global variable ",(0,n.jsx)("code",{children:"${global:".concat(t,"}")})," will be inserted at run time]"]})},A=e=>{let{binding:t}=e;return"global"===t.kind?(0,n.jsx)(j,{name:t.name}):"runres"===t.kind?(0,n.jsx)(b,{name:t.name}):"resource"===t.kind?(0,n.jsx)(y,{server:t.server,name:t.name}):(0,n.jsx)(v,{server:t.server,name:t.name})},w=e=>{let{value:t}=e,r=[],o=0;for(let e of(0,x.sE)(t))e.index>o&&r.push({type:"text",value:t.slice(o,e.index)}),r.push({type:"binding",binding:e,key:e.index}),o=e.index+e.fullMatch.length;o<t.length&&r.push({type:"text",value:t.slice(o)});let a=[],l=[],i=()=>{a.push((0,n.jsx)("p",{children:l},"p-".concat(a.length))),l=[]};for(let e of r)if("text"===e.type){let t=e.value.split("\n");for(let e=0;e<t.length;e++)l.push(t[e]),e<t.length-1&&i()}else l.push((0,n.jsx)(A,{binding:e.binding},"binding-".concat(e.key)));return(l.length>0||0===a.length)&&i(),(0,n.jsx)("div",{className:"preview-content",children:a})},k=(0,o.forwardRef)((e,t)=>{let{value:r,onChange:p,label:h="Prompt Builder",height:g=300,onModeChange:v,customPreviewRenderer:y,suggestions:b=[]}=e,{globalEnvVars:j}=(0,m.useStorage)(),A=(0,o.useMemo)(()=>Object.entries(j).filter(e=>{var t;let[,r]=e;return!(null==(t=r.metadata)?void 0:t.isSecret)}).map(e=>{let[t]=e;return t}).sort((e,t)=>e.localeCompare(t)),[j]),k=(0,o.useMemo)(()=>[...b,...A.map(e=>(0,x.Ub)({kind:"global",server:"",name:e},e))],[A,b]),C=(0,o.useRef)(null),[S,T]=(0,o.useState)("raw");return(0,o.useImperativeHandle)(t,()=>({insertText:e=>{var t;return null==(t=C.current)?void 0:t.insertText(e)},getMode:()=>S}),[S]),(0,n.jsxs)(a.default,{sx:{width:"100%",height:"100%",display:"flex",flexDirection:"column"},children:[h&&(0,n.jsx)(l.A,{variant:"subtitle1",gutterBottom:!0,sx:{fontWeight:"medium",mb:1},children:h}),(0,n.jsx)(a.default,{sx:{mb:1},children:(0,n.jsxs)(i.A,{value:S,exclusive:!0,onChange:(e,t)=>{t&&(T(t),null==v||v(t))},size:"small",children:[(0,n.jsxs)(s.A,{value:"raw",children:[(0,n.jsx)(c.A,{fontSize:"small",sx:{mr:.5}}),"Raw"]}),(0,n.jsxs)(s.A,{value:"preview",children:[(0,n.jsx)(u.A,{fontSize:"small",sx:{mr:.5}}),"Preview"]})]})}),(0,n.jsx)(d.A,{elevation:0,sx:{border:"1px solid rgba(0, 0, 0, 0.12)",borderRadius:1,overflow:"visible",flexGrow:1,display:"flex",flexDirection:"column"},children:"raw"===S?(0,n.jsx)(a.default,{className:"slate-editor-container",sx:{height:"number"==typeof g?g:"100%",overflow:"visible",p:2},children:(0,n.jsx)(f.Ay,{ref:C,value:r,onChange:p,suggestions:k,placeholder:"Write your prompt here...",bare:!0,minRows:4,containerSx:{height:"100%"},ariaLabel:h||"Prompt editor"})}):y?(0,n.jsx)(a.default,{className:"custom-preview-container",sx:{height:"number"==typeof g?g:"100%",overflow:"auto"},children:y()}):(0,n.jsx)(a.default,{className:"preview-container",sx:{height:"number"==typeof g?g:"100%",overflow:"auto",p:2},children:(0,n.jsx)(w,{value:r})})})]})});k.displayName="PromptBuilder";let C=k},97104:(e,t,r)=>{"use strict";r.d(t,{Aq:()=>o,Xk:()=>l,vi:()=>a});var n=r(12115);function o(e,t){try{let r=window.localStorage.getItem(e);if(null===r)return t;return JSON.parse(r)}catch(e){return t}}function a(e,t){try{window.localStorage.setItem(e,JSON.stringify(t))}catch(e){}}function l(e,t){let[r,l]=(0,n.useState)(()=>o(e,t));return[r,(0,n.useCallback)(t=>{l(r=>{let n="function"==typeof t?t(r):t;return a(e,n),n})},[e])]}}},e=>{e.O(0,[1137,7926,4754,7758,3392,2678,981,1983,1871,5954,9562,3816,3272,155,4123,3303,1675,4386,8326,889,1161,8441,1255,7358],()=>e(e.s=69586)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7262],{70479:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>e2});var n=a(95155),s=a(12115),r=a(94049),l=a(20063),i=a(28548),o=a(91871),c=a(2300),d=a(25635),u=a(86946),h=a(40047),p=a(33567),m=a(15712),x=a(9562),g=a(56422),f=a(41602),y=a(23820),v=a(73707),j=a(49501),b=a(22822),A=a(17681),w=a(4474),k=a(80777),S=a(22003),C=a(41275),T=a(21067),I=a(55606),P=a(86973),E=a(99944),W=a(9957),z=a(2778),N=a(52363),R=a(65036),O=a(95844),F=a(71908),L=a(64246),H=a(75912),M=a(51611),U=a(66087),q=a(57813),J=a(26466),D=a(73288);let _=(0,D.h)("frontend/services/registry");async function G(e){return await e.json().catch(()=>({}))}class B{async getStatus(){let e=await fetch("/api/registry/auth",{method:"GET"});if(!e.ok)throw Error("HTTP ".concat(e.status));return G(e)}async auth(e,t,a,n){let s=await fetch("/api/registry/auth",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:e,email:t,password:a,...n?{handle:n}:{}})}),r=await G(s);if(!s.ok&&(null==r?void 0:r.status)===void 0)throw Error((null==r?void 0:r.error)||"HTTP ".concat(s.status));return r}signup(e,t,a){return this.auth("signup",e,t,a)}login(e,t){return this.auth("login",e,t)}async logout(){let e=await fetch("/api/registry/auth",{method:"DELETE"});if(!e.ok)throw Error("HTTP ".concat(e.status))}async beginOAuth(e){let t=await fetch("/api/registry/oauth/initiate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:e})}),a=await G(t);if(!t.ok||!(null==a?void 0:a.authorizationUrl))throw Error((null==a?void 0:a.error)||"HTTP ".concat(t.status));return{authorizationUrl:a.authorizationUrl}}async resendConfirmation(e){return G(await fetch("/api/registry/auth/resend",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e?{email:e}:{})}))}async requestPasswordReset(e){return G(await fetch("/api/registry/auth/reset",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:e})}))}async getSettings(){let e=await fetch("/api/registry/settings",{method:"GET"});if(!e.ok)throw Error("HTTP ".concat(e.status));return G(e)}async saveSettings(e){return G(await fetch("/api/registry/settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:e})}))}async publish(e){let t=await fetch("/api/registry/publish",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({manifest:e})}),a=await G(t);return(null==a?void 0:a.ok)===void 0?(_.warn("Unexpected publish response shape",{status:t.status}),{ok:!1,code:"error",error:"HTTP ".concat(t.status)}):a}async deletePackage(e){let t=await fetch("/api/registry/packages",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({packageId:e})}),a=await G(t);return(null==a?void 0:a.ok)===void 0?(_.warn("Unexpected package deletion response shape",{status:t.status}),{ok:!1,code:"error",error:(null==a?void 0:a.error)||"HTTP ".concat(t.status)}):a}}let V=null,Z=()=>(V||(V=new B),V),$=new Proxy({},{get(e,t){let a=Z(),n=a[t];return"function"==typeof n?n.bind(a):n}}),X=(0,D.h)("frontend/components/Packages/RegistryAccountSettings");function K(){let[e,t]=(0,s.useState)(null),[a,l]=(0,s.useState)(!0),[c,u]=(0,s.useState)(!1),[h,p]=(0,s.useState)(null),[m,g]=(0,s.useState)("login"),[f,y]=(0,s.useState)(""),[v,j]=(0,s.useState)(""),[b,A]=(0,s.useState)(""),[C,I]=(0,s.useState)(""),[P,E]=(0,s.useState)(""),W=(0,s.useCallback)(async()=>{try{let[e,a]=await Promise.all([$.getStatus(),$.getSettings()]);t(e),E(a.defaultUrl),I(a.usingDefault?"":a.baseUrl)}catch(e){X.warn("Failed to load registry account status",e)}finally{l(!1)}},[]);(0,s.useEffect)(()=>{W()},[W]),(0,s.useEffect)(()=>{let e=new URLSearchParams(window.location.search),t=e.get("registry_oauth");if(!t)return;p("success"===t?{type:"success",text:"Signed in to the package registry."}:{type:"error",text:"OAuth sign-in did not complete. Please try again."}),W(),e.delete("registry_oauth");let a=e.toString();window.history.replaceState({},"",window.location.pathname+(a?"?".concat(a):""))},[W]);let z=async()=>{u(!0),p(null);try{let e="signup"===m?await $.signup(f.trim(),v,b.trim()):await $.login(f.trim(),v);"authenticated"===e.status?(p({type:"success",text:"Signed in to the package registry."}),j("")):"confirmation_required"===e.status?(p({type:"info",text:e.message||"Check your inbox to confirm your email."}),j("")):p({type:"error",text:e.message||"Authentication failed."}),e.account?t(e.account):await W()}catch(e){p({type:"error",text:e instanceof Error?e.message:"Authentication failed."})}finally{u(!1)}},N=async()=>{u(!0),p(null);try{await $.logout(),await W(),p({type:"success",text:"Logged out."})}catch(e){p({type:"error",text:e instanceof Error?e.message:"Failed to log out."})}finally{u(!1)}},R=async e=>{u(!0),p(null);try{let{authorizationUrl:t}=await $.beginOAuth(e);window.location.assign(t)}catch(e){p({type:"error",text:e instanceof Error?e.message:"Failed to start OAuth sign-in."}),u(!1)}},O=async()=>{u(!0),p(null);try{let e=await $.resendConfirmation();p(e.success?{type:"success",text:"Confirmation email sent."}:{type:"error",text:e.message||"Failed to resend confirmation."})}finally{u(!1)}},F=async()=>{let e=f.trim();if(!e)return void p({type:"info",text:"Enter your account email above, then tap “Forgot password?”."});u(!0),p(null);try{await $.requestPasswordReset(e),p({type:"info",text:"If an account exists for that email, a password-reset link is on its way. Follow the link to set a new password."})}catch(e){p({type:"error",text:e instanceof Error?e.message:"Failed to request a password reset."})}finally{u(!1)}},L=async()=>{u(!0),p(null);try{let e=await $.saveSettings(C.trim());p(e.success?{type:"success",text:"Registry URL saved."}:{type:"error",text:e.message||"Invalid registry URL."})}finally{u(!1)}};if(a)return(0,n.jsx)(r.default,{sx:{display:"flex",justifyContent:"center",p:3},children:(0,n.jsx)(w.default,{size:28})});let H=!!(null==e?void 0:e.signedIn),M=!!((null==e?void 0:e.email)&&!H&&e&&!e.isConfirmed);return(0,n.jsxs)(r.default,{sx:{width:"100%"},children:[(0,n.jsx)(d.A,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"Sign in to the FLUJO package registry to publish packages. Browsing and installing packages does not require an account — only publishing does, and your email must be confirmed first. Your registry tokens are encrypted at rest and never shown here."}),h&&(0,n.jsx)(S.A,{severity:h.type,sx:{mb:2},onClose:()=>p(null),children:h.text}),H?(0,n.jsxs)(k.A,{spacing:2,children:[(0,n.jsxs)(k.A,{direction:"row",spacing:1,alignItems:"center",flexWrap:"wrap",useFlexGap:!0,children:[(0,n.jsx)(d.A,{variant:"subtitle1",children:null==e?void 0:e.email}),(null==e?void 0:e.publisherHandle)&&(0,n.jsx)(i.A,{size:"small",label:"@".concat(e.publisherHandle)}),(null==e?void 0:e.isConfirmed)?(0,n.jsx)(i.A,{size:"small",color:"success",label:"Confirmed"}):(0,n.jsx)(i.A,{size:"small",color:"warning",label:"Unconfirmed"})]}),(0,n.jsx)(r.default,{children:(0,n.jsx)(o.A,{variant:"outlined",onClick:N,disabled:c,children:"Log out"})})]}):M?(0,n.jsxs)(k.A,{spacing:2,children:[(0,n.jsxs)(S.A,{severity:"info",children:["We sent a confirmation link to ",(0,n.jsx)("strong",{children:null==e?void 0:e.email}),". Confirm your email, then log in to start publishing."]}),(0,n.jsxs)(k.A,{direction:"row",spacing:1,children:[(0,n.jsx)(o.A,{variant:"outlined",onClick:O,disabled:c,children:"Resend confirmation email"}),(0,n.jsx)(o.A,{onClick:N,disabled:c,children:"Use a different account"})]})]}):(0,n.jsxs)(k.A,{spacing:2,children:[(0,n.jsxs)(q.A,{value:m,onChange:(e,t)=>g(t),children:[(0,n.jsx)(J.A,{value:"login",label:"Log in"}),(0,n.jsx)(J.A,{value:"signup",label:"Sign up"})]}),(0,n.jsx)(x.A,{label:"Email",type:"email",value:f,onChange:e=>y(e.target.value),fullWidth:!0,autoComplete:"username"}),(0,n.jsx)(x.A,{label:"Password",type:"password",value:v,onChange:e=>j(e.target.value),fullWidth:!0,autoComplete:"signup"===m?"new-password":"current-password"}),"signup"===m&&(0,n.jsx)(x.A,{label:"Publisher handle",value:b,onChange:e=>A(e.target.value),fullWidth:!0,autoComplete:"username",helperText:"A unique handle for publishing packages, e.g. your-name"}),(0,n.jsx)(r.default,{children:(0,n.jsx)(o.A,{variant:"contained",onClick:z,disabled:c||!f.trim()||!v||"signup"===m&&!b.trim(),children:"signup"===m?"Sign up":"Log in"})}),"login"===m&&(0,n.jsx)(r.default,{children:(0,n.jsx)(o.A,{variant:"text",size:"small",onClick:F,disabled:c,sx:{textTransform:"none",px:0},children:"Forgot password?"})}),(0,n.jsx)(T.A,{children:"or"}),(0,n.jsx)(k.A,{direction:"row",spacing:1,flexWrap:"wrap",useFlexGap:!0,children:(0,n.jsx)(o.A,{variant:"outlined",onClick:()=>R("github"),disabled:c,children:"Continue with GitHub"})})]}),(0,n.jsx)(T.A,{sx:{my:3}}),(0,n.jsx)(d.A,{variant:"subtitle2",gutterBottom:!0,children:"Registry URL"}),(0,n.jsxs)(d.A,{variant:"body2",color:"text.secondary",sx:{mb:1},children:["Leave blank to use the default (",P,")."]}),(0,n.jsxs)(k.A,{direction:"row",spacing:1,alignItems:"center",flexWrap:"wrap",useFlexGap:!0,children:[(0,n.jsx)(x.A,{size:"small",placeholder:P,value:C,onChange:e=>I(e.target.value),sx:{minWidth:320}}),(0,n.jsx)(o.A,{variant:"outlined",onClick:L,disabled:c,children:"Save"})]})]})}var Y=a(90057),Q=a(43076),ee=a(17897),et=a(93632);let ea=(0,D.h)("frontend/services/packages");class en{async resolve(e){let t=await fetch("/api/packages/resolve",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),a=await t.json();if(!t.ok)throw Error((null==a?void 0:a.error)||"HTTP ".concat(t.status));return a}async deriveSecrets(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=await fetch("/api/packages/derive-secrets",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({selection:e,modelIdentifier:t.modelIdentifier,enableEntropy:t.enableEntropy,enableRepoSlug:t.enableRepoSlug})}),n=await a.json();if(!a.ok)throw Error((null==n?void 0:n.error)||"HTTP ".concat(a.status));return n}async scanTargets(e){var t;let a=await fetch("/api/packages/scan-targets",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({selection:e})}),n=await a.json();if(!a.ok)throw Error((null==n?void 0:n.error)||"HTTP ".concat(a.status));return null!=(t=null==n?void 0:n.candidates)?t:[]}async searchRegistry(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=new URLSearchParams;e.q&&t.set("q",e.q),e.tag&&t.set("tag",e.tag),e.page&&t.set("page",String(e.page)),e.pageSize&&t.set("pageSize",String(e.pageSize));let a=await fetch("/api/packages/search".concat(t.toString()?"?".concat(t.toString()):"")),n=await a.json();if(!a.ok&&!(null==n?void 0:n.items))throw Error((null==n?void 0:n.error)||"HTTP ".concat(a.status));return n}async installFromRegistry(e){let t=await fetch("/api/packages/install",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({source:"registry",...e})}),a=await t.json();if(!t.ok&&(null==a?void 0:a.ok)===void 0)throw Error((null==a?void 0:a.error)||"HTTP ".concat(t.status));return a}async build(e,t){var a;let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],l=await fetch("/api/packages/build",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({selection:e,metadata:t,acceptedSecrets:n,globals:s,excludedSecrets:r})}),i=null!=(a=l.headers.get("content-type"))?a:"";if(!i.includes("application/json")){let e=await l.text();throw ea.error("Package build returned a non-JSON response",{status:l.status,contentType:i,preview:e.slice(0,200)}),Error("Package build failed: HTTP ".concat(l.status," returned a non-JSON response"))}let o=await l.json();if(!l.ok&&(null==o?void 0:o.ok)===void 0)throw Error((null==o?void 0:o.error)||"HTTP ".concat(l.status));return o}}let es=null,er=()=>(es||(es=new en),es),el=new Proxy({},{get(e,t){let a=er(),n=a[t];return"function"==typeof n?n.bind(a):n}}),ei=/\{\{secret\.([A-Za-z0-9_.-]+)\}\}/g,eo="encrypted:",ec=/^[A-Za-z0-9_.-]+$/,ed=["path","repo","token","email","url-cred","name","other"];function eu(e){let t=new Set,a=e=>{if("string"==typeof e){for(let a of function(e){let t;if("string"!=typeof e)return[];let a=[],n=RegExp(ei.source,"g");for(;null!==(t=n.exec(e));)a.includes(t[1])||a.push(t[1]);return a}(e))t.add(a);return}if(Array.isArray(e)){for(let t of e)a(t);return}if(e&&"object"==typeof e)for(let t of Object.values(e))a(t)};return a(e),Array.from(t)}var eh=a(2750);let ep=eh.object({name:eh.string().min(1).regex(ec,"invalid secret name"),description:eh.string().optional(),required:eh.boolean(),default:eh.string().optional()}).strict(),em=eh.object({name:eh.string().min(1).regex(ec,"invalid global variable name"),description:eh.string().optional(),required:eh.boolean(),isSecret:eh.boolean().optional()}).strict(),ex=eh.discriminatedUnion("kind",[eh.object({kind:eh.literal("secret"),secret:eh.string().min(1)}).strict(),eh.object({kind:eh.literal("global"),var:eh.string().min(1)}).strict(),eh.object({kind:eh.literal("none")}).strict()]),eg=eh.object({id:eh.string().min(1),name:eh.string().min(1),displayName:eh.string().optional(),description:eh.string().optional(),baseUrl:eh.string().optional(),provider:eh.string().optional(),adapter:eh.string().optional(),promptTemplate:eh.string().optional(),reasoningSchema:eh.string().optional(),temperature:eh.string().optional(),reasoningEffort:eh.enum(["minimal","low","medium","high","xhigh","max","ultra"]).optional(),thinkingLevel:eh.enum(["minimal","low","medium","high"]).optional(),thinkingBudget:eh.number().int().min(-1).optional(),serviceTier:eh.enum(["default","priority"]).optional(),functionCallingSchema:eh.string().optional(),contextWindow:eh.number().optional(),maxTurns:eh.number().optional(),maxTokens:eh.number().optional(),folder:eh.string().optional(),favorite:eh.boolean().optional(),apiKeyRef:ex}).strict(),ef=eh.object({sourceType:eh.enum(["github","registry","marketplace","remote"]),ref:eh.string().optional(),gitRef:eh.string().min(1).optional(),subdirectory:eh.string().min(1).optional(),installCommand:eh.string().min(1).max(4096).optional(),buildCommand:eh.string().min(1).max(4096).optional(),url:eh.string().optional(),name:eh.string().optional()}).strict().superRefine((e,t)=>{"remote"!==e.sourceType||e.url||t.addIssue({code:"custom",message:"installOrigin 'remote' requires a url"}),"github"!==e.sourceType&&"registry"!==e.sourceType||e.ref||t.addIssue({code:"custom",message:"installOrigin '".concat(e.sourceType,"' requires a ref")})}),ey=eh.object({name:eh.string().min(1),isSecret:eh.boolean(),secretRef:eh.string().optional(),globalVar:eh.string().optional(),globalTemplate:eh.string().optional()}).strict().superRefine((e,t)=>{void 0===e.globalTemplate||/\$\{global:[A-Za-z0-9_.-]+\}/.test(e.globalTemplate)||t.addIssue({code:"custom",path:["globalTemplate"],message:"globalTemplate must contain at least one ${global:NAME} reference"})}),ev=eh.object({index:eh.number().int().nonnegative(),value:eh.string().min(1)}).strict().superRefine((e,t)=>{/\$\{global:[A-Za-z0-9_.-]+\}/.test(e.value)||t.addIssue({code:"custom",path:["value"],message:"argument template must contain at least one ${global:NAME} reference"})}),ej=eh.object({name:eh.string().min(1),transport:eh.enum(["stdio","sse","streamable","websocket"]),disabled:eh.boolean().optional(),autoApprove:eh.array(eh.string()).optional(),folder:eh.string().optional(),installOrigin:ef,envDeclarations:eh.array(ey),headerDeclarations:eh.array(ey).optional(),argTemplates:eh.array(ev).optional()}).strict(),eb=eh.object({flow:eh.object({id:eh.string().min(1),name:eh.string().min(1),nodes:eh.array(eh.any()),edges:eh.array(eh.any())}).catchall(eh.unknown()),references:eh.object({flowIds:eh.array(eh.string()).optional(),modelIds:eh.array(eh.string()).optional(),mcpServerNames:eh.array(eh.string()).optional()}).optional()}),eA=eh.object({id:eh.string().min(1),name:eh.string().min(1),enabled:eh.boolean(),flowId:eh.string().min(1),prompt:eh.string(),trigger:eh.any()}).catchall(eh.unknown()),ew=eh.object({schemaVersion:eh.literal(1),id:eh.string().min(1),name:eh.string().min(1),description:eh.string().optional(),version:eh.string().regex(/^\d+\.\d+\.\d+(?:-[0-9A-Za-z-.]+)?(?:\+[0-9A-Za-z-.]+)?$/,"version must be valid semver"),author:eh.string().optional(),publisher:eh.string().optional(),tags:eh.array(eh.string()).optional(),requiredGlobals:eh.array(eh.string()).optional(),globals:eh.array(em).optional(),secrets:eh.array(ep),models:eh.array(eg),mcpServers:eh.array(ej),flows:eh.array(eb),plannedExecutions:eh.array(eA)}).superRefine((e,t)=>{(function e(t){return"string"==typeof t?t.startsWith(eo):Array.isArray(t)?t.some(e):!!t&&"object"==typeof t&&Object.values(t).some(e)})(e)&&t.addIssue({code:"custom",message:"package contains an '".concat(eo,"' value; secret material must never be serialized")});let a=new Set(e.secrets.map(e=>e.name)),n=new Set(eu(e));for(let t of e.models)"secret"===t.apiKeyRef.kind&&n.add(t.apiKeyRef.secret);for(let t of e.mcpServers){var s;for(let e of[...t.envDeclarations,...null!=(s=t.headerDeclarations)?s:[]])e.secretRef&&n.add(e.secretRef)}for(let e of n)a.has(e)||t.addIssue({code:"custom",message:'secret "'.concat(e,'" is referenced but not declared in secrets[]')});let r=new Set(e.flows.map(e=>e.flow.id));e.plannedExecutions.forEach((e,a)=>{r.has(e.flowId)||t.addIssue({code:"custom",path:["plannedExecutions",a,"flowId"],message:'plannedExecution "'.concat(e.name,'" references unknown flow id "').concat(e.flowId,'"')})}),e.flows.forEach((e,a)=>{var n,s;for(let l of null!=(s=null==(n=e.references)?void 0:n.flowIds)?s:[])r.has(l)||t.addIssue({code:"custom",path:["flows",a,"references","flowIds"],message:'flow "'.concat(e.flow.name,'" references unknown subflow id "').concat(l,'"')})})}),ek=(0,D.h)("frontend/components/Packages/PackageWizard"),eS=/^\d+\.\d+\.\d+(?:-[0-9A-Za-z-.]+)?(?:\+[0-9A-Za-z-.]+)?$/,eC=["Select contents","Resolve & validate","Secret review","Metadata","Export"];function eT(e){return e.replace(/^SECRET_/,"")}function eI(e){let{open:t,onClose:a}=e,l=(0,p.A)(),c=(0,m.A)(l.breakpoints.down("sm")),[u,h]=(0,s.useState)(0),[q,J]=(0,s.useState)({flows:[],models:[],mcpServers:[],plannedExecutions:[]}),[D,_]=(0,s.useState)(!0),[G,B]=(0,s.useState)(new Set),[V,$]=(0,s.useState)(new Set),[X,ea]=(0,s.useState)(new Set),[en,es]=(0,s.useState)(new Set),[el,ei]=(0,s.useState)(""),[eo,eh]=(0,s.useState)(""),[ep,em]=(0,s.useState)(""),[ex,eg]=(0,s.useState)(""),[ef,ey]=(0,s.useState)(null),[ev,ej]=(0,s.useState)([]),[eb,eA]=(0,s.useState)(!1),[eI,eP]=(0,s.useState)(null),[eE,eW]=(0,s.useState)(null),[ez,eN]=(0,s.useState)({}),[eR,eO]=(0,s.useState)(new Set),[eF,eL]=(0,s.useState)([]),[eH,eM]=(0,s.useState)(!1),[eU,eq]=(0,s.useState)(!1),[eJ,eD]=(0,s.useState)(null),[e_,eG]=(0,s.useState)([]),[eB,eV]=(0,s.useState)(""),[eZ,e$]=(0,s.useState)(""),[eX,eK]=(0,s.useState)(!1),[eY,eQ]=(0,s.useState)(!1),[e0,e1]=(0,s.useState)(""),[e2,e5]=(0,s.useState)(""),[e4,e3]=(0,s.useState)("other"),[e6,e7]=(0,s.useState)(null),[e8,e9]=(0,s.useState)(!1),[te,tt]=(0,s.useState)(!1),[ta,tn]=(0,s.useState)(null),[ts,tr]=(0,s.useState)([]),[tl,ti]=(0,s.useState)(""),[to,tc]=(0,s.useState)(!1),[td,tu]=(0,s.useState)(""),[th,tp]=(0,s.useState)("1.0.0"),[tm,tx]=(0,s.useState)(""),[tg,tf]=(0,s.useState)(""),[ty,tv]=(0,s.useState)(!1),[tj,tb]=(0,s.useState)(null),[tA,tw]=(0,s.useState)(null),[tk,tS]=(0,s.useState)(!1),[tC,tT]=(0,s.useState)(null);(0,s.useEffect)(()=>{if(!t)return;let e=!1;return(async()=>{_(!0);try{var t;let[a,n,s,r]=await Promise.all([Y.g.loadFlows(),Q.N.loadModels(),ee.S.loadServerConfigs(),et.P.list()]);if(e)return;let l=Array.isArray(s)?s:[];J({flows:(null!=a?a:[]).map(e=>({id:e.id,label:e.name||e.id})),models:(null!=n?n:[]).map(e=>({id:e.id,label:e.displayName||e.name||e.id})),mcpServers:l.map(e=>({id:e.name,label:e.name})),plannedExecutions:(null!=(t=null==r?void 0:r.executions)?t:[]).map(e=>({id:e.execution.id,label:e.execution.name||e.execution.id}))})}catch(e){ek.warn("Failed to load packageable entities",e)}finally{e||_(!1)}})(),()=>{e=!0}},[t]);let tI=(0,s.useMemo)(()=>({flowIds:Array.from(G),modelIds:Array.from(V),mcpServerNames:Array.from(X),plannedExecutionIds:Array.from(en)}),[G,V,X,en]),tP=0===G.size&&0===V.size&&0===X.size&&0===en.size,tE=e=>t=>{e(e=>{let a=new Set(e);return a.has(t)?a.delete(t):a.add(t),a})},tW=(0,s.useCallback)(async e=>{let t;ej([]);try{t=await e.text()}catch(e){ej([e instanceof Error?e.message:"Failed to read the file"]);return}let a=function(e){let t;try{t=JSON.parse(e)}catch(e){return{ok:!1,errors:["Not valid JSON: ".concat(e instanceof Error?e.message:String(e))]}}let a=function(e){let t=ew.safeParse(e);if(!t.success)return{success:!1,errors:t.error.issues.map(e=>{let t=e.path.join(".");return t?"".concat(t,": ").concat(e.message):e.message})};let a=t.data;return{success:!0,data:a,warnings:function(e){let t=new Set(eu(e));for(let a of e.models)"secret"===a.apiKeyRef.kind&&t.add(a.apiKeyRef.secret);for(let n of e.mcpServers){var a;for(let e of[...n.envDeclarations,...null!=(a=n.headerDeclarations)?a:[]])e.secretRef&&t.add(e.secretRef)}return e.secrets.filter(e=>!t.has(e.name)).map(e=>'secret "'.concat(e.name,'" is declared but never referenced'))}(a)}}(t);if(!a.success||!a.data){var n;return{ok:!1,errors:null!=(n=a.errors)?n:["Not a valid FLUJO package manifest"]}}return{ok:!0,package:a.data}}(t);if(!a.ok){ey(null),ej(a.errors.slice(0,8));return}let n=function(e,t){var a,n,s,r,l,i,o,c,d,u;let h=new Set(t.flowIds),p=new Set(t.modelIds),m=new Set(t.mcpServerNames),x=new Set(t.plannedExecutionIds),g=[],f={flowIds:[],modelIds:[],mcpServerNames:[],plannedExecutionIds:[]};for(let t of null!=(a=e.flows)?a:[]){let e=null==t||null==(n=t.flow)?void 0:n.id;e&&(h.has(e)?f.flowIds.push(e):g.push({type:"flow",label:(null==(s=t.flow)?void 0:s.name)?"".concat(t.flow.name," (").concat(e,")"):e}))}for(let t of null!=(r=e.models)?r:[])(null==t?void 0:t.id)&&(p.has(t.id)?f.modelIds.push(t.id):g.push({type:"model",label:t.displayName||t.name||t.id}));for(let t of null!=(l=e.mcpServers)?l:[])(null==t?void 0:t.name)&&(m.has(t.name)?f.mcpServerNames.push(t.name):g.push({type:"mcpServer",label:t.name}));for(let t of null!=(i=e.plannedExecutions)?i:[]){let e=null==t?void 0:t.id;e&&(x.has(e)?f.plannedExecutionIds.push(e):g.push({type:"plannedExecution",label:t.name||e}))}return{selection:f,metadata:{name:null!=(o=e.name)?o:"",version:null!=(c=e.version)?c:"",description:null!=(d=e.description)?d:"",tags:e.tags?[...e.tags]:[]},secretNames:(null!=(u=e.secrets)?u:[]).map(e=>e.name).filter(Boolean),missing:g}}(a.package,{flowIds:q.flows.map(e=>e.id),modelIds:q.models.map(e=>e.id),mcpServerNames:q.mcpServers.map(e=>e.id),plannedExecutionIds:q.plannedExecutions.map(e=>e.id)});B(new Set(n.selection.flowIds)),$(new Set(n.selection.modelIds)),ea(new Set(n.selection.mcpServerNames)),es(new Set(n.selection.plannedExecutionIds)),tu(n.metadata.name),tp(n.metadata.version),tx(n.metadata.description),tf(n.metadata.tags.join(", ")),eP(null),eW(null),eN({}),eO(new Set),eL([]),eq(!1),eD(null),eG([]),tb(null),tw(null),tT(null),ey(n),ek.info("Imported package manifest into the wizard",{name:n.metadata.name,version:n.metadata.version,missing:n.missing.length})},[q]),tz=(0,s.useCallback)(async()=>{eA(!0),eW(null),eP(null),eN({}),eO(new Set),eL([]),eq(!1),eD(null),eG([]);try{var e;let t=await er().resolve(tI);eP(t),eN(Object.fromEntries((null!=(e=t.globals)?e:[]).map(e=>{var t;return[e.name,null!=(t=e.description)?t:""]})))}catch(e){eW(e instanceof Error?e.message:"Failed to resolve dependencies")}finally{eA(!1)}},[tI]),tN=(0,s.useMemo)(()=>ef?new Set(ef.secretNames):null,[ef]),tR=(0,s.useCallback)(async e=>{eM(!0),eD(null);try{var t;let a=await er().deriveSecrets(tI,{modelIdentifier:e,enableEntropy:eX,enableRepoSlug:eY});eL(e=>{let t=new Map(e.map(e=>[e.id,e.accepted])),n=new Map(e.map(e=>[e.id,e.suggestedSecretName])),s=e.filter(e=>"manual"===e.source),r=a.proposals.map(e=>{var a;return{...e,accepted:t.has(e.id)?t.get(e.id):tN?tN.has(e.suggestedSecretName):"low"!==e.confidence,suggestedSecretName:null!=(a=n.get(e.id))?a:e.suggestedSecretName}}),l=new Set(r.map(e=>e.id));return[...r,...s.filter(e=>!l.has(e.id))]}),eG(null!=(t=a.warnings)?t:[])}catch(e){eD(e instanceof Error?e.message:"Failed to derive secrets")}finally{eM(!1),eq(!0)}},[tI,eX,eY,tN]),tO=e=>eL(t=>t.map(t=>({...t,accepted:e}))),tF=()=>{e7(null);let e=function(e){var t,a,n,s,r;let l=(null!=(a=e.excerpt)?a:"").trim();if(!l||l.length>2e3)return null;let i=(null!=(n=e.secretName)?n:"").trim();if(i.length>128)return null;let o=null!=(s=e.kind)?s:"other",c=ec.test(i)?i.toUpperCase():function(e,t){let a="".concat(e,"_").concat(t).toUpperCase().replace(/[^A-Z0-9_.-]+/g,"_").replace(/^[_.-]+|[_.-]+$/g,"")||"".concat(e,"_SECRET");return ec.test(a)?a:"".concat(e,"_SECRET")}("SECRET",i||l.slice(0,16)),d=(null!=(r=e.location)?r:"manual").trim()||"manual";return{id:"sp_".concat(function(e){let t=5381;for(let a=0;a<e.length;a++)t=(t<<5)+t^e.charCodeAt(a);return(t>>>0).toString(16).padStart(8,"0")}("".concat(d,"\0").concat(l))),location:d,excerpt:l,kind:o,source:"manual",confidence:"high",suggestedSecretName:c,suggestedDescription:(null==(t=e.description)?void 0:t.trim())||void 0,rationale:"Added manually",accepted:!0}}({excerpt:e0,secretName:e2,kind:e4});if(!e)return void e7("Enter a non-empty value to redact (under 2000 characters).");eL(t=>t.some(t=>t.id===e.id)?t:[e,...t]),e1(""),e5(""),e3("other")},tL=(0,s.useCallback)(async()=>{e9(!0),tn(null),ti(""),tt(!0);try{let e=await er().scanTargets(tI);tr(e)}catch(e){tn(e instanceof Error?e.message:"Failed to load candidate values"),tr([])}finally{tt(!1)}},[tI]),tH=(0,s.useMemo)(()=>{let e=tl.trim().toLowerCase();return e?ts.filter(t=>"".concat(t.text," ").concat(t.location," ").concat(t.source).toLowerCase().includes(e)):ts},[ts,tl]),tM=(0,s.useMemo)(()=>{let e=new Map;for(let t of eF){let a="".concat(t.kind,"::").concat(t.excerpt),n=e.get(a);n?(n.ids.push(t.id),n.locations.push(t.location)):e.set(a,{key:a,ids:[t.id],locations:[t.location],kind:t.kind,source:t.source,confidence:t.confidence,excerpt:t.excerpt,suggestedSecretName:t.suggestedSecretName,rationale:t.rationale,accepted:t.accepted})}return Array.from(e.values())},[eF]),tU=(0,s.useMemo)(()=>{let e=eZ.trim().toLowerCase();return e?tM.filter(t=>"".concat(t.excerpt," ").concat(t.locations.join(" ")," ").concat(t.kind," ").concat(t.suggestedSecretName).toLowerCase().includes(e)):tM},[tM,eZ]),tq=(0,s.useMemo)(()=>{var e;if(!ef||!eU)return[];let t=new Set([...(null!=(e=null==eI?void 0:eI.secrets)?e:[]).map(e=>e.name),...eF.map(e=>e.suggestedSecretName)]);return ef.secretNames.filter(e=>!t.has(e))},[ef,eU,eI,eF]),tJ=(0,s.useMemo)(()=>{var e;let t=new Map;for(let a of tM)t.set(a.kind,(null!=(e=t.get(a.kind))?e:0)+1);return Array.from(t.entries()).sort((e,t)=>t[1]-e[1])},[tM]);(0,s.useEffect)(()=>{2!==u||!eI||eU||eH||tR()},[u,eI,eU,eH,tR]);let tD=(0,s.useCallback)(async()=>{tv(!0),tw(null),tb(null);try{var e;let t=tg.split(",").map(e=>e.trim()).filter(Boolean),a=await er().build(tI,{id:"pkg-".concat(Date.now()),name:td.trim(),version:th.trim(),description:tm.trim()||void 0,tags:t.length?t:void 0},eF.filter(e=>e.accepted),(null!=(e=null==eI?void 0:eI.globals)?e:[]).map(e=>{var t;return{...e,description:(null==(t=ez[e.name])?void 0:t.trim())||e.description}}),Array.from(eR));tb(a),a.ok||tw(a.errors&&a.errors[0]||"Package build failed")}catch(e){tw(e instanceof Error?e.message:"Failed to build package")}finally{tv(!1)}},[tI,td,th,tm,tg,eF,eI,ez,eR]),t_=(0,s.useCallback)(async()=>{if(null==tj?void 0:tj.json){tS(!0),tT(null);try{let e=JSON.parse(tj.json),t=await Z().publish(e);tT(t)}catch(e){tT({ok:!1,code:"error",error:e instanceof Error?e.message:"Failed to publish package"})}finally{tS(!1)}}},[tj]),tG=()=>{if(!(null==tj?void 0:tj.json))return;let e=new Blob([tj.json],{type:"application/json"}),t=URL.createObjectURL(e),a=document.createElement("a");a.href=t;let n=td.trim().replace(/[^A-Za-z0-9_.-]+/g,"-").replace(/^-+|-+$/g,"")||"package";a.download="".concat(n,"-").concat(th.trim(),".flujo-package.json"),document.body.appendChild(a),a.click(),a.remove(),URL.revokeObjectURL(t)},tB=async()=>{if(0===u){await tz(),h(1);return}if(3===u){h(4),await tD();return}h(e=>Math.min(e+1,eC.length-1))},tV=eS.test(th.trim()),tZ=td.trim().length>0&&tV,t$=!!(eI&&!eI.mcp.ok),tX=0===u?tP||eb:1===u?eb||!!eE||t$:3===u?!tZ:4===u,tK=(e,t,a,s,l,o)=>{let c=l.trim().toLowerCase(),u=c?t.filter(e=>e.label.toLowerCase().includes(c)):t;return(0,n.jsxs)(r.default,{sx:{flex:1,minWidth:240},children:[(0,n.jsxs)(d.A,{variant:"subtitle2",gutterBottom:!0,children:[e," ",a.size>0&&(0,n.jsx)(i.A,{label:a.size,size:"small"})]}),(0,n.jsx)(x.A,{size:"small",fullWidth:!0,placeholder:"Search ".concat(e.toLowerCase(),"…"),value:l,onChange:e=>o(e.target.value),InputProps:{startAdornment:(0,n.jsx)(g.A,{position:"start",children:(0,n.jsx)(M.A,{fontSize:"small"})})},sx:{mb:1}}),0===t.length?(0,n.jsx)(d.A,{variant:"body2",color:"text.secondary",children:"None available"}):0===u.length?(0,n.jsxs)(d.A,{variant:"body2",color:"text.secondary",children:["No matches for “",l,"”."]}):(0,n.jsx)(f.A,{dense:!0,sx:{maxHeight:{xs:240,md:"45vh"},overflow:"auto",border:1,borderColor:"divider",borderRadius:1},children:u.map(e=>(0,n.jsx)(y.Ay,{disablePadding:!0,children:(0,n.jsxs)(v.A,{onClick:()=>s(e.id),dense:!0,children:[(0,n.jsx)(j.A,{sx:{minWidth:36},children:(0,n.jsx)(b.A,{edge:"start",checked:a.has(e.id),tabIndex:-1,disableRipple:!0})}),(0,n.jsx)(A.A,{primary:e.label})]})},e.id))})]})};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(z.A,{open:t,onClose:a,maxWidth:"lg",fullWidth:!0,fullScreen:c,PaperProps:{sx:{height:c?"100%":"90vh",maxHeight:c?"100%":"90vh"}},children:[(0,n.jsx)(N.A,{children:"Create package"}),(0,n.jsxs)(R.A,{dividers:!0,sx:{overflow:"auto"},children:[(0,n.jsx)(O.A,{activeStep:u,sx:{mb:3},children:eC.map(e=>(0,n.jsx)(F.A,{children:(0,n.jsx)(L.A,{children:e})},e))}),(()=>{switch(u){case 0:return D?(0,n.jsx)(r.default,{sx:{display:"flex",justifyContent:"center",p:4},children:(0,n.jsx)(w.default,{})}):(0,n.jsxs)(k.A,{spacing:2,children:[(0,n.jsx)(d.A,{variant:"body2",color:"text.secondary",children:"Pick the entities to include. Dependencies (subflows, referenced models and MCP servers, planned-execution flows) are pulled in automatically in the next step."}),(0,n.jsxs)(k.A,{direction:"row",spacing:1,alignItems:"center",flexWrap:"wrap",useFlexGap:!0,children:[(0,n.jsxs)(o.A,{component:"label",variant:"outlined",startIcon:(0,n.jsx)(U.A,{}),children:["Import manifest (.json)",(0,n.jsx)("input",{type:"file",accept:"application/json,.json",hidden:!0,onChange:e=>{var t;let a=null==(t=e.target.files)?void 0:t[0];e.target.value="",a&&tW(a)}})]}),(0,n.jsx)(d.A,{variant:"caption",color:"text.secondary",children:"Restores the selection, metadata and accepted secrets from a package you exported earlier."})]}),ev.length>0&&(0,n.jsxs)(S.A,{severity:"error",onClose:()=>ej([]),children:[(0,n.jsx)(C.A,{children:"Could not import that file"}),ev.map((e,t)=>(0,n.jsx)("div",{children:e},t))]}),ef&&(0,n.jsxs)(S.A,{severity:ef.missing.length>0?"warning":"success",children:[(0,n.jsxs)(C.A,{children:["Imported “",ef.metadata.name,"” v",ef.metadata.version]}),"Restored ",ef.selection.flowIds.length," flow(s),"," ",ef.selection.modelIds.length," model(s),"," ",ef.selection.mcpServerNames.length," MCP server(s),"," ",ef.selection.plannedExecutionIds.length," planned execution(s) and"," ",ef.secretNames.length," secret name(s).",ef.missing.length>0&&(0,n.jsxs)(r.default,{sx:{mt:1},children:["No longer on this host (left unselected):",ef.missing.map((e,t)=>(0,n.jsxs)("div",{children:[e.type,": ",e.label]},t))]})]}),(0,n.jsxs)(k.A,{direction:"row",spacing:2,flexWrap:"wrap",useFlexGap:!0,children:[tK("Flows",q.flows,G,tE(B),el,ei),tK("Models",q.models,V,tE($),eo,eh),tK("MCP servers",q.mcpServers,X,tE(ea),ep,em),tK("Planned executions",q.plannedExecutions,en,tE(es),ex,eg)]})]});case 1:if(eb)return(0,n.jsx)(r.default,{sx:{display:"flex",justifyContent:"center",p:4},children:(0,n.jsx)(w.default,{})});if(eE)return(0,n.jsx)(S.A,{severity:"error",children:eE});if(!eI)return null;return(0,n.jsxs)(k.A,{spacing:2,children:[t$&&(0,n.jsxs)(S.A,{severity:"error",children:[(0,n.jsx)(C.A,{children:"Local MCP server(s) cannot be packaged"}),eI.mcp.errors.map((e,t)=>(0,n.jsx)("div",{children:e},t))]}),eI.resolved.autoAdded.length>0&&(0,n.jsxs)(S.A,{severity:"info",children:[(0,n.jsx)(C.A,{children:"Automatically included dependencies"}),eI.resolved.autoAdded.map((e,t)=>(0,n.jsxs)("div",{children:[e.type,": ",(0,n.jsx)("code",{children:e.id})," — ",e.reason]},t))]}),eI.resolved.warnings.length>0&&(0,n.jsxs)(S.A,{severity:"warning",children:[(0,n.jsx)(C.A,{children:"Warnings"}),eI.resolved.warnings.map((e,t)=>(0,n.jsx)("div",{children:e},t))]}),(0,n.jsx)(T.A,{}),(0,n.jsxs)(d.A,{variant:"body2",children:["Resolved: ",eI.resolved.flowIds.length," flow(s),"," ",eI.resolved.modelIds.length," model(s),"," ",eI.resolved.mcpServerNames.length," MCP server(s),"," ",eI.resolved.plannedExecutionIds.length," planned execution(s)."]}),eI.mcp.servers.length>0&&(0,n.jsx)(k.A,{direction:"row",spacing:1,flexWrap:"wrap",useFlexGap:!0,children:eI.mcp.servers.map(e=>(0,n.jsx)(i.A,{label:"".concat(e.name," \xb7 ").concat(e.sourceType),size:"small",color:"success",variant:"outlined"},e.name))})]});case 2:var e;return(0,n.jsxs)(k.A,{spacing:2,children:[(0,n.jsx)(d.A,{variant:"subtitle2",children:"Global variables"}),(0,n.jsx)(d.A,{variant:"body2",color:"text.secondary",children:"Global variables referenced by the package. Add a useful description for each one; installers will supply values and FLUJO will create them in Global Variables."}),eI&&0!==(null!=(e=eI.globals)?e:[]).length?(0,n.jsx)(k.A,{spacing:1.5,children:eI.globals.map(e=>{var t;return(0,n.jsxs)(k.A,{direction:"row",spacing:1,alignItems:"flex-start",children:[(0,n.jsx)(x.A,{size:"small",label:e.name,value:null!=(t=ez[e.name])?t:"",onChange:t=>eN(a=>({...a,[e.name]:t.target.value})),helperText:e.isSecret?"Secret global; its value is never included in the package":"Description shown during package installation",fullWidth:!0}),e.isSecret&&(0,n.jsx)(i.A,{label:"secret global",size:"small",color:"warning",variant:"outlined"})]},e.name)})}):(0,n.jsx)(S.A,{severity:"success",children:"No global variables referenced by this package."}),(0,n.jsx)(T.A,{}),(0,n.jsx)(d.A,{variant:"subtitle2",children:"Declared secrets (entity keys)"}),(0,n.jsx)(d.A,{variant:"body2",color:"text.secondary",children:"Secrets the package will declare from model API keys and MCP env/headers. Values are never included — whoever installs must supply them."}),eI&&0!==eI.secrets.length?(0,n.jsx)(f.A,{dense:!0,children:eI.secrets.map(e=>(0,n.jsxs)(y.Ay,{children:[(0,n.jsx)(b.A,{edge:"start",checked:!eR.has(e.name),onChange:t=>eO(a=>{let n=new Set(a);return t.target.checked?n.delete(e.name):n.add(e.name),n}),inputProps:{"aria-label":"Include ".concat(e.name," in package secrets")}}),(0,n.jsx)(A.A,{primary:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("code",{children:eT(e.name)})," ",e.required&&(0,n.jsx)(i.A,{label:"required",size:"small",color:"warning"})]}),secondary:eR.has(e.name)?"Excluded — the package will not request this value":e.description})]},e.name))}):(0,n.jsx)(S.A,{severity:"success",children:"No entity secrets to declare."}),(0,n.jsx)(T.A,{}),(0,n.jsx)(d.A,{variant:"subtitle2",children:"Detected secrets in content"}),(0,n.jsxs)(d.A,{variant:"body2",color:"text.secondary",children:["Values that look secret or instance-specific (paths, repos, tokens, URLs, emails) found in flow prompts, node properties, model config and planned- execution prompts. Accepted rows are replaced with a"," ",(0,n.jsx)("code",{children:"{{secret.NAME}}"})," placeholder everywhere they occur."]}),eH&&(0,n.jsx)(r.default,{sx:{display:"flex",justifyContent:"center",p:2},children:(0,n.jsx)(w.default,{size:28})}),eJ&&(0,n.jsx)(S.A,{severity:"error",children:eJ}),!eH&&eU&&0===eF.length&&(0,n.jsx)(S.A,{severity:"success",children:"No likely secrets detected in the packaged content."}),eF.length>0&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(k.A,{direction:"row",spacing:.5,flexWrap:"wrap",useFlexGap:!0,children:tJ.map(e=>{let[t,a]=e;return(0,n.jsx)(i.A,{size:"small",variant:"outlined",label:"".concat(t,": ").concat(a)},t)})}),(0,n.jsxs)(k.A,{direction:"row",spacing:1,alignItems:"center",flexWrap:"wrap",useFlexGap:!0,children:[(0,n.jsx)(o.A,{size:"small",onClick:()=>tO(!0),children:"Accept all"}),(0,n.jsx)(o.A,{size:"small",onClick:()=>tO(!1),children:"Reject all"}),(0,n.jsx)(x.A,{size:"small",placeholder:"Filter detected secrets…",value:eZ,onChange:e=>e$(e.target.value),sx:{minWidth:200,flex:1}}),(0,n.jsxs)(d.A,{variant:"caption",color:"text.secondary",sx:{alignSelf:"center"},children:[tM.filter(e=>e.accepted).length," of ",tM.length," accepted"]})]}),(0,n.jsxs)(f.A,{dense:!0,sx:{border:1,borderColor:"divider",borderRadius:1,maxHeight:280,overflow:"auto"},children:[0===tU.length&&(0,n.jsx)(y.Ay,{children:(0,n.jsx)(A.A,{primary:(0,n.jsxs)(d.A,{variant:"body2",color:"text.secondary",children:["No rows match “",eZ,"”."]})})}),tU.map(e=>(0,n.jsxs)(y.Ay,{alignItems:"flex-start",divider:!0,children:[(0,n.jsx)(j.A,{sx:{minWidth:36,mt:1},children:(0,n.jsx)(b.A,{edge:"start",checked:!!e.accepted,onChange:()=>{let t;return t=e.ids,eL(e=>{var a;let n=new Set(t),s=!(null==(a=e.find(e=>n.has(e.id)))?void 0:a.accepted);return e.map(e=>n.has(e.id)?{...e,accepted:s}:e)})},tabIndex:-1,disableRipple:!0})}),(0,n.jsx)(A.A,{primary:(0,n.jsxs)(k.A,{direction:"row",spacing:1,alignItems:"center",flexWrap:"wrap",useFlexGap:!0,children:[(0,n.jsx)(i.A,{label:e.kind,size:"small"}),(0,n.jsx)(i.A,{label:e.source,size:"small",variant:"outlined",color:"model"===e.source?"secondary":"manual"===e.source?"primary":"default"}),e.confidence&&(0,n.jsx)(i.A,{label:e.confidence,size:"small",variant:"outlined",color:"high"===e.confidence?"success":"low"===e.confidence?"warning":"default"}),e.locations.length>1&&(0,n.jsx)(i.A,{label:"".concat(e.locations.length,"\xd7"),size:"small",variant:"outlined"}),(0,n.jsx)(r.default,{component:"code",sx:{wordBreak:"break-all"},children:e.excerpt.length>80?"".concat(e.excerpt.slice(0,80),"…"):e.excerpt})]}),secondary:(0,n.jsxs)(k.A,{spacing:.5,sx:{mt:.5},children:[(0,n.jsxs)(d.A,{variant:"caption",color:"text.secondary",children:[e.locations.length>1?"".concat(e.locations.length," locations: ").concat(e.locations.slice(0,3).join(", ")).concat(e.locations.length>3?", …":""):e.locations[0],e.rationale?" — ".concat(e.rationale):""]}),(0,n.jsx)(x.A,{size:"small",label:"Secret name",value:eT(e.suggestedSecretName),onChange:t=>{var a,n;let s,r;return s=e.ids,a=e.suggestedSecretName,n=t.target.value,r=a.startsWith("SECRET_")?"SECRET_".concat(n.replace(/^SECRET_/,"")):n,eL(e=>{let t=new Set(s);return e.map(e=>t.has(e.id)?{...e,suggestedSecretName:r}:e)})},disabled:!e.accepted,sx:{maxWidth:320}})]}),primaryTypographyProps:{component:"div"},secondaryTypographyProps:{component:"div"}})]},e.key))]})]}),tq.length>0&&(0,n.jsxs)(S.A,{severity:"warning",children:[(0,n.jsx)(C.A,{children:"Secrets from the imported manifest that need re-adding"}),"A manifest never carries secret values, so these declarations could not be matched to anything in the current content — re-add them below if they still apply: ",tq.map(eT).join(", "),"."]}),e_.length>0&&(0,n.jsxs)(S.A,{severity:"warning",children:[(0,n.jsx)(C.A,{children:"Notes"}),e_.map((e,t)=>(0,n.jsx)("div",{children:e},t))]}),(0,n.jsx)(T.A,{}),(0,n.jsx)(d.A,{variant:"subtitle2",children:"Add a secret manually"}),(0,n.jsxs)(d.A,{variant:"body2",color:"text.secondary",children:["Enter any value that should be redacted from the package. It is treated purely as text to replace with a ",(0,n.jsx)("code",{children:"{{secret.NAME}}"})," placeholder — it is never executed."]}),e6&&(0,n.jsx)(S.A,{severity:"error",children:e6}),(0,n.jsxs)(k.A,{direction:"row",spacing:1,alignItems:"flex-start",flexWrap:"wrap",useFlexGap:!0,children:[(0,n.jsx)(x.A,{size:"small",label:"Value to redact",value:e0,onChange:e=>e1(e.target.value),sx:{minWidth:240,flex:1}}),(0,n.jsx)(x.A,{size:"small",label:"Secret name",value:e2,onChange:e=>e5(e.target.value),sx:{minWidth:180}}),(0,n.jsx)(I.A,{size:"small",value:e4,onChange:e=>e3(e.target.value),sx:{minWidth:120},children:ed.map(e=>(0,n.jsx)(P.A,{value:e,children:e},e))}),(0,n.jsx)(o.A,{variant:"outlined",onClick:tF,disabled:!e0.trim(),children:"Add"}),(0,n.jsx)(o.A,{variant:"text",startIcon:(0,n.jsx)(M.A,{}),onClick:()=>void tL(),disabled:tP,children:"Pick from app"})]}),(0,n.jsx)(T.A,{}),(0,n.jsx)(d.A,{variant:"subtitle2",children:"Advanced scan options"}),(0,n.jsxs)(k.A,{direction:"row",spacing:2,flexWrap:"wrap",useFlexGap:!0,children:[(0,n.jsx)(E.A,{control:(0,n.jsx)(W.A,{checked:eX,onChange:e=>{eK(e.target.checked),eq(!1)}}),label:"Aggressive entropy scan"}),(0,n.jsx)(E.A,{control:(0,n.jsx)(W.A,{checked:eY,onChange:e=>{eQ(e.target.checked),eq(!1)}}),label:"Detect bare owner/repo slugs"}),(0,n.jsx)(o.A,{size:"small",variant:"text",onClick:()=>void tR(),disabled:eH,children:"Re-scan"})]}),(0,n.jsx)(T.A,{}),(0,n.jsx)(d.A,{variant:"subtitle2",children:"Optional: model-driven scan"}),(0,n.jsx)(S.A,{severity:"info",children:"Running the model-driven pass sends the packaged content above to the selected model provider. The offline heuristic scan never leaves your machine."}),(0,n.jsxs)(k.A,{direction:"row",spacing:1,alignItems:"center",flexWrap:"wrap",useFlexGap:!0,children:[(0,n.jsxs)(I.A,{size:"small",displayEmpty:!0,value:eB,onChange:e=>eV(e.target.value),sx:{minWidth:220},children:[(0,n.jsx)(P.A,{value:"",children:(0,n.jsx)("em",{children:"Select a model…"})}),q.models.map(e=>(0,n.jsx)(P.A,{value:e.id,children:e.label},e.id))]}),(0,n.jsx)(o.A,{variant:"outlined",disabled:!eB||eH,onClick:()=>void tR(eB),children:"Scan with model"})]})]});case 3:return(0,n.jsxs)(k.A,{spacing:2,children:[(0,n.jsx)(x.A,{label:"Package name",value:td,onChange:e=>tu(e.target.value),required:!0,fullWidth:!0,error:td.length>0&&0===td.trim().length}),(0,n.jsx)(x.A,{label:"Version",value:th,onChange:e=>tp(e.target.value),required:!0,fullWidth:!0,error:th.length>0&&!tV,helperText:th.length>0&&!tV?"Must be a semantic version (e.g. 1.0.0)":" "}),(0,n.jsx)(x.A,{label:"Description",value:tm,onChange:e=>tx(e.target.value),fullWidth:!0,multiline:!0,minRows:2}),(0,n.jsx)(x.A,{label:"Tags (comma-separated)",value:tg,onChange:e=>tf(e.target.value),fullWidth:!0})]});case 4:if(ty)return(0,n.jsx)(r.default,{sx:{display:"flex",justifyContent:"center",p:4},children:(0,n.jsx)(w.default,{})});if(tA)return(0,n.jsx)(S.A,{severity:"error",children:tA});if(null==tj?void 0:tj.ok)return(0,n.jsxs)(k.A,{spacing:2,children:[(0,n.jsxs)(S.A,{severity:"success",children:[(0,n.jsx)(C.A,{children:"Package built"}),(0,n.jsx)("code",{children:td.trim()})," v",th.trim()," is ready to export."]}),tj.warnings.length>0&&(0,n.jsxs)(S.A,{severity:"warning",children:[(0,n.jsx)(C.A,{children:"Warnings"}),tj.warnings.map((e,t)=>(0,n.jsx)("div",{children:e},t))]}),(0,n.jsx)(o.A,{variant:"contained",onClick:tG,children:"Download package manifest (.json)"}),(0,n.jsx)(T.A,{}),(0,n.jsx)(d.A,{variant:"subtitle2",children:"Publish to the FLUJO package registry"}),(0,n.jsx)(d.A,{variant:"body2",color:"text.secondary",children:"Publishing requires a confirmed registry account (set one up on the Packages page). Only the secret-safe manifest above is uploaded — no secret values ever leave your machine."}),(null==tC?void 0:tC.ok)?(0,n.jsxs)(S.A,{severity:"success",children:[(0,n.jsx)(C.A,{children:"Published"}),tC.name||td.trim()," v",tC.version||th.trim()," is live.",tC.url&&(0,n.jsx)("div",{children:(0,n.jsx)("a",{href:tC.url,target:"_blank",rel:"noreferrer",children:tC.url})})]}):(0,n.jsxs)(n.Fragment,{children:[tC&&!tC.ok&&(0,n.jsx)(S.A,{severity:"unconfirmed"===tC.code||"not_authenticated"===tC.code?"warning":"error",children:tC.error||"Failed to publish package."}),(0,n.jsxs)(k.A,{direction:"row",spacing:1,flexWrap:"wrap",useFlexGap:!0,children:[(0,n.jsx)(o.A,{variant:"outlined",onClick:()=>void t_(),disabled:tk,children:tk?"Publishing…":"Publish to registry"}),tC&&!tC.ok&&("not_authenticated"===tC.code||"unconfirmed"===tC.code)&&(0,n.jsx)(o.A,{variant:"contained",onClick:()=>tc(!0),disabled:tk,children:"Log in to registry"})]})]})]});return null;default:return null}})()]}),(0,n.jsxs)(H.A,{children:[(0,n.jsx)(o.A,{onClick:a,children:(null==tj?void 0:tj.ok)?"Close":"Cancel"}),(0,n.jsx)(r.default,{sx:{flex:1}}),(0,n.jsx)(o.A,{onClick:()=>h(e=>Math.max(e-1,0)),disabled:0===u||ty||eb,children:"Back"}),u<4&&(0,n.jsx)(o.A,{variant:"contained",onClick:tB,disabled:tX,children:3===u?"Build":"Next"})]})]}),(0,n.jsxs)(z.A,{open:to,onClose:()=>tc(!1),maxWidth:"sm",fullWidth:!0,children:[(0,n.jsx)(N.A,{children:"Log in to the package registry"}),(0,n.jsx)(R.A,{dividers:!0,children:(0,n.jsx)(K,{})}),(0,n.jsxs)(H.A,{children:[(0,n.jsx)(o.A,{onClick:()=>tc(!1),children:"Done"}),(0,n.jsx)(o.A,{variant:"contained",onClick:()=>{tc(!1),t_()},disabled:tk,children:"Retry publish"})]})]}),(0,n.jsxs)(z.A,{open:e8,onClose:()=>e9(!1),maxWidth:"md",fullWidth:!0,children:[(0,n.jsx)(N.A,{children:"Pick a value to redact"}),(0,n.jsxs)(R.A,{dividers:!0,children:[(0,n.jsx)(d.A,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"These are plaintext values found in the packaged flows, models and planned executions. Pick one to pre-fill the value to redact. API keys and MCP env/header values are never listed — they are already declared as secrets."}),(0,n.jsx)(x.A,{size:"small",fullWidth:!0,placeholder:"Search values…",value:tl,onChange:e=>ti(e.target.value),InputProps:{startAdornment:(0,n.jsx)(g.A,{position:"start",children:(0,n.jsx)(M.A,{fontSize:"small"})})},sx:{mb:2}}),te?(0,n.jsx)(r.default,{sx:{display:"flex",justifyContent:"center",p:4},children:(0,n.jsx)(w.default,{})}):ta?(0,n.jsx)(S.A,{severity:"error",children:ta}):0===ts.length?(0,n.jsx)(S.A,{severity:"info",children:"No pickable plaintext values found in the packaged content."}):0===tH.length?(0,n.jsxs)(d.A,{variant:"body2",color:"text.secondary",children:["No values match “",tl,"”."]}):(0,n.jsx)(f.A,{dense:!0,sx:{border:1,borderColor:"divider",borderRadius:1,maxHeight:"50vh",overflow:"auto"},children:tH.map((e,t)=>(0,n.jsx)(y.Ay,{disablePadding:!0,divider:!0,children:(0,n.jsx)(v.A,{onClick:()=>{e1(e.text),e7(null),e9(!1)},alignItems:"flex-start",children:(0,n.jsx)(A.A,{primary:(0,n.jsx)(r.default,{component:"code",sx:{wordBreak:"break-all"},children:e.text.length>120?"".concat(e.text.slice(0,120),"…"):e.text}),secondary:(0,n.jsxs)(k.A,{direction:"row",spacing:1,alignItems:"center",flexWrap:"wrap",useFlexGap:!0,sx:{mt:.5},children:[(0,n.jsx)(i.A,{label:e.source,size:"small",variant:"outlined"}),(0,n.jsx)(d.A,{variant:"caption",color:"text.secondary",children:e.location})]}),primaryTypographyProps:{component:"div"},secondaryTypographyProps:{component:"div"}})})},"".concat(e.location,"-").concat(t)))})]}),(0,n.jsx)(H.A,{children:(0,n.jsx)(o.A,{onClick:()=>e9(!1),children:"Close"})})]})]})}var eP=a(50001),eE=a(51314),eW=a(76530);let ez=(0,D.h)("frontend/components/Packages/InstalledPackagesList");function eN(){let[e,t]=(0,s.useState)([]),[a,l]=(0,s.useState)(!0),[u,h]=(0,s.useState)(null),[p,m]=(0,s.useState)(null),[f,y]=(0,s.useState)(!1),[v,j]=(0,s.useState)(null),[b,A]=(0,s.useState)(""),C=(0,s.useCallback)(async()=>{l(!0),h(null);try{var e;let a=await fetch("/api/packages/installed");if(!a.ok)throw Error("Failed to load installed packages (".concat(a.status,")"));let n=await a.json();t(null!=(e=n.packages)?e:[])}catch(e){ez.warn("Failed to load installed packages",e),h(e instanceof Error?e.message:String(e))}finally{l(!1)}},[]);(0,s.useEffect)(()=>{C()},[C]);let T=(0,s.useCallback)(async e=>{y(!0),j(null);try{let a=await fetch("/api/packages/uninstall",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({packageName:e.packageName})}),n=await a.json();if(!a.ok){var t;throw Error(null!=(t=n.error)?t:"Uninstall failed (".concat(a.status,")"))}j(n),await C()}catch(e){ez.warn("Uninstall failed",e),h(e instanceof Error?e.message:String(e))}finally{y(!1),m(null)}},[C]),I=(0,s.useMemo)(()=>{let t=b.trim().toLowerCase();return t?e.filter(e=>"".concat(e.packageName," ").concat(e.version).toLowerCase().includes(t)):e},[e,b]);return(0,n.jsxs)(r.default,{sx:{maxWidth:{xs:"100%",md:1100},mx:"auto",mt:3},children:[(0,n.jsxs)(k.A,{direction:"row",spacing:1,alignItems:"center",sx:{mb:1},children:[(0,n.jsx)(d.A,{variant:"h6",children:"Installed packages"}),(0,n.jsx)(o.A,{size:"small",startIcon:(0,n.jsx)(eW.A,{}),onClick:()=>void C(),disabled:a,children:"Refresh"})]}),e.length>0&&(0,n.jsx)(x.A,{size:"small",fullWidth:!0,placeholder:"Search installed packages…",value:b,onChange:e=>A(e.target.value),InputProps:{startAdornment:(0,n.jsx)(g.A,{position:"start",children:(0,n.jsx)(M.A,{fontSize:"small"})})},sx:{mb:2}}),u&&(0,n.jsx)(S.A,{severity:"error",sx:{mb:2},onClose:()=>h(null),children:u}),v&&(0,n.jsxs)(S.A,{severity:v.hasErrors?"warning":"success",sx:{mb:2},onClose:()=>j(null),children:['Uninstalled "',v.packageName,'": ',v.removed.length," removed,"," ",v.skipped.length," preserved/skipped",v.hasErrors?", ".concat(v.errors.length," error(s)"):"","."]}),a?(0,n.jsx)(r.default,{sx:{display:"flex",justifyContent:"center",p:3},children:(0,n.jsx)(w.default,{size:24})}):0===e.length?(0,n.jsx)(d.A,{variant:"body2",color:"text.secondary",children:"No packages installed yet."}):0===I.length?(0,n.jsxs)(d.A,{variant:"body2",color:"text.secondary",children:["No packages match “",b,"”."]}):(0,n.jsx)(k.A,{spacing:1,children:I.map(e=>(0,n.jsxs)(c.A,{variant:"outlined",sx:{p:2,display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,n.jsxs)(r.default,{children:[(0,n.jsxs)(k.A,{direction:"row",spacing:1,alignItems:"center",children:[(0,n.jsx)(d.A,{variant:"subtitle1",children:e.packageName}),(0,n.jsx)(i.A,{label:"v".concat(e.version),size:"small",variant:"outlined"})]}),(0,n.jsxs)(d.A,{variant:"caption",color:"text.secondary",children:[e.entityCounts.flows," flows \xb7 ",e.entityCounts.models," models \xb7"," ",e.entityCounts.servers," servers \xb7 ",e.entityCounts.plannedExecutions," planned \xb7 installed ",new Date(e.installedAt).toLocaleString()]})]}),(0,n.jsx)(o.A,{color:"error",size:"small",startIcon:(0,n.jsx)(eE.A,{}),onClick:()=>m(e),disabled:f,children:"Uninstall"})]},e.packageName))}),(0,n.jsxs)(z.A,{open:null!==p,onClose:()=>f?void 0:m(null),children:[(0,n.jsxs)(N.A,{children:['Uninstall "',null==p?void 0:p.packageName,'"?']}),(0,n.jsx)(R.A,{children:(0,n.jsxs)(eP.A,{children:["This removes the flows, models, MCP servers and planned executions this package",(0,n.jsx)("strong",{children:" created"}),". Pre-existing entities the package merely updated in place are preserved. This cannot be undone."]})}),(0,n.jsxs)(H.A,{children:[(0,n.jsx)(o.A,{onClick:()=>m(null),disabled:f,children:"Cancel"}),(0,n.jsx)(o.A,{color:"error",variant:"contained",onClick:()=>p&&void T(p),disabled:f,startIcon:f?(0,n.jsx)(w.default,{size:16}):(0,n.jsx)(eE.A,{}),children:"Uninstall"})]})]})]})}var eR=a(33077),eO=a(29767),eF=a(53062),eL=a(84578),eH=a(1702),eM=a(41983),eU=a(23789),eq=a(17438),eJ=a(14418),eD=a(52550),e_=a(12402),eG=a(61563),eB=a(42063),eV=a(68212);let eZ=(0,D.h)("frontend/components/Packages/InstallPackageCard");function e$(e){var t,a,l,c,u;let{onInstalled:h}=e,[p,m]=(0,s.useState)(""),[f,y]=(0,s.useState)([]),[v,j]=(0,s.useState)(!1),[b,A]=(0,s.useState)(null),[C,I]=(0,s.useState)(!1),[P,E]=(0,s.useState)(null),[W,U]=(0,s.useState)(null),[q,J]=(0,s.useState)(!1),[D,_]=(0,s.useState)(null),[G,B]=(0,s.useState)(null),[V,Z]=(0,s.useState)(!1),[X,K]=(0,s.useState)(null),[Y,Q]=(0,s.useState)(null),[ee,et]=(0,s.useState)({}),[ea,en]=(0,s.useState)({}),[es,er]=(0,s.useState)({}),[ei,eo]=(0,s.useState)(null),[ec,ed]=(0,s.useState)(!1),[eu,eh]=(0,s.useState)(0),[ep,em]=(0,s.useState)(null),[ex,eg]=(0,s.useState)({}),ef=(0,s.useCallback)(async e=>{j(!0),A(null);try{var t;let a=await el.searchRegistry({q:e.trim()||void 0,pageSize:24});y(null!=(t=a.items)?t:[]),I(!0)}catch(e){eZ.warn("Failed to search package registry",e),A(e instanceof Error?e.message:String(e)),y([])}finally{j(!1)}},[]);(0,s.useEffect)(()=>{ef(""),$.getStatus().then(e=>E(e.signedIn?e.publisherHandle:null)).catch(e=>eZ.debug("Registry account status unavailable",e))},[ef]);let ey=(0,s.useCallback)(async()=>{if(W){J(!0),_(null);try{let e=await $.deletePackage(W.id);if(!e.ok)return void _(e.error||"Failed to delete package.");y(e=>e.filter(e=>e.id!==W.id)),U(null),await ef(p)}catch(e){eZ.warn("Package deletion failed",e),_(e instanceof Error?e.message:String(e))}finally{J(!1)}}},[W,p,ef]),ev=(0,s.useCallback)(async e=>{B(e),Q(null),em(null),et({}),en({}),er({}),eo(null),ed(!1),eh(0),eg({}),K(null),Z(!0);try{var t,a,n;let s=await el.installFromRegistry({packageId:e.id,version:e.latestVersion,consentGranted:!1});if(!s.ok)return void K((null==(a=s.errors)?void 0:a[0])||"Failed to fetch package preview.");Q(s);let r=null==(t=s.preview)?void 0:t.models[0];eo(null!=(n=null==r?void 0:r.id)?n:null),eh(+!r)}catch(e){eZ.warn("Failed to fetch package preview",e),K(e instanceof Error?e.message:String(e))}finally{Z(!1)}},[]),ej=(0,s.useCallback)(async()=>{if(G&&Y){Z(!0),K(null);try{var e,t;let a=Object.fromEntries((null!=(t=null==(e=Y.preview)?void 0:e.globals)?t:[]).map(e=>{var t,a;return[e.name,{value:null!=(a=null==(t=ea[e.name])?void 0:t.trim())?a:"",metadata:{isSecret:!0===e.isSecret}}]}).filter(e=>{let[,t]=e;return t.value.length>0}));if(Object.keys(a).length>0){let e=await fetch("/api/env",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"setAll",variables:a})});if(!e.ok){let t=await e.json().catch(()=>({}));throw Error((null==t?void 0:t.error)||"Failed to save package globals (HTTP ".concat(e.status,")"))}}let n=await el.installFromRegistry({packageId:G.id,version:G.latestVersion,secrets:ee,modelMappings:Object.fromEntries(Object.entries(es).filter(e=>{let[,t]=e;return""!==t})),consentGranted:!0});em(n),Q(null),n.ok&&(null==h||h())}catch(e){eZ.warn("Install failed",e),K(e instanceof Error?e.message:String(e))}finally{Z(!1)}}},[G,Y,ee,ea,es,h]),eb=(0,s.useCallback)(()=>{B(null),Q(null),em(null),et({}),en({}),er({}),eo(null),ed(!1),eh(0),eg({}),K(null)},[]),eA=null==Y?void 0:Y.preview,ew=null!=(a=null==eA?void 0:eA.models.find(e=>e.id===ei))?a:null==eA?void 0:eA.models[0],ek=null!=(l=null==eA?void 0:eA.models.filter(e=>Object.prototype.hasOwnProperty.call(es,e.id)).length)?l:0,eS=null==(c=null==eA?void 0:eA.models.every(e=>Object.prototype.hasOwnProperty.call(es,e.id)))||c,eC=(0,s.useCallback)(e=>{eo(e),ed(!!es[e])},[es]),eT=(0,s.useCallback)(e=>{er(t=>({...t,[e]:""})),ed(!1)},[]),eI=(0,s.useCallback)((e,t)=>{er(a=>({...a,[e]:t}))},[]);return(0,n.jsxs)(r.default,{sx:{maxWidth:{xs:"100%",md:1100},mx:"auto",mt:3},children:[(0,n.jsxs)(k.A,{direction:"row",spacing:1,alignItems:"center",sx:{mb:1},children:[(0,n.jsx)(e_.A,{color:"action"}),(0,n.jsx)(d.A,{variant:"h6",children:"Browse registry"})]}),(0,n.jsx)(x.A,{size:"small",fullWidth:!0,placeholder:"Search published packages…",value:p,onChange:e=>m(e.target.value),onKeyDown:e=>{"Enter"===e.key&&ef(p)},InputProps:{startAdornment:(0,n.jsx)(g.A,{position:"start",children:(0,n.jsx)(M.A,{fontSize:"small"})}),endAdornment:v?(0,n.jsx)(g.A,{position:"end",children:(0,n.jsx)(w.default,{size:16})}):void 0},sx:{mb:2}}),b&&(0,n.jsx)(S.A,{severity:"error",sx:{mb:2},onClose:()=>A(null),children:b}),C&&!v&&0===f.length&&!b&&(0,n.jsxs)(d.A,{variant:"body2",color:"text.secondary",children:["No packages match “",p,"”."]}),(0,n.jsx)(eR.Ay,{container:!0,spacing:2,children:f.map(e=>(0,n.jsx)(eR.Ay,{item:!0,xs:12,sm:6,md:4,children:(0,n.jsxs)(eO.A,{variant:"outlined",sx:{height:"100%",display:"flex",flexDirection:"column"},children:[(0,n.jsx)(eF.A,{onClick:()=>void ev(e),sx:{flex:1},children:(0,n.jsxs)(eL.A,{children:[(0,n.jsxs)(k.A,{direction:"row",spacing:1,alignItems:"baseline",justifyContent:"space-between",children:[(0,n.jsx)(d.A,{variant:"subtitle1",noWrap:!0,children:e.name}),(0,n.jsx)(i.A,{size:"small",variant:"outlined",label:"v".concat(e.latestVersion)})]}),(0,n.jsx)(d.A,{variant:"caption",color:"text.secondary",display:"block",children:e.handle}),(0,n.jsx)(d.A,{variant:"body2",color:"text.secondary",sx:{mt:.5,minHeight:"2.5em"},children:e.description||"No description provided."}),(0,n.jsx)(k.A,{direction:"row",spacing:.5,sx:{mt:1,flexWrap:"wrap",gap:.5},children:e.tags.map(e=>(0,n.jsx)(i.A,{size:"small",label:e},e))}),(0,n.jsxs)(k.A,{direction:"row",spacing:.5,alignItems:"center",sx:{mt:1},children:[(0,n.jsx)(eG.A,{fontSize:"inherit",color:"disabled"}),(0,n.jsx)(d.A,{variant:"caption",color:"text.secondary",children:e.downloads})]})]})}),function(e,t){var a;let n=null==t?void 0:t.trim().replace(/^@/,"").toLocaleLowerCase();if(!n)return!1;let s=null==(a=e.handle)?void 0:a.trim().replace(/^@/,"");if(s)return s.split("/")[0].toLocaleLowerCase()===n;let r=e.id.trim().replace(/^@/,"");return r.includes("/")&&r.split("/")[0].toLocaleLowerCase()===n}(e,P)&&(0,n.jsx)(eH.A,{sx:{justifyContent:"flex-end",pt:0},children:(0,n.jsx)(eM.A,{size:"small",color:"error","aria-label":"Delete ".concat(e.name),onClick:()=>{_(null),U(e)},children:(0,n.jsx)(eE.A,{fontSize:"small"})})})]})},e.id))}),(0,n.jsxs)(z.A,{open:null!==W,onClose:q?void 0:()=>U(null),maxWidth:"xs",fullWidth:!0,children:[(0,n.jsx)(N.A,{children:"Delete package?"}),(0,n.jsxs)(R.A,{children:[D&&(0,n.jsx)(S.A,{severity:"error",sx:{mb:2},children:D}),(0,n.jsxs)(d.A,{variant:"body2",children:["This permanently deletes ",(0,n.jsx)("strong",{children:null==W?void 0:W.name})," and all of its published versions from the registry. This action cannot be undone."]})]}),(0,n.jsxs)(H.A,{children:[(0,n.jsx)(o.A,{onClick:()=>U(null),disabled:q,children:"Cancel"}),(0,n.jsx)(o.A,{color:"error",variant:"contained",onClick:()=>void ey(),disabled:q,startIcon:q?(0,n.jsx)(w.default,{size:16,color:"inherit"}):(0,n.jsx)(eE.A,{}),children:"Delete package"})]})]}),(0,n.jsxs)(z.A,{open:null!==G,onClose:V?void 0:eb,maxWidth:!1,fullWidth:!0,PaperProps:{sx:{width:"min(1400px, calc(100vw - 32px))",maxWidth:"none",minHeight:{xs:"calc(100vh - 32px)",md:760},maxHeight:"calc(100vh - 32px)",borderRadius:{xs:2,md:3}}},children:[(0,n.jsxs)(N.A,{sx:{px:{xs:2,md:4},pt:{xs:2,md:3},pb:1},children:[(0,n.jsxs)(d.A,{component:"span",variant:"h5",fontWeight:700,children:["Install ",null==G?void 0:G.name]}),(0,n.jsx)(d.A,{variant:"body2",color:"text.secondary",sx:{mt:.5},children:"Match the package to your FLUJO, then review and install it."})]}),(0,n.jsxs)(R.A,{sx:{px:{xs:2,md:4},pb:3},children:[X&&(0,n.jsx)(S.A,{severity:"error",sx:{mb:2},onClose:()=>K(null),children:X}),V&&!Y&&!ep&&(0,n.jsx)(r.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",minHeight:420},children:(0,n.jsx)(w.default,{size:24})}),eA&&(null==Y?void 0:Y.package)&&(0,n.jsxs)(r.default,{children:[(0,n.jsxs)(k.A,{direction:{xs:"column",sm:"row"},spacing:1,alignItems:{sm:"center"},justifyContent:"space-between",sx:{mb:2.5},children:[(0,n.jsxs)(k.A,{direction:"row",spacing:1,alignItems:"center",children:[(0,n.jsx)(i.A,{size:"small",variant:"outlined",label:"v".concat(Y.package.version)}),Y.package.publisher&&(0,n.jsx)(i.A,{size:"small",variant:"outlined",label:Y.package.publisher}),(0,n.jsxs)(d.A,{variant:"caption",color:"text.secondary",children:[eA.servers.length," server(s) \xb7 ",eA.models.length," model(s) \xb7"," ",eA.flows.length," flow(s) \xb7 ",eA.plannedExecutions.length," planned execution(s)"]})]}),(0,n.jsxs)(d.A,{variant:"caption",color:"text.secondary",children:["Step ",eu+1," of 2"]})]}),(0,n.jsxs)(O.A,{activeStep:eu,sx:{maxWidth:720,mx:"auto",mb:3},children:[(0,n.jsx)(F.A,{children:(0,n.jsx)(L.A,{children:"Match models"})}),(0,n.jsx)(F.A,{children:(0,n.jsx)(L.A,{children:"Review & install"})})]}),0===eu&&eA.models.length>0&&ew&&(0,n.jsxs)(r.default,{children:[(0,n.jsxs)(r.default,{sx:{textAlign:"center",maxWidth:820,mx:"auto",mb:3},children:[(0,n.jsx)(d.A,{variant:"h4",fontWeight:750,sx:{mb:1},children:"The package was created with models that are not installed in your FLUJO."}),(0,n.jsx)(d.A,{variant:"h6",color:"text.secondary",fontWeight:400,children:"Let's replace or recreate them!"})]}),(0,n.jsxs)(r.default,{sx:{display:"grid",gridTemplateColumns:{xs:"minmax(0, 1fr)",md:"minmax(260px, 0.85fr) 88px minmax(420px, 1.35fr)"},gap:{xs:2,md:2.5},alignItems:"stretch"},children:[(0,n.jsxs)(r.default,{children:[(0,n.jsxs)(k.A,{direction:"row",alignItems:"center",justifyContent:"space-between",sx:{mb:1.25},children:[(0,n.jsx)(d.A,{variant:"overline",color:"text.secondary",fontWeight:700,children:"Models in this package"}),(0,n.jsx)(i.A,{size:"small",color:eS?"success":"default",label:"".concat(ek,"/").concat(eA.models.length," ready")})]}),(0,n.jsx)(k.A,{spacing:1.25,children:eA.models.map(e=>{let t=e.id===ew.id,a=Object.prototype.hasOwnProperty.call(es,e.id),s=eA.installedModels.find(t=>t.id===es[e.id]);return(0,n.jsx)(eO.A,{variant:"outlined",sx:{borderWidth:t?2:1,borderColor:t?"primary.main":"divider",bgcolor:t?"action.selected":"background.paper",transition:"border-color 120ms ease, background-color 120ms ease"},children:(0,n.jsx)(eF.A,{onClick:()=>eC(e.id),"aria-label":"Configure ".concat(e.displayName),sx:{minHeight:104,p:2},children:(0,n.jsxs)(k.A,{direction:"row",spacing:1.5,alignItems:"center",children:[(0,n.jsx)(r.default,{sx:{width:44,height:44,borderRadius:2,display:"grid",placeItems:"center",bgcolor:t?"primary.main":"action.hover",color:t?"primary.contrastText":"text.secondary",flex:"0 0 auto"},children:(0,n.jsx)(eD.A,{})}),(0,n.jsxs)(r.default,{sx:{minWidth:0,flex:1},children:[(0,n.jsx)(d.A,{variant:"subtitle1",fontWeight:700,noWrap:!0,children:e.displayName}),(0,n.jsx)(d.A,{variant:"caption",color:"text.secondary",display:"block",children:"Package model"}),a&&(0,n.jsxs)(k.A,{direction:"row",spacing:.5,alignItems:"center",sx:{mt:.5},children:[(0,n.jsx)(eJ.A,{color:"success",sx:{fontSize:16}}),(0,n.jsx)(d.A,{variant:"caption",color:"success.main",noWrap:!0,children:s?"Using ".concat(s.displayName):"Will be created"})]})]})]})})},e.id)})})]}),(0,n.jsx)(r.default,{"aria-hidden":!0,sx:{display:"grid",placeItems:"center",minHeight:{xs:64,md:360}},children:(0,n.jsx)(r.default,{sx:{width:64,height:64,borderRadius:"50%",display:"grid",placeItems:"center",bgcolor:"primary.main",color:"primary.contrastText",boxShadow:3,transform:{xs:"rotate(90deg)",md:"none"}},children:(0,n.jsx)(eq.A,{sx:{fontSize:38}})})}),(0,n.jsxs)(eO.A,{variant:"outlined",sx:{p:{xs:2,md:3},minHeight:{md:420},bgcolor:"background.default"},children:[(0,n.jsxs)(d.A,{variant:"overline",color:"text.secondary",fontWeight:700,children:["Replace ",ew.displayName]}),(0,n.jsx)(d.A,{variant:"h5",fontWeight:700,sx:{mt:.25,mb:2.5},children:"What would you like to do?"}),(0,n.jsxs)(eR.Ay,{container:!0,spacing:2,children:[(0,n.jsx)(eR.Ay,{item:!0,xs:12,sm:6,children:(0,n.jsx)(o.A,{fullWidth:!0,"aria-label":"Create new one",variant:Object.prototype.hasOwnProperty.call(es,ew.id)&&""===es[ew.id]?"contained":"outlined",onClick:()=>eT(ew.id),sx:{minHeight:154,p:2.5,textTransform:"none",alignItems:"stretch",justifyContent:"flex-start",textAlign:"left"},children:(0,n.jsxs)(k.A,{spacing:1,alignItems:"flex-start",children:[(0,n.jsx)(eU.A,{sx:{fontSize:36}}),(0,n.jsx)(d.A,{variant:"h6",fontWeight:700,children:"Create new one"}),(0,n.jsx)(d.A,{variant:"body2",color:Object.prototype.hasOwnProperty.call(es,ew.id)&&""===es[ew.id]?"inherit":"text.secondary",children:"Recreate this model in your FLUJO with the package's configuration."})]})})}),(0,n.jsx)(eR.Ay,{item:!0,xs:12,sm:6,children:(0,n.jsx)(o.A,{fullWidth:!0,"aria-label":"Use one of yours",variant:es[ew.id]?"contained":"outlined",onClick:()=>ed(!0),sx:{minHeight:154,p:2.5,textTransform:"none",alignItems:"stretch",justifyContent:"flex-start",textAlign:"left"},children:(0,n.jsxs)(k.A,{spacing:1,alignItems:"flex-start",children:[(0,n.jsx)(eD.A,{sx:{fontSize:36}}),(0,n.jsx)(d.A,{variant:"h6",fontWeight:700,children:"Use one of yours"}),(0,n.jsx)(d.A,{variant:"body2",color:es[ew.id]?"inherit":"text.secondary",children:"Connect the package to a model you already have installed."})]})})})]}),ec&&(0,n.jsxs)(r.default,{sx:{mt:2.5},children:[(0,n.jsx)(T.A,{sx:{mb:2}}),(0,n.jsx)(d.A,{variant:"subtitle1",fontWeight:700,sx:{mb:1},children:"Choose one of your installed models"}),eA.installedModels.length>0?(0,n.jsx)(eR.Ay,{container:!0,spacing:1.25,children:eA.installedModels.map(e=>{let t=es[ew.id]===e.id;return(0,n.jsx)(eR.Ay,{item:!0,xs:12,sm:6,children:(0,n.jsx)(eO.A,{variant:"outlined",sx:{height:"100%",borderWidth:t?2:1,borderColor:t?"primary.main":"divider",bgcolor:t?"action.selected":"background.paper"},children:(0,n.jsx)(eF.A,{onClick:()=>eI(ew.id,e.id),"aria-label":"Use ".concat(e.displayName),sx:{minHeight:76,p:1.5},children:(0,n.jsxs)(k.A,{direction:"row",spacing:1.25,alignItems:"center",children:[(0,n.jsx)(eD.A,{color:t?"primary":"action"}),(0,n.jsxs)(r.default,{sx:{minWidth:0},children:[(0,n.jsx)(d.A,{variant:"subtitle2",fontWeight:700,noWrap:!0,children:e.displayName}),(0,n.jsx)(d.A,{variant:"caption",color:"text.secondary",noWrap:!0,display:"block",children:e.name})]}),t&&(0,n.jsx)(eJ.A,{color:"primary",sx:{ml:"auto !important",flex:"0 0 auto"}})]})})})},e.id)})}):(0,n.jsx)(S.A,{severity:"info",children:"You do not have any installed models yet. Create this package model as new instead."})]})]})]}),(0,n.jsx)(T.A,{sx:{my:3}}),(0,n.jsxs)(k.A,{direction:"row",spacing:1.5,justifyContent:"space-between",alignItems:"center",children:[(0,n.jsx)(o.A,{onClick:eb,children:"Cancel"}),(0,n.jsxs)(k.A,{direction:"row",spacing:1.5,alignItems:"center",children:[!eS&&(0,n.jsx)(d.A,{variant:"body2",color:"text.secondary",children:"Choose an option for every model to continue."}),(0,n.jsx)(o.A,{variant:"contained",size:"large",disabled:!eS,endIcon:(0,n.jsx)(eq.A,{}),onClick:()=>eh(1),children:"Continue to review"})]})]})]}),1===eu&&(0,n.jsxs)(r.default,{sx:{maxWidth:980,mx:"auto"},children:[(0,n.jsxs)(k.A,{direction:{xs:"column",sm:"row"},spacing:1,alignItems:{sm:"center"},justifyContent:"space-between",sx:{mb:2},children:[(0,n.jsxs)(r.default,{children:[(0,n.jsx)(d.A,{variant:"h4",fontWeight:750,children:"Review and install"}),(0,n.jsx)(d.A,{variant:"body1",color:"text.secondary",children:"Check your model choices and add the package configuration."})]}),eA.models.length>0&&(0,n.jsx)(o.A,{onClick:()=>{var e,t;eh(0),eo(null!=(t=null==(e=eA.models.find(e=>!Object.prototype.hasOwnProperty.call(es,e.id)))?void 0:e.id)?t:eA.models[0].id),ed(!1)},children:"Change model choices"})]}),eA.models.length>0&&(0,n.jsxs)(r.default,{sx:{mb:2.5},children:[(0,n.jsx)(d.A,{variant:"subtitle2",sx:{mb:1},children:"Model plan"}),(0,n.jsx)(eR.Ay,{container:!0,spacing:1.5,children:eA.models.map(e=>{var t;let a=eA.installedModels.find(t=>t.id===es[e.id]);return(0,n.jsx)(eR.Ay,{item:!0,xs:12,sm:6,children:(0,n.jsx)(eO.A,{variant:"outlined",sx:{p:1.75,height:"100%"},children:(0,n.jsxs)(k.A,{direction:"row",spacing:1.25,alignItems:"center",children:[(0,n.jsxs)(r.default,{sx:{minWidth:0,flex:1},children:[(0,n.jsx)(d.A,{variant:"caption",color:"text.secondary",children:"Package model"}),(0,n.jsx)(d.A,{variant:"subtitle2",noWrap:!0,children:e.displayName})]}),(0,n.jsx)(eq.A,{color:"action"}),(0,n.jsxs)(r.default,{sx:{minWidth:0,flex:1},children:[(0,n.jsx)(d.A,{variant:"caption",color:"text.secondary",children:a?"Your model":"New model"}),(0,n.jsx)(d.A,{variant:"subtitle2",noWrap:!0,children:null!=(t=null==a?void 0:a.displayName)?t:e.displayName})]})]})})},e.id)})})]}),eA.servers.some(e=>e.requiredEnvMissing.length>0)&&(0,n.jsx)(S.A,{severity:"warning",sx:{mb:1.5},children:"Some MCP servers require environment values that aren't covered by a secret below — those servers will install disabled."}),eA.servers.some(e=>e.installCommand||e.buildCommand)&&(0,n.jsxs)(r.default,{sx:{mb:2.5},children:[(0,n.jsx)(S.A,{severity:"warning",sx:{mb:1.5},children:"This package will run these repository-provided commands on your machine. Review them before installing."}),(0,n.jsx)(k.A,{spacing:1.5,children:eA.servers.filter(e=>e.installCommand||e.buildCommand).map(e=>(0,n.jsxs)(eO.A,{variant:"outlined",sx:{p:1.75},children:[(0,n.jsx)(d.A,{variant:"subtitle2",children:e.localName}),(0,n.jsx)(d.A,{variant:"caption",color:"text.secondary",sx:{overflowWrap:"anywhere"},children:e.source}),e.installCommand&&(0,n.jsxs)(r.default,{sx:{mt:1.25},children:[(0,n.jsx)(d.A,{variant:"caption",color:"text.secondary",display:"block",children:"Install command"}),(0,n.jsx)(r.default,{component:"code",sx:{display:"block",mt:.5,p:1,bgcolor:"action.hover",overflowWrap:"anywhere"},children:e.installCommand})]}),e.buildCommand&&(0,n.jsxs)(r.default,{sx:{mt:1.25},children:[(0,n.jsx)(d.A,{variant:"caption",color:"text.secondary",display:"block",children:"Build command"}),(0,n.jsx)(r.default,{component:"code",sx:{display:"block",mt:.5,p:1,bgcolor:"action.hover",overflowWrap:"anywhere"},children:e.buildCommand})]})]},"".concat(e.localName,":").concat(e.source)))})]}),eA.globals.length>0&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(d.A,{variant:"subtitle2",sx:{mb:1},children:"Global variables requested by this package"}),(0,n.jsx)(k.A,{spacing:1.5,sx:{mb:2.5},children:eA.globals.map(e=>{var t,a;return(0,n.jsx)(x.A,{size:"small",type:e.isSecret&&!ex["global:".concat(e.name)]?"password":"text",label:e.name,helperText:"".concat(null!=(t=e.description)?t:e.required?"Required":"Optional").concat(eA.missingGlobals.includes(e.name)?" — not currently set":" — leave blank to keep the current value"),value:null!=(a=ea[e.name])?a:"",onChange:t=>en(a=>({...a,[e.name]:t.target.value})),fullWidth:!0,InputProps:e.isSecret?{endAdornment:(0,n.jsx)(g.A,{position:"end",children:(0,n.jsx)(eM.A,{size:"small",tabIndex:-1,"aria-label":ex["global:".concat(e.name)]?"Hide global":"Show global",onClick:()=>eg(t=>({...t,["global:".concat(e.name)]:!t["global:".concat(e.name)]})),children:ex["global:".concat(e.name)]?(0,n.jsx)(eV.A,{fontSize:"small"}):(0,n.jsx)(eB.A,{fontSize:"small"})})})}:void 0},e.name)})})]}),(0,n.jsx)(T.A,{sx:{my:2.5}}),eA.secrets.length>0?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(d.A,{variant:"subtitle2",sx:{mb:1},children:"Secrets requested by this package"}),(0,n.jsx)(k.A,{spacing:1.5,sx:{mb:2.5},children:eA.secrets.map(e=>{var t;return(0,n.jsx)(x.A,{size:"small",type:ex[e.key]?"text":"password",label:e.label||e.key,helperText:e.required?"Required — leave blank to install the dependent entity disabled":"Optional",value:null!=(t=ee[e.key])?t:"",onChange:t=>et(a=>({...a,[e.key]:t.target.value})),fullWidth:!0,InputProps:{endAdornment:(0,n.jsx)(g.A,{position:"end",children:(0,n.jsx)(eM.A,{size:"small",tabIndex:-1,"aria-label":ex[e.key]?"Hide secret":"Show secret",onClick:()=>eg(t=>({...t,[e.key]:!t[e.key]})),children:ex[e.key]?(0,n.jsx)(eV.A,{fontSize:"small"}):(0,n.jsx)(eB.A,{fontSize:"small"})})})}},e.key)})})]}):(0,n.jsx)(d.A,{variant:"body2",color:"text.secondary",sx:{mb:2.5},children:"This package doesn't request any secrets."}),(0,n.jsxs)(k.A,{direction:"row",spacing:1,justifyContent:"space-between",children:[(0,n.jsx)(o.A,{onClick:eA.models.length>0?()=>eh(0):eb,disabled:V,children:eA.models.length>0?"Back":"Cancel"}),(0,n.jsx)(o.A,{variant:"contained",color:"primary",size:"large",onClick:()=>void ej(),disabled:V,startIcon:V?(0,n.jsx)(w.default,{size:16}):(0,n.jsx)(e_.A,{}),children:"Install package"})]})]})]}),ep&&(0,n.jsxs)(r.default,{children:[(0,n.jsx)(S.A,{severity:ep.ok?"success":"error",sx:{mb:1},children:ep.ok?'Installed "'.concat(null==(t=ep.package)?void 0:t.name,'": ').concat(ep.created.length," created, ").concat(ep.updated.length," updated, ").concat(ep.disabled.length," disabled."):"Install failed: ".concat(null!=(u=ep.errors[0])?u:"unknown error")}),ep.missingGlobals.length>0&&(0,n.jsxs)(S.A,{severity:"warning",sx:{mb:1},children:["Set these global variable(s) in Settings for the installed entities to work:"," ",ep.missingGlobals.join(", "),"."]}),(0,n.jsx)(o.A,{size:"small",onClick:eb,children:"Close"})]})]})]})]})}var eX=a(79508);let eK=(0,D.h)("frontend/components/Packages");function eY(){let[e,t]=(0,s.useState)(!1),[a,l]=(0,s.useState)(0);return eK.debug("Rendering PackagesManager",{wizardOpen:e}),(0,n.jsxs)(r.default,{sx:{height:"100%",display:"flex",flexDirection:"column"},children:[(0,n.jsx)(eX.default,{eyebrow:"Share",title:"Packages",description:"Bundle complete FLUJO systems into portable, secret-safe manifests.",icon:h.A,badge:(0,n.jsx)(i.A,{label:"Experimental",size:"small",color:"warning",variant:"outlined"}),actions:(0,n.jsx)(o.A,{variant:"contained",startIcon:(0,n.jsx)(u.A,{}),onClick:()=>t(!0),"data-tour":"packages-create",children:"Create package"})}),(0,n.jsxs)(r.default,{sx:{flex:1,overflow:"auto",p:3},children:[(0,n.jsxs)(c.A,{variant:"outlined",sx:{p:4,display:"flex",flexDirection:"column",alignItems:"center",textAlign:"center",gap:2,maxWidth:{xs:"100%",md:1100},mx:"auto"},children:[(0,n.jsx)(h.A,{sx:{fontSize:48,color:"text.secondary"}}),(0,n.jsx)(d.A,{variant:"h6",children:"Bundle your FLUJO setup into a shareable package"}),(0,n.jsx)(d.A,{variant:"body2",color:"text.secondary",children:"A package bundles flows, models, MCP servers (by reference) and planned executions into a single manifest you can export and share. Secret values (API keys, tokens) are never included — only declarations of the secrets a recipient must supply at install time."}),(0,n.jsx)(o.A,{variant:"contained",startIcon:(0,n.jsx)(u.A,{}),onClick:()=>t(!0),children:"Create package"})]}),(0,n.jsxs)(c.A,{variant:"outlined",sx:{p:3,mt:3,maxWidth:{xs:"100%",md:1100},mx:"auto"},children:[(0,n.jsx)(d.A,{variant:"h6",gutterBottom:!0,children:"Package registry account"}),(0,n.jsx)(K,{})]}),(0,n.jsx)(e$,{onInstalled:()=>l(e=>e+1)}),(0,n.jsx)(eN,{},a)]}),e&&(0,n.jsx)(eI,{open:e,onClose:()=>t(!1)})]})}var eQ=a(9164),e0=a(94929);let e1=(0,D.h)("app/packages/page");function e2(){var e,t;let a=(0,l.useRouter)(),{settings:i,settingsHydrated:o}=(0,eQ.useStorage)(),c=o&&null!=(t=null==i||null==(e=i.experimental)?void 0:e.enabled)&&t;return((0,s.useEffect)(()=>{o&&!c&&(e1.debug("Experimental features disabled — redirecting away from /packages"),a.replace("/settings"))},[o,c,a]),o&&c)?(0,n.jsx)(r.default,{sx:{height:"100%",display:"flex",flexDirection:"column"},children:(0,n.jsx)(eY,{})}):(0,n.jsx)(e0.default,{})}},79508:(e,t,a)=>{"use strict";a.d(t,{default:()=>c});var n=a(95155),s=a(33567),r=a(94049),l=a(80777),i=a(25635),o=a(8532);function c(e){let{title:t,description:a,eyebrow:c,icon:d,leading:u,badge:h,actions:p,compact:m=!1,maxWidth:x=1440}=e,g=(0,s.A)();return(0,n.jsx)(r.default,{component:"header",sx:{position:"relative",overflow:"hidden",borderBottom:1,borderColor:"divider",background:"linear-gradient(110deg, ".concat((0,o.X4)(g.palette.primary.main,"dark"===g.palette.mode?.09:.055),", transparent 38%, ").concat((0,o.X4)(g.palette.secondary.main,.045),")"),"&::after":{position:"absolute",top:-90,right:"8%",width:220,height:160,borderRadius:"50%",content:'""',pointerEvents:"none",background:"radial-gradient(circle, ".concat((0,o.X4)(g.palette.primary.main,.16),", transparent 68%)"),filter:"blur(20px)"}},children:(0,n.jsxs)(r.default,{sx:{position:"relative",zIndex:1,display:"flex",width:"100%",maxWidth:x,mx:"auto",px:{xs:2,sm:3,lg:4},py:m?{xs:1.8,sm:2}:{xs:2.2,sm:2.8},alignItems:{xs:"flex-start",md:"center"},justifyContent:"space-between",flexDirection:{xs:"column",md:"row"},gap:2},children:[(0,n.jsxs)(l.A,{direction:"row",spacing:1.5,alignItems:"center",sx:{minWidth:0},children:[u,d&&(0,n.jsx)(r.default,{"aria-hidden":"true",sx:{display:"grid",width:m?40:46,height:m?40:46,flexShrink:0,placeItems:"center",border:"1px solid ".concat((0,o.X4)(g.palette.primary.main,.24)),borderRadius:m?2.8:3.2,color:"primary.light",bgcolor:(0,o.X4)(g.palette.primary.main,.1),boxShadow:"inset 0 1px 0 ".concat((0,o.X4)(g.palette.common.white,.08),", 0 10px 30px ").concat((0,o.X4)(g.palette.primary.main,.12))},children:(0,n.jsx)(d,{sx:{fontSize:m?21:24}})}),(0,n.jsxs)(r.default,{sx:{minWidth:0},children:[(c||h)&&(0,n.jsxs)(l.A,{direction:"row",spacing:1,alignItems:"center",sx:{mb:.35},children:[c&&(0,n.jsx)(i.A,{sx:{color:"primary.light",fontSize:"0.67rem",fontWeight:780,letterSpacing:"0.13em",textTransform:"uppercase"},children:c}),h]}),(0,n.jsx)(i.A,{component:"h1",variant:"h5",sx:{overflow:"hidden",textOverflow:"ellipsis",fontSize:m?"1.2rem":void 0,whiteSpace:{xs:"normal",sm:"nowrap"}},children:t}),a&&(0,n.jsx)(i.A,{variant:"body2",color:"text.secondary",sx:{mt:.45,maxWidth:720,textWrap:"balance"},children:a})]})]}),p&&(0,n.jsx)(r.default,{sx:{display:"flex",width:{xs:"100%",md:"auto"},flexShrink:0,flexWrap:"wrap",alignItems:"center",gap:1,"& > .MuiButton-root":{flex:{xs:"1 1 auto",sm:"0 0 auto"}}},children:p})]})})}},93632:(e,t,a)=>{"use strict";a.d(t,{P:()=>r});let n=(0,a(73288).h)("frontend/services/plannedExecutions");class s{async list(){try{let e=await fetch("/api/planned-executions");if(!e.ok)throw Error("HTTP ".concat(e.status));return await e.json()}catch(e){return n.warn("Failed to list planned executions",e),{paused:!1,executions:[]}}}async create(e){try{let t=await fetch("/api/planned-executions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),a=await t.json();if(!t.ok)return{success:!1,error:(null==a?void 0:a.error)||"HTTP ".concat(t.status)};return{success:!0,execution:a.execution}}catch(e){return{success:!1,error:e instanceof Error?e.message:"Request failed"}}}async update(e,t){try{let a=await fetch("/api/planned-executions/".concat(e),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),n=await a.json();if(!a.ok)return{success:!1,error:(null==n?void 0:n.error)||"HTTP ".concat(a.status)};return{success:!0,execution:n.execution}}catch(e){return{success:!1,error:e instanceof Error?e.message:"Request failed"}}}async delete(e){try{let t=await fetch("/api/planned-executions/".concat(e),{method:"DELETE"});if(!t.ok){let e=await t.json().catch(()=>null);return{success:!1,error:(null==e?void 0:e.error)||"HTTP ".concat(t.status)}}return{success:!0}}catch(e){return{success:!1,error:e instanceof Error?e.message:"Request failed"}}}async setPaused(e){try{let t=await fetch("/api/planned-executions",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({paused:e})});if(!t.ok){let e=await t.json().catch(()=>null);return{success:!1,error:(null==e?void 0:e.error)||"HTTP ".concat(t.status)}}return{success:!0}}catch(e){return{success:!1,error:e instanceof Error?e.message:"Request failed"}}}async runNow(e){try{let t=await fetch("/api/planned-executions/".concat(e,"/run"),{method:"POST"}),a=await t.json();if(!t.ok)return{success:!1,error:(null==a?void 0:a.error)||"HTTP ".concat(t.status)};return{success:!0,record:a.record}}catch(e){return{success:!1,error:e instanceof Error?e.message:"Request failed"}}}async loadRuns(e){try{let t=await fetch("/api/planned-executions/".concat(e,"/runs"));if(!t.ok)throw Error("HTTP ".concat(t.status));let a=await t.json();return Array.isArray(null==a?void 0:a.runs)?a.runs:[]}catch(t){return n.warn("Failed to load runs for ".concat(e),t),[]}}async previewSchedule(e,t){try{let a=await fetch("/api/planned-executions/preview-schedule",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cron:e,timezone:t})});if(!a.ok)throw Error("HTTP ".concat(a.status));return await a.json()}catch(e){return{valid:!1,error:e instanceof Error?e.message:"Preview failed",nextRuns:[]}}}}let r=new s},94460:(e,t,a)=>{Promise.resolve().then(a.bind(a,70479))}},e=>{e.O(0,[4754,7758,3392,2678,981,1983,1871,5954,9562,3272,155,4123,9611,6547,4122,8620,4156,1161,57,8441,1255,7358],()=>e(e.s=94460)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8974],{3195:(e,t,a)=>{Promise.resolve().then(a.bind(a,4969))},4969:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>X});var i=a(95155),n=a(33567),s=a(97322),r=a(94049),l=a(80777),o=a(22003),c=a(91871),d=a(4474),p=a(25635),h=a(2300),u=a(28548),x=a(8532),m=a(96429),f=a(60700),y=a(96968),g=a(44971),b=a(33009),j=a(14418),v=a(17438),A=a(91287),w=a(38343),k=a(52619),S=a.n(k),C=a(12115),O=a(14913),I=a(57883),T=a(9562),U=a(98142),N=a(37553),F=a(33411);function J(){let[e,t]=(0,C.useState)(null),[a,n]=(0,C.useState)(""),[s,l]=(0,C.useState)(!1),[d,u]=(0,C.useState)(!1),[x,m]=(0,C.useState)(null),[f,y]=(0,C.useState)(!1),g=Array.from(a).length,b=Array.from(a.trim()).length,j=null!==e&&b>=1&&b<=255,v=async()=>{if(e&&j){l(!0),m(null),y(!1);try{let t=await fetch("/api/registry/feedback",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({notice:a.trim(),rating:"happy"===e?5:1})}),i=await t.json().catch(()=>({}));if(!t.ok){m("string"==typeof i.error?i.error:"Could not submit feedback."),y(t.status>=500);return}u(!0)}catch(e){m("The feedback service is temporarily unavailable."),y(!0)}finally{l(!1)}}};return d?(0,i.jsx)(o.A,{severity:"success",sx:{mb:4},children:"Thanks for helping improve FLUJO."}):(0,i.jsxs)(h.A,{component:"section","aria-labelledby":"feedback-banner-title",variant:"outlined",sx:{mb:4,p:{xs:2,sm:2.5}},children:[(0,i.jsxs)(r.default,{sx:{display:"flex",flexDirection:{xs:"column",md:"row"},alignItems:{xs:"stretch",md:"center"},gap:2},children:[(0,i.jsxs)(r.default,{sx:{flex:"0 0 auto"},children:[(0,i.jsx)(p.A,{id:"feedback-banner-title",variant:"subtitle1",fontWeight:600,children:"Are you happy with FLUJO?"}),(0,i.jsx)(p.A,{variant:"body2",color:"text.secondary",children:"Tell us what is working—or what could be better."})]}),(0,i.jsxs)(O.A,{exclusive:!0,value:e,onChange:(e,a)=>{a&&t(a)},"aria-label":"Are you happy with FLUJO?",size:"small",children:[(0,i.jsxs)(I.A,{value:"happy","aria-label":"Yes, I am happy",children:[(0,i.jsx)(N.A,{sx:{mr:.75}}),"Yes"]}),(0,i.jsxs)(I.A,{value:"unhappy","aria-label":"No, I am not happy",children:[(0,i.jsx)(U.A,{sx:{mr:.75}}),"Not really"]})]}),(0,i.jsx)(T.A,{value:a,onChange:e=>n(e.target.value),placeholder:"Share your feedback",size:"small",multiline:!0,maxRows:3,inputProps:{maxLength:255,"aria-label":"Feedback"},helperText:"".concat(g,"/255"),sx:{flex:"1 1 280px"}}),(0,i.jsx)(c.A,{variant:"contained",onClick:v,disabled:!j||s,sx:{alignSelf:{xs:"stretch",md:"flex-start"},minWidth:96},children:s?"Sending…":"Send"})]}),x&&(0,i.jsxs)(o.A,{severity:"error",sx:{mt:2},onClose:()=>{m(null),y(!1)},action:f?(0,i.jsx)(c.A,{color:"inherit",size:"small",onClick:()=>{e&&(0,F.tr)({title:"FLUJO feedback",body:"Sentiment: ".concat("happy"===e?"Happy":"Not really","\n\n").concat(a.trim())})},children:"Open on GitHub"}):void 0,children:[x,f&&" You can send it through a pre-filled GitHub issue instead."]})]})}var W=a(9164),z=a(69195),L=a(90057),E=a(43076);let R=(0,a(73288).h)("app/page");function X(){var e;let t=(0,n.A)(),{settings:a}=(0,W.useStorage)(),{startTour:k}=(0,z.useTour)(),[O,I]=(0,C.useState)(!0),[T,U]=(0,C.useState)(!1),[N,F]=(0,C.useState)(null),[X,_]=(0,C.useState)(!1),[P,H]=(0,C.useState)(null),[Y,B]=(0,C.useState)({models:null,assistants:0,loading:!0}),G=(0,C.useRef)(!1);(0,C.useEffect)(()=>{let e=!0;return Promise.allSettled([E.N.tryLoadModels(),L.g.loadFlows()]).then(t=>{let[a,i]=t;e&&B({models:"fulfilled"===a.status&&null!==a.value?a.value.length:null,assistants:"fulfilled"===i.status?i.value.length:0,loading:!1})}),()=>{e=!1}},[]),(0,C.useEffect)(()=>{var e;(null==a||null==(e=a.update)?void 0:e.checkOnStartup)&&!G.current&&(G.current=!0,fetch("/api/update").then(async e=>e.ok?e.json():null).then(e=>{(null==e?void 0:e.updateAvailable)&&F({behindBy:e.behindBy,branch:e.branch})}).catch(e=>R.warn("Update check failed",e)))},[null==a||null==(e=a.update)?void 0:e.checkOnStartup]),(0,C.useEffect)(()=>{(async()=>{try{let e=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"check_initialized"})});if(!e.ok)return void I(!1);let t=await e.json(),a=!0===t.initialized;if(I(a),!a)return;let i=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"check_user_encryption"})});if(i.ok){let e=await i.json();U(!0===e.userEncryption)}}catch(e){R.error("Error checking encryption status",e),I(!1)}})()},[]);let D=async()=>{_(!0),H(null);try{let e=await fetch("/api/update",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"apply"})}),t=await e.json();if(!e.ok||!1===t.success){H(t.error||"Update failed."),_(!1);return}if(t.restarting){let e=!1,t=async()=>{try{if((await fetch("/api/cwd",{cache:"no-store"})).ok&&e)return void window.location.reload()}catch(t){e=!0}setTimeout(t,3e3)};setTimeout(t,5e3)}else _(!1),F(null)}catch(e){R.error("Update failed",e),H("Update failed."),_(!1)}},M=null!==Y.models&&Y.models>0,q=!Y.loading&&null===Y.models,K=Y.assistants>0,Q=[{id:"ai",number:1,title:"Connect your AI",description:"Choose the AI provider and model FLUJO will use. Everything else starts here.",icon:m.default,complete:M,available:!0,status:Y.loading?"Checking…":M?"Connected":q?"Open to check":"Required",href:M||q?"/models":"/models?add=1",action:M?"Manage AI setup":q?"Open AI setup":"Connect AI"},{id:"assistant",number:2,title:"Create an agent",description:"Name it and add its job one plain-language step at a time in the simple builder.",icon:f.A,complete:K,available:M,status:K?"".concat(Y.assistants," ready"):M?"Next":"After AI setup",href:M?"/flows?create=assistant":void 0,action:K?"Create another":M?"Open simple builder":"Connect AI first"},{id:"talk",number:3,title:"Talk to your agent",description:"Use it in a familiar chat. Return to its recipe whenever you want to improve it.",icon:y.A,complete:!1,available:M&&K,status:M?K?"Ready":"After your first agent":"After AI setup",href:M&&K?"/chat":void 0,action:M?K?"Start talking":"Create an agent first":"Finish AI setup first"}];return(0,i.jsx)(s.A,{maxWidth:!1,disableGutters:!0,children:(0,i.jsxs)(r.default,{sx:{width:"min(100%, 1320px)",mx:"auto",px:{xs:2,sm:3,lg:5},pb:{xs:7,md:10}},children:[(0,i.jsxs)(l.A,{spacing:1.2,sx:{pt:{xs:2,md:3}},children:[N&&(0,i.jsx)(o.A,{severity:"info",action:(0,i.jsx)(c.A,{color:"inherit",size:"small",onClick:D,disabled:X,startIcon:X?(0,i.jsx)(d.default,{size:16,color:"inherit"}):void 0,children:X?"Updating…":"Update now"}),children:X?"Updating FLUJO and restarting — this page will reconnect automatically.":"A FLUJO update is ready (".concat(N.behindBy," new commit").concat(1===N.behindBy?"":"s"," on ").concat(N.branch,").")}),P&&(0,i.jsx)(o.A,{severity:"error",onClose:()=>H(null),children:P}),O?T?null:(0,i.jsxs)(o.A,{severity:"info",icon:(0,i.jsx)(b.A,{}),children:["Your information stays on this device. For extra protection, choose a private password in"," ",(0,i.jsx)(S(),{href:"/settings",style:{fontWeight:700},children:"Settings"}),"."]}):(0,i.jsxs)(o.A,{severity:"warning",icon:(0,i.jsx)(g.A,{}),children:["Add a private password to protect your connected accounts in"," ",(0,i.jsx)(S(),{href:"/settings",style:{fontWeight:700},children:"Settings"}),"."]})]}),(0,i.jsx)(r.default,{component:"section",sx:{pt:{xs:5,md:7},pb:{xs:4,md:5}},children:(0,i.jsxs)(l.A,{direction:{xs:"column",md:"row"},justifyContent:"space-between",alignItems:{xs:"flex-start",md:"flex-end"},spacing:2.5,children:[(0,i.jsxs)(r.default,{sx:{maxWidth:760},children:[(0,i.jsx)(p.A,{className:"premium-eyebrow",children:"Your FLUJO setup"}),(0,i.jsx)(p.A,{variant:"h2",sx:{mt:1,maxWidth:720},children:"Set up once. Then just use it."}),(0,i.jsx)(p.A,{variant:"h6",color:"text.secondary",sx:{mt:1.5,maxWidth:700,fontWeight:450,lineHeight:1.55},children:"Follow these three steps in order. FLUJO keeps the technical details available without putting them in your way."})]}),(0,i.jsx)(c.A,{variant:"outlined",onClick:k,startIcon:(0,i.jsx)(f.A,{}),children:"Open setup guide"})]})}),(0,i.jsx)(r.default,{component:"section","aria-label":"Getting started",sx:{display:"grid",gridTemplateColumns:{xs:"1fr",lg:"repeat(3, minmax(0, 1fr))"},gap:2},children:Q.map(e=>{let a=e.icon,n=e.available&&!e.complete;return(0,i.jsxs)(h.A,{component:"article",className:"stagger-in",elevation:0,"aria-current":n?"step":void 0,sx:{position:"relative",display:"flex",minHeight:{xs:250,lg:310},p:{xs:2.5,sm:3},overflow:"hidden",flexDirection:"column",border:1,borderColor:e.complete?(0,x.X4)(t.palette.success.main,.45):n?(0,x.X4)(t.palette.primary.main,.48):"divider",borderRadius:4,bgcolor:(0,x.X4)(t.palette.background.paper,e.available?.78:.5),opacity:e.available?1:.7,boxShadow:n?"0 22px 70px ".concat((0,x.X4)(t.palette.primary.main,.13)):"none",transition:"transform 220ms ease, border-color 220ms ease, box-shadow 220ms ease","&:hover":e.available?{transform:"translateY(-4px)",boxShadow:"0 26px 74px ".concat((0,x.X4)(t.palette.primary.main,.16))}:void 0,"&::before":{position:"absolute",top:-80,right:-70,width:190,height:190,borderRadius:"50%",content:'""',background:"radial-gradient(circle, ".concat((0,x.X4)(e.complete?t.palette.success.main:t.palette.primary.main,e.available?.18:.07),", transparent 68%)")}},children:[(0,i.jsxs)(l.A,{direction:"row",justifyContent:"space-between",alignItems:"center",spacing:1,children:[(0,i.jsx)(r.default,{sx:{display:"grid",width:46,height:46,placeItems:"center",borderRadius:3,color:e.complete?"success.main":e.available?"primary.main":"text.disabled",bgcolor:(0,x.X4)(e.complete?t.palette.success.main:t.palette.primary.main,.1)},children:e.complete?(0,i.jsx)(j.A,{}):(0,i.jsx)(a,{})}),(0,i.jsx)(u.A,{size:"small",color:e.complete?"success":n?"primary":"default",variant:"outlined",label:e.status})]}),(0,i.jsxs)(p.A,{variant:"overline",color:"text.secondary",sx:{mt:3},children:["Step ",e.number]}),(0,i.jsx)(p.A,{variant:"h5",sx:{mt:.3},children:e.title}),(0,i.jsx)(p.A,{variant:"body2",color:"text.secondary",sx:{mt:1,lineHeight:1.65},children:e.description}),(0,i.jsx)(r.default,{sx:{mt:"auto",pt:3},children:e.href?(0,i.jsx)(c.A,{component:S(),href:e.href,variant:n?"contained":"outlined",endIcon:(0,i.jsx)(v.A,{}),fullWidth:!0,children:e.action}):(0,i.jsx)(c.A,{variant:"outlined",disabled:!0,fullWidth:!0,children:e.action})})]},e.id)})}),(0,i.jsxs)(h.A,{component:"section",elevation:0,sx:{mt:2,p:{xs:2.2,sm:2.5},display:"flex",flexDirection:{xs:"column",sm:"row"},alignItems:{xs:"flex-start",sm:"center"},gap:2,border:1,borderColor:"divider",borderRadius:4,bgcolor:(0,x.X4)(t.palette.background.paper,.62)},children:[(0,i.jsx)(r.default,{sx:{display:"grid",width:44,height:44,flexShrink:0,placeItems:"center",borderRadius:3,color:"secondary.main",bgcolor:(0,x.X4)(t.palette.secondary.main,.1)},children:(0,i.jsx)(A.A,{})}),(0,i.jsxs)(r.default,{sx:{flex:1},children:[(0,i.jsx)(p.A,{variant:"subtitle1",fontWeight:760,children:"Connected Apps are optional"}),(0,i.jsx)(p.A,{variant:"body2",color:"text.secondary",children:"Add files or services only when an agent needs them. A basic agent works with AI setup alone."})]}),(0,i.jsx)(c.A,{component:S(),href:"/mcp",variant:"text",endIcon:(0,i.jsx)(v.A,{}),children:"Connected Apps"})]}),(0,i.jsxs)(l.A,{direction:{xs:"column",sm:"row"},spacing:{xs:1,sm:3},sx:{mt:3.5,color:"text.secondary"},children:[(0,i.jsxs)(l.A,{direction:"row",spacing:.8,alignItems:"center",children:[(0,i.jsx)(b.A,{sx:{fontSize:17,color:"primary.main"}}),(0,i.jsx)(p.A,{variant:"caption",children:"Private on your device"})]}),(0,i.jsxs)(l.A,{direction:"row",spacing:.8,alignItems:"center",children:[(0,i.jsx)(w.A,{sx:{fontSize:17,color:"primary.main"}}),(0,i.jsx)(p.A,{variant:"caption",children:"Simple mode by default"})]}),(0,i.jsxs)(l.A,{direction:"row",spacing:.8,alignItems:"center",children:[(0,i.jsx)(g.A,{sx:{fontSize:17,color:"primary.main"}}),(0,i.jsx)(p.A,{variant:"caption",children:"Expert controls when you need them"})]})]}),(0,i.jsx)(r.default,{sx:{mt:{xs:5,md:7}},children:(0,i.jsx)(J,{})})]})})}}},e=>{e.O(0,[4754,7758,3392,2678,981,1983,1871,5954,9562,1675,5962,7203,684,9195,57,760,8441,1255,7358],()=>e(e.s=3195)),_N_E=e.O()}]);