flujo-ai 3.28.0 → 3.29.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 (654) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +383 -373
  3. package/.next/app-path-routes-manifest.json +28 -26
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/react-loadable-manifest.json +5 -4
  6. package/.next/routes-manifest.json +8 -0
  7. package/.next/server/app/_not-found/page.js +2 -2
  8. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/_not-found.html +1 -1
  10. package/.next/server/app/_not-found.rsc +3 -3
  11. package/.next/server/app/api/approvals/[id]/route.js +1 -1
  12. package/.next/server/app/api/approvals/[id]/route.js.nft.json +1 -1
  13. package/.next/server/app/api/approvals/[id]/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/approvals/route.js +2 -2
  15. package/.next/server/app/api/approvals/route.js.nft.json +1 -1
  16. package/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/backup/route.js.nft.json +1 -1
  18. package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/bugs/enhance/route.js +2 -2
  21. package/.next/server/app/api/bugs/enhance/route.js.nft.json +1 -1
  22. package/.next/server/app/api/bugs/enhance/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/cwd/route.js +1 -1
  24. package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/encryption/secure/route.js +1 -1
  26. package/.next/server/app/api/encryption/secure/route.js.nft.json +1 -1
  27. package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/env/route.js +1 -1
  29. package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -1
  31. package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/flow/[id]/versions/[versionId]/route.js.nft.json +1 -1
  33. package/.next/server/app/api/flow/[id]/versions/[versionId]/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/flow/[id]/versions/route.js.nft.json +1 -1
  35. package/.next/server/app/api/flow/[id]/versions/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/flow/compile/route.js +1 -1
  37. package/.next/server/app/api/flow/compile/route.js.nft.json +1 -1
  38. package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/flow/generate/route.js +1 -1
  40. package/.next/server/app/api/flow/generate/route.js.nft.json +1 -1
  41. package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/flow/improve/route.js +1 -1
  43. package/.next/server/app/api/flow/improve/route.js.nft.json +1 -1
  44. package/.next/server/app/api/flow/improve/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/flow/prompt-renderer/route.js +2 -2
  46. package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
  47. package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/flow/quick-chat/route.js +1 -1
  49. package/.next/server/app/api/flow/quick-chat/route.js.nft.json +1 -1
  50. package/.next/server/app/api/flow/quick-chat/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/flow/repair/route.js +1 -1
  52. package/.next/server/app/api/flow/repair/route.js.nft.json +1 -1
  53. package/.next/server/app/api/flow/repair/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/flow/route.js.nft.json +1 -1
  55. package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/git/route.js +1 -1
  57. package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/init/route.js +1 -1
  59. package/.next/server/app/api/init/route.js.nft.json +1 -1
  60. package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/local-models/capability/route.js +2 -1
  62. package/.next/server/app/api/local-models/capability/route.js.nft.json +1 -1
  63. package/.next/server/app/api/local-models/capability/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/local-models/pull/route.js +2 -1
  65. package/.next/server/app/api/local-models/pull/route.js.nft.json +1 -1
  66. package/.next/server/app/api/local-models/pull/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/local-models/suggest/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/mcp/app-sandbox/route.js +1 -1
  69. package/.next/server/app/api/mcp/app-sandbox/route_client-reference-manifest.js +1 -1
  70. package/.next/server/app/api/mcp/cancel/route.js +2 -2
  71. package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -1
  72. package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/mcp/oauth-capability/route.js +1 -1
  74. package/.next/server/app/api/mcp/oauth-capability/route.js.nft.json +1 -1
  75. package/.next/server/app/api/mcp/oauth-capability/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js +1 -1
  77. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -1
  78. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js +1 -1
  80. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -1
  81. package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js +1 -1
  83. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -1
  84. package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/mcp/servers/[name]/resources/route.js +1 -1
  86. package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -1
  87. package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/mcp/servers/[name]/route.js +1 -1
  89. package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -1
  90. package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/mcp/servers/[name]/status/route.js +1 -1
  92. package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -1
  93. package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js +1 -1
  95. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -1
  96. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/mcp/servers/[name]/tools/route.js +1 -1
  98. package/.next/server/app/api/mcp/servers/[name]/tools/route.js.nft.json +1 -1
  99. package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/mcp/servers/route.js +1 -1
  101. package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
  102. package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/mcp/test-connection/route.js +1 -1
  104. package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -1
  105. package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/mcp/test-connection/stream/route.js +1 -1
  107. package/.next/server/app/api/mcp/test-connection/stream/route.js.nft.json +1 -1
  108. package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/mcp-registry/route.js +2 -2
  110. package/.next/server/app/api/mcp-registry/route.js.nft.json +1 -1
  111. package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/mcp-registry/spotlight/route.js +1 -1
  113. package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/model/[id]/route.js +1 -1
  115. package/.next/server/app/api/model/[id]/route.js.nft.json +1 -1
  116. package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/model/provider/route.js +2 -2
  118. package/.next/server/app/api/model/provider/route.js.nft.json +1 -1
  119. package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/model/route.js +1 -1
  121. package/.next/server/app/api/model/route.js.nft.json +1 -1
  122. package/.next/server/app/api/model/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/model/test/route.js +2 -2
  124. package/.next/server/app/api/model/test/route.js.nft.json +1 -1
  125. package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/oauth/reset/route.js +2 -2
  129. package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -1
  130. package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/packages/build/route.js.nft.json +1 -1
  132. package/.next/server/app/api/packages/build/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/packages/derive-secrets/route.js.nft.json +1 -1
  134. package/.next/server/app/api/packages/derive-secrets/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/packages/install/route.js +1 -1
  136. package/.next/server/app/api/packages/install/route.js.nft.json +1 -1
  137. package/.next/server/app/api/packages/install/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/packages/install/status/route.js +1 -1
  139. package/.next/server/app/api/packages/install/status/route.js.nft.json +1 -1
  140. package/.next/server/app/api/packages/install/status/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/packages/installed/route.js +1 -1
  142. package/.next/server/app/api/packages/installed/route.js.nft.json +1 -1
  143. package/.next/server/app/api/packages/installed/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/packages/resolve/route.js.nft.json +1 -1
  145. package/.next/server/app/api/packages/resolve/route_client-reference-manifest.js +1 -1
  146. package/.next/server/app/api/packages/scan-targets/route.js +1 -0
  147. package/.next/server/app/api/packages/scan-targets/route.js.nft.json +1 -0
  148. package/.next/server/app/api/packages/scan-targets/route_client-reference-manifest.js +1 -0
  149. package/.next/server/app/api/packages/uninstall/route.js +1 -1
  150. package/.next/server/app/api/packages/uninstall/route.js.nft.json +1 -1
  151. package/.next/server/app/api/packages/uninstall/route_client-reference-manifest.js +1 -1
  152. package/.next/server/app/api/planned-executions/[id]/route.js +2 -2
  153. package/.next/server/app/api/planned-executions/[id]/route.js.nft.json +1 -1
  154. package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/api/planned-executions/[id]/run/route.js +2 -2
  156. package/.next/server/app/api/planned-executions/[id]/run/route.js.nft.json +1 -1
  157. package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/planned-executions/[id]/runs/route.js +2 -2
  159. package/.next/server/app/api/planned-executions/[id]/runs/route.js.nft.json +1 -1
  160. package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -1
  161. package/.next/server/app/api/planned-executions/preview-schedule/route.js +1 -1
  162. package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
  163. package/.next/server/app/api/planned-executions/reconcile/route.js +1 -1
  164. package/.next/server/app/api/planned-executions/reconcile/route.js.nft.json +1 -1
  165. package/.next/server/app/api/planned-executions/reconcile/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/api/planned-executions/route.js +1 -1
  167. package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
  168. package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/api/registry/auth/resend/route.js +1 -1
  170. package/.next/server/app/api/registry/auth/resend/route_client-reference-manifest.js +1 -1
  171. package/.next/server/app/api/registry/auth/reset/route.js +1 -1
  172. package/.next/server/app/api/registry/auth/reset/route_client-reference-manifest.js +1 -1
  173. package/.next/server/app/api/registry/auth/route.js +1 -1
  174. package/.next/server/app/api/registry/auth/route_client-reference-manifest.js +1 -1
  175. package/.next/server/app/api/registry/oauth/callback/route.js +1 -1
  176. package/.next/server/app/api/registry/oauth/callback/route_client-reference-manifest.js +1 -1
  177. package/.next/server/app/api/registry/oauth/initiate/route.js +1 -1
  178. package/.next/server/app/api/registry/oauth/initiate/route_client-reference-manifest.js +1 -1
  179. package/.next/server/app/api/registry/publish/route.js +1 -1
  180. package/.next/server/app/api/registry/publish/route_client-reference-manifest.js +1 -1
  181. package/.next/server/app/api/registry/settings/route.js +1 -1
  182. package/.next/server/app/api/registry/settings/route_client-reference-manifest.js +1 -1
  183. package/.next/server/app/api/restore/route.js.nft.json +1 -1
  184. package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
  185. package/.next/server/app/api/runs/active/route.js +2 -2
  186. package/.next/server/app/api/runs/active/route.js.nft.json +1 -1
  187. package/.next/server/app/api/runs/active/route_client-reference-manifest.js +1 -1
  188. package/.next/server/app/api/storage/route.js +1 -1
  189. package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
  190. package/.next/server/app/api/update/route.js +1 -1
  191. package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/api/waves/route.js +1 -1
  193. package/.next/server/app/api/waves/route.js.nft.json +1 -1
  194. package/.next/server/app/api/waves/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/api/webhooks/[id]/route.js +1 -1
  196. package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
  197. package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/chat/page.js +8 -8
  199. package/.next/server/app/chat/page.js.nft.json +1 -1
  200. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  201. package/.next/server/app/chat.html +1 -1
  202. package/.next/server/app/chat.rsc +4 -4
  203. package/.next/server/app/docs/page.js +3 -3
  204. package/.next/server/app/docs/page.js.nft.json +1 -1
  205. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  206. package/.next/server/app/docs.html +1 -1
  207. package/.next/server/app/docs.rsc +4 -4
  208. package/.next/server/app/executions/page.js +2 -39
  209. package/.next/server/app/executions/page.js.nft.json +1 -1
  210. package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
  211. package/.next/server/app/executions.html +1 -1
  212. package/.next/server/app/executions.rsc +4 -4
  213. package/.next/server/app/flows/page.js +3 -3
  214. package/.next/server/app/flows/page.js.nft.json +1 -1
  215. package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
  216. package/.next/server/app/flows.html +1 -1
  217. package/.next/server/app/flows.rsc +4 -4
  218. package/.next/server/app/index.html +1 -1
  219. package/.next/server/app/index.rsc +3 -3
  220. package/.next/server/app/mcp/page.js +11 -11
  221. package/.next/server/app/mcp/page.js.nft.json +1 -1
  222. package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
  223. package/.next/server/app/mcp-flows/route.js +1 -1
  224. package/.next/server/app/mcp-flows/route.js.nft.json +1 -1
  225. package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
  226. package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
  227. package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -1
  228. package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
  229. package/.next/server/app/mcp.html +1 -1
  230. package/.next/server/app/mcp.rsc +4 -4
  231. package/.next/server/app/models/page.js +2 -2
  232. package/.next/server/app/models/page.js.nft.json +1 -1
  233. package/.next/server/app/models/page_client-reference-manifest.js +1 -1
  234. package/.next/server/app/packages/page.js +2 -2
  235. package/.next/server/app/packages/page.js.nft.json +1 -1
  236. package/.next/server/app/packages/page_client-reference-manifest.js +1 -1
  237. package/.next/server/app/packages.html +1 -1
  238. package/.next/server/app/packages.rsc +4 -4
  239. package/.next/server/app/page_client-reference-manifest.js +1 -1
  240. package/.next/server/app/settings/page.js +2 -2
  241. package/.next/server/app/settings/page.js.nft.json +1 -1
  242. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  243. package/.next/server/app/settings.html +1 -1
  244. package/.next/server/app/settings.rsc +4 -4
  245. package/.next/server/app/v1/chat/completions/route.js +1 -1
  246. package/.next/server/app/v1/chat/completions/route.js.nft.json +1 -1
  247. package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
  248. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +2 -2
  249. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -1
  250. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
  251. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +2 -2
  252. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -1
  253. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
  254. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -1
  255. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -1
  256. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
  257. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -1
  258. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -1
  259. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
  260. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +2 -2
  261. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -1
  262. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
  263. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +4 -4
  264. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -1
  265. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
  266. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js +2 -0
  267. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js.nft.json +1 -0
  268. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route_client-reference-manifest.js +1 -0
  269. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route.js +1 -1
  270. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route_client-reference-manifest.js +1 -1
  271. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
  272. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
  273. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
  274. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +2 -2
  275. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -1
  276. package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  277. package/.next/server/app/v1/chat/conversations/route.js +2 -2
  278. package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
  279. package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
  280. package/.next/server/app/v1/chat/events/route.js +2 -2
  281. package/.next/server/app/v1/chat/events/route.js.nft.json +1 -1
  282. package/.next/server/app/v1/chat/events/route_client-reference-manifest.js +1 -1
  283. package/.next/server/app/v1/models/route.js +2 -2
  284. package/.next/server/app/v1/models/route.js.nft.json +1 -1
  285. package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -1
  286. package/.next/server/app/waves/page.js +2 -2
  287. package/.next/server/app/waves/page.js.nft.json +1 -1
  288. package/.next/server/app/waves/page_client-reference-manifest.js +1 -1
  289. package/.next/server/app/waves.html +1 -1
  290. package/.next/server/app/waves.rsc +4 -4
  291. package/.next/server/app-paths-manifest.json +28 -26
  292. package/.next/server/chunks/1083.js +1 -1
  293. package/.next/server/chunks/1114.js +1 -1
  294. package/.next/server/chunks/1226.js +1 -1
  295. package/.next/server/chunks/1314.js +1 -1
  296. package/.next/server/chunks/{6529.js → 1578.js} +2 -2
  297. package/.next/server/chunks/1634.js +1 -0
  298. package/.next/server/chunks/166.js +5 -5
  299. package/.next/server/chunks/1819.js +1 -1
  300. package/.next/server/chunks/2180.js +1 -0
  301. package/.next/server/chunks/227.js +2 -2
  302. package/.next/server/chunks/2368.js +2 -0
  303. package/.next/server/chunks/2859.js +1 -1
  304. package/.next/server/chunks/{7674.js → 3030.js} +1 -1
  305. package/.next/server/chunks/3101.js +1 -0
  306. package/.next/server/chunks/3128.js +4 -4
  307. package/.next/server/chunks/3570.js +228 -105
  308. package/.next/server/chunks/3629.js +1 -1
  309. package/.next/server/chunks/3984.js +4 -4
  310. package/.next/server/chunks/4239.js +1 -1
  311. package/.next/server/chunks/4265.js +1 -1
  312. package/.next/server/chunks/4366.js +2 -0
  313. package/.next/server/chunks/4426.js +1 -1
  314. package/.next/server/chunks/4551.js +6 -0
  315. package/.next/server/chunks/4663.js +1 -0
  316. package/.next/server/chunks/4671.js +1 -1
  317. package/.next/server/chunks/4681.js +1 -1
  318. package/.next/server/chunks/4685.js +1 -0
  319. package/.next/server/chunks/4771.js +2 -2
  320. package/.next/server/chunks/4961.js +2 -0
  321. package/.next/server/chunks/5040.js +53 -0
  322. package/.next/server/chunks/5067.js +1 -1
  323. package/.next/server/chunks/544.js +135 -0
  324. package/.next/server/chunks/5463.js +1 -1
  325. package/.next/server/chunks/5544.js +5 -5
  326. package/.next/server/chunks/5561.js +1 -0
  327. package/.next/server/chunks/5708.js +1 -1
  328. package/.next/server/chunks/5786.js +2 -0
  329. package/.next/server/chunks/5829.js +1 -0
  330. package/.next/server/chunks/5863.js +37 -0
  331. package/.next/server/chunks/5880.js +1 -1
  332. package/.next/server/chunks/6034.js +77 -0
  333. package/.next/server/chunks/{5471.js → 6219.js} +1 -1
  334. package/.next/server/chunks/6226.js +6 -0
  335. package/.next/server/chunks/6432.js +1 -0
  336. package/.next/server/chunks/6496.js +1 -0
  337. package/.next/server/chunks/6518.js +2 -0
  338. package/.next/server/chunks/6588.js +2 -0
  339. package/.next/server/chunks/6793.js +1 -0
  340. package/.next/server/chunks/701.js +1 -1
  341. package/.next/server/chunks/7506.js +1 -1
  342. package/.next/server/chunks/7579.js +4 -4
  343. package/.next/server/chunks/7634.js +4 -0
  344. package/.next/server/chunks/7821.js +1 -1
  345. package/.next/server/chunks/793.js +15 -5
  346. package/.next/server/chunks/7969.js +1 -0
  347. package/.next/server/chunks/{6537.js → 8001.js} +1 -1
  348. package/.next/server/chunks/8092.js +1 -0
  349. package/.next/server/chunks/8321.js +1 -0
  350. package/.next/server/chunks/8339.js +1 -1
  351. package/.next/server/chunks/8356.js +1 -0
  352. package/.next/server/chunks/8387.js +1 -1
  353. package/.next/server/chunks/848.js +39 -0
  354. package/.next/server/chunks/8667.js +1 -1
  355. package/.next/server/chunks/8739.js +1 -1
  356. package/.next/server/chunks/9174.js +1 -0
  357. package/.next/server/chunks/9251.js +1 -0
  358. package/.next/server/chunks/9253.js +3 -0
  359. package/.next/server/chunks/94.js +1 -1
  360. package/.next/server/chunks/9537.js +39 -0
  361. package/.next/server/chunks/9671.js +1 -1
  362. package/.next/server/chunks/9724.js +16 -6
  363. package/.next/server/chunks/9857.js +1 -0
  364. package/.next/server/chunks/{3298.js → 9868.js} +2 -2
  365. package/.next/server/instrumentation.js.nft.json +1 -1
  366. package/.next/server/middleware-build-manifest.js +1 -1
  367. package/.next/server/middleware-manifest.json +1 -1
  368. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  369. package/.next/server/pages/404.html +1 -1
  370. package/.next/server/pages/500.html +1 -1
  371. package/.next/server/pages-manifest.json +1 -1
  372. package/.next/server/server-reference-manifest.js +1 -1
  373. package/.next/server/server-reference-manifest.json +1 -1
  374. package/.next/static/JGMk-MwwdpQ94asqw-mUR/_buildManifest.js +1 -0
  375. package/.next/static/chunks/1572-b663a83bba28a0a1.js +8 -0
  376. package/.next/static/chunks/1988-bd73f26184e930c1.js +1 -0
  377. package/.next/static/chunks/2233-1139c1d3ef356980.js +1 -0
  378. package/.next/static/chunks/2266-d812473724cc6643.js +1 -0
  379. package/.next/static/chunks/2988-0b197a9b468a2df9.js +1 -0
  380. package/.next/static/chunks/3089.a0856f8093b90939.js +1 -0
  381. package/.next/static/chunks/3659-0ab9580d5ee5deea.js +1 -0
  382. package/.next/static/chunks/3672-cd86ace43288da79.js +1 -0
  383. package/.next/static/chunks/435-17c79f3b9f8dd38d.js +1 -0
  384. package/.next/static/chunks/454.5fc2f8eef98483e3.js +1 -0
  385. package/.next/static/chunks/4740-62814d07b2b7f760.js +1 -0
  386. package/.next/static/chunks/5418-45aa7e646ad024be.js +1 -0
  387. package/.next/static/chunks/5661-1b976072cc3d2fed.js +1 -0
  388. package/.next/static/chunks/6404-86615a5f5ce5c00f.js +1 -0
  389. package/.next/static/chunks/7445-d8a8be6e451c522e.js +1 -0
  390. package/.next/static/chunks/8054-f33d06ecea5d36e4.js +1 -0
  391. package/.next/static/chunks/812-dfe7ba07ddb7a565.js +1 -0
  392. package/.next/static/chunks/8404-14ef0345dc401ac5.js +1 -0
  393. package/.next/static/chunks/8863-c140a742178a4a87.js +1 -0
  394. package/.next/static/chunks/9562-5494feecd8c6f7a3.js +1 -0
  395. package/.next/static/chunks/9581-6d2523fd68a5e3c4.js +1 -0
  396. package/.next/static/chunks/app/api/approvals/[id]/route-7d60cffa598f4779.js +1 -0
  397. package/.next/static/chunks/app/api/approvals/route-7d60cffa598f4779.js +1 -0
  398. package/.next/static/chunks/app/api/backup/route-7d60cffa598f4779.js +1 -0
  399. package/.next/static/chunks/app/api/browse/route-7d60cffa598f4779.js +1 -0
  400. package/.next/static/chunks/app/api/bugs/enhance/route-7d60cffa598f4779.js +1 -0
  401. package/.next/static/chunks/app/api/cwd/route-7d60cffa598f4779.js +1 -0
  402. package/.next/static/chunks/app/api/encryption/secure/route-7d60cffa598f4779.js +1 -0
  403. package/.next/static/chunks/app/api/env/route-7d60cffa598f4779.js +1 -0
  404. package/.next/static/chunks/app/api/flow/[id]/route-7d60cffa598f4779.js +1 -0
  405. package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-7d60cffa598f4779.js +1 -0
  406. package/.next/static/chunks/app/api/flow/[id]/versions/route-7d60cffa598f4779.js +1 -0
  407. package/.next/static/chunks/app/api/flow/compile/route-7d60cffa598f4779.js +1 -0
  408. package/.next/static/chunks/app/api/flow/generate/route-7d60cffa598f4779.js +1 -0
  409. package/.next/static/chunks/app/api/flow/improve/route-7d60cffa598f4779.js +1 -0
  410. package/.next/static/chunks/app/api/flow/prompt-renderer/route-7d60cffa598f4779.js +1 -0
  411. package/.next/static/chunks/app/api/flow/quick-chat/route-7d60cffa598f4779.js +1 -0
  412. package/.next/static/chunks/app/api/flow/repair/route-7d60cffa598f4779.js +1 -0
  413. package/.next/static/chunks/app/api/flow/route-7d60cffa598f4779.js +1 -0
  414. package/.next/static/chunks/app/api/git/route-7d60cffa598f4779.js +1 -0
  415. package/.next/static/chunks/app/api/init/route-7d60cffa598f4779.js +1 -0
  416. package/.next/static/chunks/app/api/local-models/capability/route-7d60cffa598f4779.js +1 -0
  417. package/.next/static/chunks/app/api/local-models/pull/route-7d60cffa598f4779.js +1 -0
  418. package/.next/static/chunks/app/api/local-models/suggest/route-7d60cffa598f4779.js +1 -0
  419. package/.next/static/chunks/app/api/mcp/app-sandbox/route-7d60cffa598f4779.js +1 -0
  420. package/.next/static/chunks/app/api/mcp/cancel/route-7d60cffa598f4779.js +1 -0
  421. package/.next/static/chunks/app/api/mcp/oauth-capability/route-7d60cffa598f4779.js +1 -0
  422. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-7d60cffa598f4779.js +1 -0
  423. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-7d60cffa598f4779.js +1 -0
  424. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-7d60cffa598f4779.js +1 -0
  425. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-7d60cffa598f4779.js +1 -0
  426. package/.next/static/chunks/app/api/mcp/servers/[name]/route-7d60cffa598f4779.js +1 -0
  427. package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-7d60cffa598f4779.js +1 -0
  428. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-7d60cffa598f4779.js +1 -0
  429. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-7d60cffa598f4779.js +1 -0
  430. package/.next/static/chunks/app/api/mcp/servers/route-7d60cffa598f4779.js +1 -0
  431. package/.next/static/chunks/app/api/mcp/test-connection/route-7d60cffa598f4779.js +1 -0
  432. package/.next/static/chunks/app/api/mcp/test-connection/stream/route-7d60cffa598f4779.js +1 -0
  433. package/.next/static/chunks/app/api/mcp-registry/route-7d60cffa598f4779.js +1 -0
  434. package/.next/static/chunks/app/api/mcp-registry/spotlight/route-7d60cffa598f4779.js +1 -0
  435. package/.next/static/chunks/app/api/model/[id]/route-7d60cffa598f4779.js +1 -0
  436. package/.next/static/chunks/app/api/model/provider/route-7d60cffa598f4779.js +1 -0
  437. package/.next/static/chunks/app/api/model/route-7d60cffa598f4779.js +1 -0
  438. package/.next/static/chunks/app/api/model/test/route-7d60cffa598f4779.js +1 -0
  439. package/.next/static/chunks/app/api/oauth/callback/route-7d60cffa598f4779.js +1 -0
  440. package/.next/static/chunks/app/api/oauth/initiate/route-7d60cffa598f4779.js +1 -0
  441. package/.next/static/chunks/app/api/oauth/reset/route-7d60cffa598f4779.js +1 -0
  442. package/.next/static/chunks/app/api/packages/build/route-7d60cffa598f4779.js +1 -0
  443. package/.next/static/chunks/app/api/packages/derive-secrets/route-7d60cffa598f4779.js +1 -0
  444. package/.next/static/chunks/app/api/packages/install/route-7d60cffa598f4779.js +1 -0
  445. package/.next/static/chunks/app/api/packages/install/status/route-7d60cffa598f4779.js +1 -0
  446. package/.next/static/chunks/app/api/packages/installed/route-7d60cffa598f4779.js +1 -0
  447. package/.next/static/chunks/app/api/packages/resolve/route-7d60cffa598f4779.js +1 -0
  448. package/.next/static/chunks/app/api/packages/scan-targets/route-7d60cffa598f4779.js +1 -0
  449. package/.next/static/chunks/app/api/packages/uninstall/route-7d60cffa598f4779.js +1 -0
  450. package/.next/static/chunks/app/api/planned-executions/[id]/route-7d60cffa598f4779.js +1 -0
  451. package/.next/static/chunks/app/api/planned-executions/[id]/run/route-7d60cffa598f4779.js +1 -0
  452. package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-7d60cffa598f4779.js +1 -0
  453. package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-7d60cffa598f4779.js +1 -0
  454. package/.next/static/chunks/app/api/planned-executions/reconcile/route-7d60cffa598f4779.js +1 -0
  455. package/.next/static/chunks/app/api/planned-executions/route-7d60cffa598f4779.js +1 -0
  456. package/.next/static/chunks/app/api/registry/auth/resend/route-7d60cffa598f4779.js +1 -0
  457. package/.next/static/chunks/app/api/registry/auth/reset/route-7d60cffa598f4779.js +1 -0
  458. package/.next/static/chunks/app/api/registry/auth/route-7d60cffa598f4779.js +1 -0
  459. package/.next/static/chunks/app/api/registry/oauth/callback/route-7d60cffa598f4779.js +1 -0
  460. package/.next/static/chunks/app/api/registry/oauth/initiate/route-7d60cffa598f4779.js +1 -0
  461. package/.next/static/chunks/app/api/registry/publish/route-7d60cffa598f4779.js +1 -0
  462. package/.next/static/chunks/app/api/registry/settings/route-7d60cffa598f4779.js +1 -0
  463. package/.next/static/chunks/app/api/restore/route-7d60cffa598f4779.js +1 -0
  464. package/.next/static/chunks/app/api/runs/active/route-7d60cffa598f4779.js +1 -0
  465. package/.next/static/chunks/app/api/storage/route-7d60cffa598f4779.js +1 -0
  466. package/.next/static/chunks/app/api/update/route-7d60cffa598f4779.js +1 -0
  467. package/.next/static/chunks/app/api/waves/route-7d60cffa598f4779.js +1 -0
  468. package/.next/static/chunks/app/api/webhooks/[id]/route-7d60cffa598f4779.js +1 -0
  469. package/.next/static/chunks/app/chat/page-2b69c5e35164f553.js +1 -0
  470. package/.next/static/chunks/app/executions/page-1d8557a642114697.js +1 -0
  471. package/.next/static/chunks/app/flows/page-3f0d7cca2edff792.js +1 -0
  472. package/.next/static/chunks/app/layout-81f91fb3b894951a.js +1 -0
  473. package/.next/static/chunks/app/mcp/page-0e90177062130679.js +1 -0
  474. package/.next/static/chunks/app/mcp-flows/route-7d60cffa598f4779.js +1 -0
  475. package/.next/static/chunks/app/mcp-proxy/[server]/route-7d60cffa598f4779.js +1 -0
  476. package/.next/static/chunks/app/models/page-c69e10b83c06535d.js +1 -0
  477. package/.next/static/chunks/app/packages/page-bf8aad441c664433.js +1 -0
  478. package/.next/static/chunks/app/settings/page-4a9952c514f284e0.js +1 -0
  479. package/.next/static/chunks/app/v1/chat/completions/route-7d60cffa598f4779.js +1 -0
  480. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-7d60cffa598f4779.js +1 -0
  481. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-7d60cffa598f4779.js +1 -0
  482. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-7d60cffa598f4779.js +1 -0
  483. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-7d60cffa598f4779.js +1 -0
  484. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-7d60cffa598f4779.js +1 -0
  485. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-7d60cffa598f4779.js +1 -0
  486. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/inject/route-7d60cffa598f4779.js +1 -0
  487. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-7d60cffa598f4779.js +1 -0
  488. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-7d60cffa598f4779.js +1 -0
  489. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-7d60cffa598f4779.js +1 -0
  490. package/.next/static/chunks/app/v1/chat/conversations/route-7d60cffa598f4779.js +1 -0
  491. package/.next/static/chunks/app/v1/chat/events/route-7d60cffa598f4779.js +1 -0
  492. package/.next/static/chunks/app/v1/models/route-7d60cffa598f4779.js +1 -0
  493. package/.next/static/chunks/app/waves/{page-97ad6b51c9cae4b3.js → page-3ca939f0f7e817b1.js} +1 -1
  494. package/.next/static/chunks/webpack-08eb993682e1fb1a.js +1 -0
  495. package/.next/static/css/30253fcfa8035221.css +1 -0
  496. package/.next/trace +10 -10
  497. package/.next/types/app/api/packages/scan-targets/route.ts +347 -0
  498. package/.next/types/app/v1/chat/conversations/[conversationId]/inject/route.ts +347 -0
  499. package/.next/types/routes.d.ts +3 -1
  500. package/.next/types/validator.ts +18 -0
  501. package/README.md +6 -1
  502. package/package.json +2 -1
  503. package/.next/server/chunks/1197.js +0 -2
  504. package/.next/server/chunks/1373.js +0 -1
  505. package/.next/server/chunks/1604.js +0 -70
  506. package/.next/server/chunks/1659.js +0 -1
  507. package/.next/server/chunks/2434.js +0 -2
  508. package/.next/server/chunks/2940.js +0 -46
  509. package/.next/server/chunks/3304.js +0 -1
  510. package/.next/server/chunks/346.js +0 -1
  511. package/.next/server/chunks/4042.js +0 -1
  512. package/.next/server/chunks/4661.js +0 -1
  513. package/.next/server/chunks/4765.js +0 -1
  514. package/.next/server/chunks/5958.js +0 -2
  515. package/.next/server/chunks/6005.js +0 -1
  516. package/.next/server/chunks/6126.js +0 -53
  517. package/.next/server/chunks/6849.js +0 -66
  518. package/.next/server/chunks/7214.js +0 -6
  519. package/.next/server/chunks/724.js +0 -27
  520. package/.next/server/chunks/7463.js +0 -6
  521. package/.next/server/chunks/7538.js +0 -21
  522. package/.next/server/chunks/8037.js +0 -1
  523. package/.next/server/chunks/8522.js +0 -2
  524. package/.next/server/chunks/8572.js +0 -1
  525. package/.next/server/chunks/869.js +0 -2
  526. package/.next/server/chunks/8979.js +0 -37
  527. package/.next/server/chunks/8994.js +0 -2
  528. package/.next/server/chunks/9165.js +0 -1
  529. package/.next/server/chunks/9387.js +0 -15
  530. package/.next/server/chunks/9400.js +0 -2
  531. package/.next/server/chunks/9472.js +0 -2
  532. package/.next/server/chunks/9583.js +0 -1
  533. package/.next/static/Q6ITx_bZyoEOnKdZu_C7j/_buildManifest.js +0 -1
  534. package/.next/static/chunks/1594-309fa6363f215d76.js +0 -1
  535. package/.next/static/chunks/1809-e56cf3c476261e34.js +0 -1
  536. package/.next/static/chunks/1937-6bbdcdc660db562c.js +0 -1
  537. package/.next/static/chunks/1988-1b651d581fc44a36.js +0 -1
  538. package/.next/static/chunks/2164-7d6451e88a447de7.js +0 -1
  539. package/.next/static/chunks/218-6cbe09820faa3272.js +0 -1
  540. package/.next/static/chunks/2566-60acd5838abd9f3f.js +0 -1
  541. package/.next/static/chunks/2800-4fa29a3eeb693593.js +0 -1
  542. package/.next/static/chunks/3089.9e15df4ffd0fe4e8.js +0 -1
  543. package/.next/static/chunks/3556-b9855146c7506696.js +0 -1
  544. package/.next/static/chunks/3948-1cb8fc7a64805254.js +0 -1
  545. package/.next/static/chunks/5328-4e556503b70e72b4.js +0 -1
  546. package/.next/static/chunks/5512.682bef7fd3a7c286.js +0 -1
  547. package/.next/static/chunks/6195-8c4c57628e9013d5.js +0 -1
  548. package/.next/static/chunks/6669-a949326b30ea1d39.js +0 -1
  549. package/.next/static/chunks/6777-4b0d05731a089de4.js +0 -1
  550. package/.next/static/chunks/7304-e7cd725083617b81.js +0 -8
  551. package/.next/static/chunks/7445-2802e158c9093556.js +0 -1
  552. package/.next/static/chunks/795-704a0e742ecc2ef6.js +0 -1
  553. package/.next/static/chunks/812-3ceea0da38ad2891.js +0 -1
  554. package/.next/static/chunks/8551-a28272acfda62ac9.js +0 -1
  555. package/.next/static/chunks/9554-cb5bd72cb40e8dbe.js +0 -1
  556. package/.next/static/chunks/9562-ef0ddd4e6b9023cf.js +0 -1
  557. package/.next/static/chunks/app/api/approvals/[id]/route-c745e5b53b81491a.js +0 -1
  558. package/.next/static/chunks/app/api/approvals/route-c745e5b53b81491a.js +0 -1
  559. package/.next/static/chunks/app/api/backup/route-c745e5b53b81491a.js +0 -1
  560. package/.next/static/chunks/app/api/browse/route-c745e5b53b81491a.js +0 -1
  561. package/.next/static/chunks/app/api/bugs/enhance/route-c745e5b53b81491a.js +0 -1
  562. package/.next/static/chunks/app/api/cwd/route-c745e5b53b81491a.js +0 -1
  563. package/.next/static/chunks/app/api/encryption/secure/route-c745e5b53b81491a.js +0 -1
  564. package/.next/static/chunks/app/api/env/route-c745e5b53b81491a.js +0 -1
  565. package/.next/static/chunks/app/api/flow/[id]/route-c745e5b53b81491a.js +0 -1
  566. package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-c745e5b53b81491a.js +0 -1
  567. package/.next/static/chunks/app/api/flow/[id]/versions/route-c745e5b53b81491a.js +0 -1
  568. package/.next/static/chunks/app/api/flow/compile/route-c745e5b53b81491a.js +0 -1
  569. package/.next/static/chunks/app/api/flow/generate/route-c745e5b53b81491a.js +0 -1
  570. package/.next/static/chunks/app/api/flow/improve/route-c745e5b53b81491a.js +0 -1
  571. package/.next/static/chunks/app/api/flow/prompt-renderer/route-c745e5b53b81491a.js +0 -1
  572. package/.next/static/chunks/app/api/flow/quick-chat/route-c745e5b53b81491a.js +0 -1
  573. package/.next/static/chunks/app/api/flow/repair/route-c745e5b53b81491a.js +0 -1
  574. package/.next/static/chunks/app/api/flow/route-c745e5b53b81491a.js +0 -1
  575. package/.next/static/chunks/app/api/git/route-c745e5b53b81491a.js +0 -1
  576. package/.next/static/chunks/app/api/init/route-c745e5b53b81491a.js +0 -1
  577. package/.next/static/chunks/app/api/local-models/capability/route-c745e5b53b81491a.js +0 -1
  578. package/.next/static/chunks/app/api/local-models/pull/route-c745e5b53b81491a.js +0 -1
  579. package/.next/static/chunks/app/api/local-models/suggest/route-c745e5b53b81491a.js +0 -1
  580. package/.next/static/chunks/app/api/mcp/app-sandbox/route-c745e5b53b81491a.js +0 -1
  581. package/.next/static/chunks/app/api/mcp/cancel/route-c745e5b53b81491a.js +0 -1
  582. package/.next/static/chunks/app/api/mcp/oauth-capability/route-c745e5b53b81491a.js +0 -1
  583. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-c745e5b53b81491a.js +0 -1
  584. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-c745e5b53b81491a.js +0 -1
  585. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-c745e5b53b81491a.js +0 -1
  586. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-c745e5b53b81491a.js +0 -1
  587. package/.next/static/chunks/app/api/mcp/servers/[name]/route-c745e5b53b81491a.js +0 -1
  588. package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-c745e5b53b81491a.js +0 -1
  589. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-c745e5b53b81491a.js +0 -1
  590. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-c745e5b53b81491a.js +0 -1
  591. package/.next/static/chunks/app/api/mcp/servers/route-c745e5b53b81491a.js +0 -1
  592. package/.next/static/chunks/app/api/mcp/test-connection/route-c745e5b53b81491a.js +0 -1
  593. package/.next/static/chunks/app/api/mcp/test-connection/stream/route-c745e5b53b81491a.js +0 -1
  594. package/.next/static/chunks/app/api/mcp-registry/route-c745e5b53b81491a.js +0 -1
  595. package/.next/static/chunks/app/api/mcp-registry/spotlight/route-c745e5b53b81491a.js +0 -1
  596. package/.next/static/chunks/app/api/model/[id]/route-c745e5b53b81491a.js +0 -1
  597. package/.next/static/chunks/app/api/model/provider/route-c745e5b53b81491a.js +0 -1
  598. package/.next/static/chunks/app/api/model/route-c745e5b53b81491a.js +0 -1
  599. package/.next/static/chunks/app/api/model/test/route-c745e5b53b81491a.js +0 -1
  600. package/.next/static/chunks/app/api/oauth/callback/route-c745e5b53b81491a.js +0 -1
  601. package/.next/static/chunks/app/api/oauth/initiate/route-c745e5b53b81491a.js +0 -1
  602. package/.next/static/chunks/app/api/oauth/reset/route-c745e5b53b81491a.js +0 -1
  603. package/.next/static/chunks/app/api/packages/build/route-c745e5b53b81491a.js +0 -1
  604. package/.next/static/chunks/app/api/packages/derive-secrets/route-c745e5b53b81491a.js +0 -1
  605. package/.next/static/chunks/app/api/packages/install/route-c745e5b53b81491a.js +0 -1
  606. package/.next/static/chunks/app/api/packages/install/status/route-c745e5b53b81491a.js +0 -1
  607. package/.next/static/chunks/app/api/packages/installed/route-c745e5b53b81491a.js +0 -1
  608. package/.next/static/chunks/app/api/packages/resolve/route-c745e5b53b81491a.js +0 -1
  609. package/.next/static/chunks/app/api/packages/uninstall/route-c745e5b53b81491a.js +0 -1
  610. package/.next/static/chunks/app/api/planned-executions/[id]/route-c745e5b53b81491a.js +0 -1
  611. package/.next/static/chunks/app/api/planned-executions/[id]/run/route-c745e5b53b81491a.js +0 -1
  612. package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-c745e5b53b81491a.js +0 -1
  613. package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-c745e5b53b81491a.js +0 -1
  614. package/.next/static/chunks/app/api/planned-executions/reconcile/route-c745e5b53b81491a.js +0 -1
  615. package/.next/static/chunks/app/api/planned-executions/route-c745e5b53b81491a.js +0 -1
  616. package/.next/static/chunks/app/api/registry/auth/resend/route-c745e5b53b81491a.js +0 -1
  617. package/.next/static/chunks/app/api/registry/auth/reset/route-c745e5b53b81491a.js +0 -1
  618. package/.next/static/chunks/app/api/registry/auth/route-c745e5b53b81491a.js +0 -1
  619. package/.next/static/chunks/app/api/registry/oauth/callback/route-c745e5b53b81491a.js +0 -1
  620. package/.next/static/chunks/app/api/registry/oauth/initiate/route-c745e5b53b81491a.js +0 -1
  621. package/.next/static/chunks/app/api/registry/publish/route-c745e5b53b81491a.js +0 -1
  622. package/.next/static/chunks/app/api/registry/settings/route-c745e5b53b81491a.js +0 -1
  623. package/.next/static/chunks/app/api/restore/route-c745e5b53b81491a.js +0 -1
  624. package/.next/static/chunks/app/api/runs/active/route-c745e5b53b81491a.js +0 -1
  625. package/.next/static/chunks/app/api/storage/route-c745e5b53b81491a.js +0 -1
  626. package/.next/static/chunks/app/api/update/route-c745e5b53b81491a.js +0 -1
  627. package/.next/static/chunks/app/api/waves/route-c745e5b53b81491a.js +0 -1
  628. package/.next/static/chunks/app/api/webhooks/[id]/route-c745e5b53b81491a.js +0 -1
  629. package/.next/static/chunks/app/chat/page-c39160ddf90bbae9.js +0 -1
  630. package/.next/static/chunks/app/executions/page-10d09f36de30939f.js +0 -1
  631. package/.next/static/chunks/app/flows/page-0d8fb471adfc2981.js +0 -1
  632. package/.next/static/chunks/app/layout-eea7078d7553c21a.js +0 -1
  633. package/.next/static/chunks/app/mcp/page-8ad71bf5801bfe5f.js +0 -1
  634. package/.next/static/chunks/app/mcp-flows/route-c745e5b53b81491a.js +0 -1
  635. package/.next/static/chunks/app/mcp-proxy/[server]/route-c745e5b53b81491a.js +0 -1
  636. package/.next/static/chunks/app/models/page-17e8e6668f92f58d.js +0 -1
  637. package/.next/static/chunks/app/packages/page-9f61751e98134f3d.js +0 -1
  638. package/.next/static/chunks/app/settings/page-afbf8790e99fecaf.js +0 -1
  639. package/.next/static/chunks/app/v1/chat/completions/route-c745e5b53b81491a.js +0 -1
  640. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-c745e5b53b81491a.js +0 -1
  641. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-c745e5b53b81491a.js +0 -1
  642. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-c745e5b53b81491a.js +0 -1
  643. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-c745e5b53b81491a.js +0 -1
  644. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-c745e5b53b81491a.js +0 -1
  645. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-c745e5b53b81491a.js +0 -1
  646. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-c745e5b53b81491a.js +0 -1
  647. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-c745e5b53b81491a.js +0 -1
  648. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-c745e5b53b81491a.js +0 -1
  649. package/.next/static/chunks/app/v1/chat/conversations/route-c745e5b53b81491a.js +0 -1
  650. package/.next/static/chunks/app/v1/chat/events/route-c745e5b53b81491a.js +0 -1
  651. package/.next/static/chunks/app/v1/models/route-c745e5b53b81491a.js +0 -1
  652. package/.next/static/chunks/webpack-0d4a4e773990ac44.js +0 -1
  653. package/.next/static/css/40f9bef305b11bf5.css +0 -1
  654. /package/.next/static/{Q6ITx_bZyoEOnKdZu_C7j → JGMk-MwwdpQ94asqw-mUR}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";exports.id=5463,exports.ids=[5463],exports.modules={25463:(a,b,c)=>{c.d(b,{internalCallToolFor:()=>g,internalToolDefinitionsFor:()=>f});var d=c(81495),e=c(7658);async function f(a){switch(a){case d._:{let{internalToolDefinitions:a}=await Promise.all([c.e(1373),c.e(3736),c.e(9794),c.e(7821),c.e(346),c.e(724),c.e(2940),c.e(6826),c.e(4771),c.e(4671),c.e(4265),c.e(7214),c.e(1226),c.e(5708),c.e(227),c.e(2859)]).then(c.bind(c,42859));return a()}case e.K3:{let{filesystemToolDefinitions:a}=await c.e(8387).then(c.bind(c,18387));return a()}case e.PA:{let{bashToolDefinitions:a}=await c.e(5544).then(c.bind(c,35544));return a()}default:return[]}}async function g(a,b,f,g){switch(b){case d._:{let{internalCallTool:b}=await Promise.all([c.e(1373),c.e(3736),c.e(9794),c.e(7821),c.e(346),c.e(724),c.e(2940),c.e(6826),c.e(4771),c.e(4671),c.e(4265),c.e(7214),c.e(1226),c.e(5708),c.e(227),c.e(2859)]).then(c.bind(c,42859));return b(a,f,g)}case e.K3:{let{filesystemCallTool:a}=await c.e(8387).then(c.bind(c,18387));return a(f,g)}case e.PA:{let{bashCallTool:a}=await c.e(5544).then(c.bind(c,35544));return a(f,g)}default:return{content:[{type:"text",text:`Unknown built-in server: ${b}`}],isError:!0}}}}};
1
+ "use strict";exports.id=5463,exports.ids=[5463],exports.modules={25463:(a,b,c)=>{c.d(b,{internalCallToolFor:()=>g,internalToolDefinitionsFor:()=>f});var d=c(81495),e=c(7658);async function f(a){switch(a){case d._:{let{internalToolDefinitions:a}=await Promise.all([c.e(3736),c.e(9794),c.e(6826),c.e(4771),c.e(4671),c.e(4265),c.e(6226),c.e(1226),c.e(5708),c.e(227),c.e(2859)]).then(c.bind(c,42859));return a()}case e.K3:{let{filesystemToolDefinitions:a}=await Promise.all([c.e(9537),c.e(793),c.e(8387)]).then(c.bind(c,18387));return a()}case e.PA:{let{bashToolDefinitions:a}=await c.e(5544).then(c.bind(c,35544));return a()}default:return[]}}async function g(a,b,f,g,h){switch(b){case d._:{let{internalCallTool:b}=await Promise.all([c.e(3736),c.e(9794),c.e(6826),c.e(4771),c.e(4671),c.e(4265),c.e(6226),c.e(1226),c.e(5708),c.e(227),c.e(2859)]).then(c.bind(c,42859));return b(a,f,g)}case e.K3:{let{filesystemCallTool:a}=await Promise.all([c.e(9537),c.e(793),c.e(8387)]).then(c.bind(c,18387));return a(f,g,h)}case e.PA:{let{bashCallTool:a}=await c.e(5544).then(c.bind(c,35544));return a(f,g,h)}default:return{content:[{type:"text",text:`Unknown built-in server: ${b}`}],isError:!0}}}}};
@@ -1,5 +1,5 @@
1
- "use strict";exports.id=5544,exports.ids=[5544],exports.modules={3233:(a,b,c)=>{c.d(b,{g:()=>f});var d=c(79646);let e=(0,c(50846).h)("utils/process/killProcessTree");function f(a,b=2e3){let c=a.pid;if(void 0===c)return()=>{};if("win32"===process.platform){try{(0,d.spawn)("taskkill",["/pid",String(c),"/T","/F"]).on("error",a=>e.debug(`taskkill failed for pid ${c}: ${a.message}`))}catch(a){e.debug(`taskkill spawn threw for pid ${c}: ${a instanceof Error?a.message:String(a)}`)}return()=>{}}try{process.kill(-c,"SIGTERM")}catch{}let g=setTimeout(()=>{try{process.kill(-c,"SIGKILL")}catch{}},b);return g.unref?.(),()=>clearTimeout(g)}},7969:(a,b,c)=>{c.d(b,{FK:()=>j,FN:()=>l});var d=c(33873),e=c.n(d),f=c(79551),g=c(50846),h=c(7658);let i=(0,g.h)("backend/services/mcp/internal/confinement");function j(a,b){let c=e().relative(a,b);return""===c||!c.startsWith("..")&&!e().isAbsolute(c)}async function k(a,b){let{resolveGlobalVars:d}=await Promise.resolve().then(c.bind(c,73456)),g=(await d(a)).trim();if(!g)return null;if(g.startsWith("file://"))try{return e().resolve((0,f.fileURLToPath)(g))}catch(a){return i.warn(`resolveRootToPath: could not parse file URI "${g}"`,a),null}return e().isAbsolute(g)?e().resolve(g):e().resolve(b,g)}async function l(a,b){let{getDataDir:d}=await Promise.resolve().then(c.bind(c,43326)),f=d(),g=function(a){for(let b of Array.isArray(a)?a:[a]){let a=process.env[b];if(!a||!a.trim())continue;let c=a.split(e().delimiter).map(a=>a.trim()).filter(Boolean).map(a=>e().resolve(a));if(c.length)return c}return null}(b),l=[];try{for(let b of(await (0,h.AC)(a)))l.push(e().isAbsolute(b)?e().resolve(b):e().resolve(f,b))}catch(a){i.warn("loadEffectiveRoots: could not read persisted roots",a)}try{let{getNodeRoots:b}=await Promise.resolve().then(c.bind(c,62850));for(let c of b(a)){let a=await k(c,f);a&&l.push(a)}}catch(a){i.warn("loadEffectiveRoots: could not read node roots",a)}let m=Array.from(new Set(l));if(!g)return m;let n=m.filter(a=>g.some(b=>j(b,a)));return n.length?n:g}},35544:(a,b,c)=>{let d,e;c.d(b,{bashCallTool:()=>F,bashToolDefinitions:()=>z});var f=c(33873),g=c.n(f),h=c(29021),i=c.n(h),j=c(79646),k=c(3233),l=c(50846),m=c(43326),n=c(7658),o=c(7969);let p=(0,l.h)("backend/services/mcp/internal/bashTools");function q(a){let b=(process.env.PATH??process.env.Path??"").split(g().delimiter).filter(Boolean),c="win32"===process.platform?(process.env.PATHEXT??".EXE;.CMD;.BAT;.COM").split(";").filter(Boolean):[""];for(let d of b)for(let b of c){let c=g().join(d,`${a}${b}`);try{if(i().statSync(c).isFile())return c}catch{}}return null}function r(){return global.__flujo_bash_sessions||(global.__flujo_bash_sessions=new Map),global.__flujo_bash_sessions}function s(a,b=!1){return{content:[{type:"text",text:"string"==typeof a?a:JSON.stringify(a,null,2)}],...b?{isError:!0}:{}}}let t=["FLUJO_BASH_ROOTS","FLUJO_FS_ROOTS"];function u(a,b){let c=(0,m.getDataDir)(),d="string"==typeof a?a.trim():"",e=d?g().isAbsolute(d)?g().resolve(d):g().resolve(c,d):c;if(0===b.length||!b.some(a=>(0,o.FK)(a,e)))throw Error(`cwd "${e}" is outside the configured bash roots.`);return e}let v=new Set(["PATH","Path","HOME","USERPROFILE","TMP","TEMP","TMPDIR","LANG","LC_ALL","SystemRoot","windir","ComSpec","PATHEXT","SystemDrive","NUMBER_OF_PROCESSORS","PROCESSOR_ARCHITECTURE"]);function w(a){return"pwsh"===a||"bash"===a?a:"default"}function x(a,b,c){let{file:f,args:h,useShell:k,effectiveShell:l,fallbackFrom:m}=function(a,b){if("pwsh"===b){let b=void 0!==e?e:e=q("pwsh");return b?{file:b,args:["-NoProfile","-NonInteractive","-Command",a],useShell:!1,effectiveShell:"pwsh"}:{file:a,args:[],useShell:!0,effectiveShell:"default",fallbackFrom:"pwsh"}}if("bash"===b){let b=function(){if(void 0!==d)return d;let a=q("bash");return a||"win32"!==process.platform||(a=[process.env.ProgramFiles,process.env["ProgramFiles(x86)"],process.env.LocalAppData].filter(a=>!!a).flatMap(a=>[g().join(a,"Git","bin","bash.exe"),g().join(a,"Git","usr","bin","bash.exe"),g().join(a,"Programs","Git","bin","bash.exe"),g().join(a,"Programs","Git","usr","bin","bash.exe")]).find(a=>{try{return i().statSync(a).isFile()}catch{return!1}})??null),d=a,a}();return b?{file:b,args:["-c",a],useShell:!1,effectiveShell:"bash"}:{file:a,args:[],useShell:!0,effectiveShell:"default",fallbackFrom:"bash"}}return{file:a,args:[],useShell:!0,effectiveShell:"default"}}(a,c),n="win32"!==process.platform;try{return{child:(0,j.spawn)(f,h,{cwd:b,shell:k,env:function(){var a;if("string"==typeof(a=process.env.FLUJO_BASH_INHERIT_ENV)&&/^(1|true|yes|on)$/i.test(a.trim()))return process.env;let b={};for(let a of Object.keys(process.env))(v.has(a)||/^LC_/.test(a))&&(b[a]=process.env[a]);return b}(),detached:n}),effectiveShell:l,fallbackFrom:m}}catch(a){return{child:void 0,startError:a instanceof Error?a.message:String(a),effectiveShell:l,fallbackFrom:m}}}function y(a,b){return c=>{let d=a();if(d.length>=1e5)return;let e=!1;(d+=c).length>1e5&&(d=d.slice(0,1e5)+"\n…[output truncated]",e=!0),b(d,e)}}function z(){let a={type:"string",enum:["default","pwsh","bash"],description:'Which shell to use: "default" (the OS shell), "pwsh" (PowerShell 7+), or "bash". Falls back to the default shell if the requested one is unavailable.'},b={type:"string",description:"Working directory. Relative paths resolve against the FLUJO data directory. Defaults to the data directory. When bash roots are configured (via the MCP manager, or the FLUJO_BASH_ROOTS / FLUJO_FS_ROOTS env hard ceiling) a cwd outside them is rejected."};return[{name:"run",description:"Run a shell command to completion and return combined stdout/stderr plus the exit code. Pipes and chained commands work. Killed if it exceeds the timeout; large output is truncated. Returns { exitCode, cwd, shell, output, timedOut }.",inputSchema:{type:"object",properties:{command:{type:"string",description:'The command line to execute, e.g. "grep -r foo ." or "curl -s https://…".'},cwd:b,shell:a,timeout:{type:"number",description:"Timeout in seconds (default 60, max 600)."},normalizeNewlines:{type:"boolean",description:"If true, CRLF/CR in the captured output are normalized to LF."}},required:["command"]}},{name:"start",description:"Start a command in the BACKGROUND and return immediately with a { sessionId }. Use status/wait to observe it, write_stdin to feed it input, and kill to stop it.",inputSchema:{type:"object",properties:{command:{type:"string",description:"The command line to execute in the background."},cwd:b,shell:a},required:["command"]}},{name:"status",description:"Return the current state of a background session: { sessionId, running, exitCode, output, truncated }.",inputSchema:{type:"object",properties:{sessionId:{type:"string",description:"The id returned by start."}},required:["sessionId"]}},{name:"wait",description:"Wait until a background session finishes (or the timeout elapses). Returns { sessionId, running, exitCode, output, truncated, timedOut }.",inputSchema:{type:"object",properties:{sessionId:{type:"string",description:"The id returned by start."},timeout:{type:"number",description:"Max seconds to wait (default 60, max 600)."}},required:["sessionId"]}},{name:"write_stdin",description:'Write a string to a running background session\'s stdin. Pass "newline": false to omit the trailing newline. Returns { sessionId, written }.',inputSchema:{type:"object",properties:{sessionId:{type:"string",description:"The id returned by start."},data:{type:"string",description:"Text to write to stdin."},newline:{type:"boolean",description:"Append a trailing newline (default true)."}},required:["sessionId","data"]}},{name:"kill",description:"Kill a background session (and its whole process tree). Returns { sessionId, killed }.",inputSchema:{type:"object",properties:{sessionId:{type:"string",description:"The id returned by start."}},required:["sessionId"]}},{name:"list_sessions",description:"List all known background sessions with their state. Returns { sessions: [{ sessionId, command, running, exitCode, startedAt, endedAt }] }.",inputSchema:{type:"object",properties:{}}}]}function A(a,b){return b?a.replace(/\r\n?/g,"\n"):a}async function B(a,b){let c=String(a?.command??"").trim();if(!c)return s({error:'Provide "command": a shell command line to run.'},!0);let d=u(a.cwd,b),e=w(a.shell),f=!0===a.normalizeNewlines,g=Math.min(1e3*("number"==typeof a.timeout&&a.timeout>0?a.timeout:60),6e5);return await new Promise(a=>{let b,h="",i=!1,j=!1,l=!1,m=y(()=>h,(a,b)=>{h=a,i=b||i}),{child:n,startError:o,effectiveShell:p,fallbackFrom:q}=x(c,d,e),r=q?{requestedShell:q,usedShell:p}:void 0;if(o||!n)return void a(s({error:`Failed to start command (${p}): ${o??"unknown error"}`,cwd:d,shell:p,shellFallback:r},!0));let t=setTimeout(()=>{l=!0,b=(0,k.g)(n)},g),u=c=>{j||(j=!0,clearTimeout(t),b?.(),a(c))};n.stdout?.on("data",a=>m(a.toString())),n.stderr?.on("data",a=>m(a.toString())),n.on("error",a=>{m(`
2
- ${a.message}`),u(s({error:`Command failed to start (${p}): ${a.message}`,cwd:d,shell:p,shellFallback:r,output:A(h,f)},!0))}),n.on("close",a=>{let b=A(h,f);if(l)return void u(s({timedOut:!0,cwd:d,shell:p,shellFallback:r,exitCode:a,truncated:i,output:`${b}
3
- [killed after ${g/1e3}s timeout]`},!0));u(s({exitCode:a,cwd:d,shell:p,shellFallback:r,truncated:i,output:b},0!==a))})})}function C(a){a.reapTimer=setTimeout(()=>{r().delete(a.id)},6e5),a.reapTimer.unref?.()}function D(a,b={}){return{sessionId:a.id,running:a.running,exitCode:a.exitCode,output:a.output,truncated:a.truncated,...b}}async function E(a){let b=String(a?.sessionId??""),c=r().get(b);if(!c)return s({error:`No background session with id "${b}".`},!0);if(!c.running)return s(D(c,{timedOut:!1}));let d=Math.min(1e3*("number"==typeof a.timeout&&a.timeout>0?a.timeout:60),6e5),e=await new Promise(a=>{let b=Date.now(),e=()=>c.running?Date.now()-b>=d?a(!0):void setTimeout(e,100):a(!1);e()});return s(D(c,{timedOut:e}))}async function F(a,b){try{switch(a){case"run":{let a=await (0,o.FN)(n.PA,t);return await B(b,a)}case"start":{let a=await (0,o.FN)(n.PA,t);return function(a,b){let c=String(a?.command??"").trim();if(!c)return s({error:'Provide "command": a shell command line to run.'},!0);let d=r();if(d.size>=25)for(let[a,b]of d)b.running||d.delete(a);if(d.size>=25)return s({error:"Too many active background sessions (max 25). Kill some first."},!0);!function(){if(global.__flujo_bash_cleanup_registered)return;global.__flujo_bash_cleanup_registered=!0;let a=()=>(function(){for(let a of r().values()){if(a.running)try{(0,k.g)(a.child)}catch{}a.reapTimer&&clearTimeout(a.reapTimer)}})();process.on("exit",a),process.on("SIGINT",a),process.on("SIGTERM",a)}();let e=u(a.cwd,b),{child:f,startError:g,effectiveShell:h,fallbackFrom:i}=x(c,e,w(a.shell)),j=i?{requestedShell:i,usedShell:h}:void 0;if(g||!f)return s({error:`Failed to start command (${h}): ${g??"unknown error"}`,cwd:e,shell:h,shellFallback:j},!0);let l=`bash-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,m={id:l,command:c,cwd:e,child:f,output:"",truncated:!1,running:!0,exitCode:null,startedAt:Date.now()};d.set(l,m);let n=y(()=>m.output,(a,b)=>{m.output=a,m.truncated=b||m.truncated});return f.stdout?.on("data",a=>n(a.toString())),f.stderr?.on("data",a=>n(a.toString())),f.on("error",a=>{n(`
4
- ${a.message}`),m.running=!1,m.endedAt=Date.now(),C(m)}),f.on("close",a=>{m.running=!1,m.exitCode=a,m.endedAt=Date.now(),C(m)}),s({sessionId:l,cwd:e,shell:h,shellFallback:j})}(b,a)}case"status":let c=String(b?.sessionId??""),d=r().get(c);return d?s(D(d)):s({error:`No background session with id "${c}".`},!0);case"wait":return await E(b);case"write_stdin":let e=String(b?.sessionId??""),f=r().get(e);if(!f)return s({error:`No background session with id "${e}".`},!0);if(!f.running)return s({error:`Session "${e}" has already exited.`},!0);let g="string"==typeof b.data?b.data:"",h=!1===b.newline?g:`${g}
5
- `;try{f.child.stdin?.write(h)}catch(a){return s({error:`Failed to write to stdin: ${a instanceof Error?a.message:String(a)}`},!0)}return s({sessionId:e,written:Buffer.byteLength(h,"utf8")});case"kill":let i=String(b?.sessionId??""),j=r().get(i);return j?(j.running&&(j.cancelEscalation=(0,k.g)(j.child)),s({sessionId:i,killed:!0})):s({error:`No background session with id "${i}".`},!0);case"list_sessions":return s({sessions:Array.from(r().values()).map(a=>({sessionId:a.id,command:a.command,running:a.running,exitCode:a.exitCode,startedAt:new Date(a.startedAt).toISOString(),endedAt:a.endedAt?new Date(a.endedAt).toISOString():void 0}))});default:return s({error:`Unknown tool on the built-in bash server: ${a}`},!0)}}catch(b){return p.warn("bashCallTool failed",{toolName:a,err:b}),s({error:`Tool failed: ${b instanceof Error?b.message:String(b)}`},!0)}}}};
1
+ "use strict";exports.id=5544,exports.ids=[5544,7969],exports.modules={3233:(a,b,c)=>{c.d(b,{g:()=>f});var d=c(79646);let e=(0,c(50846).h)("utils/process/killProcessTree");function f(a,b=2e3){let c=a.pid;if(void 0===c)return()=>{};if("win32"===process.platform){try{(0,d.spawn)("taskkill",["/pid",String(c),"/T","/F"]).on("error",a=>e.debug(`taskkill failed for pid ${c}: ${a.message}`))}catch(a){e.debug(`taskkill spawn threw for pid ${c}: ${a instanceof Error?a.message:String(a)}`)}return()=>{}}try{process.kill(-c,"SIGTERM")}catch{}let g=setTimeout(()=>{try{process.kill(-c,"SIGKILL")}catch{}},b);return g.unref?.(),()=>clearTimeout(g)}},5591:(a,b,c)=>{c.d(b,{bz:()=>m,wp:()=>j});var d=c(33873),e=c.n(d),f=c(21820),g=c.n(f),h=c(43326),i=c(7969);let j="FLUJO_ALLOW_PROTECTED_PATHS",k=null;function l(a,...b){return e().resolve(a,...b)}function m(a){let b=e().resolve(a);if((function(){let a=[];try{a.push(e().resolve((0,h.getDataDir)()))}catch{}try{a.push(e().resolve(g().tmpdir()))}catch{}return a})().some(a=>(0,i.F)(a,b)))return{denied:!1};for(let a of function(){var a;let b="string"==typeof(a=process.env[j])&&/^(1|true|yes|on)$/i.test(a.trim()),c=(0,h.getHomeDir)(),d=`${b?"off":"on"}::${c}`;if(k&&k.key===d)return k.paths;let f=b?[]:function(a){let b=[];if("win32"===process.platform)for(let c of["AppData","Downloads","Desktop","Documents","Pictures","Music","Videos","OneDrive"])b.push(l(a,c));else if("darwin"===process.platform){for(let c of["Downloads","Desktop","Documents","Pictures","Music","Movies"])b.push(l(a,c));for(let c of["Library/Mail","Library/Messages","Library/Safari","Library/Cookies","Library/Calendars","Library/Application Support/AddressBook","Library/Application Support/com.apple.TCC","Library/PersonalizationPortrait","Library/Metadata/CoreSpotlight","Library/Suggestions"])b.push(l(a,c));for(let a of["/.Spotlight-V100","/.fseventsd","/.DocumentRevisions-V100"])b.push(e().resolve(a))}else for(let c of["Documents","Downloads","Desktop",".ssh",".gnupg",".aws",".config"])b.push(l(a,c));return Array.from(new Set(b))}(c);return k={key:d,paths:f},f}())if((0,i.F)(a,b))return{denied:!0,matchedRoot:a};return{denied:!1}}},7969:(a,b,c)=>{c.d(b,{F:()=>j,loadEffectiveRoots:()=>l});var d=c(33873),e=c.n(d),f=c(79551),g=c(50846),h=c(7658);let i=(0,g.h)("backend/services/mcp/internal/confinement");function j(a,b){let c=e().relative(a,b);return""===c||!c.startsWith("..")&&!e().isAbsolute(c)}async function k(a,b){let{resolveGlobalVars:d}=await Promise.resolve().then(c.bind(c,73456)),g=(await d(a)).trim();if(!g)return null;if(g.startsWith("file://"))try{return e().resolve((0,f.fileURLToPath)(g))}catch(a){return i.warn(`resolveRootToPath: could not parse file URI "${g}"`,a),null}return e().isAbsolute(g)?e().resolve(g):e().resolve(b,g)}async function l(a,b,d){let{getDataDir:f}=await Promise.resolve().then(c.bind(c,43326)),g=f(),l=function(a){for(let b of Array.isArray(a)?a:[a]){let a=process.env[b];if(!a||!a.trim())continue;let c=a.split(e().delimiter).map(a=>a.trim()).filter(Boolean).map(a=>e().resolve(a));if(c.length)return c}return null}(b),m=[];try{for(let b of(await (0,h.AC)(a)))m.push(e().isAbsolute(b)?e().resolve(b):e().resolve(g,b))}catch(a){i.warn("loadEffectiveRoots: could not read persisted roots",a)}try{let{getNodeRoots:b,getNodeRootsForId:e}=await Promise.resolve().then(c.bind(c,62850));for(let c of void 0!==d?(()=>{let c=e(a,d);return c.length>0?c:b(a)})():b(a)){let a=await k(c,g);a&&m.push(a)}}catch(a){i.warn("loadEffectiveRoots: could not read node roots",a)}let n=Array.from(new Set(m));if(!l)return 0===n.length?[g]:n;let o=n.filter(a=>l.some(b=>j(b,a)));return o.length?o:l}},35544:(a,b,c)=>{let d,e;c.d(b,{bashCallTool:()=>H,bashToolDefinitions:()=>B});var f=c(33873),g=c.n(f),h=c(29021),i=c.n(h),j=c(79646),k=c(3233),l=c(50846),m=c(43326),n=c(7658),o=c(7969),p=c(5591);let q=(0,l.h)("backend/services/mcp/internal/bashTools");function r(a){let b=(process.env.PATH??process.env.Path??"").split(g().delimiter).filter(Boolean),c="win32"===process.platform?(process.env.PATHEXT??".EXE;.CMD;.BAT;.COM").split(";").filter(Boolean):[""];for(let d of b)for(let b of c){let c=g().join(d,`${a}${b}`);try{if(i().statSync(c).isFile())return c}catch{}}return null}function s(){return global.__flujo_bash_sessions||(global.__flujo_bash_sessions=new Map),global.__flujo_bash_sessions}function t(a,b=!1){return{content:[{type:"text",text:"string"==typeof a?a:JSON.stringify(a,null,2)}],...b?{isError:!0}:{}}}let u=["FLUJO_BASH_ROOTS","FLUJO_FS_ROOTS"];function v(a,b){let c=(0,m.getDataDir)(),d="string"==typeof a?a.trim():"",e=d?g().isAbsolute(d)?g().resolve(d):g().resolve(c,d):c,f=(0,p.bz)(e);if(f.denied)throw Error(`cwd "${e}" is within a protected location (${f.matchedRoot}) and is blocked by the FLUJO built-in server protected-path policy. Set ${p.wp}=1 to override (operator only).`);if(0===b.length||!b.some(a=>(0,o.F)(a,e)))throw Error(`cwd "${e}" is outside the configured bash roots.`);return e}function w(a,b,c){let d=[],e=new Set,f=a.match(/(?:[A-Za-z]:[\\/][^\s"']*|\\\\[^\s"']+|~\/[^\s"']*|(?<![\w.])\/[^\s"']+)/g)??[],h=(()=>{try{return(0,m.getHomeDir)()}catch{return""}})();for(let a of f){let f,i=a;i.startsWith("~/")&&h&&(i=g().join(h,i.slice(2)));try{f=g().isAbsolute(i)?g().resolve(i):g().resolve(b,i)}catch{continue}if(e.has(f))continue;e.add(f);let j=(0,p.bz)(f);j.denied?d.push(`Command references "${a}", which is inside a protected location (${j.matchedRoot}).`):c.length>0&&!c.some(a=>(0,o.F)(a,f))&&d.push(`Command references "${a}", which is outside the configured working roots.`)}return d}let x=new Set(["PATH","Path","HOME","USERPROFILE","TMP","TEMP","TMPDIR","LANG","LC_ALL","SystemRoot","windir","ComSpec","PATHEXT","SystemDrive","NUMBER_OF_PROCESSORS","PROCESSOR_ARCHITECTURE"]);function y(a){return"pwsh"===a||"bash"===a?a:"default"}function z(a,b,c){let{file:f,args:h,useShell:k,effectiveShell:l,fallbackFrom:m}=function(a,b){if("pwsh"===b){let b=void 0!==e?e:e=r("pwsh");return b?{file:b,args:["-NoProfile","-NonInteractive","-Command",a],useShell:!1,effectiveShell:"pwsh"}:{file:a,args:[],useShell:!0,effectiveShell:"default",fallbackFrom:"pwsh"}}if("bash"===b){let b=function(){if(void 0!==d)return d;let a=r("bash");return a||"win32"!==process.platform||(a=[process.env.ProgramFiles,process.env["ProgramFiles(x86)"],process.env.LocalAppData].filter(a=>!!a).flatMap(a=>[g().join(a,"Git","bin","bash.exe"),g().join(a,"Git","usr","bin","bash.exe"),g().join(a,"Programs","Git","bin","bash.exe"),g().join(a,"Programs","Git","usr","bin","bash.exe")]).find(a=>{try{return i().statSync(a).isFile()}catch{return!1}})??null),d=a,a}();return b?{file:b,args:["-c",a],useShell:!1,effectiveShell:"bash"}:{file:a,args:[],useShell:!0,effectiveShell:"default",fallbackFrom:"bash"}}return{file:a,args:[],useShell:!0,effectiveShell:"default"}}(a,c),n="win32"!==process.platform;try{return{child:(0,j.spawn)(f,h,{cwd:b,shell:k,env:function(){var a;if("string"==typeof(a=process.env.FLUJO_BASH_INHERIT_ENV)&&/^(1|true|yes|on)$/i.test(a.trim()))return process.env;let b={};for(let a of Object.keys(process.env))(x.has(a)||/^LC_/.test(a))&&(b[a]=process.env[a]);return b}(),detached:n}),effectiveShell:l,fallbackFrom:m}}catch(a){return{child:void 0,startError:a instanceof Error?a.message:String(a),effectiveShell:l,fallbackFrom:m}}}function A(a,b){return c=>{let d=a();if(d.length>=1e5)return;let e=!1;(d+=c).length>1e5&&(d=d.slice(0,1e5)+"\n…[output truncated]",e=!0),b(d,e)}}function B(){let a={type:"string",enum:["default","pwsh","bash"],description:'Which shell to use: "default" (the OS shell), "pwsh" (PowerShell 7+), or "bash". Falls back to the default shell if the requested one is unavailable.'},b={type:"string",description:"Working directory. Relative paths resolve against the FLUJO data directory. Defaults to the data directory. When bash roots are configured (via the MCP manager, or the FLUJO_BASH_ROOTS / FLUJO_FS_ROOTS env hard ceiling) a cwd outside them is rejected."};return[{name:"run",description:"Run a shell command to completion and return combined stdout/stderr plus the exit code. Pipes and chained commands work. Killed if it exceeds the timeout; large output is truncated. Returns { exitCode, cwd, shell, output, timedOut }.",inputSchema:{type:"object",properties:{command:{type:"string",description:'The command line to execute, e.g. "grep -r foo ." or "curl -s https://…".'},cwd:b,shell:a,timeout:{type:"number",description:"Timeout in seconds (default 60, max 600)."},normalizeNewlines:{type:"boolean",description:"If true, CRLF/CR in the captured output are normalized to LF."}},required:["command"]}},{name:"start",description:"Start a command in the BACKGROUND and return immediately with a { sessionId }. Use status/wait to observe it, write_stdin to feed it input, and kill to stop it.",inputSchema:{type:"object",properties:{command:{type:"string",description:"The command line to execute in the background."},cwd:b,shell:a},required:["command"]}},{name:"status",description:"Return the current state of a background session: { sessionId, running, exitCode, output, truncated }.",inputSchema:{type:"object",properties:{sessionId:{type:"string",description:"The id returned by start."}},required:["sessionId"]}},{name:"wait",description:"Wait until a background session finishes (or the timeout elapses). Returns { sessionId, running, exitCode, output, truncated, timedOut }.",inputSchema:{type:"object",properties:{sessionId:{type:"string",description:"The id returned by start."},timeout:{type:"number",description:"Max seconds to wait (default 60, max 600)."}},required:["sessionId"]}},{name:"write_stdin",description:'Write a string to a running background session\'s stdin. Pass "newline": false to omit the trailing newline. Returns { sessionId, written }.',inputSchema:{type:"object",properties:{sessionId:{type:"string",description:"The id returned by start."},data:{type:"string",description:"Text to write to stdin."},newline:{type:"boolean",description:"Append a trailing newline (default true)."}},required:["sessionId","data"]}},{name:"kill",description:"Kill a background session (and its whole process tree). Returns { sessionId, killed }.",inputSchema:{type:"object",properties:{sessionId:{type:"string",description:"The id returned by start."}},required:["sessionId"]}},{name:"list_sessions",description:"List all known background sessions with their state. Returns { sessions: [{ sessionId, command, running, exitCode, startedAt, endedAt }] }.",inputSchema:{type:"object",properties:{}}}]}function C(a,b){return b?a.replace(/\r\n?/g,"\n"):a}async function D(a,b){let c=String(a?.command??"").trim();if(!c)return t({error:'Provide "command": a shell command line to run.'},!0);let d=v(a.cwd,b),e=w(c,d,b),f=e.length?{warnings:e}:{},g=y(a.shell),h=!0===a.normalizeNewlines,i=Math.min(1e3*("number"==typeof a.timeout&&a.timeout>0?a.timeout:60),6e5);return await new Promise(a=>{let b,e="",j=!1,l=!1,m=!1,n=A(()=>e,(a,b)=>{e=a,j=b||j}),{child:o,startError:p,effectiveShell:q,fallbackFrom:r}=z(c,d,g),s=r?{requestedShell:r,usedShell:q}:void 0;if(p||!o)return void a(t({error:`Failed to start command (${q}): ${p??"unknown error"}`,cwd:d,shell:q,shellFallback:s},!0));let u=setTimeout(()=>{m=!0,b=(0,k.g)(o)},i),v=c=>{l||(l=!0,clearTimeout(u),b?.(),a(c))};o.stdout?.on("data",a=>n(a.toString())),o.stderr?.on("data",a=>n(a.toString())),o.on("error",a=>{n(`
2
+ ${a.message}`),v(t({error:`Command failed to start (${q}): ${a.message}`,cwd:d,shell:q,shellFallback:s,output:C(e,h)},!0))}),o.on("close",a=>{let b=C(e,h);if(m)return void v(t({timedOut:!0,cwd:d,shell:q,shellFallback:s,exitCode:a,truncated:j,output:`${b}
3
+ [killed after ${i/1e3}s timeout]`,...f},!0));v(t({exitCode:a,cwd:d,shell:q,shellFallback:s,truncated:j,output:b,...f},0!==a))})})}function E(a){a.reapTimer=setTimeout(()=>{s().delete(a.id)},6e5),a.reapTimer.unref?.()}function F(a,b={}){return{sessionId:a.id,running:a.running,exitCode:a.exitCode,output:a.output,truncated:a.truncated,...b}}async function G(a){let b=String(a?.sessionId??""),c=s().get(b);if(!c)return t({error:`No background session with id "${b}".`},!0);if(!c.running)return t(F(c,{timedOut:!1}));let d=Math.min(1e3*("number"==typeof a.timeout&&a.timeout>0?a.timeout:60),6e5),e=await new Promise(a=>{let b=Date.now(),e=()=>c.running?Date.now()-b>=d?a(!0):void setTimeout(e,100):a(!1);e()});return t(F(c,{timedOut:e}))}async function H(a,b,c){try{switch(a){case"run":{let a=await (0,o.loadEffectiveRoots)(n.PA,u,c);return await D(b,a)}case"start":{let a=await (0,o.loadEffectiveRoots)(n.PA,u,c);return function(a,b){let c=String(a?.command??"").trim();if(!c)return t({error:'Provide "command": a shell command line to run.'},!0);let d=s();if(d.size>=25)for(let[a,b]of d)b.running||d.delete(a);if(d.size>=25)return t({error:"Too many active background sessions (max 25). Kill some first."},!0);!function(){if(global.__flujo_bash_cleanup_registered)return;global.__flujo_bash_cleanup_registered=!0;let a=()=>(function(){for(let a of s().values()){if(a.running)try{(0,k.g)(a.child)}catch{}a.reapTimer&&clearTimeout(a.reapTimer)}})();process.on("exit",a),process.on("SIGINT",a),process.on("SIGTERM",a)}();let e=v(a.cwd,b),f=w(c,e,b),g=f.length?{warnings:f}:{},{child:h,startError:i,effectiveShell:j,fallbackFrom:l}=z(c,e,y(a.shell)),m=l?{requestedShell:l,usedShell:j}:void 0;if(i||!h)return t({error:`Failed to start command (${j}): ${i??"unknown error"}`,cwd:e,shell:j,shellFallback:m},!0);let n=`bash-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,o={id:n,command:c,cwd:e,child:h,output:"",truncated:!1,running:!0,exitCode:null,startedAt:Date.now()};d.set(n,o);let p=A(()=>o.output,(a,b)=>{o.output=a,o.truncated=b||o.truncated});return h.stdout?.on("data",a=>p(a.toString())),h.stderr?.on("data",a=>p(a.toString())),h.on("error",a=>{p(`
4
+ ${a.message}`),o.running=!1,o.endedAt=Date.now(),E(o)}),h.on("close",a=>{o.running=!1,o.exitCode=a,o.endedAt=Date.now(),E(o)}),t({sessionId:n,cwd:e,shell:j,shellFallback:m,...g})}(b,a)}case"status":let d=String(b?.sessionId??""),e=s().get(d);return e?t(F(e)):t({error:`No background session with id "${d}".`},!0);case"wait":return await G(b);case"write_stdin":let f=String(b?.sessionId??""),g=s().get(f);if(!g)return t({error:`No background session with id "${f}".`},!0);if(!g.running)return t({error:`Session "${f}" has already exited.`},!0);let h="string"==typeof b.data?b.data:"",i=!1===b.newline?h:`${h}
5
+ `;try{g.child.stdin?.write(i)}catch(a){return t({error:`Failed to write to stdin: ${a instanceof Error?a.message:String(a)}`},!0)}return t({sessionId:f,written:Buffer.byteLength(i,"utf8")});case"kill":let j=String(b?.sessionId??""),l=s().get(j);return l?(l.running&&(l.cancelEscalation=(0,k.g)(l.child)),t({sessionId:j,killed:!0})):t({error:`No background session with id "${j}".`},!0);case"list_sessions":return t({sessions:Array.from(s().values()).map(a=>({sessionId:a.id,command:a.command,running:a.running,exitCode:a.exitCode,startedAt:new Date(a.startedAt).toISOString(),endedAt:a.endedAt?new Date(a.endedAt).toISOString():void 0}))});default:return t({error:`Unknown tool on the built-in bash server: ${a}`},!0)}}catch(b){return q.warn("bashCallTool failed",{toolName:a,err:b}),t({error:`Tool failed: ${b instanceof Error?b.message:String(b)}`},!0)}}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=5561,exports.ids=[5561],exports.modules={55561:(a,b,c)=>{c.d(b,{A:()=>s});var d=c(21124),e=c(38301),f=c(81637),g=c(8521),h=c(79515),i=c(88745),j=c(53773),k=c(41893),l=c(68730),m=c(22042),n=c(34304),o=c(37674),p=c(91059),q=c(75550);let r=(0,c(19815).h)("frontend/components/Settings/RegistryAccountSettings");function s(){let[a,b]=(0,e.useState)(null),[c,s]=(0,e.useState)(!0),[t,u]=(0,e.useState)(!1),[v,w]=(0,e.useState)(null),[x,y]=(0,e.useState)("login"),[z,A]=(0,e.useState)(""),[B,C]=(0,e.useState)(""),[D,E]=(0,e.useState)(""),[F,G]=(0,e.useState)(""),H=(0,e.useCallback)(async()=>{try{let[a,c]=await Promise.all([q.f.getStatus(),q.f.getSettings()]);b(a),G(c.defaultUrl),E(c.usingDefault?"":c.baseUrl)}catch(a){r.warn("Failed to load registry account status",a)}finally{s(!1)}},[]),I=async()=>{u(!0),w(null);try{let a="signup"===x?await q.f.signup(z.trim(),B):await q.f.login(z.trim(),B);"authenticated"===a.status?(w({type:"success",text:"Signed in to the package registry."}),C("")):"confirmation_required"===a.status?(w({type:"info",text:a.message||"Check your inbox to confirm your email."}),C("")):w({type:"error",text:a.message||"Authentication failed."}),a.account?b(a.account):await H()}catch(a){w({type:"error",text:a instanceof Error?a.message:"Authentication failed."})}finally{u(!1)}},J=async()=>{u(!0),w(null);try{await q.f.logout(),await H(),w({type:"success",text:"Logged out."})}catch(a){w({type:"error",text:a instanceof Error?a.message:"Failed to log out."})}finally{u(!1)}},K=async a=>{u(!0),w(null);try{let{authorizationUrl:b}=await q.f.beginOAuth(a);window.location.assign(b)}catch(a){w({type:"error",text:a instanceof Error?a.message:"Failed to start OAuth sign-in."}),u(!1)}},L=async()=>{u(!0),w(null);try{let a=await q.f.resendConfirmation();w(a.success?{type:"success",text:"Confirmation email sent."}:{type:"error",text:a.message||"Failed to resend confirmation."})}finally{u(!1)}},M=async()=>{let a=z.trim();if(!a)return void w({type:"info",text:"Enter your account email above, then tap “Forgot password?”."});u(!0),w(null);try{await q.f.requestPasswordReset(a),w({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){w({type:"error",text:a instanceof Error?a.message:"Failed to request a password reset."})}finally{u(!1)}},N=async()=>{u(!0),w(null);try{let a=await q.f.saveSettings(D.trim());w(a.success?{type:"success",text:"Registry URL saved."}:{type:"error",text:a.message||"Invalid registry URL."})}finally{u(!1)}};if(c)return(0,d.jsx)(f.default,{sx:{display:"flex",justifyContent:"center",p:3},children:(0,d.jsx)(g.default,{size:28})});let O=!!a?.signedIn,P=!!(a?.email&&!O&&a&&!a.isConfirmed);return(0,d.jsxs)(f.default,{sx:{width:"100%"},children:[(0,d.jsx)(h.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."}),v&&(0,d.jsx)(i.A,{severity:v.type,sx:{mb:2},onClose:()=>w(null),children:v.text}),O?(0,d.jsxs)(j.A,{spacing:2,children:[(0,d.jsxs)(j.A,{direction:"row",spacing:1,alignItems:"center",flexWrap:"wrap",useFlexGap:!0,children:[(0,d.jsx)(h.default,{variant:"subtitle1",children:a?.email}),a?.publisherHandle&&(0,d.jsx)(k.A,{size:"small",label:`@${a.publisherHandle}`}),a?.isConfirmed?(0,d.jsx)(k.A,{size:"small",color:"success",label:"Confirmed"}):(0,d.jsx)(k.A,{size:"small",color:"warning",label:"Unconfirmed"})]}),(0,d.jsx)(f.default,{children:(0,d.jsx)(l.A,{variant:"outlined",onClick:J,disabled:t,children:"Log out"})})]}):P?(0,d.jsxs)(j.A,{spacing:2,children:[(0,d.jsxs)(i.A,{severity:"info",children:["We sent a confirmation link to ",(0,d.jsx)("strong",{children:a?.email}),". Confirm your email, then log in to start publishing."]}),(0,d.jsxs)(j.A,{direction:"row",spacing:1,children:[(0,d.jsx)(l.A,{variant:"outlined",onClick:L,disabled:t,children:"Resend confirmation email"}),(0,d.jsx)(l.A,{onClick:J,disabled:t,children:"Use a different account"})]})]}):(0,d.jsxs)(j.A,{spacing:2,children:[(0,d.jsxs)(m.A,{value:x,onChange:(a,b)=>y(b),children:[(0,d.jsx)(n.A,{value:"login",label:"Log in"}),(0,d.jsx)(n.A,{value:"signup",label:"Sign up"})]}),(0,d.jsx)(o.A,{label:"Email",type:"email",value:z,onChange:a=>A(a.target.value),fullWidth:!0,autoComplete:"username"}),(0,d.jsx)(o.A,{label:"Password",type:"password",value:B,onChange:a=>C(a.target.value),fullWidth:!0,autoComplete:"signup"===x?"new-password":"current-password"}),(0,d.jsx)(f.default,{children:(0,d.jsx)(l.A,{variant:"contained",onClick:I,disabled:t||!z.trim()||!B,children:"signup"===x?"Sign up":"Log in"})}),"login"===x&&(0,d.jsx)(f.default,{children:(0,d.jsx)(l.A,{variant:"text",size:"small",onClick:M,disabled:t,sx:{textTransform:"none",px:0},children:"Forgot password?"})}),(0,d.jsx)(p.A,{children:"or"}),(0,d.jsxs)(j.A,{direction:"row",spacing:1,flexWrap:"wrap",useFlexGap:!0,children:[(0,d.jsx)(l.A,{variant:"outlined",onClick:()=>K("github"),disabled:t,children:"Continue with GitHub"}),(0,d.jsx)(l.A,{variant:"outlined",onClick:()=>K("google"),disabled:t,children:"Continue with Google"})]})]}),(0,d.jsx)(p.A,{sx:{my:3}}),(0,d.jsx)(h.default,{variant:"subtitle2",gutterBottom:!0,children:"Registry URL"}),(0,d.jsxs)(h.default,{variant:"body2",color:"text.secondary",sx:{mb:1},children:["Leave blank to use the default (",F,")."]}),(0,d.jsxs)(j.A,{direction:"row",spacing:1,alignItems:"center",flexWrap:"wrap",useFlexGap:!0,children:[(0,d.jsx)(o.A,{size:"small",placeholder:F,value:D,onChange:a=>E(a.target.value),sx:{minWidth:320}}),(0,d.jsx)(l.A,{variant:"outlined",onClick:N,disabled:t,children:"Save"})]})]})}},75550:(a,b,c)=>{c.d(b,{f:()=>e,p:()=>d}),(0,c(19815).h)("frontend/services/registry");let d=()=>{throw Error("RegistryService can only be used in browser environment")},e=new Proxy({},{get(a,b){let c=d(),e=c[b];return"function"==typeof e?e.bind(c):e}})}};
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=5708,exports.ids=[5708],exports.modules={1905:(a,b,c)=>{c.d(b,{Ej:()=>i,NB:()=>m});var d=c(92372),e=c(38844),f=c(50846),g=c(33233);let h=(0,f.h)("backend/services/mcp/autoInstall");async function i(){try{let a=await (0,d.YM)(e.Z.MCP_AUTO_INSTALL_SETTINGS,g.je);return(0,g.zg)(a)}catch(a){return h.warn("Failed to load mcpAutoInstall settings; using safe defaults",a),{...g.je}}}let j="mcp-install-audit",k=Promise.resolve();async function l(){try{return await (0,d.YM)(j,[])}catch(a){return h.error("Failed to load MCP install audit log",a),[]}}async function m(a){let b=k.catch(()=>{}).then(async()=>{let b=await l();b.push(a);let c=b.slice(-300);await (0,d.VH)(j,c)}).catch(a=>{h.error("Failed to append MCP install audit entry",a)});k=b,await b}},9312:(a,b,c)=>{c.d(b,{RB:()=>l,bD:()=>i,jY:()=>k,xv:()=>j});var d=c(50846),e=c(20433),f=c(24463),g=c(87821);let h=(0,d.h)("backend/services/flow/generationContext"),i=300;function j(a,b){let c=String(a).replace(/\s+/g," ").trim();return c.length<=b?c:`${c.slice(0,b).trimEnd()}…`}async function k(){let a=await e.modelService.loadModels(),b=a.map(a=>({id:a.id,name:a.name,...a.displayName?{displayName:a.displayName}:{},...a.description?{description:j(a.description,100)}:{}})),c=[],d={};try{let a=await f.mcpService.loadServerConfigs();if(Array.isArray(a))for(let b of a){if(b.disabled)continue;let a=!1;try{let c=await f.mcpService.getServerStatus(b.name);a=c?.status==="connected"}catch(a){h.debug(`getServerStatus failed for ${b.name}; listing name only`,a)}if(!a){c.push({name:b.name,connected:!1});continue}let{tools:e}=await f.mcpService.listServerTools(b.name),g=(e??[]).filter(a=>a.name).map(a=>({name:a.name,...a.description?{description:j(a.description,100)}:{}}));d[b.name]=g.map(a=>a.name),c.push({name:b.name,connected:!0,tools:g})}}catch(a){h.warn("Could not load MCP servers for the authoring context",a)}let k=[];try{k=await g.flowService.loadFlows()}catch(a){h.warn("Could not load flows for the authoring context",a)}let l={models:b,servers:c,flows:k.map(a=>({id:a.id,name:a.name,...a.description?{description:j(a.description,i)}:{},nodeCount:a.nodes?.length??0}))};return{blocks:l,compile:{models:a.map(a=>({id:a.id,name:a.name,displayName:a.displayName})),servers:c.map(a=>({name:a.name})),serverTools:d,flows:k.map(a=>({id:a.id,name:a.name}))},catalog:function(a){let b=[];for(let c of(b.push("AVAILABLE MODELS (reference by id or name):"),0===a.models.length&&b.push(" (none configured)"),a.models)){let a=c.displayName&&c.displayName!==c.name?`"${c.displayName}" (${c.name})`:c.name,d=c.description?` — ${c.description}`:"";b.push(` - id: ${c.id} — ${a}${d}`)}for(let c of(b.push("",'AVAILABLE MCP SERVERS (attach to process nodes via "servers"):'),0===a.servers.length&&b.push(" (none configured)"),a.servers)){if(!c.connected){b.push(` - ${c.name} (offline — tools unknown; may still be used)`);continue}b.push(` - ${c.name}:`);let a=(c.tools??[]).slice(0,20);for(let c of a){let a=c.description?` — ${c.description}`:"";b.push(` - ${c.name}${a}`)}let d=(c.tools?.length??0)-a.length;d>0&&b.push(` - …and ${d} more`)}for(let c of(b.push("",'EXISTING FLOWS (usable as subflow targets via "flow"):'),0===a.flows.length&&b.push(" (none)"),a.flows.slice(0,15))){let a=c.description?` — ${c.description}`:` — ${c.nodeCount} nodes`;b.push(` - "${c.name}"${a}`)}return a.flows.length>15&&b.push(` - …and ${a.flows.length-15} more`),b.join("\n")}(l),validatorServers:c.map(a=>({name:a.name,status:a.connected?"connected":"disconnected"}))}}function l(a,b){let c=[...a.map(a=>({severity:a.severity,code:a.code,message:a.message})),...b.issues],d=c.filter(a=>"error"===a.severity).length;return{issues:c,errorCount:d,warningCount:c.length-d,isRunnable:0===d}}},33233:(a,b,c)=>{c.d(b,{UM:()=>g,e5:()=>f,je:()=>d,zg:()=>e});let d={requireConsent:!0,namespaceAllowlist:[],trustBrainStem:!0};function e(a){let b=a??{};return{requireConsent:"boolean"==typeof b.requireConsent?b.requireConsent:d.requireConsent,namespaceAllowlist:Array.isArray(b.namespaceAllowlist)?b.namespaceAllowlist.filter(a=>"string"==typeof a&&a.length>0):[],trustBrainStem:"boolean"==typeof b.trustBrainStem?b.trustBrainStem:d.trustBrainStem}}function f(a){let{caller:b,settings:c,registryName:d,allowInstall:e}=a;if("generator"===b)return!0===e?{allowed:!0,reason:"generator-allowinstall",message:"Approved by the per-generation allowInstall opt-in."}:{allowed:!1,reason:"generator-not-allowed",message:"Installing is not allowed in this generation (allowInstall is off)."};if("authoring-tool"===b&&c.trustBrainStem)return{allowed:!0,reason:"brainstem-trusted",message:"Approved: the /mcp-flows authoring tool is trusted (mcpAutoInstall.trustBrainStem)."};if(!c.requireConsent)return{allowed:!0,reason:"consent-disabled",message:"Approved: consent is not required (mcpAutoInstall.requireConsent is off)."};let f=function(a){if("string"!=typeof a)return"";let b=a.indexOf("/");return b>0?a.slice(0,b):""}(d);return""!==f&&c.namespaceAllowlist.includes(f)?{allowed:!0,reason:"namespace-allowlisted",message:`Approved: namespace "${f}" is allowlisted.`}:{allowed:!1,reason:"consent-required",message:"Consent required: review the exact command and arguments, then approve this install (SEP-1024)."}}function g(a,b,c,d,e){return{at:new Date().toISOString(),caller:b,registryName:a.registryName,resolvedName:a.resolvedName,serverName:a.serverName,transport:a.transport,...a.command?{command:a.command}:{},...a.args?{args:a.args}:{},...a.serverUrl?{serverUrl:a.serverUrl}:{},requiredEnvNames:a.requiredEnvNames,verificationStatus:a.verificationStatus,consent:{allowed:c.allowed,reason:c.reason},installed:d,...e?{error:e}:{}}}},88185:(a,b,c)=>{c.d(b,{R:()=>d});let d=`A FlowSpec is a JSON object describing a FLUJO flow semantically — node keys and edges, no coordinates, no ids, no layout:
1
+ "use strict";exports.id=5708,exports.ids=[5708],exports.modules={1905:(a,b,c)=>{c.d(b,{Ej:()=>i,NB:()=>m});var d=c(92372),e=c(38844),f=c(50846),g=c(33233);let h=(0,f.h)("backend/services/mcp/autoInstall");async function i(){try{let a=await (0,d.YM)(e.Z.MCP_AUTO_INSTALL_SETTINGS,g.je);return(0,g.zg)(a)}catch(a){return h.warn("Failed to load mcpAutoInstall settings; using safe defaults",a),{...g.je}}}let j="mcp-install-audit",k=Promise.resolve();async function l(){try{return await (0,d.YM)(j,[])}catch(a){return h.error("Failed to load MCP install audit log",a),[]}}async function m(a){let b=k.catch(()=>{}).then(async()=>{let b=await l();b.push(a);let c=b.slice(-300);await (0,d.VH)(j,c)}).catch(a=>{h.error("Failed to append MCP install audit entry",a)});k=b,await b}},9312:(a,b,c)=>{c.d(b,{RB:()=>l,bD:()=>i,jY:()=>k,xv:()=>j});var d=c(50846),e=c(20433),f=c(60453),g=c(87821);let h=(0,d.h)("backend/services/flow/generationContext"),i=300;function j(a,b){let c=String(a).replace(/\s+/g," ").trim();return c.length<=b?c:`${c.slice(0,b).trimEnd()}…`}async function k(){let a=await e.modelService.loadModels(),b=a.map(a=>({id:a.id,name:a.name,...a.displayName?{displayName:a.displayName}:{},...a.description?{description:j(a.description,100)}:{}})),c=[],d={};try{let a=await f.mcpService.loadServerConfigs();if(Array.isArray(a))for(let b of a){if(b.disabled)continue;let a=!1;try{let c=await f.mcpService.getServerStatus(b.name);a=c?.status==="connected"}catch(a){h.debug(`getServerStatus failed for ${b.name}; listing name only`,a)}if(!a){c.push({name:b.name,connected:!1});continue}let{tools:e}=await f.mcpService.listServerTools(b.name),g=(e??[]).filter(a=>a.name).map(a=>({name:a.name,...a.description?{description:j(a.description,100)}:{}}));d[b.name]=g.map(a=>a.name),c.push({name:b.name,connected:!0,tools:g})}}catch(a){h.warn("Could not load MCP servers for the authoring context",a)}let k=[];try{k=await g.flowService.loadFlows()}catch(a){h.warn("Could not load flows for the authoring context",a)}let l={models:b,servers:c,flows:k.map(a=>({id:a.id,name:a.name,...a.description?{description:j(a.description,i)}:{},nodeCount:a.nodes?.length??0}))};return{blocks:l,compile:{models:a.map(a=>({id:a.id,name:a.name,displayName:a.displayName})),servers:c.map(a=>({name:a.name})),serverTools:d,flows:k.map(a=>({id:a.id,name:a.name}))},catalog:function(a){let b=[];for(let c of(b.push("AVAILABLE MODELS (reference by id or name):"),0===a.models.length&&b.push(" (none configured)"),a.models)){let a=c.displayName&&c.displayName!==c.name?`"${c.displayName}" (${c.name})`:c.name,d=c.description?` — ${c.description}`:"";b.push(` - id: ${c.id} — ${a}${d}`)}for(let c of(b.push("",'AVAILABLE MCP SERVERS (attach to process nodes via "servers"):'),0===a.servers.length&&b.push(" (none configured)"),a.servers)){if(!c.connected){b.push(` - ${c.name} (offline — tools unknown; may still be used)`);continue}b.push(` - ${c.name}:`);let a=(c.tools??[]).slice(0,20);for(let c of a){let a=c.description?` — ${c.description}`:"";b.push(` - ${c.name}${a}`)}let d=(c.tools?.length??0)-a.length;d>0&&b.push(` - …and ${d} more`)}for(let c of(b.push("",'EXISTING FLOWS (usable as subflow targets via "flow"):'),0===a.flows.length&&b.push(" (none)"),a.flows.slice(0,15))){let a=c.description?` — ${c.description}`:` — ${c.nodeCount} nodes`;b.push(` - "${c.name}"${a}`)}return a.flows.length>15&&b.push(` - …and ${a.flows.length-15} more`),b.join("\n")}(l),validatorServers:c.map(a=>({name:a.name,status:a.connected?"connected":"disconnected"}))}}function l(a,b){let c=[...a.map(a=>({severity:a.severity,code:a.code,message:a.message})),...b.issues],d=c.filter(a=>"error"===a.severity).length;return{issues:c,errorCount:d,warningCount:c.length-d,isRunnable:0===d}}},33233:(a,b,c)=>{c.d(b,{UM:()=>g,e5:()=>f,je:()=>d,zg:()=>e});let d={requireConsent:!0,namespaceAllowlist:[],trustBrainStem:!0};function e(a){let b=a??{};return{requireConsent:"boolean"==typeof b.requireConsent?b.requireConsent:d.requireConsent,namespaceAllowlist:Array.isArray(b.namespaceAllowlist)?b.namespaceAllowlist.filter(a=>"string"==typeof a&&a.length>0):[],trustBrainStem:"boolean"==typeof b.trustBrainStem?b.trustBrainStem:d.trustBrainStem}}function f(a){let{caller:b,settings:c,registryName:d,allowInstall:e}=a;if("generator"===b)return!0===e?{allowed:!0,reason:"generator-allowinstall",message:"Approved by the per-generation allowInstall opt-in."}:{allowed:!1,reason:"generator-not-allowed",message:"Installing is not allowed in this generation (allowInstall is off)."};if("authoring-tool"===b&&c.trustBrainStem)return{allowed:!0,reason:"brainstem-trusted",message:"Approved: the /mcp-flows authoring tool is trusted (mcpAutoInstall.trustBrainStem)."};if(!c.requireConsent)return{allowed:!0,reason:"consent-disabled",message:"Approved: consent is not required (mcpAutoInstall.requireConsent is off)."};let f=function(a){if("string"!=typeof a)return"";let b=a.indexOf("/");return b>0?a.slice(0,b):""}(d);return""!==f&&c.namespaceAllowlist.includes(f)?{allowed:!0,reason:"namespace-allowlisted",message:`Approved: namespace "${f}" is allowlisted.`}:{allowed:!1,reason:"consent-required",message:"Consent required: review the exact command and arguments, then approve this install (SEP-1024)."}}function g(a,b,c,d,e){return{at:new Date().toISOString(),caller:b,registryName:a.registryName,resolvedName:a.resolvedName,serverName:a.serverName,transport:a.transport,...a.command?{command:a.command}:{},...a.args?{args:a.args}:{},...a.serverUrl?{serverUrl:a.serverUrl}:{},requiredEnvNames:a.requiredEnvNames,verificationStatus:a.verificationStatus,consent:{allowed:c.allowed,reason:c.reason},installed:d,...e?{error:e}:{}}}},88185:(a,b,c)=>{c.d(b,{R:()=>d});let d=`A FlowSpec is a JSON object describing a FLUJO flow semantically — node keys and edges, no coordinates, no ids, no layout:
2
2
  {
3
3
  "name": "short_flow_name", // letters/digits/_/- only
4
4
  "description": "what the flow does",
@@ -0,0 +1,2 @@
1
+ exports.id=5786,exports.ids=[1925,3629,4306,5786,6793,9174],exports.modules={1925:(a,b,c)=>{"use strict";c.d(b,{Hm:()=>f,xc:()=>e});let d=["key","secret","token","password"],e=a=>d.some(b=>a.toLowerCase().includes(b)),f=a=>e(a)||"authorization"===a.trim().toLowerCase()},3676:(a,b,c)=>{"use strict";c.d(b,{Wj:()=>h,ln:()=>g});var d=c(10641),e=c(58739);let f="encryption_locked";async function g(){return(0,e.isEncryptionLocked)()}async function h(a){return await g()?a?.openai?d.NextResponse.json({error:{message:"Encryption is locked. Unlock FLUJO to continue.",type:f,code:f,param:null}},{status:423}):d.NextResponse.json({error:f},{status:423}):null}},37426:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"40ec842092ea232b6d4aa599a380d422184da5e1ca":()=>d.resolveGlobalVars,"602ea7ca289a8eaa1000fb321a71e292e6c766b6bb":()=>d.G});var d=c(73456)},41115:(a,b,c)=>{"use strict";c.d(b,{$:()=>h,v5:()=>g});var d=c(10641);let e=new Set(["localhost","127.0.0.1","::1"]);function f(a){let b=a.toLowerCase();return!!e.has(b)||(function(){let a=process.env.FLUJO_EXTRA_LOCAL_HOSTS;return a?a.split(",").map(a=>a.trim().toLowerCase()).filter(a=>a.length>0&&"."!==a):[]})().some(a=>a.startsWith(".")?b.endsWith(a):b===a)}function g(a,b){let c=function(a){if(!a)return null;let b=a.trim();if(b.startsWith("[")){let a=b.indexOf("]");return a>0?b.slice(1,a):null}return b.split(":")[0]||null}(a);if(!c||!f(c))return!1;if(b)try{if(!f(new URL(b).hostname))return!1}catch{return!1}return!0}function h(a){return g(a.headers.get("host"),a.headers.get("origin"))?null:d.NextResponse.json({error:"Forbidden: this endpoint only accepts local requests."},{status:403})}},51669:(a,b)=>{"use strict";function c(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
2
+ Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(b,"D",{enumerable:!0,get:function(){return c}})},56793:(a,b,c)=>{"use strict";c.d(b,{eh:()=>g,ru:()=>e});let d=(0,c(50846).h)("backend/services/scheduler/flowRunEventBus");function e(a){return"signal"===a.kind}class f{publish(a){if(0===this.listeners.size)return;let b=e(a)?`signal topic=${a.topic} emitter=${a.emitterFlowId}`:`flow=${a.flowId} status=${a.status}`;for(let c of(d.debug(`Publishing flow event: ${b} firedBy=${a.firedBy} depth=${a.chainDepth} listeners=${this.listeners.size}`),[...this.listeners]))try{c(a)}catch(a){d.warn("A flow-run event listener threw:",a)}}subscribe(a){return this.listeners.add(a),()=>{this.listeners.delete(a)}}get listenerCount(){return this.listeners.size}constructor(){this.listeners=new Set}}function g(){return global.__flujo_flow_run_event_bus||(global.__flujo_flow_run_event_bus=new f),global.__flujo_flow_run_event_bus}},68633:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{decryptActionBoundArgs:function(){return s},encryptActionBoundArgs:function(){return r}}),c(77925);let d=c(97954),e=c(27825),f=c(47686),g=c(77533),h=c(63033),i=c(26906),j=function(a){return a&&a.__esModule?a:{default:a}}(c(74515)),k=new TextEncoder,l=new TextDecoder,m=void 0,n=void 0;async function o(a,b){let c=await (0,g.getActionEncryptionKey)();if(void 0===c)throw Object.defineProperty(Error("Missing encryption key for Server Action. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E65",enumerable:!1,configurable:!0});let d=atob(b),e=d.slice(0,16),f=d.slice(16),h=l.decode(await (0,g.decrypt)(c,(0,g.stringToUint8Array)(e),(0,g.stringToUint8Array)(f)));if(!h.startsWith(a))throw Object.defineProperty(Error("Invalid Server Action payload: failed to decrypt."),"__NEXT_ERROR_CODE",{value:"E191",enumerable:!1,configurable:!0});return h.slice(a.length)}async function p(a,b){let c=await (0,g.getActionEncryptionKey)();if(void 0===c)throw Object.defineProperty(Error("Missing encryption key for Server Action. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E65",enumerable:!1,configurable:!0});let d=new Uint8Array(16);h.workUnitAsyncStorage.exit(()=>crypto.getRandomValues(d));let e=(0,g.arrayBufferToString)(d.buffer),f=await (0,g.encrypt)(c,d,k.encode(a+b));return btoa(e+(0,g.arrayBufferToString)(f))}var q=function(a){return a[a.Ready=0]="Ready",a[a.Pending=1]="Pending",a[a.Complete=2]="Complete",a}(q||{});let r=j.default.cache(async function a(b,...c){let e=h.workUnitAsyncStorage.getStore(),j=e?(0,h.getCacheSignal)(e):void 0,{clientModules:k}=(0,g.getClientReferenceManifestForRsc)(),l=Error();Error.captureStackTrace(l,a);let n=!1,o=e?(0,i.createHangingInputAbortSignal)(e):void 0,q=0;function r(){0===q&&(q=1,null==j||j.beginRead())}function s(){1===q&&(null==j||j.endRead()),q=2}o&&j&&o.addEventListener("abort",r,{once:!0});let t=await (0,f.streamToString)((0,d.renderToReadableStream)(c,k,{filterStackFrame:m,signal:o,onError(a){(null==o||!o.aborted)&&(n||(n=!0,l.message=a instanceof Error?a.message:String(a)))}}),o);if(n)throw s(),l;if(!e)return p(b,t);r();let u=(0,h.getPrerenderResumeDataCache)(e),v=(0,h.getRenderResumeDataCache)(e),w=b+t,x=(null==u?void 0:u.encryptedBoundArgs.get(w))??(null==v?void 0:v.encryptedBoundArgs.get(w));if(x)return x;let y=await p(b,t);return s(),null==u||u.encryptedBoundArgs.set(w,y),y});async function s(a,b){let c,d=await b,f=h.workUnitAsyncStorage.getStore();if(f){let b=(0,h.getCacheSignal)(f),e=(0,h.getPrerenderResumeDataCache)(f),g=(0,h.getRenderResumeDataCache)(f);(c=(null==e?void 0:e.decryptedBoundArgs.get(d))??(null==g?void 0:g.decryptedBoundArgs.get(d)))||(null==b||b.beginRead(),c=await o(a,d),null==b||b.endRead(),null==e||e.decryptedBoundArgs.set(d,c))}else c=await o(a,d);let{edgeRscModuleMapping:i,rscModuleMapping:j}=(0,g.getClientReferenceManifestForRsc)();return await (0,e.createFromReadableStream)(new ReadableStream({start(a){switch(a.enqueue(k.encode(c)),null==f?void 0:f.type){case"prerender":case"prerender-runtime":f.renderSignal.aborted?a.close():f.renderSignal.addEventListener("abort",()=>a.close(),{once:!0});break;case"prerender-client":case"prerender-ppr":case"prerender-legacy":case"request":case"cache":case"private-cache":case"unstable-cache":case void 0:return a.close()}}}),{findSourceMapURL:n,serverConsumerManifest:{moduleLoading:null,moduleMap:j,serverModuleMap:(0,g.getServerModuleMap)()}})}},73456:(a,b,c)=>{"use strict";c.d(b,{G:()=>l,resolveGlobalVars:()=>k});var d=c(75879);c(68633);var e=c(50846),f=c(92372),g=c(38844),h=c(58739),i=c(51669);let j=(0,e.h)("backend/utils/resolveGlobalVars");async function k(a){j.debug("Entering resolveGlobalVars method");let b=await (0,f.YM)(g.Z.GLOBAL_ENV_VARS,{}),c=function(a){if(!a||"object"!=typeof a)return!1;let b=Object.keys(a);if(0===b.length)return!0;let c=a[b[0]];return c&&"object"==typeof c&&"value"in c&&"metadata"in c&&"object"==typeof c.metadata&&"isSecret"in c.metadata}(b);j.debug(`Loaded ${Object.keys(b).length} global environment variables (${c?"new":"old"} format)`);let d={};if(c)for(let[a,c]of Object.entries(b))d[a]=c.value;else d={...b};let e=async a=>{let b=a.match(/\$\{global:([^}]+)\}/g);if(!b)return a;let c=a;for(let a of b){let b=a.substring(9,a.length-1);if(void 0!==d[b]){let e=d[b];if(e.startsWith("encrypted:")){j.debug(`Decrypting encrypted global variable: ${b}`);try{let a=e.substring(10),c=await (0,h.decryptWithPassword)(a);if(c)e=c,j.debug(`Successfully decrypted global variable: ${b}`);else{j.warn(`Failed to decrypt global variable: ${b}`);continue}}catch(a){j.error(`Error decrypting global variable: ${b}`,a);continue}}else if(e.startsWith("encrypted_failed:")){j.warn(`Skipping failed encrypted global variable: ${b}`);continue}j.debug(`Resolved global variable: ${b}`),c=c.replace(a,e)}else j.warn(`Global variable not found: ${b}`)}return c},i=async a=>{if("string"==typeof a)return await e(a);if(Array.isArray(a))return await Promise.all(a.map(a=>i(a)));if(null!==a&&"object"==typeof a){let b={};for(let[c,d]of Object.entries(a))b[c]=await i(d);return b}return a},k=await i(a);return"object"==typeof a&&null!==a&&j.debug("Resolved global variables result:",JSON.stringify(k,null,2)),j.debug("Completed global variable resolution"),k}async function l(a,b=0){if(j.debug(`Entering resolveAndDecryptApiKey method (depth: ${b})`),!a)return j.warn("Empty value provided"),null;if(b>=10)return j.warn(`Maximum resolution depth reached (10) for value: ${a}`),a;let c=a;if(c.startsWith("encrypted:")){j.debug(`Decrypting encrypted value at depth ${b}`);try{let a=c.substring(10),d=await (0,h.decryptWithPassword)(a);if(!d)return j.warn(`Failed to decrypt value at depth ${b}`),null;j.debug(`Successfully decrypted value at depth ${b}`),j.verbose(d),c=d}catch(a){return j.error(`Error decrypting value at depth ${b}:`,a),null}}else c.startsWith("encrypted_failed:")&&(j.warn(`Skipping failed encrypted value at depth ${b}`),c=c.substring(17));if(c.includes("${global:")){j.debug(`Resolving global variables at depth ${b}`);try{let a=await k(c);if(j.verbose(a),a!==c)return j.debug(`Value changed after resolving globals at depth ${b}, processing recursively`),l(a,b+1);c=a}catch(a){return j.error(`Error resolving global variables at depth ${b}:`,a),null}}return j.debug(`Completed resolveAndDecryptApiKey at depth ${b}`),c}(0,i.D)([k,l]),(0,d.A)(k,"40ec842092ea232b6d4aa599a380d422184da5e1ca",null),(0,d.A)(l,"602ea7ca289a8eaa1000fb321a71e292e6c766b6bb",null)},75230:(a,b,c)=>{"use strict";c.d(b,{qf:()=>E,Ed:()=>D,ae:()=>F,jA:()=>G});var d=c(55511),e=c(32524),f=c(50846),g=c(92372),h=c(38844),i=c(10522),j=c(83578);let k=i.object({key:i.string().min(1),label:i.string().optional(),required:i.boolean().optional(),targets:i.array(i.string()).optional()}),l=i.object({kind:i.literal("registry"),registryName:i.string().min(1)}),m=i.object({kind:i.literal("remote"),transport:i.enum(["sse","streamable","websocket"]).optional(),serverUrl:i.string().min(1)}),n=i.discriminatedUnion("kind",[l,m]),o=i.object({localName:i.string().min(1),ref:n,env:i.record(i.string(),i.string()).optional(),envFromSecret:i.record(i.string(),i.string()).optional(),headers:i.record(i.string(),i.string()).optional(),headersFromSecret:i.record(i.string(),i.string()).optional()}).superRefine((a,b)=>{"remote"!==a.ref.kind&&(a.headers&&Object.keys(a.headers).length>0&&b.addIssue({code:j.eq.custom,path:["headers"],message:"`headers` is only valid on remote server refs"}),a.headersFromSecret&&Object.keys(a.headersFromSecret).length>0&&b.addIssue({code:j.eq.custom,path:["headersFromSecret"],message:"`headersFromSecret` is only valid on remote server refs"}))}),p=i.object({name:i.string().min(1),displayName:i.string().min(1),provider:i.string().optional(),baseUrl:i.string().optional(),description:i.string().optional(),promptTemplate:i.string().optional(),temperature:i.string().optional(),apiKeySecret:i.string().optional(),apiKeyGlobalVar:i.string().optional()}),q=i.object({id:i.string().min(1),name:i.string().min(1),nodes:i.array(i.any()),edges:i.array(i.any())}).catchall(i.unknown()),r=i.object({name:i.string().min(1),flowId:i.string().min(1),prompt:i.string(),trigger:i.any()}).catchall(i.unknown()),s=i.object({schemaVersion:i.literal("1"),name:i.string().min(1),version:i.string().min(1),publisher:i.string().optional(),description:i.string().optional(),secrets:i.array(k).optional(),mcpServers:i.array(o).optional(),models:i.array(p).optional(),flows:i.array(q).optional(),plannedExecutions:i.array(r).optional()});var t=c(8665);let u=(0,f.h)("backend/services/packages/packageRegistry");async function v(a,b){if(!a||"string"!=typeof a)throw Error("A package id is required");let c=new URL(`${process.env.FLUJO_PACKAGE_REGISTRY_ORIGIN?.trim()||t.jD}/v0.1/packages/${encodeURIComponent(a)}`);return c.searchParams.set("version",b&&b.trim()?b.trim():"latest"),u.info(`fetchPackageManifest: GET ${c.pathname}${c.search}`),(0,t.Ws)(c,15e3)}var w=c(14265),x=c(20433),y=c(87821),z=c(60453),A=c(4771);let B=(0,f.h)("backend/services/packages/installPackage");function C(a){return a.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}async function D(a){let b,c=()=>({ok:!1,dryRun:!0!==a.consentGranted,created:[],updated:[],skipped:[],disabled:[],servers:[],errors:[]});if("registry"!==a.source){let b=c();return b.errors.push(`Unsupported package source: ${String(a.source)}`),b}try{b=await v(a.packageId,a.version)}catch(d){let b=c();return b.errors.push(`Failed to fetch package "${a.packageId}": ${d instanceof Error?d.message:String(d)}`),b}let d=function(a){let b=s.safeParse(a);return b.success?{ok:!0,manifest:b.data}:{ok:!1,errors:b.error.issues.map(a=>{let b=a.path.join(".");return b?`${b}: ${a.message}`:a.message})}}(b);if(!d.ok){let a=c();return a.errors.push("Invalid package manifest.",...d.errors),a}let e=d.manifest,f=a.secrets??{},i=a=>Object.prototype.hasOwnProperty.call(f,a)&&`${f[a]??""}`.length>0,j=a=>(e.secrets??[]).some(b=>b.key===a&&!0===b.required);if(!0!==a.consentGranted){var k,l;return{ok:!0,dryRun:!0,package:{name:e.name,version:e.version,...e.publisher?{publisher:e.publisher}:{}},preview:(k=e,l=i,{servers:(k.mcpServers??[]).map(a=>({localName:a.localName,source:H(a),requiredEnvMissing:[...Object.entries(a.envFromSecret??{}),...Object.entries(a.headersFromSecret??{})].filter(([,a])=>(k.secrets??[]).some(b=>b.key===a&&b.required)&&!l(a)).map(([a])=>a)})),models:(k.models??[]).map(a=>({displayName:a.displayName,...a.apiKeyGlobalVar?{apiKeyFrom:`\${global:${a.apiKeyGlobalVar}}`}:a.apiKeySecret?{apiKeyFrom:`secret:${a.apiKeySecret}`}:{},...a.apiKeySecret&&(k.secrets??[]).some(b=>b.key===a.apiKeySecret&&b.required)&&!l(a.apiKeySecret)?{missingRequiredSecret:!0}:{}})),flows:(k.flows??[]).map(a=>({name:a.name})),plannedExecutions:(k.plannedExecutions??[]).map(a=>({name:a.name})),secrets:(k.secrets??[]).map(a=>({key:a.key,...a.label?{label:a.label}:{},required:!0===a.required,provided:l(a.key)}))}),created:[],updated:[],skipped:[],disabled:[],servers:[],errors:[]}}let m={ok:!0,dryRun:!1,package:{name:e.name,version:e.version,...e.publisher?{publisher:e.publisher}:{}},created:[],updated:[],skipped:[],disabled:[],servers:[],errors:[]},n={flows:{},models:{},servers:[],plannedExecutions:[]},o={flows:[],models:[],servers:[],plannedExecutions:[]},p=new Set,q=new Map;try{let a=await z.mcpService.loadServerConfigs();if(Array.isArray(a))for(let b of a)p.add(b.name),q.set(b.name,b)}catch(a){B.warn("installPackage: failed to snapshot existing server names",a)}for(let a of e.mcpServers??[])await K(a,{secrets:f,secretProvided:i,secretRequired:j,summary:m,ledgerEntities:n,ledgerCreated:o,existingServerNames:p,existingServerConfigs:q});for(let a of e.models??[])await L(a,{secrets:f,secretProvided:i,secretRequired:j,summary:m,ledgerEntities:n,ledgerCreated:o,existingServerNames:p,existingServerConfigs:q});let r=await M(e,m,n,o);for(let a of e.plannedExecutions??[])await N(a,e.name,r,m,n,o);try{let a=await (0,g.YM)(h.Z.PACKAGE_INSTALLS,{});a[e.name]={packageName:e.name,version:e.version,installedAt:new Date().toISOString(),summary:m,entities:n,created:o},await (0,g.VH)(h.Z.PACKAGE_INSTALLS,a)}catch(a){B.warn("installPackage: failed to persist install ledger",a)}return m}async function E(a){let b=await (0,g.YM)(h.Z.PACKAGE_INSTALLS,{});return b[a]?.summary??null}async function F(){return Object.values(await (0,g.YM)(h.Z.PACKAGE_INSTALLS,{})).map(a=>({packageName:a.packageName,version:a.version,installedAt:a.installedAt,entityCounts:{flows:Object.keys(a.entities?.flows??{}).length,models:Object.keys(a.entities?.models??{}).length,servers:(a.entities?.servers??[]).length,plannedExecutions:(a.entities?.plannedExecutions??[]).length}}))}async function G(a){let b={packageName:a,ok:!0,hasErrors:!1,removed:[],skipped:[],errors:[]},c=(await (0,g.YM)(h.Z.PACKAGE_INSTALLS,{}))[a];if(!c)return b;let d=c.created,e=void 0!==d,f=async(a,c)=>{try{var d,e=await c();e.success?b.removed.push(a):(d=e.error)&&/not found|no planned execution with id|does not exist/i.test(d)?b.skipped.push({...a,reason:"not found"}):b.errors.push({...a,reason:e.error??"delete failed"})}catch(c){b.errors.push({...a,reason:c instanceof Error?c.message:String(c)})}},i=(0,A.getSchedulerService)();for(let a of c.entities?.plannedExecutions??[]){let c={kind:"plannedExecution",id:a};if(e&&!d.plannedExecutions.includes(a)){b.skipped.push({...c,reason:"adopted-not-created"});continue}await f(c,()=>i.delete(a))}for(let[a,g]of Object.entries(c.entities?.flows??{})){let c={kind:"flow",id:g,label:a};if(e&&!d.flows.includes(g)){b.skipped.push({...c,reason:"adopted-not-created"});continue}await f(c,()=>y.flowService.deleteFlow(g))}for(let a of c.entities?.servers??[]){let c={kind:"server",id:a};if(e&&!d.servers.includes(a)){b.skipped.push({...c,reason:"adopted-not-created"});continue}await f(c,()=>z.mcpService.deleteServerConfig(a))}for(let[a,g]of Object.entries(c.entities?.models??{})){let c={kind:"model",id:g,label:a};if(!e){b.skipped.push({...c,reason:"legacy-ledger-no-provenance"});continue}if(!d.models.includes(g)){b.skipped.push({...c,reason:"adopted-not-created"});continue}await f(c,()=>x.modelService.deleteModel(g))}if(b.hasErrors=b.errors.length>0,b.ok=!b.hasErrors,!b.hasErrors)try{let b=await (0,g.YM)(h.Z.PACKAGE_INSTALLS,{});delete b[a],await (0,g.VH)(h.Z.PACKAGE_INSTALLS,b)}catch(a){B.warn("uninstallPackage: failed to delete ledger entry",a)}return b}function H(a){return"registry"===a.ref.kind?`registry:${a.ref.registryName}`:`remote:${a.ref.serverUrl}`}async function I(a,b,c){let{secrets:d,secretProvided:e,summary:f,ledgerEntities:g,existingServerConfigs:h}=b,i=H(a),j=h.get(a.localName);if(!j){f.servers.push({localName:a.localName,source:i,installed:!1,error:"server vanished between snapshot and install"}),f.skipped.push({type:"server",name:a.localName,note:"server not found in configs (stale snapshot)"});return}let k={...j.env??{}};for(let[b,c]of Object.entries(a.env??{}))k[b]=c;for(let[b,c]of Object.entries(a.envFromSecret??{}))e(c)&&(k[b]={value:d[c],metadata:{isSecret:!0}});let l=await z.mcpService.updateServerConfig(a.localName,{env:k});if(!Array.isArray(l)&&l&&"success"in l&&!1===l.success){let b=l.error??"unknown error";f.servers.push({localName:a.localName,source:i,installed:!1,error:b}),f.skipped.push({type:"server",name:a.localName,note:b});return}g.servers.push(a.localName),f.servers.push({localName:a.localName,source:i,installed:!0,serverName:a.localName,alreadyExisted:!0});let m=c.length>0?`env partially merged — missing required secret(s) for: ${c.join(", ")}`:void 0;f.updated.push({type:"server",name:a.localName,id:a.localName,...m?{note:m}:{}})}async function J(a,b,c,d){let e=await z.mcpService.loadServerConfigs().catch(()=>null);if(!Array.isArray(e))return;let f=e.find(b=>b.name===a);if(!f)return;let g=!1,h={...f.env??{}};for(let[a,e]of Object.entries(b))d(e)&&(h[a]={value:c[e],metadata:{isSecret:!0}},g=!0);if(g)try{await z.mcpService.updateServerConfig(a,{env:h})}catch(b){B.warn(`tagSecretEnvKeys: failed to re-tag secret env for "${a}"`,b)}}async function K(a,b){let{secrets:c,secretProvided:d,secretRequired:e,summary:f,ledgerEntities:g,ledgerCreated:h,existingServerNames:i}=b,j=H(a),k={...a.env??{}},l=[];for(let[b,f]of Object.entries(a.envFromSecret??{}))d(f)?k[b]=c[f]:e(f)&&l.push(b);let m={};if("remote"===a.ref.kind){for(let[b,c]of Object.entries(a.headers??{}))m[b]=c;for(let[b,f]of Object.entries(a.headersFromSecret??{}))d(f)?m[b]={value:c[f],metadata:{isSecret:!0}}:e(f)&&l.push(b)}else(a.headers&&Object.keys(a.headers).length>0||a.headersFromSecret&&Object.keys(a.headersFromSecret).length>0)&&B.warn("installServer: headers/headersFromSecret are ignored for non-remote server refs",a.localName);if("registry"===a.ref.kind){if(i.has(a.localName))return void await I(a,b,l);if(l.length>0){f.disabled.push({type:"server",name:a.localName,note:`missing required secret(s) for: ${l.join(", ")}`}),f.servers.push({localName:a.localName,source:j,installed:!1,needsEnv:l});return}let e=await (0,w.aM)(a.ref.registryName,k),m={localName:a.localName,source:j,installed:e.installed,...e.serverName?{serverName:e.serverName}:{},...e.alreadyExisted?{alreadyExisted:!0}:{},...e.needsEnv?{needsEnv:e.needsEnv}:{},...e.error?{error:e.error}:{}};if(f.servers.push(m),e.installed){e.serverName&&g.servers.push(e.serverName);let b={type:"server",name:a.localName,...e.serverName?{id:e.serverName}:{}};e.alreadyExisted?f.updated.push(b):(e.serverName&&h.servers.push(e.serverName),f.created.push(b),e.serverName&&Object.keys(a.envFromSecret??{}).length>0&&await J(e.serverName,a.envFromSecret??{},c,d))}else f.skipped.push({type:"server",name:a.localName,note:e.error??(e.needsEnv?`needs env: ${e.needsEnv.join(", ")}`:"not installed")});return}let n=l.length>0,o=new Set(Object.keys(a.envFromSecret??{}));try{let b=function(a,b,c,d={},e=new Set){if("remote"!==a.ref.kind)throw Error("buildRemoteServerConfig called for a non-remote ref");let f=a.ref.transport??"streamable",g={name:a.localName,disabled:c,autoApprove:[],rootPath:"",env:Object.fromEntries(Object.entries(b).map(([a,b])=>[a,e.has(a)?{value:b,metadata:{isSecret:!0}}:b])),_buildCommand:"",_installCommand:""};if("websocket"===f)return{...g,transport:"websocket",websocketUrl:a.ref.serverUrl};let h=Object.keys(d).length>0;return{...g,transport:f,serverUrl:a.ref.serverUrl,...h?{headers:d}:{}}}(a,k,n,m,o),c=await z.mcpService.updateServerConfig(a.localName,b);if(!Array.isArray(c)&&c&&"success"in c&&!1===c.success){let b=c.error??"unknown error";f.servers.push({localName:a.localName,source:j,installed:!1,error:b}),f.skipped.push({type:"server",name:a.localName,note:b});return}g.servers.push(a.localName),i.has(a.localName)||h.servers.push(a.localName),f.servers.push({localName:a.localName,source:j,installed:!0,serverName:a.localName,...n?{disabled:!0,needsEnv:l}:{}});let d={type:"server",name:a.localName,id:a.localName};n?f.disabled.push({...d,note:`installed disabled — missing required secret(s) for: ${l.join(", ")}`}):f.created.push(d)}catch(c){let b=c instanceof Error?c.message:String(c);f.servers.push({localName:a.localName,source:j,installed:!1,error:b}),f.skipped.push({type:"server",name:a.localName,note:b})}}async function L(a,b){let c,{secrets:d,secretProvided:f,secretRequired:g,summary:h,ledgerEntities:i,ledgerCreated:j}=b,k="";a.apiKeyGlobalVar?k=`\${global:${a.apiKeyGlobalVar}}`:a.apiKeySecret&&(f(a.apiKeySecret)?k=d[a.apiKeySecret]:g(a.apiKeySecret)&&(c=`installed without an API key — missing required secret "${a.apiKeySecret}"`));let l={name:a.name,displayName:a.displayName,...a.provider?{provider:a.provider}:{},...a.baseUrl?{baseUrl:a.baseUrl}:{},...a.description?{description:a.description}:{},...a.promptTemplate?{promptTemplate:a.promptTemplate}:{},...a.temperature?{temperature:a.temperature}:{},ApiKey:k},m=(await x.modelService.loadModels()).find(b=>(b.displayName??"").toLowerCase()===a.displayName.toLowerCase());if(m){let b=await x.modelService.updateModel({...m,...l,id:m.id});if(b.success){i.models[a.displayName]=m.id;let b={type:"model",name:a.displayName,id:m.id};c?h.disabled.push({...b,note:c}):h.updated.push(b)}else h.skipped.push({type:"model",name:a.displayName,note:b.error});return}let n=(0,e.A)(),o=await x.modelService.addModel({id:n,...l});if(o.success){i.models[a.displayName]=n,j.models.push(n);let b={type:"model",name:a.displayName,id:n};c?h.disabled.push({...b,note:c}):h.created.push(b)}else h.skipped.push({type:"model",name:a.displayName,note:o.error})}async function M(a,b,c,e){let f=a.flows??[],g={};for(let b of f)g[b.id]=function(a,b){var c;let e=`pkg-${C(a)}-${C(b)}`.replace(/[^A-Za-z0-9_-]/g,"-");return e.length<=64?e:`${e.slice(0,55)}-${c=`${a}::${b}`,(0,d.createHash)("sha1").update(c).digest("hex").slice(0,8)}`}(a.name,b.id);let h=new Set((await y.flowService.loadFlows()).map(a=>a.id));for(let a of f){let d=g[a.id],f=function(a,b,c){let d=JSON.parse(JSON.stringify(a));for(let a of(d.id=b,delete d.createdAt,delete d.updatedAt,d.nodes??[])){let b=a?.data?.properties;b&&("string"==typeof b.subflowId&&c[b.subflowId]&&(b.subflowId=c[b.subflowId]),Array.isArray(b.parallelSubflowIds)&&(b.parallelSubflowIds=b.parallelSubflowIds.map(a=>"string"==typeof a&&c[a]?c[a]:a)))}return d}(a,d,g),i=h.has(d),j=await y.flowService.saveFlow(f);if(j.success){c.flows[a.id]=d;let f={type:"flow",name:a.name,id:d};i?b.updated.push(f):(e.flows.push(d),b.created.push(f))}else b.skipped.push({type:"flow",name:a.name,note:j.error})}return g}async function N(a,b,c,d,e,f){var g;let h=(0,A.getSchedulerService)(),i=(g=a.name,`pkg-${C(b)}-${C(g)}`.replace(/[^A-Za-z0-9._:-]/g,"-").slice(0,128)),j=c[a.flowId]??a.flowId,{flowId:k,...l}=a,m={...l,id:i,flowId:j,enabled:!1},n=await h.create(m);if(n.execution){e.plannedExecutions.push(i),f.plannedExecutions.push(i),d.created.push({type:"plannedExecution",name:a.name,id:i}),d.disabled.push({type:"plannedExecution",name:a.name,id:i,note:"created disabled — enable it after review"});return}if(n.conflict){let{id:b,...c}=m,f=await h.update(i,c);f.execution?(e.plannedExecutions.push(i),d.updated.push({type:"plannedExecution",name:a.name,id:i}),d.disabled.push({type:"plannedExecution",name:a.name,id:i,note:"updated (disabled) — enable it after review"})):d.skipped.push({type:"plannedExecution",name:a.name,note:f.error});return}d.skipped.push({type:"plannedExecution",name:a.name,note:n.error})}},75879:(a,b,c)=>{"use strict";Object.defineProperty(b,"A",{enumerable:!0,get:function(){return d.registerServerReference}});let d=c(97954)},78335:()=>{},96487:()=>{}};