flujo-ai 3.30.0 → 3.33.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 (700) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +359 -317
  3. package/.next/app-path-routes-manifest.json +15 -11
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +21 -21
  6. package/.next/react-loadable-manifest.json +28 -13
  7. package/.next/server/app/_not-found/page.js +1 -1
  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 +2 -2
  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.js +1 -1
  21. package/.next/server/app/api/browse/route.js.nft.json +1 -1
  22. package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/bugs/enhance/route.js +3 -3
  24. package/.next/server/app/api/bugs/enhance/route.js.nft.json +1 -1
  25. package/.next/server/app/api/bugs/enhance/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/cwd/route.js +1 -1
  27. package/.next/server/app/api/cwd/route.js.nft.json +1 -1
  28. package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/encryption/secure/route.js +1 -1
  30. package/.next/server/app/api/encryption/secure/route.js.nft.json +1 -1
  31. package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/env/route.js +2 -2
  33. package/.next/server/app/api/env/route.js.nft.json +1 -1
  34. package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/flow/[id]/route.js +1 -1
  36. package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -1
  37. package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/flow/[id]/versions/[versionId]/route.js +1 -1
  39. package/.next/server/app/api/flow/[id]/versions/[versionId]/route.js.nft.json +1 -1
  40. package/.next/server/app/api/flow/[id]/versions/[versionId]/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/flow/[id]/versions/route.js +1 -1
  42. package/.next/server/app/api/flow/[id]/versions/route.js.nft.json +1 -1
  43. package/.next/server/app/api/flow/[id]/versions/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/flow/compile/route.js +1 -1
  45. package/.next/server/app/api/flow/compile/route.js.nft.json +1 -1
  46. package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/flow/generate/route.js +1 -1
  48. package/.next/server/app/api/flow/generate/route.js.nft.json +1 -1
  49. package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/flow/generator/route.js +7 -0
  51. package/.next/server/app/api/flow/generator/route.js.nft.json +1 -0
  52. package/.next/server/app/api/flow/generator/route_client-reference-manifest.js +1 -0
  53. package/.next/server/app/api/flow/improve/route.js +1 -1
  54. package/.next/server/app/api/flow/improve/route.js.nft.json +1 -1
  55. package/.next/server/app/api/flow/improve/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/flow/prompt-renderer/route.js +2 -2
  57. package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
  58. package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/flow/quick-chat/route.js +1 -1
  60. package/.next/server/app/api/flow/quick-chat/route.js.nft.json +1 -1
  61. package/.next/server/app/api/flow/quick-chat/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/flow/repair/route.js +1 -1
  63. package/.next/server/app/api/flow/repair/route.js.nft.json +1 -1
  64. package/.next/server/app/api/flow/repair/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/flow/route.js +1 -1
  66. package/.next/server/app/api/flow/route.js.nft.json +1 -1
  67. package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/git/route.js +1 -1
  69. package/.next/server/app/api/git/route.js.nft.json +1 -1
  70. package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/init/route.js +1 -1
  72. package/.next/server/app/api/init/route.js.nft.json +1 -1
  73. package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/local-models/capability/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/local-models/pull/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/local-models/suggest/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/mcp/app-sandbox/route.js +1 -1
  78. package/.next/server/app/api/mcp/app-sandbox/route.js.nft.json +1 -1
  79. package/.next/server/app/api/mcp/app-sandbox/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/mcp/cancel/route.js +2 -2
  81. package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -1
  82. package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/mcp/oauth-capability/route.js +1 -1
  84. package/.next/server/app/api/mcp/oauth-capability/route.js.nft.json +1 -1
  85. package/.next/server/app/api/mcp/oauth-capability/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js +1 -1
  87. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -1
  88. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js +1 -1
  90. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -1
  91. package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js +1 -1
  93. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -1
  94. package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/mcp/servers/[name]/resources/route.js +1 -1
  96. package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -1
  97. package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/mcp/servers/[name]/route.js +1 -1
  99. package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -1
  100. package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/mcp/servers/[name]/status/route.js +1 -1
  102. package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -1
  103. package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js +1 -1
  105. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -1
  106. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/mcp/servers/[name]/tools/route.js +1 -1
  108. package/.next/server/app/api/mcp/servers/[name]/tools/route.js.nft.json +1 -1
  109. package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/mcp/servers/route.js +1 -1
  111. package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
  112. package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/mcp/test-connection/route.js +1 -1
  114. package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -1
  115. package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/mcp/test-connection/stream/route.js +1 -1
  117. package/.next/server/app/api/mcp/test-connection/stream/route.js.nft.json +1 -1
  118. package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/mcp-registry/route.js +2 -2
  120. package/.next/server/app/api/mcp-registry/route.js.nft.json +1 -1
  121. package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/mcp-registry/spotlight/route.js +1 -1
  123. package/.next/server/app/api/mcp-registry/spotlight/route.js.nft.json +1 -1
  124. package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/model/[id]/route.js +1 -1
  126. package/.next/server/app/api/model/[id]/route.js.nft.json +1 -1
  127. package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/model/provider/route.js +2 -2
  129. package/.next/server/app/api/model/provider/route.js.nft.json +1 -1
  130. package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/model/route.js +1 -1
  132. package/.next/server/app/api/model/route.js.nft.json +1 -1
  133. package/.next/server/app/api/model/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/model/test/route.js +2 -2
  135. package/.next/server/app/api/model/test/route.js.nft.json +1 -1
  136. package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/oauth/callback/route.js +2 -2
  138. package/.next/server/app/api/oauth/callback/route.js.nft.json +1 -1
  139. package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/oauth/initiate/route.js +2 -2
  141. package/.next/server/app/api/oauth/initiate/route.js.nft.json +1 -1
  142. package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/oauth/reset/route.js +2 -2
  144. package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -1
  145. package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
  146. package/.next/server/app/api/packages/build/route.js +1 -1
  147. package/.next/server/app/api/packages/build/route.js.nft.json +1 -1
  148. package/.next/server/app/api/packages/build/route_client-reference-manifest.js +1 -1
  149. package/.next/server/app/api/packages/derive-secrets/route.js +1 -1
  150. package/.next/server/app/api/packages/derive-secrets/route.js.nft.json +1 -1
  151. package/.next/server/app/api/packages/derive-secrets/route_client-reference-manifest.js +1 -1
  152. package/.next/server/app/api/packages/install/route.js +1 -1
  153. package/.next/server/app/api/packages/install/route.js.nft.json +1 -1
  154. package/.next/server/app/api/packages/install/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/api/packages/install/status/route.js +1 -1
  156. package/.next/server/app/api/packages/install/status/route.js.nft.json +1 -1
  157. package/.next/server/app/api/packages/install/status/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/api/packages/installed/route.js +1 -1
  159. package/.next/server/app/api/packages/installed/route.js.nft.json +1 -1
  160. package/.next/server/app/api/packages/installed/route_client-reference-manifest.js +1 -1
  161. package/.next/server/app/api/packages/resolve/route.js +1 -1
  162. package/.next/server/app/api/packages/resolve/route.js.nft.json +1 -1
  163. package/.next/server/app/api/packages/resolve/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/api/packages/scan-targets/route.js +1 -1
  165. package/.next/server/app/api/packages/scan-targets/route.js.nft.json +1 -1
  166. package/.next/server/app/api/packages/scan-targets/route_client-reference-manifest.js +1 -1
  167. package/.next/server/app/api/packages/search/route.js +1 -1
  168. package/.next/server/app/api/packages/search/route.js.nft.json +1 -1
  169. package/.next/server/app/api/packages/search/route_client-reference-manifest.js +1 -1
  170. package/.next/server/app/api/packages/uninstall/route.js +1 -1
  171. package/.next/server/app/api/packages/uninstall/route.js.nft.json +1 -1
  172. package/.next/server/app/api/packages/uninstall/route_client-reference-manifest.js +1 -1
  173. package/.next/server/app/api/planned-executions/[id]/route.js +2 -2
  174. package/.next/server/app/api/planned-executions/[id]/route.js.nft.json +1 -1
  175. package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -1
  176. package/.next/server/app/api/planned-executions/[id]/run/route.js +2 -2
  177. package/.next/server/app/api/planned-executions/[id]/run/route.js.nft.json +1 -1
  178. package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -1
  179. package/.next/server/app/api/planned-executions/[id]/runs/route.js +2 -2
  180. package/.next/server/app/api/planned-executions/[id]/runs/route.js.nft.json +1 -1
  181. package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -1
  182. package/.next/server/app/api/planned-executions/preview-schedule/route.js +1 -1
  183. package/.next/server/app/api/planned-executions/preview-schedule/route.js.nft.json +1 -1
  184. package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
  185. package/.next/server/app/api/planned-executions/reconcile/route.js +1 -1
  186. package/.next/server/app/api/planned-executions/reconcile/route.js.nft.json +1 -1
  187. package/.next/server/app/api/planned-executions/reconcile/route_client-reference-manifest.js +1 -1
  188. package/.next/server/app/api/planned-executions/route.js +1 -1
  189. package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
  190. package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
  191. package/.next/server/app/api/registry/auth/resend/route.js +1 -1
  192. package/.next/server/app/api/registry/auth/resend/route.js.nft.json +1 -1
  193. package/.next/server/app/api/registry/auth/resend/route_client-reference-manifest.js +1 -1
  194. package/.next/server/app/api/registry/auth/reset/route.js +1 -1
  195. package/.next/server/app/api/registry/auth/reset/route.js.nft.json +1 -1
  196. package/.next/server/app/api/registry/auth/reset/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/api/registry/auth/route.js +1 -1
  198. package/.next/server/app/api/registry/auth/route.js.nft.json +1 -1
  199. package/.next/server/app/api/registry/auth/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/api/registry/feedback/route.js +1 -0
  201. package/.next/server/app/api/registry/feedback/route.js.nft.json +1 -0
  202. package/.next/server/app/api/registry/feedback/route_client-reference-manifest.js +1 -0
  203. package/.next/server/app/api/registry/oauth/callback/route.js +1 -1
  204. package/.next/server/app/api/registry/oauth/callback/route.js.nft.json +1 -1
  205. package/.next/server/app/api/registry/oauth/callback/route_client-reference-manifest.js +1 -1
  206. package/.next/server/app/api/registry/oauth/initiate/route.js +1 -1
  207. package/.next/server/app/api/registry/oauth/initiate/route.js.nft.json +1 -1
  208. package/.next/server/app/api/registry/oauth/initiate/route_client-reference-manifest.js +1 -1
  209. package/.next/server/app/api/registry/packages/route.js +1 -0
  210. package/.next/server/app/api/registry/packages/route.js.nft.json +1 -0
  211. package/.next/server/app/api/registry/packages/route_client-reference-manifest.js +1 -0
  212. package/.next/server/app/api/registry/publish/route.js +1 -1
  213. package/.next/server/app/api/registry/publish/route.js.nft.json +1 -1
  214. package/.next/server/app/api/registry/publish/route_client-reference-manifest.js +1 -1
  215. package/.next/server/app/api/registry/settings/route.js +1 -1
  216. package/.next/server/app/api/registry/settings/route.js.nft.json +1 -1
  217. package/.next/server/app/api/registry/settings/route_client-reference-manifest.js +1 -1
  218. package/.next/server/app/api/restore/route.js +1 -1
  219. package/.next/server/app/api/restore/route.js.nft.json +1 -1
  220. package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
  221. package/.next/server/app/api/runs/active/route.js +2 -2
  222. package/.next/server/app/api/runs/active/route.js.nft.json +1 -1
  223. package/.next/server/app/api/runs/active/route_client-reference-manifest.js +1 -1
  224. package/.next/server/app/api/storage/route.js +1 -1
  225. package/.next/server/app/api/storage/route.js.nft.json +1 -1
  226. package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
  227. package/.next/server/app/api/telemetry/daily-active/route.js +1 -0
  228. package/.next/server/app/api/telemetry/daily-active/route.js.nft.json +1 -0
  229. package/.next/server/app/api/telemetry/daily-active/route_client-reference-manifest.js +1 -0
  230. package/.next/server/app/api/update/route.js +1 -1
  231. package/.next/server/app/api/update/route.js.nft.json +1 -1
  232. package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  233. package/.next/server/app/api/waves/route.js +1 -1
  234. package/.next/server/app/api/waves/route.js.nft.json +1 -1
  235. package/.next/server/app/api/waves/route_client-reference-manifest.js +1 -1
  236. package/.next/server/app/api/webhooks/[id]/route.js +1 -1
  237. package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
  238. package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
  239. package/.next/server/app/chat/page.js +58 -10
  240. package/.next/server/app/chat/page.js.nft.json +1 -1
  241. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  242. package/.next/server/app/chat.html +1 -1
  243. package/.next/server/app/chat.rsc +3 -3
  244. package/.next/server/app/docs/page.js +4 -5
  245. package/.next/server/app/docs/page.js.nft.json +1 -1
  246. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  247. package/.next/server/app/docs.html +1 -1
  248. package/.next/server/app/docs.rsc +3 -3
  249. package/.next/server/app/executions/page.js +3 -2
  250. package/.next/server/app/executions/page.js.nft.json +1 -1
  251. package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
  252. package/.next/server/app/executions.html +1 -1
  253. package/.next/server/app/executions.rsc +3 -3
  254. package/.next/server/app/flows/page.js +3 -3
  255. package/.next/server/app/flows/page.js.nft.json +1 -1
  256. package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
  257. package/.next/server/app/flows.html +1 -1
  258. package/.next/server/app/flows.rsc +3 -3
  259. package/.next/server/app/index.html +1 -1
  260. package/.next/server/app/index.rsc +3 -3
  261. package/.next/server/app/mcp/page.js +56 -5
  262. package/.next/server/app/mcp/page.js.nft.json +1 -1
  263. package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
  264. package/.next/server/app/mcp-flows/route.js +1 -1
  265. package/.next/server/app/mcp-flows/route.js.nft.json +1 -1
  266. package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
  267. package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
  268. package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -1
  269. package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
  270. package/.next/server/app/mcp.html +1 -1
  271. package/.next/server/app/mcp.rsc +3 -3
  272. package/.next/server/app/models/page.js +2 -2
  273. package/.next/server/app/models/page.js.nft.json +1 -1
  274. package/.next/server/app/models/page_client-reference-manifest.js +1 -1
  275. package/.next/server/app/packages/page.js +2 -2
  276. package/.next/server/app/packages/page.js.nft.json +1 -1
  277. package/.next/server/app/packages/page_client-reference-manifest.js +1 -1
  278. package/.next/server/app/packages.html +1 -1
  279. package/.next/server/app/packages.rsc +3 -3
  280. package/.next/server/app/page.js +3 -3
  281. package/.next/server/app/page.js.nft.json +1 -1
  282. package/.next/server/app/page_client-reference-manifest.js +1 -1
  283. package/.next/server/app/settings/page.js +2 -2
  284. package/.next/server/app/settings/page.js.nft.json +1 -1
  285. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  286. package/.next/server/app/settings.html +1 -1
  287. package/.next/server/app/settings.rsc +3 -3
  288. package/.next/server/app/v1/chat/completions/route.js +1 -1
  289. package/.next/server/app/v1/chat/completions/route.js.nft.json +1 -1
  290. package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
  291. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +2 -2
  292. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -1
  293. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
  294. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +2 -2
  295. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -1
  296. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
  297. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -1
  298. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -1
  299. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
  300. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -1
  301. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -1
  302. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
  303. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +2 -2
  304. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -1
  305. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
  306. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +2 -2
  307. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -1
  308. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
  309. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js +2 -2
  310. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js.nft.json +1 -1
  311. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route_client-reference-manifest.js +1 -1
  312. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route.js +1 -1
  313. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route.js.nft.json +1 -1
  314. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route_client-reference-manifest.js +1 -1
  315. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
  316. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
  317. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
  318. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +2 -2
  319. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -1
  320. package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  321. package/.next/server/app/v1/chat/conversations/route.js +2 -2
  322. package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
  323. package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
  324. package/.next/server/app/v1/chat/events/route.js +3 -3
  325. package/.next/server/app/v1/chat/events/route.js.nft.json +1 -1
  326. package/.next/server/app/v1/chat/events/route_client-reference-manifest.js +1 -1
  327. package/.next/server/app/v1/models/route.js +2 -2
  328. package/.next/server/app/v1/models/route.js.nft.json +1 -1
  329. package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -1
  330. package/.next/server/app/waves/page.js +3 -3
  331. package/.next/server/app/waves/page.js.nft.json +1 -1
  332. package/.next/server/app/waves/page_client-reference-manifest.js +1 -1
  333. package/.next/server/app/waves.html +1 -1
  334. package/.next/server/app/waves.rsc +3 -3
  335. package/.next/server/app-paths-manifest.json +15 -11
  336. package/.next/server/chunks/1114.js +1 -1
  337. package/.next/server/chunks/1226.js +1 -1
  338. package/.next/server/chunks/1227.js +1 -0
  339. package/.next/server/chunks/1314.js +1 -1
  340. package/.next/server/chunks/1439.js +1 -0
  341. package/.next/server/chunks/1578.js +1 -1
  342. package/.next/server/chunks/1634.js +1 -1
  343. package/.next/server/chunks/166.js +5 -5
  344. package/.next/server/chunks/1664.js +2 -0
  345. package/.next/server/chunks/180.js +12 -0
  346. package/.next/server/chunks/227.js +1 -5
  347. package/.next/server/chunks/2273.js +2 -2
  348. package/.next/server/chunks/2372.js +2 -0
  349. package/.next/server/chunks/2859.js +1 -1
  350. package/.next/server/chunks/2985.js +1 -0
  351. package/.next/server/chunks/3128.js +4 -4
  352. package/.next/server/chunks/3653.js +2 -0
  353. package/.next/server/chunks/3855.js +1 -0
  354. package/.next/server/chunks/4013.js +1 -0
  355. package/.next/server/chunks/4308.js +4 -0
  356. package/.next/server/chunks/{4685.js → 4466.js} +1 -1
  357. package/.next/server/chunks/4551.js +1 -1
  358. package/.next/server/chunks/4663.js +1 -0
  359. package/.next/server/chunks/4822.js +1 -0
  360. package/.next/server/chunks/5040.js +4 -9
  361. package/.next/server/chunks/5067.js +1 -1
  362. package/.next/server/chunks/544.js +38 -37
  363. package/.next/server/chunks/5463.js +1 -1
  364. package/.next/server/chunks/5544.js +5 -5
  365. package/.next/server/chunks/5703.js +2 -0
  366. package/.next/server/chunks/5708.js +2 -3
  367. package/.next/server/chunks/6034.js +1 -1
  368. package/.next/server/chunks/6226.js +1 -1
  369. package/.next/server/chunks/{3570.js → 6747.js} +287 -253
  370. package/.next/server/chunks/6967.js +82 -0
  371. package/.next/server/chunks/701.js +1 -1
  372. package/.next/server/chunks/{5548.js → 7058.js} +2 -2
  373. package/.next/server/chunks/{4566.js → 7069.js} +3 -3
  374. package/.next/server/chunks/{2388.js → 7104.js} +1 -1
  375. package/.next/server/chunks/7506.js +1 -1
  376. package/.next/server/chunks/7519.js +1 -0
  377. package/.next/server/chunks/7628.js +1 -0
  378. package/.next/server/chunks/{3030.js → 7674.js} +1 -1
  379. package/.next/server/chunks/7821.js +1 -1
  380. package/.next/server/chunks/{2866.js → 7891.js} +2 -2
  381. package/.next/server/chunks/793.js +3 -3
  382. package/.next/server/chunks/7965.js +39 -0
  383. package/.next/server/chunks/{6404.js → 7993.js} +2 -2
  384. package/.next/server/chunks/8187.js +78 -0
  385. package/.next/server/chunks/8387.js +1 -1
  386. package/.next/server/chunks/87.js +1 -0
  387. package/.next/server/chunks/8739.js +1 -2
  388. package/.next/server/chunks/{3912.js → 9085.js} +2 -2
  389. package/.next/server/chunks/9235.js +8 -0
  390. package/.next/server/chunks/94.js +1 -1
  391. package/.next/server/chunks/9724.js +3 -3
  392. package/.next/server/chunks/9983.js +1 -1
  393. package/.next/server/functions-config-manifest.json +3 -3
  394. package/.next/server/instrumentation.js +1 -1
  395. package/.next/server/instrumentation.js.nft.json +1 -1
  396. package/.next/server/middleware-build-manifest.js +1 -1
  397. package/.next/server/middleware-manifest.json +5 -5
  398. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  399. package/.next/server/pages/404.html +1 -1
  400. package/.next/server/pages/500.html +1 -1
  401. package/.next/server/server-reference-manifest.js +1 -1
  402. package/.next/server/server-reference-manifest.json +1 -1
  403. package/.next/static/chunks/1675-773454288de4309d.js +1 -0
  404. package/.next/static/chunks/{3189-fa8ec6d719d5e72b.js → 2005-f9d38c39f10c321f.js} +1 -1
  405. package/.next/static/chunks/2318-13ef0d3048e97834.js +1 -0
  406. package/.next/static/chunks/289-98f50bfcf833d661.js +1 -0
  407. package/.next/static/chunks/3089.df88f3b16898aad7.js +1 -0
  408. package/.next/static/chunks/361.bb75b03b740930cd.js +1 -0
  409. package/.next/static/chunks/3772-20197853c04a6993.js +1 -0
  410. package/.next/static/chunks/422-61b173ba64cf0c94.js +1 -0
  411. package/.next/static/chunks/4555-c9070f8c79bccfad.js +39 -0
  412. package/.next/static/chunks/4929-150b03595474c9d8.js +1 -0
  413. package/.next/static/chunks/5733-1419095a28c1ddc3.js +1 -0
  414. package/.next/static/chunks/639-90ed75d402dc872b.js +1 -0
  415. package/.next/static/chunks/{3452-a639f121f2953f50.js → 6428-951188daa6f74b86.js} +3 -3
  416. package/.next/static/chunks/6430-8c6dac4a758119f2.js +1 -0
  417. package/.next/static/chunks/6539-118a0084e0bfae34.js +1 -0
  418. package/.next/static/chunks/6733-c9029143901e62e9.js +1 -0
  419. package/.next/static/chunks/7264-91d1fa99abcd91ad.js +1 -0
  420. package/.next/static/chunks/7328-c8a51bb8c7470d77.js +1 -0
  421. package/.next/static/chunks/7391-5a0abd837ba241f5.js +1 -0
  422. package/.next/static/chunks/8124-4a80e3201b8e51b0.js +1 -0
  423. package/.next/static/chunks/{2969.eb9ff8cd2a5034b0.js → 8345.bc5534ec13abc9ee.js} +1 -1
  424. package/.next/static/chunks/8404-bfa9203e4296f3fb.js +1 -0
  425. package/.next/static/chunks/{8405.73e8be2c8e5b55c5.js → 8405.a425f94b6b13d2be.js} +1 -1
  426. package/.next/static/chunks/8551-a28272acfda62ac9.js +1 -0
  427. package/.next/static/chunks/8650-41c2afc0eba37fb8.js +1 -0
  428. package/.next/static/chunks/{9164-840f056a0e11d979.js → 9164-de1d167d87614a6d.js} +1 -1
  429. package/.next/static/chunks/9203-786f457ecf60b49c.js +1 -0
  430. package/.next/static/chunks/9345-11d6e48d892b1862.js +8 -0
  431. package/.next/static/chunks/95-b9691d3cb15556dc.js +1 -0
  432. package/.next/static/chunks/9562-f8371be653010627.js +1 -0
  433. package/.next/static/chunks/981-dd289e60d81da0d1.js +1 -0
  434. package/.next/static/chunks/9951-566fc6b05c12209e.js +1 -0
  435. package/.next/static/chunks/app/api/approvals/[id]/route-9ea2990be4b67136.js +1 -0
  436. package/.next/static/chunks/app/api/approvals/route-9ea2990be4b67136.js +1 -0
  437. package/.next/static/chunks/app/api/backup/route-9ea2990be4b67136.js +1 -0
  438. package/.next/static/chunks/app/api/browse/route-9ea2990be4b67136.js +1 -0
  439. package/.next/static/chunks/app/api/bugs/enhance/route-9ea2990be4b67136.js +1 -0
  440. package/.next/static/chunks/app/api/cwd/route-9ea2990be4b67136.js +1 -0
  441. package/.next/static/chunks/app/api/encryption/secure/route-9ea2990be4b67136.js +1 -0
  442. package/.next/static/chunks/app/api/env/route-9ea2990be4b67136.js +1 -0
  443. package/.next/static/chunks/app/api/flow/[id]/route-9ea2990be4b67136.js +1 -0
  444. package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-9ea2990be4b67136.js +1 -0
  445. package/.next/static/chunks/app/api/flow/[id]/versions/route-9ea2990be4b67136.js +1 -0
  446. package/.next/static/chunks/app/api/flow/compile/route-9ea2990be4b67136.js +1 -0
  447. package/.next/static/chunks/app/api/flow/generate/route-9ea2990be4b67136.js +1 -0
  448. package/.next/static/chunks/app/api/flow/generator/route-9ea2990be4b67136.js +1 -0
  449. package/.next/static/chunks/app/api/flow/improve/route-9ea2990be4b67136.js +1 -0
  450. package/.next/static/chunks/app/api/flow/prompt-renderer/route-9ea2990be4b67136.js +1 -0
  451. package/.next/static/chunks/app/api/flow/quick-chat/route-9ea2990be4b67136.js +1 -0
  452. package/.next/static/chunks/app/api/flow/repair/route-9ea2990be4b67136.js +1 -0
  453. package/.next/static/chunks/app/api/flow/route-9ea2990be4b67136.js +1 -0
  454. package/.next/static/chunks/app/api/git/route-9ea2990be4b67136.js +1 -0
  455. package/.next/static/chunks/app/api/init/route-9ea2990be4b67136.js +1 -0
  456. package/.next/static/chunks/app/api/local-models/capability/route-9ea2990be4b67136.js +1 -0
  457. package/.next/static/chunks/app/api/local-models/pull/route-9ea2990be4b67136.js +1 -0
  458. package/.next/static/chunks/app/api/local-models/suggest/route-9ea2990be4b67136.js +1 -0
  459. package/.next/static/chunks/app/api/mcp/app-sandbox/route-9ea2990be4b67136.js +1 -0
  460. package/.next/static/chunks/app/api/mcp/cancel/route-9ea2990be4b67136.js +1 -0
  461. package/.next/static/chunks/app/api/mcp/oauth-capability/route-9ea2990be4b67136.js +1 -0
  462. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-9ea2990be4b67136.js +1 -0
  463. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-9ea2990be4b67136.js +1 -0
  464. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-9ea2990be4b67136.js +1 -0
  465. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-9ea2990be4b67136.js +1 -0
  466. package/.next/static/chunks/app/api/mcp/servers/[name]/route-9ea2990be4b67136.js +1 -0
  467. package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-9ea2990be4b67136.js +1 -0
  468. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-9ea2990be4b67136.js +1 -0
  469. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-9ea2990be4b67136.js +1 -0
  470. package/.next/static/chunks/app/api/mcp/servers/route-9ea2990be4b67136.js +1 -0
  471. package/.next/static/chunks/app/api/mcp/test-connection/route-9ea2990be4b67136.js +1 -0
  472. package/.next/static/chunks/app/api/mcp/test-connection/stream/route-9ea2990be4b67136.js +1 -0
  473. package/.next/static/chunks/app/api/mcp-registry/route-9ea2990be4b67136.js +1 -0
  474. package/.next/static/chunks/app/api/mcp-registry/spotlight/route-9ea2990be4b67136.js +1 -0
  475. package/.next/static/chunks/app/api/model/[id]/route-9ea2990be4b67136.js +1 -0
  476. package/.next/static/chunks/app/api/model/provider/route-9ea2990be4b67136.js +1 -0
  477. package/.next/static/chunks/app/api/model/route-9ea2990be4b67136.js +1 -0
  478. package/.next/static/chunks/app/api/model/test/route-9ea2990be4b67136.js +1 -0
  479. package/.next/static/chunks/app/api/oauth/callback/route-9ea2990be4b67136.js +1 -0
  480. package/.next/static/chunks/app/api/oauth/initiate/route-9ea2990be4b67136.js +1 -0
  481. package/.next/static/chunks/app/api/oauth/reset/route-9ea2990be4b67136.js +1 -0
  482. package/.next/static/chunks/app/api/packages/build/route-9ea2990be4b67136.js +1 -0
  483. package/.next/static/chunks/app/api/packages/derive-secrets/route-9ea2990be4b67136.js +1 -0
  484. package/.next/static/chunks/app/api/packages/install/route-9ea2990be4b67136.js +1 -0
  485. package/.next/static/chunks/app/api/packages/install/status/route-9ea2990be4b67136.js +1 -0
  486. package/.next/static/chunks/app/api/packages/installed/route-9ea2990be4b67136.js +1 -0
  487. package/.next/static/chunks/app/api/packages/resolve/route-9ea2990be4b67136.js +1 -0
  488. package/.next/static/chunks/app/api/packages/scan-targets/route-9ea2990be4b67136.js +1 -0
  489. package/.next/static/chunks/app/api/packages/search/route-9ea2990be4b67136.js +1 -0
  490. package/.next/static/chunks/app/api/packages/uninstall/route-9ea2990be4b67136.js +1 -0
  491. package/.next/static/chunks/app/api/planned-executions/[id]/route-9ea2990be4b67136.js +1 -0
  492. package/.next/static/chunks/app/api/planned-executions/[id]/run/route-9ea2990be4b67136.js +1 -0
  493. package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-9ea2990be4b67136.js +1 -0
  494. package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-9ea2990be4b67136.js +1 -0
  495. package/.next/static/chunks/app/api/planned-executions/reconcile/route-9ea2990be4b67136.js +1 -0
  496. package/.next/static/chunks/app/api/planned-executions/route-9ea2990be4b67136.js +1 -0
  497. package/.next/static/chunks/app/api/registry/auth/resend/route-9ea2990be4b67136.js +1 -0
  498. package/.next/static/chunks/app/api/registry/auth/reset/route-9ea2990be4b67136.js +1 -0
  499. package/.next/static/chunks/app/api/registry/auth/route-9ea2990be4b67136.js +1 -0
  500. package/.next/static/chunks/app/api/registry/feedback/route-9ea2990be4b67136.js +1 -0
  501. package/.next/static/chunks/app/api/registry/oauth/callback/route-9ea2990be4b67136.js +1 -0
  502. package/.next/static/chunks/app/api/registry/oauth/initiate/route-9ea2990be4b67136.js +1 -0
  503. package/.next/static/chunks/app/api/registry/packages/route-9ea2990be4b67136.js +1 -0
  504. package/.next/static/chunks/app/api/registry/publish/route-9ea2990be4b67136.js +1 -0
  505. package/.next/static/chunks/app/api/registry/settings/route-9ea2990be4b67136.js +1 -0
  506. package/.next/static/chunks/app/api/restore/route-9ea2990be4b67136.js +1 -0
  507. package/.next/static/chunks/app/api/runs/active/route-9ea2990be4b67136.js +1 -0
  508. package/.next/static/chunks/app/api/storage/route-9ea2990be4b67136.js +1 -0
  509. package/.next/static/chunks/app/api/telemetry/daily-active/route-9ea2990be4b67136.js +1 -0
  510. package/.next/static/chunks/app/api/update/route-9ea2990be4b67136.js +1 -0
  511. package/.next/static/chunks/app/api/waves/route-9ea2990be4b67136.js +1 -0
  512. package/.next/static/chunks/app/api/webhooks/[id]/route-9ea2990be4b67136.js +1 -0
  513. package/.next/static/chunks/app/chat/page-1d100e5d974c919e.js +1 -0
  514. package/.next/static/chunks/app/docs/page-3b9ce48854b2147d.js +1 -0
  515. package/.next/static/chunks/app/executions/page-10ec7d58c7fbdd6f.js +1 -0
  516. package/.next/static/chunks/app/flows/page-9a78a2915268b2f8.js +1 -0
  517. package/.next/static/chunks/app/layout-38b88f3b057f4852.js +1 -0
  518. package/.next/static/chunks/app/mcp/{page-6041156fc67ef361.js → page-56b43b2f8752e9a5.js} +1 -1
  519. package/.next/static/chunks/app/mcp-flows/route-9ea2990be4b67136.js +1 -0
  520. package/.next/static/chunks/app/mcp-proxy/[server]/route-9ea2990be4b67136.js +1 -0
  521. package/.next/static/chunks/app/models/page-808c0568ebc5e2c7.js +1 -0
  522. package/.next/static/chunks/app/packages/page-af6ec89522915206.js +1 -0
  523. package/.next/static/chunks/app/page-30bf4293efa47a47.js +1 -0
  524. package/.next/static/chunks/app/settings/page-59ae1b658838f0bc.js +1 -0
  525. package/.next/static/chunks/app/v1/chat/completions/route-9ea2990be4b67136.js +1 -0
  526. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-9ea2990be4b67136.js +1 -0
  527. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-9ea2990be4b67136.js +1 -0
  528. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-9ea2990be4b67136.js +1 -0
  529. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-9ea2990be4b67136.js +1 -0
  530. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-9ea2990be4b67136.js +1 -0
  531. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-9ea2990be4b67136.js +1 -0
  532. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/inject/route-9ea2990be4b67136.js +1 -0
  533. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-9ea2990be4b67136.js +1 -0
  534. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-9ea2990be4b67136.js +1 -0
  535. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-9ea2990be4b67136.js +1 -0
  536. package/.next/static/chunks/app/v1/chat/conversations/route-9ea2990be4b67136.js +1 -0
  537. package/.next/static/chunks/app/v1/chat/events/route-9ea2990be4b67136.js +1 -0
  538. package/.next/static/chunks/app/v1/models/route-9ea2990be4b67136.js +1 -0
  539. package/.next/static/chunks/app/waves/{page-3cf4b47b12662196.js → page-dc99a16141dd902b.js} +1 -1
  540. package/.next/static/chunks/webpack-dccb4f149ebdedcc.js +1 -0
  541. package/.next/static/jfb1GsjSGMjBmwfa3kM26/_buildManifest.js +1 -0
  542. package/.next/trace +10 -10
  543. package/.next/types/app/api/flow/generator/route.ts +347 -0
  544. package/.next/types/app/api/registry/feedback/route.ts +347 -0
  545. package/.next/types/app/api/registry/packages/route.ts +347 -0
  546. package/.next/types/app/api/telemetry/daily-active/route.ts +347 -0
  547. package/.next/types/routes.d.ts +5 -1
  548. package/.next/types/validator.ts +36 -0
  549. package/README.md +46 -7
  550. package/next.config.mjs +2 -2
  551. package/package.json +4 -3
  552. package/.next/server/chunks/2180.js +0 -1
  553. package/.next/server/chunks/237.js +0 -1
  554. package/.next/server/chunks/3392.js +0 -82
  555. package/.next/server/chunks/4961.js +0 -2
  556. package/.next/server/chunks/510.js +0 -1
  557. package/.next/server/chunks/5150.js +0 -1
  558. package/.next/server/chunks/5561.js +0 -1
  559. package/.next/server/chunks/5705.js +0 -1
  560. package/.next/server/chunks/5829.js +0 -1
  561. package/.next/server/chunks/694.js +0 -3
  562. package/.next/server/chunks/7579.js +0 -83
  563. package/.next/server/chunks/7724.js +0 -1
  564. package/.next/server/chunks/8034.js +0 -1
  565. package/.next/server/chunks/8037.js +0 -1
  566. package/.next/server/chunks/8192.js +0 -12
  567. package/.next/server/chunks/826.js +0 -2
  568. package/.next/server/chunks/8366.js +0 -90
  569. package/.next/server/chunks/848.js +0 -39
  570. package/.next/server/chunks/8615.js +0 -1
  571. package/.next/server/chunks/9313.js +0 -1
  572. package/.next/server/chunks/9537.js +0 -39
  573. package/.next/server/chunks/9576.js +0 -2
  574. package/.next/server/chunks/9632.js +0 -1
  575. package/.next/server/chunks/9671.js +0 -1
  576. package/.next/server/chunks/9857.js +0 -1
  577. package/.next/static/A9jP2ydtYbqx-IayWP2Sg/_buildManifest.js +0 -1
  578. package/.next/static/chunks/1496-d478bce7d7c85080.js +0 -1
  579. package/.next/static/chunks/1572-b663a83bba28a0a1.js +0 -8
  580. package/.next/static/chunks/1641-e5ff8f112da0a335.js +0 -1
  581. package/.next/static/chunks/1988-bd73f26184e930c1.js +0 -1
  582. package/.next/static/chunks/2266-d812473724cc6643.js +0 -1
  583. package/.next/static/chunks/3089.a0856f8093b90939.js +0 -1
  584. package/.next/static/chunks/3560-5bdceef09b50e1c3.js +0 -1
  585. package/.next/static/chunks/3672-cd86ace43288da79.js +0 -1
  586. package/.next/static/chunks/3711-0050bb4d345c2c9c.js +0 -1
  587. package/.next/static/chunks/4147-20897d83b3cd3978.js +0 -39
  588. package/.next/static/chunks/435-17c79f3b9f8dd38d.js +0 -1
  589. package/.next/static/chunks/469-1f043fe082d9f475.js +0 -1
  590. package/.next/static/chunks/4740-62814d07b2b7f760.js +0 -1
  591. package/.next/static/chunks/5441-cb0c31de8bce65c3.js +0 -1
  592. package/.next/static/chunks/7111-44538f8a64241b74.js +0 -1
  593. package/.next/static/chunks/812-dfe7ba07ddb7a565.js +0 -1
  594. package/.next/static/chunks/8401-0f39d91810180a88.js +0 -1
  595. package/.next/static/chunks/8404-14ef0345dc401ac5.js +0 -1
  596. package/.next/static/chunks/8678-c6c6be2672f337f6.js +0 -1
  597. package/.next/static/chunks/8834-faf121e257b517d5.js +0 -1
  598. package/.next/static/chunks/8855-f802599c4af81cca.js +0 -1
  599. package/.next/static/chunks/9562-5494feecd8c6f7a3.js +0 -1
  600. package/.next/static/chunks/app/api/approvals/[id]/route-1a4c9e7a416ccbcf.js +0 -1
  601. package/.next/static/chunks/app/api/approvals/route-1a4c9e7a416ccbcf.js +0 -1
  602. package/.next/static/chunks/app/api/backup/route-1a4c9e7a416ccbcf.js +0 -1
  603. package/.next/static/chunks/app/api/browse/route-1a4c9e7a416ccbcf.js +0 -1
  604. package/.next/static/chunks/app/api/bugs/enhance/route-1a4c9e7a416ccbcf.js +0 -1
  605. package/.next/static/chunks/app/api/cwd/route-1a4c9e7a416ccbcf.js +0 -1
  606. package/.next/static/chunks/app/api/encryption/secure/route-1a4c9e7a416ccbcf.js +0 -1
  607. package/.next/static/chunks/app/api/env/route-1a4c9e7a416ccbcf.js +0 -1
  608. package/.next/static/chunks/app/api/flow/[id]/route-1a4c9e7a416ccbcf.js +0 -1
  609. package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-1a4c9e7a416ccbcf.js +0 -1
  610. package/.next/static/chunks/app/api/flow/[id]/versions/route-1a4c9e7a416ccbcf.js +0 -1
  611. package/.next/static/chunks/app/api/flow/compile/route-1a4c9e7a416ccbcf.js +0 -1
  612. package/.next/static/chunks/app/api/flow/generate/route-1a4c9e7a416ccbcf.js +0 -1
  613. package/.next/static/chunks/app/api/flow/improve/route-1a4c9e7a416ccbcf.js +0 -1
  614. package/.next/static/chunks/app/api/flow/prompt-renderer/route-1a4c9e7a416ccbcf.js +0 -1
  615. package/.next/static/chunks/app/api/flow/quick-chat/route-1a4c9e7a416ccbcf.js +0 -1
  616. package/.next/static/chunks/app/api/flow/repair/route-1a4c9e7a416ccbcf.js +0 -1
  617. package/.next/static/chunks/app/api/flow/route-1a4c9e7a416ccbcf.js +0 -1
  618. package/.next/static/chunks/app/api/git/route-1a4c9e7a416ccbcf.js +0 -1
  619. package/.next/static/chunks/app/api/init/route-1a4c9e7a416ccbcf.js +0 -1
  620. package/.next/static/chunks/app/api/local-models/capability/route-1a4c9e7a416ccbcf.js +0 -1
  621. package/.next/static/chunks/app/api/local-models/pull/route-1a4c9e7a416ccbcf.js +0 -1
  622. package/.next/static/chunks/app/api/local-models/suggest/route-1a4c9e7a416ccbcf.js +0 -1
  623. package/.next/static/chunks/app/api/mcp/app-sandbox/route-1a4c9e7a416ccbcf.js +0 -1
  624. package/.next/static/chunks/app/api/mcp/cancel/route-1a4c9e7a416ccbcf.js +0 -1
  625. package/.next/static/chunks/app/api/mcp/oauth-capability/route-1a4c9e7a416ccbcf.js +0 -1
  626. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-1a4c9e7a416ccbcf.js +0 -1
  627. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-1a4c9e7a416ccbcf.js +0 -1
  628. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-1a4c9e7a416ccbcf.js +0 -1
  629. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-1a4c9e7a416ccbcf.js +0 -1
  630. package/.next/static/chunks/app/api/mcp/servers/[name]/route-1a4c9e7a416ccbcf.js +0 -1
  631. package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-1a4c9e7a416ccbcf.js +0 -1
  632. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-1a4c9e7a416ccbcf.js +0 -1
  633. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-1a4c9e7a416ccbcf.js +0 -1
  634. package/.next/static/chunks/app/api/mcp/servers/route-1a4c9e7a416ccbcf.js +0 -1
  635. package/.next/static/chunks/app/api/mcp/test-connection/route-1a4c9e7a416ccbcf.js +0 -1
  636. package/.next/static/chunks/app/api/mcp/test-connection/stream/route-1a4c9e7a416ccbcf.js +0 -1
  637. package/.next/static/chunks/app/api/mcp-registry/route-1a4c9e7a416ccbcf.js +0 -1
  638. package/.next/static/chunks/app/api/mcp-registry/spotlight/route-1a4c9e7a416ccbcf.js +0 -1
  639. package/.next/static/chunks/app/api/model/[id]/route-1a4c9e7a416ccbcf.js +0 -1
  640. package/.next/static/chunks/app/api/model/provider/route-1a4c9e7a416ccbcf.js +0 -1
  641. package/.next/static/chunks/app/api/model/route-1a4c9e7a416ccbcf.js +0 -1
  642. package/.next/static/chunks/app/api/model/test/route-1a4c9e7a416ccbcf.js +0 -1
  643. package/.next/static/chunks/app/api/oauth/callback/route-1a4c9e7a416ccbcf.js +0 -1
  644. package/.next/static/chunks/app/api/oauth/initiate/route-1a4c9e7a416ccbcf.js +0 -1
  645. package/.next/static/chunks/app/api/oauth/reset/route-1a4c9e7a416ccbcf.js +0 -1
  646. package/.next/static/chunks/app/api/packages/build/route-1a4c9e7a416ccbcf.js +0 -1
  647. package/.next/static/chunks/app/api/packages/derive-secrets/route-1a4c9e7a416ccbcf.js +0 -1
  648. package/.next/static/chunks/app/api/packages/install/route-1a4c9e7a416ccbcf.js +0 -1
  649. package/.next/static/chunks/app/api/packages/install/status/route-1a4c9e7a416ccbcf.js +0 -1
  650. package/.next/static/chunks/app/api/packages/installed/route-1a4c9e7a416ccbcf.js +0 -1
  651. package/.next/static/chunks/app/api/packages/resolve/route-1a4c9e7a416ccbcf.js +0 -1
  652. package/.next/static/chunks/app/api/packages/scan-targets/route-1a4c9e7a416ccbcf.js +0 -1
  653. package/.next/static/chunks/app/api/packages/search/route-1a4c9e7a416ccbcf.js +0 -1
  654. package/.next/static/chunks/app/api/packages/uninstall/route-1a4c9e7a416ccbcf.js +0 -1
  655. package/.next/static/chunks/app/api/planned-executions/[id]/route-1a4c9e7a416ccbcf.js +0 -1
  656. package/.next/static/chunks/app/api/planned-executions/[id]/run/route-1a4c9e7a416ccbcf.js +0 -1
  657. package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-1a4c9e7a416ccbcf.js +0 -1
  658. package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-1a4c9e7a416ccbcf.js +0 -1
  659. package/.next/static/chunks/app/api/planned-executions/reconcile/route-1a4c9e7a416ccbcf.js +0 -1
  660. package/.next/static/chunks/app/api/planned-executions/route-1a4c9e7a416ccbcf.js +0 -1
  661. package/.next/static/chunks/app/api/registry/auth/resend/route-1a4c9e7a416ccbcf.js +0 -1
  662. package/.next/static/chunks/app/api/registry/auth/reset/route-1a4c9e7a416ccbcf.js +0 -1
  663. package/.next/static/chunks/app/api/registry/auth/route-1a4c9e7a416ccbcf.js +0 -1
  664. package/.next/static/chunks/app/api/registry/oauth/callback/route-1a4c9e7a416ccbcf.js +0 -1
  665. package/.next/static/chunks/app/api/registry/oauth/initiate/route-1a4c9e7a416ccbcf.js +0 -1
  666. package/.next/static/chunks/app/api/registry/publish/route-1a4c9e7a416ccbcf.js +0 -1
  667. package/.next/static/chunks/app/api/registry/settings/route-1a4c9e7a416ccbcf.js +0 -1
  668. package/.next/static/chunks/app/api/restore/route-1a4c9e7a416ccbcf.js +0 -1
  669. package/.next/static/chunks/app/api/runs/active/route-1a4c9e7a416ccbcf.js +0 -1
  670. package/.next/static/chunks/app/api/storage/route-1a4c9e7a416ccbcf.js +0 -1
  671. package/.next/static/chunks/app/api/update/route-1a4c9e7a416ccbcf.js +0 -1
  672. package/.next/static/chunks/app/api/waves/route-1a4c9e7a416ccbcf.js +0 -1
  673. package/.next/static/chunks/app/api/webhooks/[id]/route-1a4c9e7a416ccbcf.js +0 -1
  674. package/.next/static/chunks/app/chat/page-558edb21321a32d0.js +0 -1
  675. package/.next/static/chunks/app/docs/page-fc30f613607b8a26.js +0 -1
  676. package/.next/static/chunks/app/executions/page-e71689c7256af1e8.js +0 -1
  677. package/.next/static/chunks/app/flows/page-e90e8d7b4c1bd1c8.js +0 -1
  678. package/.next/static/chunks/app/layout-038b35b382eef11d.js +0 -1
  679. package/.next/static/chunks/app/mcp-flows/route-1a4c9e7a416ccbcf.js +0 -1
  680. package/.next/static/chunks/app/mcp-proxy/[server]/route-1a4c9e7a416ccbcf.js +0 -1
  681. package/.next/static/chunks/app/models/page-d16f2721e7a93b43.js +0 -1
  682. package/.next/static/chunks/app/packages/page-c6b0e7aa95bc1064.js +0 -1
  683. package/.next/static/chunks/app/page-5c7fccd019942d46.js +0 -1
  684. package/.next/static/chunks/app/settings/page-fb336bb049bab72a.js +0 -1
  685. package/.next/static/chunks/app/v1/chat/completions/route-1a4c9e7a416ccbcf.js +0 -1
  686. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-1a4c9e7a416ccbcf.js +0 -1
  687. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-1a4c9e7a416ccbcf.js +0 -1
  688. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-1a4c9e7a416ccbcf.js +0 -1
  689. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-1a4c9e7a416ccbcf.js +0 -1
  690. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-1a4c9e7a416ccbcf.js +0 -1
  691. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-1a4c9e7a416ccbcf.js +0 -1
  692. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/inject/route-1a4c9e7a416ccbcf.js +0 -1
  693. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-1a4c9e7a416ccbcf.js +0 -1
  694. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-1a4c9e7a416ccbcf.js +0 -1
  695. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-1a4c9e7a416ccbcf.js +0 -1
  696. package/.next/static/chunks/app/v1/chat/conversations/route-1a4c9e7a416ccbcf.js +0 -1
  697. package/.next/static/chunks/app/v1/chat/events/route-1a4c9e7a416ccbcf.js +0 -1
  698. package/.next/static/chunks/app/v1/models/route-1a4c9e7a416ccbcf.js +0 -1
  699. package/.next/static/chunks/webpack-2d8e0c13c0b865fe.js +0 -1
  700. /package/.next/static/{A9jP2ydtYbqx-IayWP2Sg → jfb1GsjSGMjBmwfa3kM26}/_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(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
+ "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(1226),c.e(4771),c.e(4671),c.e(4265),c.e(6226),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(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,h,i,j="host"){switch(b){case d._:{let{internalCallTool:b}=await Promise.all([c.e(3736),c.e(9794),c.e(6826),c.e(1226),c.e(4771),c.e(4671),c.e(4265),c.e(6226),c.e(5708),c.e(227),c.e(2859)]).then(c.bind(c,42859));return b(a,f,h,j)}case e.K3:{let{filesystemCallTool:a}=await Promise.all([c.e(793),c.e(8387)]).then(c.bind(c,18387));return a(f,h,i)}case e.PA:{let{bashCallTool:a}=await c.e(5544).then(c.bind(c,35544));return a(f,h,i)}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,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)}}}};
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:()=>q,cd:()=>n,wp:()=>m});var d=c(33873),e=c.n(d),f=c(21820),g=c.n(f),h=c(43326),i=c(92372),j=c(84653),k=c(7969);function l(a){return"string"==typeof a&&/^(1|true|yes|on)$/i.test(a.trim())}let m="FLUJO_ALLOW_PROTECTED_PATHS";async function n(){if(l(process.env[m]))return!1;try{let a=await (0,i.YM)(j.Z.SPEECH_SETTINGS,void 0);return a?.experimental?.protectedPathsEnabled===!0}catch{return!1}}let o=null;function p(a,...b){return e().resolve(a,...b)}function q(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,k.F)(a,b)))return{denied:!1};for(let a of function(){let a=l(process.env[m]),b=(0,h.getHomeDir)(),c=`${a?"off":"on"}::${b}`;if(o&&o.key===c)return o.paths;let d=a?[]:function(a){let b=[];if("win32"===process.platform)for(let c of["AppData","Downloads","Desktop","Documents","Pictures","Music","Videos","OneDrive"])b.push(p(a,c));else if("darwin"===process.platform){for(let c of["Downloads","Desktop","Documents","Pictures","Music","Movies"])b.push(p(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(p(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(p(a,c));return Array.from(new Set(b))}(b);return o={key:c,paths:d},d}())if((0,k.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:()=>J,bashToolDefinitions:()=>C});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[a];if(void 0!==b)return b;let c=Object.keys(process.env).find(b=>b.toLowerCase()===a.toLowerCase());return c?process.env[c]:void 0}function s(a){let b=(r("PATH")??"").split(g().delimiter).filter(Boolean),c="win32"===process.platform?(r("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 t(){return global.__flujo_bash_sessions||(global.__flujo_bash_sessions=new Map),global.__flujo_bash_sessions}function u(a,b=!1){return{content:[{type:"text",text:"string"==typeof a?a:JSON.stringify(a,null,2)}],...b?{isError:!0}:{}}}let v=["FLUJO_BASH_ROOTS","FLUJO_FS_ROOTS"];async function w(a,b){let c=(0,m.getDataDir)(),d="string"==typeof a?a.trim():"",e=d?g().isAbsolute(d)?g().resolve(d):g().resolve(c,d):c;if(await (0,p.cd)()){let a=(0,p.bz)(e);if(a.denied)throw Error(`cwd "${e}" is within a protected location (${a.matchedRoot}) and is blocked by the FLUJO built-in server protected-path policy. Disable "Protect sensitive home-directory paths" in Experimental Features or set ${p.wp}=1 to override.`)}if(0===b.length||!b.some(a=>(0,o.F)(a,e)))throw Error(`cwd "${e}" is outside the configured bash roots.`);return e}async function x(a,b,c){let d=[],e=await (0,p.cd)(),f=new Set,h=(a.match(/(?:[A-Za-z]:[\\/][^\s"']*|\\\\[^\s"']+|~\/[^\s"']*|(?<![\w.])\/[^\s"']+)/g)??[]).filter(a=>!("win32"===process.platform&&/^\/[A-Za-z]$/.test(a))),i=(()=>{try{return(0,m.getHomeDir)()}catch{return""}})();for(let a of h){let h,j=a;j.startsWith("~/")&&i&&(j=g().join(i,j.slice(2)));try{h=g().isAbsolute(j)?g().resolve(j):g().resolve(b,j)}catch{continue}if(f.has(h))continue;f.add(h);let k=e?(0,p.bz)(h):{denied:!1};k.denied?d.push(`Command references "${a}", which is inside a protected location (${k.matchedRoot}).`):c.length>0&&!c.some(a=>(0,o.F)(a,h))&&d.push(`Command references "${a}", which is outside the configured working roots.`)}return d}let y=new Set(["PATH","Path","HOME","USERPROFILE","TMP","TEMP","TMPDIR","LANG","LC_ALL","SystemRoot","windir","ComSpec","PATHEXT","SystemDrive","NUMBER_OF_PROCESSORS","PROCESSOR_ARCHITECTURE"]);function z(a){return"pwsh"===a||"bash"===a?a:"default"}function A(a,b,c){let{file:f,args:h,useShell:k,effectiveShell:l,unavailableShell:m}=function(a,b){if("pwsh"===b){let b=void 0!==e?e:e=s("pwsh");return b?{file:b,args:["-NoProfile","-NonInteractive","-Command",a],useShell:!1,effectiveShell:"pwsh"}:{file:"",args:[],useShell:!1,effectiveShell:"pwsh",unavailableShell:"pwsh"}}if("bash"===b){let b=function(){if(void 0!==d)return d;let a=s("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:"",args:[],useShell:!1,effectiveShell:"bash",unavailableShell:"bash"}}return{file:a,args:[],useShell:!0,effectiveShell:"default"}}(a,c);if(m)return{effectiveShell:l,unavailableShell:m};let 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))(y.has(a)||/^LC_/.test(a))&&(b[a]=process.env[a]);return b}(),detached:n}),effectiveShell:l}}catch(a){return{startError:a instanceof Error?a.message:String(a),effectiveShell:l}}}function B(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 C(){let a={type:"string",enum:["default","pwsh","bash"],description:'Which shell to use: "default" (the OS shell), "pwsh" (PowerShell 7+), or "bash". Explicit shells return an error if 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 D(a,b){return b?a.replace(/\r\n?/g,"\n"):a}async function E(a,b){let c=String(a?.command??"").trim();if(!c)return u({error:'Provide "command": a shell command line to run.'},!0);let d=await w(a.cwd,b),e=await x(c,d,b),f=e.length?{warnings:e}:{},g=z(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=B(()=>e,(a,b)=>{e=a,j=b||j}),{child:o,startError:p,effectiveShell:q,unavailableShell:r}=A(c,d,g);if(r)return void a(u({error:`Requested shell "${r}" is unavailable or could not be resolved.`,cwd:d,shell:r},!0));if(p||!o)return void a(u({error:`Failed to start command (${q}): ${p??"unknown error"}`,cwd:d,shell:q},!0));let s=setTimeout(()=>{m=!0,b=(0,k.g)(o)},i),t=c=>{l||(l=!0,clearTimeout(s),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}`),t(u({error:`Command failed to start (${q}): ${a.message}`,cwd:d,shell:q,output:D(e,h)},!0))}),o.on("close",a=>{let b=D(e,h);if(m)return void t(u({timedOut:!0,cwd:d,shell:q,exitCode:a,truncated:j,output:`${b}
3
+ [killed after ${i/1e3}s timeout]`,...f},!0));t(u({exitCode:a,cwd:d,shell:q,truncated:j,output:b,...f},0!==a))})})}function F(a){a.reapTimer=setTimeout(()=>{t().delete(a.id)},6e5),a.reapTimer.unref?.()}async function G(a,b){let c=String(a?.command??"").trim();if(!c)return u({error:'Provide "command": a shell command line to run.'},!0);let d=t();if(d.size>=25)for(let[a,b]of d)b.running||d.delete(a);if(d.size>=25)return u({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 t().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=await w(a.cwd,b),f=await x(c,e,b),g=f.length?{warnings:f}:{},{child:h,startError:i,effectiveShell:j,unavailableShell:l}=A(c,e,z(a.shell));if(l)return u({error:`Requested shell "${l}" is unavailable or could not be resolved.`,cwd:e,shell:l},!0);if(i||!h)return u({error:`Failed to start command (${j}): ${i??"unknown error"}`,cwd:e,shell:j},!0);let m=`bash-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,n={id:m,command:c,cwd:e,child:h,output:"",truncated:!1,running:!0,exitCode:null,startedAt:Date.now()};d.set(m,n);let o=B(()=>n.output,(a,b)=>{n.output=a,n.truncated=b||n.truncated});return h.stdout?.on("data",a=>o(a.toString())),h.stderr?.on("data",a=>o(a.toString())),h.on("error",a=>{o(`
4
+ ${a.message}`),n.running=!1,n.endedAt=Date.now(),F(n)}),h.on("close",a=>{n.running=!1,n.exitCode=a,n.endedAt=Date.now(),F(n)}),u({sessionId:m,cwd:e,shell:j,...g})}function H(a,b={}){return{sessionId:a.id,running:a.running,exitCode:a.exitCode,output:a.output,truncated:a.truncated,...b}}async function I(a){let b=String(a?.sessionId??""),c=t().get(b);if(!c)return u({error:`No background session with id "${b}".`},!0);if(!c.running)return u(H(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 u(H(c,{timedOut:e}))}async function J(a,b,c){try{switch(a){case"run":{let a=await (0,o.loadEffectiveRoots)(n.PA,v,c);return await E(b,a)}case"start":{let a=await (0,o.loadEffectiveRoots)(n.PA,v,c);return await G(b,a)}case"status":let d=String(b?.sessionId??""),e=t().get(d);return e?u(H(e)):u({error:`No background session with id "${d}".`},!0);case"wait":return await I(b);case"write_stdin":let f=String(b?.sessionId??""),g=t().get(f);if(!g)return u({error:`No background session with id "${f}".`},!0);if(!g.running)return u({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 u({error:`Failed to write to stdin: ${a instanceof Error?a.message:String(a)}`},!0)}return u({sessionId:f,written:Buffer.byteLength(i,"utf8")});case"kill":let j=String(b?.sessionId??""),l=t().get(j);return l?(l.running&&(l.cancelEscalation=(0,k.g)(l.child)),u({sessionId:j,killed:!0})):u({error:`No background session with id "${j}".`},!0);case"list_sessions":return u({sessions:Array.from(t().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 u({error:`Unknown tool on the built-in bash server: ${a}`},!0)}}catch(b){return q.warn("bashCallTool failed",{toolName:a,err:b}),u({error:`Tool failed: ${b instanceof Error?b.message:String(b)}`},!0)}}}};
@@ -0,0 +1,2 @@
1
+ exports.id=5703,exports.ids=[5703],exports.modules={3404:(a,b,c)=>{"use strict";c.d(b,{QF:()=>t,$Z:()=>x,pE:()=>y,O:()=>E,WU:()=>s,mt:()=>F,ri:()=>u,mk:()=>D,w2:()=>A,Nb:()=>z,DZ:()=>G});var d=c(50846),e=c(92372),f=c(38844),g=c(40829),h=c(49680),i=c(21508),j=c(80233);async function k(a){let b=await (0,j.uJ)(),c=new URL(`${b}/v1/auth/oauth/${a.provider}/authorize`);return c.searchParams.set("redirect_uri",a.redirectUri),c.searchParams.set("state",a.state),c.searchParams.set("code_challenge",a.codeChallenge),c.searchParams.set("code_challenge_method","S256"),c.toString()}var l=c(55511);let m=(0,d.h)("backend/services/registry"),n={email:"",publisherHandle:null,isConfirmed:!1,expiresAt:null,accessToken:"",refreshToken:""};async function o(){return(0,e.YM)(f.Z.REGISTRY_ACCOUNT,n)}async function p(a){await (0,e.VH)(f.Z.REGISTRY_ACCOUNT,a)}async function q(a,b,c){let d=await o(),e=new Set(d.linkedProviders??[]);c?.linkedProvider&&e.add(c.linkedProvider);let f={email:b.email||a,publisherHandle:b.publisher_handle??null,isConfirmed:b.is_confirmed??!0,expiresAt:"number"==typeof b.expires_at?b.expires_at<1e12?1e3*b.expires_at:b.expires_at:"number"==typeof b.expires_in?Date.now()+1e3*b.expires_in:null,accessToken:b.access_token?await (0,g.Rs)(b.access_token):"",refreshToken:b.refresh_token?await (0,g.Rs)(b.refresh_token):"",authMethod:c?.authMethod??d.authMethod??"password",...e.size?{linkedProviders:Array.from(e)}:{}};return await p(f),f}function r(a){let b=!!a.accessToken;return{signedIn:b,email:a.email||null,publisherHandle:a.publisherHandle,isConfirmed:a.isConfirmed,hasToken:b,token:b?h.RJ:"",...a.linkedProviders&&a.linkedProviders.length?{linkedProviders:a.linkedProviders}:{}}}async function s(){let a=await o();return a.accessToken&&!await (0,g.Tt)(a.accessToken)?r({...a,accessToken:""}):r(a)}async function t(a,b,c,d){let{status:e,body:f}="signup"===c?await j.$5(a,b,d||""):await j.iD(a,b);if(0===e)return{status:"error",message:"Could not reach the package registry."};let g=f?.needs_confirmation===!0||f?.is_confirmed===!1||403===e&&/confirm/i.test(f?.error||f?.message||"")||"signup"===c&&!f?.access_token&&e>=200&&e<300;return e>=200&&e<300&&f?.access_token?{status:"authenticated",account:r(await q(a,f,{authMethod:"password"}))}:g?(await p({...n,email:f?.email||a,isConfirmed:!1}),{status:"confirmation_required",account:r(await o()),message:"Check your inbox to confirm your email before publishing."}):{status:"error",message:f?.error||f?.message||`Registry responded with status ${e}.`}}async function u(){await p({...n})}let v=new Map;function w(){let a=Date.now();for(let[b,c]of v)a-c.createdAt>6e5&&v.delete(b)}async function x(a,b){w();let c=(0,l.randomBytes)(24).toString("base64url"),{verifier:d,challenge:e}=function(){let a=(0,l.randomBytes)(32).toString("base64url"),b=(0,l.createHash)("sha256").update(a).digest("base64url");return{verifier:a,challenge:b}}();return v.set(c,{provider:a,codeVerifier:d,redirectUri:b,createdAt:Date.now()}),{authorizationUrl:await k({provider:a,redirectUri:b,state:c,codeChallenge:e}),state:c}}async function y(a,b){var c;w();let d=b?v.get(b):void 0;if(b&&v.delete(b),!a||!d)return{status:"error",message:"Your sign-in session expired or was invalid. Please try again."};let{status:e,body:f}=await (c={code:a,codeVerifier:d.codeVerifier,redirectUri:d.redirectUri,provider:d.provider},(0,j.Tr)(c));if(0===e)return{status:"error",message:"Could not reach the package registry."};if(e>=200&&e<300&&f?.access_token){let a=await q(f.email||"",f,{authMethod:"oauth",linkedProvider:d.provider});return m.info("Completed registry OAuth sign-in."),{status:"authenticated",account:r(a)}}return{status:"error",message:f?.error||f?.message||`Registry responded with status ${e}.`}}async function z(a){let b=(a||(await o()).email||"").trim();if(!b)return{success:!1,message:"No email address on file to resend confirmation to."};let{status:c,body:d}=await j.Nb(b);return c>=200&&c<300?{success:!0}:{success:!1,message:d?.error||d?.message||`Registry responded with status ${c}.`}}async function A(a){let b=(a||"").trim();if(!b)return{success:!1,message:"Enter the email address for your registry account."};let{status:c,body:d}=await j.w2(b);return c>=200&&c<300?(m.info("Requested password reset for registry account."),{success:!0}):(m.info(`Password reset request returned status ${c}.`),{success:!1,message:d?.error||d?.message||`Registry responded with status ${c}.`})}class B extends Error{constructor(){super("Not signed in to the package registry."),this.name="NotAuthenticatedError"}}async function C(a){let b=await o();if(!b.accessToken)throw m.warn("withAccessToken: no accessToken stored; treating as signed out."),new B;let c=await (0,g.Tt)(b.accessToken);if(!c)throw m.warn("withAccessToken: stored accessToken could not be decrypted; treating as signed out."),new B;let d=await a(c);if(401!==d.status)return d;if(b.refreshToken){let c=await (0,g.Tt)(b.refreshToken);if(c){let d=await j.Ow(c);if(d.status>=200&&d.status<300&&d.body?.access_token){let c=await q(b.email,{...d.body,email:d.body.email||b.email,publisher_handle:d.body.publisher_handle??b.publisherHandle??void 0,is_confirmed:d.body.is_confirmed??b.isConfirmed}),e=await (0,g.Tt)(c.accessToken);if(e)return await a(e)}}}return m.warn("Registry access token rejected and refresh failed; clearing stored session."),await u(),d}async function D(a){try{var b;let{status:c,body:d}=await C(b=>j.eo(a,b));if(c>=200&&c<300)return{ok:!0,id:d?.id,name:d?.name,version:d?.version,url:d?.url};return b=d?.error||d?.message||"",401===c?{ok:!1,code:"unauthorized",error:"Your registry session expired. Please log in again."}:403===c?{ok:!1,code:"unconfirmed",error:"Confirm your email address before publishing."}:409===c?{ok:!1,code:"name_collision",error:b||"A package with this name/version already exists."}:400===c||422===c?{ok:!1,code:"validation",error:b||"The package manifest was rejected by the registry."}:0===c?{ok:!1,code:"error",error:"Could not reach the package registry."}:{ok:!1,code:"error",error:b||`Registry responded with status ${c}.`}}catch(a){if(a instanceof B)return{ok:!1,code:"not_authenticated",error:"Sign in to the package registry before publishing."};return m.error("Unexpected error publishing package",a instanceof Error?a.message:a),{ok:!1,code:"error",error:"Unexpected error publishing package."}}}async function E(a){let b=a.trim();if(!b)return{ok:!1,code:"validation",error:"A package id is required."};try{let a=await o(),c=b.split("/")[0]?.replace(/^@/,"").toLowerCase(),d=a.publisherHandle?.replace(/^@/,"").toLowerCase();if(d&&c!==d)return{ok:!1,code:"forbidden",error:"You can only delete packages you own."};let{status:e,body:f}=await C(a=>j.s2(b,a));if(e>=200&&e<300)return{ok:!0};let g=f?.error||f?.message||"";if(401===e)return{ok:!1,code:"unauthorized",error:"Your registry session expired. Please log in again."};if(403===e)return{ok:!1,code:"forbidden",error:"You can only delete packages you own."};if(404===e)return{ok:!1,code:"not_found",error:g||"The package no longer exists."};if(400===e||422===e)return{ok:!1,code:"validation",error:g||"The registry rejected the package id."};if(0===e)return{ok:!1,code:"error",error:"Could not reach the package registry."};return{ok:!1,code:"error",error:g||`Registry responded with status ${e}.`}}catch(a){if(a instanceof B)return{ok:!1,code:"not_authenticated",error:"Sign in to the package registry before deleting a package."};return m.error("Unexpected error deleting package",a instanceof Error?a.message:a),{ok:!1,code:"error",error:"Unexpected error deleting package."}}}async function F(){let a=await (0,e.YM)(f.Z.REGISTRY_SETTINGS,{}),b=a?.baseUrl?.trim()||"";return{baseUrl:b||i.Qs,usingDefault:0===b.length,defaultUrl:i.Qs}}async function G(a){let b=(a||"").trim();if(b)try{let a=new URL(b);if("http:"!==a.protocol&&"https:"!==a.protocol)return{success:!1,message:"Registry URL must use http(s)."}}catch{return{success:!1,message:"Registry URL is not a valid URL."}}return await (0,e.VH)(f.Z.REGISTRY_SETTINGS,{baseUrl:b}),{success:!0}}},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}},21508:(a,b,c)=>{"use strict";c.d(b,{Qs:()=>d,oT:()=>f});let d="https://registry.flujo.com.co",e=["github","google"];function f(a){return"string"==typeof a&&e.includes(a)}},40829:(a,b,c)=>{"use strict";c.d(b,{GN:()=>l,Rs:()=>j,Tt:()=>k,eS:()=>n,hO:()=>i,nB:()=>h,yg:()=>m});var d=c(50846),e=c(73456),f=c(58739);let g=(0,d.h)("backend/services/model/encryption");async function h(a){g.debug("setEncryptionKey: Entering method"),g.warn("setEncryptionKey: This function is deprecated. Use initializeDefaultEncryption or initializeEncryption from secure.ts instead.");try{return{success:await (0,f.initializeDefaultEncryption)()}}catch(a){return g.warn("setEncryptionKey: Failed to set encryption key:",a),{success:!1,error:a instanceof Error?a.message:"Failed to set encryption key"}}}async function i(){g.debug("initializeDefaultEncryption: Entering method");try{let a=await (0,f.initializeDefaultEncryption)();return a?g.info("initializeDefaultEncryption: Default encryption initialized successfully"):g.error("initializeDefaultEncryption: Failed to initialize default encryption"),a}catch(a){return g.error("initializeDefaultEncryption: Failed to initialize default encryption:",a),!1}}async function j(a){g.debug("encryptApiKey: Entering method");try{if(!a||""===a.trim())return g.warn("encryptApiKey: Empty API key provided"),"";if(!await m()&&(g.warn("encryptApiKey: Encryption is not configured, initializing default encryption"),!await i()))return g.error("encryptApiKey: Failed to initialize default encryption"),`encrypted_failed:${a}`;let b=await (0,f.encryptWithPassword)(a);if(!b)return g.error("encryptApiKey: encryptWithPassword returned null"),`encrypted_failed:${a}`;return`encrypted:${b}`}catch(b){return g.error("encryptApiKey: Failed to encrypt API key:",b),`encrypted_failed:${a}`}}async function k(a){g.debug("decryptApiKey: Entering method");try{if(a&&a.startsWith("${global:"))return(await (0,e.resolveGlobalVars)({key:a})).key;if(a&&a.startsWith("encrypted_failed:"))return a.substring(17);let b=a?.startsWith("encrypted:")?a.substring(10):a;return await (0,f.decryptWithPassword)(b)}catch(a){return g.warn("decryptApiKey: Failed to decrypt API key:",a),null}}async function l(a){g.debug("resolveAndDecryptApiKey: Entering method");try{return await (0,e.G)(a)}catch(a){return g.warn("resolveAndDecryptApiKey: Failed to resolve or decrypt API key:",a),null}}async function m(){g.debug("isEncryptionConfigured: Entering method");try{return await (0,f.isEncryptionInitialized)()}catch(a){return g.warn("isEncryptionConfigured: Failed to check encryption status:",a),!1}}async function n(){g.debug("isUserEncryptionEnabled: Entering method");try{return await (0,f.isUserEncryptionEnabled)()}catch(a){return g.warn("isUserEncryptionEnabled: Failed to check user encryption status:",a),!1}}},49680:(a,b,c)=>{"use strict";c.d(b,{RJ:()=>e,gF:()=>d});let d="masked:********",e="********"},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}})},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:()=>m,V:()=>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,b={}){j.debug("Entering resolveGlobalVars method");let c=!1!==b.resolveSecrets,d=await (0,f.YM)(g.Z.GLOBAL_ENV_VARS,{}),e=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}(d);j.debug(`Loaded ${Object.keys(d).length} global environment variables (${e?"new":"old"} format)`);let i={},l=new Set;if(e)for(let[a,b]of Object.entries(d))i[a]=b.value,b.metadata.isSecret&&l.add(a);else i={...d};let m=async a=>{let b=a.match(/\$\{global:([^}]+)\}/g);if(!b)return a;let d=a;for(let a of b){let b=a.substring(9,a.length-1);if(void 0!==i[b]){let e=i[b];if(!c&&(l.has(b)||e.startsWith("encrypted:")||e.startsWith("encrypted_failed:"))){j.debug(`Keeping secret global variable unresolved: ${b}`);continue}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}`),d=d.replace(a,e)}else j.warn(`Global variable not found: ${b}`)}return d},n=async a=>{if("string"==typeof a)return await m(a);if(Array.isArray(a))return await Promise.all(a.map(a=>n(a)));if(null!==a&&"object"==typeof a){let b={};for(let[c,d]of Object.entries(a))b[c]=await n(d);return b}return a},o=await n(a);return"object"==typeof a&&null!==a&&j.debug("Resolved global variables result:",JSON.stringify(o,null,2)),j.debug("Completed global variable resolution"),o}async function l(a){return k(a,{resolveSecrets:!1})}async function m(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`),m(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,m]),(0,d.A)(k,"605caa1e030009a4bc7e820854ff481d3e0295325d",null),(0,d.A)(l,"4003ce37366709f5add0c98a6e32e47a1006fd7c7d",null),(0,d.A)(m,"6061ed6d99a98b5d9f5d2d15065caab0a27d6a8987",null)},75879:(a,b,c)=>{"use strict";Object.defineProperty(b,"A",{enumerable:!0,get:function(){return d.registerServerReference}});let d=c(97954)},78335:()=>{},80233:(a,b,c)=>{"use strict";c.d(b,{$5:()=>p,Nb:()=>s,Ow:()=>r,Tr:()=>x,Wz:()=>w,eo:()=>u,iD:()=>q,s2:()=>v,sB:()=>n,uJ:()=>j,w2:()=>t,wf:()=>o});var d=c(50846),e=c(92372),f=c(38844),g=c(21508);let h=(0,d.h)("backend/utils/packageRegistryClient");function i(a){return a.trim().replace(/\/+$/,"")}async function j(){let a=process.env.FLUJO_REGISTRY_BASE_URL?.trim();if(a)return i(a);let b=await (0,e.YM)(f.Z.REGISTRY_SETTINGS,{});return b?.baseUrl&&b.baseUrl.trim()?i(b.baseUrl):i(g.Qs)}async function k(a,b,c){let d=await j(),e=`${d}${a}`,f=new AbortController,g=setTimeout(()=>f.abort(),2e4);try{let d={"Content-Type":"application/json",Accept:"application/json"};c&&(d.Authorization=`Bearer ${c}`),h.info(`POST ${a}`);let g=await fetch(e,{method:"POST",headers:d,body:JSON.stringify(b??{}),signal:f.signal,cache:"no-store"}),i=await g.text(),j=null;if(i)try{j=JSON.parse(i)}catch{j={message:i}}return{status:g.status,body:j}}catch(b){return h.warn(`POST ${a} failed at transport level`,b instanceof Error?b.message:b),{status:0,body:{message:"Could not reach the package registry."}}}finally{clearTimeout(g)}}async function l(a){let b=await j(),c=`${b}${a}`,d=new AbortController,e=setTimeout(()=>d.abort(),2e4);try{h.info(`GET ${a}`);let b=await fetch(c,{headers:{Accept:"application/json"},signal:d.signal,cache:"no-store"}),e=await b.text(),f=null;if(e)try{f=JSON.parse(e)}catch{f={message:e}}return{status:b.status,body:f}}catch(b){return h.warn(`GET ${a} failed at transport level`,b instanceof Error?b.message:b),{status:0,body:{message:"Could not reach the package registry."}}}finally{clearTimeout(e)}}async function m(a,b){let c=await j(),d=`${c}${a}`,e=new AbortController,f=setTimeout(()=>e.abort(),2e4);try{h.info(`DELETE ${a}`);let c=await fetch(d,{method:"DELETE",headers:{Accept:"application/json",Authorization:`Bearer ${b}`},signal:e.signal,cache:"no-store"}),f=await c.text(),g=null;if(f)try{g=JSON.parse(f)}catch{g={message:f}}return{status:c.status,body:g}}catch(b){return h.warn(`DELETE ${a} failed at transport level`,b instanceof Error?b.message:b),{status:0,body:{message:"Could not reach the package registry."}}}finally{clearTimeout(f)}}function n(a){let b=new URLSearchParams;a.q&&b.set("q",a.q),a.tag&&b.set("tag",a.tag),a.page&&b.set("page",String(a.page)),a.pageSize&&b.set("pageSize",String(a.pageSize));let c=b.toString()?`?${b.toString()}`:"";return l(`/v1/packages${c}`)}function o(a,b="latest"){return l(`/v1/packages/${encodeURIComponent(a)}/versions/${encodeURIComponent(b)}/manifest`)}function p(a,b,c){return k("/v1/auth/signup",{email:a,password:b,handle:c})}function q(a,b){return k("/v1/auth/login",{email:a,password:b})}function r(a){return k("/v1/auth/refresh",{refresh_token:a})}function s(a){return k("/v1/auth/resend-confirmation",{email:a})}function t(a){return k("/v1/auth/forgot-password",{email:a})}function u(a,b){return k("/v1/packages",a,b)}function v(a,b){return m(`/v1/packages/${encodeURIComponent(a)}`,b)}function w(a,b){return k("/v1/feedback",{notice:a,rating:b})}function x(a){return k("/v1/auth/oauth/token",{code:a.code,code_verifier:a.codeVerifier,redirect_uri:a.redirectUri,provider:a.provider})}},91959:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"4003ce37366709f5add0c98a6e32e47a1006fd7c7d":()=>d.V,"605caa1e030009a4bc7e820854ff481d3e0295325d":()=>d.resolveGlobalVars,"6061ed6d99a98b5d9f5d2d15065caab0a27d6a8987":()=>d.G});var d=c(73456)},96487:()=>{}};
@@ -19,7 +19,6 @@ NODE TYPES:
19
19
  "maxTurns": 20, // optional; per-step cap on agentic tool-loop turns (retry-until-done in ONE node). Unset = model/system default (50)
20
20
  "allowedTools": ["tool_a"], // optional; step-level tool allowlist (independent of servers[].tools)
21
21
  "captureVariable": "NAME", // optional; save this step's output into a run variable other steps inject with \${var:NAME}
22
- "captureResource": "NAME", // optional; ALSO save this step's output as a tracked run resource other steps inject with \${res:NAME} (see rule 9b)
23
22
  "captureKv": "NAME", // optional; ALSO save this step's output to a PERSISTENT cross-run key other steps inject with \${kv:NAME} (see rule 9d)
24
23
  "excludeModelPrompt": true|false, // optional; drop the model's base prompt
25
24
  "excludeStartNodePrompt": true|false, // optional; drop the start node's prompt for this step
@@ -71,8 +70,8 @@ RULES:
71
70
  7d. For AUTHOR-DEFINED spawning — a fixed set of parallel briefs for ONE sub-agent — give the subflow node "spawnBriefs": ["...", "..."]. Every visit runs the single child once per brief, concurrently (same pool/tuning as parallel). Each brief may inject \${var:NAME}/\${res:NAME}/\${kv:NAME}. With inputMode "isolated" the brief is the lane's whole prompt; with history modes each lane sees the conversation plus its brief as the closing instruction. Mutually exclusive with "parallelFlows"/"parallelSubflowSpecs"/"mapOverList"; needs a single child ("flow"/"subflowSpec").
72
71
  8. A subflow node may instead run its SINGLE child flow ONCE PER ITEM via "mapOverList": true. The input is split into items by "itemSplit" ("json-array" default, or "lines"), each item is sent to its own child run, and the per-item outputs are joined (same pool/tuning as parallel). Use "sequential": true to run items in order. Mutually exclusive with "parallelFlows"/"parallelSubflowSpecs".
73
72
  9. Named variables (scratchpad): a step can save its output with "captureVariable": "NAME" (process or subflow) and any LATER step injects it with \${var:NAME} inside its "prompt" / "isolatedPrompt" / subflow prompt. This survives "latest-message"/"isolated" scoping, unlike conversation history — use it to carry a todo list, a file path, a diff, or a captured result across steps that don't share history. \${var:NAME} is run-scoped and plaintext; it is DISTINCT from \${global:VAR} (configured secrets/config, resolved only for tool args). Capture a subflow's output on the PARENT subflow node — a variable set inside a child flow is not visible to the parent.
74
- 9b. Run resources (tracked data): "captureResource": "NAME" (process or subflow) ALSO saves the step's output as a run-scoped RESOURCE — an addressable artifact (flujo://run/... URI) with lineage (which step produced it, which steps read it), readable via the built-in "flujo" MCP server. A later step injects it with \${res:NAME} exactly like \${var:NAME}. Prefer "captureVariable" for short strings; use "captureResource" when the output is a large document/report/dataset worth tracking, or when other tools/agents should be able to read it back. Large or binary MCP tool results (screenshots, files) are auto-captured as run resources without any spec field.
75
- 9c. Resource nodes are OPTIONAL/advanced — most flows should not use them; prefer rule 9b's captureResource/\${res:NAME}. Emit one only when the data artifact itself should be VISIBLE in the graph: an edge resource→process means the step READS the artifact (its contents are injected into the step's context); process→resource means the step's output is SAVED to it (run artifacts only, equivalent to captureResource with the node's runName). Resource edges are data wiring, not flow control — they never carry conditions and don't count as a step's successor.
73
+ 9b. Run resources (tracked data): a SUBFLOW may use "captureResource": "NAME" because its folded child output is a concrete result. A PROCESS must use an explicit Resource node: process→resource arms write_resource so the process writes the full artifact; resource→process injects it into a reader with \${res:NAME}. Do not put passive captureResource on a process node. Large or binary MCP tool results are auto-captured as run resources without any spec field.
74
+ 9c. Resource nodes are OPTIONAL/advanced — most flows should use conversation history. Resource edges are data wiring, not flow control: they never carry conditions and do not count as a step's successor.
76
75
  9d. Persistent state (cross-run): "captureKv": "NAME" (process or subflow) saves the step's output to a PERSISTENT key-value store that SURVIVES ACROSS RUNS, injected by any step with \${kv:NAME}. Unlike \${var:} / \${res:} (discarded when the run ends), \${kv:} is what a long-lived SCHEDULED flow uses to carry a loop counter, a pagination cursor, a last-seen id, or a flag to its NEXT run. By default a key lives on the flow's FOLDER board (flows in the same folder share it); prefix the name to change scope: "flow/NAME" (this flow only) or "global/NAME" (whole instance). Plaintext, never secrets (distinct from \${global:VAR}). A model can also read/update a key mid-run via the built-in "flujo" server's kv_get / kv_set tools.
77
76
  10. Keep flows minimal — only the steps the task needs. Write clear, specific prompts and labels; fill "description" on process nodes.
78
77
  11. Signals (fire-and-forget events): a "signal" node is a deterministic pass-through that, when the path reaches it, emits an event {topic, payload} onto the flow-run event bus and then continues to its successor unchanged (it never calls a model or touches the conversation). Use it when the flow should notify or kick off ANOTHER flow mid-run — a flow-event trigger configured elsewhere listens for the same "topic" (e.g. "when the review finds blockers, emit a review-blocked signal"). Always give it a "topic" (a signal with no topic emits nothing); "payloadTemplate" is the optional event body and may inject \${var:NAME}. Make emission conditional by putting a conditioned edge (rule 5b) INTO the signal node.