flujo-ai 3.27.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 (710) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +410 -329
  3. package/.next/app-path-routes-manifest.json +32 -20
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/react-loadable-manifest.json +17 -4
  6. package/.next/routes-manifest.json +31 -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 +1 -1
  18. package/.next/server/app/api/backup/route.js.nft.json +1 -1
  19. package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/bugs/enhance/route.js +3 -3
  22. package/.next/server/app/api/bugs/enhance/route.js.nft.json +1 -1
  23. package/.next/server/app/api/bugs/enhance/route_client-reference-manifest.js +1 -1
  24. package/.next/server/app/api/cwd/route.js +1 -1
  25. package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/encryption/secure/route.js +1 -1
  27. package/.next/server/app/api/encryption/secure/route.js.nft.json +1 -1
  28. package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/env/route.js +2 -2
  30. package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -1
  32. package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/flow/[id]/versions/[versionId]/route.js +1 -0
  34. package/.next/server/app/api/flow/[id]/versions/[versionId]/route.js.nft.json +1 -0
  35. package/.next/server/app/api/flow/[id]/versions/[versionId]/route_client-reference-manifest.js +1 -0
  36. package/.next/server/app/api/flow/[id]/versions/route.js +1 -0
  37. package/.next/server/app/api/flow/[id]/versions/route.js.nft.json +1 -0
  38. package/.next/server/app/api/flow/[id]/versions/route_client-reference-manifest.js +1 -0
  39. package/.next/server/app/api/flow/compile/route.js +1 -1
  40. package/.next/server/app/api/flow/compile/route.js.nft.json +1 -1
  41. package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/flow/generate/route.js +1 -1
  43. package/.next/server/app/api/flow/generate/route.js.nft.json +1 -1
  44. package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/flow/improve/route.js +1 -1
  46. package/.next/server/app/api/flow/improve/route.js.nft.json +1 -1
  47. package/.next/server/app/api/flow/improve/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/flow/prompt-renderer/route.js +2 -2
  49. package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
  50. package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/flow/quick-chat/route.js +1 -1
  52. package/.next/server/app/api/flow/quick-chat/route.js.nft.json +1 -1
  53. package/.next/server/app/api/flow/quick-chat/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/flow/repair/route.js +1 -1
  55. package/.next/server/app/api/flow/repair/route.js.nft.json +1 -1
  56. package/.next/server/app/api/flow/repair/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/flow/route.js.nft.json +1 -1
  58. package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/git/route.js +1 -1
  60. package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/init/route.js +1 -1
  62. package/.next/server/app/api/init/route.js.nft.json +1 -1
  63. package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/local-models/capability/route.js +2 -1
  65. package/.next/server/app/api/local-models/capability/route.js.nft.json +1 -1
  66. package/.next/server/app/api/local-models/capability/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/local-models/pull/route.js +2 -1
  68. package/.next/server/app/api/local-models/pull/route.js.nft.json +1 -1
  69. package/.next/server/app/api/local-models/pull/route_client-reference-manifest.js +1 -1
  70. package/.next/server/app/api/local-models/suggest/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/mcp/app-sandbox/route.js +1 -0
  72. package/.next/server/app/api/mcp/app-sandbox/route.js.nft.json +1 -0
  73. package/.next/server/app/api/mcp/app-sandbox/route_client-reference-manifest.js +1 -0
  74. package/.next/server/app/api/mcp/cancel/route.js +2 -2
  75. package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -1
  76. package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/mcp/oauth-capability/route.js +1 -0
  78. package/.next/server/app/api/mcp/oauth-capability/route.js.nft.json +1 -0
  79. package/.next/server/app/api/mcp/oauth-capability/route_client-reference-manifest.js +1 -0
  80. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js +1 -1
  81. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -1
  82. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js +1 -1
  84. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -1
  85. package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js +1 -1
  87. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -1
  88. package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/mcp/servers/[name]/resources/route.js +1 -1
  90. package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -1
  91. package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/mcp/servers/[name]/route.js +1 -1
  93. package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -1
  94. package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/mcp/servers/[name]/status/route.js +1 -1
  96. package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -1
  97. package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js +1 -1
  99. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -1
  100. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/mcp/servers/[name]/tools/route.js +1 -1
  102. package/.next/server/app/api/mcp/servers/[name]/tools/route.js.nft.json +1 -1
  103. package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/mcp/servers/route.js +1 -1
  105. package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
  106. package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/mcp/test-connection/route.js +1 -1
  108. package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -1
  109. package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/mcp/test-connection/stream/route.js +1 -1
  111. package/.next/server/app/api/mcp/test-connection/stream/route.js.nft.json +1 -1
  112. package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/mcp-registry/route.js +2 -2
  114. package/.next/server/app/api/mcp-registry/route.js.nft.json +1 -1
  115. package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/mcp-registry/spotlight/route.js +1 -1
  117. package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
  118. package/.next/server/app/api/model/[id]/route.js +1 -1
  119. package/.next/server/app/api/model/[id]/route.js.nft.json +1 -1
  120. package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/model/provider/route.js +2 -2
  122. package/.next/server/app/api/model/provider/route.js.nft.json +1 -1
  123. package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/model/route.js +1 -1
  125. package/.next/server/app/api/model/route.js.nft.json +1 -1
  126. package/.next/server/app/api/model/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/model/test/route.js +2 -2
  128. package/.next/server/app/api/model/test/route.js.nft.json +1 -1
  129. package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/oauth/callback/route.js +2 -2
  131. package/.next/server/app/api/oauth/callback/route.js.nft.json +1 -1
  132. package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/oauth/initiate/route.js +2 -2
  134. package/.next/server/app/api/oauth/initiate/route.js.nft.json +1 -1
  135. package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/oauth/reset/route.js +2 -2
  137. package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -1
  138. package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/packages/build/route.js +1 -1
  140. package/.next/server/app/api/packages/build/route.js.nft.json +1 -1
  141. package/.next/server/app/api/packages/build/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/packages/derive-secrets/route.js +1 -1
  143. package/.next/server/app/api/packages/derive-secrets/route.js.nft.json +1 -1
  144. package/.next/server/app/api/packages/derive-secrets/route_client-reference-manifest.js +1 -1
  145. package/.next/server/app/api/packages/install/route.js +1 -1
  146. package/.next/server/app/api/packages/install/route.js.nft.json +1 -1
  147. package/.next/server/app/api/packages/install/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/api/packages/install/status/route.js +1 -1
  149. package/.next/server/app/api/packages/install/status/route.js.nft.json +1 -1
  150. package/.next/server/app/api/packages/install/status/route_client-reference-manifest.js +1 -1
  151. package/.next/server/app/api/packages/installed/route.js +1 -0
  152. package/.next/server/app/api/packages/installed/route.js.nft.json +1 -0
  153. package/.next/server/app/api/packages/installed/route_client-reference-manifest.js +1 -0
  154. package/.next/server/app/api/packages/resolve/route.js +1 -1
  155. package/.next/server/app/api/packages/resolve/route.js.nft.json +1 -1
  156. package/.next/server/app/api/packages/resolve/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/api/packages/scan-targets/route.js +1 -0
  158. package/.next/server/app/api/packages/scan-targets/route.js.nft.json +1 -0
  159. package/.next/server/app/api/packages/scan-targets/route_client-reference-manifest.js +1 -0
  160. package/.next/server/app/api/packages/uninstall/route.js +1 -0
  161. package/.next/server/app/api/packages/uninstall/route.js.nft.json +1 -0
  162. package/.next/server/app/api/packages/uninstall/route_client-reference-manifest.js +1 -0
  163. package/.next/server/app/api/planned-executions/[id]/route.js +2 -2
  164. package/.next/server/app/api/planned-executions/[id]/route.js.nft.json +1 -1
  165. package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/api/planned-executions/[id]/run/route.js +2 -2
  167. package/.next/server/app/api/planned-executions/[id]/run/route.js.nft.json +1 -1
  168. package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/api/planned-executions/[id]/runs/route.js +2 -2
  170. package/.next/server/app/api/planned-executions/[id]/runs/route.js.nft.json +1 -1
  171. package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -1
  172. package/.next/server/app/api/planned-executions/preview-schedule/route.js +1 -1
  173. package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
  174. package/.next/server/app/api/planned-executions/reconcile/route.js +1 -1
  175. package/.next/server/app/api/planned-executions/reconcile/route.js.nft.json +1 -1
  176. package/.next/server/app/api/planned-executions/reconcile/route_client-reference-manifest.js +1 -1
  177. package/.next/server/app/api/planned-executions/route.js +1 -1
  178. package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
  179. package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/api/registry/auth/resend/route.js +1 -1
  181. package/.next/server/app/api/registry/auth/resend/route.js.nft.json +1 -1
  182. package/.next/server/app/api/registry/auth/resend/route_client-reference-manifest.js +1 -1
  183. package/.next/server/app/api/registry/auth/reset/route.js +1 -0
  184. package/.next/server/app/api/registry/auth/reset/route.js.nft.json +1 -0
  185. package/.next/server/app/api/registry/auth/reset/route_client-reference-manifest.js +1 -0
  186. package/.next/server/app/api/registry/auth/route.js +1 -1
  187. package/.next/server/app/api/registry/auth/route.js.nft.json +1 -1
  188. package/.next/server/app/api/registry/auth/route_client-reference-manifest.js +1 -1
  189. package/.next/server/app/api/registry/oauth/callback/route.js +1 -0
  190. package/.next/server/app/api/registry/oauth/callback/route.js.nft.json +1 -0
  191. package/.next/server/app/api/registry/oauth/callback/route_client-reference-manifest.js +1 -0
  192. package/.next/server/app/api/registry/oauth/initiate/route.js +1 -0
  193. package/.next/server/app/api/registry/oauth/initiate/route.js.nft.json +1 -0
  194. package/.next/server/app/api/registry/oauth/initiate/route_client-reference-manifest.js +1 -0
  195. package/.next/server/app/api/registry/publish/route.js +1 -1
  196. package/.next/server/app/api/registry/publish/route.js.nft.json +1 -1
  197. package/.next/server/app/api/registry/publish/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/api/registry/settings/route.js +1 -1
  199. package/.next/server/app/api/registry/settings/route.js.nft.json +1 -1
  200. package/.next/server/app/api/registry/settings/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/api/restore/route.js +1 -1
  202. package/.next/server/app/api/restore/route.js.nft.json +1 -1
  203. package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/api/runs/active/route.js +2 -2
  205. package/.next/server/app/api/runs/active/route.js.nft.json +1 -1
  206. package/.next/server/app/api/runs/active/route_client-reference-manifest.js +1 -1
  207. package/.next/server/app/api/storage/route.js +1 -1
  208. package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
  209. package/.next/server/app/api/update/route.js +1 -1
  210. package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  211. package/.next/server/app/api/waves/route.js +1 -1
  212. package/.next/server/app/api/waves/route.js.nft.json +1 -1
  213. package/.next/server/app/api/waves/route_client-reference-manifest.js +1 -1
  214. package/.next/server/app/api/webhooks/[id]/route.js +1 -1
  215. package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
  216. package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
  217. package/.next/server/app/chat/page.js +8 -8
  218. package/.next/server/app/chat/page.js.nft.json +1 -1
  219. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  220. package/.next/server/app/chat.html +1 -1
  221. package/.next/server/app/chat.rsc +4 -4
  222. package/.next/server/app/docs/page.js +7 -6
  223. package/.next/server/app/docs/page.js.nft.json +1 -1
  224. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  225. package/.next/server/app/docs.html +1 -1
  226. package/.next/server/app/docs.rsc +4 -4
  227. package/.next/server/app/executions/page.js +2 -3
  228. package/.next/server/app/executions/page.js.nft.json +1 -1
  229. package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
  230. package/.next/server/app/executions.html +1 -1
  231. package/.next/server/app/executions.rsc +4 -4
  232. package/.next/server/app/flows/page.js +3 -3
  233. package/.next/server/app/flows/page.js.nft.json +1 -1
  234. package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
  235. package/.next/server/app/flows.html +1 -1
  236. package/.next/server/app/flows.rsc +4 -4
  237. package/.next/server/app/index.html +1 -1
  238. package/.next/server/app/index.rsc +3 -3
  239. package/.next/server/app/mcp/page.js +14 -14
  240. package/.next/server/app/mcp/page.js.nft.json +1 -1
  241. package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
  242. package/.next/server/app/mcp-flows/route.js +1 -1
  243. package/.next/server/app/mcp-flows/route.js.nft.json +1 -1
  244. package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
  245. package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
  246. package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -1
  247. package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
  248. package/.next/server/app/mcp.html +1 -1
  249. package/.next/server/app/mcp.rsc +4 -4
  250. package/.next/server/app/models/page.js +2 -2
  251. package/.next/server/app/models/page.js.nft.json +1 -1
  252. package/.next/server/app/models/page_client-reference-manifest.js +1 -1
  253. package/.next/server/app/packages/page.js +2 -3
  254. package/.next/server/app/packages/page.js.nft.json +1 -1
  255. package/.next/server/app/packages/page_client-reference-manifest.js +1 -1
  256. package/.next/server/app/packages.html +1 -1
  257. package/.next/server/app/packages.rsc +4 -4
  258. package/.next/server/app/page_client-reference-manifest.js +1 -1
  259. package/.next/server/app/settings/page.js +2 -3
  260. package/.next/server/app/settings/page.js.nft.json +1 -1
  261. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  262. package/.next/server/app/settings.html +1 -1
  263. package/.next/server/app/settings.rsc +4 -4
  264. package/.next/server/app/v1/chat/completions/route.js +1 -1
  265. package/.next/server/app/v1/chat/completions/route.js.nft.json +1 -1
  266. package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
  267. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +2 -2
  268. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -1
  269. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
  270. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +2 -2
  271. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -1
  272. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
  273. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -1
  274. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -1
  275. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
  276. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -1
  277. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -1
  278. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
  279. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +2 -2
  280. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -1
  281. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
  282. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +4 -4
  283. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -1
  284. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
  285. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js +2 -0
  286. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js.nft.json +1 -0
  287. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route_client-reference-manifest.js +1 -0
  288. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route.js +1 -1
  289. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route_client-reference-manifest.js +1 -1
  290. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
  291. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
  292. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
  293. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +2 -2
  294. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -1
  295. package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  296. package/.next/server/app/v1/chat/conversations/route.js +2 -2
  297. package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
  298. package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
  299. package/.next/server/app/v1/chat/events/route.js +11 -0
  300. package/.next/server/app/v1/chat/events/route.js.nft.json +1 -0
  301. package/.next/server/app/v1/chat/events/route_client-reference-manifest.js +1 -0
  302. package/.next/server/app/v1/models/route.js +2 -2
  303. package/.next/server/app/v1/models/route.js.nft.json +1 -1
  304. package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -1
  305. package/.next/server/app/waves/page.js +3 -3
  306. package/.next/server/app/waves/page.js.nft.json +1 -1
  307. package/.next/server/app/waves/page_client-reference-manifest.js +1 -1
  308. package/.next/server/app/waves.html +1 -1
  309. package/.next/server/app/waves.rsc +4 -4
  310. package/.next/server/app-paths-manifest.json +32 -20
  311. package/.next/server/chunks/1083.js +1 -1
  312. package/.next/server/chunks/1114.js +1 -1
  313. package/.next/server/chunks/1226.js +1 -1
  314. package/.next/server/chunks/1314.js +1 -1
  315. package/.next/server/chunks/{6529.js → 1578.js} +2 -2
  316. package/.next/server/chunks/1615.js +1 -0
  317. package/.next/server/chunks/1634.js +1 -0
  318. package/.next/server/chunks/166.js +5 -5
  319. package/.next/server/chunks/1805.js +1 -1
  320. package/.next/server/chunks/1819.js +1 -1
  321. package/.next/server/chunks/2180.js +1 -0
  322. package/.next/server/chunks/227.js +2 -2
  323. package/.next/server/chunks/2368.js +2 -0
  324. package/.next/server/chunks/2859.js +1 -1
  325. package/.next/server/chunks/{7674.js → 3030.js} +1 -1
  326. package/.next/server/chunks/3101.js +1 -0
  327. package/.next/server/chunks/3128.js +62 -0
  328. package/.next/server/chunks/3273.js +1 -0
  329. package/.next/server/chunks/3570.js +372 -0
  330. package/.next/server/chunks/3629.js +1 -1
  331. package/.next/server/chunks/38.js +2 -2
  332. package/.next/server/chunks/3951.js +151 -0
  333. package/.next/server/chunks/3984.js +4 -4
  334. package/.next/server/chunks/4239.js +1 -1
  335. package/.next/server/chunks/4265.js +1 -1
  336. package/.next/server/chunks/4366.js +2 -0
  337. package/.next/server/chunks/4426.js +2 -2
  338. package/.next/server/chunks/4551.js +6 -0
  339. package/.next/server/chunks/4663.js +1 -0
  340. package/.next/server/chunks/4671.js +1 -1
  341. package/.next/server/chunks/4681.js +1 -1
  342. package/.next/server/chunks/4685.js +1 -0
  343. package/.next/server/chunks/4771.js +2 -2
  344. package/.next/server/chunks/4961.js +2 -0
  345. package/.next/server/chunks/5040.js +53 -0
  346. package/.next/server/chunks/5067.js +1 -0
  347. package/.next/server/chunks/5096.js +1 -1
  348. package/.next/server/chunks/5148.js +1 -0
  349. package/.next/server/chunks/5200.js +1 -0
  350. package/.next/server/chunks/544.js +135 -0
  351. package/.next/server/chunks/5463.js +1 -1
  352. package/.next/server/chunks/5544.js +5 -5
  353. package/.next/server/chunks/5561.js +1 -0
  354. package/.next/server/chunks/5708.js +5 -4
  355. package/.next/server/chunks/5786.js +2 -0
  356. package/.next/server/chunks/5829.js +1 -0
  357. package/.next/server/chunks/5863.js +37 -0
  358. package/.next/server/chunks/5880.js +1 -1
  359. package/.next/server/chunks/6034.js +77 -0
  360. package/.next/server/chunks/{1089.js → 6219.js} +1 -1
  361. package/.next/server/chunks/6226.js +6 -0
  362. package/.next/server/chunks/6432.js +1 -0
  363. package/.next/server/chunks/6496.js +1 -0
  364. package/.next/server/chunks/6518.js +2 -0
  365. package/.next/server/chunks/6588.js +2 -0
  366. package/.next/server/chunks/6793.js +1 -0
  367. package/.next/server/chunks/688.js +3 -0
  368. package/.next/server/chunks/701.js +1 -1
  369. package/.next/server/chunks/7032.js +1 -1
  370. package/.next/server/chunks/7506.js +1 -1
  371. package/.next/server/chunks/7579.js +8 -7
  372. package/.next/server/chunks/7634.js +4 -0
  373. package/.next/server/chunks/7821.js +1 -1
  374. package/.next/server/chunks/793.js +403 -0
  375. package/.next/server/chunks/7969.js +1 -0
  376. package/.next/server/chunks/{6537.js → 8001.js} +1 -1
  377. package/.next/server/chunks/8092.js +1 -0
  378. package/.next/server/chunks/8165.js +3 -0
  379. package/.next/server/chunks/8321.js +1 -0
  380. package/.next/server/chunks/8339.js +1 -0
  381. package/.next/server/chunks/8356.js +1 -0
  382. package/.next/server/chunks/8387.js +1 -1
  383. package/.next/server/chunks/848.js +39 -0
  384. package/.next/server/chunks/{8192.js → 8568.js} +1 -1
  385. package/.next/server/chunks/8667.js +1 -1
  386. package/.next/server/chunks/8739.js +2 -2
  387. package/.next/server/chunks/9174.js +1 -0
  388. package/.next/server/chunks/9251.js +1 -0
  389. package/.next/server/chunks/9253.js +3 -0
  390. package/.next/server/chunks/9285.js +1 -1
  391. package/.next/server/chunks/94.js +1 -1
  392. package/.next/server/chunks/9537.js +39 -0
  393. package/.next/server/chunks/9671.js +1 -0
  394. package/.next/server/chunks/9724.js +403 -0
  395. package/.next/server/chunks/9857.js +1 -0
  396. package/.next/server/chunks/{3298.js → 9868.js} +2 -2
  397. package/.next/server/chunks/991.js +2 -0
  398. package/.next/server/functions-config-manifest.json +1 -0
  399. package/.next/server/instrumentation.js +1 -1
  400. package/.next/server/instrumentation.js.nft.json +1 -1
  401. package/.next/server/middleware-build-manifest.js +1 -1
  402. package/.next/server/middleware-manifest.json +1 -1
  403. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  404. package/.next/server/pages/404.html +1 -1
  405. package/.next/server/pages/500.html +1 -1
  406. package/.next/server/pages-manifest.json +1 -1
  407. package/.next/server/server-reference-manifest.js +1 -1
  408. package/.next/server/server-reference-manifest.json +1 -1
  409. package/.next/server/src/middleware.js +1 -1
  410. package/.next/server/src/middleware.js.map +1 -1
  411. package/.next/static/JGMk-MwwdpQ94asqw-mUR/_buildManifest.js +1 -0
  412. package/.next/static/chunks/1572-b663a83bba28a0a1.js +8 -0
  413. package/.next/static/chunks/1988-bd73f26184e930c1.js +1 -0
  414. package/.next/static/chunks/2233-1139c1d3ef356980.js +1 -0
  415. package/.next/static/chunks/2266-d812473724cc6643.js +1 -0
  416. package/.next/static/chunks/2988-0b197a9b468a2df9.js +1 -0
  417. package/.next/static/chunks/3089.a0856f8093b90939.js +1 -0
  418. package/.next/static/chunks/3418-a2f5d0c4f29ee2fb.js +1 -0
  419. package/.next/static/chunks/3659-0ab9580d5ee5deea.js +1 -0
  420. package/.next/static/chunks/3672-cd86ace43288da79.js +1 -0
  421. package/.next/static/chunks/{8041-05830e887c133085.js → 3827-9e9a6e11ef808d90.js} +1 -1
  422. package/.next/static/chunks/3910.5c6885d7a5bd753e.js +1 -0
  423. package/.next/static/chunks/3958-5641a828b320f2fe.js +100 -0
  424. package/.next/static/chunks/435-17c79f3b9f8dd38d.js +1 -0
  425. package/.next/static/chunks/454.5fc2f8eef98483e3.js +1 -0
  426. package/.next/static/chunks/4740-62814d07b2b7f760.js +1 -0
  427. package/.next/static/chunks/5418-45aa7e646ad024be.js +1 -0
  428. package/.next/static/chunks/5661-1b976072cc3d2fed.js +1 -0
  429. package/.next/static/chunks/6404-86615a5f5ce5c00f.js +1 -0
  430. package/.next/static/chunks/6947-0ff3545efb53e959.js +1 -0
  431. package/.next/static/chunks/7445-d8a8be6e451c522e.js +1 -0
  432. package/.next/static/chunks/8054-f33d06ecea5d36e4.js +1 -0
  433. package/.next/static/chunks/812-dfe7ba07ddb7a565.js +1 -0
  434. package/.next/static/chunks/8404-14ef0345dc401ac5.js +1 -0
  435. package/.next/static/chunks/8855-02889c9ab4bf0bcf.js +1 -0
  436. package/.next/static/chunks/8863-c140a742178a4a87.js +1 -0
  437. package/.next/static/chunks/9562-5494feecd8c6f7a3.js +1 -0
  438. package/.next/static/chunks/9581-6d2523fd68a5e3c4.js +1 -0
  439. package/.next/static/chunks/app/api/approvals/[id]/route-7d60cffa598f4779.js +1 -0
  440. package/.next/static/chunks/app/api/approvals/route-7d60cffa598f4779.js +1 -0
  441. package/.next/static/chunks/app/api/backup/route-7d60cffa598f4779.js +1 -0
  442. package/.next/static/chunks/app/api/browse/route-7d60cffa598f4779.js +1 -0
  443. package/.next/static/chunks/app/api/bugs/enhance/route-7d60cffa598f4779.js +1 -0
  444. package/.next/static/chunks/app/api/cwd/route-7d60cffa598f4779.js +1 -0
  445. package/.next/static/chunks/app/api/encryption/secure/route-7d60cffa598f4779.js +1 -0
  446. package/.next/static/chunks/app/api/env/route-7d60cffa598f4779.js +1 -0
  447. package/.next/static/chunks/app/api/flow/[id]/route-7d60cffa598f4779.js +1 -0
  448. package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-7d60cffa598f4779.js +1 -0
  449. package/.next/static/chunks/app/api/flow/[id]/versions/route-7d60cffa598f4779.js +1 -0
  450. package/.next/static/chunks/app/api/flow/compile/route-7d60cffa598f4779.js +1 -0
  451. package/.next/static/chunks/app/api/flow/generate/route-7d60cffa598f4779.js +1 -0
  452. package/.next/static/chunks/app/api/flow/improve/route-7d60cffa598f4779.js +1 -0
  453. package/.next/static/chunks/app/api/flow/prompt-renderer/route-7d60cffa598f4779.js +1 -0
  454. package/.next/static/chunks/app/api/flow/quick-chat/route-7d60cffa598f4779.js +1 -0
  455. package/.next/static/chunks/app/api/flow/repair/route-7d60cffa598f4779.js +1 -0
  456. package/.next/static/chunks/app/api/flow/route-7d60cffa598f4779.js +1 -0
  457. package/.next/static/chunks/app/api/git/route-7d60cffa598f4779.js +1 -0
  458. package/.next/static/chunks/app/api/init/route-7d60cffa598f4779.js +1 -0
  459. package/.next/static/chunks/app/api/local-models/capability/route-7d60cffa598f4779.js +1 -0
  460. package/.next/static/chunks/app/api/local-models/pull/route-7d60cffa598f4779.js +1 -0
  461. package/.next/static/chunks/app/api/local-models/suggest/route-7d60cffa598f4779.js +1 -0
  462. package/.next/static/chunks/app/api/mcp/app-sandbox/route-7d60cffa598f4779.js +1 -0
  463. package/.next/static/chunks/app/api/mcp/cancel/route-7d60cffa598f4779.js +1 -0
  464. package/.next/static/chunks/app/api/mcp/oauth-capability/route-7d60cffa598f4779.js +1 -0
  465. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-7d60cffa598f4779.js +1 -0
  466. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-7d60cffa598f4779.js +1 -0
  467. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-7d60cffa598f4779.js +1 -0
  468. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-7d60cffa598f4779.js +1 -0
  469. package/.next/static/chunks/app/api/mcp/servers/[name]/route-7d60cffa598f4779.js +1 -0
  470. package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-7d60cffa598f4779.js +1 -0
  471. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-7d60cffa598f4779.js +1 -0
  472. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-7d60cffa598f4779.js +1 -0
  473. package/.next/static/chunks/app/api/mcp/servers/route-7d60cffa598f4779.js +1 -0
  474. package/.next/static/chunks/app/api/mcp/test-connection/route-7d60cffa598f4779.js +1 -0
  475. package/.next/static/chunks/app/api/mcp/test-connection/stream/route-7d60cffa598f4779.js +1 -0
  476. package/.next/static/chunks/app/api/mcp-registry/route-7d60cffa598f4779.js +1 -0
  477. package/.next/static/chunks/app/api/mcp-registry/spotlight/route-7d60cffa598f4779.js +1 -0
  478. package/.next/static/chunks/app/api/model/[id]/route-7d60cffa598f4779.js +1 -0
  479. package/.next/static/chunks/app/api/model/provider/route-7d60cffa598f4779.js +1 -0
  480. package/.next/static/chunks/app/api/model/route-7d60cffa598f4779.js +1 -0
  481. package/.next/static/chunks/app/api/model/test/route-7d60cffa598f4779.js +1 -0
  482. package/.next/static/chunks/app/api/oauth/callback/route-7d60cffa598f4779.js +1 -0
  483. package/.next/static/chunks/app/api/oauth/initiate/route-7d60cffa598f4779.js +1 -0
  484. package/.next/static/chunks/app/api/oauth/reset/route-7d60cffa598f4779.js +1 -0
  485. package/.next/static/chunks/app/api/packages/build/route-7d60cffa598f4779.js +1 -0
  486. package/.next/static/chunks/app/api/packages/derive-secrets/route-7d60cffa598f4779.js +1 -0
  487. package/.next/static/chunks/app/api/packages/install/route-7d60cffa598f4779.js +1 -0
  488. package/.next/static/chunks/app/api/packages/install/status/route-7d60cffa598f4779.js +1 -0
  489. package/.next/static/chunks/app/api/packages/installed/route-7d60cffa598f4779.js +1 -0
  490. package/.next/static/chunks/app/api/packages/resolve/route-7d60cffa598f4779.js +1 -0
  491. package/.next/static/chunks/app/api/packages/scan-targets/route-7d60cffa598f4779.js +1 -0
  492. package/.next/static/chunks/app/api/packages/uninstall/route-7d60cffa598f4779.js +1 -0
  493. package/.next/static/chunks/app/api/planned-executions/[id]/route-7d60cffa598f4779.js +1 -0
  494. package/.next/static/chunks/app/api/planned-executions/[id]/run/route-7d60cffa598f4779.js +1 -0
  495. package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-7d60cffa598f4779.js +1 -0
  496. package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-7d60cffa598f4779.js +1 -0
  497. package/.next/static/chunks/app/api/planned-executions/reconcile/route-7d60cffa598f4779.js +1 -0
  498. package/.next/static/chunks/app/api/planned-executions/route-7d60cffa598f4779.js +1 -0
  499. package/.next/static/chunks/app/api/registry/auth/resend/route-7d60cffa598f4779.js +1 -0
  500. package/.next/static/chunks/app/api/registry/auth/reset/route-7d60cffa598f4779.js +1 -0
  501. package/.next/static/chunks/app/api/registry/auth/route-7d60cffa598f4779.js +1 -0
  502. package/.next/static/chunks/app/api/registry/oauth/callback/route-7d60cffa598f4779.js +1 -0
  503. package/.next/static/chunks/app/api/registry/oauth/initiate/route-7d60cffa598f4779.js +1 -0
  504. package/.next/static/chunks/app/api/registry/publish/route-7d60cffa598f4779.js +1 -0
  505. package/.next/static/chunks/app/api/registry/settings/route-7d60cffa598f4779.js +1 -0
  506. package/.next/static/chunks/app/api/restore/route-7d60cffa598f4779.js +1 -0
  507. package/.next/static/chunks/app/api/runs/active/route-7d60cffa598f4779.js +1 -0
  508. package/.next/static/chunks/app/api/storage/route-7d60cffa598f4779.js +1 -0
  509. package/.next/static/chunks/app/api/update/route-7d60cffa598f4779.js +1 -0
  510. package/.next/static/chunks/app/api/waves/route-7d60cffa598f4779.js +1 -0
  511. package/.next/static/chunks/app/api/webhooks/[id]/route-7d60cffa598f4779.js +1 -0
  512. package/.next/static/chunks/app/chat/page-2b69c5e35164f553.js +1 -0
  513. package/.next/static/chunks/app/docs/page-250523af44e96120.js +1 -0
  514. package/.next/static/chunks/app/executions/page-1d8557a642114697.js +1 -0
  515. package/.next/static/chunks/app/flows/page-3f0d7cca2edff792.js +1 -0
  516. package/.next/static/chunks/app/layout-81f91fb3b894951a.js +1 -0
  517. package/.next/static/chunks/app/mcp/page-0e90177062130679.js +1 -0
  518. package/.next/static/chunks/app/mcp-flows/route-7d60cffa598f4779.js +1 -0
  519. package/.next/static/chunks/app/mcp-proxy/[server]/route-7d60cffa598f4779.js +1 -0
  520. package/.next/static/chunks/app/models/page-c69e10b83c06535d.js +1 -0
  521. package/.next/static/chunks/app/packages/page-bf8aad441c664433.js +1 -0
  522. package/.next/static/chunks/app/settings/page-4a9952c514f284e0.js +1 -0
  523. package/.next/static/chunks/app/v1/chat/completions/route-7d60cffa598f4779.js +1 -0
  524. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-7d60cffa598f4779.js +1 -0
  525. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-7d60cffa598f4779.js +1 -0
  526. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-7d60cffa598f4779.js +1 -0
  527. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-7d60cffa598f4779.js +1 -0
  528. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-7d60cffa598f4779.js +1 -0
  529. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-7d60cffa598f4779.js +1 -0
  530. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/inject/route-7d60cffa598f4779.js +1 -0
  531. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-7d60cffa598f4779.js +1 -0
  532. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-7d60cffa598f4779.js +1 -0
  533. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-7d60cffa598f4779.js +1 -0
  534. package/.next/static/chunks/app/v1/chat/conversations/route-7d60cffa598f4779.js +1 -0
  535. package/.next/static/chunks/app/v1/chat/events/route-7d60cffa598f4779.js +1 -0
  536. package/.next/static/chunks/app/v1/models/route-7d60cffa598f4779.js +1 -0
  537. package/.next/static/chunks/app/waves/page-3ca939f0f7e817b1.js +1 -0
  538. package/.next/static/chunks/webpack-08eb993682e1fb1a.js +1 -0
  539. package/.next/static/css/30253fcfa8035221.css +1 -0
  540. package/.next/trace +10 -9
  541. package/.next/types/app/api/flow/[id]/versions/[versionId]/route.ts +347 -0
  542. package/.next/types/app/api/flow/[id]/versions/route.ts +347 -0
  543. package/.next/types/app/api/mcp/app-sandbox/route.ts +347 -0
  544. package/.next/types/app/api/mcp/oauth-capability/route.ts +347 -0
  545. package/.next/types/app/api/packages/installed/route.ts +347 -0
  546. package/.next/types/app/api/packages/scan-targets/route.ts +347 -0
  547. package/.next/types/app/api/packages/uninstall/route.ts +347 -0
  548. package/.next/types/app/api/registry/auth/reset/route.ts +347 -0
  549. package/.next/types/app/api/registry/oauth/callback/route.ts +347 -0
  550. package/.next/types/app/api/registry/oauth/initiate/route.ts +347 -0
  551. package/.next/types/app/v1/chat/conversations/[conversationId]/inject/route.ts +347 -0
  552. package/.next/types/app/v1/chat/events/route.ts +347 -0
  553. package/.next/types/routes.d.ts +13 -1
  554. package/.next/types/validator.ts +108 -0
  555. package/README.md +6 -1
  556. package/package.json +98 -95
  557. package/.next/server/chunks/1197.js +0 -2
  558. package/.next/server/chunks/1373.js +0 -1
  559. package/.next/server/chunks/1604.js +0 -65
  560. package/.next/server/chunks/1659.js +0 -1
  561. package/.next/server/chunks/237.js +0 -1
  562. package/.next/server/chunks/2373.js +0 -1
  563. package/.next/server/chunks/2434.js +0 -2
  564. package/.next/server/chunks/2940.js +0 -41
  565. package/.next/server/chunks/3304.js +0 -1
  566. package/.next/server/chunks/346.js +0 -1
  567. package/.next/server/chunks/3569.js +0 -1
  568. package/.next/server/chunks/4042.js +0 -1
  569. package/.next/server/chunks/4545.js +0 -21
  570. package/.next/server/chunks/4661.js +0 -1
  571. package/.next/server/chunks/4765.js +0 -1
  572. package/.next/server/chunks/5094.js +0 -2
  573. package/.next/server/chunks/5734.js +0 -60
  574. package/.next/server/chunks/6005.js +0 -1
  575. package/.next/server/chunks/6996.js +0 -1
  576. package/.next/server/chunks/7028.js +0 -1
  577. package/.next/server/chunks/7214.js +0 -6
  578. package/.next/server/chunks/724.js +0 -27
  579. package/.next/server/chunks/7362.js +0 -158
  580. package/.next/server/chunks/7463.js +0 -6
  581. package/.next/server/chunks/7485.js +0 -1
  582. package/.next/server/chunks/7498.js +0 -42
  583. package/.next/server/chunks/7764.js +0 -37
  584. package/.next/server/chunks/826.js +0 -52
  585. package/.next/server/chunks/8522.js +0 -2
  586. package/.next/server/chunks/8572.js +0 -1
  587. package/.next/server/chunks/869.js +0 -2
  588. package/.next/server/chunks/8732.js +0 -62
  589. package/.next/server/chunks/8851.js +0 -1
  590. package/.next/server/chunks/8994.js +0 -2
  591. package/.next/server/chunks/9387.js +0 -15
  592. package/.next/server/chunks/9400.js +0 -2
  593. package/.next/server/chunks/9472.js +0 -2
  594. package/.next/server/chunks/9583.js +0 -1
  595. package/.next/static/O-elWbT5rs6ci1CrCqez1/_buildManifest.js +0 -1
  596. package/.next/static/chunks/2019-f22580cb726c5dca.js +0 -1
  597. package/.next/static/chunks/256-a13a59247ac6cc68.js +0 -1
  598. package/.next/static/chunks/2566-60acd5838abd9f3f.js +0 -1
  599. package/.next/static/chunks/2822-8168e3bb8443a1ec.js +0 -1
  600. package/.next/static/chunks/2981-10313d395eb99645.js +0 -1
  601. package/.next/static/chunks/3028-fc1f04241ed578ff.js +0 -1
  602. package/.next/static/chunks/3089.9e15df4ffd0fe4e8.js +0 -1
  603. package/.next/static/chunks/3556-b9855146c7506696.js +0 -1
  604. package/.next/static/chunks/3560-5bdceef09b50e1c3.js +0 -1
  605. package/.next/static/chunks/3574-94e9f20550550a58.js +0 -1
  606. package/.next/static/chunks/4483-463f8bfc6f3dd5fa.js +0 -1
  607. package/.next/static/chunks/5512.682bef7fd3a7c286.js +0 -1
  608. package/.next/static/chunks/5578-49bc150686c13b6f.js +0 -1
  609. package/.next/static/chunks/5766-dbd21cb8435605aa.js +0 -1
  610. package/.next/static/chunks/5866-6834cbc4ab02d86f.js +0 -1
  611. package/.next/static/chunks/6669-012c73587a6628fc.js +0 -1
  612. package/.next/static/chunks/6691-117567b2b40cd9f4.js +0 -1
  613. package/.next/static/chunks/6961-a40e97c06e616300.js +0 -1
  614. package/.next/static/chunks/7445-2802e158c9093556.js +0 -1
  615. package/.next/static/chunks/7554-db290baed5782cab.js +0 -8
  616. package/.next/static/chunks/795-704a0e742ecc2ef6.js +0 -1
  617. package/.next/static/chunks/812-8b3d4e0f6546d6f9.js +0 -1
  618. package/.next/static/chunks/9554-cb5bd72cb40e8dbe.js +0 -1
  619. package/.next/static/chunks/9562-ef0ddd4e6b9023cf.js +0 -1
  620. package/.next/static/chunks/9720-5ecb48f1a28808fe.js +0 -1
  621. package/.next/static/chunks/app/api/approvals/[id]/route-3e3cc52436d34625.js +0 -1
  622. package/.next/static/chunks/app/api/approvals/route-3e3cc52436d34625.js +0 -1
  623. package/.next/static/chunks/app/api/backup/route-3e3cc52436d34625.js +0 -1
  624. package/.next/static/chunks/app/api/browse/route-3e3cc52436d34625.js +0 -1
  625. package/.next/static/chunks/app/api/bugs/enhance/route-3e3cc52436d34625.js +0 -1
  626. package/.next/static/chunks/app/api/cwd/route-3e3cc52436d34625.js +0 -1
  627. package/.next/static/chunks/app/api/encryption/secure/route-3e3cc52436d34625.js +0 -1
  628. package/.next/static/chunks/app/api/env/route-3e3cc52436d34625.js +0 -1
  629. package/.next/static/chunks/app/api/flow/[id]/route-3e3cc52436d34625.js +0 -1
  630. package/.next/static/chunks/app/api/flow/compile/route-3e3cc52436d34625.js +0 -1
  631. package/.next/static/chunks/app/api/flow/generate/route-3e3cc52436d34625.js +0 -1
  632. package/.next/static/chunks/app/api/flow/improve/route-3e3cc52436d34625.js +0 -1
  633. package/.next/static/chunks/app/api/flow/prompt-renderer/route-3e3cc52436d34625.js +0 -1
  634. package/.next/static/chunks/app/api/flow/quick-chat/route-3e3cc52436d34625.js +0 -1
  635. package/.next/static/chunks/app/api/flow/repair/route-3e3cc52436d34625.js +0 -1
  636. package/.next/static/chunks/app/api/flow/route-3e3cc52436d34625.js +0 -1
  637. package/.next/static/chunks/app/api/git/route-3e3cc52436d34625.js +0 -1
  638. package/.next/static/chunks/app/api/init/route-3e3cc52436d34625.js +0 -1
  639. package/.next/static/chunks/app/api/local-models/capability/route-3e3cc52436d34625.js +0 -1
  640. package/.next/static/chunks/app/api/local-models/pull/route-3e3cc52436d34625.js +0 -1
  641. package/.next/static/chunks/app/api/local-models/suggest/route-3e3cc52436d34625.js +0 -1
  642. package/.next/static/chunks/app/api/mcp/cancel/route-3e3cc52436d34625.js +0 -1
  643. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-3e3cc52436d34625.js +0 -1
  644. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-3e3cc52436d34625.js +0 -1
  645. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-3e3cc52436d34625.js +0 -1
  646. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-3e3cc52436d34625.js +0 -1
  647. package/.next/static/chunks/app/api/mcp/servers/[name]/route-3e3cc52436d34625.js +0 -1
  648. package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-3e3cc52436d34625.js +0 -1
  649. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-3e3cc52436d34625.js +0 -1
  650. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-3e3cc52436d34625.js +0 -1
  651. package/.next/static/chunks/app/api/mcp/servers/route-3e3cc52436d34625.js +0 -1
  652. package/.next/static/chunks/app/api/mcp/test-connection/route-3e3cc52436d34625.js +0 -1
  653. package/.next/static/chunks/app/api/mcp/test-connection/stream/route-3e3cc52436d34625.js +0 -1
  654. package/.next/static/chunks/app/api/mcp-registry/route-3e3cc52436d34625.js +0 -1
  655. package/.next/static/chunks/app/api/mcp-registry/spotlight/route-3e3cc52436d34625.js +0 -1
  656. package/.next/static/chunks/app/api/model/[id]/route-3e3cc52436d34625.js +0 -1
  657. package/.next/static/chunks/app/api/model/provider/route-3e3cc52436d34625.js +0 -1
  658. package/.next/static/chunks/app/api/model/route-3e3cc52436d34625.js +0 -1
  659. package/.next/static/chunks/app/api/model/test/route-3e3cc52436d34625.js +0 -1
  660. package/.next/static/chunks/app/api/oauth/callback/route-3e3cc52436d34625.js +0 -1
  661. package/.next/static/chunks/app/api/oauth/initiate/route-3e3cc52436d34625.js +0 -1
  662. package/.next/static/chunks/app/api/oauth/reset/route-3e3cc52436d34625.js +0 -1
  663. package/.next/static/chunks/app/api/packages/build/route-3e3cc52436d34625.js +0 -1
  664. package/.next/static/chunks/app/api/packages/derive-secrets/route-3e3cc52436d34625.js +0 -1
  665. package/.next/static/chunks/app/api/packages/install/route-3e3cc52436d34625.js +0 -1
  666. package/.next/static/chunks/app/api/packages/install/status/route-3e3cc52436d34625.js +0 -1
  667. package/.next/static/chunks/app/api/packages/resolve/route-3e3cc52436d34625.js +0 -1
  668. package/.next/static/chunks/app/api/planned-executions/[id]/route-3e3cc52436d34625.js +0 -1
  669. package/.next/static/chunks/app/api/planned-executions/[id]/run/route-3e3cc52436d34625.js +0 -1
  670. package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-3e3cc52436d34625.js +0 -1
  671. package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-3e3cc52436d34625.js +0 -1
  672. package/.next/static/chunks/app/api/planned-executions/reconcile/route-3e3cc52436d34625.js +0 -1
  673. package/.next/static/chunks/app/api/planned-executions/route-3e3cc52436d34625.js +0 -1
  674. package/.next/static/chunks/app/api/registry/auth/resend/route-3e3cc52436d34625.js +0 -1
  675. package/.next/static/chunks/app/api/registry/auth/route-3e3cc52436d34625.js +0 -1
  676. package/.next/static/chunks/app/api/registry/publish/route-3e3cc52436d34625.js +0 -1
  677. package/.next/static/chunks/app/api/registry/settings/route-3e3cc52436d34625.js +0 -1
  678. package/.next/static/chunks/app/api/restore/route-3e3cc52436d34625.js +0 -1
  679. package/.next/static/chunks/app/api/runs/active/route-3e3cc52436d34625.js +0 -1
  680. package/.next/static/chunks/app/api/storage/route-3e3cc52436d34625.js +0 -1
  681. package/.next/static/chunks/app/api/update/route-3e3cc52436d34625.js +0 -1
  682. package/.next/static/chunks/app/api/waves/route-3e3cc52436d34625.js +0 -1
  683. package/.next/static/chunks/app/api/webhooks/[id]/route-3e3cc52436d34625.js +0 -1
  684. package/.next/static/chunks/app/chat/page-93403b0e520ba8d3.js +0 -1
  685. package/.next/static/chunks/app/docs/page-2c972a639cd9a41c.js +0 -1
  686. package/.next/static/chunks/app/executions/page-bb2fef60b2240f69.js +0 -1
  687. package/.next/static/chunks/app/flows/page-d60c5b47c923564a.js +0 -1
  688. package/.next/static/chunks/app/layout-eea7078d7553c21a.js +0 -1
  689. package/.next/static/chunks/app/mcp/page-92c03186d566a4f5.js +0 -1
  690. package/.next/static/chunks/app/mcp-flows/route-3e3cc52436d34625.js +0 -1
  691. package/.next/static/chunks/app/mcp-proxy/[server]/route-3e3cc52436d34625.js +0 -1
  692. package/.next/static/chunks/app/models/page-d71e5606a8e29479.js +0 -1
  693. package/.next/static/chunks/app/packages/page-e64480d78312edd0.js +0 -1
  694. package/.next/static/chunks/app/settings/page-d067a3a624ec2fa0.js +0 -1
  695. package/.next/static/chunks/app/v1/chat/completions/route-3e3cc52436d34625.js +0 -1
  696. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-3e3cc52436d34625.js +0 -1
  697. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-3e3cc52436d34625.js +0 -1
  698. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-3e3cc52436d34625.js +0 -1
  699. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-3e3cc52436d34625.js +0 -1
  700. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-3e3cc52436d34625.js +0 -1
  701. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-3e3cc52436d34625.js +0 -1
  702. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-3e3cc52436d34625.js +0 -1
  703. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-3e3cc52436d34625.js +0 -1
  704. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-3e3cc52436d34625.js +0 -1
  705. package/.next/static/chunks/app/v1/chat/conversations/route-3e3cc52436d34625.js +0 -1
  706. package/.next/static/chunks/app/v1/models/route-3e3cc52436d34625.js +0 -1
  707. package/.next/static/chunks/app/waves/page-ff15db2f75fb5d62.js +0 -1
  708. package/.next/static/chunks/webpack-2b2d7505a2ac6538.js +0 -1
  709. package/.next/static/css/40f9bef305b11bf5.css +0 -1
  710. /package/.next/static/{O-elWbT5rs6ci1CrCqez1 → 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(4671),c.e(4771),c.e(7214),c.e(1226),c.e(4265),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(4671),c.e(4771),c.e(7214),c.e(1226),c.e(4265),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:()=>i,FN:()=>j});var d=c(33873),e=c.n(d),f=c(50846),g=c(7658);let h=(0,f.h)("backend/services/mcp/internal/confinement");function i(a,b){let c=e().relative(a,b);return""===c||!c.startsWith("..")&&!e().isAbsolute(c)}async function j(a,b){let c=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),d=[];try{d=(await (0,g.AC)(a)).map(a=>e().resolve(a))}catch(a){h.warn("loadEffectiveRoots: could not read persisted roots",a)}if(!c)return d.length?d:null;let f=d.filter(a=>c.some(b=>i(b,a)));return f.length?f:c}},35544:(a,b,c)=>{c.d(b,{bashCallTool:()=>A,bashToolDefinitions:()=>u});var d=c(33873),e=c.n(d),f=c(79646),g=c(3233),h=c(50846),i=c(43326),j=c(7658),k=c(7969);let l=(0,h.h)("backend/services/mcp/internal/bashTools");function m(){return global.__flujo_bash_sessions||(global.__flujo_bash_sessions=new Map),global.__flujo_bash_sessions}function n(a,b=!1){return{content:[{type:"text",text:"string"==typeof a?a:JSON.stringify(a,null,2)}],...b?{isError:!0}:{}}}let o=["FLUJO_BASH_ROOTS","FLUJO_FS_ROOTS"];function p(a,b){let c=(0,i.ok)(),d="string"==typeof a?a.trim():"",f=d?e().isAbsolute(d)?e().resolve(d):e().resolve(c,d):c;if(b&&!b.some(a=>(0,k.FK)(a,f)))throw Error(`cwd "${f}" is outside the configured bash roots.`);return f}let q=new Set(["PATH","Path","HOME","USERPROFILE","TMP","TEMP","TMPDIR","LANG","LC_ALL","SystemRoot","windir","ComSpec","PATHEXT","SystemDrive","NUMBER_OF_PROCESSORS","PROCESSOR_ARCHITECTURE"]);function r(a){return"pwsh"===a||"bash"===a?a:"default"}function s(a,b,c){let{file:d,args:e,useShell:g}="pwsh"===c?{file:"win32"===process.platform?"pwsh.exe":"pwsh",args:["-NoProfile","-NonInteractive","-Command",a],useShell:!1}:"bash"===c?{file:"bash",args:["-c",a],useShell:!1}:{file:a,args:[],useShell:!0},h="win32"!==process.platform;try{return{child:(0,f.spawn)(d,e,{cwd:b,shell:g,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))(q.has(a)||/^LC_/.test(a))&&(b[a]=process.env[a]);return b}(),detached:h})}}catch(a){return{child:void 0,startError:a instanceof Error?a.message:String(a)}}}function t(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 u(){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 v(a,b){return b?a.replace(/\r\n?/g,"\n"):a}async function w(a,b){let c=String(a?.command??"").trim();if(!c)return n({error:'Provide "command": a shell command line to run.'},!0);let d=p(a.cwd,b),e=r(a.shell),f=!0===a.normalizeNewlines,h=Math.min(1e3*("number"==typeof a.timeout&&a.timeout>0?a.timeout:60),6e5);return await new Promise(a=>{let b,i="",j=!1,k=!1,l=!1,m=t(()=>i,(a,b)=>{i=a,j=b||j}),{child:o,startError:p}=s(c,d,e);if(p||!o)return void a(n({error:`Failed to start command (${e}): ${p??"unknown error"}`,cwd:d,shell:e},!0));let q=setTimeout(()=>{l=!0,b=(0,g.g)(o)},h),r=c=>{k||(k=!0,clearTimeout(q),b?.(),a(c))};o.stdout?.on("data",a=>m(a.toString())),o.stderr?.on("data",a=>m(a.toString())),o.on("error",a=>{m(`
2
- ${a.message}`),r(n({error:`Command failed to start (${e}): ${a.message}`,cwd:d,shell:e,output:v(i,f)},!0))}),o.on("close",a=>{let b=v(i,f);if(l)return void r(n({timedOut:!0,cwd:d,shell:e,exitCode:a,truncated:j,output:`${b}
3
- [killed after ${h/1e3}s timeout]`},!0));r(n({exitCode:a,cwd:d,shell:e,truncated:j,output:b},0!==a))})})}function x(a){a.reapTimer=setTimeout(()=>{m().delete(a.id)},6e5),a.reapTimer.unref?.()}function y(a,b={}){return{sessionId:a.id,running:a.running,exitCode:a.exitCode,output:a.output,truncated:a.truncated,...b}}async function z(a){let b=String(a?.sessionId??""),c=m().get(b);if(!c)return n({error:`No background session with id "${b}".`},!0);if(!c.running)return n(y(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 n(y(c,{timedOut:e}))}async function A(a,b){try{switch(a){case"run":{let a=await (0,k.FN)(j.PA,o);return await w(b,a)}case"start":{let a=await (0,k.FN)(j.PA,o);return function(a,b){let c=String(a?.command??"").trim();if(!c)return n({error:'Provide "command": a shell command line to run.'},!0);let d=m();if(d.size>=25)for(let[a,b]of d)b.running||d.delete(a);if(d.size>=25)return n({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 m().values()){if(a.running)try{(0,g.g)(a.child)}catch{}a.reapTimer&&clearTimeout(a.reapTimer)}})();process.on("exit",a),process.on("SIGINT",a),process.on("SIGTERM",a)}();let e=p(a.cwd,b),f=r(a.shell),{child:h,startError:i}=s(c,e,f);if(i||!h)return n({error:`Failed to start command (${f}): ${i??"unknown error"}`,cwd:e,shell:f},!0);let j=`bash-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,k={id:j,command:c,cwd:e,child:h,output:"",truncated:!1,running:!0,exitCode:null,startedAt:Date.now()};d.set(j,k);let l=t(()=>k.output,(a,b)=>{k.output=a,k.truncated=b||k.truncated});return h.stdout?.on("data",a=>l(a.toString())),h.stderr?.on("data",a=>l(a.toString())),h.on("error",a=>{l(`
4
- ${a.message}`),k.running=!1,k.endedAt=Date.now(),x(k)}),h.on("close",a=>{k.running=!1,k.exitCode=a,k.endedAt=Date.now(),x(k)}),n({sessionId:j,cwd:e,shell:f})}(b,a)}case"status":let c=String(b?.sessionId??""),d=m().get(c);return d?n(y(d)):n({error:`No background session with id "${c}".`},!0);case"wait":return await z(b);case"write_stdin":let e=String(b?.sessionId??""),f=m().get(e);if(!f)return n({error:`No background session with id "${e}".`},!0);if(!f.running)return n({error:`Session "${e}" has already exited.`},!0);let h="string"==typeof b.data?b.data:"",i=!1===b.newline?h:`${h}
5
- `;try{f.child.stdin?.write(i)}catch(a){return n({error:`Failed to write to stdin: ${a instanceof Error?a.message:String(a)}`},!0)}return n({sessionId:e,written:Buffer.byteLength(i,"utf8")});case"kill":let l=String(b?.sessionId??""),q=m().get(l);return q?(q.running&&(q.cancelEscalation=(0,g.g)(q.child)),n({sessionId:l,killed:!0})):n({error:`No background session with id "${l}".`},!0);case"list_sessions":return n({sessions:Array.from(m().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 n({error:`Unknown tool on the built-in bash server: ${a}`},!0)}}catch(b){return l.warn("bashCallTool failed",{toolName:a,err:b}),n({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(46480),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:()=>k,jY:()=>j});var d=c(50846),e=c(20433),f=c(61397),g=c(87821);let h=(0,d.h)("backend/services/flow/generationContext");function i(a,b){let c=String(a).replace(/\s+/g," ").trim();return c.length<=b?c:`${c.slice(0,b).trimEnd()}…`}async function j(){let a=await e.modelService.loadModels(),b=a.map(a=>({id:a.id,name:a.name,...a.displayName?{displayName:a.displayName}:{},...a.description?{description:i(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:i(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 j=[];try{j=await g.flowService.loadFlows()}catch(a){h.warn("Could not load flows for the authoring context",a)}let k={models:b,servers:c,flows:j.map(a=>({id:a.id,name:a.name,...a.description?{description:i(a.description,300)}:{},nodeCount:a.nodes?.length??0}))};return{blocks:k,compile:{models:a.map(a=>({id:a.id,name:a.name,displayName:a.displayName})),servers:c.map(a=>({name:a.name})),serverTools:d,flows:j.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")}(k),validatorServers:c.map(a=>({name:a.name,status:a.connected?"connected":"disconnected"}))}}function k(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",
@@ -12,8 +12,9 @@ NODE TYPES:
12
12
  "model": "<model id or name from the catalog>",
13
13
  "prompt": "instructions for this step",
14
14
  "servers": [ { "name": "<server name>", "tools": ["tool_a"] } ], // optional; omit "tools" to enable all
15
- "inputMode": "full-history" | "latest-message" | "isolated", // optional, default full-history. Reshapes ONLY the wire view the model sees (persisted history stays lossless): full-history = the whole assembled context; latest-message = leading system prompt(s) + everything FROM the most recent user message ONWARD (NOT "last user + last assistant"), INCLUDING this turn's in-flight tool calls/results; isolated = system prompt(s) + isolatedPrompt as a synthetic user message, prior conversation dropped. NOTE: for Claude-subscription models the whole wire history (incl. prior tool calls/results under full-history) is flattened into one text prompt rather than sent as native tool turns
15
+ "inputMode": "full-history" | "latest-message" | "isolated", // optional, default full-history. Reshapes ONLY the wire view the model sees (persisted history stays lossless): full-history = the whole assembled context; latest-message = leading system prompt(s) + the most recent EXCHANGE (the last user message + the last assistant response, intermediate turns since the last user message dropped) + this turn's in-flight tool calls/results; isolated = system prompt(s) + isolatedPrompt as a synthetic user message, prior conversation dropped. NOTE: for Claude-subscription models the whole wire history (incl. prior tool calls/results under full-history) is flattened into one text prompt rather than sent as native tool turns
16
16
  "isolatedPrompt": "...", // only with inputMode "isolated"
17
+ "allowCallerPrompt": true | false, // optional, only with inputMode "isolated"; default true — a step that hands off to this isolated step may pass a "prompt" via its handoff tool that overrides "isolatedPrompt". Set false to forbid it
17
18
  "outputMode": "full-conversation" | "latest-message", // optional, default full-conversation; latest-message hides this step's tool calls/results from later steps (they see only its final response)
18
19
  "maxTurns": 20, // optional; per-step cap on agentic tool-loop turns (retry-until-done in ONE node). Unset = model/system default (50)
19
20
  "allowedTools": ["tool_a"], // optional; step-level tool allowlist (independent of servers[].tools)
@@ -36,8 +37,8 @@ NODE TYPES:
36
37
  "concurrencyLimit": 4, // optional (parallel / mapOverList / spawn), default 4
37
38
  "joinSeparator": "\\n\\n---\\n\\n", // optional (parallel / mapOverList / spawn), string between joined lane outputs, default "\\n\\n"
38
39
  "errorStrategy": "collect-all" | "fail-fast", // optional (parallel / mapOverList / spawn), default collect-all
39
- "inputMode": "full-history" | "latest-message" | "isolated", // optional, default full-history. DIFFERS from a process node: history modes ALWAYS sanitize the parent transcript first — system messages, tool-result messages, and ANY assistant turn that made tool calls are dropped (only user + prose-only assistant messages survive). full-history = the full sanitized transcript; latest-message = the sanitized transcript FROM the most recent user message ONWARD (NOT "last user + last assistant"); isolated = ignore the parent conversation and send "prompt" as the child's single user message
40
- "allowCallerPrompt": true | false, // optional, only with inputMode "isolated"; when true a routing step may pass a "prompt" via its handoff tool that overrides the subflow's "prompt" (default)
40
+ "inputMode": "full-history" | "latest-message" | "isolated", // optional, default full-history. DIFFERS from a process node: history modes ALWAYS sanitize the parent transcript first — system messages, tool-result messages, and ANY assistant turn that made tool calls are dropped (only user + prose-only assistant messages survive). full-history = the full sanitized transcript; latest-message = the most recent EXCHANGE of the sanitized transcript (the last user message + the last assistant response after it, intermediate turns dropped); isolated = ignore the parent conversation and send "prompt" as the child's single user message
41
+ "allowCallerPrompt": true | false, // optional, only with inputMode "isolated"; default true — a routing step may pass a "prompt" via its handoff tool that overrides the subflow's "prompt". Set false to forbid it
41
42
  "allowCallerFanout": true | false, // optional (subflow); makes this a SPAWNABLE sub-agent: the routing step may call its handoff tool SEVERAL TIMES in one turn, each call with a "task" brief spawning one parallel instance of the child flow (rule 7c)
42
43
  "captureVariable": "NAME", // optional; save the subflow's output into a run variable other steps inject with \${var:NAME}
43
44
  "captureResource": "NAME", // optional; ALSO save the subflow's output as a tracked run resource (\${res:NAME}, rule 9b)
@@ -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:()=>{}};