flujo-ai 3.34.0 → 3.35.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 (423) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +324 -317
  3. package/.next/app-path-routes-manifest.json +19 -18
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +24 -24
  6. package/.next/routes-manifest.json +9 -0
  7. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/_not-found.html +1 -1
  9. package/.next/server/app/_not-found.rsc +1 -1
  10. package/.next/server/app/api/approvals/[id]/route.js +1 -1
  11. package/.next/server/app/api/approvals/[id]/route_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/approvals/route.js +2 -2
  13. package/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/backup/route.js +1 -1
  15. package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/bugs/enhance/route.js +1 -1
  18. package/.next/server/app/api/bugs/enhance/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/env/route.js +2 -2
  22. package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
  24. package/.next/server/app/api/flow/[id]/versions/[versionId]/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/flow/[id]/versions/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/flow/generator/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/flow/improve/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/flow/prompt-renderer/route.js +1 -1
  31. package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/flow/quick-chat/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/flow/repair/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/local-models/capability/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/local-models/pull/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/local-models/suggest/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/mcp/app-sandbox/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/mcp/cancel/route.js +1 -1
  42. package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/mcp/oauth-capability/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/mcp-registry/route.js +1 -1
  56. package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/mcp-registry/spotlight/route.js +1 -1
  58. package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/model/provider/route.js +1 -1
  61. package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/model/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/model/test/route.js +1 -1
  64. package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/oauth/callback/route.js +1 -1
  66. package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/oauth/initiate/route.js +1 -1
  68. package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/oauth/reset/route.js +1 -1
  70. package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/packages/build/route_client-reference-manifest.js +1 -1
  72. package/.next/server/app/api/packages/derive-secrets/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/packages/install/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/packages/install/status/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/packages/installed/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/packages/resolve/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/packages/scan-targets/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/packages/search/route.js +1 -1
  79. package/.next/server/app/api/packages/search/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/packages/uninstall/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/planned-executions/[id]/route.js +1 -1
  82. package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/planned-executions/[id]/run/route.js +1 -1
  84. package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/planned-executions/[id]/runs/route.js +1 -1
  86. package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/planned-executions/reconcile/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/registry/auth/resend/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/registry/auth/reset/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/registry/auth/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/registry/feedback/route.js +1 -1
  94. package/.next/server/app/api/registry/feedback/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/registry/oauth/callback/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/registry/oauth/initiate/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/registry/packages/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/registry/publish/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/registry/settings/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/restore/route.js +1 -1
  101. package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/runs/active/route.js +1 -1
  103. package/.next/server/app/api/runs/active/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/storage/route.js +1 -1
  105. package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/telemetry/daily-active/route.js +1 -1
  107. package/.next/server/app/api/telemetry/daily-active/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/update/route.js +1 -1
  109. package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/waves/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/chat/page.js +2 -2
  113. package/.next/server/app/chat/page.js.nft.json +1 -1
  114. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  115. package/.next/server/app/chat.html +1 -1
  116. package/.next/server/app/chat.rsc +2 -2
  117. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  118. package/.next/server/app/docs.html +1 -1
  119. package/.next/server/app/docs.rsc +1 -1
  120. package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
  121. package/.next/server/app/executions.html +1 -1
  122. package/.next/server/app/executions.rsc +1 -1
  123. package/.next/server/app/flows/page.js +2 -2
  124. package/.next/server/app/flows/page.js.nft.json +1 -1
  125. package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
  126. package/.next/server/app/flows.html +1 -1
  127. package/.next/server/app/flows.rsc +2 -2
  128. package/.next/server/app/index.html +1 -1
  129. package/.next/server/app/index.rsc +1 -1
  130. package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
  131. package/.next/server/app/mcp-flows/route.js +1 -1
  132. package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
  134. package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/mcp.html +1 -1
  136. package/.next/server/app/mcp.rsc +2 -2
  137. package/.next/server/app/models/page.js +1 -1
  138. package/.next/server/app/models/page_client-reference-manifest.js +1 -1
  139. package/.next/server/app/packages/page.js +1 -1
  140. package/.next/server/app/packages/page_client-reference-manifest.js +1 -1
  141. package/.next/server/app/packages.html +1 -1
  142. package/.next/server/app/packages.rsc +2 -2
  143. package/.next/server/app/page_client-reference-manifest.js +1 -1
  144. package/.next/server/app/settings/page.js +1 -1
  145. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  146. package/.next/server/app/settings.html +1 -1
  147. package/.next/server/app/settings.rsc +2 -2
  148. package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
  149. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +2 -2
  150. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
  151. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +2 -2
  152. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -1
  154. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -1
  156. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +2 -2
  158. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +1 -1
  160. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
  161. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js +1 -1
  162. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route_client-reference-manifest.js +1 -1
  163. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/[resourceId]/content/route.js +1 -0
  164. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/[resourceId]/content/route.js.nft.json +1 -0
  165. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/[resourceId]/content/route_client-reference-manifest.js +1 -0
  166. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route.js +1 -1
  167. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
  169. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
  170. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +1 -1
  171. package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  172. package/.next/server/app/v1/chat/conversations/route.js +1 -1
  173. package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
  174. package/.next/server/app/v1/chat/events/route.js +1 -1
  175. package/.next/server/app/v1/chat/events/route_client-reference-manifest.js +1 -1
  176. package/.next/server/app/v1/models/route.js +1 -1
  177. package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -1
  178. package/.next/server/app/waves/page_client-reference-manifest.js +1 -1
  179. package/.next/server/app/waves.html +1 -1
  180. package/.next/server/app/waves.rsc +1 -1
  181. package/.next/server/app-paths-manifest.json +19 -18
  182. package/.next/server/chunks/1227.js +1 -1
  183. package/.next/server/chunks/1805.js +1 -1
  184. package/.next/server/chunks/2273.js +2 -2
  185. package/.next/server/chunks/2372.js +1 -1
  186. package/.next/server/chunks/2859.js +1 -1
  187. package/.next/server/chunks/3935.js +4 -0
  188. package/.next/server/chunks/4265.js +1 -1
  189. package/.next/server/chunks/4771.js +2 -2
  190. package/.next/server/chunks/4822.js +1 -1
  191. package/.next/server/chunks/5096.js +1 -1
  192. package/.next/server/chunks/5309.js +1 -1
  193. package/.next/server/chunks/544.js +16 -16
  194. package/.next/server/chunks/5544.js +1 -1
  195. package/.next/server/chunks/5703.js +2 -2
  196. package/.next/server/chunks/6041.js +1 -1
  197. package/.next/server/chunks/6226.js +1 -1
  198. package/.next/server/chunks/6747.js +42 -42
  199. package/.next/server/chunks/701.js +1 -1
  200. package/.next/server/chunks/7069.js +4 -4
  201. package/.next/server/chunks/7506.js +1 -1
  202. package/.next/server/chunks/7628.js +1 -1
  203. package/.next/server/chunks/7891.js +1 -1
  204. package/.next/server/chunks/7993.js +1 -1
  205. package/.next/server/chunks/8284.js +1 -1
  206. package/.next/server/chunks/8387.js +1 -1
  207. package/.next/server/chunks/8645.js +1 -1
  208. package/.next/server/chunks/8739.js +1 -1
  209. package/.next/server/chunks/9085.js +1 -1
  210. package/.next/server/chunks/9235.js +1 -1
  211. package/.next/server/chunks/9285.js +1 -1
  212. package/.next/server/functions-config-manifest.json +1 -1
  213. package/.next/server/middleware-build-manifest.js +1 -1
  214. package/.next/server/middleware-manifest.json +1 -1
  215. package/.next/server/pages/404.html +1 -1
  216. package/.next/server/pages/500.html +1 -1
  217. package/.next/server/server-reference-manifest.js +1 -1
  218. package/.next/server/server-reference-manifest.json +1 -1
  219. package/.next/static/chunks/{8650-5294c6ed1173b014.js → 8650-aa22dbf7b37348f0.js} +1 -1
  220. package/.next/static/chunks/9611-9867e6e8e65172ec.js +1 -0
  221. package/.next/static/chunks/app/api/approvals/[id]/{route-9ea2990be4b67136.js → route-b9c783850b4c2acf.js} +1 -1
  222. package/.next/static/chunks/app/api/approvals/{route-9ea2990be4b67136.js → route-b9c783850b4c2acf.js} +1 -1
  223. package/.next/static/chunks/app/api/backup/{route-9ea2990be4b67136.js → route-b9c783850b4c2acf.js} +1 -1
  224. package/.next/static/chunks/app/api/browse/{route-9ea2990be4b67136.js → route-b9c783850b4c2acf.js} +1 -1
  225. package/.next/static/chunks/app/api/bugs/enhance/route-b9c783850b4c2acf.js +1 -0
  226. package/.next/static/chunks/app/api/cwd/route-b9c783850b4c2acf.js +1 -0
  227. package/.next/static/chunks/app/api/encryption/secure/route-b9c783850b4c2acf.js +1 -0
  228. package/.next/static/chunks/app/api/env/route-b9c783850b4c2acf.js +1 -0
  229. package/.next/static/chunks/app/api/flow/[id]/route-b9c783850b4c2acf.js +1 -0
  230. package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-b9c783850b4c2acf.js +1 -0
  231. package/.next/static/chunks/app/api/flow/[id]/versions/route-b9c783850b4c2acf.js +1 -0
  232. package/.next/static/chunks/app/api/flow/compile/route-b9c783850b4c2acf.js +1 -0
  233. package/.next/static/chunks/app/api/flow/generate/route-b9c783850b4c2acf.js +1 -0
  234. package/.next/static/chunks/app/api/flow/generator/route-b9c783850b4c2acf.js +1 -0
  235. package/.next/static/chunks/app/api/flow/improve/route-b9c783850b4c2acf.js +1 -0
  236. package/.next/static/chunks/app/api/flow/prompt-renderer/route-b9c783850b4c2acf.js +1 -0
  237. package/.next/static/chunks/app/api/flow/quick-chat/route-b9c783850b4c2acf.js +1 -0
  238. package/.next/static/chunks/app/api/flow/repair/route-b9c783850b4c2acf.js +1 -0
  239. package/.next/static/chunks/app/api/flow/route-b9c783850b4c2acf.js +1 -0
  240. package/.next/static/chunks/app/api/git/route-b9c783850b4c2acf.js +1 -0
  241. package/.next/static/chunks/app/api/init/route-b9c783850b4c2acf.js +1 -0
  242. package/.next/static/chunks/app/api/local-models/capability/route-b9c783850b4c2acf.js +1 -0
  243. package/.next/static/chunks/app/api/local-models/pull/route-b9c783850b4c2acf.js +1 -0
  244. package/.next/static/chunks/app/api/local-models/suggest/route-b9c783850b4c2acf.js +1 -0
  245. package/.next/static/chunks/app/api/mcp/app-sandbox/route-b9c783850b4c2acf.js +1 -0
  246. package/.next/static/chunks/app/api/mcp/cancel/route-b9c783850b4c2acf.js +1 -0
  247. package/.next/static/chunks/app/api/mcp/oauth-capability/route-b9c783850b4c2acf.js +1 -0
  248. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-b9c783850b4c2acf.js +1 -0
  249. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-b9c783850b4c2acf.js +1 -0
  250. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-b9c783850b4c2acf.js +1 -0
  251. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-b9c783850b4c2acf.js +1 -0
  252. package/.next/static/chunks/app/api/mcp/servers/[name]/route-b9c783850b4c2acf.js +1 -0
  253. package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-b9c783850b4c2acf.js +1 -0
  254. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-b9c783850b4c2acf.js +1 -0
  255. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-b9c783850b4c2acf.js +1 -0
  256. package/.next/static/chunks/app/api/mcp/servers/route-b9c783850b4c2acf.js +1 -0
  257. package/.next/static/chunks/app/api/mcp/test-connection/route-b9c783850b4c2acf.js +1 -0
  258. package/.next/static/chunks/app/api/mcp/test-connection/stream/route-b9c783850b4c2acf.js +1 -0
  259. package/.next/static/chunks/app/api/mcp-registry/route-b9c783850b4c2acf.js +1 -0
  260. package/.next/static/chunks/app/api/mcp-registry/spotlight/route-b9c783850b4c2acf.js +1 -0
  261. package/.next/static/chunks/app/api/model/[id]/route-b9c783850b4c2acf.js +1 -0
  262. package/.next/static/chunks/app/api/model/provider/route-b9c783850b4c2acf.js +1 -0
  263. package/.next/static/chunks/app/api/model/route-b9c783850b4c2acf.js +1 -0
  264. package/.next/static/chunks/app/api/model/test/route-b9c783850b4c2acf.js +1 -0
  265. package/.next/static/chunks/app/api/oauth/callback/route-b9c783850b4c2acf.js +1 -0
  266. package/.next/static/chunks/app/api/oauth/initiate/route-b9c783850b4c2acf.js +1 -0
  267. package/.next/static/chunks/app/api/oauth/reset/route-b9c783850b4c2acf.js +1 -0
  268. package/.next/static/chunks/app/api/packages/build/route-b9c783850b4c2acf.js +1 -0
  269. package/.next/static/chunks/app/api/packages/derive-secrets/route-b9c783850b4c2acf.js +1 -0
  270. package/.next/static/chunks/app/api/packages/install/route-b9c783850b4c2acf.js +1 -0
  271. package/.next/static/chunks/app/api/packages/install/status/route-b9c783850b4c2acf.js +1 -0
  272. package/.next/static/chunks/app/api/packages/installed/route-b9c783850b4c2acf.js +1 -0
  273. package/.next/static/chunks/app/api/packages/resolve/route-b9c783850b4c2acf.js +1 -0
  274. package/.next/static/chunks/app/api/packages/scan-targets/route-b9c783850b4c2acf.js +1 -0
  275. package/.next/static/chunks/app/api/packages/search/route-b9c783850b4c2acf.js +1 -0
  276. package/.next/static/chunks/app/api/packages/uninstall/route-b9c783850b4c2acf.js +1 -0
  277. package/.next/static/chunks/app/api/planned-executions/[id]/route-b9c783850b4c2acf.js +1 -0
  278. package/.next/static/chunks/app/api/planned-executions/[id]/run/route-b9c783850b4c2acf.js +1 -0
  279. package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-b9c783850b4c2acf.js +1 -0
  280. package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-b9c783850b4c2acf.js +1 -0
  281. package/.next/static/chunks/app/api/planned-executions/reconcile/route-b9c783850b4c2acf.js +1 -0
  282. package/.next/static/chunks/app/api/planned-executions/route-b9c783850b4c2acf.js +1 -0
  283. package/.next/static/chunks/app/api/registry/auth/resend/route-b9c783850b4c2acf.js +1 -0
  284. package/.next/static/chunks/app/api/registry/auth/reset/route-b9c783850b4c2acf.js +1 -0
  285. package/.next/static/chunks/app/api/registry/auth/route-b9c783850b4c2acf.js +1 -0
  286. package/.next/static/chunks/app/api/registry/feedback/route-b9c783850b4c2acf.js +1 -0
  287. package/.next/static/chunks/app/api/registry/oauth/callback/route-b9c783850b4c2acf.js +1 -0
  288. package/.next/static/chunks/app/api/registry/oauth/initiate/route-b9c783850b4c2acf.js +1 -0
  289. package/.next/static/chunks/app/api/registry/packages/route-b9c783850b4c2acf.js +1 -0
  290. package/.next/static/chunks/app/api/registry/publish/route-b9c783850b4c2acf.js +1 -0
  291. package/.next/static/chunks/app/api/registry/settings/route-b9c783850b4c2acf.js +1 -0
  292. package/.next/static/chunks/app/api/restore/route-b9c783850b4c2acf.js +1 -0
  293. package/.next/static/chunks/app/api/runs/active/route-b9c783850b4c2acf.js +1 -0
  294. package/.next/static/chunks/app/api/storage/route-b9c783850b4c2acf.js +1 -0
  295. package/.next/static/chunks/app/api/telemetry/daily-active/route-b9c783850b4c2acf.js +1 -0
  296. package/.next/static/chunks/app/api/update/route-b9c783850b4c2acf.js +1 -0
  297. package/.next/static/chunks/app/api/waves/route-b9c783850b4c2acf.js +1 -0
  298. package/.next/static/chunks/app/api/webhooks/[id]/route-b9c783850b4c2acf.js +1 -0
  299. package/.next/static/chunks/app/chat/{page-bc7807593b8b7394.js → page-e37bbc561f40ce60.js} +1 -1
  300. package/.next/static/chunks/app/flows/{page-87fb466e491fc068.js → page-e52c8943555e38dd.js} +1 -1
  301. package/.next/static/chunks/app/mcp-flows/route-b9c783850b4c2acf.js +1 -0
  302. package/.next/static/chunks/app/mcp-proxy/[server]/route-b9c783850b4c2acf.js +1 -0
  303. package/.next/static/chunks/app/models/page-595597042e227970.js +1 -0
  304. package/.next/static/chunks/app/packages/page-f1a22789a6c0e0b6.js +1 -0
  305. package/.next/static/chunks/app/settings/{page-2fc3a70bfd25c48b.js → page-f35e939032b0277d.js} +1 -1
  306. package/.next/static/chunks/app/v1/chat/completions/route-b9c783850b4c2acf.js +1 -0
  307. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-b9c783850b4c2acf.js +1 -0
  308. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-b9c783850b4c2acf.js +1 -0
  309. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-b9c783850b4c2acf.js +1 -0
  310. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-b9c783850b4c2acf.js +1 -0
  311. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-b9c783850b4c2acf.js +1 -0
  312. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-b9c783850b4c2acf.js +1 -0
  313. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/inject/route-b9c783850b4c2acf.js +1 -0
  314. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/[resourceId]/content/route-b9c783850b4c2acf.js +1 -0
  315. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-b9c783850b4c2acf.js +1 -0
  316. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-b9c783850b4c2acf.js +1 -0
  317. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-b9c783850b4c2acf.js +1 -0
  318. package/.next/static/chunks/app/v1/chat/conversations/route-b9c783850b4c2acf.js +1 -0
  319. package/.next/static/chunks/app/v1/chat/events/route-b9c783850b4c2acf.js +1 -0
  320. package/.next/static/chunks/app/v1/models/route-b9c783850b4c2acf.js +1 -0
  321. package/.next/static/chunks/{webpack-d5d737ff6a86674f.js → webpack-9d09d53b271f49e2.js} +1 -1
  322. package/.next/trace +10 -10
  323. package/.next/types/app/v1/chat/conversations/[conversationId]/resources/[resourceId]/content/route.ts +347 -0
  324. package/.next/types/routes.d.ts +2 -1
  325. package/.next/types/validator.ts +9 -0
  326. package/README.md +60 -61
  327. package/package.json +1 -1
  328. package/.next/server/chunks/4308.js +0 -4
  329. package/.next/static/chunks/6733-c9029143901e62e9.js +0 -1
  330. package/.next/static/chunks/app/api/bugs/enhance/route-9ea2990be4b67136.js +0 -1
  331. package/.next/static/chunks/app/api/cwd/route-9ea2990be4b67136.js +0 -1
  332. package/.next/static/chunks/app/api/encryption/secure/route-9ea2990be4b67136.js +0 -1
  333. package/.next/static/chunks/app/api/env/route-9ea2990be4b67136.js +0 -1
  334. package/.next/static/chunks/app/api/flow/[id]/route-9ea2990be4b67136.js +0 -1
  335. package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-9ea2990be4b67136.js +0 -1
  336. package/.next/static/chunks/app/api/flow/[id]/versions/route-9ea2990be4b67136.js +0 -1
  337. package/.next/static/chunks/app/api/flow/compile/route-9ea2990be4b67136.js +0 -1
  338. package/.next/static/chunks/app/api/flow/generate/route-9ea2990be4b67136.js +0 -1
  339. package/.next/static/chunks/app/api/flow/generator/route-9ea2990be4b67136.js +0 -1
  340. package/.next/static/chunks/app/api/flow/improve/route-9ea2990be4b67136.js +0 -1
  341. package/.next/static/chunks/app/api/flow/prompt-renderer/route-9ea2990be4b67136.js +0 -1
  342. package/.next/static/chunks/app/api/flow/quick-chat/route-9ea2990be4b67136.js +0 -1
  343. package/.next/static/chunks/app/api/flow/repair/route-9ea2990be4b67136.js +0 -1
  344. package/.next/static/chunks/app/api/flow/route-9ea2990be4b67136.js +0 -1
  345. package/.next/static/chunks/app/api/git/route-9ea2990be4b67136.js +0 -1
  346. package/.next/static/chunks/app/api/init/route-9ea2990be4b67136.js +0 -1
  347. package/.next/static/chunks/app/api/local-models/capability/route-9ea2990be4b67136.js +0 -1
  348. package/.next/static/chunks/app/api/local-models/pull/route-9ea2990be4b67136.js +0 -1
  349. package/.next/static/chunks/app/api/local-models/suggest/route-9ea2990be4b67136.js +0 -1
  350. package/.next/static/chunks/app/api/mcp/app-sandbox/route-9ea2990be4b67136.js +0 -1
  351. package/.next/static/chunks/app/api/mcp/cancel/route-9ea2990be4b67136.js +0 -1
  352. package/.next/static/chunks/app/api/mcp/oauth-capability/route-9ea2990be4b67136.js +0 -1
  353. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-9ea2990be4b67136.js +0 -1
  354. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-9ea2990be4b67136.js +0 -1
  355. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-9ea2990be4b67136.js +0 -1
  356. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-9ea2990be4b67136.js +0 -1
  357. package/.next/static/chunks/app/api/mcp/servers/[name]/route-9ea2990be4b67136.js +0 -1
  358. package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-9ea2990be4b67136.js +0 -1
  359. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-9ea2990be4b67136.js +0 -1
  360. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-9ea2990be4b67136.js +0 -1
  361. package/.next/static/chunks/app/api/mcp/servers/route-9ea2990be4b67136.js +0 -1
  362. package/.next/static/chunks/app/api/mcp/test-connection/route-9ea2990be4b67136.js +0 -1
  363. package/.next/static/chunks/app/api/mcp/test-connection/stream/route-9ea2990be4b67136.js +0 -1
  364. package/.next/static/chunks/app/api/mcp-registry/route-9ea2990be4b67136.js +0 -1
  365. package/.next/static/chunks/app/api/mcp-registry/spotlight/route-9ea2990be4b67136.js +0 -1
  366. package/.next/static/chunks/app/api/model/[id]/route-9ea2990be4b67136.js +0 -1
  367. package/.next/static/chunks/app/api/model/provider/route-9ea2990be4b67136.js +0 -1
  368. package/.next/static/chunks/app/api/model/route-9ea2990be4b67136.js +0 -1
  369. package/.next/static/chunks/app/api/model/test/route-9ea2990be4b67136.js +0 -1
  370. package/.next/static/chunks/app/api/oauth/callback/route-9ea2990be4b67136.js +0 -1
  371. package/.next/static/chunks/app/api/oauth/initiate/route-9ea2990be4b67136.js +0 -1
  372. package/.next/static/chunks/app/api/oauth/reset/route-9ea2990be4b67136.js +0 -1
  373. package/.next/static/chunks/app/api/packages/build/route-9ea2990be4b67136.js +0 -1
  374. package/.next/static/chunks/app/api/packages/derive-secrets/route-9ea2990be4b67136.js +0 -1
  375. package/.next/static/chunks/app/api/packages/install/route-9ea2990be4b67136.js +0 -1
  376. package/.next/static/chunks/app/api/packages/install/status/route-9ea2990be4b67136.js +0 -1
  377. package/.next/static/chunks/app/api/packages/installed/route-9ea2990be4b67136.js +0 -1
  378. package/.next/static/chunks/app/api/packages/resolve/route-9ea2990be4b67136.js +0 -1
  379. package/.next/static/chunks/app/api/packages/scan-targets/route-9ea2990be4b67136.js +0 -1
  380. package/.next/static/chunks/app/api/packages/search/route-9ea2990be4b67136.js +0 -1
  381. package/.next/static/chunks/app/api/packages/uninstall/route-9ea2990be4b67136.js +0 -1
  382. package/.next/static/chunks/app/api/planned-executions/[id]/route-9ea2990be4b67136.js +0 -1
  383. package/.next/static/chunks/app/api/planned-executions/[id]/run/route-9ea2990be4b67136.js +0 -1
  384. package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-9ea2990be4b67136.js +0 -1
  385. package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-9ea2990be4b67136.js +0 -1
  386. package/.next/static/chunks/app/api/planned-executions/reconcile/route-9ea2990be4b67136.js +0 -1
  387. package/.next/static/chunks/app/api/planned-executions/route-9ea2990be4b67136.js +0 -1
  388. package/.next/static/chunks/app/api/registry/auth/resend/route-9ea2990be4b67136.js +0 -1
  389. package/.next/static/chunks/app/api/registry/auth/reset/route-9ea2990be4b67136.js +0 -1
  390. package/.next/static/chunks/app/api/registry/auth/route-9ea2990be4b67136.js +0 -1
  391. package/.next/static/chunks/app/api/registry/feedback/route-9ea2990be4b67136.js +0 -1
  392. package/.next/static/chunks/app/api/registry/oauth/callback/route-9ea2990be4b67136.js +0 -1
  393. package/.next/static/chunks/app/api/registry/oauth/initiate/route-9ea2990be4b67136.js +0 -1
  394. package/.next/static/chunks/app/api/registry/packages/route-9ea2990be4b67136.js +0 -1
  395. package/.next/static/chunks/app/api/registry/publish/route-9ea2990be4b67136.js +0 -1
  396. package/.next/static/chunks/app/api/registry/settings/route-9ea2990be4b67136.js +0 -1
  397. package/.next/static/chunks/app/api/restore/route-9ea2990be4b67136.js +0 -1
  398. package/.next/static/chunks/app/api/runs/active/route-9ea2990be4b67136.js +0 -1
  399. package/.next/static/chunks/app/api/storage/route-9ea2990be4b67136.js +0 -1
  400. package/.next/static/chunks/app/api/telemetry/daily-active/route-9ea2990be4b67136.js +0 -1
  401. package/.next/static/chunks/app/api/update/route-9ea2990be4b67136.js +0 -1
  402. package/.next/static/chunks/app/api/waves/route-9ea2990be4b67136.js +0 -1
  403. package/.next/static/chunks/app/api/webhooks/[id]/route-9ea2990be4b67136.js +0 -1
  404. package/.next/static/chunks/app/mcp-flows/route-9ea2990be4b67136.js +0 -1
  405. package/.next/static/chunks/app/mcp-proxy/[server]/route-9ea2990be4b67136.js +0 -1
  406. package/.next/static/chunks/app/models/page-a5e2437356b06db8.js +0 -1
  407. package/.next/static/chunks/app/packages/page-fba5696f33d9cdfb.js +0 -1
  408. package/.next/static/chunks/app/v1/chat/completions/route-9ea2990be4b67136.js +0 -1
  409. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-9ea2990be4b67136.js +0 -1
  410. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-9ea2990be4b67136.js +0 -1
  411. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-9ea2990be4b67136.js +0 -1
  412. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-9ea2990be4b67136.js +0 -1
  413. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-9ea2990be4b67136.js +0 -1
  414. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-9ea2990be4b67136.js +0 -1
  415. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/inject/route-9ea2990be4b67136.js +0 -1
  416. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-9ea2990be4b67136.js +0 -1
  417. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-9ea2990be4b67136.js +0 -1
  418. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-9ea2990be4b67136.js +0 -1
  419. package/.next/static/chunks/app/v1/chat/conversations/route-9ea2990be4b67136.js +0 -1
  420. package/.next/static/chunks/app/v1/chat/events/route-9ea2990be4b67136.js +0 -1
  421. package/.next/static/chunks/app/v1/models/route-9ea2990be4b67136.js +0 -1
  422. /package/.next/static/{Zz_Vh59XdtLIPcf-PxCpo → hbjnLG9RCje2AApS9TzP8}/_buildManifest.js +0 -0
  423. /package/.next/static/{Zz_Vh59XdtLIPcf-PxCpo → hbjnLG9RCje2AApS9TzP8}/_ssgManifest.js +0 -0
@@ -1,2 +1,2 @@
1
- (()=>{var a={};a.id=7262,a.ids=[7262],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},2117:(a,b,c)=>{"use strict";c.d(b,{A:()=>i});var d=c(55511);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length,h=[];for(let a=0;a<256;++a)h.push((a+256).toString(16).slice(1));let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();let i=(a=a||{}).random??a.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(i.length<16)throw Error("Random bytes length must be >= 16");if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,b){if((c=c||0)<0||c+16>b.length)throw RangeError(`UUID byte range ${c}:${c+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[c+a]=i[a];return b}return function(a,b=0){return(h[a[b+0]]+h[a[b+1]]+h[a[b+2]]+h[a[b+3]]+"-"+h[a[b+4]]+h[a[b+5]]+"-"+h[a[b+6]]+h[a[b+7]]+"-"+h[a[b+8]]+h[a[b+9]]+"-"+h[a[b+10]]+h[a[b+11]]+h[a[b+12]]+h[a[b+13]]+h[a[b+14]]+h[a[b+15]]).toLowerCase()}(i)}},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},14570:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM8 9h8v10H8zm7.5-5-1-1h-5l-1 1H5v2h14V4z"}),"DeleteOutline")},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},24077:(a,b,c)=>{"use strict";c.d(b,{A:()=>j});var d=c(38301),e=c(75249),f=c(44548),g=c(33427);let h={...d}.useSyncExternalStore;function i(a={}){let{themeId:b}=a;return function(a,c={}){let i=(0,g.A)();i&&b&&(i=i[b]||i);let{defaultMatches:j=!1,matchMedia:k=null,ssrMatchMedia:l=null,noSsr:m=!1}=(0,f.A)({name:"MuiUseMediaQuery",props:c,theme:i}),n="function"==typeof a?a(i):a;return(n=n.replace(/^@media( ?)/m,"")).includes("print")&&console.warn("MUI: You have provided a `print` query to the `useMediaQuery` hook.\nUsing the print media query to modify print styles can lead to unexpected results.\nConsider using the `displayPrint` field in the `sx` prop instead.\nMore information about `displayPrint` on our docs: https://mui.com/system/display/#display-in-print."),(void 0!==h?function(a,b,c,e,f){let g=d.useCallback(()=>b,[b]),i=d.useMemo(()=>{if(f&&c)return()=>c(a).matches;if(null!==e){let{matches:b}=e(a);return()=>b}return g},[g,a,e,f,c]),[j,k]=d.useMemo(()=>{if(null===c)return[g,()=>()=>{}];let b=c(a);return[()=>b.matches,a=>(b.addEventListener("change",a),()=>{b.removeEventListener("change",a)})]},[g,c,a]);return h(k,j,i)}:function(a,b,c,f,g){let[h,i]=d.useState(()=>g&&c?c(a).matches:f?f(a).matches:b);return(0,e.A)(()=>{if(!c)return;let b=c(a),d=()=>{i(b.matches)};return d(),b.addEventListener("change",d),()=>{b.removeEventListener("change",d)}},[a,c]),h})(n,j,k,l,m)}}i();let j=i({themeId:c(35864).A})},26713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},28354:a=>{"use strict";a.exports=require("util")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33253:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M5 20h14v-2H5zM19 9h-4V3H9v6H5l7 7z"}),"Download")},33873:a=>{"use strict";a.exports=require("path")},40628:(a,b,c)=>{Promise.resolve().then(c.bind(c,77531))},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},42378:(a,b,c)=>{"use strict";var d=c(68949);c.o(d,"useRouter")&&c.d(b,{useRouter:function(){return d.useRouter}}),c.o(d,"useSearchParams")&&c.d(b,{useSearchParams:function(){return d.useSearchParams}})},55511:a=>{"use strict";a.exports=require("crypto")},60399:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(97954).registerClientReference)(function(){throw Error("Attempted to call the default export of \"C:\\\\Users\\\\Moe\\\\Documents\\\\GitHub\\\\FLUJO\\\\src\\\\app\\\\packages\\\\page.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\packages\\page.tsx","default")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},63281:(a,b,c)=>{"use strict";c.d(b,{g:()=>g});var d=c(2117);let e=(0,c(19815).h)("frontend/services/flow/index");class f{async loadFlows(){e.debug("loadFlows: Entering method");try{if(this.flowsCache)return e.debug("loadFlows: Using cached flows",{count:this.flowsCache.length}),this.flowsCache;let a=await fetch("/api/flow");if(!a.ok){let b=await a.json();throw Error(b.error||"Failed to load flows")}let b=await a.json();return e.debug("loadFlows: Loaded flows from API",{count:b.length}),this.flowsCache=b,b}catch(a){return e.warn("loadFlows: Failed to load flows:",a),[]}}async getFlow(a){e.debug("getFlow: Entering method",{flowId:a});try{if(this.flowsCache){let b=this.flowsCache.find(b=>b.id===a);if(b)return e.debug("getFlow: Using cached flow",{flowId:a}),b}let b=await fetch(`/api/flow/${encodeURIComponent(a)}`);if(!b.ok){if(404===b.status)return e.debug(`getFlow: Flow ${a} not found`),null;let c=await b.json();throw Error(c.error||`Failed to get flow: ${a}`)}let c=await b.json();return e.debug("getFlow: Retrieved flow from API",{flowId:a}),c}catch(b){return e.warn(`getFlow: Failed to get flow ${a}:`,b),null}}async addFlow(a){e.debug("addFlow: Entering method",{flowId:a.id,flowName:a.name,nodeCount:a.nodes.length,edgeCount:a.edges.length});try{let b=await fetch("/api/flow",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok){let a=await b.json();return{success:!1,error:a.error||"Failed to add flow"}}let c=await b.json();return this.flowsCache&&this.flowsCache.push(c),e.debug("addFlow: Flow added successfully",{flowId:a.id}),{success:!0}}catch(a){return e.warn("addFlow: Failed to add flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to add flow"}}}async generateFlow(a,b,c){e.debug("generateFlow: Entering method",{modelId:b,allowInstall:c?.allowInstall,allowSubflows:c?.allowSubflows,maxDepth:c?.maxDepth});try{let d=await fetch("/api/flow/generate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({description:a,modelId:b,allowInstall:c?.allowInstall===!0,allowSubflows:c?.allowSubflows!==!1,..."number"==typeof c?.maxDepth?{maxDepth:c.maxDepth}:{}})}),f=await d.json().catch(()=>null);if(!d.ok)return{success:!1,error:f?.error||"Failed to generate flow"};let g=Array.isArray(f.flows)&&f.flows.length>0?f.flows:[{flow:f.flow,validation:f.validation}];return e.debug("generateFlow: Draft generated",{flowId:f.flow?.id,flowCount:g.length,attempts:f.attempts,errorCount:f.validation?.errorCount,installedServers:f.installedServers?.length??0}),{success:!0,flow:f.flow,validation:f.validation,flows:g,rootFlowId:f.rootFlowId??f.flow?.id,attempts:f.attempts,installedServers:f.installedServers??[]}}catch(a){return e.warn("generateFlow: Failed to generate flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to generate flow"}}}async improveFlow(a,b,c,d){e.debug("improveFlow: Entering method",{flowId:a?.id,modelId:c,allowInstall:d?.allowInstall});try{let f=await fetch("/api/flow/improve",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({flow:a,relatedFlows:d?.relatedFlows,description:b,modelId:c,allowInstall:d?.allowInstall===!0})}),g=await f.json().catch(()=>null);if(!f.ok)return{success:!1,error:g?.error||"Failed to improve flow"};return e.debug("improveFlow: Draft revised",{flowId:g.flow?.id,attempts:g.attempts,errorCount:g.validation?.errorCount,installedServers:g.installedServers?.length??0}),{success:!0,flow:g.flow,validation:g.validation,flows:Array.isArray(g.flows)&&g.flows.length>0?g.flows:[{flow:g.flow,validation:g.validation}],rootFlowId:g.rootFlowId??g.flow?.id,attempts:g.attempts,installedServers:g.installedServers??[]}}catch(a){return e.warn("improveFlow: Failed to improve flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to improve flow"}}}async updateFlow(a){e.debug("updateFlow: Entering method",{flowId:a.id,flowName:a.name,nodeCount:a.nodes.length,edgeCount:a.edges.length});try{let b=await fetch(`/api/flow/${encodeURIComponent(a.id)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok){let a=await b.json();return{success:!1,error:a.error||"Failed to update flow"}}let c=await b.json();if(this.flowsCache){let b=this.flowsCache.findIndex(b=>b.id===a.id);b>=0?this.flowsCache[b]=c:this.flowsCache.push(c)}return e.debug("updateFlow: Flow updated successfully",{flowId:a.id}),{success:!0}}catch(a){return e.warn("updateFlow: Failed to update flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to update flow"}}}async deleteFlow(a){e.debug("deleteFlow: Entering method",{flowId:a});try{let b=await fetch(`/api/flow/${encodeURIComponent(a)}`,{method:"DELETE"});if(!b.ok){let a=await b.json();return{success:!1,error:a.error||"Failed to delete flow"}}return this.flowsCache&&(this.flowsCache=this.flowsCache.filter(b=>b.id!==a)),e.debug("deleteFlow: Flow deleted successfully",{flowId:a}),{success:!0}}catch(a){return e.warn("deleteFlow: Failed to delete flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to delete flow"}}}async listFlowVersions(a){e.debug("listFlowVersions: Entering method",{flowId:a});try{let b=await fetch(`/api/flow/${encodeURIComponent(a)}/versions`);if(!b.ok){let a=await b.json().catch(()=>null);throw Error(a?.error||"Failed to list flow versions")}let c=await b.json();return Array.isArray(c.versions)?c.versions:[]}catch(b){return e.warn(`listFlowVersions: Failed for flow ${a}:`,b),[]}}async getFlowVersion(a,b){e.debug("getFlowVersion: Entering method",{flowId:a,versionId:b});try{let c=await fetch(`/api/flow/${encodeURIComponent(a)}/versions/${encodeURIComponent(b)}`);if(!c.ok){if(404===c.status)return null;let a=await c.json().catch(()=>null);throw Error(a?.error||"Failed to get flow version")}return await c.json()}catch(c){return e.warn(`getFlowVersion: Failed for ${a}/${b}:`,c),null}}createNode(a,b){return e.debug("createNode: Entering method",{type:a,position:b}),{id:(0,d.A)(),type:a,position:b,data:{label:`${"mcp"===a?"MCP":a.charAt(0).toUpperCase()+a.slice(1)} Node`,type:a,properties:"process"===a?{inputMode:"full-history"}:{}}}}createStartNode(){return{id:(0,d.A)(),type:"start",position:{x:250,y:150},data:{label:"Start Node",type:"start",properties:{promptTemplate:""}}}}createNewFlow(a="NewFlow"){e.debug("createNewFlow: Entering method",{name:a});let b=Date.now();return{id:(0,d.A)(),name:a,createdAt:b,updatedAt:b,nodes:[this.createStartNode()],edges:[]}}createHistoryEntry(a,b){return e.debug("createHistoryEntry: Entering method"),{nodes:[...a],edges:[...b]}}generateSampleFlow(a="Sample Flow"){return e.debug("generateSampleFlow: Entering method",{name:a}),{id:(0,d.A)(),name:a,nodes:[{id:"1",type:"start",position:{x:250,y:50},data:{label:"Start Node",type:"start",properties:{prompt:"Enter your query here",systemMessage:"You are a helpful assistant",temperature:0}}},{id:"2",type:"process",position:{x:250,y:200},data:{label:"Process Node",type:"process",properties:{operation:"transform",enabled:!0}}},{id:"3",type:"finish",position:{x:250,y:350},data:{label:"Finish Node",type:"finish",properties:{format:"json",template:'{ "result": {{data}} }'}}},{id:"4",type:"mcp",position:{x:450,y:200},data:{label:"MCP Node",type:"mcp",properties:{channels:2,mode:"parallel"}}}],edges:[{id:"e1-2",source:"1",target:"2",type:"custom"},{id:"e2-3",source:"2",target:"3",type:"custom"}]}}constructor(){this.flowsCache=null}}let g=new f},63654:(a,b,c)=>{"use strict";c.d(b,{P:()=>f});let d=(0,c(19815).h)("frontend/services/plannedExecutions");class e{async list(){try{let a=await fetch("/api/planned-executions");if(!a.ok)throw Error(`HTTP ${a.status}`);return await a.json()}catch(a){return d.warn("Failed to list planned executions",a),{paused:!1,executions:[]}}}async create(a){try{let b=await fetch("/api/planned-executions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}),c=await b.json();if(!b.ok)return{success:!1,error:c?.error||`HTTP ${b.status}`};return{success:!0,execution:c.execution}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Request failed"}}}async update(a,b){try{let c=await fetch(`/api/planned-executions/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)}),d=await c.json();if(!c.ok)return{success:!1,error:d?.error||`HTTP ${c.status}`};return{success:!0,execution:d.execution}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Request failed"}}}async delete(a){try{let b=await fetch(`/api/planned-executions/${a}`,{method:"DELETE"});if(!b.ok){let a=await b.json().catch(()=>null);return{success:!1,error:a?.error||`HTTP ${b.status}`}}return{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Request failed"}}}async setPaused(a){try{let b=await fetch("/api/planned-executions",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({paused:a})});if(!b.ok){let a=await b.json().catch(()=>null);return{success:!1,error:a?.error||`HTTP ${b.status}`}}return{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Request failed"}}}async runNow(a){try{let b=await fetch(`/api/planned-executions/${a}/run`,{method:"POST"}),c=await b.json();if(!b.ok)return{success:!1,error:c?.error||`HTTP ${b.status}`};return{success:!0,record:c.record}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Request failed"}}}async loadRuns(a){try{let b=await fetch(`/api/planned-executions/${a}/runs`);if(!b.ok)throw Error(`HTTP ${b.status}`);let c=await b.json();return Array.isArray(c?.runs)?c.runs:[]}catch(b){return d.warn(`Failed to load runs for ${a}`,b),[]}}async previewSchedule(a,b){try{let c=await fetch("/api/planned-executions/preview-schedule",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cron:a,timezone:b})});if(!c.ok)throw Error(`HTTP ${c.status}`);return await c.json()}catch(a){return{valid:!1,error:a instanceof Error?a.message:"Preview failed",nextRuns:[]}}}}let f=new e},77531:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>bq});var d,e=c(21124),f=c(38301),g=c(81637),h=c(42378),i=c(53773),j=c(79515),k=c(41893),l=c(68730),m=c(54573),n=c(47902),o=c(11801);let p=(0,o.A)([(0,e.jsx)("path",{d:"M20 2H4c-1 0-2 .9-2 2v3.01c0 .72.43 1.34 1 1.69V20c0 1.1 1.1 2 2 2h14c.9 0 2-.9 2-2V8.7c.57-.35 1-.97 1-1.69V4c0-1.1-1-2-2-2m-1 18H5V9h14zm1-13H4V4h16z"},"0"),(0,e.jsx)("path",{d:"M9 12h6v2H9z"},"1")],"Inventory2Outlined");var q=c(60839),r=c(24077),s=c(37674),t=c(67101),u=c(89490),v=c(71439),w=c(75983),x=c(50553),y=c(77028),z=c(84233),A=c(8521),B=c(88745),C=c(43249),D=c(2783),E=c(18168),F=c(68333),G=c(6636),H=c(29565),I=c(33105);function J(a){return(0,I.Ay)("MuiAlertTitle",a)}(0,H.A)("MuiAlertTitle",["root"]);let K=(0,E.Ay)(j.default,{name:"MuiAlertTitle",slot:"Root",overridesResolver:(a,b)=>b.root})((0,F.A)(({theme:a})=>({fontWeight:a.typography.fontWeightMedium,marginTop:-2}))),L=f.forwardRef(function(a,b){let c=(0,G.b)({props:a,name:"MuiAlertTitle"}),{className:d,...f}=c,g=(a=>{let{classes:b}=a;return(0,D.A)({root:["root"]},J,b)})(c);return(0,e.jsx)(K,{gutterBottom:!0,component:"div",ownerState:c,ref:b,className:(0,C.A)(g.root,d),...f})});var M=c(91059),N=c(7675),O=c(94367),P=c(95587),Q=c(67191),R=c(40512),S=c(83899),T=c(52327);function U(a){return(0,I.Ay)("MuiStepper",a)}(0,H.A)("MuiStepper",["root","horizontal","vertical","nonLinear","alternativeLabel"]);var V=c(6638);let W=f.createContext({}),X=f.createContext({});function Y(a){return(0,I.Ay)("MuiStepConnector",a)}(0,H.A)("MuiStepConnector",["root","horizontal","vertical","alternativeLabel","active","completed","disabled","line","lineHorizontal","lineVertical"]);let Z=(0,E.Ay)("div",{name:"MuiStepConnector",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,b[c.orientation],c.alternativeLabel&&b.alternativeLabel,c.completed&&b.completed]}})({flex:"1 1 auto",variants:[{props:{orientation:"vertical"},style:{marginLeft:12}},{props:{alternativeLabel:!0},style:{position:"absolute",top:12,left:"calc(-50% + 20px)",right:"calc(50% + 20px)"}}]}),$=(0,E.Ay)("span",{name:"MuiStepConnector",slot:"Line",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.line,b[`line${(0,V.A)(c.orientation)}`]]}})((0,F.A)(({theme:a})=>{let b="light"===a.palette.mode?a.palette.grey[400]:a.palette.grey[600];return{display:"block",borderColor:a.vars?a.vars.palette.StepConnector.border:b,variants:[{props:{orientation:"horizontal"},style:{borderTopStyle:"solid",borderTopWidth:1}},{props:{orientation:"vertical"},style:{borderLeftStyle:"solid",borderLeftWidth:1,minHeight:24}}]}})),_=f.forwardRef(function(a,b){let c=(0,G.b)({props:a,name:"MuiStepConnector"}),{className:d,...g}=c,{alternativeLabel:h,orientation:i="horizontal"}=f.useContext(W),{active:j,disabled:k,completed:l}=f.useContext(X),m={...c,alternativeLabel:h,orientation:i,active:j,completed:l,disabled:k},n=(a=>{let{classes:b,orientation:c,alternativeLabel:d,active:e,completed:f,disabled:g}=a,h={root:["root",c,d&&"alternativeLabel",e&&"active",f&&"completed",g&&"disabled"],line:["line",`line${(0,V.A)(c)}`]};return(0,D.A)(h,Y,b)})(m);return(0,e.jsx)(Z,{className:(0,C.A)(n.root,d),ref:b,ownerState:m,...g,children:(0,e.jsx)($,{className:n.line,ownerState:m})})}),aa=(0,E.Ay)("div",{name:"MuiStepper",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,b[c.orientation],c.alternativeLabel&&b.alternativeLabel,c.nonLinear&&b.nonLinear]}})({display:"flex",variants:[{props:{orientation:"horizontal"},style:{flexDirection:"row",alignItems:"center"}},{props:{orientation:"vertical"},style:{flexDirection:"column"}},{props:{alternativeLabel:!0},style:{alignItems:"flex-start"}}]}),ab=(0,e.jsx)(_,{}),ac=f.forwardRef(function(a,b){let c=(0,G.b)({props:a,name:"MuiStepper"}),{activeStep:d=0,alternativeLabel:g=!1,children:h,className:i,component:j="div",connector:k=ab,nonLinear:l=!1,orientation:m="horizontal",...n}=c,o={...c,nonLinear:l,alternativeLabel:g,orientation:m,component:j},p=(a=>{let{orientation:b,nonLinear:c,alternativeLabel:d,classes:e}=a;return(0,D.A)({root:["root",b,c&&"nonLinear",d&&"alternativeLabel"]},U,e)})(o),q=f.Children.toArray(h).filter(Boolean),r=q.map((a,b)=>f.cloneElement(a,{index:b,last:b+1===q.length,...a.props})),s=f.useMemo(()=>({activeStep:d,alternativeLabel:g,connector:k,nonLinear:l,orientation:m}),[d,g,k,l,m]);return(0,e.jsx)(W.Provider,{value:s,children:(0,e.jsx)(aa,{as:j,ownerState:o,className:(0,C.A)(p.root,i),ref:b,...n,children:r})})});function ad(a){return(0,I.Ay)("MuiStep",a)}(0,H.A)("MuiStep",["root","horizontal","vertical","alternativeLabel","completed"]);let ae=(0,E.Ay)("div",{name:"MuiStep",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,b[c.orientation],c.alternativeLabel&&b.alternativeLabel,c.completed&&b.completed]}})({variants:[{props:{orientation:"horizontal"},style:{paddingLeft:8,paddingRight:8}},{props:{alternativeLabel:!0},style:{flex:1,position:"relative"}}]}),af=f.forwardRef(function(a,b){let c=(0,G.b)({props:a,name:"MuiStep"}),{active:d,children:g,className:h,component:i="div",completed:j,disabled:k,expanded:l=!1,index:m,last:n,...o}=c,{activeStep:p,connector:q,alternativeLabel:r,orientation:s,nonLinear:t}=f.useContext(W),[u=!1,v=!1,w=!1]=[d,j,k];p===m?u=void 0===d||d:!t&&p>m?v=void 0===j||j:!t&&p<m&&(w=void 0===k||k);let x=f.useMemo(()=>({index:m,last:n,expanded:l,icon:m+1,active:u,completed:v,disabled:w}),[m,n,l,u,v,w]),y={...c,active:u,orientation:s,alternativeLabel:r,completed:v,disabled:w,expanded:l,component:i},z=(a=>{let{classes:b,orientation:c,alternativeLabel:d,completed:e}=a;return(0,D.A)({root:["root",c,d&&"alternativeLabel",e&&"completed"]},ad,b)})(y),A=(0,e.jsxs)(ae,{as:i,className:(0,C.A)(z.root,h),ref:b,ownerState:y,...o,children:[q&&r&&0!==m?q:null,g]});return(0,e.jsx)(X.Provider,{value:x,children:q&&!r&&0!==m?(0,e.jsxs)(f.Fragment,{children:[q,A]}):A})}),ag=(0,o.A)((0,e.jsx)("path",{d:"M12 0a12 12 0 1 0 0 24 12 12 0 0 0 0-24zm-2 17l-5-5 1.4-1.4 3.6 3.6 7.6-7.6L19 8l-9 9z"}),"CheckCircle"),ah=(0,o.A)((0,e.jsx)("path",{d:"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"}),"Warning");var ai=c(43282);function aj(a){return(0,I.Ay)("MuiStepIcon",a)}let ak=(0,H.A)("MuiStepIcon",["root","active","completed","error","text"]),al=(0,E.Ay)(ai.A,{name:"MuiStepIcon",slot:"Root",overridesResolver:(a,b)=>b.root})((0,F.A)(({theme:a})=>({display:"block",transition:a.transitions.create("color",{duration:a.transitions.duration.shortest}),color:(a.vars||a).palette.text.disabled,[`&.${ak.completed}`]:{color:(a.vars||a).palette.primary.main},[`&.${ak.active}`]:{color:(a.vars||a).palette.primary.main},[`&.${ak.error}`]:{color:(a.vars||a).palette.error.main}}))),am=(0,E.Ay)("text",{name:"MuiStepIcon",slot:"Text",overridesResolver:(a,b)=>b.text})((0,F.A)(({theme:a})=>({fill:(a.vars||a).palette.primary.contrastText,fontSize:a.typography.caption.fontSize,fontFamily:a.typography.fontFamily}))),an=f.forwardRef(function(a,b){let c=(0,G.b)({props:a,name:"MuiStepIcon"}),{active:f=!1,className:g,completed:h=!1,error:i=!1,icon:j,...k}=c,l={...c,active:f,completed:h,error:i},m=(a=>{let{classes:b,active:c,completed:d,error:e}=a;return(0,D.A)({root:["root",c&&"active",d&&"completed",e&&"error"],text:["text"]},aj,b)})(l);if("number"==typeof j||"string"==typeof j){let a=(0,C.A)(g,m.root);return i?(0,e.jsx)(al,{as:ah,className:a,ref:b,ownerState:l,...k}):h?(0,e.jsx)(al,{as:ag,className:a,ref:b,ownerState:l,...k}):(0,e.jsxs)(al,{className:a,ref:b,ownerState:l,...k,children:[d||(d=(0,e.jsx)("circle",{cx:"12",cy:"12",r:"12"})),(0,e.jsx)(am,{className:m.text,x:"12",y:"12",textAnchor:"middle",dominantBaseline:"central",ownerState:l,children:j})]})}return j});function ao(a){return(0,I.Ay)("MuiStepLabel",a)}let ap=(0,H.A)("MuiStepLabel",["root","horizontal","vertical","label","active","completed","error","disabled","iconContainer","alternativeLabel","labelContainer"]);var aq=c(20385);let ar=(0,E.Ay)("span",{name:"MuiStepLabel",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,b[c.orientation]]}})({display:"flex",alignItems:"center",[`&.${ap.alternativeLabel}`]:{flexDirection:"column"},[`&.${ap.disabled}`]:{cursor:"default"},variants:[{props:{orientation:"vertical"},style:{textAlign:"left",padding:"8px 0"}}]}),as=(0,E.Ay)("span",{name:"MuiStepLabel",slot:"Label",overridesResolver:(a,b)=>b.label})((0,F.A)(({theme:a})=>({...a.typography.body2,display:"block",transition:a.transitions.create("color",{duration:a.transitions.duration.shortest}),[`&.${ap.active}`]:{color:(a.vars||a).palette.text.primary,fontWeight:500},[`&.${ap.completed}`]:{color:(a.vars||a).palette.text.primary,fontWeight:500},[`&.${ap.alternativeLabel}`]:{marginTop:16},[`&.${ap.error}`]:{color:(a.vars||a).palette.error.main}}))),at=(0,E.Ay)("span",{name:"MuiStepLabel",slot:"IconContainer",overridesResolver:(a,b)=>b.iconContainer})({flexShrink:0,display:"flex",paddingRight:8,[`&.${ap.alternativeLabel}`]:{paddingRight:0}}),au=(0,E.Ay)("span",{name:"MuiStepLabel",slot:"LabelContainer",overridesResolver:(a,b)=>b.labelContainer})((0,F.A)(({theme:a})=>({width:"100%",color:(a.vars||a).palette.text.secondary,[`&.${ap.alternativeLabel}`]:{textAlign:"center"}}))),av=f.forwardRef(function(a,b){let c=(0,G.b)({props:a,name:"MuiStepLabel"}),{children:d,className:g,componentsProps:h={},error:i=!1,icon:j,optional:k,slots:l={},slotProps:m={},StepIconComponent:n,StepIconProps:o,...p}=c,{alternativeLabel:q,orientation:r}=f.useContext(W),{active:s,disabled:t,completed:u,icon:v}=f.useContext(X),w=j||v,x=n;w&&!x&&(x=an);let y={...c,active:s,alternativeLabel:q,completed:u,disabled:t,error:i,orientation:r},z=(a=>{let{classes:b,orientation:c,active:d,completed:e,error:f,disabled:g,alternativeLabel:h}=a;return(0,D.A)({root:["root",c,f&&"error",g&&"disabled",h&&"alternativeLabel"],label:["label",d&&"active",e&&"completed",f&&"error",g&&"disabled",h&&"alternativeLabel"],iconContainer:["iconContainer",d&&"active",e&&"completed",f&&"error",g&&"disabled",h&&"alternativeLabel"],labelContainer:["labelContainer",h&&"alternativeLabel"]},ao,b)})(y),A={slots:l,slotProps:{stepIcon:o,...h,...m}},[B,E]=(0,aq.A)("root",{elementType:ar,externalForwardedProps:{...A,...p},ownerState:y,ref:b,className:(0,C.A)(z.root,g)}),[F,H]=(0,aq.A)("label",{elementType:as,externalForwardedProps:A,ownerState:y}),[I,J]=(0,aq.A)("stepIcon",{elementType:x,externalForwardedProps:A,ownerState:y});return(0,e.jsxs)(B,{...E,children:[w||I?(0,e.jsx)(at,{className:z.iconContainer,ownerState:y,children:(0,e.jsx)(I,{completed:u,active:s,error:i,icon:w,...J})}):null,(0,e.jsxs)(au,{className:z.labelContainer,ownerState:y,children:[d?(0,e.jsx)(F,{...H,className:(0,C.A)(z.label,H?.className),children:d}):null,k]})]})});av.muiName="StepLabel";var aw=c(19925),ax=c(40973);let ay=(0,o.A)((0,e.jsx)("path",{d:"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8zm4 18H6V4h7v5h5zM8 15.01l1.41 1.41L11 14.84V19h2v-4.16l1.59 1.59L16 15.01 12.01 11z"}),"UploadFile");var az=c(22042),aA=c(34304),aB=c(19815);(0,aB.h)("frontend/services/registry");let aC=()=>{throw Error("RegistryService can only be used in browser environment")},aD=new Proxy({},{get(a,b){let c=aC(),d=c[b];return"function"==typeof d?d.bind(c):d}}),aE=(0,aB.h)("frontend/components/Packages/RegistryAccountSettings");function aF(){let[a,b]=(0,f.useState)(null),[c,d]=(0,f.useState)(!0),[h,m]=(0,f.useState)(!1),[n,o]=(0,f.useState)(null),[p,q]=(0,f.useState)("login"),[r,t]=(0,f.useState)(""),[u,v]=(0,f.useState)(""),[w,x]=(0,f.useState)(""),[y,z]=(0,f.useState)(""),[C,D]=(0,f.useState)(""),E=(0,f.useCallback)(async()=>{try{let[a,c]=await Promise.all([aD.getStatus(),aD.getSettings()]);b(a),D(c.defaultUrl),z(c.usingDefault?"":c.baseUrl)}catch(a){aE.warn("Failed to load registry account status",a)}finally{d(!1)}},[]),F=async()=>{m(!0),o(null);try{let a="signup"===p?await aD.signup(r.trim(),u,w.trim()):await aD.login(r.trim(),u);"authenticated"===a.status?(o({type:"success",text:"Signed in to the package registry."}),v("")):"confirmation_required"===a.status?(o({type:"info",text:a.message||"Check your inbox to confirm your email."}),v("")):o({type:"error",text:a.message||"Authentication failed."}),a.account?b(a.account):await E()}catch(a){o({type:"error",text:a instanceof Error?a.message:"Authentication failed."})}finally{m(!1)}},G=async()=>{m(!0),o(null);try{await aD.logout(),await E(),o({type:"success",text:"Logged out."})}catch(a){o({type:"error",text:a instanceof Error?a.message:"Failed to log out."})}finally{m(!1)}},H=async a=>{m(!0),o(null);try{let{authorizationUrl:b}=await aD.beginOAuth(a);window.location.assign(b)}catch(a){o({type:"error",text:a instanceof Error?a.message:"Failed to start OAuth sign-in."}),m(!1)}},I=async()=>{m(!0),o(null);try{let a=await aD.resendConfirmation();o(a.success?{type:"success",text:"Confirmation email sent."}:{type:"error",text:a.message||"Failed to resend confirmation."})}finally{m(!1)}},J=async()=>{let a=r.trim();if(!a)return void o({type:"info",text:"Enter your account email above, then tap “Forgot password?”."});m(!0),o(null);try{await aD.requestPasswordReset(a),o({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(a){o({type:"error",text:a instanceof Error?a.message:"Failed to request a password reset."})}finally{m(!1)}},K=async()=>{m(!0),o(null);try{let a=await aD.saveSettings(y.trim());o(a.success?{type:"success",text:"Registry URL saved."}:{type:"error",text:a.message||"Invalid registry URL."})}finally{m(!1)}};if(c)return(0,e.jsx)(g.default,{sx:{display:"flex",justifyContent:"center",p:3},children:(0,e.jsx)(A.default,{size:28})});let L=!!a?.signedIn,N=!!(a?.email&&!L&&a&&!a.isConfirmed);return(0,e.jsxs)(g.default,{sx:{width:"100%"},children:[(0,e.jsx)(j.default,{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."}),n&&(0,e.jsx)(B.A,{severity:n.type,sx:{mb:2},onClose:()=>o(null),children:n.text}),L?(0,e.jsxs)(i.A,{spacing:2,children:[(0,e.jsxs)(i.A,{direction:"row",spacing:1,alignItems:"center",flexWrap:"wrap",useFlexGap:!0,children:[(0,e.jsx)(j.default,{variant:"subtitle1",children:a?.email}),a?.publisherHandle&&(0,e.jsx)(k.A,{size:"small",label:`@${a.publisherHandle}`}),a?.isConfirmed?(0,e.jsx)(k.A,{size:"small",color:"success",label:"Confirmed"}):(0,e.jsx)(k.A,{size:"small",color:"warning",label:"Unconfirmed"})]}),(0,e.jsx)(g.default,{children:(0,e.jsx)(l.A,{variant:"outlined",onClick:G,disabled:h,children:"Log out"})})]}):N?(0,e.jsxs)(i.A,{spacing:2,children:[(0,e.jsxs)(B.A,{severity:"info",children:["We sent a confirmation link to ",(0,e.jsx)("strong",{children:a?.email}),". Confirm your email, then log in to start publishing."]}),(0,e.jsxs)(i.A,{direction:"row",spacing:1,children:[(0,e.jsx)(l.A,{variant:"outlined",onClick:I,disabled:h,children:"Resend confirmation email"}),(0,e.jsx)(l.A,{onClick:G,disabled:h,children:"Use a different account"})]})]}):(0,e.jsxs)(i.A,{spacing:2,children:[(0,e.jsxs)(az.A,{value:p,onChange:(a,b)=>q(b),children:[(0,e.jsx)(aA.A,{value:"login",label:"Log in"}),(0,e.jsx)(aA.A,{value:"signup",label:"Sign up"})]}),(0,e.jsx)(s.A,{label:"Email",type:"email",value:r,onChange:a=>t(a.target.value),fullWidth:!0,autoComplete:"username"}),(0,e.jsx)(s.A,{label:"Password",type:"password",value:u,onChange:a=>v(a.target.value),fullWidth:!0,autoComplete:"signup"===p?"new-password":"current-password"}),"signup"===p&&(0,e.jsx)(s.A,{label:"Publisher handle",value:w,onChange:a=>x(a.target.value),fullWidth:!0,autoComplete:"username",helperText:"A unique handle for publishing packages, e.g. your-name"}),(0,e.jsx)(g.default,{children:(0,e.jsx)(l.A,{variant:"contained",onClick:F,disabled:h||!r.trim()||!u||"signup"===p&&!w.trim(),children:"signup"===p?"Sign up":"Log in"})}),"login"===p&&(0,e.jsx)(g.default,{children:(0,e.jsx)(l.A,{variant:"text",size:"small",onClick:J,disabled:h,sx:{textTransform:"none",px:0},children:"Forgot password?"})}),(0,e.jsx)(M.A,{children:"or"}),(0,e.jsx)(i.A,{direction:"row",spacing:1,flexWrap:"wrap",useFlexGap:!0,children:(0,e.jsx)(l.A,{variant:"outlined",onClick:()=>H("github"),disabled:h,children:"Continue with GitHub"})})]}),(0,e.jsx)(M.A,{sx:{my:3}}),(0,e.jsx)(j.default,{variant:"subtitle2",gutterBottom:!0,children:"Registry URL"}),(0,e.jsxs)(j.default,{variant:"body2",color:"text.secondary",sx:{mb:1},children:["Leave blank to use the default (",C,")."]}),(0,e.jsxs)(i.A,{direction:"row",spacing:1,alignItems:"center",flexWrap:"wrap",useFlexGap:!0,children:[(0,e.jsx)(s.A,{size:"small",placeholder:C,value:y,onChange:a=>z(a.target.value),sx:{minWidth:320}}),(0,e.jsx)(l.A,{variant:"outlined",onClick:K,disabled:h,children:"Save"})]})]})}c(63281),c(83434),c(28055),c(63654),(0,aB.h)("frontend/services/packages");let aG=()=>{throw Error("PackageService can only be used in browser environment")},aH=new Proxy({},{get(a,b){let c=aG(),d=c[b];return"function"==typeof d?d.bind(c):d}}),aI=/\{\{secret\.([A-Za-z0-9_.-]+)\}\}/g,aJ="encrypted:",aK=/^[A-Za-z0-9_.-]+$/,aL=["path","repo","token","email","url-cred","name","other"];function aM(a){let b=new Set,c=a=>{if("string"==typeof a){for(let c of function(a){let b;if("string"!=typeof a)return[];let c=[],d=RegExp(aI.source,"g");for(;null!==(b=d.exec(a));)c.includes(b[1])||c.push(b[1]);return c}(a))b.add(c);return}if(Array.isArray(a)){for(let b of a)c(b);return}if(a&&"object"==typeof a)for(let b of Object.values(a))c(b)};return c(a),Array.from(b)}var aN=c(48716);let aO=aN.object({name:aN.string().min(1).regex(aK,"invalid secret name"),description:aN.string().optional(),required:aN.boolean(),default:aN.string().optional()}).strict(),aP=aN.object({name:aN.string().min(1).regex(aK,"invalid global variable name"),description:aN.string().optional(),required:aN.boolean(),isSecret:aN.boolean().optional()}).strict(),aQ=aN.discriminatedUnion("kind",[aN.object({kind:aN.literal("secret"),secret:aN.string().min(1)}).strict(),aN.object({kind:aN.literal("global"),var:aN.string().min(1)}).strict(),aN.object({kind:aN.literal("none")}).strict()]),aR=aN.object({id:aN.string().min(1),name:aN.string().min(1),displayName:aN.string().optional(),description:aN.string().optional(),baseUrl:aN.string().optional(),provider:aN.string().optional(),adapter:aN.string().optional(),promptTemplate:aN.string().optional(),reasoningSchema:aN.string().optional(),temperature:aN.string().optional(),reasoningEffort:aN.enum(["minimal","low","medium","high","xhigh","max","ultra"]).optional(),thinkingLevel:aN.enum(["minimal","low","medium","high"]).optional(),thinkingBudget:aN.number().int().min(-1).optional(),serviceTier:aN.enum(["default","priority"]).optional(),functionCallingSchema:aN.string().optional(),contextWindow:aN.number().optional(),maxTurns:aN.number().optional(),maxTokens:aN.number().optional(),folder:aN.string().optional(),favorite:aN.boolean().optional(),apiKeyRef:aQ}).strict(),aS=aN.object({sourceType:aN.enum(["github","registry","marketplace","remote"]),ref:aN.string().optional(),url:aN.string().optional(),name:aN.string().optional()}).strict().superRefine((a,b)=>{"remote"!==a.sourceType||a.url||b.addIssue({code:"custom",message:"installOrigin 'remote' requires a url"}),"github"!==a.sourceType&&"registry"!==a.sourceType||a.ref||b.addIssue({code:"custom",message:`installOrigin '${a.sourceType}' requires a ref`})}),aT=aN.object({name:aN.string().min(1),isSecret:aN.boolean(),secretRef:aN.string().optional(),globalVar:aN.string().optional()}).strict(),aU=aN.object({name:aN.string().min(1),transport:aN.enum(["stdio","sse","streamable","websocket"]),disabled:aN.boolean().optional(),autoApprove:aN.array(aN.string()).optional(),folder:aN.string().optional(),installOrigin:aS,envDeclarations:aN.array(aT),headerDeclarations:aN.array(aT).optional()}).strict(),aV=aN.object({flow:aN.object({id:aN.string().min(1),name:aN.string().min(1),nodes:aN.array(aN.any()),edges:aN.array(aN.any())}).catchall(aN.unknown()),references:aN.object({flowIds:aN.array(aN.string()).optional(),modelIds:aN.array(aN.string()).optional(),mcpServerNames:aN.array(aN.string()).optional()}).optional()}),aW=aN.object({id:aN.string().min(1),name:aN.string().min(1),enabled:aN.boolean(),flowId:aN.string().min(1),prompt:aN.string(),trigger:aN.any()}).catchall(aN.unknown()),aX=aN.object({schemaVersion:aN.literal(1),id:aN.string().min(1),name:aN.string().min(1),description:aN.string().optional(),version:aN.string().regex(/^\d+\.\d+\.\d+(?:-[0-9A-Za-z-.]+)?(?:\+[0-9A-Za-z-.]+)?$/,"version must be valid semver"),author:aN.string().optional(),publisher:aN.string().optional(),tags:aN.array(aN.string()).optional(),requiredGlobals:aN.array(aN.string()).optional(),globals:aN.array(aP).optional(),secrets:aN.array(aO),models:aN.array(aR),mcpServers:aN.array(aU),flows:aN.array(aV),plannedExecutions:aN.array(aW)}).superRefine((a,b)=>{(function a(b){return"string"==typeof b?b.startsWith(aJ):Array.isArray(b)?b.some(a):!!b&&"object"==typeof b&&Object.values(b).some(a)})(a)&&b.addIssue({code:"custom",message:`package contains an '${aJ}' value; secret material must never be serialized`});let c=new Set(a.secrets.map(a=>a.name)),d=new Set(aM(a));for(let b of a.models)"secret"===b.apiKeyRef.kind&&d.add(b.apiKeyRef.secret);for(let b of a.mcpServers)for(let a of[...b.envDeclarations,...b.headerDeclarations??[]])a.secretRef&&d.add(a.secretRef);for(let a of d)c.has(a)||b.addIssue({code:"custom",message:`secret "${a}" is referenced but not declared in secrets[]`});let e=new Set(a.flows.map(a=>a.flow.id));a.plannedExecutions.forEach((a,c)=>{e.has(a.flowId)||b.addIssue({code:"custom",path:["plannedExecutions",c,"flowId"],message:`plannedExecution "${a.name}" references unknown flow id "${a.flowId}"`})}),a.flows.forEach((a,c)=>{for(let d of a.references?.flowIds??[])e.has(d)||b.addIssue({code:"custom",path:["flows",c,"references","flowIds"],message:`flow "${a.flow.name}" references unknown subflow id "${d}"`})})}),aY=(0,aB.h)("frontend/components/Packages/PackageWizard"),aZ=/^\d+\.\d+\.\d+(?:-[0-9A-Za-z-.]+)?(?:\+[0-9A-Za-z-.]+)?$/,a$=["Select contents","Resolve & validate","Secret review","Metadata","Export"];function a_(a){return a.replace(/^SECRET_/,"")}function a0({open:a,onClose:b}){let c=(0,q.A)(),d=(0,r.A)(c.breakpoints.down("sm")),[h,m]=(0,f.useState)(0),[n,o]=(0,f.useState)({flows:[],models:[],mcpServers:[],plannedExecutions:[]}),[p,C]=(0,f.useState)(!0),[D,E]=(0,f.useState)(new Set),[F,G]=(0,f.useState)(new Set),[H,I]=(0,f.useState)(new Set),[J,K]=(0,f.useState)(new Set),[U,V]=(0,f.useState)(""),[W,X]=(0,f.useState)(""),[Y,Z]=(0,f.useState)(""),[$,_]=(0,f.useState)(""),[aa,ab]=(0,f.useState)(null),[ad,ae]=(0,f.useState)([]),[ag,ah]=(0,f.useState)(!1),[ai,aj]=(0,f.useState)(null),[ak,al]=(0,f.useState)(null),[am,an]=(0,f.useState)({}),[ao,ap]=(0,f.useState)(new Set),[aq,ar]=(0,f.useState)([]),[as,at]=(0,f.useState)(!1),[au,az]=(0,f.useState)(!1),[aA,aB]=(0,f.useState)(null),[aD,aE]=(0,f.useState)([]),[aH,aI]=(0,f.useState)(""),[aJ,aN]=(0,f.useState)(""),[aO,aP]=(0,f.useState)(!1),[aQ,aR]=(0,f.useState)(!1),[aS,aT]=(0,f.useState)(""),[aU,aV]=(0,f.useState)(""),[aW,a0]=(0,f.useState)("other"),[a1,a2]=(0,f.useState)(null),[a3,a4]=(0,f.useState)(!1),[a5,a6]=(0,f.useState)(!1),[a7,a8]=(0,f.useState)(null),[a9,ba]=(0,f.useState)([]),[bb,bc]=(0,f.useState)(""),[bd,be]=(0,f.useState)(!1),[bf,bg]=(0,f.useState)(""),[bh,bi]=(0,f.useState)("1.0.0"),[bj,bk]=(0,f.useState)(""),[bl,bm]=(0,f.useState)(""),[bn,bo]=(0,f.useState)(!1),[bp,bq]=(0,f.useState)(null),[br,bs]=(0,f.useState)(null),[bt,bu]=(0,f.useState)(!1),[bv,bw]=(0,f.useState)(null),bx=(0,f.useMemo)(()=>({flowIds:Array.from(D),modelIds:Array.from(F),mcpServerNames:Array.from(H),plannedExecutionIds:Array.from(J)}),[D,F,H,J]),by=0===D.size&&0===F.size&&0===H.size&&0===J.size,bz=a=>b=>{a(a=>{let c=new Set(a);return c.has(b)?c.delete(b):c.add(b),c})},bA=(0,f.useCallback)(async a=>{let b;ae([]);try{b=await a.text()}catch(a){ae([a instanceof Error?a.message:"Failed to read the file"]);return}let c=function(a){let b;try{b=JSON.parse(a)}catch(a){return{ok:!1,errors:[`Not valid JSON: ${a instanceof Error?a.message:String(a)}`]}}let c=function(a){let b=aX.safeParse(a);if(!b.success)return{success:!1,errors:b.error.issues.map(a=>{let b=a.path.join(".");return b?`${b}: ${a.message}`:a.message})};let c=b.data;return{success:!0,data:c,warnings:function(a){let b=new Set(aM(a));for(let c of a.models)"secret"===c.apiKeyRef.kind&&b.add(c.apiKeyRef.secret);for(let c of a.mcpServers)for(let a of[...c.envDeclarations,...c.headerDeclarations??[]])a.secretRef&&b.add(a.secretRef);return a.secrets.filter(a=>!b.has(a.name)).map(a=>`secret "${a.name}" is declared but never referenced`)}(c)}}(b);return c.success&&c.data?{ok:!0,package:c.data}:{ok:!1,errors:c.errors??["Not a valid FLUJO package manifest"]}}(b);if(!c.ok){ab(null),ae(c.errors.slice(0,8));return}let d=function(a,b){let c=new Set(b.flowIds),d=new Set(b.modelIds),e=new Set(b.mcpServerNames),f=new Set(b.plannedExecutionIds),g=[],h={flowIds:[],modelIds:[],mcpServerNames:[],plannedExecutionIds:[]};for(let b of a.flows??[]){let a=b?.flow?.id;a&&(c.has(a)?h.flowIds.push(a):g.push({type:"flow",label:b.flow?.name?`${b.flow.name} (${a})`:a}))}for(let b of a.models??[])b?.id&&(d.has(b.id)?h.modelIds.push(b.id):g.push({type:"model",label:b.displayName||b.name||b.id}));for(let b of a.mcpServers??[])b?.name&&(e.has(b.name)?h.mcpServerNames.push(b.name):g.push({type:"mcpServer",label:b.name}));for(let b of a.plannedExecutions??[]){let a=b?.id;a&&(f.has(a)?h.plannedExecutionIds.push(a):g.push({type:"plannedExecution",label:b.name||a}))}return{selection:h,metadata:{name:a.name??"",version:a.version??"",description:a.description??"",tags:a.tags?[...a.tags]:[]},secretNames:(a.secrets??[]).map(a=>a.name).filter(Boolean),missing:g}}(c.package,{flowIds:n.flows.map(a=>a.id),modelIds:n.models.map(a=>a.id),mcpServerNames:n.mcpServers.map(a=>a.id),plannedExecutionIds:n.plannedExecutions.map(a=>a.id)});E(new Set(d.selection.flowIds)),G(new Set(d.selection.modelIds)),I(new Set(d.selection.mcpServerNames)),K(new Set(d.selection.plannedExecutionIds)),bg(d.metadata.name),bi(d.metadata.version),bk(d.metadata.description),bm(d.metadata.tags.join(", ")),aj(null),al(null),an({}),ap(new Set),ar([]),az(!1),aB(null),aE([]),bq(null),bs(null),bw(null),ab(d),aY.info("Imported package manifest into the wizard",{name:d.metadata.name,version:d.metadata.version,missing:d.missing.length})},[n]),bB=(0,f.useCallback)(async()=>{ah(!0),al(null),aj(null),an({}),ap(new Set),ar([]),az(!1),aB(null),aE([]);try{let a=await aG().resolve(bx);aj(a),an(Object.fromEntries((a.globals??[]).map(a=>[a.name,a.description??""])))}catch(a){al(a instanceof Error?a.message:"Failed to resolve dependencies")}finally{ah(!1)}},[bx]),bC=(0,f.useMemo)(()=>aa?new Set(aa.secretNames):null,[aa]),bD=(0,f.useCallback)(async a=>{at(!0),aB(null);try{let b=await aG().deriveSecrets(bx,{modelIdentifier:a,enableEntropy:aO,enableRepoSlug:aQ});ar(a=>{let c=new Map(a.map(a=>[a.id,a.accepted])),d=new Map(a.map(a=>[a.id,a.suggestedSecretName])),e=a.filter(a=>"manual"===a.source),f=b.proposals.map(a=>({...a,accepted:c.has(a.id)?c.get(a.id):bC?bC.has(a.suggestedSecretName):"low"!==a.confidence,suggestedSecretName:d.get(a.id)??a.suggestedSecretName})),g=new Set(f.map(a=>a.id));return[...f,...e.filter(a=>!g.has(a.id))]}),aE(b.warnings??[])}catch(a){aB(a instanceof Error?a.message:"Failed to derive secrets")}finally{at(!1),az(!0)}},[bx,aO,aQ,bC]),bE=a=>ar(b=>b.map(b=>({...b,accepted:a}))),bF=()=>{a2(null);let a=function(a){let b=(a.excerpt??"").trim();if(!b||b.length>2e3)return null;let c=(a.secretName??"").trim();if(c.length>128)return null;let d=a.kind??"other",e=aK.test(c)?c.toUpperCase():function(a,b){let c=`${a}_${b}`.toUpperCase().replace(/[^A-Z0-9_.-]+/g,"_").replace(/^[_.-]+|[_.-]+$/g,"")||`${a}_SECRET`;return aK.test(c)?c:`${a}_SECRET`}("SECRET",c||b.slice(0,16)),f=(a.location??"manual").trim()||"manual";return{id:`sp_${function(a){let b=5381;for(let c=0;c<a.length;c++)b=(b<<5)+b^a.charCodeAt(c);return(b>>>0).toString(16).padStart(8,"0")}(`${f}\0${b}`)}`,location:f,excerpt:b,kind:d,source:"manual",confidence:"high",suggestedSecretName:e,suggestedDescription:a.description?.trim()||void 0,rationale:"Added manually",accepted:!0}}({excerpt:aS,secretName:aU,kind:aW});if(!a)return void a2("Enter a non-empty value to redact (under 2000 characters).");ar(b=>b.some(b=>b.id===a.id)?b:[a,...b]),aT(""),aV(""),a0("other")},bG=(0,f.useCallback)(async()=>{a4(!0),a8(null),bc(""),a6(!0);try{let a=await aG().scanTargets(bx);ba(a)}catch(a){a8(a instanceof Error?a.message:"Failed to load candidate values"),ba([])}finally{a6(!1)}},[bx]),bH=(0,f.useMemo)(()=>{let a=bb.trim().toLowerCase();return a?a9.filter(b=>`${b.text} ${b.location} ${b.source}`.toLowerCase().includes(a)):a9},[a9,bb]),bI=(0,f.useMemo)(()=>{let a=new Map;for(let b of aq){let c=`${b.kind}::${b.excerpt}`,d=a.get(c);d?(d.ids.push(b.id),d.locations.push(b.location)):a.set(c,{key:c,ids:[b.id],locations:[b.location],kind:b.kind,source:b.source,confidence:b.confidence,excerpt:b.excerpt,suggestedSecretName:b.suggestedSecretName,rationale:b.rationale,accepted:b.accepted})}return Array.from(a.values())},[aq]),bJ=(0,f.useMemo)(()=>{let a=aJ.trim().toLowerCase();return a?bI.filter(b=>`${b.excerpt} ${b.locations.join(" ")} ${b.kind} ${b.suggestedSecretName}`.toLowerCase().includes(a)):bI},[bI,aJ]),bK=(0,f.useMemo)(()=>{if(!aa||!au)return[];let a=new Set([...(ai?.secrets??[]).map(a=>a.name),...aq.map(a=>a.suggestedSecretName)]);return aa.secretNames.filter(b=>!a.has(b))},[aa,au,ai,aq]),bL=(0,f.useMemo)(()=>{let a=new Map;for(let b of bI)a.set(b.kind,(a.get(b.kind)??0)+1);return Array.from(a.entries()).sort((a,b)=>b[1]-a[1])},[bI]),bM=(0,f.useCallback)(async()=>{bo(!0),bs(null),bq(null);try{let a=bl.split(",").map(a=>a.trim()).filter(Boolean),b=await aG().build(bx,{id:`pkg-${Date.now()}`,name:bf.trim(),version:bh.trim(),description:bj.trim()||void 0,tags:a.length?a:void 0},aq.filter(a=>a.accepted),(ai?.globals??[]).map(a=>({...a,description:am[a.name]?.trim()||a.description})),Array.from(ao));bq(b),b.ok||bs(b.errors&&b.errors[0]||"Package build failed")}catch(a){bs(a instanceof Error?a.message:"Failed to build package")}finally{bo(!1)}},[bx,bf,bh,bj,bl,aq,ai,am,ao]),bN=(0,f.useCallback)(async()=>{if(bp?.json){bu(!0),bw(null);try{let a=JSON.parse(bp.json),b=await aC().publish(a);bw(b)}catch(a){bw({ok:!1,code:"error",error:a instanceof Error?a.message:"Failed to publish package"})}finally{bu(!1)}}},[bp]),bO=()=>{if(!bp?.json)return;let a=new Blob([bp.json],{type:"application/json"}),b=URL.createObjectURL(a),c=document.createElement("a");c.href=b;let d=bf.trim().replace(/[^A-Za-z0-9_.-]+/g,"-").replace(/^-+|-+$/g,"")||"package";c.download=`${d}-${bh.trim()}.flujo-package.json`,document.body.appendChild(c),c.click(),c.remove(),URL.revokeObjectURL(b)},bP=async()=>{if(0===h){await bB(),m(1);return}if(3===h){m(4),await bM();return}m(a=>Math.min(a+1,a$.length-1))},bQ=aZ.test(bh.trim()),bR=bf.trim().length>0&&bQ,bS=!!(ai&&!ai.mcp.ok),bT=0===h?by||ag:1===h?ag||!!ak||bS:3===h?!bR:4===h,bU=(a,b,c,d,f,h)=>{let i=f.trim().toLowerCase(),l=i?b.filter(a=>a.label.toLowerCase().includes(i)):b;return(0,e.jsxs)(g.default,{sx:{flex:1,minWidth:240},children:[(0,e.jsxs)(j.default,{variant:"subtitle2",gutterBottom:!0,children:[a," ",c.size>0&&(0,e.jsx)(k.A,{label:c.size,size:"small"})]}),(0,e.jsx)(s.A,{size:"small",fullWidth:!0,placeholder:`Search ${a.toLowerCase()}…`,value:f,onChange:a=>h(a.target.value),InputProps:{startAdornment:(0,e.jsx)(t.A,{position:"start",children:(0,e.jsx)(ax.A,{fontSize:"small"})})},sx:{mb:1}}),0===b.length?(0,e.jsx)(j.default,{variant:"body2",color:"text.secondary",children:"None available"}):0===l.length?(0,e.jsxs)(j.default,{variant:"body2",color:"text.secondary",children:["No matches for “",f,"”."]}):(0,e.jsx)(u.A,{dense:!0,sx:{maxHeight:{xs:240,md:"45vh"},overflow:"auto",border:1,borderColor:"divider",borderRadius:1},children:l.map(a=>(0,e.jsx)(v.Ay,{disablePadding:!0,children:(0,e.jsxs)(w.A,{onClick:()=>d(a.id),dense:!0,children:[(0,e.jsx)(x.A,{sx:{minWidth:36},children:(0,e.jsx)(y.A,{edge:"start",checked:c.has(a.id),tabIndex:-1,disableRipple:!0})}),(0,e.jsx)(z.A,{primary:a.label})]})},a.id))})]})};return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)(R.A,{open:a,onClose:b,maxWidth:"lg",fullWidth:!0,fullScreen:d,PaperProps:{sx:{height:d?"100%":"90vh",maxHeight:d?"100%":"90vh"}},children:[(0,e.jsx)(S.A,{children:"Create package"}),(0,e.jsxs)(T.A,{dividers:!0,sx:{overflow:"auto"},children:[(0,e.jsx)(ac,{activeStep:h,sx:{mb:3},children:a$.map(a=>(0,e.jsx)(af,{children:(0,e.jsx)(av,{children:a})},a))}),(()=>{switch(h){case 0:return p?(0,e.jsx)(g.default,{sx:{display:"flex",justifyContent:"center",p:4},children:(0,e.jsx)(A.default,{})}):(0,e.jsxs)(i.A,{spacing:2,children:[(0,e.jsx)(j.default,{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,e.jsxs)(i.A,{direction:"row",spacing:1,alignItems:"center",flexWrap:"wrap",useFlexGap:!0,children:[(0,e.jsxs)(l.A,{component:"label",variant:"outlined",startIcon:(0,e.jsx)(ay,{}),children:["Import manifest (.json)",(0,e.jsx)("input",{type:"file",accept:"application/json,.json",hidden:!0,onChange:a=>{let b=a.target.files?.[0];a.target.value="",b&&bA(b)}})]}),(0,e.jsx)(j.default,{variant:"caption",color:"text.secondary",children:"Restores the selection, metadata and accepted secrets from a package you exported earlier."})]}),ad.length>0&&(0,e.jsxs)(B.A,{severity:"error",onClose:()=>ae([]),children:[(0,e.jsx)(L,{children:"Could not import that file"}),ad.map((a,b)=>(0,e.jsx)("div",{children:a},b))]}),aa&&(0,e.jsxs)(B.A,{severity:aa.missing.length>0?"warning":"success",children:[(0,e.jsxs)(L,{children:["Imported “",aa.metadata.name,"” v",aa.metadata.version]}),"Restored ",aa.selection.flowIds.length," flow(s),"," ",aa.selection.modelIds.length," model(s),"," ",aa.selection.mcpServerNames.length," MCP server(s),"," ",aa.selection.plannedExecutionIds.length," planned execution(s) and"," ",aa.secretNames.length," secret name(s).",aa.missing.length>0&&(0,e.jsxs)(g.default,{sx:{mt:1},children:["No longer on this host (left unselected):",aa.missing.map((a,b)=>(0,e.jsxs)("div",{children:[a.type,": ",a.label]},b))]})]}),(0,e.jsxs)(i.A,{direction:"row",spacing:2,flexWrap:"wrap",useFlexGap:!0,children:[bU("Flows",n.flows,D,bz(E),U,V),bU("Models",n.models,F,bz(G),W,X),bU("MCP servers",n.mcpServers,H,bz(I),Y,Z),bU("Planned executions",n.plannedExecutions,J,bz(K),$,_)]})]});case 1:if(ag)return(0,e.jsx)(g.default,{sx:{display:"flex",justifyContent:"center",p:4},children:(0,e.jsx)(A.default,{})});if(ak)return(0,e.jsx)(B.A,{severity:"error",children:ak});if(!ai)return null;return(0,e.jsxs)(i.A,{spacing:2,children:[bS&&(0,e.jsxs)(B.A,{severity:"error",children:[(0,e.jsx)(L,{children:"Local MCP server(s) cannot be packaged"}),ai.mcp.errors.map((a,b)=>(0,e.jsx)("div",{children:a},b))]}),ai.resolved.autoAdded.length>0&&(0,e.jsxs)(B.A,{severity:"info",children:[(0,e.jsx)(L,{children:"Automatically included dependencies"}),ai.resolved.autoAdded.map((a,b)=>(0,e.jsxs)("div",{children:[a.type,": ",(0,e.jsx)("code",{children:a.id})," — ",a.reason]},b))]}),ai.resolved.warnings.length>0&&(0,e.jsxs)(B.A,{severity:"warning",children:[(0,e.jsx)(L,{children:"Warnings"}),ai.resolved.warnings.map((a,b)=>(0,e.jsx)("div",{children:a},b))]}),(0,e.jsx)(M.A,{}),(0,e.jsxs)(j.default,{variant:"body2",children:["Resolved: ",ai.resolved.flowIds.length," flow(s),"," ",ai.resolved.modelIds.length," model(s),"," ",ai.resolved.mcpServerNames.length," MCP server(s),"," ",ai.resolved.plannedExecutionIds.length," planned execution(s)."]}),ai.mcp.servers.length>0&&(0,e.jsx)(i.A,{direction:"row",spacing:1,flexWrap:"wrap",useFlexGap:!0,children:ai.mcp.servers.map(a=>(0,e.jsx)(k.A,{label:`${a.name} \xb7 ${a.sourceType}`,size:"small",color:"success",variant:"outlined"},a.name))})]});case 2:return(0,e.jsxs)(i.A,{spacing:2,children:[(0,e.jsx)(j.default,{variant:"subtitle2",children:"Global variables"}),(0,e.jsx)(j.default,{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."}),ai&&0!==(ai.globals??[]).length?(0,e.jsx)(i.A,{spacing:1.5,children:ai.globals.map(a=>(0,e.jsx)(s.A,{size:"small",label:a.name,value:am[a.name]??"",onChange:b=>an(c=>({...c,[a.name]:b.target.value})),helperText:"Description shown during package installation",fullWidth:!0},a.name))}):(0,e.jsx)(B.A,{severity:"success",children:"No global variables referenced by this package."}),(0,e.jsx)(M.A,{}),(0,e.jsx)(j.default,{variant:"subtitle2",children:"Declared secrets (entity keys)"}),(0,e.jsx)(j.default,{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."}),ai&&0!==ai.secrets.length?(0,e.jsx)(u.A,{dense:!0,children:ai.secrets.map(a=>(0,e.jsxs)(v.Ay,{children:[(0,e.jsx)(y.A,{edge:"start",checked:!ao.has(a.name),onChange:b=>ap(c=>{let d=new Set(c);return b.target.checked?d.delete(a.name):d.add(a.name),d}),inputProps:{"aria-label":`Include ${a.name} in package secrets`}}),(0,e.jsx)(z.A,{primary:(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("code",{children:a_(a.name)})," ",a.required&&(0,e.jsx)(k.A,{label:"required",size:"small",color:"warning"})]}),secondary:ao.has(a.name)?"Excluded — the package will not request this value":a.description})]},a.name))}):(0,e.jsx)(B.A,{severity:"success",children:"No entity secrets to declare."}),(0,e.jsx)(M.A,{}),(0,e.jsx)(j.default,{variant:"subtitle2",children:"Detected secrets in content"}),(0,e.jsxs)(j.default,{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,e.jsx)("code",{children:"{{secret.NAME}}"})," placeholder everywhere they occur."]}),as&&(0,e.jsx)(g.default,{sx:{display:"flex",justifyContent:"center",p:2},children:(0,e.jsx)(A.default,{size:28})}),aA&&(0,e.jsx)(B.A,{severity:"error",children:aA}),!as&&au&&0===aq.length&&(0,e.jsx)(B.A,{severity:"success",children:"No likely secrets detected in the packaged content."}),aq.length>0&&(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(i.A,{direction:"row",spacing:.5,flexWrap:"wrap",useFlexGap:!0,children:bL.map(([a,b])=>(0,e.jsx)(k.A,{size:"small",variant:"outlined",label:`${a}: ${b}`},a))}),(0,e.jsxs)(i.A,{direction:"row",spacing:1,alignItems:"center",flexWrap:"wrap",useFlexGap:!0,children:[(0,e.jsx)(l.A,{size:"small",onClick:()=>bE(!0),children:"Accept all"}),(0,e.jsx)(l.A,{size:"small",onClick:()=>bE(!1),children:"Reject all"}),(0,e.jsx)(s.A,{size:"small",placeholder:"Filter detected secrets…",value:aJ,onChange:a=>aN(a.target.value),sx:{minWidth:200,flex:1}}),(0,e.jsxs)(j.default,{variant:"caption",color:"text.secondary",sx:{alignSelf:"center"},children:[bI.filter(a=>a.accepted).length," of ",bI.length," accepted"]})]}),(0,e.jsxs)(u.A,{dense:!0,sx:{border:1,borderColor:"divider",borderRadius:1,maxHeight:280,overflow:"auto"},children:[0===bJ.length&&(0,e.jsx)(v.Ay,{children:(0,e.jsx)(z.A,{primary:(0,e.jsxs)(j.default,{variant:"body2",color:"text.secondary",children:["No rows match “",aJ,"”."]})})}),bJ.map(a=>(0,e.jsxs)(v.Ay,{alignItems:"flex-start",divider:!0,children:[(0,e.jsx)(x.A,{sx:{minWidth:36,mt:1},children:(0,e.jsx)(y.A,{edge:"start",checked:!!a.accepted,onChange:()=>{let b;return b=a.ids,ar(a=>{let c=new Set(b),d=!a.find(a=>c.has(a.id))?.accepted;return a.map(a=>c.has(a.id)?{...a,accepted:d}:a)})},tabIndex:-1,disableRipple:!0})}),(0,e.jsx)(z.A,{primary:(0,e.jsxs)(i.A,{direction:"row",spacing:1,alignItems:"center",flexWrap:"wrap",useFlexGap:!0,children:[(0,e.jsx)(k.A,{label:a.kind,size:"small"}),(0,e.jsx)(k.A,{label:a.source,size:"small",variant:"outlined",color:"model"===a.source?"secondary":"manual"===a.source?"primary":"default"}),a.confidence&&(0,e.jsx)(k.A,{label:a.confidence,size:"small",variant:"outlined",color:"high"===a.confidence?"success":"low"===a.confidence?"warning":"default"}),a.locations.length>1&&(0,e.jsx)(k.A,{label:`${a.locations.length}\xd7`,size:"small",variant:"outlined"}),(0,e.jsx)(g.default,{component:"code",sx:{wordBreak:"break-all"},children:a.excerpt.length>80?`${a.excerpt.slice(0,80)}…`:a.excerpt})]}),secondary:(0,e.jsxs)(i.A,{spacing:.5,sx:{mt:.5},children:[(0,e.jsxs)(j.default,{variant:"caption",color:"text.secondary",children:[a.locations.length>1?`${a.locations.length} locations: ${a.locations.slice(0,3).join(", ")}${a.locations.length>3?", …":""}`:a.locations[0],a.rationale?` — ${a.rationale}`:""]}),(0,e.jsx)(s.A,{size:"small",label:"Secret name",value:a_(a.suggestedSecretName),onChange:b=>{var c,d;let e,f;return e=a.ids,c=a.suggestedSecretName,d=b.target.value,f=c.startsWith("SECRET_")?`SECRET_${d.replace(/^SECRET_/,"")}`:d,ar(a=>{let b=new Set(e);return a.map(a=>b.has(a.id)?{...a,suggestedSecretName:f}:a)})},disabled:!a.accepted,sx:{maxWidth:320}})]}),primaryTypographyProps:{component:"div"},secondaryTypographyProps:{component:"div"}})]},a.key))]})]}),bK.length>0&&(0,e.jsxs)(B.A,{severity:"warning",children:[(0,e.jsx)(L,{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: ",bK.map(a_).join(", "),"."]}),aD.length>0&&(0,e.jsxs)(B.A,{severity:"warning",children:[(0,e.jsx)(L,{children:"Notes"}),aD.map((a,b)=>(0,e.jsx)("div",{children:a},b))]}),(0,e.jsx)(M.A,{}),(0,e.jsx)(j.default,{variant:"subtitle2",children:"Add a secret manually"}),(0,e.jsxs)(j.default,{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,e.jsx)("code",{children:"{{secret.NAME}}"})," placeholder — it is never executed."]}),a1&&(0,e.jsx)(B.A,{severity:"error",children:a1}),(0,e.jsxs)(i.A,{direction:"row",spacing:1,alignItems:"flex-start",flexWrap:"wrap",useFlexGap:!0,children:[(0,e.jsx)(s.A,{size:"small",label:"Value to redact",value:aS,onChange:a=>aT(a.target.value),sx:{minWidth:240,flex:1}}),(0,e.jsx)(s.A,{size:"small",label:"Secret name",value:aU,onChange:a=>aV(a.target.value),sx:{minWidth:180}}),(0,e.jsx)(N.A,{size:"small",value:aW,onChange:a=>a0(a.target.value),sx:{minWidth:120},children:aL.map(a=>(0,e.jsx)(O.A,{value:a,children:a},a))}),(0,e.jsx)(l.A,{variant:"outlined",onClick:bF,disabled:!aS.trim(),children:"Add"}),(0,e.jsx)(l.A,{variant:"text",startIcon:(0,e.jsx)(ax.A,{}),onClick:()=>void bG(),disabled:by,children:"Pick from app"})]}),(0,e.jsx)(M.A,{}),(0,e.jsx)(j.default,{variant:"subtitle2",children:"Advanced scan options"}),(0,e.jsxs)(i.A,{direction:"row",spacing:2,flexWrap:"wrap",useFlexGap:!0,children:[(0,e.jsx)(P.A,{control:(0,e.jsx)(Q.A,{checked:aO,onChange:a=>{aP(a.target.checked),az(!1)}}),label:"Aggressive entropy scan"}),(0,e.jsx)(P.A,{control:(0,e.jsx)(Q.A,{checked:aQ,onChange:a=>{aR(a.target.checked),az(!1)}}),label:"Detect bare owner/repo slugs"}),(0,e.jsx)(l.A,{size:"small",variant:"text",onClick:()=>void bD(),disabled:as,children:"Re-scan"})]}),(0,e.jsx)(M.A,{}),(0,e.jsx)(j.default,{variant:"subtitle2",children:"Optional: model-driven scan"}),(0,e.jsx)(B.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,e.jsxs)(i.A,{direction:"row",spacing:1,alignItems:"center",flexWrap:"wrap",useFlexGap:!0,children:[(0,e.jsxs)(N.A,{size:"small",displayEmpty:!0,value:aH,onChange:a=>aI(a.target.value),sx:{minWidth:220},children:[(0,e.jsx)(O.A,{value:"",children:(0,e.jsx)("em",{children:"Select a model…"})}),n.models.map(a=>(0,e.jsx)(O.A,{value:a.id,children:a.label},a.id))]}),(0,e.jsx)(l.A,{variant:"outlined",disabled:!aH||as,onClick:()=>void bD(aH),children:"Scan with model"})]})]});case 3:return(0,e.jsxs)(i.A,{spacing:2,children:[(0,e.jsx)(s.A,{label:"Package name",value:bf,onChange:a=>bg(a.target.value),required:!0,fullWidth:!0,error:bf.length>0&&0===bf.trim().length}),(0,e.jsx)(s.A,{label:"Version",value:bh,onChange:a=>bi(a.target.value),required:!0,fullWidth:!0,error:bh.length>0&&!bQ,helperText:bh.length>0&&!bQ?"Must be a semantic version (e.g. 1.0.0)":" "}),(0,e.jsx)(s.A,{label:"Description",value:bj,onChange:a=>bk(a.target.value),fullWidth:!0,multiline:!0,minRows:2}),(0,e.jsx)(s.A,{label:"Tags (comma-separated)",value:bl,onChange:a=>bm(a.target.value),fullWidth:!0})]});case 4:if(bn)return(0,e.jsx)(g.default,{sx:{display:"flex",justifyContent:"center",p:4},children:(0,e.jsx)(A.default,{})});if(br)return(0,e.jsx)(B.A,{severity:"error",children:br});if(bp?.ok)return(0,e.jsxs)(i.A,{spacing:2,children:[(0,e.jsxs)(B.A,{severity:"success",children:[(0,e.jsx)(L,{children:"Package built"}),(0,e.jsx)("code",{children:bf.trim()})," v",bh.trim()," is ready to export."]}),bp.warnings.length>0&&(0,e.jsxs)(B.A,{severity:"warning",children:[(0,e.jsx)(L,{children:"Warnings"}),bp.warnings.map((a,b)=>(0,e.jsx)("div",{children:a},b))]}),(0,e.jsx)(l.A,{variant:"contained",onClick:bO,children:"Download package manifest (.json)"}),(0,e.jsx)(M.A,{}),(0,e.jsx)(j.default,{variant:"subtitle2",children:"Publish to the FLUJO package registry"}),(0,e.jsx)(j.default,{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."}),bv?.ok?(0,e.jsxs)(B.A,{severity:"success",children:[(0,e.jsx)(L,{children:"Published"}),bv.name||bf.trim()," v",bv.version||bh.trim()," is live.",bv.url&&(0,e.jsx)("div",{children:(0,e.jsx)("a",{href:bv.url,target:"_blank",rel:"noreferrer",children:bv.url})})]}):(0,e.jsxs)(e.Fragment,{children:[bv&&!bv.ok&&(0,e.jsx)(B.A,{severity:"unconfirmed"===bv.code||"not_authenticated"===bv.code?"warning":"error",children:bv.error||"Failed to publish package."}),(0,e.jsxs)(i.A,{direction:"row",spacing:1,flexWrap:"wrap",useFlexGap:!0,children:[(0,e.jsx)(l.A,{variant:"outlined",onClick:()=>void bN(),disabled:bt,children:bt?"Publishing…":"Publish to registry"}),bv&&!bv.ok&&("not_authenticated"===bv.code||"unconfirmed"===bv.code)&&(0,e.jsx)(l.A,{variant:"contained",onClick:()=>be(!0),disabled:bt,children:"Log in to registry"})]})]})]});return null;default:return null}})()]}),(0,e.jsxs)(aw.A,{children:[(0,e.jsx)(l.A,{onClick:b,children:bp?.ok?"Close":"Cancel"}),(0,e.jsx)(g.default,{sx:{flex:1}}),(0,e.jsx)(l.A,{onClick:()=>m(a=>Math.max(a-1,0)),disabled:0===h||bn||ag,children:"Back"}),h<4&&(0,e.jsx)(l.A,{variant:"contained",onClick:bP,disabled:bT,children:3===h?"Build":"Next"})]})]}),(0,e.jsxs)(R.A,{open:bd,onClose:()=>be(!1),maxWidth:"sm",fullWidth:!0,children:[(0,e.jsx)(S.A,{children:"Log in to the package registry"}),(0,e.jsx)(T.A,{dividers:!0,children:(0,e.jsx)(aF,{})}),(0,e.jsxs)(aw.A,{children:[(0,e.jsx)(l.A,{onClick:()=>be(!1),children:"Done"}),(0,e.jsx)(l.A,{variant:"contained",onClick:()=>{be(!1),bN()},disabled:bt,children:"Retry publish"})]})]}),(0,e.jsxs)(R.A,{open:a3,onClose:()=>a4(!1),maxWidth:"md",fullWidth:!0,children:[(0,e.jsx)(S.A,{children:"Pick a value to redact"}),(0,e.jsxs)(T.A,{dividers:!0,children:[(0,e.jsx)(j.default,{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,e.jsx)(s.A,{size:"small",fullWidth:!0,placeholder:"Search values…",value:bb,onChange:a=>bc(a.target.value),InputProps:{startAdornment:(0,e.jsx)(t.A,{position:"start",children:(0,e.jsx)(ax.A,{fontSize:"small"})})},sx:{mb:2}}),a5?(0,e.jsx)(g.default,{sx:{display:"flex",justifyContent:"center",p:4},children:(0,e.jsx)(A.default,{})}):a7?(0,e.jsx)(B.A,{severity:"error",children:a7}):0===a9.length?(0,e.jsx)(B.A,{severity:"info",children:"No pickable plaintext values found in the packaged content."}):0===bH.length?(0,e.jsxs)(j.default,{variant:"body2",color:"text.secondary",children:["No values match “",bb,"”."]}):(0,e.jsx)(u.A,{dense:!0,sx:{border:1,borderColor:"divider",borderRadius:1,maxHeight:"50vh",overflow:"auto"},children:bH.map((a,b)=>(0,e.jsx)(v.Ay,{disablePadding:!0,divider:!0,children:(0,e.jsx)(w.A,{onClick:()=>{aT(a.text),a2(null),a4(!1)},alignItems:"flex-start",children:(0,e.jsx)(z.A,{primary:(0,e.jsx)(g.default,{component:"code",sx:{wordBreak:"break-all"},children:a.text.length>120?`${a.text.slice(0,120)}…`:a.text}),secondary:(0,e.jsxs)(i.A,{direction:"row",spacing:1,alignItems:"center",flexWrap:"wrap",useFlexGap:!0,sx:{mt:.5},children:[(0,e.jsx)(k.A,{label:a.source,size:"small",variant:"outlined"}),(0,e.jsx)(j.default,{variant:"caption",color:"text.secondary",children:a.location})]}),primaryTypographyProps:{component:"div"},secondaryTypographyProps:{component:"div"}})})},`${a.location}-${b}`))})]}),(0,e.jsx)(aw.A,{children:(0,e.jsx)(l.A,{onClick:()=>a4(!1),children:"Close"})})]})]})}var a1=c(7503),a2=c(14570),a3=c(53222);let a4=(0,aB.h)("frontend/components/Packages/InstalledPackagesList");function a5(){let[a,b]=(0,f.useState)([]),[c,d]=(0,f.useState)(!0),[h,n]=(0,f.useState)(null),[o,p]=(0,f.useState)(null),[q,r]=(0,f.useState)(!1),[u,v]=(0,f.useState)(null),[w,x]=(0,f.useState)(""),y=(0,f.useCallback)(async()=>{d(!0),n(null);try{let a=await fetch("/api/packages/installed");if(!a.ok)throw Error(`Failed to load installed packages (${a.status})`);let c=await a.json();b(c.packages??[])}catch(a){a4.warn("Failed to load installed packages",a),n(a instanceof Error?a.message:String(a))}finally{d(!1)}},[]),z=(0,f.useCallback)(async a=>{r(!0),v(null);try{let b=await fetch("/api/packages/uninstall",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({packageName:a.packageName})}),c=await b.json();if(!b.ok)throw Error(c.error??`Uninstall failed (${b.status})`);v(c),await y()}catch(a){a4.warn("Uninstall failed",a),n(a instanceof Error?a.message:String(a))}finally{r(!1),p(null)}},[y]),C=(0,f.useMemo)(()=>{let b=w.trim().toLowerCase();return b?a.filter(a=>`${a.packageName} ${a.version}`.toLowerCase().includes(b)):a},[a,w]);return(0,e.jsxs)(g.default,{sx:{maxWidth:{xs:"100%",md:1100},mx:"auto",mt:3},children:[(0,e.jsxs)(i.A,{direction:"row",spacing:1,alignItems:"center",sx:{mb:1},children:[(0,e.jsx)(j.default,{variant:"h6",children:"Installed packages"}),(0,e.jsx)(l.A,{size:"small",startIcon:(0,e.jsx)(a3.A,{}),onClick:()=>void y(),disabled:c,children:"Refresh"})]}),a.length>0&&(0,e.jsx)(s.A,{size:"small",fullWidth:!0,placeholder:"Search installed packages…",value:w,onChange:a=>x(a.target.value),InputProps:{startAdornment:(0,e.jsx)(t.A,{position:"start",children:(0,e.jsx)(ax.A,{fontSize:"small"})})},sx:{mb:2}}),h&&(0,e.jsx)(B.A,{severity:"error",sx:{mb:2},onClose:()=>n(null),children:h}),u&&(0,e.jsxs)(B.A,{severity:u.hasErrors?"warning":"success",sx:{mb:2},onClose:()=>v(null),children:['Uninstalled "',u.packageName,'": ',u.removed.length," removed,"," ",u.skipped.length," preserved/skipped",u.hasErrors?`, ${u.errors.length} error(s)`:"","."]}),c?(0,e.jsx)(g.default,{sx:{display:"flex",justifyContent:"center",p:3},children:(0,e.jsx)(A.default,{size:24})}):0===a.length?(0,e.jsx)(j.default,{variant:"body2",color:"text.secondary",children:"No packages installed yet."}):0===C.length?(0,e.jsxs)(j.default,{variant:"body2",color:"text.secondary",children:["No packages match “",w,"”."]}):(0,e.jsx)(i.A,{spacing:1,children:C.map(a=>(0,e.jsxs)(m.A,{variant:"outlined",sx:{p:2,display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,e.jsxs)(g.default,{children:[(0,e.jsxs)(i.A,{direction:"row",spacing:1,alignItems:"center",children:[(0,e.jsx)(j.default,{variant:"subtitle1",children:a.packageName}),(0,e.jsx)(k.A,{label:`v${a.version}`,size:"small",variant:"outlined"})]}),(0,e.jsxs)(j.default,{variant:"caption",color:"text.secondary",children:[a.entityCounts.flows," flows \xb7 ",a.entityCounts.models," models \xb7"," ",a.entityCounts.servers," servers \xb7 ",a.entityCounts.plannedExecutions," planned \xb7 installed ",new Date(a.installedAt).toLocaleString()]})]}),(0,e.jsx)(l.A,{color:"error",size:"small",startIcon:(0,e.jsx)(a2.A,{}),onClick:()=>p(a),disabled:q,children:"Uninstall"})]},a.packageName))}),(0,e.jsxs)(R.A,{open:null!==o,onClose:()=>q?void 0:p(null),children:[(0,e.jsxs)(S.A,{children:['Uninstall "',o?.packageName,'"?']}),(0,e.jsx)(T.A,{children:(0,e.jsxs)(a1.A,{children:["This removes the flows, models, MCP servers and planned executions this package",(0,e.jsx)("strong",{children:" created"}),". Pre-existing entities the package merely updated in place are preserved. This cannot be undone."]})}),(0,e.jsxs)(aw.A,{children:[(0,e.jsx)(l.A,{onClick:()=>p(null),disabled:q,children:"Cancel"}),(0,e.jsx)(l.A,{color:"error",variant:"contained",onClick:()=>o&&void z(o),disabled:q,startIcon:q?(0,e.jsx)(A.default,{size:16}):(0,e.jsx)(a2.A,{}),children:"Uninstall"})]})]})]})}var a6=c(82666),a7=c(30818),a8=c(423),a9=c(27114),ba=c(98463),bb=c(44079);let bc=(0,o.A)((0,e.jsx)("path",{d:"M12 7c-.55 0-1 .45-1 1v3H8c-.55 0-1 .45-1 1s.45 1 1 1h3v3c0 .55.45 1 1 1s1-.45 1-1v-3h3c.55 0 1-.45 1-1s-.45-1-1-1h-3V8c0-.55-.45-1-1-1m0-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8"}),"AddCircleOutlineRounded"),bd=(0,o.A)((0,e.jsx)("path",{d:"M5 13h11.17l-4.88 4.88c-.39.39-.39 1.03 0 1.42s1.02.39 1.41 0l6.59-6.59c.39-.39.39-1.02 0-1.41l-6.58-6.6a.996.996 0 0 0-1.41 0c-.39.39-.39 1.02 0 1.41L16.17 11H5c-.55 0-1 .45-1 1s.45 1 1 1"}),"ArrowForwardRounded"),be=(0,o.A)((0,e.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2M9.29 16.29 5.7 12.7a.996.996 0 0 1 0-1.41c.39-.39 1.02-.39 1.41 0L10 14.17l6.88-6.88c.39-.39 1.02-.39 1.41 0s.39 1.02 0 1.41l-7.59 7.59c-.38.39-1.02.39-1.41 0"}),"CheckCircleRounded"),bf=(0,o.A)((0,e.jsx)("path",{d:"M20 9V7c0-1.1-.9-2-2-2h-3c0-1.66-1.34-3-3-3S9 3.34 9 5H6c-1.1 0-2 .9-2 2v2c-1.66 0-3 1.34-3 3s1.34 3 3 3v4c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2v-4c1.66 0 3-1.34 3-3s-1.34-3-3-3m-2 10H6V7h12zm-9-6c-.83 0-1.5-.67-1.5-1.5S8.17 10 9 10s1.5.67 1.5 1.5S9.83 13 9 13m7.5-1.5c0 .83-.67 1.5-1.5 1.5s-1.5-.67-1.5-1.5.67-1.5 1.5-1.5 1.5.67 1.5 1.5M8 15h8v2H8z"}),"SmartToyOutlined"),bg=(0,o.A)((0,e.jsx)("path",{d:"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96M19 18H6c-2.21 0-4-1.79-4-4 0-2.05 1.53-3.76 3.56-3.97l1.07-.11.5-.95C8.08 7.14 9.94 6 12 6c2.62 0 4.88 1.86 5.39 4.43l.3 1.5 1.53.11c1.56.1 2.78 1.41 2.78 2.96 0 1.65-1.35 3-3 3m-5.55-8h-2.9v3H8l4 4 4-4h-2.55z"}),"CloudDownloadOutlined");var bh=c(33253),bi=c(22813),bj=c(92812);let bk=(0,aB.h)("frontend/components/Packages/InstallPackageCard");function bl({onInstalled:a}){let[b,c]=(0,f.useState)(""),[d,h]=(0,f.useState)([]),[m,n]=(0,f.useState)(!1),[o,p]=(0,f.useState)(null),[q,r]=(0,f.useState)(!1),[u,v]=(0,f.useState)(null),[w,x]=(0,f.useState)(null),[y,z]=(0,f.useState)(!1),[C,D]=(0,f.useState)(null),[E,F]=(0,f.useState)(null),[G,H]=(0,f.useState)(!1),[I,J]=(0,f.useState)(null),[K,L]=(0,f.useState)(null),[N,O]=(0,f.useState)({}),[P,Q]=(0,f.useState)({}),[U,V]=(0,f.useState)(null),[W,X]=(0,f.useState)(!1),[Y,Z]=(0,f.useState)(0),[$,_]=(0,f.useState)(null),[aa,ab]=(0,f.useState)({}),ad=(0,f.useCallback)(async a=>{n(!0),p(null);try{let b=await aH.searchRegistry({q:a.trim()||void 0,pageSize:24});h(b.items??[]),r(!0)}catch(a){bk.warn("Failed to search package registry",a),p(a instanceof Error?a.message:String(a)),h([])}finally{n(!1)}},[]),ae=(0,f.useCallback)(async()=>{if(w){z(!0),D(null);try{let a=await aD.deletePackage(w.id);if(!a.ok)return void D(a.error||"Failed to delete package.");h(a=>a.filter(a=>a.id!==w.id)),x(null),await ad(b)}catch(a){bk.warn("Package deletion failed",a),D(a instanceof Error?a.message:String(a))}finally{z(!1)}}},[w,b,ad]),ag=(0,f.useCallback)(async a=>{F(a),L(null),_(null),O({}),Q({}),V(null),X(!1),Z(0),ab({}),J(null),H(!0);try{let b=await aH.installFromRegistry({packageId:a.id,version:a.latestVersion,consentGranted:!1});if(!b.ok)return void J(b.errors?.[0]||"Failed to fetch package preview.");L(b);let c=b.preview?.models[0];V(c?.id??null),Z(+!c)}catch(a){bk.warn("Failed to fetch package preview",a),J(a instanceof Error?a.message:String(a))}finally{H(!1)}},[]),ah=(0,f.useCallback)(async()=>{if(E&&K){H(!0),J(null);try{let b=await aH.installFromRegistry({packageId:E.id,version:E.latestVersion,secrets:N,modelMappings:Object.fromEntries(Object.entries(P).filter(([,a])=>""!==a)),consentGranted:!0});_(b),L(null),b.ok&&a?.()}catch(a){bk.warn("Install failed",a),J(a instanceof Error?a.message:String(a))}finally{H(!1)}}},[E,K,N,P,a]),ai=(0,f.useCallback)(()=>{F(null),L(null),_(null),O({}),Q({}),V(null),X(!1),Z(0),ab({}),J(null)},[]),aj=K?.preview,ak=aj?.models.find(a=>a.id===U)??aj?.models[0],al=aj?.models.filter(a=>Object.prototype.hasOwnProperty.call(P,a.id)).length??0,am=aj?.models.every(a=>Object.prototype.hasOwnProperty.call(P,a.id))??!0,an=(0,f.useCallback)(a=>{V(a),X(!!P[a])},[P]),ao=(0,f.useCallback)(a=>{Q(b=>({...b,[a]:""})),X(!1)},[]),ap=(0,f.useCallback)((a,b)=>{Q(c=>({...c,[a]:b}))},[]);return(0,e.jsxs)(g.default,{sx:{maxWidth:{xs:"100%",md:1100},mx:"auto",mt:3},children:[(0,e.jsxs)(i.A,{direction:"row",spacing:1,alignItems:"center",sx:{mb:1},children:[(0,e.jsx)(bg,{color:"action"}),(0,e.jsx)(j.default,{variant:"h6",children:"Browse registry"})]}),(0,e.jsx)(s.A,{size:"small",fullWidth:!0,placeholder:"Search published packages…",value:b,onChange:a=>c(a.target.value),onKeyDown:a=>{"Enter"===a.key&&ad(b)},InputProps:{startAdornment:(0,e.jsx)(t.A,{position:"start",children:(0,e.jsx)(ax.A,{fontSize:"small"})}),endAdornment:m?(0,e.jsx)(t.A,{position:"end",children:(0,e.jsx)(A.default,{size:16})}):void 0},sx:{mb:2}}),o&&(0,e.jsx)(B.A,{severity:"error",sx:{mb:2},onClose:()=>p(null),children:o}),q&&!m&&0===d.length&&!o&&(0,e.jsxs)(j.default,{variant:"body2",color:"text.secondary",children:["No packages match “",b,"”."]}),(0,e.jsx)(a6.Ay,{container:!0,spacing:2,children:d.map(a=>(0,e.jsx)(a6.Ay,{item:!0,xs:12,sm:6,md:4,children:(0,e.jsxs)(a7.A,{variant:"outlined",sx:{height:"100%",display:"flex",flexDirection:"column"},children:[(0,e.jsx)(a8.A,{onClick:()=>void ag(a),sx:{flex:1},children:(0,e.jsxs)(a9.A,{children:[(0,e.jsxs)(i.A,{direction:"row",spacing:1,alignItems:"baseline",justifyContent:"space-between",children:[(0,e.jsx)(j.default,{variant:"subtitle1",noWrap:!0,children:a.name}),(0,e.jsx)(k.A,{size:"small",variant:"outlined",label:`v${a.latestVersion}`})]}),(0,e.jsx)(j.default,{variant:"caption",color:"text.secondary",display:"block",children:a.handle}),(0,e.jsx)(j.default,{variant:"body2",color:"text.secondary",sx:{mt:.5,minHeight:"2.5em"},children:a.description||"No description provided."}),(0,e.jsx)(i.A,{direction:"row",spacing:.5,sx:{mt:1,flexWrap:"wrap",gap:.5},children:a.tags.map(a=>(0,e.jsx)(k.A,{size:"small",label:a},a))}),(0,e.jsxs)(i.A,{direction:"row",spacing:.5,alignItems:"center",sx:{mt:1},children:[(0,e.jsx)(bh.A,{fontSize:"inherit",color:"disabled"}),(0,e.jsx)(j.default,{variant:"caption",color:"text.secondary",children:a.downloads})]})]})}),function(a,b){let c=b?.trim().replace(/^@/,"").toLocaleLowerCase();if(!c)return!1;let d=a.handle?.trim().replace(/^@/,"");if(d)return d.split("/")[0].toLocaleLowerCase()===c;let e=a.id.trim().replace(/^@/,"");return e.includes("/")&&e.split("/")[0].toLocaleLowerCase()===c}(a,u)&&(0,e.jsx)(ba.A,{sx:{justifyContent:"flex-end",pt:0},children:(0,e.jsx)(bb.A,{size:"small",color:"error","aria-label":`Delete ${a.name}`,onClick:()=>{D(null),x(a)},children:(0,e.jsx)(a2.A,{fontSize:"small"})})})]})},a.id))}),(0,e.jsxs)(R.A,{open:null!==w,onClose:y?void 0:()=>x(null),maxWidth:"xs",fullWidth:!0,children:[(0,e.jsx)(S.A,{children:"Delete package?"}),(0,e.jsxs)(T.A,{children:[C&&(0,e.jsx)(B.A,{severity:"error",sx:{mb:2},children:C}),(0,e.jsxs)(j.default,{variant:"body2",children:["This permanently deletes ",(0,e.jsx)("strong",{children:w?.name})," and all of its published versions from the registry. This action cannot be undone."]})]}),(0,e.jsxs)(aw.A,{children:[(0,e.jsx)(l.A,{onClick:()=>x(null),disabled:y,children:"Cancel"}),(0,e.jsx)(l.A,{color:"error",variant:"contained",onClick:()=>void ae(),disabled:y,startIcon:y?(0,e.jsx)(A.default,{size:16,color:"inherit"}):(0,e.jsx)(a2.A,{}),children:"Delete package"})]})]}),(0,e.jsxs)(R.A,{open:null!==E,onClose:G?void 0:ai,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,e.jsxs)(S.A,{sx:{px:{xs:2,md:4},pt:{xs:2,md:3},pb:1},children:[(0,e.jsxs)(j.default,{component:"span",variant:"h5",fontWeight:700,children:["Install ",E?.name]}),(0,e.jsx)(j.default,{variant:"body2",color:"text.secondary",sx:{mt:.5},children:"Match the package to your FLUJO, then review and install it."})]}),(0,e.jsxs)(T.A,{sx:{px:{xs:2,md:4},pb:3},children:[I&&(0,e.jsx)(B.A,{severity:"error",sx:{mb:2},onClose:()=>J(null),children:I}),G&&!K&&!$&&(0,e.jsx)(g.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",minHeight:420},children:(0,e.jsx)(A.default,{size:24})}),aj&&K?.package&&(0,e.jsxs)(g.default,{children:[(0,e.jsxs)(i.A,{direction:{xs:"column",sm:"row"},spacing:1,alignItems:{sm:"center"},justifyContent:"space-between",sx:{mb:2.5},children:[(0,e.jsxs)(i.A,{direction:"row",spacing:1,alignItems:"center",children:[(0,e.jsx)(k.A,{size:"small",variant:"outlined",label:`v${K.package.version}`}),K.package.publisher&&(0,e.jsx)(k.A,{size:"small",variant:"outlined",label:K.package.publisher}),(0,e.jsxs)(j.default,{variant:"caption",color:"text.secondary",children:[aj.servers.length," server(s) \xb7 ",aj.models.length," model(s) \xb7"," ",aj.flows.length," flow(s) \xb7 ",aj.plannedExecutions.length," planned execution(s)"]})]}),(0,e.jsxs)(j.default,{variant:"caption",color:"text.secondary",children:["Step ",Y+1," of 2"]})]}),(0,e.jsxs)(ac,{activeStep:Y,sx:{maxWidth:720,mx:"auto",mb:3},children:[(0,e.jsx)(af,{children:(0,e.jsx)(av,{children:"Match models"})}),(0,e.jsx)(af,{children:(0,e.jsx)(av,{children:"Review & install"})})]}),0===Y&&aj.models.length>0&&ak&&(0,e.jsxs)(g.default,{children:[(0,e.jsxs)(g.default,{sx:{textAlign:"center",maxWidth:820,mx:"auto",mb:3},children:[(0,e.jsx)(j.default,{variant:"h4",fontWeight:750,sx:{mb:1},children:"The package was created with models that are not installed in your FLUJO."}),(0,e.jsx)(j.default,{variant:"h6",color:"text.secondary",fontWeight:400,children:"Let's replace or recreate them!"})]}),(0,e.jsxs)(g.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,e.jsxs)(g.default,{children:[(0,e.jsxs)(i.A,{direction:"row",alignItems:"center",justifyContent:"space-between",sx:{mb:1.25},children:[(0,e.jsx)(j.default,{variant:"overline",color:"text.secondary",fontWeight:700,children:"Models in this package"}),(0,e.jsx)(k.A,{size:"small",color:am?"success":"default",label:`${al}/${aj.models.length} ready`})]}),(0,e.jsx)(i.A,{spacing:1.25,children:aj.models.map(a=>{let b=a.id===ak.id,c=Object.prototype.hasOwnProperty.call(P,a.id),d=aj.installedModels.find(b=>b.id===P[a.id]);return(0,e.jsx)(a7.A,{variant:"outlined",sx:{borderWidth:b?2:1,borderColor:b?"primary.main":"divider",bgcolor:b?"action.selected":"background.paper",transition:"border-color 120ms ease, background-color 120ms ease"},children:(0,e.jsx)(a8.A,{onClick:()=>an(a.id),"aria-label":`Configure ${a.displayName}`,sx:{minHeight:104,p:2},children:(0,e.jsxs)(i.A,{direction:"row",spacing:1.5,alignItems:"center",children:[(0,e.jsx)(g.default,{sx:{width:44,height:44,borderRadius:2,display:"grid",placeItems:"center",bgcolor:b?"primary.main":"action.hover",color:b?"primary.contrastText":"text.secondary",flex:"0 0 auto"},children:(0,e.jsx)(bf,{})}),(0,e.jsxs)(g.default,{sx:{minWidth:0,flex:1},children:[(0,e.jsx)(j.default,{variant:"subtitle1",fontWeight:700,noWrap:!0,children:a.displayName}),(0,e.jsx)(j.default,{variant:"caption",color:"text.secondary",display:"block",children:"Package model"}),c&&(0,e.jsxs)(i.A,{direction:"row",spacing:.5,alignItems:"center",sx:{mt:.5},children:[(0,e.jsx)(be,{color:"success",sx:{fontSize:16}}),(0,e.jsx)(j.default,{variant:"caption",color:"success.main",noWrap:!0,children:d?`Using ${d.displayName}`:"Will be created"})]})]})]})})},a.id)})})]}),(0,e.jsx)(g.default,{"aria-hidden":!0,sx:{display:"grid",placeItems:"center",minHeight:{xs:64,md:360}},children:(0,e.jsx)(g.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,e.jsx)(bd,{sx:{fontSize:38}})})}),(0,e.jsxs)(a7.A,{variant:"outlined",sx:{p:{xs:2,md:3},minHeight:{md:420},bgcolor:"background.default"},children:[(0,e.jsxs)(j.default,{variant:"overline",color:"text.secondary",fontWeight:700,children:["Replace ",ak.displayName]}),(0,e.jsx)(j.default,{variant:"h5",fontWeight:700,sx:{mt:.25,mb:2.5},children:"What would you like to do?"}),(0,e.jsxs)(a6.Ay,{container:!0,spacing:2,children:[(0,e.jsx)(a6.Ay,{item:!0,xs:12,sm:6,children:(0,e.jsx)(l.A,{fullWidth:!0,"aria-label":"Create new one",variant:Object.prototype.hasOwnProperty.call(P,ak.id)&&""===P[ak.id]?"contained":"outlined",onClick:()=>ao(ak.id),sx:{minHeight:154,p:2.5,textTransform:"none",alignItems:"stretch",justifyContent:"flex-start",textAlign:"left"},children:(0,e.jsxs)(i.A,{spacing:1,alignItems:"flex-start",children:[(0,e.jsx)(bc,{sx:{fontSize:36}}),(0,e.jsx)(j.default,{variant:"h6",fontWeight:700,children:"Create new one"}),(0,e.jsx)(j.default,{variant:"body2",color:Object.prototype.hasOwnProperty.call(P,ak.id)&&""===P[ak.id]?"inherit":"text.secondary",children:"Recreate this model in your FLUJO with the package's configuration."})]})})}),(0,e.jsx)(a6.Ay,{item:!0,xs:12,sm:6,children:(0,e.jsx)(l.A,{fullWidth:!0,"aria-label":"Use one of yours",variant:P[ak.id]?"contained":"outlined",onClick:()=>X(!0),sx:{minHeight:154,p:2.5,textTransform:"none",alignItems:"stretch",justifyContent:"flex-start",textAlign:"left"},children:(0,e.jsxs)(i.A,{spacing:1,alignItems:"flex-start",children:[(0,e.jsx)(bf,{sx:{fontSize:36}}),(0,e.jsx)(j.default,{variant:"h6",fontWeight:700,children:"Use one of yours"}),(0,e.jsx)(j.default,{variant:"body2",color:P[ak.id]?"inherit":"text.secondary",children:"Connect the package to a model you already have installed."})]})})})]}),W&&(0,e.jsxs)(g.default,{sx:{mt:2.5},children:[(0,e.jsx)(M.A,{sx:{mb:2}}),(0,e.jsx)(j.default,{variant:"subtitle1",fontWeight:700,sx:{mb:1},children:"Choose one of your installed models"}),aj.installedModels.length>0?(0,e.jsx)(a6.Ay,{container:!0,spacing:1.25,children:aj.installedModels.map(a=>{let b=P[ak.id]===a.id;return(0,e.jsx)(a6.Ay,{item:!0,xs:12,sm:6,children:(0,e.jsx)(a7.A,{variant:"outlined",sx:{height:"100%",borderWidth:b?2:1,borderColor:b?"primary.main":"divider",bgcolor:b?"action.selected":"background.paper"},children:(0,e.jsx)(a8.A,{onClick:()=>ap(ak.id,a.id),"aria-label":`Use ${a.displayName}`,sx:{minHeight:76,p:1.5},children:(0,e.jsxs)(i.A,{direction:"row",spacing:1.25,alignItems:"center",children:[(0,e.jsx)(bf,{color:b?"primary":"action"}),(0,e.jsxs)(g.default,{sx:{minWidth:0},children:[(0,e.jsx)(j.default,{variant:"subtitle2",fontWeight:700,noWrap:!0,children:a.displayName}),(0,e.jsx)(j.default,{variant:"caption",color:"text.secondary",noWrap:!0,display:"block",children:a.name})]}),b&&(0,e.jsx)(be,{color:"primary",sx:{ml:"auto !important",flex:"0 0 auto"}})]})})})},a.id)})}):(0,e.jsx)(B.A,{severity:"info",children:"You do not have any installed models yet. Create this package model as new instead."})]})]})]}),(0,e.jsx)(M.A,{sx:{my:3}}),(0,e.jsxs)(i.A,{direction:"row",spacing:1.5,justifyContent:"space-between",alignItems:"center",children:[(0,e.jsx)(l.A,{onClick:ai,children:"Cancel"}),(0,e.jsxs)(i.A,{direction:"row",spacing:1.5,alignItems:"center",children:[!am&&(0,e.jsx)(j.default,{variant:"body2",color:"text.secondary",children:"Choose an option for every model to continue."}),(0,e.jsx)(l.A,{variant:"contained",size:"large",disabled:!am,endIcon:(0,e.jsx)(bd,{}),onClick:()=>Z(1),children:"Continue to review"})]})]})]}),1===Y&&(0,e.jsxs)(g.default,{sx:{maxWidth:980,mx:"auto"},children:[(0,e.jsxs)(i.A,{direction:{xs:"column",sm:"row"},spacing:1,alignItems:{sm:"center"},justifyContent:"space-between",sx:{mb:2},children:[(0,e.jsxs)(g.default,{children:[(0,e.jsx)(j.default,{variant:"h4",fontWeight:750,children:"Review and install"}),(0,e.jsx)(j.default,{variant:"body1",color:"text.secondary",children:"Check your model choices and add any package secrets."})]}),aj.models.length>0&&(0,e.jsx)(l.A,{onClick:()=>{Z(0),V(aj.models.find(a=>!Object.prototype.hasOwnProperty.call(P,a.id))?.id??aj.models[0].id),X(!1)},children:"Change model choices"})]}),aj.models.length>0&&(0,e.jsxs)(g.default,{sx:{mb:2.5},children:[(0,e.jsx)(j.default,{variant:"subtitle2",sx:{mb:1},children:"Model plan"}),(0,e.jsx)(a6.Ay,{container:!0,spacing:1.5,children:aj.models.map(a=>{let b=aj.installedModels.find(b=>b.id===P[a.id]);return(0,e.jsx)(a6.Ay,{item:!0,xs:12,sm:6,children:(0,e.jsx)(a7.A,{variant:"outlined",sx:{p:1.75,height:"100%"},children:(0,e.jsxs)(i.A,{direction:"row",spacing:1.25,alignItems:"center",children:[(0,e.jsxs)(g.default,{sx:{minWidth:0,flex:1},children:[(0,e.jsx)(j.default,{variant:"caption",color:"text.secondary",children:"Package model"}),(0,e.jsx)(j.default,{variant:"subtitle2",noWrap:!0,children:a.displayName})]}),(0,e.jsx)(bd,{color:"action"}),(0,e.jsxs)(g.default,{sx:{minWidth:0,flex:1},children:[(0,e.jsx)(j.default,{variant:"caption",color:"text.secondary",children:b?"Your model":"New model"}),(0,e.jsx)(j.default,{variant:"subtitle2",noWrap:!0,children:b?.displayName??a.displayName})]})]})})},a.id)})})]}),aj.servers.some(a=>a.requiredEnvMissing.length>0)&&(0,e.jsx)(B.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."}),aj.missingGlobals.length>0&&(0,e.jsxs)(B.A,{severity:"warning",sx:{mb:1.5},children:["This package expects host global variable(s) that aren't set yet:"," ",aj.missingGlobals.join(", "),". Set them in Settings after install, or the bound model(s)/server(s) won't have a working API key."]}),(0,e.jsx)(M.A,{sx:{my:2.5}}),aj.secrets.length>0?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(j.default,{variant:"subtitle2",sx:{mb:1},children:"Secrets requested by this package"}),(0,e.jsx)(i.A,{spacing:1.5,sx:{mb:2.5},children:aj.secrets.map(a=>(0,e.jsx)(s.A,{size:"small",type:aa[a.key]?"text":"password",label:a.label||a.key,helperText:a.required?"Required — leave blank to install the dependent entity disabled":"Optional",value:N[a.key]??"",onChange:b=>O(c=>({...c,[a.key]:b.target.value})),fullWidth:!0,InputProps:{endAdornment:(0,e.jsx)(t.A,{position:"end",children:(0,e.jsx)(bb.A,{size:"small",tabIndex:-1,"aria-label":aa[a.key]?"Hide secret":"Show secret",onClick:()=>ab(b=>({...b,[a.key]:!b[a.key]})),children:aa[a.key]?(0,e.jsx)(bj.A,{fontSize:"small"}):(0,e.jsx)(bi.A,{fontSize:"small"})})})}},a.key))})]}):(0,e.jsx)(j.default,{variant:"body2",color:"text.secondary",sx:{mb:2.5},children:"This package doesn't request any secrets."}),(0,e.jsxs)(i.A,{direction:"row",spacing:1,justifyContent:"space-between",children:[(0,e.jsx)(l.A,{onClick:aj.models.length>0?()=>Z(0):ai,disabled:G,children:aj.models.length>0?"Back":"Cancel"}),(0,e.jsx)(l.A,{variant:"contained",color:"primary",size:"large",onClick:()=>void ah(),disabled:G,startIcon:G?(0,e.jsx)(A.default,{size:16}):(0,e.jsx)(bg,{}),children:"Install package"})]})]})]}),$&&(0,e.jsxs)(g.default,{children:[(0,e.jsx)(B.A,{severity:$.ok?"success":"error",sx:{mb:1},children:$.ok?`Installed "${$.package?.name}": ${$.created.length} created, ${$.updated.length} updated, ${$.disabled.length} disabled.`:`Install failed: ${$.errors[0]??"unknown error"}`}),$.missingGlobals.length>0&&(0,e.jsxs)(B.A,{severity:"warning",sx:{mb:1},children:["Set these global variable(s) in Settings for the installed entities to work:"," ",$.missingGlobals.join(", "),"."]}),(0,e.jsx)(l.A,{size:"small",onClick:ai,children:"Close"})]})]})]})]})}let bm=(0,aB.h)("frontend/components/Packages");function bn(){let[a,b]=(0,f.useState)(!1),[c,d]=(0,f.useState)(0);return bm.debug("Rendering PackagesManager",{wizardOpen:a}),(0,e.jsxs)(g.default,{sx:{height:"100%",display:"flex",flexDirection:"column"},children:[(0,e.jsxs)(g.default,{sx:{p:2,display:"flex",justifyContent:"space-between",alignItems:"center",borderBottom:1,borderColor:"divider"},children:[(0,e.jsxs)(i.A,{direction:"row",spacing:1,alignItems:"center",children:[(0,e.jsx)(j.default,{variant:"h5",children:"Packages"}),(0,e.jsx)(k.A,{label:"experimental",size:"small",color:"warning",variant:"outlined"})]}),(0,e.jsx)(l.A,{variant:"contained",startIcon:(0,e.jsx)(n.A,{}),onClick:()=>b(!0),"data-tour":"packages-create",children:"Create package"})]}),(0,e.jsxs)(g.default,{sx:{flex:1,overflow:"auto",p:3},children:[(0,e.jsxs)(m.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,e.jsx)(p,{sx:{fontSize:48,color:"text.secondary"}}),(0,e.jsx)(j.default,{variant:"h6",children:"Bundle your FLUJO setup into a shareable package"}),(0,e.jsx)(j.default,{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,e.jsx)(l.A,{variant:"contained",startIcon:(0,e.jsx)(n.A,{}),onClick:()=>b(!0),children:"Create package"})]}),(0,e.jsxs)(m.A,{variant:"outlined",sx:{p:3,mt:3,maxWidth:{xs:"100%",md:1100},mx:"auto"},children:[(0,e.jsx)(j.default,{variant:"h6",gutterBottom:!0,children:"Package registry account"}),(0,e.jsx)(aF,{})]}),(0,e.jsx)(bl,{onInstalled:()=>d(a=>a+1)}),(0,e.jsx)(a5,{},c)]}),a&&(0,e.jsx)(a0,{open:a,onClose:()=>b(!1)})]})}var bo=c(49938),bp=c(61615);function bq(){(0,h.useRouter)();let{settings:a,settingsHydrated:b}=(0,bo.rX)(),c=b&&(a?.experimental?.enabled??!1);return b&&c?(0,e.jsx)(g.default,{sx:{height:"100%",display:"flex",flexDirection:"column"},children:(0,e.jsx)(bn,{})}):(0,e.jsx)(bp.default,{})}(0,aB.h)("app/packages/page")},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87892:(a,b,c)=>{Promise.resolve().then(c.bind(c,60399))},92812:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7M2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2m4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3z"}),"VisibilityOff")},95285:(a,b,c)=>{"use strict";c.r(b),c.d(b,{GlobalError:()=>E.a,__next_app__:()=>K,handler:()=>M,pages:()=>J,routeModule:()=>L,tree:()=>I});var d=c(49754),e=c(9117),f=c(46595),g=c(32324),h=c(39326),i=c(38928),j=c(20175),k=c(12),l=c(54290),m=c(12696),n=c(52574),o=c(82802),p=c(77533),q=c(45229),r=c(32822),s=c(261),t=c(26453),u=c(52474),v=c(26713),w=c(51356),x=c(62685),y=c(36225),z=c(63446),A=c(2762),B=c(45742),C=c(86439),D=c(81170),E=c.n(D),F=c(62506),G=c(91203),H={};for(let a in F)0>["default","tree","pages","GlobalError","__next_app__","routeModule","handler"].indexOf(a)&&(H[a]=()=>F[a]);c.d(b,H);let I={children:["",{children:["packages",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,60399)),"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\packages\\page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(c.bind(c,51472)),"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\layout.tsx"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,81170,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,87028,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,90461,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,32768,23)),"next/dist/client/components/builtin/unauthorized.js"]}]}.children,J=["C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\packages\\page.tsx"],K={require:c,loadChunk:()=>Promise.resolve()},L=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/packages/page",pathname:"/packages",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:I},distDir:".next",relativeProjectDir:""});async function M(a,b,d){var D;let H="/packages/page";"/index"===H&&(H="/");let N=(0,h.getRequestMeta)(a,"postponed"),O=(0,h.getRequestMeta)(a,"minimalMode"),P=await L.prepare(a,b,{srcPage:H,multiZoneDraftMode:!1});if(!P)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:Q,query:R,params:S,parsedUrl:T,pageIsDynamic:U,buildManifest:V,nextFontManifest:W,reactLoadableManifest:X,serverActionsManifest:Y,clientReferenceManifest:Z,subresourceIntegrityManifest:$,prerenderManifest:_,isDraftMode:aa,resolvedPathname:ab,revalidateOnlyGenerated:ac,routerServerContext:ad,nextConfig:ae,interceptionRoutePatterns:af}=P,ag=T.pathname||"/",ah=(0,s.normalizeAppPath)(H),{isOnDemandRevalidate:ai}=P,aj=L.match(ag,_),ak=!!_.routes[ab],al=!!(aj||ak||_.routes[ah]),am=a.headers["user-agent"]||"",an=(0,v.getBotType)(am),ao=(0,q.isHtmlBotRequest)(a),ap=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[u.NEXT_ROUTER_PREFETCH_HEADER],aq=(0,h.getRequestMeta)(a,"isRSCRequest")??(0,n.f)(a.headers[u.RSC_HEADER]),ar=(0,t.getIsPossibleServerAction)(a),as=(0,m.checkIsAppPPREnabled)(ae.experimental.ppr)&&(null==(D=_.routes[ah]??_.dynamicRoutes[ah])?void 0:D.renderingMode)==="PARTIALLY_STATIC",at=!1,au=!1,av=as?N:void 0,aw=as&&aq&&!ap,ax=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),ay=!am||(0,q.shouldServeStreamingMetadata)(am,ae.htmlLimitedBots);ao&&as&&(al=!1,ay=!1);let az=!0===L.isDev||!al||"string"==typeof N||aw,aA=ao&&as,aB=null;aa||!al||az||ar||av||aw||(aB=ab);let aC=aB;!aC&&L.isDev&&(aC=ab),L.isDev||aa||!al||!aq||aw||(0,k.d)(a.headers);let aD={...F,tree:I,pages:J,GlobalError:E(),handler:M,routeModule:L,__next_app__:K};Y&&Z&&(0,p.setReferenceManifestsSingleton)({page:H,clientReferenceManifest:Z,serverActionsManifest:Y,serverModuleMap:(0,r.createServerModuleMap)({serverActionsManifest:Y})});let aE=a.method||"GET",aF=(0,g.getTracer)(),aG=aF.getActiveScopeSpan();try{let f=L.getVaryHeader(ab,af);b.setHeader("Vary",f);let k=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return L.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let d=aF.getRootSpanAttributes();if(!d)return;if(d.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${d.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=d.get("next.route");if(e){let a=`${aE} ${e}`;c.setAttributes({"next.route":e,"http.route":e,"next.span_name":a}),c.updateName(a)}else c.updateName(`${aE} ${a.url}`)})},m=async({span:e,postponed:f,fallbackRouteParams:g})=>{let i={query:R,params:S,page:ah,sharedContext:{buildId:Q},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aD,Component:(0,j.T)(aD),params:S,routeModule:L,page:H,postponed:f,shouldWaitOnAllReady:aA,serveStreamingMetadata:ay,supportsDynamicResponse:"string"==typeof f||az,buildManifest:V,nextFontManifest:W,reactLoadableManifest:X,subresourceIntegrityManifest:$,serverActionsManifest:Y,clientReferenceManifest:Z,setIsrStatus:null==ad?void 0:ad.setIsrStatus,dir:c(33873).join(process.cwd(),L.relativeProjectDir),isDraftMode:aa,isRevalidate:al&&!f&&!aw,botType:an,isOnDemandRevalidate:ai,isPossibleServerAction:ar,assetPrefix:ae.assetPrefix,nextConfigOutput:ae.output,crossOrigin:ae.crossOrigin,trailingSlash:ae.trailingSlash,previewProps:_.preview,deploymentId:ae.deploymentId,enableTainting:ae.experimental.taint,htmlLimitedBots:ae.htmlLimitedBots,devtoolSegmentExplorer:ae.experimental.devtoolSegmentExplorer,reactMaxHeadersLength:ae.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:(0,h.getRequestMeta)(a,"incrementalCache"),cacheLifeProfiles:ae.experimental.cacheLife,basePath:ae.basePath,serverActions:ae.experimental.serverActions,...at?{nextExport:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isRevalidate:!0,isDebugDynamicAccesses:at}:{},experimental:{isRoutePPREnabled:as,expireTime:ae.expireTime,staleTimes:ae.experimental.staleTimes,cacheComponents:!!ae.experimental.cacheComponents,clientSegmentCache:!!ae.experimental.clientSegmentCache,clientParamParsing:!!ae.experimental.clientParamParsing,dynamicOnHover:!!ae.experimental.dynamicOnHover,inlineCss:!!ae.experimental.inlineCss,authInterrupts:!!ae.experimental.authInterrupts,clientTraceMetadata:ae.experimental.clientTraceMetadata||[]},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d)=>L.onRequestError(a,b,d,ad),err:(0,h.getRequestMeta)(a,"invokeError"),dev:L.isDev}},l=await k(e,i),{metadata:m}=l,{cacheControl:n,headers:o={},fetchTags:p}=m;if(p&&(o[z.NEXT_CACHE_TAGS_HEADER]=p),a.fetchMetrics=m.fetchMetrics,al&&(null==n?void 0:n.revalidate)===0&&!L.isDev&&!as){let a=m.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${ab}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
1
+ (()=>{var a={};a.id=7262,a.ids=[7262],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},2117:(a,b,c)=>{"use strict";c.d(b,{A:()=>i});var d=c(55511);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length,h=[];for(let a=0;a<256;++a)h.push((a+256).toString(16).slice(1));let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();let i=(a=a||{}).random??a.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(i.length<16)throw Error("Random bytes length must be >= 16");if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,b){if((c=c||0)<0||c+16>b.length)throw RangeError(`UUID byte range ${c}:${c+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[c+a]=i[a];return b}return function(a,b=0){return(h[a[b+0]]+h[a[b+1]]+h[a[b+2]]+h[a[b+3]]+"-"+h[a[b+4]]+h[a[b+5]]+"-"+h[a[b+6]]+h[a[b+7]]+"-"+h[a[b+8]]+h[a[b+9]]+"-"+h[a[b+10]]+h[a[b+11]]+h[a[b+12]]+h[a[b+13]]+h[a[b+14]]+h[a[b+15]]).toLowerCase()}(i)}},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},14570:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM8 9h8v10H8zm7.5-5-1-1h-5l-1 1H5v2h14V4z"}),"DeleteOutline")},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},24077:(a,b,c)=>{"use strict";c.d(b,{A:()=>j});var d=c(38301),e=c(75249),f=c(44548),g=c(33427);let h={...d}.useSyncExternalStore;function i(a={}){let{themeId:b}=a;return function(a,c={}){let i=(0,g.A)();i&&b&&(i=i[b]||i);let{defaultMatches:j=!1,matchMedia:k=null,ssrMatchMedia:l=null,noSsr:m=!1}=(0,f.A)({name:"MuiUseMediaQuery",props:c,theme:i}),n="function"==typeof a?a(i):a;return(n=n.replace(/^@media( ?)/m,"")).includes("print")&&console.warn("MUI: You have provided a `print` query to the `useMediaQuery` hook.\nUsing the print media query to modify print styles can lead to unexpected results.\nConsider using the `displayPrint` field in the `sx` prop instead.\nMore information about `displayPrint` on our docs: https://mui.com/system/display/#display-in-print."),(void 0!==h?function(a,b,c,e,f){let g=d.useCallback(()=>b,[b]),i=d.useMemo(()=>{if(f&&c)return()=>c(a).matches;if(null!==e){let{matches:b}=e(a);return()=>b}return g},[g,a,e,f,c]),[j,k]=d.useMemo(()=>{if(null===c)return[g,()=>()=>{}];let b=c(a);return[()=>b.matches,a=>(b.addEventListener("change",a),()=>{b.removeEventListener("change",a)})]},[g,c,a]);return h(k,j,i)}:function(a,b,c,f,g){let[h,i]=d.useState(()=>g&&c?c(a).matches:f?f(a).matches:b);return(0,e.A)(()=>{if(!c)return;let b=c(a),d=()=>{i(b.matches)};return d(),b.addEventListener("change",d),()=>{b.removeEventListener("change",d)}},[a,c]),h})(n,j,k,l,m)}}i();let j=i({themeId:c(35864).A})},26713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},28354:a=>{"use strict";a.exports=require("util")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33253:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M5 20h14v-2H5zM19 9h-4V3H9v6H5l7 7z"}),"Download")},33873:a=>{"use strict";a.exports=require("path")},40628:(a,b,c)=>{Promise.resolve().then(c.bind(c,77531))},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},42378:(a,b,c)=>{"use strict";var d=c(68949);c.o(d,"useRouter")&&c.d(b,{useRouter:function(){return d.useRouter}}),c.o(d,"useSearchParams")&&c.d(b,{useSearchParams:function(){return d.useSearchParams}})},55511:a=>{"use strict";a.exports=require("crypto")},60399:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(97954).registerClientReference)(function(){throw Error("Attempted to call the default export of \"C:\\\\Users\\\\Moe\\\\Documents\\\\GitHub\\\\FLUJO\\\\src\\\\app\\\\packages\\\\page.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\packages\\page.tsx","default")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},63281:(a,b,c)=>{"use strict";c.d(b,{g:()=>g});var d=c(2117);let e=(0,c(19815).h)("frontend/services/flow/index");class f{async loadFlows(){e.debug("loadFlows: Entering method");try{if(this.flowsCache)return e.debug("loadFlows: Using cached flows",{count:this.flowsCache.length}),this.flowsCache;let a=await fetch("/api/flow");if(!a.ok){let b=await a.json();throw Error(b.error||"Failed to load flows")}let b=await a.json();return e.debug("loadFlows: Loaded flows from API",{count:b.length}),this.flowsCache=b,b}catch(a){return e.warn("loadFlows: Failed to load flows:",a),[]}}async getFlow(a){e.debug("getFlow: Entering method",{flowId:a});try{if(this.flowsCache){let b=this.flowsCache.find(b=>b.id===a);if(b)return e.debug("getFlow: Using cached flow",{flowId:a}),b}let b=await fetch(`/api/flow/${encodeURIComponent(a)}`);if(!b.ok){if(404===b.status)return e.debug(`getFlow: Flow ${a} not found`),null;let c=await b.json();throw Error(c.error||`Failed to get flow: ${a}`)}let c=await b.json();return e.debug("getFlow: Retrieved flow from API",{flowId:a}),c}catch(b){return e.warn(`getFlow: Failed to get flow ${a}:`,b),null}}async addFlow(a){e.debug("addFlow: Entering method",{flowId:a.id,flowName:a.name,nodeCount:a.nodes.length,edgeCount:a.edges.length});try{let b=await fetch("/api/flow",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok){let a=await b.json();return{success:!1,error:a.error||"Failed to add flow"}}let c=await b.json();return this.flowsCache&&this.flowsCache.push(c),e.debug("addFlow: Flow added successfully",{flowId:a.id}),{success:!0}}catch(a){return e.warn("addFlow: Failed to add flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to add flow"}}}async generateFlow(a,b,c){e.debug("generateFlow: Entering method",{modelId:b,allowInstall:c?.allowInstall,allowSubflows:c?.allowSubflows,maxDepth:c?.maxDepth});try{let d=await fetch("/api/flow/generate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({description:a,modelId:b,allowInstall:c?.allowInstall===!0,allowSubflows:c?.allowSubflows!==!1,..."number"==typeof c?.maxDepth?{maxDepth:c.maxDepth}:{}})}),f=await d.json().catch(()=>null);if(!d.ok)return{success:!1,error:f?.error||"Failed to generate flow"};let g=Array.isArray(f.flows)&&f.flows.length>0?f.flows:[{flow:f.flow,validation:f.validation}];return e.debug("generateFlow: Draft generated",{flowId:f.flow?.id,flowCount:g.length,attempts:f.attempts,errorCount:f.validation?.errorCount,installedServers:f.installedServers?.length??0}),{success:!0,flow:f.flow,validation:f.validation,flows:g,rootFlowId:f.rootFlowId??f.flow?.id,attempts:f.attempts,installedServers:f.installedServers??[]}}catch(a){return e.warn("generateFlow: Failed to generate flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to generate flow"}}}async improveFlow(a,b,c,d){e.debug("improveFlow: Entering method",{flowId:a?.id,modelId:c,allowInstall:d?.allowInstall});try{let f=await fetch("/api/flow/improve",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({flow:a,relatedFlows:d?.relatedFlows,description:b,modelId:c,allowInstall:d?.allowInstall===!0})}),g=await f.json().catch(()=>null);if(!f.ok)return{success:!1,error:g?.error||"Failed to improve flow"};return e.debug("improveFlow: Draft revised",{flowId:g.flow?.id,attempts:g.attempts,errorCount:g.validation?.errorCount,installedServers:g.installedServers?.length??0}),{success:!0,flow:g.flow,validation:g.validation,flows:Array.isArray(g.flows)&&g.flows.length>0?g.flows:[{flow:g.flow,validation:g.validation}],rootFlowId:g.rootFlowId??g.flow?.id,attempts:g.attempts,installedServers:g.installedServers??[]}}catch(a){return e.warn("improveFlow: Failed to improve flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to improve flow"}}}async updateFlow(a){e.debug("updateFlow: Entering method",{flowId:a.id,flowName:a.name,nodeCount:a.nodes.length,edgeCount:a.edges.length});try{let b=await fetch(`/api/flow/${encodeURIComponent(a.id)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok){let a=await b.json();return{success:!1,error:a.error||"Failed to update flow"}}let c=await b.json();if(this.flowsCache){let b=this.flowsCache.findIndex(b=>b.id===a.id);b>=0?this.flowsCache[b]=c:this.flowsCache.push(c)}return e.debug("updateFlow: Flow updated successfully",{flowId:a.id}),{success:!0}}catch(a){return e.warn("updateFlow: Failed to update flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to update flow"}}}async deleteFlow(a){e.debug("deleteFlow: Entering method",{flowId:a});try{let b=await fetch(`/api/flow/${encodeURIComponent(a)}`,{method:"DELETE"});if(!b.ok){let a=await b.json();return{success:!1,error:a.error||"Failed to delete flow"}}return this.flowsCache&&(this.flowsCache=this.flowsCache.filter(b=>b.id!==a)),e.debug("deleteFlow: Flow deleted successfully",{flowId:a}),{success:!0}}catch(a){return e.warn("deleteFlow: Failed to delete flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to delete flow"}}}async listFlowVersions(a){e.debug("listFlowVersions: Entering method",{flowId:a});try{let b=await fetch(`/api/flow/${encodeURIComponent(a)}/versions`);if(!b.ok){let a=await b.json().catch(()=>null);throw Error(a?.error||"Failed to list flow versions")}let c=await b.json();return Array.isArray(c.versions)?c.versions:[]}catch(b){return e.warn(`listFlowVersions: Failed for flow ${a}:`,b),[]}}async getFlowVersion(a,b){e.debug("getFlowVersion: Entering method",{flowId:a,versionId:b});try{let c=await fetch(`/api/flow/${encodeURIComponent(a)}/versions/${encodeURIComponent(b)}`);if(!c.ok){if(404===c.status)return null;let a=await c.json().catch(()=>null);throw Error(a?.error||"Failed to get flow version")}return await c.json()}catch(c){return e.warn(`getFlowVersion: Failed for ${a}/${b}:`,c),null}}createNode(a,b){return e.debug("createNode: Entering method",{type:a,position:b}),{id:(0,d.A)(),type:a,position:b,data:{label:`${"mcp"===a?"MCP":a.charAt(0).toUpperCase()+a.slice(1)} Node`,type:a,properties:"process"===a?{inputMode:"full-history"}:{}}}}createStartNode(){return{id:(0,d.A)(),type:"start",position:{x:250,y:150},data:{label:"Start Node",type:"start",properties:{promptTemplate:""}}}}createNewFlow(a="NewFlow"){e.debug("createNewFlow: Entering method",{name:a});let b=Date.now();return{id:(0,d.A)(),name:a,createdAt:b,updatedAt:b,nodes:[this.createStartNode()],edges:[]}}createHistoryEntry(a,b){return e.debug("createHistoryEntry: Entering method"),{nodes:[...a],edges:[...b]}}generateSampleFlow(a="Sample Flow"){return e.debug("generateSampleFlow: Entering method",{name:a}),{id:(0,d.A)(),name:a,nodes:[{id:"1",type:"start",position:{x:250,y:50},data:{label:"Start Node",type:"start",properties:{prompt:"Enter your query here",systemMessage:"You are a helpful assistant",temperature:0}}},{id:"2",type:"process",position:{x:250,y:200},data:{label:"Process Node",type:"process",properties:{operation:"transform",enabled:!0}}},{id:"3",type:"finish",position:{x:250,y:350},data:{label:"Finish Node",type:"finish",properties:{format:"json",template:'{ "result": {{data}} }'}}},{id:"4",type:"mcp",position:{x:450,y:200},data:{label:"MCP Node",type:"mcp",properties:{channels:2,mode:"parallel"}}}],edges:[{id:"e1-2",source:"1",target:"2",type:"custom"},{id:"e2-3",source:"2",target:"3",type:"custom"}]}}constructor(){this.flowsCache=null}}let g=new f},63654:(a,b,c)=>{"use strict";c.d(b,{P:()=>f});let d=(0,c(19815).h)("frontend/services/plannedExecutions");class e{async list(){try{let a=await fetch("/api/planned-executions");if(!a.ok)throw Error(`HTTP ${a.status}`);return await a.json()}catch(a){return d.warn("Failed to list planned executions",a),{paused:!1,executions:[]}}}async create(a){try{let b=await fetch("/api/planned-executions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}),c=await b.json();if(!b.ok)return{success:!1,error:c?.error||`HTTP ${b.status}`};return{success:!0,execution:c.execution}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Request failed"}}}async update(a,b){try{let c=await fetch(`/api/planned-executions/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)}),d=await c.json();if(!c.ok)return{success:!1,error:d?.error||`HTTP ${c.status}`};return{success:!0,execution:d.execution}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Request failed"}}}async delete(a){try{let b=await fetch(`/api/planned-executions/${a}`,{method:"DELETE"});if(!b.ok){let a=await b.json().catch(()=>null);return{success:!1,error:a?.error||`HTTP ${b.status}`}}return{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Request failed"}}}async setPaused(a){try{let b=await fetch("/api/planned-executions",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({paused:a})});if(!b.ok){let a=await b.json().catch(()=>null);return{success:!1,error:a?.error||`HTTP ${b.status}`}}return{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Request failed"}}}async runNow(a){try{let b=await fetch(`/api/planned-executions/${a}/run`,{method:"POST"}),c=await b.json();if(!b.ok)return{success:!1,error:c?.error||`HTTP ${b.status}`};return{success:!0,record:c.record}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Request failed"}}}async loadRuns(a){try{let b=await fetch(`/api/planned-executions/${a}/runs`);if(!b.ok)throw Error(`HTTP ${b.status}`);let c=await b.json();return Array.isArray(c?.runs)?c.runs:[]}catch(b){return d.warn(`Failed to load runs for ${a}`,b),[]}}async previewSchedule(a,b){try{let c=await fetch("/api/planned-executions/preview-schedule",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cron:a,timezone:b})});if(!c.ok)throw Error(`HTTP ${c.status}`);return await c.json()}catch(a){return{valid:!1,error:a instanceof Error?a.message:"Preview failed",nextRuns:[]}}}}let f=new e},77531:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>br});var d,e=c(21124),f=c(38301),g=c(81637),h=c(42378),i=c(53773),j=c(79515),k=c(41893),l=c(68730),m=c(54573),n=c(47902),o=c(11801);let p=(0,o.A)([(0,e.jsx)("path",{d:"M20 2H4c-1 0-2 .9-2 2v3.01c0 .72.43 1.34 1 1.69V20c0 1.1 1.1 2 2 2h14c.9 0 2-.9 2-2V8.7c.57-.35 1-.97 1-1.69V4c0-1.1-1-2-2-2m-1 18H5V9h14zm1-13H4V4h16z"},"0"),(0,e.jsx)("path",{d:"M9 12h6v2H9z"},"1")],"Inventory2Outlined");var q=c(60839),r=c(24077),s=c(37674),t=c(67101),u=c(89490),v=c(71439),w=c(75983),x=c(50553),y=c(77028),z=c(84233),A=c(8521),B=c(88745),C=c(43249),D=c(2783),E=c(18168),F=c(68333),G=c(6636),H=c(29565),I=c(33105);function J(a){return(0,I.Ay)("MuiAlertTitle",a)}(0,H.A)("MuiAlertTitle",["root"]);let K=(0,E.Ay)(j.default,{name:"MuiAlertTitle",slot:"Root",overridesResolver:(a,b)=>b.root})((0,F.A)(({theme:a})=>({fontWeight:a.typography.fontWeightMedium,marginTop:-2}))),L=f.forwardRef(function(a,b){let c=(0,G.b)({props:a,name:"MuiAlertTitle"}),{className:d,...f}=c,g=(a=>{let{classes:b}=a;return(0,D.A)({root:["root"]},J,b)})(c);return(0,e.jsx)(K,{gutterBottom:!0,component:"div",ownerState:c,ref:b,className:(0,C.A)(g.root,d),...f})});var M=c(91059),N=c(7675),O=c(94367),P=c(95587),Q=c(67191),R=c(40512),S=c(83899),T=c(52327);function U(a){return(0,I.Ay)("MuiStepper",a)}(0,H.A)("MuiStepper",["root","horizontal","vertical","nonLinear","alternativeLabel"]);var V=c(6638);let W=f.createContext({}),X=f.createContext({});function Y(a){return(0,I.Ay)("MuiStepConnector",a)}(0,H.A)("MuiStepConnector",["root","horizontal","vertical","alternativeLabel","active","completed","disabled","line","lineHorizontal","lineVertical"]);let Z=(0,E.Ay)("div",{name:"MuiStepConnector",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,b[c.orientation],c.alternativeLabel&&b.alternativeLabel,c.completed&&b.completed]}})({flex:"1 1 auto",variants:[{props:{orientation:"vertical"},style:{marginLeft:12}},{props:{alternativeLabel:!0},style:{position:"absolute",top:12,left:"calc(-50% + 20px)",right:"calc(50% + 20px)"}}]}),$=(0,E.Ay)("span",{name:"MuiStepConnector",slot:"Line",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.line,b[`line${(0,V.A)(c.orientation)}`]]}})((0,F.A)(({theme:a})=>{let b="light"===a.palette.mode?a.palette.grey[400]:a.palette.grey[600];return{display:"block",borderColor:a.vars?a.vars.palette.StepConnector.border:b,variants:[{props:{orientation:"horizontal"},style:{borderTopStyle:"solid",borderTopWidth:1}},{props:{orientation:"vertical"},style:{borderLeftStyle:"solid",borderLeftWidth:1,minHeight:24}}]}})),_=f.forwardRef(function(a,b){let c=(0,G.b)({props:a,name:"MuiStepConnector"}),{className:d,...g}=c,{alternativeLabel:h,orientation:i="horizontal"}=f.useContext(W),{active:j,disabled:k,completed:l}=f.useContext(X),m={...c,alternativeLabel:h,orientation:i,active:j,completed:l,disabled:k},n=(a=>{let{classes:b,orientation:c,alternativeLabel:d,active:e,completed:f,disabled:g}=a,h={root:["root",c,d&&"alternativeLabel",e&&"active",f&&"completed",g&&"disabled"],line:["line",`line${(0,V.A)(c)}`]};return(0,D.A)(h,Y,b)})(m);return(0,e.jsx)(Z,{className:(0,C.A)(n.root,d),ref:b,ownerState:m,...g,children:(0,e.jsx)($,{className:n.line,ownerState:m})})}),aa=(0,E.Ay)("div",{name:"MuiStepper",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,b[c.orientation],c.alternativeLabel&&b.alternativeLabel,c.nonLinear&&b.nonLinear]}})({display:"flex",variants:[{props:{orientation:"horizontal"},style:{flexDirection:"row",alignItems:"center"}},{props:{orientation:"vertical"},style:{flexDirection:"column"}},{props:{alternativeLabel:!0},style:{alignItems:"flex-start"}}]}),ab=(0,e.jsx)(_,{}),ac=f.forwardRef(function(a,b){let c=(0,G.b)({props:a,name:"MuiStepper"}),{activeStep:d=0,alternativeLabel:g=!1,children:h,className:i,component:j="div",connector:k=ab,nonLinear:l=!1,orientation:m="horizontal",...n}=c,o={...c,nonLinear:l,alternativeLabel:g,orientation:m,component:j},p=(a=>{let{orientation:b,nonLinear:c,alternativeLabel:d,classes:e}=a;return(0,D.A)({root:["root",b,c&&"nonLinear",d&&"alternativeLabel"]},U,e)})(o),q=f.Children.toArray(h).filter(Boolean),r=q.map((a,b)=>f.cloneElement(a,{index:b,last:b+1===q.length,...a.props})),s=f.useMemo(()=>({activeStep:d,alternativeLabel:g,connector:k,nonLinear:l,orientation:m}),[d,g,k,l,m]);return(0,e.jsx)(W.Provider,{value:s,children:(0,e.jsx)(aa,{as:j,ownerState:o,className:(0,C.A)(p.root,i),ref:b,...n,children:r})})});function ad(a){return(0,I.Ay)("MuiStep",a)}(0,H.A)("MuiStep",["root","horizontal","vertical","alternativeLabel","completed"]);let ae=(0,E.Ay)("div",{name:"MuiStep",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,b[c.orientation],c.alternativeLabel&&b.alternativeLabel,c.completed&&b.completed]}})({variants:[{props:{orientation:"horizontal"},style:{paddingLeft:8,paddingRight:8}},{props:{alternativeLabel:!0},style:{flex:1,position:"relative"}}]}),af=f.forwardRef(function(a,b){let c=(0,G.b)({props:a,name:"MuiStep"}),{active:d,children:g,className:h,component:i="div",completed:j,disabled:k,expanded:l=!1,index:m,last:n,...o}=c,{activeStep:p,connector:q,alternativeLabel:r,orientation:s,nonLinear:t}=f.useContext(W),[u=!1,v=!1,w=!1]=[d,j,k];p===m?u=void 0===d||d:!t&&p>m?v=void 0===j||j:!t&&p<m&&(w=void 0===k||k);let x=f.useMemo(()=>({index:m,last:n,expanded:l,icon:m+1,active:u,completed:v,disabled:w}),[m,n,l,u,v,w]),y={...c,active:u,orientation:s,alternativeLabel:r,completed:v,disabled:w,expanded:l,component:i},z=(a=>{let{classes:b,orientation:c,alternativeLabel:d,completed:e}=a;return(0,D.A)({root:["root",c,d&&"alternativeLabel",e&&"completed"]},ad,b)})(y),A=(0,e.jsxs)(ae,{as:i,className:(0,C.A)(z.root,h),ref:b,ownerState:y,...o,children:[q&&r&&0!==m?q:null,g]});return(0,e.jsx)(X.Provider,{value:x,children:q&&!r&&0!==m?(0,e.jsxs)(f.Fragment,{children:[q,A]}):A})}),ag=(0,o.A)((0,e.jsx)("path",{d:"M12 0a12 12 0 1 0 0 24 12 12 0 0 0 0-24zm-2 17l-5-5 1.4-1.4 3.6 3.6 7.6-7.6L19 8l-9 9z"}),"CheckCircle"),ah=(0,o.A)((0,e.jsx)("path",{d:"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"}),"Warning");var ai=c(43282);function aj(a){return(0,I.Ay)("MuiStepIcon",a)}let ak=(0,H.A)("MuiStepIcon",["root","active","completed","error","text"]),al=(0,E.Ay)(ai.A,{name:"MuiStepIcon",slot:"Root",overridesResolver:(a,b)=>b.root})((0,F.A)(({theme:a})=>({display:"block",transition:a.transitions.create("color",{duration:a.transitions.duration.shortest}),color:(a.vars||a).palette.text.disabled,[`&.${ak.completed}`]:{color:(a.vars||a).palette.primary.main},[`&.${ak.active}`]:{color:(a.vars||a).palette.primary.main},[`&.${ak.error}`]:{color:(a.vars||a).palette.error.main}}))),am=(0,E.Ay)("text",{name:"MuiStepIcon",slot:"Text",overridesResolver:(a,b)=>b.text})((0,F.A)(({theme:a})=>({fill:(a.vars||a).palette.primary.contrastText,fontSize:a.typography.caption.fontSize,fontFamily:a.typography.fontFamily}))),an=f.forwardRef(function(a,b){let c=(0,G.b)({props:a,name:"MuiStepIcon"}),{active:f=!1,className:g,completed:h=!1,error:i=!1,icon:j,...k}=c,l={...c,active:f,completed:h,error:i},m=(a=>{let{classes:b,active:c,completed:d,error:e}=a;return(0,D.A)({root:["root",c&&"active",d&&"completed",e&&"error"],text:["text"]},aj,b)})(l);if("number"==typeof j||"string"==typeof j){let a=(0,C.A)(g,m.root);return i?(0,e.jsx)(al,{as:ah,className:a,ref:b,ownerState:l,...k}):h?(0,e.jsx)(al,{as:ag,className:a,ref:b,ownerState:l,...k}):(0,e.jsxs)(al,{className:a,ref:b,ownerState:l,...k,children:[d||(d=(0,e.jsx)("circle",{cx:"12",cy:"12",r:"12"})),(0,e.jsx)(am,{className:m.text,x:"12",y:"12",textAnchor:"middle",dominantBaseline:"central",ownerState:l,children:j})]})}return j});function ao(a){return(0,I.Ay)("MuiStepLabel",a)}let ap=(0,H.A)("MuiStepLabel",["root","horizontal","vertical","label","active","completed","error","disabled","iconContainer","alternativeLabel","labelContainer"]);var aq=c(20385);let ar=(0,E.Ay)("span",{name:"MuiStepLabel",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,b[c.orientation]]}})({display:"flex",alignItems:"center",[`&.${ap.alternativeLabel}`]:{flexDirection:"column"},[`&.${ap.disabled}`]:{cursor:"default"},variants:[{props:{orientation:"vertical"},style:{textAlign:"left",padding:"8px 0"}}]}),as=(0,E.Ay)("span",{name:"MuiStepLabel",slot:"Label",overridesResolver:(a,b)=>b.label})((0,F.A)(({theme:a})=>({...a.typography.body2,display:"block",transition:a.transitions.create("color",{duration:a.transitions.duration.shortest}),[`&.${ap.active}`]:{color:(a.vars||a).palette.text.primary,fontWeight:500},[`&.${ap.completed}`]:{color:(a.vars||a).palette.text.primary,fontWeight:500},[`&.${ap.alternativeLabel}`]:{marginTop:16},[`&.${ap.error}`]:{color:(a.vars||a).palette.error.main}}))),at=(0,E.Ay)("span",{name:"MuiStepLabel",slot:"IconContainer",overridesResolver:(a,b)=>b.iconContainer})({flexShrink:0,display:"flex",paddingRight:8,[`&.${ap.alternativeLabel}`]:{paddingRight:0}}),au=(0,E.Ay)("span",{name:"MuiStepLabel",slot:"LabelContainer",overridesResolver:(a,b)=>b.labelContainer})((0,F.A)(({theme:a})=>({width:"100%",color:(a.vars||a).palette.text.secondary,[`&.${ap.alternativeLabel}`]:{textAlign:"center"}}))),av=f.forwardRef(function(a,b){let c=(0,G.b)({props:a,name:"MuiStepLabel"}),{children:d,className:g,componentsProps:h={},error:i=!1,icon:j,optional:k,slots:l={},slotProps:m={},StepIconComponent:n,StepIconProps:o,...p}=c,{alternativeLabel:q,orientation:r}=f.useContext(W),{active:s,disabled:t,completed:u,icon:v}=f.useContext(X),w=j||v,x=n;w&&!x&&(x=an);let y={...c,active:s,alternativeLabel:q,completed:u,disabled:t,error:i,orientation:r},z=(a=>{let{classes:b,orientation:c,active:d,completed:e,error:f,disabled:g,alternativeLabel:h}=a;return(0,D.A)({root:["root",c,f&&"error",g&&"disabled",h&&"alternativeLabel"],label:["label",d&&"active",e&&"completed",f&&"error",g&&"disabled",h&&"alternativeLabel"],iconContainer:["iconContainer",d&&"active",e&&"completed",f&&"error",g&&"disabled",h&&"alternativeLabel"],labelContainer:["labelContainer",h&&"alternativeLabel"]},ao,b)})(y),A={slots:l,slotProps:{stepIcon:o,...h,...m}},[B,E]=(0,aq.A)("root",{elementType:ar,externalForwardedProps:{...A,...p},ownerState:y,ref:b,className:(0,C.A)(z.root,g)}),[F,H]=(0,aq.A)("label",{elementType:as,externalForwardedProps:A,ownerState:y}),[I,J]=(0,aq.A)("stepIcon",{elementType:x,externalForwardedProps:A,ownerState:y});return(0,e.jsxs)(B,{...E,children:[w||I?(0,e.jsx)(at,{className:z.iconContainer,ownerState:y,children:(0,e.jsx)(I,{completed:u,active:s,error:i,icon:w,...J})}):null,(0,e.jsxs)(au,{className:z.labelContainer,ownerState:y,children:[d?(0,e.jsx)(F,{...H,className:(0,C.A)(z.label,H?.className),children:d}):null,k]})]})});av.muiName="StepLabel";var aw=c(19925),ax=c(40973);let ay=(0,o.A)((0,e.jsx)("path",{d:"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8zm4 18H6V4h7v5h5zM8 15.01l1.41 1.41L11 14.84V19h2v-4.16l1.59 1.59L16 15.01 12.01 11z"}),"UploadFile");var az=c(22042),aA=c(34304),aB=c(19815);(0,aB.h)("frontend/services/registry");let aC=()=>{throw Error("RegistryService can only be used in browser environment")},aD=new Proxy({},{get(a,b){let c=aC(),d=c[b];return"function"==typeof d?d.bind(c):d}}),aE=(0,aB.h)("frontend/components/Packages/RegistryAccountSettings");function aF(){let[a,b]=(0,f.useState)(null),[c,d]=(0,f.useState)(!0),[h,m]=(0,f.useState)(!1),[n,o]=(0,f.useState)(null),[p,q]=(0,f.useState)("login"),[r,t]=(0,f.useState)(""),[u,v]=(0,f.useState)(""),[w,x]=(0,f.useState)(""),[y,z]=(0,f.useState)(""),[C,D]=(0,f.useState)(""),E=(0,f.useCallback)(async()=>{try{let[a,c]=await Promise.all([aD.getStatus(),aD.getSettings()]);b(a),D(c.defaultUrl),z(c.usingDefault?"":c.baseUrl)}catch(a){aE.warn("Failed to load registry account status",a)}finally{d(!1)}},[]),F=async()=>{m(!0),o(null);try{let a="signup"===p?await aD.signup(r.trim(),u,w.trim()):await aD.login(r.trim(),u);"authenticated"===a.status?(o({type:"success",text:"Signed in to the package registry."}),v("")):"confirmation_required"===a.status?(o({type:"info",text:a.message||"Check your inbox to confirm your email."}),v("")):o({type:"error",text:a.message||"Authentication failed."}),a.account?b(a.account):await E()}catch(a){o({type:"error",text:a instanceof Error?a.message:"Authentication failed."})}finally{m(!1)}},G=async()=>{m(!0),o(null);try{await aD.logout(),await E(),o({type:"success",text:"Logged out."})}catch(a){o({type:"error",text:a instanceof Error?a.message:"Failed to log out."})}finally{m(!1)}},H=async a=>{m(!0),o(null);try{let{authorizationUrl:b}=await aD.beginOAuth(a);window.location.assign(b)}catch(a){o({type:"error",text:a instanceof Error?a.message:"Failed to start OAuth sign-in."}),m(!1)}},I=async()=>{m(!0),o(null);try{let a=await aD.resendConfirmation();o(a.success?{type:"success",text:"Confirmation email sent."}:{type:"error",text:a.message||"Failed to resend confirmation."})}finally{m(!1)}},J=async()=>{let a=r.trim();if(!a)return void o({type:"info",text:"Enter your account email above, then tap “Forgot password?”."});m(!0),o(null);try{await aD.requestPasswordReset(a),o({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(a){o({type:"error",text:a instanceof Error?a.message:"Failed to request a password reset."})}finally{m(!1)}},K=async()=>{m(!0),o(null);try{let a=await aD.saveSettings(y.trim());o(a.success?{type:"success",text:"Registry URL saved."}:{type:"error",text:a.message||"Invalid registry URL."})}finally{m(!1)}};if(c)return(0,e.jsx)(g.default,{sx:{display:"flex",justifyContent:"center",p:3},children:(0,e.jsx)(A.default,{size:28})});let L=!!a?.signedIn,N=!!(a?.email&&!L&&a&&!a.isConfirmed);return(0,e.jsxs)(g.default,{sx:{width:"100%"},children:[(0,e.jsx)(j.default,{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."}),n&&(0,e.jsx)(B.A,{severity:n.type,sx:{mb:2},onClose:()=>o(null),children:n.text}),L?(0,e.jsxs)(i.A,{spacing:2,children:[(0,e.jsxs)(i.A,{direction:"row",spacing:1,alignItems:"center",flexWrap:"wrap",useFlexGap:!0,children:[(0,e.jsx)(j.default,{variant:"subtitle1",children:a?.email}),a?.publisherHandle&&(0,e.jsx)(k.A,{size:"small",label:`@${a.publisherHandle}`}),a?.isConfirmed?(0,e.jsx)(k.A,{size:"small",color:"success",label:"Confirmed"}):(0,e.jsx)(k.A,{size:"small",color:"warning",label:"Unconfirmed"})]}),(0,e.jsx)(g.default,{children:(0,e.jsx)(l.A,{variant:"outlined",onClick:G,disabled:h,children:"Log out"})})]}):N?(0,e.jsxs)(i.A,{spacing:2,children:[(0,e.jsxs)(B.A,{severity:"info",children:["We sent a confirmation link to ",(0,e.jsx)("strong",{children:a?.email}),". Confirm your email, then log in to start publishing."]}),(0,e.jsxs)(i.A,{direction:"row",spacing:1,children:[(0,e.jsx)(l.A,{variant:"outlined",onClick:I,disabled:h,children:"Resend confirmation email"}),(0,e.jsx)(l.A,{onClick:G,disabled:h,children:"Use a different account"})]})]}):(0,e.jsxs)(i.A,{spacing:2,children:[(0,e.jsxs)(az.A,{value:p,onChange:(a,b)=>q(b),children:[(0,e.jsx)(aA.A,{value:"login",label:"Log in"}),(0,e.jsx)(aA.A,{value:"signup",label:"Sign up"})]}),(0,e.jsx)(s.A,{label:"Email",type:"email",value:r,onChange:a=>t(a.target.value),fullWidth:!0,autoComplete:"username"}),(0,e.jsx)(s.A,{label:"Password",type:"password",value:u,onChange:a=>v(a.target.value),fullWidth:!0,autoComplete:"signup"===p?"new-password":"current-password"}),"signup"===p&&(0,e.jsx)(s.A,{label:"Publisher handle",value:w,onChange:a=>x(a.target.value),fullWidth:!0,autoComplete:"username",helperText:"A unique handle for publishing packages, e.g. your-name"}),(0,e.jsx)(g.default,{children:(0,e.jsx)(l.A,{variant:"contained",onClick:F,disabled:h||!r.trim()||!u||"signup"===p&&!w.trim(),children:"signup"===p?"Sign up":"Log in"})}),"login"===p&&(0,e.jsx)(g.default,{children:(0,e.jsx)(l.A,{variant:"text",size:"small",onClick:J,disabled:h,sx:{textTransform:"none",px:0},children:"Forgot password?"})}),(0,e.jsx)(M.A,{children:"or"}),(0,e.jsx)(i.A,{direction:"row",spacing:1,flexWrap:"wrap",useFlexGap:!0,children:(0,e.jsx)(l.A,{variant:"outlined",onClick:()=>H("github"),disabled:h,children:"Continue with GitHub"})})]}),(0,e.jsx)(M.A,{sx:{my:3}}),(0,e.jsx)(j.default,{variant:"subtitle2",gutterBottom:!0,children:"Registry URL"}),(0,e.jsxs)(j.default,{variant:"body2",color:"text.secondary",sx:{mb:1},children:["Leave blank to use the default (",C,")."]}),(0,e.jsxs)(i.A,{direction:"row",spacing:1,alignItems:"center",flexWrap:"wrap",useFlexGap:!0,children:[(0,e.jsx)(s.A,{size:"small",placeholder:C,value:y,onChange:a=>z(a.target.value),sx:{minWidth:320}}),(0,e.jsx)(l.A,{variant:"outlined",onClick:K,disabled:h,children:"Save"})]})]})}c(63281),c(83434),c(28055),c(63654),(0,aB.h)("frontend/services/packages");let aG=()=>{throw Error("PackageService can only be used in browser environment")},aH=new Proxy({},{get(a,b){let c=aG(),d=c[b];return"function"==typeof d?d.bind(c):d}}),aI=/\{\{secret\.([A-Za-z0-9_.-]+)\}\}/g,aJ="encrypted:",aK=/^[A-Za-z0-9_.-]+$/,aL=["path","repo","token","email","url-cred","name","other"];function aM(a){let b=new Set,c=a=>{if("string"==typeof a){for(let c of function(a){let b;if("string"!=typeof a)return[];let c=[],d=RegExp(aI.source,"g");for(;null!==(b=d.exec(a));)c.includes(b[1])||c.push(b[1]);return c}(a))b.add(c);return}if(Array.isArray(a)){for(let b of a)c(b);return}if(a&&"object"==typeof a)for(let b of Object.values(a))c(b)};return c(a),Array.from(b)}var aN=c(48716);let aO=aN.object({name:aN.string().min(1).regex(aK,"invalid secret name"),description:aN.string().optional(),required:aN.boolean(),default:aN.string().optional()}).strict(),aP=aN.object({name:aN.string().min(1).regex(aK,"invalid global variable name"),description:aN.string().optional(),required:aN.boolean(),isSecret:aN.boolean().optional()}).strict(),aQ=aN.discriminatedUnion("kind",[aN.object({kind:aN.literal("secret"),secret:aN.string().min(1)}).strict(),aN.object({kind:aN.literal("global"),var:aN.string().min(1)}).strict(),aN.object({kind:aN.literal("none")}).strict()]),aR=aN.object({id:aN.string().min(1),name:aN.string().min(1),displayName:aN.string().optional(),description:aN.string().optional(),baseUrl:aN.string().optional(),provider:aN.string().optional(),adapter:aN.string().optional(),promptTemplate:aN.string().optional(),reasoningSchema:aN.string().optional(),temperature:aN.string().optional(),reasoningEffort:aN.enum(["minimal","low","medium","high","xhigh","max","ultra"]).optional(),thinkingLevel:aN.enum(["minimal","low","medium","high"]).optional(),thinkingBudget:aN.number().int().min(-1).optional(),serviceTier:aN.enum(["default","priority"]).optional(),functionCallingSchema:aN.string().optional(),contextWindow:aN.number().optional(),maxTurns:aN.number().optional(),maxTokens:aN.number().optional(),folder:aN.string().optional(),favorite:aN.boolean().optional(),apiKeyRef:aQ}).strict(),aS=aN.object({sourceType:aN.enum(["github","registry","marketplace","remote"]),ref:aN.string().optional(),url:aN.string().optional(),name:aN.string().optional()}).strict().superRefine((a,b)=>{"remote"!==a.sourceType||a.url||b.addIssue({code:"custom",message:"installOrigin 'remote' requires a url"}),"github"!==a.sourceType&&"registry"!==a.sourceType||a.ref||b.addIssue({code:"custom",message:`installOrigin '${a.sourceType}' requires a ref`})}),aT=aN.object({name:aN.string().min(1),isSecret:aN.boolean(),secretRef:aN.string().optional(),globalVar:aN.string().optional(),globalTemplate:aN.string().optional()}).strict().superRefine((a,b)=>{void 0===a.globalTemplate||/\$\{global:[A-Za-z0-9_.-]+\}/.test(a.globalTemplate)||b.addIssue({code:"custom",path:["globalTemplate"],message:"globalTemplate must contain at least one ${global:NAME} reference"})}),aU=aN.object({index:aN.number().int().nonnegative(),value:aN.string().min(1)}).strict().superRefine((a,b)=>{/\$\{global:[A-Za-z0-9_.-]+\}/.test(a.value)||b.addIssue({code:"custom",path:["value"],message:"argument template must contain at least one ${global:NAME} reference"})}),aV=aN.object({name:aN.string().min(1),transport:aN.enum(["stdio","sse","streamable","websocket"]),disabled:aN.boolean().optional(),autoApprove:aN.array(aN.string()).optional(),folder:aN.string().optional(),installOrigin:aS,envDeclarations:aN.array(aT),headerDeclarations:aN.array(aT).optional(),argTemplates:aN.array(aU).optional()}).strict(),aW=aN.object({flow:aN.object({id:aN.string().min(1),name:aN.string().min(1),nodes:aN.array(aN.any()),edges:aN.array(aN.any())}).catchall(aN.unknown()),references:aN.object({flowIds:aN.array(aN.string()).optional(),modelIds:aN.array(aN.string()).optional(),mcpServerNames:aN.array(aN.string()).optional()}).optional()}),aX=aN.object({id:aN.string().min(1),name:aN.string().min(1),enabled:aN.boolean(),flowId:aN.string().min(1),prompt:aN.string(),trigger:aN.any()}).catchall(aN.unknown()),aY=aN.object({schemaVersion:aN.literal(1),id:aN.string().min(1),name:aN.string().min(1),description:aN.string().optional(),version:aN.string().regex(/^\d+\.\d+\.\d+(?:-[0-9A-Za-z-.]+)?(?:\+[0-9A-Za-z-.]+)?$/,"version must be valid semver"),author:aN.string().optional(),publisher:aN.string().optional(),tags:aN.array(aN.string()).optional(),requiredGlobals:aN.array(aN.string()).optional(),globals:aN.array(aP).optional(),secrets:aN.array(aO),models:aN.array(aR),mcpServers:aN.array(aV),flows:aN.array(aW),plannedExecutions:aN.array(aX)}).superRefine((a,b)=>{(function a(b){return"string"==typeof b?b.startsWith(aJ):Array.isArray(b)?b.some(a):!!b&&"object"==typeof b&&Object.values(b).some(a)})(a)&&b.addIssue({code:"custom",message:`package contains an '${aJ}' value; secret material must never be serialized`});let c=new Set(a.secrets.map(a=>a.name)),d=new Set(aM(a));for(let b of a.models)"secret"===b.apiKeyRef.kind&&d.add(b.apiKeyRef.secret);for(let b of a.mcpServers)for(let a of[...b.envDeclarations,...b.headerDeclarations??[]])a.secretRef&&d.add(a.secretRef);for(let a of d)c.has(a)||b.addIssue({code:"custom",message:`secret "${a}" is referenced but not declared in secrets[]`});let e=new Set(a.flows.map(a=>a.flow.id));a.plannedExecutions.forEach((a,c)=>{e.has(a.flowId)||b.addIssue({code:"custom",path:["plannedExecutions",c,"flowId"],message:`plannedExecution "${a.name}" references unknown flow id "${a.flowId}"`})}),a.flows.forEach((a,c)=>{for(let d of a.references?.flowIds??[])e.has(d)||b.addIssue({code:"custom",path:["flows",c,"references","flowIds"],message:`flow "${a.flow.name}" references unknown subflow id "${d}"`})})}),aZ=(0,aB.h)("frontend/components/Packages/PackageWizard"),a$=/^\d+\.\d+\.\d+(?:-[0-9A-Za-z-.]+)?(?:\+[0-9A-Za-z-.]+)?$/,a_=["Select contents","Resolve & validate","Secret review","Metadata","Export"];function a0(a){return a.replace(/^SECRET_/,"")}function a1({open:a,onClose:b}){let c=(0,q.A)(),d=(0,r.A)(c.breakpoints.down("sm")),[h,m]=(0,f.useState)(0),[n,o]=(0,f.useState)({flows:[],models:[],mcpServers:[],plannedExecutions:[]}),[p,C]=(0,f.useState)(!0),[D,E]=(0,f.useState)(new Set),[F,G]=(0,f.useState)(new Set),[H,I]=(0,f.useState)(new Set),[J,K]=(0,f.useState)(new Set),[U,V]=(0,f.useState)(""),[W,X]=(0,f.useState)(""),[Y,Z]=(0,f.useState)(""),[$,_]=(0,f.useState)(""),[aa,ab]=(0,f.useState)(null),[ad,ae]=(0,f.useState)([]),[ag,ah]=(0,f.useState)(!1),[ai,aj]=(0,f.useState)(null),[ak,al]=(0,f.useState)(null),[am,an]=(0,f.useState)({}),[ao,ap]=(0,f.useState)(new Set),[aq,ar]=(0,f.useState)([]),[as,at]=(0,f.useState)(!1),[au,az]=(0,f.useState)(!1),[aA,aB]=(0,f.useState)(null),[aD,aE]=(0,f.useState)([]),[aH,aI]=(0,f.useState)(""),[aJ,aN]=(0,f.useState)(""),[aO,aP]=(0,f.useState)(!1),[aQ,aR]=(0,f.useState)(!1),[aS,aT]=(0,f.useState)(""),[aU,aV]=(0,f.useState)(""),[aW,aX]=(0,f.useState)("other"),[a1,a2]=(0,f.useState)(null),[a3,a4]=(0,f.useState)(!1),[a5,a6]=(0,f.useState)(!1),[a7,a8]=(0,f.useState)(null),[a9,ba]=(0,f.useState)([]),[bb,bc]=(0,f.useState)(""),[bd,be]=(0,f.useState)(!1),[bf,bg]=(0,f.useState)(""),[bh,bi]=(0,f.useState)("1.0.0"),[bj,bk]=(0,f.useState)(""),[bl,bm]=(0,f.useState)(""),[bn,bo]=(0,f.useState)(!1),[bp,bq]=(0,f.useState)(null),[br,bs]=(0,f.useState)(null),[bt,bu]=(0,f.useState)(!1),[bv,bw]=(0,f.useState)(null),bx=(0,f.useMemo)(()=>({flowIds:Array.from(D),modelIds:Array.from(F),mcpServerNames:Array.from(H),plannedExecutionIds:Array.from(J)}),[D,F,H,J]),by=0===D.size&&0===F.size&&0===H.size&&0===J.size,bz=a=>b=>{a(a=>{let c=new Set(a);return c.has(b)?c.delete(b):c.add(b),c})},bA=(0,f.useCallback)(async a=>{let b;ae([]);try{b=await a.text()}catch(a){ae([a instanceof Error?a.message:"Failed to read the file"]);return}let c=function(a){let b;try{b=JSON.parse(a)}catch(a){return{ok:!1,errors:[`Not valid JSON: ${a instanceof Error?a.message:String(a)}`]}}let c=function(a){let b=aY.safeParse(a);if(!b.success)return{success:!1,errors:b.error.issues.map(a=>{let b=a.path.join(".");return b?`${b}: ${a.message}`:a.message})};let c=b.data;return{success:!0,data:c,warnings:function(a){let b=new Set(aM(a));for(let c of a.models)"secret"===c.apiKeyRef.kind&&b.add(c.apiKeyRef.secret);for(let c of a.mcpServers)for(let a of[...c.envDeclarations,...c.headerDeclarations??[]])a.secretRef&&b.add(a.secretRef);return a.secrets.filter(a=>!b.has(a.name)).map(a=>`secret "${a.name}" is declared but never referenced`)}(c)}}(b);return c.success&&c.data?{ok:!0,package:c.data}:{ok:!1,errors:c.errors??["Not a valid FLUJO package manifest"]}}(b);if(!c.ok){ab(null),ae(c.errors.slice(0,8));return}let d=function(a,b){let c=new Set(b.flowIds),d=new Set(b.modelIds),e=new Set(b.mcpServerNames),f=new Set(b.plannedExecutionIds),g=[],h={flowIds:[],modelIds:[],mcpServerNames:[],plannedExecutionIds:[]};for(let b of a.flows??[]){let a=b?.flow?.id;a&&(c.has(a)?h.flowIds.push(a):g.push({type:"flow",label:b.flow?.name?`${b.flow.name} (${a})`:a}))}for(let b of a.models??[])b?.id&&(d.has(b.id)?h.modelIds.push(b.id):g.push({type:"model",label:b.displayName||b.name||b.id}));for(let b of a.mcpServers??[])b?.name&&(e.has(b.name)?h.mcpServerNames.push(b.name):g.push({type:"mcpServer",label:b.name}));for(let b of a.plannedExecutions??[]){let a=b?.id;a&&(f.has(a)?h.plannedExecutionIds.push(a):g.push({type:"plannedExecution",label:b.name||a}))}return{selection:h,metadata:{name:a.name??"",version:a.version??"",description:a.description??"",tags:a.tags?[...a.tags]:[]},secretNames:(a.secrets??[]).map(a=>a.name).filter(Boolean),missing:g}}(c.package,{flowIds:n.flows.map(a=>a.id),modelIds:n.models.map(a=>a.id),mcpServerNames:n.mcpServers.map(a=>a.id),plannedExecutionIds:n.plannedExecutions.map(a=>a.id)});E(new Set(d.selection.flowIds)),G(new Set(d.selection.modelIds)),I(new Set(d.selection.mcpServerNames)),K(new Set(d.selection.plannedExecutionIds)),bg(d.metadata.name),bi(d.metadata.version),bk(d.metadata.description),bm(d.metadata.tags.join(", ")),aj(null),al(null),an({}),ap(new Set),ar([]),az(!1),aB(null),aE([]),bq(null),bs(null),bw(null),ab(d),aZ.info("Imported package manifest into the wizard",{name:d.metadata.name,version:d.metadata.version,missing:d.missing.length})},[n]),bB=(0,f.useCallback)(async()=>{ah(!0),al(null),aj(null),an({}),ap(new Set),ar([]),az(!1),aB(null),aE([]);try{let a=await aG().resolve(bx);aj(a),an(Object.fromEntries((a.globals??[]).map(a=>[a.name,a.description??""])))}catch(a){al(a instanceof Error?a.message:"Failed to resolve dependencies")}finally{ah(!1)}},[bx]),bC=(0,f.useMemo)(()=>aa?new Set(aa.secretNames):null,[aa]),bD=(0,f.useCallback)(async a=>{at(!0),aB(null);try{let b=await aG().deriveSecrets(bx,{modelIdentifier:a,enableEntropy:aO,enableRepoSlug:aQ});ar(a=>{let c=new Map(a.map(a=>[a.id,a.accepted])),d=new Map(a.map(a=>[a.id,a.suggestedSecretName])),e=a.filter(a=>"manual"===a.source),f=b.proposals.map(a=>({...a,accepted:c.has(a.id)?c.get(a.id):bC?bC.has(a.suggestedSecretName):"low"!==a.confidence,suggestedSecretName:d.get(a.id)??a.suggestedSecretName})),g=new Set(f.map(a=>a.id));return[...f,...e.filter(a=>!g.has(a.id))]}),aE(b.warnings??[])}catch(a){aB(a instanceof Error?a.message:"Failed to derive secrets")}finally{at(!1),az(!0)}},[bx,aO,aQ,bC]),bE=a=>ar(b=>b.map(b=>({...b,accepted:a}))),bF=()=>{a2(null);let a=function(a){let b=(a.excerpt??"").trim();if(!b||b.length>2e3)return null;let c=(a.secretName??"").trim();if(c.length>128)return null;let d=a.kind??"other",e=aK.test(c)?c.toUpperCase():function(a,b){let c=`${a}_${b}`.toUpperCase().replace(/[^A-Z0-9_.-]+/g,"_").replace(/^[_.-]+|[_.-]+$/g,"")||`${a}_SECRET`;return aK.test(c)?c:`${a}_SECRET`}("SECRET",c||b.slice(0,16)),f=(a.location??"manual").trim()||"manual";return{id:`sp_${function(a){let b=5381;for(let c=0;c<a.length;c++)b=(b<<5)+b^a.charCodeAt(c);return(b>>>0).toString(16).padStart(8,"0")}(`${f}\0${b}`)}`,location:f,excerpt:b,kind:d,source:"manual",confidence:"high",suggestedSecretName:e,suggestedDescription:a.description?.trim()||void 0,rationale:"Added manually",accepted:!0}}({excerpt:aS,secretName:aU,kind:aW});if(!a)return void a2("Enter a non-empty value to redact (under 2000 characters).");ar(b=>b.some(b=>b.id===a.id)?b:[a,...b]),aT(""),aV(""),aX("other")},bG=(0,f.useCallback)(async()=>{a4(!0),a8(null),bc(""),a6(!0);try{let a=await aG().scanTargets(bx);ba(a)}catch(a){a8(a instanceof Error?a.message:"Failed to load candidate values"),ba([])}finally{a6(!1)}},[bx]),bH=(0,f.useMemo)(()=>{let a=bb.trim().toLowerCase();return a?a9.filter(b=>`${b.text} ${b.location} ${b.source}`.toLowerCase().includes(a)):a9},[a9,bb]),bI=(0,f.useMemo)(()=>{let a=new Map;for(let b of aq){let c=`${b.kind}::${b.excerpt}`,d=a.get(c);d?(d.ids.push(b.id),d.locations.push(b.location)):a.set(c,{key:c,ids:[b.id],locations:[b.location],kind:b.kind,source:b.source,confidence:b.confidence,excerpt:b.excerpt,suggestedSecretName:b.suggestedSecretName,rationale:b.rationale,accepted:b.accepted})}return Array.from(a.values())},[aq]),bJ=(0,f.useMemo)(()=>{let a=aJ.trim().toLowerCase();return a?bI.filter(b=>`${b.excerpt} ${b.locations.join(" ")} ${b.kind} ${b.suggestedSecretName}`.toLowerCase().includes(a)):bI},[bI,aJ]),bK=(0,f.useMemo)(()=>{if(!aa||!au)return[];let a=new Set([...(ai?.secrets??[]).map(a=>a.name),...aq.map(a=>a.suggestedSecretName)]);return aa.secretNames.filter(b=>!a.has(b))},[aa,au,ai,aq]),bL=(0,f.useMemo)(()=>{let a=new Map;for(let b of bI)a.set(b.kind,(a.get(b.kind)??0)+1);return Array.from(a.entries()).sort((a,b)=>b[1]-a[1])},[bI]),bM=(0,f.useCallback)(async()=>{bo(!0),bs(null),bq(null);try{let a=bl.split(",").map(a=>a.trim()).filter(Boolean),b=await aG().build(bx,{id:`pkg-${Date.now()}`,name:bf.trim(),version:bh.trim(),description:bj.trim()||void 0,tags:a.length?a:void 0},aq.filter(a=>a.accepted),(ai?.globals??[]).map(a=>({...a,description:am[a.name]?.trim()||a.description})),Array.from(ao));bq(b),b.ok||bs(b.errors&&b.errors[0]||"Package build failed")}catch(a){bs(a instanceof Error?a.message:"Failed to build package")}finally{bo(!1)}},[bx,bf,bh,bj,bl,aq,ai,am,ao]),bN=(0,f.useCallback)(async()=>{if(bp?.json){bu(!0),bw(null);try{let a=JSON.parse(bp.json),b=await aC().publish(a);bw(b)}catch(a){bw({ok:!1,code:"error",error:a instanceof Error?a.message:"Failed to publish package"})}finally{bu(!1)}}},[bp]),bO=()=>{if(!bp?.json)return;let a=new Blob([bp.json],{type:"application/json"}),b=URL.createObjectURL(a),c=document.createElement("a");c.href=b;let d=bf.trim().replace(/[^A-Za-z0-9_.-]+/g,"-").replace(/^-+|-+$/g,"")||"package";c.download=`${d}-${bh.trim()}.flujo-package.json`,document.body.appendChild(c),c.click(),c.remove(),URL.revokeObjectURL(b)},bP=async()=>{if(0===h){await bB(),m(1);return}if(3===h){m(4),await bM();return}m(a=>Math.min(a+1,a_.length-1))},bQ=a$.test(bh.trim()),bR=bf.trim().length>0&&bQ,bS=!!(ai&&!ai.mcp.ok),bT=0===h?by||ag:1===h?ag||!!ak||bS:3===h?!bR:4===h,bU=(a,b,c,d,f,h)=>{let i=f.trim().toLowerCase(),l=i?b.filter(a=>a.label.toLowerCase().includes(i)):b;return(0,e.jsxs)(g.default,{sx:{flex:1,minWidth:240},children:[(0,e.jsxs)(j.default,{variant:"subtitle2",gutterBottom:!0,children:[a," ",c.size>0&&(0,e.jsx)(k.A,{label:c.size,size:"small"})]}),(0,e.jsx)(s.A,{size:"small",fullWidth:!0,placeholder:`Search ${a.toLowerCase()}…`,value:f,onChange:a=>h(a.target.value),InputProps:{startAdornment:(0,e.jsx)(t.A,{position:"start",children:(0,e.jsx)(ax.A,{fontSize:"small"})})},sx:{mb:1}}),0===b.length?(0,e.jsx)(j.default,{variant:"body2",color:"text.secondary",children:"None available"}):0===l.length?(0,e.jsxs)(j.default,{variant:"body2",color:"text.secondary",children:["No matches for “",f,"”."]}):(0,e.jsx)(u.A,{dense:!0,sx:{maxHeight:{xs:240,md:"45vh"},overflow:"auto",border:1,borderColor:"divider",borderRadius:1},children:l.map(a=>(0,e.jsx)(v.Ay,{disablePadding:!0,children:(0,e.jsxs)(w.A,{onClick:()=>d(a.id),dense:!0,children:[(0,e.jsx)(x.A,{sx:{minWidth:36},children:(0,e.jsx)(y.A,{edge:"start",checked:c.has(a.id),tabIndex:-1,disableRipple:!0})}),(0,e.jsx)(z.A,{primary:a.label})]})},a.id))})]})};return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)(R.A,{open:a,onClose:b,maxWidth:"lg",fullWidth:!0,fullScreen:d,PaperProps:{sx:{height:d?"100%":"90vh",maxHeight:d?"100%":"90vh"}},children:[(0,e.jsx)(S.A,{children:"Create package"}),(0,e.jsxs)(T.A,{dividers:!0,sx:{overflow:"auto"},children:[(0,e.jsx)(ac,{activeStep:h,sx:{mb:3},children:a_.map(a=>(0,e.jsx)(af,{children:(0,e.jsx)(av,{children:a})},a))}),(()=>{switch(h){case 0:return p?(0,e.jsx)(g.default,{sx:{display:"flex",justifyContent:"center",p:4},children:(0,e.jsx)(A.default,{})}):(0,e.jsxs)(i.A,{spacing:2,children:[(0,e.jsx)(j.default,{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,e.jsxs)(i.A,{direction:"row",spacing:1,alignItems:"center",flexWrap:"wrap",useFlexGap:!0,children:[(0,e.jsxs)(l.A,{component:"label",variant:"outlined",startIcon:(0,e.jsx)(ay,{}),children:["Import manifest (.json)",(0,e.jsx)("input",{type:"file",accept:"application/json,.json",hidden:!0,onChange:a=>{let b=a.target.files?.[0];a.target.value="",b&&bA(b)}})]}),(0,e.jsx)(j.default,{variant:"caption",color:"text.secondary",children:"Restores the selection, metadata and accepted secrets from a package you exported earlier."})]}),ad.length>0&&(0,e.jsxs)(B.A,{severity:"error",onClose:()=>ae([]),children:[(0,e.jsx)(L,{children:"Could not import that file"}),ad.map((a,b)=>(0,e.jsx)("div",{children:a},b))]}),aa&&(0,e.jsxs)(B.A,{severity:aa.missing.length>0?"warning":"success",children:[(0,e.jsxs)(L,{children:["Imported “",aa.metadata.name,"” v",aa.metadata.version]}),"Restored ",aa.selection.flowIds.length," flow(s),"," ",aa.selection.modelIds.length," model(s),"," ",aa.selection.mcpServerNames.length," MCP server(s),"," ",aa.selection.plannedExecutionIds.length," planned execution(s) and"," ",aa.secretNames.length," secret name(s).",aa.missing.length>0&&(0,e.jsxs)(g.default,{sx:{mt:1},children:["No longer on this host (left unselected):",aa.missing.map((a,b)=>(0,e.jsxs)("div",{children:[a.type,": ",a.label]},b))]})]}),(0,e.jsxs)(i.A,{direction:"row",spacing:2,flexWrap:"wrap",useFlexGap:!0,children:[bU("Flows",n.flows,D,bz(E),U,V),bU("Models",n.models,F,bz(G),W,X),bU("MCP servers",n.mcpServers,H,bz(I),Y,Z),bU("Planned executions",n.plannedExecutions,J,bz(K),$,_)]})]});case 1:if(ag)return(0,e.jsx)(g.default,{sx:{display:"flex",justifyContent:"center",p:4},children:(0,e.jsx)(A.default,{})});if(ak)return(0,e.jsx)(B.A,{severity:"error",children:ak});if(!ai)return null;return(0,e.jsxs)(i.A,{spacing:2,children:[bS&&(0,e.jsxs)(B.A,{severity:"error",children:[(0,e.jsx)(L,{children:"Local MCP server(s) cannot be packaged"}),ai.mcp.errors.map((a,b)=>(0,e.jsx)("div",{children:a},b))]}),ai.resolved.autoAdded.length>0&&(0,e.jsxs)(B.A,{severity:"info",children:[(0,e.jsx)(L,{children:"Automatically included dependencies"}),ai.resolved.autoAdded.map((a,b)=>(0,e.jsxs)("div",{children:[a.type,": ",(0,e.jsx)("code",{children:a.id})," — ",a.reason]},b))]}),ai.resolved.warnings.length>0&&(0,e.jsxs)(B.A,{severity:"warning",children:[(0,e.jsx)(L,{children:"Warnings"}),ai.resolved.warnings.map((a,b)=>(0,e.jsx)("div",{children:a},b))]}),(0,e.jsx)(M.A,{}),(0,e.jsxs)(j.default,{variant:"body2",children:["Resolved: ",ai.resolved.flowIds.length," flow(s),"," ",ai.resolved.modelIds.length," model(s),"," ",ai.resolved.mcpServerNames.length," MCP server(s),"," ",ai.resolved.plannedExecutionIds.length," planned execution(s)."]}),ai.mcp.servers.length>0&&(0,e.jsx)(i.A,{direction:"row",spacing:1,flexWrap:"wrap",useFlexGap:!0,children:ai.mcp.servers.map(a=>(0,e.jsx)(k.A,{label:`${a.name} \xb7 ${a.sourceType}`,size:"small",color:"success",variant:"outlined"},a.name))})]});case 2:return(0,e.jsxs)(i.A,{spacing:2,children:[(0,e.jsx)(j.default,{variant:"subtitle2",children:"Global variables"}),(0,e.jsx)(j.default,{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."}),ai&&0!==(ai.globals??[]).length?(0,e.jsx)(i.A,{spacing:1.5,children:ai.globals.map(a=>(0,e.jsxs)(i.A,{direction:"row",spacing:1,alignItems:"flex-start",children:[(0,e.jsx)(s.A,{size:"small",label:a.name,value:am[a.name]??"",onChange:b=>an(c=>({...c,[a.name]:b.target.value})),helperText:a.isSecret?"Secret global; its value is never included in the package":"Description shown during package installation",fullWidth:!0}),a.isSecret&&(0,e.jsx)(k.A,{label:"secret global",size:"small",color:"warning",variant:"outlined"})]},a.name))}):(0,e.jsx)(B.A,{severity:"success",children:"No global variables referenced by this package."}),(0,e.jsx)(M.A,{}),(0,e.jsx)(j.default,{variant:"subtitle2",children:"Declared secrets (entity keys)"}),(0,e.jsx)(j.default,{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."}),ai&&0!==ai.secrets.length?(0,e.jsx)(u.A,{dense:!0,children:ai.secrets.map(a=>(0,e.jsxs)(v.Ay,{children:[(0,e.jsx)(y.A,{edge:"start",checked:!ao.has(a.name),onChange:b=>ap(c=>{let d=new Set(c);return b.target.checked?d.delete(a.name):d.add(a.name),d}),inputProps:{"aria-label":`Include ${a.name} in package secrets`}}),(0,e.jsx)(z.A,{primary:(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("code",{children:a0(a.name)})," ",a.required&&(0,e.jsx)(k.A,{label:"required",size:"small",color:"warning"})]}),secondary:ao.has(a.name)?"Excluded — the package will not request this value":a.description})]},a.name))}):(0,e.jsx)(B.A,{severity:"success",children:"No entity secrets to declare."}),(0,e.jsx)(M.A,{}),(0,e.jsx)(j.default,{variant:"subtitle2",children:"Detected secrets in content"}),(0,e.jsxs)(j.default,{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,e.jsx)("code",{children:"{{secret.NAME}}"})," placeholder everywhere they occur."]}),as&&(0,e.jsx)(g.default,{sx:{display:"flex",justifyContent:"center",p:2},children:(0,e.jsx)(A.default,{size:28})}),aA&&(0,e.jsx)(B.A,{severity:"error",children:aA}),!as&&au&&0===aq.length&&(0,e.jsx)(B.A,{severity:"success",children:"No likely secrets detected in the packaged content."}),aq.length>0&&(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(i.A,{direction:"row",spacing:.5,flexWrap:"wrap",useFlexGap:!0,children:bL.map(([a,b])=>(0,e.jsx)(k.A,{size:"small",variant:"outlined",label:`${a}: ${b}`},a))}),(0,e.jsxs)(i.A,{direction:"row",spacing:1,alignItems:"center",flexWrap:"wrap",useFlexGap:!0,children:[(0,e.jsx)(l.A,{size:"small",onClick:()=>bE(!0),children:"Accept all"}),(0,e.jsx)(l.A,{size:"small",onClick:()=>bE(!1),children:"Reject all"}),(0,e.jsx)(s.A,{size:"small",placeholder:"Filter detected secrets…",value:aJ,onChange:a=>aN(a.target.value),sx:{minWidth:200,flex:1}}),(0,e.jsxs)(j.default,{variant:"caption",color:"text.secondary",sx:{alignSelf:"center"},children:[bI.filter(a=>a.accepted).length," of ",bI.length," accepted"]})]}),(0,e.jsxs)(u.A,{dense:!0,sx:{border:1,borderColor:"divider",borderRadius:1,maxHeight:280,overflow:"auto"},children:[0===bJ.length&&(0,e.jsx)(v.Ay,{children:(0,e.jsx)(z.A,{primary:(0,e.jsxs)(j.default,{variant:"body2",color:"text.secondary",children:["No rows match “",aJ,"”."]})})}),bJ.map(a=>(0,e.jsxs)(v.Ay,{alignItems:"flex-start",divider:!0,children:[(0,e.jsx)(x.A,{sx:{minWidth:36,mt:1},children:(0,e.jsx)(y.A,{edge:"start",checked:!!a.accepted,onChange:()=>{let b;return b=a.ids,ar(a=>{let c=new Set(b),d=!a.find(a=>c.has(a.id))?.accepted;return a.map(a=>c.has(a.id)?{...a,accepted:d}:a)})},tabIndex:-1,disableRipple:!0})}),(0,e.jsx)(z.A,{primary:(0,e.jsxs)(i.A,{direction:"row",spacing:1,alignItems:"center",flexWrap:"wrap",useFlexGap:!0,children:[(0,e.jsx)(k.A,{label:a.kind,size:"small"}),(0,e.jsx)(k.A,{label:a.source,size:"small",variant:"outlined",color:"model"===a.source?"secondary":"manual"===a.source?"primary":"default"}),a.confidence&&(0,e.jsx)(k.A,{label:a.confidence,size:"small",variant:"outlined",color:"high"===a.confidence?"success":"low"===a.confidence?"warning":"default"}),a.locations.length>1&&(0,e.jsx)(k.A,{label:`${a.locations.length}\xd7`,size:"small",variant:"outlined"}),(0,e.jsx)(g.default,{component:"code",sx:{wordBreak:"break-all"},children:a.excerpt.length>80?`${a.excerpt.slice(0,80)}…`:a.excerpt})]}),secondary:(0,e.jsxs)(i.A,{spacing:.5,sx:{mt:.5},children:[(0,e.jsxs)(j.default,{variant:"caption",color:"text.secondary",children:[a.locations.length>1?`${a.locations.length} locations: ${a.locations.slice(0,3).join(", ")}${a.locations.length>3?", …":""}`:a.locations[0],a.rationale?` — ${a.rationale}`:""]}),(0,e.jsx)(s.A,{size:"small",label:"Secret name",value:a0(a.suggestedSecretName),onChange:b=>{var c,d;let e,f;return e=a.ids,c=a.suggestedSecretName,d=b.target.value,f=c.startsWith("SECRET_")?`SECRET_${d.replace(/^SECRET_/,"")}`:d,ar(a=>{let b=new Set(e);return a.map(a=>b.has(a.id)?{...a,suggestedSecretName:f}:a)})},disabled:!a.accepted,sx:{maxWidth:320}})]}),primaryTypographyProps:{component:"div"},secondaryTypographyProps:{component:"div"}})]},a.key))]})]}),bK.length>0&&(0,e.jsxs)(B.A,{severity:"warning",children:[(0,e.jsx)(L,{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: ",bK.map(a0).join(", "),"."]}),aD.length>0&&(0,e.jsxs)(B.A,{severity:"warning",children:[(0,e.jsx)(L,{children:"Notes"}),aD.map((a,b)=>(0,e.jsx)("div",{children:a},b))]}),(0,e.jsx)(M.A,{}),(0,e.jsx)(j.default,{variant:"subtitle2",children:"Add a secret manually"}),(0,e.jsxs)(j.default,{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,e.jsx)("code",{children:"{{secret.NAME}}"})," placeholder — it is never executed."]}),a1&&(0,e.jsx)(B.A,{severity:"error",children:a1}),(0,e.jsxs)(i.A,{direction:"row",spacing:1,alignItems:"flex-start",flexWrap:"wrap",useFlexGap:!0,children:[(0,e.jsx)(s.A,{size:"small",label:"Value to redact",value:aS,onChange:a=>aT(a.target.value),sx:{minWidth:240,flex:1}}),(0,e.jsx)(s.A,{size:"small",label:"Secret name",value:aU,onChange:a=>aV(a.target.value),sx:{minWidth:180}}),(0,e.jsx)(N.A,{size:"small",value:aW,onChange:a=>aX(a.target.value),sx:{minWidth:120},children:aL.map(a=>(0,e.jsx)(O.A,{value:a,children:a},a))}),(0,e.jsx)(l.A,{variant:"outlined",onClick:bF,disabled:!aS.trim(),children:"Add"}),(0,e.jsx)(l.A,{variant:"text",startIcon:(0,e.jsx)(ax.A,{}),onClick:()=>void bG(),disabled:by,children:"Pick from app"})]}),(0,e.jsx)(M.A,{}),(0,e.jsx)(j.default,{variant:"subtitle2",children:"Advanced scan options"}),(0,e.jsxs)(i.A,{direction:"row",spacing:2,flexWrap:"wrap",useFlexGap:!0,children:[(0,e.jsx)(P.A,{control:(0,e.jsx)(Q.A,{checked:aO,onChange:a=>{aP(a.target.checked),az(!1)}}),label:"Aggressive entropy scan"}),(0,e.jsx)(P.A,{control:(0,e.jsx)(Q.A,{checked:aQ,onChange:a=>{aR(a.target.checked),az(!1)}}),label:"Detect bare owner/repo slugs"}),(0,e.jsx)(l.A,{size:"small",variant:"text",onClick:()=>void bD(),disabled:as,children:"Re-scan"})]}),(0,e.jsx)(M.A,{}),(0,e.jsx)(j.default,{variant:"subtitle2",children:"Optional: model-driven scan"}),(0,e.jsx)(B.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,e.jsxs)(i.A,{direction:"row",spacing:1,alignItems:"center",flexWrap:"wrap",useFlexGap:!0,children:[(0,e.jsxs)(N.A,{size:"small",displayEmpty:!0,value:aH,onChange:a=>aI(a.target.value),sx:{minWidth:220},children:[(0,e.jsx)(O.A,{value:"",children:(0,e.jsx)("em",{children:"Select a model…"})}),n.models.map(a=>(0,e.jsx)(O.A,{value:a.id,children:a.label},a.id))]}),(0,e.jsx)(l.A,{variant:"outlined",disabled:!aH||as,onClick:()=>void bD(aH),children:"Scan with model"})]})]});case 3:return(0,e.jsxs)(i.A,{spacing:2,children:[(0,e.jsx)(s.A,{label:"Package name",value:bf,onChange:a=>bg(a.target.value),required:!0,fullWidth:!0,error:bf.length>0&&0===bf.trim().length}),(0,e.jsx)(s.A,{label:"Version",value:bh,onChange:a=>bi(a.target.value),required:!0,fullWidth:!0,error:bh.length>0&&!bQ,helperText:bh.length>0&&!bQ?"Must be a semantic version (e.g. 1.0.0)":" "}),(0,e.jsx)(s.A,{label:"Description",value:bj,onChange:a=>bk(a.target.value),fullWidth:!0,multiline:!0,minRows:2}),(0,e.jsx)(s.A,{label:"Tags (comma-separated)",value:bl,onChange:a=>bm(a.target.value),fullWidth:!0})]});case 4:if(bn)return(0,e.jsx)(g.default,{sx:{display:"flex",justifyContent:"center",p:4},children:(0,e.jsx)(A.default,{})});if(br)return(0,e.jsx)(B.A,{severity:"error",children:br});if(bp?.ok)return(0,e.jsxs)(i.A,{spacing:2,children:[(0,e.jsxs)(B.A,{severity:"success",children:[(0,e.jsx)(L,{children:"Package built"}),(0,e.jsx)("code",{children:bf.trim()})," v",bh.trim()," is ready to export."]}),bp.warnings.length>0&&(0,e.jsxs)(B.A,{severity:"warning",children:[(0,e.jsx)(L,{children:"Warnings"}),bp.warnings.map((a,b)=>(0,e.jsx)("div",{children:a},b))]}),(0,e.jsx)(l.A,{variant:"contained",onClick:bO,children:"Download package manifest (.json)"}),(0,e.jsx)(M.A,{}),(0,e.jsx)(j.default,{variant:"subtitle2",children:"Publish to the FLUJO package registry"}),(0,e.jsx)(j.default,{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."}),bv?.ok?(0,e.jsxs)(B.A,{severity:"success",children:[(0,e.jsx)(L,{children:"Published"}),bv.name||bf.trim()," v",bv.version||bh.trim()," is live.",bv.url&&(0,e.jsx)("div",{children:(0,e.jsx)("a",{href:bv.url,target:"_blank",rel:"noreferrer",children:bv.url})})]}):(0,e.jsxs)(e.Fragment,{children:[bv&&!bv.ok&&(0,e.jsx)(B.A,{severity:"unconfirmed"===bv.code||"not_authenticated"===bv.code?"warning":"error",children:bv.error||"Failed to publish package."}),(0,e.jsxs)(i.A,{direction:"row",spacing:1,flexWrap:"wrap",useFlexGap:!0,children:[(0,e.jsx)(l.A,{variant:"outlined",onClick:()=>void bN(),disabled:bt,children:bt?"Publishing…":"Publish to registry"}),bv&&!bv.ok&&("not_authenticated"===bv.code||"unconfirmed"===bv.code)&&(0,e.jsx)(l.A,{variant:"contained",onClick:()=>be(!0),disabled:bt,children:"Log in to registry"})]})]})]});return null;default:return null}})()]}),(0,e.jsxs)(aw.A,{children:[(0,e.jsx)(l.A,{onClick:b,children:bp?.ok?"Close":"Cancel"}),(0,e.jsx)(g.default,{sx:{flex:1}}),(0,e.jsx)(l.A,{onClick:()=>m(a=>Math.max(a-1,0)),disabled:0===h||bn||ag,children:"Back"}),h<4&&(0,e.jsx)(l.A,{variant:"contained",onClick:bP,disabled:bT,children:3===h?"Build":"Next"})]})]}),(0,e.jsxs)(R.A,{open:bd,onClose:()=>be(!1),maxWidth:"sm",fullWidth:!0,children:[(0,e.jsx)(S.A,{children:"Log in to the package registry"}),(0,e.jsx)(T.A,{dividers:!0,children:(0,e.jsx)(aF,{})}),(0,e.jsxs)(aw.A,{children:[(0,e.jsx)(l.A,{onClick:()=>be(!1),children:"Done"}),(0,e.jsx)(l.A,{variant:"contained",onClick:()=>{be(!1),bN()},disabled:bt,children:"Retry publish"})]})]}),(0,e.jsxs)(R.A,{open:a3,onClose:()=>a4(!1),maxWidth:"md",fullWidth:!0,children:[(0,e.jsx)(S.A,{children:"Pick a value to redact"}),(0,e.jsxs)(T.A,{dividers:!0,children:[(0,e.jsx)(j.default,{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,e.jsx)(s.A,{size:"small",fullWidth:!0,placeholder:"Search values…",value:bb,onChange:a=>bc(a.target.value),InputProps:{startAdornment:(0,e.jsx)(t.A,{position:"start",children:(0,e.jsx)(ax.A,{fontSize:"small"})})},sx:{mb:2}}),a5?(0,e.jsx)(g.default,{sx:{display:"flex",justifyContent:"center",p:4},children:(0,e.jsx)(A.default,{})}):a7?(0,e.jsx)(B.A,{severity:"error",children:a7}):0===a9.length?(0,e.jsx)(B.A,{severity:"info",children:"No pickable plaintext values found in the packaged content."}):0===bH.length?(0,e.jsxs)(j.default,{variant:"body2",color:"text.secondary",children:["No values match “",bb,"”."]}):(0,e.jsx)(u.A,{dense:!0,sx:{border:1,borderColor:"divider",borderRadius:1,maxHeight:"50vh",overflow:"auto"},children:bH.map((a,b)=>(0,e.jsx)(v.Ay,{disablePadding:!0,divider:!0,children:(0,e.jsx)(w.A,{onClick:()=>{aT(a.text),a2(null),a4(!1)},alignItems:"flex-start",children:(0,e.jsx)(z.A,{primary:(0,e.jsx)(g.default,{component:"code",sx:{wordBreak:"break-all"},children:a.text.length>120?`${a.text.slice(0,120)}…`:a.text}),secondary:(0,e.jsxs)(i.A,{direction:"row",spacing:1,alignItems:"center",flexWrap:"wrap",useFlexGap:!0,sx:{mt:.5},children:[(0,e.jsx)(k.A,{label:a.source,size:"small",variant:"outlined"}),(0,e.jsx)(j.default,{variant:"caption",color:"text.secondary",children:a.location})]}),primaryTypographyProps:{component:"div"},secondaryTypographyProps:{component:"div"}})})},`${a.location}-${b}`))})]}),(0,e.jsx)(aw.A,{children:(0,e.jsx)(l.A,{onClick:()=>a4(!1),children:"Close"})})]})]})}var a2=c(7503),a3=c(14570),a4=c(53222);let a5=(0,aB.h)("frontend/components/Packages/InstalledPackagesList");function a6(){let[a,b]=(0,f.useState)([]),[c,d]=(0,f.useState)(!0),[h,n]=(0,f.useState)(null),[o,p]=(0,f.useState)(null),[q,r]=(0,f.useState)(!1),[u,v]=(0,f.useState)(null),[w,x]=(0,f.useState)(""),y=(0,f.useCallback)(async()=>{d(!0),n(null);try{let a=await fetch("/api/packages/installed");if(!a.ok)throw Error(`Failed to load installed packages (${a.status})`);let c=await a.json();b(c.packages??[])}catch(a){a5.warn("Failed to load installed packages",a),n(a instanceof Error?a.message:String(a))}finally{d(!1)}},[]),z=(0,f.useCallback)(async a=>{r(!0),v(null);try{let b=await fetch("/api/packages/uninstall",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({packageName:a.packageName})}),c=await b.json();if(!b.ok)throw Error(c.error??`Uninstall failed (${b.status})`);v(c),await y()}catch(a){a5.warn("Uninstall failed",a),n(a instanceof Error?a.message:String(a))}finally{r(!1),p(null)}},[y]),C=(0,f.useMemo)(()=>{let b=w.trim().toLowerCase();return b?a.filter(a=>`${a.packageName} ${a.version}`.toLowerCase().includes(b)):a},[a,w]);return(0,e.jsxs)(g.default,{sx:{maxWidth:{xs:"100%",md:1100},mx:"auto",mt:3},children:[(0,e.jsxs)(i.A,{direction:"row",spacing:1,alignItems:"center",sx:{mb:1},children:[(0,e.jsx)(j.default,{variant:"h6",children:"Installed packages"}),(0,e.jsx)(l.A,{size:"small",startIcon:(0,e.jsx)(a4.A,{}),onClick:()=>void y(),disabled:c,children:"Refresh"})]}),a.length>0&&(0,e.jsx)(s.A,{size:"small",fullWidth:!0,placeholder:"Search installed packages…",value:w,onChange:a=>x(a.target.value),InputProps:{startAdornment:(0,e.jsx)(t.A,{position:"start",children:(0,e.jsx)(ax.A,{fontSize:"small"})})},sx:{mb:2}}),h&&(0,e.jsx)(B.A,{severity:"error",sx:{mb:2},onClose:()=>n(null),children:h}),u&&(0,e.jsxs)(B.A,{severity:u.hasErrors?"warning":"success",sx:{mb:2},onClose:()=>v(null),children:['Uninstalled "',u.packageName,'": ',u.removed.length," removed,"," ",u.skipped.length," preserved/skipped",u.hasErrors?`, ${u.errors.length} error(s)`:"","."]}),c?(0,e.jsx)(g.default,{sx:{display:"flex",justifyContent:"center",p:3},children:(0,e.jsx)(A.default,{size:24})}):0===a.length?(0,e.jsx)(j.default,{variant:"body2",color:"text.secondary",children:"No packages installed yet."}):0===C.length?(0,e.jsxs)(j.default,{variant:"body2",color:"text.secondary",children:["No packages match “",w,"”."]}):(0,e.jsx)(i.A,{spacing:1,children:C.map(a=>(0,e.jsxs)(m.A,{variant:"outlined",sx:{p:2,display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,e.jsxs)(g.default,{children:[(0,e.jsxs)(i.A,{direction:"row",spacing:1,alignItems:"center",children:[(0,e.jsx)(j.default,{variant:"subtitle1",children:a.packageName}),(0,e.jsx)(k.A,{label:`v${a.version}`,size:"small",variant:"outlined"})]}),(0,e.jsxs)(j.default,{variant:"caption",color:"text.secondary",children:[a.entityCounts.flows," flows \xb7 ",a.entityCounts.models," models \xb7"," ",a.entityCounts.servers," servers \xb7 ",a.entityCounts.plannedExecutions," planned \xb7 installed ",new Date(a.installedAt).toLocaleString()]})]}),(0,e.jsx)(l.A,{color:"error",size:"small",startIcon:(0,e.jsx)(a3.A,{}),onClick:()=>p(a),disabled:q,children:"Uninstall"})]},a.packageName))}),(0,e.jsxs)(R.A,{open:null!==o,onClose:()=>q?void 0:p(null),children:[(0,e.jsxs)(S.A,{children:['Uninstall "',o?.packageName,'"?']}),(0,e.jsx)(T.A,{children:(0,e.jsxs)(a2.A,{children:["This removes the flows, models, MCP servers and planned executions this package",(0,e.jsx)("strong",{children:" created"}),". Pre-existing entities the package merely updated in place are preserved. This cannot be undone."]})}),(0,e.jsxs)(aw.A,{children:[(0,e.jsx)(l.A,{onClick:()=>p(null),disabled:q,children:"Cancel"}),(0,e.jsx)(l.A,{color:"error",variant:"contained",onClick:()=>o&&void z(o),disabled:q,startIcon:q?(0,e.jsx)(A.default,{size:16}):(0,e.jsx)(a3.A,{}),children:"Uninstall"})]})]})]})}var a7=c(82666),a8=c(30818),a9=c(423),ba=c(27114),bb=c(98463),bc=c(44079);let bd=(0,o.A)((0,e.jsx)("path",{d:"M12 7c-.55 0-1 .45-1 1v3H8c-.55 0-1 .45-1 1s.45 1 1 1h3v3c0 .55.45 1 1 1s1-.45 1-1v-3h3c.55 0 1-.45 1-1s-.45-1-1-1h-3V8c0-.55-.45-1-1-1m0-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8"}),"AddCircleOutlineRounded"),be=(0,o.A)((0,e.jsx)("path",{d:"M5 13h11.17l-4.88 4.88c-.39.39-.39 1.03 0 1.42s1.02.39 1.41 0l6.59-6.59c.39-.39.39-1.02 0-1.41l-6.58-6.6a.996.996 0 0 0-1.41 0c-.39.39-.39 1.02 0 1.41L16.17 11H5c-.55 0-1 .45-1 1s.45 1 1 1"}),"ArrowForwardRounded"),bf=(0,o.A)((0,e.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2M9.29 16.29 5.7 12.7a.996.996 0 0 1 0-1.41c.39-.39 1.02-.39 1.41 0L10 14.17l6.88-6.88c.39-.39 1.02-.39 1.41 0s.39 1.02 0 1.41l-7.59 7.59c-.38.39-1.02.39-1.41 0"}),"CheckCircleRounded"),bg=(0,o.A)((0,e.jsx)("path",{d:"M20 9V7c0-1.1-.9-2-2-2h-3c0-1.66-1.34-3-3-3S9 3.34 9 5H6c-1.1 0-2 .9-2 2v2c-1.66 0-3 1.34-3 3s1.34 3 3 3v4c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2v-4c1.66 0 3-1.34 3-3s-1.34-3-3-3m-2 10H6V7h12zm-9-6c-.83 0-1.5-.67-1.5-1.5S8.17 10 9 10s1.5.67 1.5 1.5S9.83 13 9 13m7.5-1.5c0 .83-.67 1.5-1.5 1.5s-1.5-.67-1.5-1.5.67-1.5 1.5-1.5 1.5.67 1.5 1.5M8 15h8v2H8z"}),"SmartToyOutlined"),bh=(0,o.A)((0,e.jsx)("path",{d:"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96M19 18H6c-2.21 0-4-1.79-4-4 0-2.05 1.53-3.76 3.56-3.97l1.07-.11.5-.95C8.08 7.14 9.94 6 12 6c2.62 0 4.88 1.86 5.39 4.43l.3 1.5 1.53.11c1.56.1 2.78 1.41 2.78 2.96 0 1.65-1.35 3-3 3m-5.55-8h-2.9v3H8l4 4 4-4h-2.55z"}),"CloudDownloadOutlined");var bi=c(33253),bj=c(22813),bk=c(92812);let bl=(0,aB.h)("frontend/components/Packages/InstallPackageCard");function bm({onInstalled:a}){let[b,c]=(0,f.useState)(""),[d,h]=(0,f.useState)([]),[m,n]=(0,f.useState)(!1),[o,p]=(0,f.useState)(null),[q,r]=(0,f.useState)(!1),[u,v]=(0,f.useState)(null),[w,x]=(0,f.useState)(null),[y,z]=(0,f.useState)(!1),[C,D]=(0,f.useState)(null),[E,F]=(0,f.useState)(null),[G,H]=(0,f.useState)(!1),[I,J]=(0,f.useState)(null),[K,L]=(0,f.useState)(null),[N,O]=(0,f.useState)({}),[P,Q]=(0,f.useState)({}),[U,V]=(0,f.useState)(null),[W,X]=(0,f.useState)(!1),[Y,Z]=(0,f.useState)(0),[$,_]=(0,f.useState)(null),[aa,ab]=(0,f.useState)({}),ad=(0,f.useCallback)(async a=>{n(!0),p(null);try{let b=await aH.searchRegistry({q:a.trim()||void 0,pageSize:24});h(b.items??[]),r(!0)}catch(a){bl.warn("Failed to search package registry",a),p(a instanceof Error?a.message:String(a)),h([])}finally{n(!1)}},[]),ae=(0,f.useCallback)(async()=>{if(w){z(!0),D(null);try{let a=await aD.deletePackage(w.id);if(!a.ok)return void D(a.error||"Failed to delete package.");h(a=>a.filter(a=>a.id!==w.id)),x(null),await ad(b)}catch(a){bl.warn("Package deletion failed",a),D(a instanceof Error?a.message:String(a))}finally{z(!1)}}},[w,b,ad]),ag=(0,f.useCallback)(async a=>{F(a),L(null),_(null),O({}),Q({}),V(null),X(!1),Z(0),ab({}),J(null),H(!0);try{let b=await aH.installFromRegistry({packageId:a.id,version:a.latestVersion,consentGranted:!1});if(!b.ok)return void J(b.errors?.[0]||"Failed to fetch package preview.");L(b);let c=b.preview?.models[0];V(c?.id??null),Z(+!c)}catch(a){bl.warn("Failed to fetch package preview",a),J(a instanceof Error?a.message:String(a))}finally{H(!1)}},[]),ah=(0,f.useCallback)(async()=>{if(E&&K){H(!0),J(null);try{let b=await aH.installFromRegistry({packageId:E.id,version:E.latestVersion,secrets:N,modelMappings:Object.fromEntries(Object.entries(P).filter(([,a])=>""!==a)),consentGranted:!0});_(b),L(null),b.ok&&a?.()}catch(a){bl.warn("Install failed",a),J(a instanceof Error?a.message:String(a))}finally{H(!1)}}},[E,K,N,P,a]),ai=(0,f.useCallback)(()=>{F(null),L(null),_(null),O({}),Q({}),V(null),X(!1),Z(0),ab({}),J(null)},[]),aj=K?.preview,ak=aj?.models.find(a=>a.id===U)??aj?.models[0],al=aj?.models.filter(a=>Object.prototype.hasOwnProperty.call(P,a.id)).length??0,am=aj?.models.every(a=>Object.prototype.hasOwnProperty.call(P,a.id))??!0,an=(0,f.useCallback)(a=>{V(a),X(!!P[a])},[P]),ao=(0,f.useCallback)(a=>{Q(b=>({...b,[a]:""})),X(!1)},[]),ap=(0,f.useCallback)((a,b)=>{Q(c=>({...c,[a]:b}))},[]);return(0,e.jsxs)(g.default,{sx:{maxWidth:{xs:"100%",md:1100},mx:"auto",mt:3},children:[(0,e.jsxs)(i.A,{direction:"row",spacing:1,alignItems:"center",sx:{mb:1},children:[(0,e.jsx)(bh,{color:"action"}),(0,e.jsx)(j.default,{variant:"h6",children:"Browse registry"})]}),(0,e.jsx)(s.A,{size:"small",fullWidth:!0,placeholder:"Search published packages…",value:b,onChange:a=>c(a.target.value),onKeyDown:a=>{"Enter"===a.key&&ad(b)},InputProps:{startAdornment:(0,e.jsx)(t.A,{position:"start",children:(0,e.jsx)(ax.A,{fontSize:"small"})}),endAdornment:m?(0,e.jsx)(t.A,{position:"end",children:(0,e.jsx)(A.default,{size:16})}):void 0},sx:{mb:2}}),o&&(0,e.jsx)(B.A,{severity:"error",sx:{mb:2},onClose:()=>p(null),children:o}),q&&!m&&0===d.length&&!o&&(0,e.jsxs)(j.default,{variant:"body2",color:"text.secondary",children:["No packages match “",b,"”."]}),(0,e.jsx)(a7.Ay,{container:!0,spacing:2,children:d.map(a=>(0,e.jsx)(a7.Ay,{item:!0,xs:12,sm:6,md:4,children:(0,e.jsxs)(a8.A,{variant:"outlined",sx:{height:"100%",display:"flex",flexDirection:"column"},children:[(0,e.jsx)(a9.A,{onClick:()=>void ag(a),sx:{flex:1},children:(0,e.jsxs)(ba.A,{children:[(0,e.jsxs)(i.A,{direction:"row",spacing:1,alignItems:"baseline",justifyContent:"space-between",children:[(0,e.jsx)(j.default,{variant:"subtitle1",noWrap:!0,children:a.name}),(0,e.jsx)(k.A,{size:"small",variant:"outlined",label:`v${a.latestVersion}`})]}),(0,e.jsx)(j.default,{variant:"caption",color:"text.secondary",display:"block",children:a.handle}),(0,e.jsx)(j.default,{variant:"body2",color:"text.secondary",sx:{mt:.5,minHeight:"2.5em"},children:a.description||"No description provided."}),(0,e.jsx)(i.A,{direction:"row",spacing:.5,sx:{mt:1,flexWrap:"wrap",gap:.5},children:a.tags.map(a=>(0,e.jsx)(k.A,{size:"small",label:a},a))}),(0,e.jsxs)(i.A,{direction:"row",spacing:.5,alignItems:"center",sx:{mt:1},children:[(0,e.jsx)(bi.A,{fontSize:"inherit",color:"disabled"}),(0,e.jsx)(j.default,{variant:"caption",color:"text.secondary",children:a.downloads})]})]})}),function(a,b){let c=b?.trim().replace(/^@/,"").toLocaleLowerCase();if(!c)return!1;let d=a.handle?.trim().replace(/^@/,"");if(d)return d.split("/")[0].toLocaleLowerCase()===c;let e=a.id.trim().replace(/^@/,"");return e.includes("/")&&e.split("/")[0].toLocaleLowerCase()===c}(a,u)&&(0,e.jsx)(bb.A,{sx:{justifyContent:"flex-end",pt:0},children:(0,e.jsx)(bc.A,{size:"small",color:"error","aria-label":`Delete ${a.name}`,onClick:()=>{D(null),x(a)},children:(0,e.jsx)(a3.A,{fontSize:"small"})})})]})},a.id))}),(0,e.jsxs)(R.A,{open:null!==w,onClose:y?void 0:()=>x(null),maxWidth:"xs",fullWidth:!0,children:[(0,e.jsx)(S.A,{children:"Delete package?"}),(0,e.jsxs)(T.A,{children:[C&&(0,e.jsx)(B.A,{severity:"error",sx:{mb:2},children:C}),(0,e.jsxs)(j.default,{variant:"body2",children:["This permanently deletes ",(0,e.jsx)("strong",{children:w?.name})," and all of its published versions from the registry. This action cannot be undone."]})]}),(0,e.jsxs)(aw.A,{children:[(0,e.jsx)(l.A,{onClick:()=>x(null),disabled:y,children:"Cancel"}),(0,e.jsx)(l.A,{color:"error",variant:"contained",onClick:()=>void ae(),disabled:y,startIcon:y?(0,e.jsx)(A.default,{size:16,color:"inherit"}):(0,e.jsx)(a3.A,{}),children:"Delete package"})]})]}),(0,e.jsxs)(R.A,{open:null!==E,onClose:G?void 0:ai,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,e.jsxs)(S.A,{sx:{px:{xs:2,md:4},pt:{xs:2,md:3},pb:1},children:[(0,e.jsxs)(j.default,{component:"span",variant:"h5",fontWeight:700,children:["Install ",E?.name]}),(0,e.jsx)(j.default,{variant:"body2",color:"text.secondary",sx:{mt:.5},children:"Match the package to your FLUJO, then review and install it."})]}),(0,e.jsxs)(T.A,{sx:{px:{xs:2,md:4},pb:3},children:[I&&(0,e.jsx)(B.A,{severity:"error",sx:{mb:2},onClose:()=>J(null),children:I}),G&&!K&&!$&&(0,e.jsx)(g.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",minHeight:420},children:(0,e.jsx)(A.default,{size:24})}),aj&&K?.package&&(0,e.jsxs)(g.default,{children:[(0,e.jsxs)(i.A,{direction:{xs:"column",sm:"row"},spacing:1,alignItems:{sm:"center"},justifyContent:"space-between",sx:{mb:2.5},children:[(0,e.jsxs)(i.A,{direction:"row",spacing:1,alignItems:"center",children:[(0,e.jsx)(k.A,{size:"small",variant:"outlined",label:`v${K.package.version}`}),K.package.publisher&&(0,e.jsx)(k.A,{size:"small",variant:"outlined",label:K.package.publisher}),(0,e.jsxs)(j.default,{variant:"caption",color:"text.secondary",children:[aj.servers.length," server(s) \xb7 ",aj.models.length," model(s) \xb7"," ",aj.flows.length," flow(s) \xb7 ",aj.plannedExecutions.length," planned execution(s)"]})]}),(0,e.jsxs)(j.default,{variant:"caption",color:"text.secondary",children:["Step ",Y+1," of 2"]})]}),(0,e.jsxs)(ac,{activeStep:Y,sx:{maxWidth:720,mx:"auto",mb:3},children:[(0,e.jsx)(af,{children:(0,e.jsx)(av,{children:"Match models"})}),(0,e.jsx)(af,{children:(0,e.jsx)(av,{children:"Review & install"})})]}),0===Y&&aj.models.length>0&&ak&&(0,e.jsxs)(g.default,{children:[(0,e.jsxs)(g.default,{sx:{textAlign:"center",maxWidth:820,mx:"auto",mb:3},children:[(0,e.jsx)(j.default,{variant:"h4",fontWeight:750,sx:{mb:1},children:"The package was created with models that are not installed in your FLUJO."}),(0,e.jsx)(j.default,{variant:"h6",color:"text.secondary",fontWeight:400,children:"Let's replace or recreate them!"})]}),(0,e.jsxs)(g.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,e.jsxs)(g.default,{children:[(0,e.jsxs)(i.A,{direction:"row",alignItems:"center",justifyContent:"space-between",sx:{mb:1.25},children:[(0,e.jsx)(j.default,{variant:"overline",color:"text.secondary",fontWeight:700,children:"Models in this package"}),(0,e.jsx)(k.A,{size:"small",color:am?"success":"default",label:`${al}/${aj.models.length} ready`})]}),(0,e.jsx)(i.A,{spacing:1.25,children:aj.models.map(a=>{let b=a.id===ak.id,c=Object.prototype.hasOwnProperty.call(P,a.id),d=aj.installedModels.find(b=>b.id===P[a.id]);return(0,e.jsx)(a8.A,{variant:"outlined",sx:{borderWidth:b?2:1,borderColor:b?"primary.main":"divider",bgcolor:b?"action.selected":"background.paper",transition:"border-color 120ms ease, background-color 120ms ease"},children:(0,e.jsx)(a9.A,{onClick:()=>an(a.id),"aria-label":`Configure ${a.displayName}`,sx:{minHeight:104,p:2},children:(0,e.jsxs)(i.A,{direction:"row",spacing:1.5,alignItems:"center",children:[(0,e.jsx)(g.default,{sx:{width:44,height:44,borderRadius:2,display:"grid",placeItems:"center",bgcolor:b?"primary.main":"action.hover",color:b?"primary.contrastText":"text.secondary",flex:"0 0 auto"},children:(0,e.jsx)(bg,{})}),(0,e.jsxs)(g.default,{sx:{minWidth:0,flex:1},children:[(0,e.jsx)(j.default,{variant:"subtitle1",fontWeight:700,noWrap:!0,children:a.displayName}),(0,e.jsx)(j.default,{variant:"caption",color:"text.secondary",display:"block",children:"Package model"}),c&&(0,e.jsxs)(i.A,{direction:"row",spacing:.5,alignItems:"center",sx:{mt:.5},children:[(0,e.jsx)(bf,{color:"success",sx:{fontSize:16}}),(0,e.jsx)(j.default,{variant:"caption",color:"success.main",noWrap:!0,children:d?`Using ${d.displayName}`:"Will be created"})]})]})]})})},a.id)})})]}),(0,e.jsx)(g.default,{"aria-hidden":!0,sx:{display:"grid",placeItems:"center",minHeight:{xs:64,md:360}},children:(0,e.jsx)(g.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,e.jsx)(be,{sx:{fontSize:38}})})}),(0,e.jsxs)(a8.A,{variant:"outlined",sx:{p:{xs:2,md:3},minHeight:{md:420},bgcolor:"background.default"},children:[(0,e.jsxs)(j.default,{variant:"overline",color:"text.secondary",fontWeight:700,children:["Replace ",ak.displayName]}),(0,e.jsx)(j.default,{variant:"h5",fontWeight:700,sx:{mt:.25,mb:2.5},children:"What would you like to do?"}),(0,e.jsxs)(a7.Ay,{container:!0,spacing:2,children:[(0,e.jsx)(a7.Ay,{item:!0,xs:12,sm:6,children:(0,e.jsx)(l.A,{fullWidth:!0,"aria-label":"Create new one",variant:Object.prototype.hasOwnProperty.call(P,ak.id)&&""===P[ak.id]?"contained":"outlined",onClick:()=>ao(ak.id),sx:{minHeight:154,p:2.5,textTransform:"none",alignItems:"stretch",justifyContent:"flex-start",textAlign:"left"},children:(0,e.jsxs)(i.A,{spacing:1,alignItems:"flex-start",children:[(0,e.jsx)(bd,{sx:{fontSize:36}}),(0,e.jsx)(j.default,{variant:"h6",fontWeight:700,children:"Create new one"}),(0,e.jsx)(j.default,{variant:"body2",color:Object.prototype.hasOwnProperty.call(P,ak.id)&&""===P[ak.id]?"inherit":"text.secondary",children:"Recreate this model in your FLUJO with the package's configuration."})]})})}),(0,e.jsx)(a7.Ay,{item:!0,xs:12,sm:6,children:(0,e.jsx)(l.A,{fullWidth:!0,"aria-label":"Use one of yours",variant:P[ak.id]?"contained":"outlined",onClick:()=>X(!0),sx:{minHeight:154,p:2.5,textTransform:"none",alignItems:"stretch",justifyContent:"flex-start",textAlign:"left"},children:(0,e.jsxs)(i.A,{spacing:1,alignItems:"flex-start",children:[(0,e.jsx)(bg,{sx:{fontSize:36}}),(0,e.jsx)(j.default,{variant:"h6",fontWeight:700,children:"Use one of yours"}),(0,e.jsx)(j.default,{variant:"body2",color:P[ak.id]?"inherit":"text.secondary",children:"Connect the package to a model you already have installed."})]})})})]}),W&&(0,e.jsxs)(g.default,{sx:{mt:2.5},children:[(0,e.jsx)(M.A,{sx:{mb:2}}),(0,e.jsx)(j.default,{variant:"subtitle1",fontWeight:700,sx:{mb:1},children:"Choose one of your installed models"}),aj.installedModels.length>0?(0,e.jsx)(a7.Ay,{container:!0,spacing:1.25,children:aj.installedModels.map(a=>{let b=P[ak.id]===a.id;return(0,e.jsx)(a7.Ay,{item:!0,xs:12,sm:6,children:(0,e.jsx)(a8.A,{variant:"outlined",sx:{height:"100%",borderWidth:b?2:1,borderColor:b?"primary.main":"divider",bgcolor:b?"action.selected":"background.paper"},children:(0,e.jsx)(a9.A,{onClick:()=>ap(ak.id,a.id),"aria-label":`Use ${a.displayName}`,sx:{minHeight:76,p:1.5},children:(0,e.jsxs)(i.A,{direction:"row",spacing:1.25,alignItems:"center",children:[(0,e.jsx)(bg,{color:b?"primary":"action"}),(0,e.jsxs)(g.default,{sx:{minWidth:0},children:[(0,e.jsx)(j.default,{variant:"subtitle2",fontWeight:700,noWrap:!0,children:a.displayName}),(0,e.jsx)(j.default,{variant:"caption",color:"text.secondary",noWrap:!0,display:"block",children:a.name})]}),b&&(0,e.jsx)(bf,{color:"primary",sx:{ml:"auto !important",flex:"0 0 auto"}})]})})})},a.id)})}):(0,e.jsx)(B.A,{severity:"info",children:"You do not have any installed models yet. Create this package model as new instead."})]})]})]}),(0,e.jsx)(M.A,{sx:{my:3}}),(0,e.jsxs)(i.A,{direction:"row",spacing:1.5,justifyContent:"space-between",alignItems:"center",children:[(0,e.jsx)(l.A,{onClick:ai,children:"Cancel"}),(0,e.jsxs)(i.A,{direction:"row",spacing:1.5,alignItems:"center",children:[!am&&(0,e.jsx)(j.default,{variant:"body2",color:"text.secondary",children:"Choose an option for every model to continue."}),(0,e.jsx)(l.A,{variant:"contained",size:"large",disabled:!am,endIcon:(0,e.jsx)(be,{}),onClick:()=>Z(1),children:"Continue to review"})]})]})]}),1===Y&&(0,e.jsxs)(g.default,{sx:{maxWidth:980,mx:"auto"},children:[(0,e.jsxs)(i.A,{direction:{xs:"column",sm:"row"},spacing:1,alignItems:{sm:"center"},justifyContent:"space-between",sx:{mb:2},children:[(0,e.jsxs)(g.default,{children:[(0,e.jsx)(j.default,{variant:"h4",fontWeight:750,children:"Review and install"}),(0,e.jsx)(j.default,{variant:"body1",color:"text.secondary",children:"Check your model choices and add any package secrets."})]}),aj.models.length>0&&(0,e.jsx)(l.A,{onClick:()=>{Z(0),V(aj.models.find(a=>!Object.prototype.hasOwnProperty.call(P,a.id))?.id??aj.models[0].id),X(!1)},children:"Change model choices"})]}),aj.models.length>0&&(0,e.jsxs)(g.default,{sx:{mb:2.5},children:[(0,e.jsx)(j.default,{variant:"subtitle2",sx:{mb:1},children:"Model plan"}),(0,e.jsx)(a7.Ay,{container:!0,spacing:1.5,children:aj.models.map(a=>{let b=aj.installedModels.find(b=>b.id===P[a.id]);return(0,e.jsx)(a7.Ay,{item:!0,xs:12,sm:6,children:(0,e.jsx)(a8.A,{variant:"outlined",sx:{p:1.75,height:"100%"},children:(0,e.jsxs)(i.A,{direction:"row",spacing:1.25,alignItems:"center",children:[(0,e.jsxs)(g.default,{sx:{minWidth:0,flex:1},children:[(0,e.jsx)(j.default,{variant:"caption",color:"text.secondary",children:"Package model"}),(0,e.jsx)(j.default,{variant:"subtitle2",noWrap:!0,children:a.displayName})]}),(0,e.jsx)(be,{color:"action"}),(0,e.jsxs)(g.default,{sx:{minWidth:0,flex:1},children:[(0,e.jsx)(j.default,{variant:"caption",color:"text.secondary",children:b?"Your model":"New model"}),(0,e.jsx)(j.default,{variant:"subtitle2",noWrap:!0,children:b?.displayName??a.displayName})]})]})})},a.id)})})]}),aj.servers.some(a=>a.requiredEnvMissing.length>0)&&(0,e.jsx)(B.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."}),aj.missingGlobals.length>0&&(0,e.jsxs)(B.A,{severity:"warning",sx:{mb:1.5},children:["This package expects host global variable(s) that aren't set yet:"," ",aj.missingGlobals.join(", "),". Set them in Settings after install, or the bound model(s)/server(s) won't have a working API key."]}),(0,e.jsx)(M.A,{sx:{my:2.5}}),aj.secrets.length>0?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(j.default,{variant:"subtitle2",sx:{mb:1},children:"Secrets requested by this package"}),(0,e.jsx)(i.A,{spacing:1.5,sx:{mb:2.5},children:aj.secrets.map(a=>(0,e.jsx)(s.A,{size:"small",type:aa[a.key]?"text":"password",label:a.label||a.key,helperText:a.required?"Required — leave blank to install the dependent entity disabled":"Optional",value:N[a.key]??"",onChange:b=>O(c=>({...c,[a.key]:b.target.value})),fullWidth:!0,InputProps:{endAdornment:(0,e.jsx)(t.A,{position:"end",children:(0,e.jsx)(bc.A,{size:"small",tabIndex:-1,"aria-label":aa[a.key]?"Hide secret":"Show secret",onClick:()=>ab(b=>({...b,[a.key]:!b[a.key]})),children:aa[a.key]?(0,e.jsx)(bk.A,{fontSize:"small"}):(0,e.jsx)(bj.A,{fontSize:"small"})})})}},a.key))})]}):(0,e.jsx)(j.default,{variant:"body2",color:"text.secondary",sx:{mb:2.5},children:"This package doesn't request any secrets."}),(0,e.jsxs)(i.A,{direction:"row",spacing:1,justifyContent:"space-between",children:[(0,e.jsx)(l.A,{onClick:aj.models.length>0?()=>Z(0):ai,disabled:G,children:aj.models.length>0?"Back":"Cancel"}),(0,e.jsx)(l.A,{variant:"contained",color:"primary",size:"large",onClick:()=>void ah(),disabled:G,startIcon:G?(0,e.jsx)(A.default,{size:16}):(0,e.jsx)(bh,{}),children:"Install package"})]})]})]}),$&&(0,e.jsxs)(g.default,{children:[(0,e.jsx)(B.A,{severity:$.ok?"success":"error",sx:{mb:1},children:$.ok?`Installed "${$.package?.name}": ${$.created.length} created, ${$.updated.length} updated, ${$.disabled.length} disabled.`:`Install failed: ${$.errors[0]??"unknown error"}`}),$.missingGlobals.length>0&&(0,e.jsxs)(B.A,{severity:"warning",sx:{mb:1},children:["Set these global variable(s) in Settings for the installed entities to work:"," ",$.missingGlobals.join(", "),"."]}),(0,e.jsx)(l.A,{size:"small",onClick:ai,children:"Close"})]})]})]})]})}let bn=(0,aB.h)("frontend/components/Packages");function bo(){let[a,b]=(0,f.useState)(!1),[c,d]=(0,f.useState)(0);return bn.debug("Rendering PackagesManager",{wizardOpen:a}),(0,e.jsxs)(g.default,{sx:{height:"100%",display:"flex",flexDirection:"column"},children:[(0,e.jsxs)(g.default,{sx:{p:2,display:"flex",justifyContent:"space-between",alignItems:"center",borderBottom:1,borderColor:"divider"},children:[(0,e.jsxs)(i.A,{direction:"row",spacing:1,alignItems:"center",children:[(0,e.jsx)(j.default,{variant:"h5",children:"Packages"}),(0,e.jsx)(k.A,{label:"experimental",size:"small",color:"warning",variant:"outlined"})]}),(0,e.jsx)(l.A,{variant:"contained",startIcon:(0,e.jsx)(n.A,{}),onClick:()=>b(!0),"data-tour":"packages-create",children:"Create package"})]}),(0,e.jsxs)(g.default,{sx:{flex:1,overflow:"auto",p:3},children:[(0,e.jsxs)(m.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,e.jsx)(p,{sx:{fontSize:48,color:"text.secondary"}}),(0,e.jsx)(j.default,{variant:"h6",children:"Bundle your FLUJO setup into a shareable package"}),(0,e.jsx)(j.default,{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,e.jsx)(l.A,{variant:"contained",startIcon:(0,e.jsx)(n.A,{}),onClick:()=>b(!0),children:"Create package"})]}),(0,e.jsxs)(m.A,{variant:"outlined",sx:{p:3,mt:3,maxWidth:{xs:"100%",md:1100},mx:"auto"},children:[(0,e.jsx)(j.default,{variant:"h6",gutterBottom:!0,children:"Package registry account"}),(0,e.jsx)(aF,{})]}),(0,e.jsx)(bm,{onInstalled:()=>d(a=>a+1)}),(0,e.jsx)(a6,{},c)]}),a&&(0,e.jsx)(a1,{open:a,onClose:()=>b(!1)})]})}var bp=c(49938),bq=c(61615);function br(){(0,h.useRouter)();let{settings:a,settingsHydrated:b}=(0,bp.rX)(),c=b&&(a?.experimental?.enabled??!1);return b&&c?(0,e.jsx)(g.default,{sx:{height:"100%",display:"flex",flexDirection:"column"},children:(0,e.jsx)(bo,{})}):(0,e.jsx)(bq.default,{})}(0,aB.h)("app/packages/page")},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87892:(a,b,c)=>{Promise.resolve().then(c.bind(c,60399))},92812:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7M2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2m4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3z"}),"VisibilityOff")},95285:(a,b,c)=>{"use strict";c.r(b),c.d(b,{GlobalError:()=>E.a,__next_app__:()=>K,handler:()=>M,pages:()=>J,routeModule:()=>L,tree:()=>I});var d=c(49754),e=c(9117),f=c(46595),g=c(32324),h=c(39326),i=c(38928),j=c(20175),k=c(12),l=c(54290),m=c(12696),n=c(52574),o=c(82802),p=c(77533),q=c(45229),r=c(32822),s=c(261),t=c(26453),u=c(52474),v=c(26713),w=c(51356),x=c(62685),y=c(36225),z=c(63446),A=c(2762),B=c(45742),C=c(86439),D=c(81170),E=c.n(D),F=c(62506),G=c(91203),H={};for(let a in F)0>["default","tree","pages","GlobalError","__next_app__","routeModule","handler"].indexOf(a)&&(H[a]=()=>F[a]);c.d(b,H);let I={children:["",{children:["packages",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,60399)),"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\packages\\page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(c.bind(c,51472)),"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\layout.tsx"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,81170,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,87028,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,90461,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,32768,23)),"next/dist/client/components/builtin/unauthorized.js"]}]}.children,J=["C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\packages\\page.tsx"],K={require:c,loadChunk:()=>Promise.resolve()},L=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/packages/page",pathname:"/packages",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:I},distDir:".next",relativeProjectDir:""});async function M(a,b,d){var D;let H="/packages/page";"/index"===H&&(H="/");let N=(0,h.getRequestMeta)(a,"postponed"),O=(0,h.getRequestMeta)(a,"minimalMode"),P=await L.prepare(a,b,{srcPage:H,multiZoneDraftMode:!1});if(!P)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:Q,query:R,params:S,parsedUrl:T,pageIsDynamic:U,buildManifest:V,nextFontManifest:W,reactLoadableManifest:X,serverActionsManifest:Y,clientReferenceManifest:Z,subresourceIntegrityManifest:$,prerenderManifest:_,isDraftMode:aa,resolvedPathname:ab,revalidateOnlyGenerated:ac,routerServerContext:ad,nextConfig:ae,interceptionRoutePatterns:af}=P,ag=T.pathname||"/",ah=(0,s.normalizeAppPath)(H),{isOnDemandRevalidate:ai}=P,aj=L.match(ag,_),ak=!!_.routes[ab],al=!!(aj||ak||_.routes[ah]),am=a.headers["user-agent"]||"",an=(0,v.getBotType)(am),ao=(0,q.isHtmlBotRequest)(a),ap=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[u.NEXT_ROUTER_PREFETCH_HEADER],aq=(0,h.getRequestMeta)(a,"isRSCRequest")??(0,n.f)(a.headers[u.RSC_HEADER]),ar=(0,t.getIsPossibleServerAction)(a),as=(0,m.checkIsAppPPREnabled)(ae.experimental.ppr)&&(null==(D=_.routes[ah]??_.dynamicRoutes[ah])?void 0:D.renderingMode)==="PARTIALLY_STATIC",at=!1,au=!1,av=as?N:void 0,aw=as&&aq&&!ap,ax=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),ay=!am||(0,q.shouldServeStreamingMetadata)(am,ae.htmlLimitedBots);ao&&as&&(al=!1,ay=!1);let az=!0===L.isDev||!al||"string"==typeof N||aw,aA=ao&&as,aB=null;aa||!al||az||ar||av||aw||(aB=ab);let aC=aB;!aC&&L.isDev&&(aC=ab),L.isDev||aa||!al||!aq||aw||(0,k.d)(a.headers);let aD={...F,tree:I,pages:J,GlobalError:E(),handler:M,routeModule:L,__next_app__:K};Y&&Z&&(0,p.setReferenceManifestsSingleton)({page:H,clientReferenceManifest:Z,serverActionsManifest:Y,serverModuleMap:(0,r.createServerModuleMap)({serverActionsManifest:Y})});let aE=a.method||"GET",aF=(0,g.getTracer)(),aG=aF.getActiveScopeSpan();try{let f=L.getVaryHeader(ab,af);b.setHeader("Vary",f);let k=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return L.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let d=aF.getRootSpanAttributes();if(!d)return;if(d.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${d.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=d.get("next.route");if(e){let a=`${aE} ${e}`;c.setAttributes({"next.route":e,"http.route":e,"next.span_name":a}),c.updateName(a)}else c.updateName(`${aE} ${a.url}`)})},m=async({span:e,postponed:f,fallbackRouteParams:g})=>{let i={query:R,params:S,page:ah,sharedContext:{buildId:Q},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aD,Component:(0,j.T)(aD),params:S,routeModule:L,page:H,postponed:f,shouldWaitOnAllReady:aA,serveStreamingMetadata:ay,supportsDynamicResponse:"string"==typeof f||az,buildManifest:V,nextFontManifest:W,reactLoadableManifest:X,subresourceIntegrityManifest:$,serverActionsManifest:Y,clientReferenceManifest:Z,setIsrStatus:null==ad?void 0:ad.setIsrStatus,dir:c(33873).join(process.cwd(),L.relativeProjectDir),isDraftMode:aa,isRevalidate:al&&!f&&!aw,botType:an,isOnDemandRevalidate:ai,isPossibleServerAction:ar,assetPrefix:ae.assetPrefix,nextConfigOutput:ae.output,crossOrigin:ae.crossOrigin,trailingSlash:ae.trailingSlash,previewProps:_.preview,deploymentId:ae.deploymentId,enableTainting:ae.experimental.taint,htmlLimitedBots:ae.htmlLimitedBots,devtoolSegmentExplorer:ae.experimental.devtoolSegmentExplorer,reactMaxHeadersLength:ae.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:(0,h.getRequestMeta)(a,"incrementalCache"),cacheLifeProfiles:ae.experimental.cacheLife,basePath:ae.basePath,serverActions:ae.experimental.serverActions,...at?{nextExport:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isRevalidate:!0,isDebugDynamicAccesses:at}:{},experimental:{isRoutePPREnabled:as,expireTime:ae.expireTime,staleTimes:ae.experimental.staleTimes,cacheComponents:!!ae.experimental.cacheComponents,clientSegmentCache:!!ae.experimental.clientSegmentCache,clientParamParsing:!!ae.experimental.clientParamParsing,dynamicOnHover:!!ae.experimental.dynamicOnHover,inlineCss:!!ae.experimental.inlineCss,authInterrupts:!!ae.experimental.authInterrupts,clientTraceMetadata:ae.experimental.clientTraceMetadata||[]},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d)=>L.onRequestError(a,b,d,ad),err:(0,h.getRequestMeta)(a,"invokeError"),dev:L.isDev}},l=await k(e,i),{metadata:m}=l,{cacheControl:n,headers:o={},fetchTags:p}=m;if(p&&(o[z.NEXT_CACHE_TAGS_HEADER]=p),a.fetchMetrics=m.fetchMetrics,al&&(null==n?void 0:n.revalidate)===0&&!L.isDev&&!as){let a=m.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${ab}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
2
2
  see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:w.CachedRouteKind.APP_PAGE,html:l,headers:o,rscData:m.flightData,postponed:m.postponed,status:m.statusCode,segmentData:m.segmentData},cacheControl:n}},n=async({hasResolved:c,previousCacheEntry:f,isRevalidating:g,span:i})=>{let j,k=!1===L.isDev,l=c||b.writableEnded;if(ai&&ac&&!f&&!O)return(null==ad?void 0:ad.render404)?await ad.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(aj&&(j=(0,x.parseFallbackField)(aj.fallback)),j===x.FallbackMode.PRERENDER&&(0,v.isBot)(am)&&(!as||ao)&&(j=x.FallbackMode.BLOCKING_STATIC_RENDER),(null==f?void 0:f.isStale)===-1&&(ai=!0),ai&&(j!==x.FallbackMode.NOT_FOUND||f)&&(j=x.FallbackMode.BLOCKING_STATIC_RENDER),!O&&j!==x.FallbackMode.BLOCKING_STATIC_RENDER&&aC&&!l&&!aa&&U&&(k||!ak)){let b;if((k||aj)&&j===x.FallbackMode.NOT_FOUND)throw new C.NoFallbackError;if(as&&!aq){let c="string"==typeof(null==aj?void 0:aj.fallback)?aj.fallback:k?ah:null;if(b=await L.handleResponse({cacheKey:c,req:a,nextConfig:ae,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:_,isRoutePPREnabled:as,responseGenerator:async()=>m({span:i,postponed:void 0,fallbackRouteParams:k||au?(0,o.u)(ah):null}),waitUntil:d.waitUntil}),null===b)return null;if(b)return delete b.cacheControl,b}}let n=ai||g||!av?void 0:av;if(at&&void 0!==n)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:w.CachedRouteKind.PAGES,html:y.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let p=U&&as&&((0,h.getRequestMeta)(a,"renderFallbackShell")||au)?(0,o.u)(ag):null;return m({span:i,postponed:n,fallbackRouteParams:p})},p=async c=>{var f,g,i,j,k;let l,o=await L.handleResponse({cacheKey:aB,responseGenerator:a=>n({span:c,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ai,isRoutePPREnabled:as,req:a,nextConfig:ae,prerenderManifest:_,waitUntil:d.waitUntil});if(aa&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),L.isDev&&b.setHeader("Cache-Control","no-store, must-revalidate"),!o){if(aB)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(f=o.value)?void 0:f.kind)!==w.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=o.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let p="string"==typeof o.value.postponed;al&&!aw&&(!p||ap)&&(O||b.setHeader("x-nextjs-cache",ai?"REVALIDATED":o.isMiss?"MISS":o.isStale?"STALE":"HIT"),b.setHeader(u.NEXT_IS_PRERENDER_HEADER,"1"));let{value:q}=o;if(av)l={revalidate:0,expire:void 0};else if(O&&aq&&!ap&&as)l={revalidate:0,expire:void 0};else if(!L.isDev)if(aa)l={revalidate:0,expire:void 0};else if(al){if(o.cacheControl)if("number"==typeof o.cacheControl.revalidate){if(o.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${o.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});l={revalidate:o.cacheControl.revalidate,expire:(null==(j=o.cacheControl)?void 0:j.expire)??ae.expireTime}}else l={revalidate:z.CACHE_ONE_YEAR,expire:void 0}}else b.getHeader("Cache-Control")||(l={revalidate:0,expire:void 0});if(o.cacheControl=l,"string"==typeof ax&&(null==q?void 0:q.kind)===w.CachedRouteKind.APP_PAGE&&q.segmentData){b.setHeader(u.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=q.headers)?void 0:k[z.NEXT_CACHE_TAGS_HEADER];O&&al&&c&&"string"==typeof c&&b.setHeader(z.NEXT_CACHE_TAGS_HEADER,c);let d=q.segmentData.get(ax);return void 0!==d?(0,B.sendRenderResult)({req:a,res:b,generateEtags:ae.generateEtags,poweredByHeader:ae.poweredByHeader,result:y.default.fromStatic(d,u.RSC_CONTENT_TYPE_HEADER),cacheControl:o.cacheControl}):(b.statusCode=204,(0,B.sendRenderResult)({req:a,res:b,generateEtags:ae.generateEtags,poweredByHeader:ae.poweredByHeader,result:y.default.EMPTY,cacheControl:o.cacheControl}))}let r=(0,h.getRequestMeta)(a,"onCacheEntry");if(r&&await r({...o,value:{...o.value,kind:"PAGE"}},{url:(0,h.getRequestMeta)(a,"initURL")}))return null;if(p&&av)throw Object.defineProperty(Error("Invariant: postponed state should not be present on a resume request"),"__NEXT_ERROR_CODE",{value:"E396",enumerable:!1,configurable:!0});if(q.headers){let a={...q.headers};for(let[c,d]of(O&&al||delete a[z.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==d)if(Array.isArray(d))for(let a of d)b.appendHeader(c,a);else"number"==typeof d&&(d=d.toString()),b.appendHeader(c,d)}let s=null==(g=q.headers)?void 0:g[z.NEXT_CACHE_TAGS_HEADER];if(O&&al&&s&&"string"==typeof s&&b.setHeader(z.NEXT_CACHE_TAGS_HEADER,s),!q.status||aq&&as||(b.statusCode=q.status),!O&&q.status&&G.RedirectStatusCode[q.status]&&aq&&(b.statusCode=200),p&&b.setHeader(u.NEXT_DID_POSTPONE_HEADER,"1"),aq&&!aa){if(void 0===q.rscData){if(q.postponed)throw Object.defineProperty(Error("Invariant: Expected postponed to be undefined"),"__NEXT_ERROR_CODE",{value:"E372",enumerable:!1,configurable:!0});return(0,B.sendRenderResult)({req:a,res:b,generateEtags:ae.generateEtags,poweredByHeader:ae.poweredByHeader,result:q.html,cacheControl:aw?{revalidate:0,expire:void 0}:o.cacheControl})}return(0,B.sendRenderResult)({req:a,res:b,generateEtags:ae.generateEtags,poweredByHeader:ae.poweredByHeader,result:y.default.fromStatic(q.rscData,u.RSC_CONTENT_TYPE_HEADER),cacheControl:o.cacheControl})}let t=q.html;if(!p||O||aq)return(0,B.sendRenderResult)({req:a,res:b,generateEtags:ae.generateEtags,poweredByHeader:ae.poweredByHeader,result:t,cacheControl:o.cacheControl});if(at)return t.push(new ReadableStream({start(a){a.enqueue(A.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,B.sendRenderResult)({req:a,res:b,generateEtags:ae.generateEtags,poweredByHeader:ae.poweredByHeader,result:t,cacheControl:{revalidate:0,expire:void 0}});let v=new TransformStream;return t.push(v.readable),m({span:c,postponed:q.postponed,fallbackRouteParams:null}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==w.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(v.writable)}).catch(a=>{v.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,B.sendRenderResult)({req:a,res:b,generateEtags:ae.generateEtags,poweredByHeader:ae.poweredByHeader,result:t,cacheControl:{revalidate:0,expire:void 0}})};if(!aG)return await aF.withPropagatedContext(a.headers,()=>aF.trace(i.BaseServerSpan.handleRequest,{spanName:`${aE} ${a.url}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aE,"http.target":a.url}},p));await p(aG)}catch(b){throw b instanceof C.NoFallbackError||await L.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"render",revalidateReason:(0,f.c)({isRevalidate:al,isOnDemandRevalidate:ai})},ad),b}}}};var b=require("../../webpack-runtime.js");b.C(a);var c=b.X(0,[5873,8298,3984,6967,7674,8745,1439,3489,7104,1690,87,5200,7058,7519,9983,1314,3653],()=>b(b.s=95285));module.exports=c})();