flujo-ai 3.44.0 → 3.45.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 (386) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +7 -7
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/react-loadable-manifest.json +1 -1
  5. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  6. package/.next/server/app/_global-error.html +1 -1
  7. package/.next/server/app/_global-error.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  15. package/.next/server/app/_not-found.html +1 -1
  16. package/.next/server/app/_not-found.rsc +2 -2
  17. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  18. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  20. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  21. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  22. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  23. package/.next/server/app/api/approvals/[id]/route.js +1 -1
  24. package/.next/server/app/api/approvals/[id]/route.js.nft.json +1 -1
  25. package/.next/server/app/api/approvals/route.js +1 -1
  26. package/.next/server/app/api/approvals/route.js.nft.json +1 -1
  27. package/.next/server/app/api/backup/route.js.nft.json +1 -1
  28. package/.next/server/app/api/bugs/enhance/route.js +1 -1
  29. package/.next/server/app/api/bugs/enhance/route.js.nft.json +1 -1
  30. package/.next/server/app/api/encryption/secure/route.js +1 -1
  31. package/.next/server/app/api/encryption/secure/route.js.nft.json +1 -1
  32. package/.next/server/app/api/flow/[id]/convert-process-to-subflow/route.js.nft.json +1 -1
  33. package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -1
  34. package/.next/server/app/api/flow/[id]/versions/[versionId]/route.js.nft.json +1 -1
  35. package/.next/server/app/api/flow/[id]/versions/route.js.nft.json +1 -1
  36. package/.next/server/app/api/flow/assist/route.js +1 -1
  37. package/.next/server/app/api/flow/assist/route.js.nft.json +1 -1
  38. package/.next/server/app/api/flow/compile/route.js +1 -1
  39. package/.next/server/app/api/flow/compile/route.js.nft.json +1 -1
  40. package/.next/server/app/api/flow/generate/route.js +1 -1
  41. package/.next/server/app/api/flow/generate/route.js.nft.json +1 -1
  42. package/.next/server/app/api/flow/generate/visual/route.js +2 -2
  43. package/.next/server/app/api/flow/generate/visual/route.js.nft.json +1 -1
  44. package/.next/server/app/api/flow/generator/route.js +1 -1
  45. package/.next/server/app/api/flow/generator/route.js.nft.json +1 -1
  46. package/.next/server/app/api/flow/improve/route.js +1 -1
  47. package/.next/server/app/api/flow/improve/route.js.nft.json +1 -1
  48. package/.next/server/app/api/flow/prompt-renderer/route.js +1 -1
  49. package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
  50. package/.next/server/app/api/flow/quick-chat/route.js +1 -1
  51. package/.next/server/app/api/flow/quick-chat/route.js.nft.json +1 -1
  52. package/.next/server/app/api/flow/repair/route.js +1 -1
  53. package/.next/server/app/api/flow/repair/route.js.nft.json +1 -1
  54. package/.next/server/app/api/flow/route.js.nft.json +1 -1
  55. package/.next/server/app/api/init/route.js +1 -1
  56. package/.next/server/app/api/init/route.js.nft.json +1 -1
  57. package/.next/server/app/api/mcp/app-consent/route.js +1 -1
  58. package/.next/server/app/api/mcp/app-consent/route.js.nft.json +1 -1
  59. package/.next/server/app/api/mcp/app-sandbox/route.js +2 -2
  60. package/.next/server/app/api/mcp/app-sandbox/route.js.nft.json +1 -1
  61. package/.next/server/app/api/mcp/assistant/route.js +1 -1
  62. package/.next/server/app/api/mcp/assistant/route.js.nft.json +1 -1
  63. package/.next/server/app/api/mcp/cancel/route.js +1 -1
  64. package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -1
  65. package/.next/server/app/api/mcp/flujo/authoring/route.js +1 -1
  66. package/.next/server/app/api/mcp/flujo/authoring/route.js.nft.json +1 -1
  67. package/.next/server/app/api/mcp/flujo/automation/route.js +1 -1
  68. package/.next/server/app/api/mcp/flujo/automation/route.js.nft.json +1 -1
  69. package/.next/server/app/api/mcp/flujo/flows/route.js +1 -1
  70. package/.next/server/app/api/mcp/flujo/flows/route.js.nft.json +1 -1
  71. package/.next/server/app/api/mcp/flujo/resources/read/route.js +1 -1
  72. package/.next/server/app/api/mcp/flujo/resources/read/route.js.nft.json +1 -1
  73. package/.next/server/app/api/mcp/flujo/resources/route.js +1 -1
  74. package/.next/server/app/api/mcp/flujo/resources/route.js.nft.json +1 -1
  75. package/.next/server/app/api/mcp/flujo/servers/route.js +1 -1
  76. package/.next/server/app/api/mcp/flujo/servers/route.js.nft.json +1 -1
  77. package/.next/server/app/api/mcp/flujo/state/route.js +1 -1
  78. package/.next/server/app/api/mcp/flujo/state/route.js.nft.json +1 -1
  79. package/.next/server/app/api/mcp/flujo/tools/route.js +1 -1
  80. package/.next/server/app/api/mcp/flujo/tools/route.js.nft.json +1 -1
  81. package/.next/server/app/api/mcp/oauth-capability/route.js +1 -1
  82. package/.next/server/app/api/mcp/oauth-capability/route.js.nft.json +1 -1
  83. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js +1 -1
  84. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -1
  85. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js +1 -1
  86. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -1
  87. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js +1 -1
  88. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -1
  89. package/.next/server/app/api/mcp/servers/[name]/resources/route.js +1 -1
  90. package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -1
  91. package/.next/server/app/api/mcp/servers/[name]/route.js +1 -1
  92. package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -1
  93. package/.next/server/app/api/mcp/servers/[name]/status/route.js +1 -1
  94. package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -1
  95. package/.next/server/app/api/mcp/servers/[name]/stdio-oauth/confirm/route.js +1 -1
  96. package/.next/server/app/api/mcp/servers/[name]/stdio-oauth/confirm/route.js.nft.json +1 -1
  97. package/.next/server/app/api/mcp/servers/[name]/stdio-oauth/start/route.js +1 -1
  98. package/.next/server/app/api/mcp/servers/[name]/stdio-oauth/start/route.js.nft.json +1 -1
  99. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js +1 -1
  100. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -1
  101. package/.next/server/app/api/mcp/servers/[name]/tools/route.js +1 -1
  102. package/.next/server/app/api/mcp/servers/[name]/tools/route.js.nft.json +1 -1
  103. package/.next/server/app/api/mcp/servers/route.js +1 -1
  104. package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
  105. package/.next/server/app/api/mcp/test-connection/route.js +1 -1
  106. package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -1
  107. package/.next/server/app/api/mcp/test-connection/stream/route.js +1 -1
  108. package/.next/server/app/api/mcp/test-connection/stream/route.js.nft.json +1 -1
  109. package/.next/server/app/api/mcp-registry/route.js +1 -1
  110. package/.next/server/app/api/mcp-registry/route.js.nft.json +1 -1
  111. package/.next/server/app/api/model/[id]/route.js +1 -1
  112. package/.next/server/app/api/model/[id]/route.js.nft.json +1 -1
  113. package/.next/server/app/api/model/provider/route.js +1 -1
  114. package/.next/server/app/api/model/provider/route.js.nft.json +1 -1
  115. package/.next/server/app/api/model/route.js +1 -1
  116. package/.next/server/app/api/model/route.js.nft.json +1 -1
  117. package/.next/server/app/api/model/test/route.js +1 -1
  118. package/.next/server/app/api/model/test/route.js.nft.json +1 -1
  119. package/.next/server/app/api/oauth/reset/route.js +1 -1
  120. package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -1
  121. package/.next/server/app/api/packages/build/route.js.nft.json +1 -1
  122. package/.next/server/app/api/packages/derive-secrets/route.js.nft.json +1 -1
  123. package/.next/server/app/api/packages/install/route.js +1 -1
  124. package/.next/server/app/api/packages/install/route.js.nft.json +1 -1
  125. package/.next/server/app/api/packages/install/status/route.js +1 -1
  126. package/.next/server/app/api/packages/install/status/route.js.nft.json +1 -1
  127. package/.next/server/app/api/packages/installed/route.js +1 -1
  128. package/.next/server/app/api/packages/installed/route.js.nft.json +1 -1
  129. package/.next/server/app/api/packages/resolve/route.js.nft.json +1 -1
  130. package/.next/server/app/api/packages/scan-targets/route.js.nft.json +1 -1
  131. package/.next/server/app/api/packages/uninstall/route.js +1 -1
  132. package/.next/server/app/api/packages/uninstall/route.js.nft.json +1 -1
  133. package/.next/server/app/api/planned-executions/[id]/route.js.nft.json +1 -1
  134. package/.next/server/app/api/planned-executions/[id]/run/route.js.nft.json +1 -1
  135. package/.next/server/app/api/planned-executions/[id]/runs/route.js.nft.json +1 -1
  136. package/.next/server/app/api/planned-executions/reconcile/route.js +1 -1
  137. package/.next/server/app/api/planned-executions/reconcile/route.js.nft.json +1 -1
  138. package/.next/server/app/api/planned-executions/route.js +1 -1
  139. package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
  140. package/.next/server/app/api/restore/route.js.nft.json +1 -1
  141. package/.next/server/app/api/runs/active/route.js +1 -1
  142. package/.next/server/app/api/runs/active/route.js.nft.json +1 -1
  143. package/.next/server/app/api/telemetry/daily-active/route.js +1 -1
  144. package/.next/server/app/api/waves/route.js +1 -1
  145. package/.next/server/app/api/waves/route.js.nft.json +1 -1
  146. package/.next/server/app/api/webhooks/[id]/route.js +1 -1
  147. package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
  148. package/.next/server/app/automation/triggers/page_client-reference-manifest.js +1 -1
  149. package/.next/server/app/automation/triggers.html +1 -1
  150. package/.next/server/app/automation/triggers.rsc +3 -3
  151. package/.next/server/app/automation/triggers.segments/_full.segment.rsc +3 -3
  152. package/.next/server/app/automation/triggers.segments/_head.segment.rsc +1 -1
  153. package/.next/server/app/automation/triggers.segments/_index.segment.rsc +2 -2
  154. package/.next/server/app/automation/triggers.segments/_tree.segment.rsc +1 -1
  155. package/.next/server/app/automation/triggers.segments/automation/triggers/__PAGE__.segment.rsc +2 -2
  156. package/.next/server/app/automation/triggers.segments/automation/triggers.segment.rsc +1 -1
  157. package/.next/server/app/automation/triggers.segments/automation.segment.rsc +1 -1
  158. package/.next/server/app/automation/waves/page_client-reference-manifest.js +1 -1
  159. package/.next/server/app/automation/waves.html +1 -1
  160. package/.next/server/app/automation/waves.rsc +3 -3
  161. package/.next/server/app/automation/waves.segments/_full.segment.rsc +3 -3
  162. package/.next/server/app/automation/waves.segments/_head.segment.rsc +1 -1
  163. package/.next/server/app/automation/waves.segments/_index.segment.rsc +2 -2
  164. package/.next/server/app/automation/waves.segments/_tree.segment.rsc +1 -1
  165. package/.next/server/app/automation/waves.segments/automation/waves/__PAGE__.segment.rsc +2 -2
  166. package/.next/server/app/automation/waves.segments/automation/waves.segment.rsc +1 -1
  167. package/.next/server/app/automation/waves.segments/automation.segment.rsc +1 -1
  168. package/.next/server/app/chain-chat/page_client-reference-manifest.js +1 -1
  169. package/.next/server/app/chain-chat.html +1 -1
  170. package/.next/server/app/chain-chat.rsc +3 -3
  171. package/.next/server/app/chain-chat.segments/_full.segment.rsc +3 -3
  172. package/.next/server/app/chain-chat.segments/_head.segment.rsc +1 -1
  173. package/.next/server/app/chain-chat.segments/_index.segment.rsc +2 -2
  174. package/.next/server/app/chain-chat.segments/_tree.segment.rsc +1 -1
  175. package/.next/server/app/chain-chat.segments/chain-chat/__PAGE__.segment.rsc +2 -2
  176. package/.next/server/app/chain-chat.segments/chain-chat.segment.rsc +1 -1
  177. package/.next/server/app/chat/page.js +4 -4
  178. package/.next/server/app/chat/page.js.nft.json +1 -1
  179. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  180. package/.next/server/app/chat.html +1 -1
  181. package/.next/server/app/chat.rsc +3 -3
  182. package/.next/server/app/chat.segments/_full.segment.rsc +3 -3
  183. package/.next/server/app/chat.segments/_head.segment.rsc +1 -1
  184. package/.next/server/app/chat.segments/_index.segment.rsc +2 -2
  185. package/.next/server/app/chat.segments/_tree.segment.rsc +1 -1
  186. package/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +2 -2
  187. package/.next/server/app/chat.segments/chat.segment.rsc +1 -1
  188. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  189. package/.next/server/app/docs.html +1 -1
  190. package/.next/server/app/docs.rsc +3 -3
  191. package/.next/server/app/docs.segments/_full.segment.rsc +3 -3
  192. package/.next/server/app/docs.segments/_head.segment.rsc +1 -1
  193. package/.next/server/app/docs.segments/_index.segment.rsc +2 -2
  194. package/.next/server/app/docs.segments/_tree.segment.rsc +1 -1
  195. package/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +2 -2
  196. package/.next/server/app/docs.segments/docs.segment.rsc +1 -1
  197. package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
  198. package/.next/server/app/executions.html +1 -1
  199. package/.next/server/app/executions.rsc +3 -3
  200. package/.next/server/app/executions.segments/_full.segment.rsc +3 -3
  201. package/.next/server/app/executions.segments/_head.segment.rsc +1 -1
  202. package/.next/server/app/executions.segments/_index.segment.rsc +2 -2
  203. package/.next/server/app/executions.segments/_tree.segment.rsc +1 -1
  204. package/.next/server/app/executions.segments/executions/__PAGE__.segment.rsc +2 -2
  205. package/.next/server/app/executions.segments/executions.segment.rsc +1 -1
  206. package/.next/server/app/flows/page.js +5 -5
  207. package/.next/server/app/flows/page.js.nft.json +1 -1
  208. package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
  209. package/.next/server/app/flows.html +1 -1
  210. package/.next/server/app/flows.rsc +3 -3
  211. package/.next/server/app/flows.segments/_full.segment.rsc +3 -3
  212. package/.next/server/app/flows.segments/_head.segment.rsc +1 -1
  213. package/.next/server/app/flows.segments/_index.segment.rsc +2 -2
  214. package/.next/server/app/flows.segments/_tree.segment.rsc +1 -1
  215. package/.next/server/app/flows.segments/flows/__PAGE__.segment.rsc +2 -2
  216. package/.next/server/app/flows.segments/flows.segment.rsc +1 -1
  217. package/.next/server/app/index.html +1 -1
  218. package/.next/server/app/index.rsc +3 -3
  219. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  220. package/.next/server/app/index.segments/_full.segment.rsc +3 -3
  221. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  222. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  223. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  224. package/.next/server/app/mcp/page.js +1 -1
  225. package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
  226. package/.next/server/app/mcp-flows/route.js +1 -1
  227. package/.next/server/app/mcp-flows/route.js.nft.json +1 -1
  228. package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
  229. package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -1
  230. package/.next/server/app/mcp.html +1 -1
  231. package/.next/server/app/mcp.rsc +3 -3
  232. package/.next/server/app/mcp.segments/_full.segment.rsc +3 -3
  233. package/.next/server/app/mcp.segments/_head.segment.rsc +1 -1
  234. package/.next/server/app/mcp.segments/_index.segment.rsc +2 -2
  235. package/.next/server/app/mcp.segments/_tree.segment.rsc +1 -1
  236. package/.next/server/app/mcp.segments/mcp/__PAGE__.segment.rsc +2 -2
  237. package/.next/server/app/mcp.segments/mcp.segment.rsc +1 -1
  238. package/.next/server/app/meetings/page_client-reference-manifest.js +1 -1
  239. package/.next/server/app/meetings.html +1 -1
  240. package/.next/server/app/meetings.rsc +3 -3
  241. package/.next/server/app/meetings.segments/_full.segment.rsc +3 -3
  242. package/.next/server/app/meetings.segments/_head.segment.rsc +1 -1
  243. package/.next/server/app/meetings.segments/_index.segment.rsc +2 -2
  244. package/.next/server/app/meetings.segments/_tree.segment.rsc +1 -1
  245. package/.next/server/app/meetings.segments/meetings/__PAGE__.segment.rsc +2 -2
  246. package/.next/server/app/meetings.segments/meetings.segment.rsc +1 -1
  247. package/.next/server/app/models/page.js +3 -3
  248. package/.next/server/app/models/page_client-reference-manifest.js +1 -1
  249. package/.next/server/app/packages/page_client-reference-manifest.js +1 -1
  250. package/.next/server/app/packages.html +1 -1
  251. package/.next/server/app/packages.rsc +3 -3
  252. package/.next/server/app/packages.segments/_full.segment.rsc +3 -3
  253. package/.next/server/app/packages.segments/_head.segment.rsc +1 -1
  254. package/.next/server/app/packages.segments/_index.segment.rsc +2 -2
  255. package/.next/server/app/packages.segments/_tree.segment.rsc +1 -1
  256. package/.next/server/app/packages.segments/packages/__PAGE__.segment.rsc +2 -2
  257. package/.next/server/app/packages.segments/packages.segment.rsc +1 -1
  258. package/.next/server/app/page_client-reference-manifest.js +1 -1
  259. package/.next/server/app/settings/page.js +2 -2
  260. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  261. package/.next/server/app/settings.html +1 -1
  262. package/.next/server/app/settings.rsc +3 -3
  263. package/.next/server/app/settings.segments/_full.segment.rsc +3 -3
  264. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  265. package/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  266. package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  267. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
  268. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  269. package/.next/server/app/statistics/page_client-reference-manifest.js +1 -1
  270. package/.next/server/app/statistics.html +1 -1
  271. package/.next/server/app/statistics.rsc +3 -3
  272. package/.next/server/app/statistics.segments/_full.segment.rsc +3 -3
  273. package/.next/server/app/statistics.segments/_head.segment.rsc +1 -1
  274. package/.next/server/app/statistics.segments/_index.segment.rsc +2 -2
  275. package/.next/server/app/statistics.segments/_tree.segment.rsc +1 -1
  276. package/.next/server/app/statistics.segments/statistics/__PAGE__.segment.rsc +2 -2
  277. package/.next/server/app/statistics.segments/statistics.segment.rsc +1 -1
  278. package/.next/server/app/v1/chat/completions/route.js +1 -1
  279. package/.next/server/app/v1/chat/completions/route.js.nft.json +1 -1
  280. package/.next/server/app/v1/chat/conversation-chains/route.js +1 -1
  281. package/.next/server/app/v1/chat/conversation-chains/route.js.nft.json +1 -1
  282. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +1 -1
  283. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -1
  284. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +1 -1
  285. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -1
  286. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/attach/route.js +1 -1
  287. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/attach/route.js.nft.json +1 -1
  288. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -1
  289. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -1
  290. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/state/route.js +1 -1
  291. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/state/route.js.nft.json +1 -1
  292. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -1
  293. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -1
  294. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +1 -1
  295. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -1
  296. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +1 -1
  297. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -1
  298. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js +1 -1
  299. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js.nft.json +1 -1
  300. package/.next/server/app/v1/chat/conversations/[conversationId]/recovery/route.js +1 -1
  301. package/.next/server/app/v1/chat/conversations/[conversationId]/recovery/route.js.nft.json +1 -1
  302. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
  303. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
  304. package/.next/server/app/v1/chat/conversations/[conversationId]/revert/route.js +1 -1
  305. package/.next/server/app/v1/chat/conversations/[conversationId]/revert/route.js.nft.json +1 -1
  306. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +1 -1
  307. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -1
  308. package/.next/server/app/v1/chat/conversations/route.js +1 -1
  309. package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
  310. package/.next/server/app/v1/chat/events/route.js +1 -1
  311. package/.next/server/app/v1/chat/events/route.js.nft.json +1 -1
  312. package/.next/server/app/v1/meetings/[meetingId]/cancel/route.js +1 -1
  313. package/.next/server/app/v1/meetings/[meetingId]/cancel/route.js.nft.json +1 -1
  314. package/.next/server/app/v1/meetings/[meetingId]/route.js +1 -1
  315. package/.next/server/app/v1/meetings/[meetingId]/route.js.nft.json +1 -1
  316. package/.next/server/app/v1/meetings/[meetingId]/start/route.js +1 -1
  317. package/.next/server/app/v1/meetings/[meetingId]/start/route.js.nft.json +1 -1
  318. package/.next/server/app/v1/meetings/route.js +1 -1
  319. package/.next/server/app/v1/meetings/route.js.nft.json +1 -1
  320. package/.next/server/app/v1/models/route.js +1 -1
  321. package/.next/server/app/v1/models/route.js.nft.json +1 -1
  322. package/.next/server/app/waves/page_client-reference-manifest.js +1 -1
  323. package/.next/server/app/waves.html +1 -1
  324. package/.next/server/app/waves.rsc +3 -3
  325. package/.next/server/app/waves.segments/_full.segment.rsc +3 -3
  326. package/.next/server/app/waves.segments/_head.segment.rsc +1 -1
  327. package/.next/server/app/waves.segments/_index.segment.rsc +2 -2
  328. package/.next/server/app/waves.segments/_tree.segment.rsc +1 -1
  329. package/.next/server/app/waves.segments/waves/__PAGE__.segment.rsc +2 -2
  330. package/.next/server/app/waves.segments/waves.segment.rsc +1 -1
  331. package/.next/server/app-paths-manifest.json +7 -7
  332. package/.next/server/chunks/1114.js +1 -1
  333. package/.next/server/chunks/{4271.js → 2126.js} +13 -13
  334. package/.next/server/chunks/2425.js +1 -1
  335. package/.next/server/chunks/244.js +1 -1
  336. package/.next/server/chunks/2728.js +1 -1
  337. package/.next/server/chunks/2970.js +1 -1
  338. package/.next/server/chunks/3133.js +2 -2
  339. package/.next/server/chunks/4558.js +1 -1
  340. package/.next/server/chunks/4779.js +1 -0
  341. package/.next/server/chunks/531.js +1 -1
  342. package/.next/server/chunks/5354.js +1 -1
  343. package/.next/server/chunks/5831.js +1 -1
  344. package/.next/server/chunks/609.js +1 -1
  345. package/.next/server/chunks/75.js +1 -1
  346. package/.next/server/chunks/7513.js +1 -1
  347. package/.next/server/chunks/7754.js +60 -60
  348. package/.next/server/chunks/811.js +1 -1
  349. package/.next/server/chunks/8542.js +1 -1
  350. package/.next/server/chunks/87.js +1 -1
  351. package/.next/server/chunks/8767.js +1 -1
  352. package/.next/server/middleware-build-manifest.js +1 -1
  353. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  354. package/.next/server/pages/404.html +1 -1
  355. package/.next/server/pages/500.html +1 -1
  356. package/.next/server/server-reference-manifest.js +1 -1
  357. package/.next/server/server-reference-manifest.json +1 -1
  358. package/.next/static/chunks/{8851-1ea4bbf9945c7b34.js → 2375-af6ebf80d9cb9975.js} +2 -2
  359. package/.next/static/chunks/{4742-e151939b0ae7ba74.js → 3841-0e4a10c621cac0e6.js} +1 -1
  360. package/.next/static/chunks/{5147-d239d0147237bb58.js → 5147-ec07dd70c20ec0b5.js} +1 -1
  361. package/.next/static/chunks/5212-898f308c44a32c22.js +2 -0
  362. package/.next/static/chunks/7401-cffc7c5fa1f5f06e.js +10 -0
  363. package/.next/static/chunks/app/chat/page-5b6d507b576cea9c.js +7 -0
  364. package/.next/static/chunks/app/flows/page-9b16d049d43ac817.js +9 -0
  365. package/.next/static/chunks/app/mcp/{page-70535f4bce57edbe.js → page-e4c284466c17fe32.js} +1 -1
  366. package/.next/static/chunks/app/models/page-2891efa80c126790.js +11 -0
  367. package/.next/static/chunks/{webpack-7efb2620f630c7d5.js → webpack-d9f1e56ee69d988f.js} +1 -1
  368. package/.next/trace +104 -104
  369. package/.next/trace-build +1 -1
  370. package/README.md +6 -3
  371. package/mcp-servers/bash/package.json +1 -1
  372. package/mcp-servers/browser/dist/resources.js +29 -3
  373. package/mcp-servers/browser/dist/resources.js.map +1 -1
  374. package/mcp-servers/browser/package.json +1 -1
  375. package/mcp-servers/filesystem/dist/resources.js +1 -1
  376. package/mcp-servers/filesystem/package.json +1 -1
  377. package/mcp-servers/flujo/package.json +1 -1
  378. package/package.json +5 -5
  379. package/.next/server/chunks/387.js +0 -1
  380. package/.next/static/chunks/5212-fa397222d5251b43.js +0 -2
  381. package/.next/static/chunks/7401-b0f0d4a7b2597302.js +0 -10
  382. package/.next/static/chunks/app/chat/page-3db891cc7ba29084.js +0 -7
  383. package/.next/static/chunks/app/flows/page-6b6748bc74604103.js +0 -9
  384. package/.next/static/chunks/app/models/page-e3430501cd05ff1f.js +0 -11
  385. /package/.next/static/{yjYCceqlIl4V9blcEb5AK → 4x_Vc1-WtJtqgqFZnCq3D}/_buildManifest.js +0 -0
  386. /package/.next/static/{yjYCceqlIl4V9blcEb5AK → 4x_Vc1-WtJtqgqFZnCq3D}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=811,exports.ids=[811,3099,4321,5111,6702,7492],exports.modules={17492:(a,b,c)=>{c.d(b,{Hm:()=>f,xc:()=>e});let d=["key","secret","token","password"],e=a=>d.some(b=>a.toLowerCase().includes(b)),f=a=>e(a)||"authorization"===a.trim().toLowerCase()},46702:(a,b,c)=>{c.d(b,{eh:()=>i,ru:()=>g});var d=c(66844),e=c(7986);let f=(0,d.h)("backend/services/scheduler/flowRunEventBus");function g(a){return"signal"===a.kind}class h{publish(a){if(0===this.listeners.size)return;let b=g(a)?`signal topic=${a.topic} emitter=${a.emitterFlowId}`:`flow=${a.flowId} status=${a.status}`;for(let c of(f.debug(`Publishing flow event: ${b} firedBy=${a.firedBy} depth=${a.chainDepth} listeners=${this.listeners.size}`),[...this.listeners]))try{c(a)}catch(a){f.warn("A flow-run event listener threw:",a)}}subscribe(a){let b=(0,e.bindToCurrentWorkspace)(a);return this.listeners.add(b),()=>{this.listeners.delete(b)}}get listenerCount(){return this.listeners.size}constructor(){this.listeners=new Set}}function i(){let a=(0,e.getCurrentWorkspace)();if(a===e.DEFAULT_WORKSPACE)return global.__flujo_flow_run_event_bus||(global.__flujo_flow_run_event_bus=new h),global.__flujo_flow_run_event_bus;let b=global.__flujo_flow_run_event_buses_by_workspace??(global.__flujo_flow_run_event_buses_by_workspace=new Map),c=b.get(a);return c||(c=new h,b.set(a,c)),c}},94913:(a,b,c)=>{c.d(b,{GN:()=>x,UC:()=>z,Xg:()=>y});var d=c(66844),e=c(42740),f=c(19094),g=c(70087),h=c(92967),i=c(61346),j=c(71078),k=c(94558),l=c(96578),m=c(41762),n=c(42901),o=c(61203);let p=(0,d.h)("backend/services/flow/generateFlow"),q=o.Jt;function r(a,b,c,d){let e=c?`MULTI-LEVEL FLOWS — you MAY design subflows that are themselves brand-new flows:
1
+ "use strict";exports.id=811,exports.ids=[811,3099,4321,5111,6702,7492],exports.modules={17492:(a,b,c)=>{c.d(b,{Hm:()=>f,xc:()=>e});let d=["key","secret","token","password"],e=a=>d.some(b=>a.toLowerCase().includes(b)),f=a=>e(a)||"authorization"===a.trim().toLowerCase()},46702:(a,b,c)=>{c.d(b,{eh:()=>i,ru:()=>g});var d=c(66844),e=c(7986);let f=(0,d.h)("backend/services/scheduler/flowRunEventBus");function g(a){return"signal"===a.kind}class h{publish(a){if(0===this.listeners.size)return;let b=g(a)?`signal topic=${a.topic} emitter=${a.emitterFlowId}`:`flow=${a.flowId} status=${a.status}`;for(let c of(f.debug(`Publishing flow event: ${b} firedBy=${a.firedBy} depth=${a.chainDepth} listeners=${this.listeners.size}`),[...this.listeners]))try{c(a)}catch(a){f.warn("A flow-run event listener threw:",a)}}subscribe(a){let b=(0,e.bindToCurrentWorkspace)(a);return this.listeners.add(b),()=>{this.listeners.delete(b)}}get listenerCount(){return this.listeners.size}constructor(){this.listeners=new Set}}function i(){let a=(0,e.getCurrentWorkspace)();if(a===e.DEFAULT_WORKSPACE)return global.__flujo_flow_run_event_bus||(global.__flujo_flow_run_event_bus=new h),global.__flujo_flow_run_event_bus;let b=global.__flujo_flow_run_event_buses_by_workspace??(global.__flujo_flow_run_event_buses_by_workspace=new Map),c=b.get(a);return c||(c=new h,b.set(a,c)),c}},94913:(a,b,c)=>{c.d(b,{GN:()=>x,UC:()=>z,Xg:()=>y});var d=c(66844),e=c(42740),f=c(25940),g=c(70087),h=c(92967),i=c(61346),j=c(71078),k=c(94558),l=c(96578),m=c(41762),n=c(42901),o=c(61203);let p=(0,d.h)("backend/services/flow/generateFlow"),q=o.Jt;function r(a,b,c,d){let e=c?`MULTI-LEVEL FLOWS — you MAY design subflows that are themselves brand-new flows:
2
2
  - A subflow node normally references an EXISTING flow via "flow". To instead create a NEW child flow, use ONE of these on the subflow node (not "flow"):
3
3
  - "subflowSpec": an inline nested FlowSpec (you author the whole child now), or
4
4
  - "generateSubflow": a short natural-language description of the child — FLUJO will generate that child flow for you.
@@ -1 +1 @@
1
- "use strict";exports.id=8542,exports.ids=[8542],exports.modules={3146:(a,b,c)=>{c.d(b,{Hm:()=>f,xc:()=>e,yo:()=>g});let d=["key","secret","token","password"],e=a=>d.some(b=>a.toLowerCase().includes(b)),f=a=>e(a)||"authorization"===a.trim().toLowerCase(),g=a=>{if(!a)return a;if(a.includes("_-_-_")){let b=a.split("_-_-_");return 3===b.length?b[2]:a}let b=/^mcp_(.+)_[0-9a-z]+$/.exec(a);if(b&&b[1])return b[1];let c=a.indexOf("__");return c>0&&c+2<a.length?a.slice(c+2):a}},15380:(a,b,c)=>{c.d(b,{Fy:()=>n,LI:()=>m,RA:()=>i,eH:()=>k,hU:()=>j,ri:()=>l,y1:()=>q});var d=c(48249),e=c(67484),f=c(29184);let g=(a,b,c)=>Math.min(Math.max(a,b),Math.max(b,c)),h={x:0,y:0};function i(a,b,c){return{x:g(a.x,0,Math.max(0,c.width-b.width)),y:g(a.y,0,Math.max(0,c.height-b.height))}}function j(a,b,c,d,e,f){let h=b.includes("left"),i=b.includes("right"),j=b.includes("top"),k=b.includes("bottom"),l=a.x+a.width,m=a.y+a.height,n=a.x,o=a.y,p=a.width,q=a.height;return h?(n=g(a.x+c,0,l-f.width),p=l-n):i&&(p=g(a.width+c,f.width,e.width-a.x)),j?(o=g(a.y+d,0,m-f.height),q=m-o):k&&(q=g(a.height+d,f.height,e.height-a.y)),{x:n,y:o,width:p,height:q}}function k(a,b,c){let d=g(a.width,c.width,b.width),e=g(a.height,c.height,b.height);return{x:g(a.x,0,b.width-d),y:g(a.y,0,b.height-e),width:d,height:e}}function l(a,b){let[c,d]=(0,e.useState)(h);return c}function m(){let[a,b]=(0,e.useState)(null),c=(0,e.useRef)(null),d=(0,e.useRef)(!0);return{activeCursor:a,startPointerDrag:(0,e.useCallback)((a,e,f)=>{c.current?.(),a.preventDefault(),a.stopPropagation();let g=a.currentTarget,h=a.pointerId,i=g.ownerDocument,j=i.defaultView??window,k=i.body.style.userSelect,l=i.body.style.cursor;try{g.setPointerCapture?.(h)}catch{}i.body.style.userSelect="none",i.body.style.cursor=e??"",b(e);let m=a=>{a.pointerId===h&&(a.preventDefault(),f(a))},n=(a=!0)=>{j.removeEventListener("pointermove",m,!0),j.removeEventListener("pointerup",o,!0),j.removeEventListener("pointercancel",o,!0);try{g.hasPointerCapture?.(h)&&g.releasePointerCapture(h)}catch{}i.body.style.userSelect=k,i.body.style.cursor=l,a&&d.current&&b(null),c.current===n&&(c.current=null)},o=a=>{a.pointerId===h&&n()};c.current=n,j.addEventListener("pointermove",m,!0),j.addEventListener("pointerup",o,!0),j.addEventListener("pointercancel",o,!0)},[])}}let n=({cursor:a})=>a?(0,d.jsx)(f.default,{"aria-hidden":!0,"data-testid":"pointer-drag-shield",sx:{position:"fixed",inset:0,zIndex:0x7ffffffe,cursor:a,touchAction:"none"}}):null,o={top:{top:-3,left:10,right:10,height:8},right:{right:-3,top:10,bottom:10,width:8},bottom:{bottom:-3,left:10,right:10,height:8},left:{left:-3,top:10,bottom:10,width:8},"top-left":{top:-3,left:-3,width:14,height:14},"top-right":{top:-3,right:-3,width:14,height:14},"bottom-left":{bottom:-3,left:-3,width:14,height:14},"bottom-right":{bottom:-3,right:-3,width:14,height:14}},p=Object.keys(o),q=({label:a,onResizeStart:b})=>(0,d.jsx)(d.Fragment,{children:p.map(c=>{let e="top"===c||"bottom"===c?"ns-resize":"left"===c||"right"===c?"ew-resize":"top-left"===c||"bottom-right"===c?"nwse-resize":"nesw-resize";return(0,d.jsx)(f.default,{component:"span",role:"separator","aria-label":`${a} (${c})`,onPointerDown:a=>b(a,c,e),sx:{position:"absolute",zIndex:8,cursor:e,touchAction:"none",...o[c],..."bottom-right"===c?{"&::after":{content:'""',position:"absolute",right:3,bottom:3,width:7,height:7,borderRight:2,borderBottom:2,borderColor:"text.secondary",opacity:.7}}:{}}},c)})})},38285:(a,b,c)=>{c.d(b,{uJ:()=>G,Ay:()=>R,Yw:()=>H});var d=c(48249),e=c(67484),f=c(33480),g=c(29184),h=c(55784),i=c(77217),j=c(76108),k=c(52454),l=c(88458),m=c(13288),n=c(2247),o=c(25303),p=c(52317),q=c(78717),r=c(30193),s=c(58137),t=c(69111),u=c(32166),v=c(34159),w=c(92646),x=c(94651),y=c(39361),z=c(6680),A=c(15380);let B=(0,z.h)("frontend/components/Chat/McpAppFrame"),C={name:"FLUJO",version:"3.44.0"},D=new Set(["https:","http:"]),E=["inline","fullscreen","pip"],F=new Set(["text"]),G=262144;function H(a){try{return new TextEncoder().encode(JSON.stringify(a)).length}catch{return 1/0}}let I=new Map;async function J(a,b,c){let d,e=(0,y.dJ)(),f=JSON.stringify([e,a,b,c??null]);if(!I.has(f)){let d=new URLSearchParams;d.set("serverName",a),d.set("uri",b),c&&d.set("conversationId",c);let g=fetch((0,y.TA)(`/api/mcp/app-sandbox${d.toString()?`?${d}`:""}`,e)).then(async a=>{if(!a.ok){let b="";try{let c=await a.json();"string"==typeof c.error&&c.error.trim()&&(b=`: ${c.error.trim()}`)}catch{}throw Error(`Sandbox endpoint discovery failed (${a.status})${b}`)}return await a.json()}).catch(a=>{throw I.delete(f),a});I.set(f,g)}var g=await I.get(f),h=window.location;if("boolean"!=typeof g.shared)throw Error("Sandbox endpoint discovery did not describe its origin mode");if(!function(a){if("string"!=typeof a)return!1;let b=a.trim();if(0===b.length||b.length>253||b!==a||b!==b.toLowerCase()||/[^\w.-]|[^\x00-\x7f]/i.test(b)||/^\d+(\.\d+)*$/.test(b)||b.includes(":")||/[/?#@]/.test(b))return!1;let c=b.split(".");return!(0===c.length||c.some(a=>0===a.length))&&c.every(a=>a.length<=63&&/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/.test(a))}(g.originKey))throw Error("Sandbox endpoint discovery returned an invalid origin key");if("string"!=typeof g.token||0===g.token.length)throw Error("Sandbox endpoint discovery returned invalid credentials");if("string"!=typeof g.url)throw Error("Sandbox endpoint discovery did not return an isolated app URL");try{d=new URL(g.url)}catch{throw Error("Sandbox endpoint discovery returned an invalid public URL")}if("http:"!==d.protocol&&"https:"!==d.protocol||d.username||d.password)throw Error("Sandbox public URL must be an absolute HTTP(S) URL without credentials");if("https:"===h.protocol&&"https:"!==d.protocol)throw Error("HTTPS FLUJO deployments require an HTTPS MCP Apps sandbox URL");if(g.shared){if(d.searchParams.get("originKey")!==g.originKey)throw Error("Shared sandbox URL is not bound to the verified app origin key")}else if(!d.hostname.split(".").includes(g.originKey))throw Error("Sandbox URL is not bound to the verified app origin key");if(d.origin===h.origin)throw Error("MCP Apps sandbox must use a distinct origin from FLUJO");return d.searchParams.set("token",g.token),d.href}function K(a,b,c=!1){let d=a=>{let c=/^(https|wss):\/\/(\*\.)?([^/:?#]+)(?::(\d{1,5}))?$/i.exec(a);if(!c||!b.includes(c[1].toLowerCase()))return!1;let d=c[3].split(".");if(c[3].length>253||d.some(a=>0===a.length||a.length>63||!/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i.test(a)))return!1;let e=c[4]?Number(c[4]):void 0;return void 0===e||Number.isInteger(e)&&e>=1&&e<=65535},e=[],f=new Set;for(let g of a??[]){if(0===g.length||g.length>2048||/[^\x21-\x7e]/.test(g))continue;let a=c?(0,x._w)(g,b.includes("wss")?["http","ws"]:["http"]):void 0;if(!a&&!d(g))continue;let h=a??g,i=h.toLowerCase();if(!f.has(i)&&(f.add(i),e.push(h),e.length>=64))break}return e}function L(a){if(a)try{return JSON.parse(a)}catch{return}}async function M(a,b,c,d,e){let f;if(await a.sendToolInput({arguments:(f=L(b))&&"object"==typeof f&&!Array.isArray(f)?f:{}}),void 0!==d)return void await a.sendToolCancelled({reason:d});let g=function(a,b){if(void 0===a)return!0===b?{content:[],isError:!0}:null;let c=L(a);return c&&"object"==typeof c&&Array.isArray(c.content)?{...c,...!0===b?{isError:!0}:{}}:{content:[{type:"text",text:a}],...!0===b?{isError:!0}:{}}}(c,e);g&&await a.sendToolResult(g)}function N(a,b,c){return b.includes(a)&&c.includes(a)}function O(a,b,c,d,e,f){let g=void 0===b?`${c??""}\u0000${d??""}\u0000${e??""}\u0000${f??""}`:`${typeof b}:${String(b)}`;return`${a??""}\u0000${g}`}function P(a,b){let c=a.getBoundingClientRect(),d=Math.max(1,Math.round(c.width||a.clientWidth||1));return b?{width:d,height:Math.max(1,Math.round(c.height||a.clientHeight||1))}:{width:d,maxHeight:6e3}}async function Q(a,b,c){try{let d=await w.S.listServerTools(a),e=Array.isArray(d.tools)?d.tools:[],f=c?e.find(a=>a?.name===c):e.find(a=>(0,x.Gt)(a?._meta)===b);if(f?.name&&f?.inputSchema&&(0,x.Gt)(f._meta)===b)return{tool:f}}catch(a){B.debug("Could not resolve the full MCP App tool definition",a)}}let R=({conversationId:a,ownerScopeId:b,serverName:c,uri:y,toolName:z,toolArgs:I,toolResultContent:L,toolUpdateId:R,toolCancelledReason:S,toolIsError:T,onAppMessage:U,onUpdateModelContext:V,onRequestDock:W,onDockable:X,onAvailableDisplayModes:Y,hostDisplayMode:Z,onRequestDisplayMode:$,onRequestClose:_,onRegisterTeardown:aa,teardownRegistrationKey:ab,docked:ac=!1,visible:ad=!0,defaultExpanded:ae=!1,autoDock:af=!1,linkedToolCallCount:ag=1,onUserOpen:ah})=>{let{t:ai}=(0,u.s9)(),{settings:aj,settingsHydrated:ak}=(0,v.rX)(),al=!1!==ak,am=aj?.experimental?.requireMcpAppLaunchClick===!0,an=(0,f.A)(),ao=(0,e.useId)(),ap=(0,e.useMemo)(()=>a?`conversation:${a}`:b?.trim()?`app:${b.trim().slice(0,500)}`:`app:${c}:${y}:${ao}`,[a,ao,b,c,y]),[aq,ar]=(0,e.useState)(ae),[as,at]=(0,e.useState)(!1),[au,av]=(0,e.useState)(null),[aw,ax]=(0,e.useState)(al&&!am?"granted":"loading"),[ay,az]=(0,e.useState)(!1),[aA,aB]=(0,e.useState)(null),aC=(0,e.useRef)(null);(0,e.useEffect)(()=>{aC.current=au},[au]),(0,e.useEffect)(()=>{if(!al)return void ax("loading");if(!am){ax("granted"),aB(null);return}let b=!0;ax("loading");let d=new URLSearchParams({serverName:c,uri:y});return a&&d.set("conversationId",a),fetch(`/api/mcp/app-consent?${d}`).then(async a=>a.ok?a.json():Promise.reject(Error("Consent lookup failed"))).then(a=>{b&&["internal","granted","prompt","denied"].includes(a.status??"")&&ax(a.status)}).catch(()=>{b&&ax("denied")}),()=>{b=!1}},[al,am,a,c,y]);let aD=(0,e.useCallback)(async b=>{az(!0),aB(null);try{let d=await fetch("/api/mcp/app-consent",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({serverName:c,uri:y,conversationId:a,decision:b})});if(!d.ok)throw Error("Unable to save MCP App consent");let e=await d.json();ax("granted"===e.status?"granted":"denied")}catch{aB(ai("chat.app.consentSaveFailed"))}finally{az(!1)}},[a,c,ai,y]),aE=(0,e.useCallback)(async()=>{az(!0),aB(null);try{let a=new URLSearchParams({serverName:c,uri:y});if(!(await fetch(`/api/mcp/app-consent?${a}`,{method:"DELETE"})).ok)throw Error("Unable to reset MCP App consent");ax("prompt")}catch{aB(ai("chat.app.consentSaveFailed"))}finally{az(!1)}},[c,ai,y]),[aF,aG]=(0,e.useState)(ac?"pip":"inline"),[aH,aI]=(0,e.useState)(null),[aJ,aK]=(0,e.useState)([]),[aL,aM]=(0,e.useState)(!1),aN=(0,e.useRef)(ae),{activeCursor:aO,startPointerDrag:aP}=(0,A.LI)(),aQ=Z??aF,aR=(0,e.useMemo)(()=>ac?["pip","fullscreen"]:["inline","fullscreen",...W?["pip"]:[]],[ac,W]),aS=(0,e.useRef)(null),aT=(0,e.useRef)(null),aU=(0,e.useRef)(null),aV=(0,e.useRef)(200),aW=(0,e.useRef)(null),aX=(0,e.useRef)(!1),aY=(0,e.useRef)(0),aZ=(0,e.useRef)(!1),a$=(0,e.useRef)(null),a_=(0,e.useRef)(null),a0=(0,e.useRef)(!1),a1=(0,e.useRef)(!0),a2=(0,e.useRef)([]),a3=(0,e.useRef)(aQ),a4=(0,e.useRef)(aR),a5=(0,e.useRef)(z),a6=(0,e.useRef)(z),a7=(0,e.useRef)(Promise.resolve()),a8=(0,e.useRef)(void 0),a9=(0,e.useRef)({toolName:z,args:I,resultContent:L,cancelledReason:S,isError:T,updateId:R});(0,e.useEffect)(()=>{},[ac,aQ]),(0,e.useEffect)(()=>{},[ac,aQ]);let ba=(0,e.useCallback)(a=>{if("fullscreen"!==aQ||!aT.current||a.target.closest('button,[role="button"]'))return;a.preventDefault();let b=aT.current.getBoundingClientRect(),c=a.clientX,d=a.clientY;aP(a,"move",a=>{aI({...(0,A.RA)({x:b.left+a.clientX-c,y:b.top+a.clientY-d},{width:b.width,height:b.height},{width:window.innerWidth,height:window.innerHeight}),width:b.width,height:b.height})})},[aQ,aP]),bb=(0,e.useCallback)((a,b,c)=>{if("fullscreen"!==aQ||!aT.current)return;let d=aT.current.getBoundingClientRect(),e={x:d.left,y:d.top,width:d.width,height:d.height},f=a.clientX,g=a.clientY;aP(a,c,a=>{aI((0,A.hU)(e,b,a.clientX-f,a.clientY-g,{width:window.innerWidth,height:window.innerHeight},{width:Math.min(480,window.innerWidth),height:Math.min(320,window.innerHeight)}))})},[aQ,aP]),bc=(0,A.ri)(aT,"fullscreen"===aF&&!ac);a9.current={toolName:z,args:I,resultContent:L,cancelledReason:S,isError:T,updateId:R},a5.current=z;let bd=(0,e.useRef)(U);(0,e.useEffect)(()=>{bd.current=U},[U]);let be=(0,e.useRef)(V);(0,e.useEffect)(()=>{be.current=V},[V]);let bf=(0,e.useRef)(W);(0,e.useEffect)(()=>{bf.current=W},[W]);let bg=(0,e.useRef)(af);(0,e.useEffect)(()=>{af&&(bg.current=!0)},[af]);let bh=(0,e.useRef)(X);(0,e.useEffect)(()=>{bh.current=X},[X]);let bi=(0,e.useRef)(Y);(0,e.useEffect)(()=>{bi.current=Y},[Y]);let bj=(0,e.useRef)($);(0,e.useEffect)(()=>{bj.current=$},[$]);let bk=(0,e.useRef)(_);(0,e.useEffect)(()=>{bk.current=_},[_]);let bl=(0,e.useRef)(ac);(0,e.useEffect)(()=>{bl.current=ac},[ac]),(0,e.useEffect)(()=>{a3.current=aQ},[aQ]),(0,e.useEffect)(()=>{a4.current=aR},[aR]);let bm=(0,e.useCallback)(()=>{if(a_.current)return a_.current;aY.current+=1;let a=aW.current,b=aU.current,c=aZ.current;aW.current=null,aU.current=null,aZ.current=!1,aX.current=!1,a2.current=[],a$.current?.disconnect(),a$.current=null;let d=(async()=>{if(a&&c){let b;try{await Promise.race([a.teardownResource({},{timeout:1e3}),new Promise(a=>{b=setTimeout(a,1e3)})])}catch(a){B.debug("MCP App did not acknowledge resource teardown",a)}finally{b&&clearTimeout(b)}}try{await a?.close()}catch{}b?.remove()})();return a_.current=d,d.finally(()=>{a_.current===d&&(a_.current=null)}),d},[]),bn=(0,e.useCallback)(()=>{a0.current||!bf.current||aC.current||(a0.current=!0,bm().then(()=>{a1.current&&(bf.current?.(),ar(!1))}).finally(()=>{a0.current=!1}))},[bm]),bo=(0,e.useCallback)((a,b,c,d,e)=>{a7.current=a7.current.catch(()=>void 0).then(async()=>{aW.current===a&&aZ.current&&await M(a,b,c,d,e)}).catch(a=>{B.warn("MCP App tool delivery failed",a)})},[]),bp=(0,e.useCallback)(async()=>{if(a_.current&&await a_.current,aX.current||!aS.current)return;let b=aY.current+1;aY.current=b;let d=()=>aY.current===b&&aX.current;aX.current=!0,aK([]),at(!0),av(null);try{var e,f,g;let h,i,[j,k]=await Promise.all([w.S.readResourceFromApp(c,y),Q(c,y,a5.current)]);if(!d())return;if(j?.httpStatus===403)throw Error(j?.error||ai("chat.app.accessDisabled"));if(!j||!1===j.success)throw Error(j?.error||ai("chat.app.readFailed"));let l=function(a,b){let c,d=a?.contents;if(!Array.isArray(d)||0===d.length)throw Error("Resource has no contents");let e=d.find(a=>a.uri===b&&"string"==typeof a.mimeType&&(0,x.q$)(a.mimeType)&&("string"==typeof a.text||"string"==typeof a.blob));if(!e)throw Error(`Resource ${b} did not return MCP App HTML`);try{var f;let a;c="string"==typeof e.text?e.text:(f=e.blob,a=Uint8Array.from(atob(f),a=>a.charCodeAt(0)),new TextDecoder("utf-8",{fatal:!0}).decode(a))}catch{throw Error(`Resource ${b} contains invalid base64 UTF-8 HTML`)}if(new TextEncoder().encode(c).length>x.Pt)throw Error(`Resource exceeds the ${Math.round(x.Pt/1024)} KiB size cap`);let g=(e._meta??e.meta)?.ui,h=t.c0.safeParse(g?.csp);if(g?.csp!==void 0&&!h.success)throw Error(`Resource ${b} declares an invalid CSP policy`);let i=t.Ml.safeParse(g?.permissions);if(g?.permissions!==void 0&&!i.success)throw Error(`Resource ${b} declares invalid sandbox permissions`);return{html:c,csp:h.success?function(a,b=!1){return{connectDomains:K(a.connectDomains,["https","wss"],b),resourceDomains:K(a.resourceDomains,["https"],b),frameDomains:K(a.frameDomains,["https"],b),baseUriDomains:K(a.baseUriDomains,["https"],b)}}(h.data):void 0,permissions:i.success&&i.data.clipboardWrite?{clipboardWrite:{}}:void 0,prefersBorder:"boolean"==typeof g?.prefersBorder?g.prefersBorder:void 0}}(j.data,y);aM(!1===l.prefersBorder);let m=await J(c,y,a);if(!d()||!aS.current)return;let n=document.createElement("iframe");n.title=ai("chat.app.frameTitle",{uri:y}),n.setAttribute("sandbox","allow-scripts allow-same-origin"),n.referrerPolicy="origin";let o=(0,t.Sy)(l.permissions);o&&n.setAttribute("allow",o);let p=!1===l.prefersBorder?"transparent":"#fff";n.style.cssText=bl.current||"fullscreen"===a3.current?`width:100%;height:100%;border:none;background:${p};`:`width:100%;min-height:120px;height:200px;border:none;background:${p};`+(!1===l.prefersBorder?"":"border-radius:4px;"),aS.current.appendChild(n),aU.current=n;let q=new URL(m);l.csp&&q.searchParams.set("csp",JSON.stringify(l.csp));let r=q.origin,s=new Promise((a,b)=>{let c=setTimeout(()=>{window.removeEventListener("message",d),b(Error(ai("chat.app.proxyTimeout")))},1e4),d=b=>{b.source===n.contentWindow&&b.origin===r&&b.data?.jsonrpc==="2.0"&&b.data?.method==="ui/notifications/sandbox-proxy-ready"&&(clearTimeout(c),window.removeEventListener("message",d),a())};window.addEventListener("message",d)});if(n.src=q.href,await s,!d()||aU.current!==n)return;let u=a3.current,v="inline";a3.current=v;let z=new t.T1((e=a=>{aY.current===b&&aW.current===z&&(av(a),at(!1),bm().finally(()=>{bl.current&&bk.current?.()}))},{getServerCapabilities:()=>({tools:{},resources:{}}),setNotificationHandler:()=>{},request:async(a,b,d)=>{let{method:f,params:g}=a;if("tools/call"===f){B.info(`MCP App tools/call: ${c}/${g?.name}`);let a=await w.S.callToolFromApp(c,g.name,g.arguments??{},void 0,d?.signal,ap);if(a?.httpStatus===403){let b=a?.error||"MCP Apps access was disabled for this server";throw e(b),Error(b)}if(!a||!1===a.success)throw Error(a?.error||`Tool call failed: ${g?.name}`);return a.data}if("resources/read"===f){let a=await w.S.readResourceFromApp(c,g.uri);if(a?.httpStatus===403){let b=a?.error||"MCP Apps access was disabled for this server";throw e(b),Error(b)}if(!a||!1===a.success)throw Error(a?.error||`Resource read failed: ${g?.uri}`);return a.data}if("resources/list"===f)return{resources:[]};if("resources/templates/list"===f)return{resourceTemplates:[]};throw Error(`MCP App requested unsupported method: ${f}`)}}),C,{openLinks:{},serverTools:{},serverResources:{},logging:{},...bd.current?{message:{text:{}}}:{},...be.current?{updateModelContext:{text:{},structuredContent:{}}}:{},sandbox:{csp:l.csp,permissions:l.permissions}},{hostContext:{...k?{toolInfo:k}:{},theme:"dark"===an.palette.mode?"dark":"light",platform:"web",displayMode:v,availableDisplayModes:a4.current,containerDimensions:P(aS.current,bl.current),locale:navigator.language,timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,userAgent:navigator.userAgent,deviceCapabilities:{touch:navigator.maxTouchPoints>0,hover:window.matchMedia?.("(hover: hover)").matches??!1}}});aW.current=z;let A=()=>d()&&aW.current===z;if(z.onopenlink=async({url:a})=>{if(!A())return{isError:!0};let b=function(a){try{let b=new URL(a);if(!D.has(b.protocol)||b.username||b.password)return null;return b.href}catch{return null}}(a);if(!b)return B.warn("MCP App open-link rejected by URL policy",{serverName:c,uri:y}),{isError:!0};let d=window.open(b,"_blank","noopener,noreferrer");return d?(d.opener=null,{}):{isError:!0}},z.ondownloadfile=async({contents:a})=>{if(!A())return{isError:!0};try{for(let b of a??[]){let a,c=b?.resource;if(!c)continue;let d=("string"==typeof c.uri?c.uri.split("/").pop():"")||"download",e="string"==typeof c.mimeType?c.mimeType:"application/octet-stream";if("string"==typeof c.blob){let b=Uint8Array.from(atob(c.blob),a=>a.charCodeAt(0));a=new Blob([b],{type:e})}else a=new Blob([String(c.text??"")],{type:e});let f=URL.createObjectURL(a),g=document.createElement("a");g.href=f,g.download=d,document.body.appendChild(g),g.click(),g.remove(),setTimeout(()=>URL.revokeObjectURL(f),4e3)}return{}}catch(a){return B.warn("MCP App download failed",a),{isError:!0}}},z.onloggingmessage=a=>{A()&&B.debug("MCP App log",a?.data)},z.onmessage=async a=>{if(!A())return{};if(!bd.current)throw Error("This host cannot deliver ui/message in this surface");let b=function(a){if(a?.role!=="user")throw Error('This host accepts ui/message only with role "user"');let b=a?.content,c=Array.isArray(b)?b:b&&"object"==typeof b?[b]:[];if(0===c.length||c.some(a=>a?.type!=="text"||"string"!=typeof a.text))throw Error("This host accepts text-only ui/message content");let d=c.map(a=>a.text).join("\n").trim();if(!d)throw Error("ui/message text must not be empty");return d}(a);if(!await bd.current(b))throw Error("ui/message was not delivered");return{}},z.onupdatemodelcontext=async a=>{if(!A())return{};let b=function(a){if(!a||"object"!=typeof a||Array.isArray(a))return"ui/update-model-context params must be an object";if(void 0!==a.content){if(!Array.isArray(a.content))return"Model context content must be an array";for(let b of a.content)if(!b||"object"!=typeof b||Array.isArray(b)||!F.has(b.type))return"Model context contains a modality this host did not advertise"}return void 0!==a.structuredContent&&(!a.structuredContent||"object"!=typeof a.structuredContent||Array.isArray(a.structuredContent))?"Model structuredContent must be an object":H(a)>G?`Model context exceeds ${G} bytes`:null}(a);if(b)throw Error(b);let d=`${c}::${y}`;if(!be.current)throw Error("This host cannot preserve model context in this surface");if(!await be.current(d,a))throw Error("MCP App model context was not stored");return{}},z.onsizechange=async({width:a,height:b})=>{if(!A()||bl.current)return;let c=aS.current?.getBoundingClientRect().width||aS.current?.clientWidth||0,d=function(a,b){let c={};if(Number.isFinite(a.width)&&a.width>0){let d=Number.isFinite(b)&&b>0?b:6e3;c.width=Math.min(a.width,d,6e3)}return Number.isFinite(a.height)&&a.height>0&&(c.height=Math.min(a.height,6e3)),c}({width:a,height:b},c);void 0!==d.height&&(aV.current=d.height,"fullscreen"!==a3.current&&(n.style.height=`${d.height}px`)),void 0!==d.width&&(n.style.width=`${d.width}px`,n.style.maxWidth="100%")},z.onrequestdisplaymode=async({mode:a})=>{if(!A())return{mode:a3.current};let b=a3.current,c=a2.current;if(!N(a,a4.current,c))return{mode:b};if("pip"===a&&!bl.current&&bf.current)return setTimeout(bn,0),{mode:b};let d=b;return(d=bj.current?await bj.current(a,[...c]):a)===b||N(d,a4.current,c)||(d=b),d!==b&&(a3.current=d,aG(d),await z.sendHostContextChange({displayMode:d})),{mode:d}},z.onrequestteardown=()=>{A()&&bm().finally(()=>{bk.current?bk.current():(a3.current="inline",aG("inline"),ar(!1))})},z.oninitialized=()=>{var a,b,c,d;if(!A())return;let e=z.getAppCapabilities()?.availableDisplayModes,f=Array.isArray(e)?[...new Set(e.filter(a=>E.includes(a)))]:[];a2.current=f,aK(f),bh.current?.(f.includes("pip")),bi.current?.([...f]),aZ.current=!0;let g=(a=u,b=bl.current,c=a4.current,d=f,b?N("pip",c,d)?"fullscreen"===a&&N("fullscreen",c,d)?"fullscreen":"pip":null:"fullscreen"===a&&N("fullscreen",c,d)?"fullscreen":"inline");if(null===g){av(ai("chat.app.canvasUnsupported")),at(!1),bm();return}bg.current&&f.includes("pip")&&!bl.current&&bf.current&&setTimeout(bn,0),a3.current=g,aG(g),g!==v&&z.sendHostContextChange({displayMode:g});let h=aS.current;if(h&&"u">typeof ResizeObserver){let a=()=>{if(!A()||!aZ.current)return;let a=h.getBoundingClientRect();a.width<=0||bl.current&&a.height<=0||z.sendHostContextChange({containerDimensions:P(h,bl.current)})};a$.current?.disconnect(),a$.current=new ResizeObserver(a),a$.current.observe(h),a()}let i=a9.current;a8.current=O(i.toolName,i.updateId,i.args,i.resultContent,i.cancelledReason,i.isError),(void 0!==i.args||void 0!==i.resultContent||void 0!==i.cancelledReason||!0===i.isError)&&bo(z,i.args,i.resultContent,i.cancelledReason,i.isError),at(!1)},await z.connect((f=n.contentWindow,g=n.contentWindow,h=new t.hJ(f,g),i={start:async()=>{h.onmessage=(a,b)=>{i.onmessage?.("ui/message"!==a.method||!a.params||Array.isArray(a.params.content)||!a.params.content||"object"!=typeof a.params.content?a:{...a,params:{...a.params,content:[a.params.content]}},b)},h.onerror=a=>i.onerror?.(a),h.onclose=()=>i.onclose?.(),await h.start()},send:(a,b)=>h.send(a,b),close:()=>h.close(),setProtocolVersion:a=>h.setProtocolVersion?.(a)})),!A())return;await z.sendSandboxResourceReady({html:l.html,csp:l.csp,permissions:l.permissions})}catch(a){if(!d())return;B.warn(`Failed to mount MCP App ${y} from ${c}`,a),av(a instanceof Error?a.message:ai("chat.app.loadFailed")),at(!1),bm()}},[bn,ap,bo,c,bm,an.palette.mode,y,ai]),bq=(0,e.useCallback)(()=>{let a=!aq;a||"fullscreen"!==a3.current||(a3.current="inline",aG("inline"),aW.current?.sendHostContextChange({displayMode:"inline"})),a&&ah?.(),ar(a),a&&("internal"===aw||"granted"===aw)&&setTimeout(()=>{bp()},0)},[aw,aq,bp,ah]);if((0,e.useEffect)(()=>{let a=aN.current;aN.current=ae,ac||!ae||a||aq||ar(!0)},[ae,ac,aq]),(0,e.useEffect)(()=>{ac&&("internal"===aw||"granted"===aw)&&!aX.current&&bp()},[aw,ac,bp]),(0,e.useEffect)(()=>{if(!ac&&("internal"===aw||"granted"===aw)&&aq&&!aX.current){let a=window.setTimeout(()=>{bp()},0);return()=>window.clearTimeout(a)}},[aw,ae,ac,aq,bp]),(0,e.useEffect)(()=>{let a=aU.current;if(a){if(ac||"fullscreen"===aQ){a.style.width="100%",a.style.height="100%",a.style.minHeight="0",a.style.borderRadius="0";return}a.style.width="100%",a.style.height=`${aV.current}px`,a.style.minHeight="120px",a.style.borderRadius=aL?"0":"4px"}},[aL,ac,aQ]),(0,e.useEffect)(()=>{a6.current===z||(a6.current=z,(aX.current||a_.current)&&bm().then(()=>{a1.current&&(bl.current||aq)&&bp()}))},[aq,bp,bm,z]),(0,e.useEffect)(()=>{let a=O(z,R,I,L,S,T);aZ.current&&aW.current&&a!==a8.current&&(a8.current=a,bm().then(()=>{a1.current&&(bl.current||aq)&&bp()}))},[aq,bp,bm,I,S,T,z,L,R]),(0,e.useEffect)(()=>{Z&&aZ.current&&aW.current&&a3.current!==Z&&N(Z,a4.current,a2.current)&&(a3.current=Z,aG(Z),aW.current.sendHostContextChange({displayMode:Z}))},[Z]),(0,e.useEffect)(()=>{aZ.current&&aW.current&&aW.current?.sendHostContextChange({theme:"dark"===an.palette.mode?"dark":"light"})},[an.palette.mode]),(0,e.useEffect)(()=>{let a=ab??`${c}::${y}`;return aa?.(a,bm),()=>aa?.(a,null)},[aa,c,bm,ab,y]),(0,e.useEffect)(()=>{let a=a=>{let b=a.detail;b?.serverName===c&&(b.config?.enableMcpApps===!1||b.config?.disabled===!0)&&(av(ai("chat.app.accessDisabled")),at(!1),bm().finally(()=>{bl.current&&bk.current?.()}))};return window.addEventListener("flujo:mcp-server-config-changed",a),()=>{window.removeEventListener("flujo:mcp-server-config-changed",a)}},[c,bm,ai]),(0,e.useEffect)(()=>(a1.current=!0,()=>{a1.current=!1,bm()}),[bm]),ac)return(0,d.jsxs)(g.default,{sx:{height:"100%",width:"100%",minHeight:0,display:"flex",visibility:ad?"visible":"hidden",pointerEvents:ad?"auto":"none",flexDirection:"column"},children:[al&&am&&"loading"===aw&&(0,d.jsx)(h.A,{variant:"body2",sx:{p:2},children:ai("chat.app.consentChecking")}),"prompt"===aw&&(0,d.jsxs)(g.default,{sx:{p:2},children:[(0,d.jsx)(h.A,{variant:"body2",sx:{mb:1},children:ai("chat.app.consentPrompt")}),(0,d.jsxs)(h.A,{variant:"caption",color:"text.secondary",display:"block",sx:{mb:1},children:[c," — ",y]}),(0,d.jsx)(i.A,{size:"small",disabled:ay,onClick:()=>{aD("allow-once")},children:ai("chat.app.consentAllowOnce")}),(0,d.jsx)(i.A,{size:"small",disabled:ay,onClick:()=>{aD("allow-always")},children:ai("chat.app.consentAllowAlways")}),(0,d.jsx)(i.A,{size:"small",disabled:ay,color:"inherit",onClick:()=>{aD("deny-always")},children:ai("chat.app.consentNeverAllow")})]}),"denied"===aw&&(0,d.jsxs)(g.default,{sx:{p:2},children:[(0,d.jsx)(h.A,{variant:"body2",color:"text.secondary",sx:{mb:1},children:ai("chat.app.consentBlocked")}),(0,d.jsx)(i.A,{size:"small",disabled:ay,onClick:()=>{aD("allow-always")},children:ai("chat.app.consentAllowAlways")}),(0,d.jsx)(i.A,{size:"small",disabled:ay,color:"inherit",onClick:()=>{aE()},children:ai("chat.app.consentAskAgain")})]}),aA&&(0,d.jsx)(j.A,{severity:"error",sx:{m:1},children:aA}),("internal"===aw||"granted"===aw)&&as&&(0,d.jsxs)(g.default,{sx:{display:"flex",alignItems:"center",gap:1,py:2,justifyContent:"center"},children:[(0,d.jsx)(k.default,{size:16,thickness:6}),(0,d.jsx)(h.A,{variant:"body2",color:"text.secondary",children:ai("chat.app.loading")})]}),au&&(0,d.jsx)(j.A,{severity:"error",sx:{m:1},children:au}),(0,d.jsx)(g.default,{ref:aS,sx:{flex:1,minHeight:0,width:"100%",display:au?"none":"block"}})]});let br=aJ.includes("inline")&&aJ.includes("fullscreen")&&aR.includes("fullscreen"),bs=aJ.includes("inline")&&aJ.includes("pip")&&aR.includes("pip")&&!!W;return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(g.default,{ref:aT,sx:{mt:1,...aL?{border:0,borderRadius:0}:{border:"1px solid",borderColor:"divider",borderRadius:1},overflow:"hidden",..."fullscreen"===aF?{position:"fixed",left:(aH?.x??16)-bc.x,top:(aH?.y??16)-bc.y,width:aH?.width??"calc(100vw - 32px)",height:aH?.height??"calc(100vh - 32px)",minWidth:"min(480px, 100vw)",minHeight:"min(320px, 100vh)",maxWidth:"100vw",maxHeight:"100vh",zIndex:1300,bgcolor:"background.paper",boxShadow:6,display:"flex",flexDirection:"column"}:{}},children:["fullscreen"===aF&&(0,d.jsx)(A.y1,{label:ai("chat.canvas.resize"),onResizeStart:bb}),(0,d.jsxs)(g.default,{onPointerDown:ba,sx:{display:"flex",alignItems:"center",gap:1,px:1,py:.5,bgcolor:"action.hover",cursor:"fullscreen"===aF?"move":"default",userSelect:"none",flexShrink:0},children:[(0,d.jsx)(n.A,{fontSize:"small",color:"primary"}),(0,d.jsx)(h.A,{variant:"body2",sx:{fontWeight:500},children:ai("chat.app.fromServer",{server:c})}),ag>1&&(0,d.jsxs)(h.A,{variant:"caption",color:"text.secondary",children:["\xd7",ag]}),(0,d.jsx)(l.A,{title:ai("chat.app.sandboxHelp"),children:(0,d.jsx)(o.A,{fontSize:"small",color:"action"})}),(0,d.jsx)(g.default,{sx:{flex:1}}),aq&&bs&&(0,d.jsx)(i.A,{size:"small",onClick:bn,children:ai("chat.app.canvas")}),aq&&(0,d.jsx)(l.A,{title:br?"fullscreen"===aF?ai("chat.app.exitFullscreen"):ai("chat.app.fullscreen"):ai("chat.app.fullscreenUnsupported"),children:(0,d.jsx)("span",{children:(0,d.jsx)(i.A,{size:"small",disabled:!br,onClick:()=>{let a="fullscreen"===aF?"inline":"fullscreen";N(a,aR,aJ)&&(a3.current=a,aG(a),aW.current?.sendHostContextChange({displayMode:a}))},sx:{minWidth:0},children:"fullscreen"===aF?(0,d.jsx)(s.A,{fontSize:"small"}):(0,d.jsx)(r.A,{fontSize:"small"})})})}),(0,d.jsx)(i.A,{size:"small",onClick:bq,startIcon:aq?(0,d.jsx)(q.A,{}):(0,d.jsx)(p.A,{}),children:aq?ai("chat.app.hide"):ai("chat.app.open")})]}),aq&&"prompt"===aw&&(0,d.jsxs)(g.default,{sx:{p:1},children:[(0,d.jsx)(h.A,{variant:"body2",sx:{mb:1},children:ai("chat.app.consentPrompt")}),(0,d.jsx)(h.A,{variant:"caption",color:"text.secondary",display:"block",sx:{mb:1},children:y}),(0,d.jsx)(i.A,{size:"small",disabled:ay,onClick:()=>{aD("allow-once")},children:ai("chat.app.consentAllowOnce")}),(0,d.jsx)(i.A,{size:"small",disabled:ay,onClick:()=>{aD("allow-always")},children:ai("chat.app.consentAllowAlways")}),(0,d.jsx)(i.A,{size:"small",disabled:ay,color:"inherit",onClick:()=>{aD("deny-always")},children:ai("chat.app.consentNeverAllow")})]}),aq&&"denied"===aw&&(0,d.jsxs)(g.default,{sx:{p:1},children:[(0,d.jsx)(h.A,{variant:"body2",color:"text.secondary",sx:{mb:1},children:ai("chat.app.consentBlocked")}),(0,d.jsx)(i.A,{size:"small",disabled:ay,onClick:()=>{aD("allow-always")},children:ai("chat.app.consentAllowAlways")}),(0,d.jsx)(i.A,{size:"small",disabled:ay,color:"inherit",onClick:()=>{aE()},children:ai("chat.app.consentAskAgain")})]}),aq&&aA&&(0,d.jsx)(j.A,{severity:"error",sx:{m:1},children:aA}),(0,d.jsx)(m.A,{in:aq&&("internal"===aw||"granted"===aw),onExited:()=>{bm()},sx:"fullscreen"===aF?{flex:1,minHeight:0,display:"flex",flexDirection:"column","& .MuiCollapse-wrapper, & .MuiCollapse-wrapperInner":{height:"100%",minHeight:0,display:"flex",flexDirection:"column"}}:void 0,children:(0,d.jsxs)(g.default,{sx:{p:1,height:"fullscreen"===aF?"100%":"auto",minHeight:0,display:"flex",flexDirection:"column"},children:[as&&(0,d.jsxs)(g.default,{sx:{display:"flex",alignItems:"center",gap:1,py:2,justifyContent:"center"},children:[(0,d.jsx)(k.default,{size:16,thickness:6}),(0,d.jsx)(h.A,{variant:"body2",color:"text.secondary",children:ai("chat.app.loading")})]}),au&&(0,d.jsx)(j.A,{severity:"error",sx:{my:1},children:au}),(0,d.jsx)(g.default,{ref:aS,sx:{width:"100%",flex:"fullscreen"===aF?1:void 0,minHeight:0,height:"fullscreen"===aF?"100%":"auto",display:au?"none":"block"}})]})})]}),(0,d.jsx)(A.Fy,{cursor:aO})]})}},94651:(a,b,c)=>{c.d(b,{DG:()=>f,Gt:()=>h,Pt:()=>e,_w:()=>j,q$:()=>g});let d="ui://",e=2097152;function f(a){return"string"==typeof a&&a.length>d.length&&a.slice(0,d.length).toLowerCase()===d&&!/\s/.test(a)}function g(a){if("string"!=typeof a)return!1;let[b,...c]=a.toLowerCase().split(";");if("text/html"!==b.trim())return!1;let d=!1;for(let a of c){let b=a.indexOf("=");if(b<=0)return!1;let c=a.slice(0,b).trim(),e=a.slice(b+1).trim();if(!c||!e)return!1;if("profile"===c){if(d||"mcp-app"!==e)return!1;d=!0}}return d}function h(a){if(!a||"object"!=typeof a)return;let b=a["ui/resourceUri"];if(f(b))return b;for(let b of[a.ui,a["io.modelcontextprotocol/ui"]])if(b&&"object"==typeof b){let a=b.resourceUri;if(f(a))return a}}let i=/^(http|ws):\/\/(127\.0\.0\.1|localhost|\[::1\]):(\d{1,5}|\*)$/i;function j(a,b=["http","ws"]){let c=function(a,b){if("string"!=typeof a||0===a.length||a.length>2048||/[^\x21-\x7e]/.test(a)||/[;,'"`$<>\\()]/.test(a))return;let c=i.exec(a);if(!c)return;let d=c[1].toLowerCase();if(b.includes(d)){if("*"!==c[3]){let a=Number(c[3]);if(!Number.isInteger(a)||a<1||a>65535)return}return{scheme:d,host:c[2].toLowerCase()}}}(a,b);return c&&`${c.scheme}://${c.host}:*`}}};
1
+ "use strict";exports.id=8542,exports.ids=[8542],exports.modules={3146:(a,b,c)=>{c.d(b,{Hm:()=>f,xc:()=>e,yo:()=>g});let d=["key","secret","token","password"],e=a=>d.some(b=>a.toLowerCase().includes(b)),f=a=>e(a)||"authorization"===a.trim().toLowerCase(),g=a=>{if(!a)return a;if(a.includes("_-_-_")){let b=a.split("_-_-_");return 3===b.length?b[2]:a}let b=/^mcp_(.+)_[0-9a-z]+$/.exec(a);if(b&&b[1])return b[1];let c=a.indexOf("__");return c>0&&c+2<a.length?a.slice(c+2):a}},15380:(a,b,c)=>{c.d(b,{Fy:()=>n,LI:()=>m,RA:()=>i,eH:()=>k,hU:()=>j,ri:()=>l,y1:()=>q});var d=c(48249),e=c(67484),f=c(29184);let g=(a,b,c)=>Math.min(Math.max(a,b),Math.max(b,c)),h={x:0,y:0};function i(a,b,c){return{x:g(a.x,0,Math.max(0,c.width-b.width)),y:g(a.y,0,Math.max(0,c.height-b.height))}}function j(a,b,c,d,e,f){let h=b.includes("left"),i=b.includes("right"),j=b.includes("top"),k=b.includes("bottom"),l=a.x+a.width,m=a.y+a.height,n=a.x,o=a.y,p=a.width,q=a.height;return h?(n=g(a.x+c,0,l-f.width),p=l-n):i&&(p=g(a.width+c,f.width,e.width-a.x)),j?(o=g(a.y+d,0,m-f.height),q=m-o):k&&(q=g(a.height+d,f.height,e.height-a.y)),{x:n,y:o,width:p,height:q}}function k(a,b,c){let d=g(a.width,c.width,b.width),e=g(a.height,c.height,b.height);return{x:g(a.x,0,b.width-d),y:g(a.y,0,b.height-e),width:d,height:e}}function l(a,b){let[c,d]=(0,e.useState)(h);return c}function m(){let[a,b]=(0,e.useState)(null),c=(0,e.useRef)(null),d=(0,e.useRef)(!0);return{activeCursor:a,startPointerDrag:(0,e.useCallback)((a,e,f)=>{c.current?.(),a.preventDefault(),a.stopPropagation();let g=a.currentTarget,h=a.pointerId,i=g.ownerDocument,j=i.defaultView??window,k=i.body.style.userSelect,l=i.body.style.cursor;try{g.setPointerCapture?.(h)}catch{}i.body.style.userSelect="none",i.body.style.cursor=e??"",b(e);let m=a=>{a.pointerId===h&&(a.preventDefault(),f(a))},n=(a=!0)=>{j.removeEventListener("pointermove",m,!0),j.removeEventListener("pointerup",o,!0),j.removeEventListener("pointercancel",o,!0);try{g.hasPointerCapture?.(h)&&g.releasePointerCapture(h)}catch{}i.body.style.userSelect=k,i.body.style.cursor=l,a&&d.current&&b(null),c.current===n&&(c.current=null)},o=a=>{a.pointerId===h&&n()};c.current=n,j.addEventListener("pointermove",m,!0),j.addEventListener("pointerup",o,!0),j.addEventListener("pointercancel",o,!0)},[])}}let n=({cursor:a})=>a?(0,d.jsx)(f.default,{"aria-hidden":!0,"data-testid":"pointer-drag-shield",sx:{position:"fixed",inset:0,zIndex:0x7ffffffe,cursor:a,touchAction:"none"}}):null,o={top:{top:-3,left:10,right:10,height:8},right:{right:-3,top:10,bottom:10,width:8},bottom:{bottom:-3,left:10,right:10,height:8},left:{left:-3,top:10,bottom:10,width:8},"top-left":{top:-3,left:-3,width:14,height:14},"top-right":{top:-3,right:-3,width:14,height:14},"bottom-left":{bottom:-3,left:-3,width:14,height:14},"bottom-right":{bottom:-3,right:-3,width:14,height:14}},p=Object.keys(o),q=({label:a,onResizeStart:b})=>(0,d.jsx)(d.Fragment,{children:p.map(c=>{let e="top"===c||"bottom"===c?"ns-resize":"left"===c||"right"===c?"ew-resize":"top-left"===c||"bottom-right"===c?"nwse-resize":"nesw-resize";return(0,d.jsx)(f.default,{component:"span",role:"separator","aria-label":`${a} (${c})`,onPointerDown:a=>b(a,c,e),sx:{position:"absolute",zIndex:8,cursor:e,touchAction:"none",...o[c],..."bottom-right"===c?{"&::after":{content:'""',position:"absolute",right:3,bottom:3,width:7,height:7,borderRight:2,borderBottom:2,borderColor:"text.secondary",opacity:.7}}:{}}},c)})})},38285:(a,b,c)=>{c.d(b,{uJ:()=>G,Ay:()=>R,Yw:()=>H});var d=c(48249),e=c(67484),f=c(33480),g=c(29184),h=c(55784),i=c(77217),j=c(76108),k=c(52454),l=c(88458),m=c(13288),n=c(2247),o=c(25303),p=c(52317),q=c(78717),r=c(30193),s=c(58137),t=c(69111),u=c(32166),v=c(34159),w=c(92646),x=c(94651),y=c(39361),z=c(6680),A=c(15380);let B=(0,z.h)("frontend/components/Chat/McpAppFrame"),C={name:"FLUJO",version:"3.45.0"},D=new Set(["https:","http:"]),E=["inline","fullscreen","pip"],F=new Set(["text"]),G=262144;function H(a){try{return new TextEncoder().encode(JSON.stringify(a)).length}catch{return 1/0}}let I=new Map;async function J(a,b,c){let d,e=(0,y.dJ)(),f=JSON.stringify([e,a,b,c??null]);if(!I.has(f)){let d=new URLSearchParams;d.set("serverName",a),d.set("uri",b),c&&d.set("conversationId",c);let g=fetch((0,y.TA)(`/api/mcp/app-sandbox${d.toString()?`?${d}`:""}`,e)).then(async a=>{if(!a.ok){let b="";try{let c=await a.json();"string"==typeof c.error&&c.error.trim()&&(b=`: ${c.error.trim()}`)}catch{}throw Error(`Sandbox endpoint discovery failed (${a.status})${b}`)}return await a.json()}).catch(a=>{throw I.delete(f),a});I.set(f,g)}var g=await I.get(f),h=window.location;if("boolean"!=typeof g.shared)throw Error("Sandbox endpoint discovery did not describe its origin mode");if(!function(a){if("string"!=typeof a)return!1;let b=a.trim();if(0===b.length||b.length>253||b!==a||b!==b.toLowerCase()||/[^\w.-]|[^\x00-\x7f]/i.test(b)||/^\d+(\.\d+)*$/.test(b)||b.includes(":")||/[/?#@]/.test(b))return!1;let c=b.split(".");return!(0===c.length||c.some(a=>0===a.length))&&c.every(a=>a.length<=63&&/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/.test(a))}(g.originKey))throw Error("Sandbox endpoint discovery returned an invalid origin key");if("string"!=typeof g.token||0===g.token.length)throw Error("Sandbox endpoint discovery returned invalid credentials");if("string"!=typeof g.url)throw Error("Sandbox endpoint discovery did not return an isolated app URL");try{d=new URL(g.url)}catch{throw Error("Sandbox endpoint discovery returned an invalid public URL")}if("http:"!==d.protocol&&"https:"!==d.protocol||d.username||d.password)throw Error("Sandbox public URL must be an absolute HTTP(S) URL without credentials");if("https:"===h.protocol&&"https:"!==d.protocol)throw Error("HTTPS FLUJO deployments require an HTTPS MCP Apps sandbox URL");if(g.shared){if(d.searchParams.get("originKey")!==g.originKey)throw Error("Shared sandbox URL is not bound to the verified app origin key")}else if(!d.hostname.split(".").includes(g.originKey))throw Error("Sandbox URL is not bound to the verified app origin key");if(d.origin===h.origin)throw Error("MCP Apps sandbox must use a distinct origin from FLUJO");return d.searchParams.set("token",g.token),d.href}function K(a,b,c=!1){let d=a=>{let c=/^(https|wss):\/\/(\*\.)?([^/:?#]+)(?::(\d{1,5}))?$/i.exec(a);if(!c||!b.includes(c[1].toLowerCase()))return!1;let d=c[3].split(".");if(c[3].length>253||d.some(a=>0===a.length||a.length>63||!/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i.test(a)))return!1;let e=c[4]?Number(c[4]):void 0;return void 0===e||Number.isInteger(e)&&e>=1&&e<=65535},e=[],f=new Set;for(let g of a??[]){if(0===g.length||g.length>2048||/[^\x21-\x7e]/.test(g))continue;let a=c?(0,x._w)(g,b.includes("wss")?["http","ws"]:["http"]):void 0;if(!a&&!d(g))continue;let h=a??g,i=h.toLowerCase();if(!f.has(i)&&(f.add(i),e.push(h),e.length>=64))break}return e}function L(a){if(a)try{return JSON.parse(a)}catch{return}}async function M(a,b,c,d,e){let f;if(await a.sendToolInput({arguments:(f=L(b))&&"object"==typeof f&&!Array.isArray(f)?f:{}}),void 0!==d)return void await a.sendToolCancelled({reason:d});let g=function(a,b){if(void 0===a)return!0===b?{content:[],isError:!0}:null;let c=L(a);return c&&"object"==typeof c&&Array.isArray(c.content)?{...c,...!0===b?{isError:!0}:{}}:{content:[{type:"text",text:a}],...!0===b?{isError:!0}:{}}}(c,e);g&&await a.sendToolResult(g)}function N(a,b,c){return b.includes(a)&&c.includes(a)}function O(a,b,c,d,e,f){let g=void 0===b?`${c??""}\u0000${d??""}\u0000${e??""}\u0000${f??""}`:`${typeof b}:${String(b)}`;return`${a??""}\u0000${g}`}function P(a,b){let c=a.getBoundingClientRect(),d=Math.max(1,Math.round(c.width||a.clientWidth||1));return b?{width:d,height:Math.max(1,Math.round(c.height||a.clientHeight||1))}:{width:d,maxHeight:6e3}}async function Q(a,b,c){try{let d=await w.S.listServerTools(a),e=Array.isArray(d.tools)?d.tools:[],f=c?e.find(a=>a?.name===c):e.find(a=>(0,x.Gt)(a?._meta)===b);if(f?.name&&f?.inputSchema&&(0,x.Gt)(f._meta)===b)return{tool:f}}catch(a){B.debug("Could not resolve the full MCP App tool definition",a)}}let R=({conversationId:a,ownerScopeId:b,serverName:c,uri:y,toolName:z,toolArgs:I,toolResultContent:L,toolUpdateId:R,toolCancelledReason:S,toolIsError:T,onAppMessage:U,onUpdateModelContext:V,onRequestDock:W,onDockable:X,onAvailableDisplayModes:Y,hostDisplayMode:Z,onRequestDisplayMode:$,onRequestClose:_,onRegisterTeardown:aa,teardownRegistrationKey:ab,docked:ac=!1,visible:ad=!0,defaultExpanded:ae=!1,autoDock:af=!1,linkedToolCallCount:ag=1,onUserOpen:ah})=>{let{t:ai}=(0,u.s9)(),{settings:aj,settingsHydrated:ak}=(0,v.rX)(),al=!1!==ak,am=aj?.experimental?.requireMcpAppLaunchClick===!0,an=(0,f.A)(),ao=(0,e.useId)(),ap=(0,e.useMemo)(()=>a?`conversation:${a}`:b?.trim()?`app:${b.trim().slice(0,500)}`:`app:${c}:${y}:${ao}`,[a,ao,b,c,y]),[aq,ar]=(0,e.useState)(ae),[as,at]=(0,e.useState)(!1),[au,av]=(0,e.useState)(null),[aw,ax]=(0,e.useState)(al&&!am?"granted":"loading"),[ay,az]=(0,e.useState)(!1),[aA,aB]=(0,e.useState)(null),aC=(0,e.useRef)(null);(0,e.useEffect)(()=>{aC.current=au},[au]),(0,e.useEffect)(()=>{if(!al)return void ax("loading");if(!am){ax("granted"),aB(null);return}let b=!0;ax("loading");let d=new URLSearchParams({serverName:c,uri:y});return a&&d.set("conversationId",a),fetch(`/api/mcp/app-consent?${d}`).then(async a=>a.ok?a.json():Promise.reject(Error("Consent lookup failed"))).then(a=>{b&&["internal","granted","prompt","denied"].includes(a.status??"")&&ax(a.status)}).catch(()=>{b&&ax("denied")}),()=>{b=!1}},[al,am,a,c,y]);let aD=(0,e.useCallback)(async b=>{az(!0),aB(null);try{let d=await fetch("/api/mcp/app-consent",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({serverName:c,uri:y,conversationId:a,decision:b})});if(!d.ok)throw Error("Unable to save MCP App consent");let e=await d.json();ax("granted"===e.status?"granted":"denied")}catch{aB(ai("chat.app.consentSaveFailed"))}finally{az(!1)}},[a,c,ai,y]),aE=(0,e.useCallback)(async()=>{az(!0),aB(null);try{let a=new URLSearchParams({serverName:c,uri:y});if(!(await fetch(`/api/mcp/app-consent?${a}`,{method:"DELETE"})).ok)throw Error("Unable to reset MCP App consent");ax("prompt")}catch{aB(ai("chat.app.consentSaveFailed"))}finally{az(!1)}},[c,ai,y]),[aF,aG]=(0,e.useState)(ac?"pip":"inline"),[aH,aI]=(0,e.useState)(null),[aJ,aK]=(0,e.useState)([]),[aL,aM]=(0,e.useState)(!1),aN=(0,e.useRef)(ae),{activeCursor:aO,startPointerDrag:aP}=(0,A.LI)(),aQ=Z??aF,aR=(0,e.useMemo)(()=>ac?["pip","fullscreen"]:["inline","fullscreen",...W?["pip"]:[]],[ac,W]),aS=(0,e.useRef)(null),aT=(0,e.useRef)(null),aU=(0,e.useRef)(null),aV=(0,e.useRef)(200),aW=(0,e.useRef)(null),aX=(0,e.useRef)(!1),aY=(0,e.useRef)(0),aZ=(0,e.useRef)(!1),a$=(0,e.useRef)(null),a_=(0,e.useRef)(null),a0=(0,e.useRef)(!1),a1=(0,e.useRef)(!0),a2=(0,e.useRef)([]),a3=(0,e.useRef)(aQ),a4=(0,e.useRef)(aR),a5=(0,e.useRef)(z),a6=(0,e.useRef)(z),a7=(0,e.useRef)(Promise.resolve()),a8=(0,e.useRef)(void 0),a9=(0,e.useRef)({toolName:z,args:I,resultContent:L,cancelledReason:S,isError:T,updateId:R});(0,e.useEffect)(()=>{},[ac,aQ]),(0,e.useEffect)(()=>{},[ac,aQ]);let ba=(0,e.useCallback)(a=>{if("fullscreen"!==aQ||!aT.current||a.target.closest('button,[role="button"]'))return;a.preventDefault();let b=aT.current.getBoundingClientRect(),c=a.clientX,d=a.clientY;aP(a,"move",a=>{aI({...(0,A.RA)({x:b.left+a.clientX-c,y:b.top+a.clientY-d},{width:b.width,height:b.height},{width:window.innerWidth,height:window.innerHeight}),width:b.width,height:b.height})})},[aQ,aP]),bb=(0,e.useCallback)((a,b,c)=>{if("fullscreen"!==aQ||!aT.current)return;let d=aT.current.getBoundingClientRect(),e={x:d.left,y:d.top,width:d.width,height:d.height},f=a.clientX,g=a.clientY;aP(a,c,a=>{aI((0,A.hU)(e,b,a.clientX-f,a.clientY-g,{width:window.innerWidth,height:window.innerHeight},{width:Math.min(480,window.innerWidth),height:Math.min(320,window.innerHeight)}))})},[aQ,aP]),bc=(0,A.ri)(aT,"fullscreen"===aF&&!ac);a9.current={toolName:z,args:I,resultContent:L,cancelledReason:S,isError:T,updateId:R},a5.current=z;let bd=(0,e.useRef)(U);(0,e.useEffect)(()=>{bd.current=U},[U]);let be=(0,e.useRef)(V);(0,e.useEffect)(()=>{be.current=V},[V]);let bf=(0,e.useRef)(W);(0,e.useEffect)(()=>{bf.current=W},[W]);let bg=(0,e.useRef)(af);(0,e.useEffect)(()=>{af&&(bg.current=!0)},[af]);let bh=(0,e.useRef)(X);(0,e.useEffect)(()=>{bh.current=X},[X]);let bi=(0,e.useRef)(Y);(0,e.useEffect)(()=>{bi.current=Y},[Y]);let bj=(0,e.useRef)($);(0,e.useEffect)(()=>{bj.current=$},[$]);let bk=(0,e.useRef)(_);(0,e.useEffect)(()=>{bk.current=_},[_]);let bl=(0,e.useRef)(ac);(0,e.useEffect)(()=>{bl.current=ac},[ac]),(0,e.useEffect)(()=>{a3.current=aQ},[aQ]),(0,e.useEffect)(()=>{a4.current=aR},[aR]);let bm=(0,e.useCallback)(()=>{if(a_.current)return a_.current;aY.current+=1;let a=aW.current,b=aU.current,c=aZ.current;aW.current=null,aU.current=null,aZ.current=!1,aX.current=!1,a2.current=[],a$.current?.disconnect(),a$.current=null;let d=(async()=>{if(a&&c){let b;try{await Promise.race([a.teardownResource({},{timeout:1e3}),new Promise(a=>{b=setTimeout(a,1e3)})])}catch(a){B.debug("MCP App did not acknowledge resource teardown",a)}finally{b&&clearTimeout(b)}}try{await a?.close()}catch{}b?.remove()})();return a_.current=d,d.finally(()=>{a_.current===d&&(a_.current=null)}),d},[]),bn=(0,e.useCallback)(()=>{a0.current||!bf.current||aC.current||(a0.current=!0,bm().then(()=>{a1.current&&(bf.current?.(),ar(!1))}).finally(()=>{a0.current=!1}))},[bm]),bo=(0,e.useCallback)((a,b,c,d,e)=>{a7.current=a7.current.catch(()=>void 0).then(async()=>{aW.current===a&&aZ.current&&await M(a,b,c,d,e)}).catch(a=>{B.warn("MCP App tool delivery failed",a)})},[]),bp=(0,e.useCallback)(async()=>{if(a_.current&&await a_.current,aX.current||!aS.current)return;let b=aY.current+1;aY.current=b;let d=()=>aY.current===b&&aX.current;aX.current=!0,aK([]),at(!0),av(null);try{var e,f,g;let h,i,[j,k]=await Promise.all([w.S.readResourceFromApp(c,y),Q(c,y,a5.current)]);if(!d())return;if(j?.httpStatus===403)throw Error(j?.error||ai("chat.app.accessDisabled"));if(!j||!1===j.success)throw Error(j?.error||ai("chat.app.readFailed"));let l=function(a,b){let c,d=a?.contents;if(!Array.isArray(d)||0===d.length)throw Error("Resource has no contents");let e=d.find(a=>a.uri===b&&"string"==typeof a.mimeType&&(0,x.q$)(a.mimeType)&&("string"==typeof a.text||"string"==typeof a.blob));if(!e)throw Error(`Resource ${b} did not return MCP App HTML`);try{var f;let a;c="string"==typeof e.text?e.text:(f=e.blob,a=Uint8Array.from(atob(f),a=>a.charCodeAt(0)),new TextDecoder("utf-8",{fatal:!0}).decode(a))}catch{throw Error(`Resource ${b} contains invalid base64 UTF-8 HTML`)}if(new TextEncoder().encode(c).length>x.Pt)throw Error(`Resource exceeds the ${Math.round(x.Pt/1024)} KiB size cap`);let g=(e._meta??e.meta)?.ui,h=t.c0.safeParse(g?.csp);if(g?.csp!==void 0&&!h.success)throw Error(`Resource ${b} declares an invalid CSP policy`);let i=t.Ml.safeParse(g?.permissions);if(g?.permissions!==void 0&&!i.success)throw Error(`Resource ${b} declares invalid sandbox permissions`);return{html:c,csp:h.success?function(a,b=!1){return{connectDomains:K(a.connectDomains,["https","wss"],b),resourceDomains:K(a.resourceDomains,["https"],b),frameDomains:K(a.frameDomains,["https"],b),baseUriDomains:K(a.baseUriDomains,["https"],b)}}(h.data):void 0,permissions:i.success&&i.data.clipboardWrite?{clipboardWrite:{}}:void 0,prefersBorder:"boolean"==typeof g?.prefersBorder?g.prefersBorder:void 0}}(j.data,y);aM(!1===l.prefersBorder);let m=await J(c,y,a);if(!d()||!aS.current)return;let n=document.createElement("iframe");n.title=ai("chat.app.frameTitle",{uri:y}),n.setAttribute("sandbox","allow-scripts allow-same-origin"),n.referrerPolicy="origin";let o=(0,t.Sy)(l.permissions);o&&n.setAttribute("allow",o);let p=!1===l.prefersBorder?"transparent":"#fff";n.style.cssText=bl.current||"fullscreen"===a3.current?`width:100%;height:100%;border:none;background:${p};`:`width:100%;min-height:120px;height:200px;border:none;background:${p};`+(!1===l.prefersBorder?"":"border-radius:4px;"),aS.current.appendChild(n),aU.current=n;let q=new URL(m);l.csp&&q.searchParams.set("csp",JSON.stringify(l.csp));let r=q.origin,s=new Promise((a,b)=>{let c=setTimeout(()=>{window.removeEventListener("message",d),b(Error(ai("chat.app.proxyTimeout")))},1e4),d=b=>{b.source===n.contentWindow&&b.origin===r&&b.data?.jsonrpc==="2.0"&&b.data?.method==="ui/notifications/sandbox-proxy-ready"&&(clearTimeout(c),window.removeEventListener("message",d),a())};window.addEventListener("message",d)});if(n.src=q.href,await s,!d()||aU.current!==n)return;let u=a3.current,v="inline";a3.current=v;let z=new t.T1((e=a=>{aY.current===b&&aW.current===z&&(av(a),at(!1),bm().finally(()=>{bl.current&&bk.current?.()}))},{getServerCapabilities:()=>({tools:{},resources:{}}),setNotificationHandler:()=>{},request:async(a,b,d)=>{let{method:f,params:g}=a;if("tools/call"===f){B.info(`MCP App tools/call: ${c}/${g?.name}`);let a=await w.S.callToolFromApp(c,g.name,g.arguments??{},void 0,d?.signal,ap);if(a?.httpStatus===403){let b=a?.error||"MCP Apps access was disabled for this server";throw e(b),Error(b)}if(!a||!1===a.success)throw Error(a?.error||`Tool call failed: ${g?.name}`);return a.data}if("resources/read"===f){let a=await w.S.readResourceFromApp(c,g.uri);if(a?.httpStatus===403){let b=a?.error||"MCP Apps access was disabled for this server";throw e(b),Error(b)}if(!a||!1===a.success)throw Error(a?.error||`Resource read failed: ${g?.uri}`);return a.data}if("resources/list"===f)return{resources:[]};if("resources/templates/list"===f)return{resourceTemplates:[]};throw Error(`MCP App requested unsupported method: ${f}`)}}),C,{openLinks:{},serverTools:{},serverResources:{},logging:{},...bd.current?{message:{text:{}}}:{},...be.current?{updateModelContext:{text:{},structuredContent:{}}}:{},sandbox:{csp:l.csp,permissions:l.permissions}},{hostContext:{...k?{toolInfo:k}:{},theme:"dark"===an.palette.mode?"dark":"light",platform:"web",displayMode:v,availableDisplayModes:a4.current,containerDimensions:P(aS.current,bl.current),locale:navigator.language,timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,userAgent:navigator.userAgent,deviceCapabilities:{touch:navigator.maxTouchPoints>0,hover:window.matchMedia?.("(hover: hover)").matches??!1}}});aW.current=z;let A=()=>d()&&aW.current===z;if(z.onopenlink=async({url:a})=>{if(!A())return{isError:!0};let b=function(a){try{let b=new URL(a);if(!D.has(b.protocol)||b.username||b.password)return null;return b.href}catch{return null}}(a);if(!b)return B.warn("MCP App open-link rejected by URL policy",{serverName:c,uri:y}),{isError:!0};let d=window.open(b,"_blank","noopener,noreferrer");return d?(d.opener=null,{}):{isError:!0}},z.ondownloadfile=async({contents:a})=>{if(!A())return{isError:!0};try{for(let b of a??[]){let a,c=b?.resource;if(!c)continue;let d=("string"==typeof c.uri?c.uri.split("/").pop():"")||"download",e="string"==typeof c.mimeType?c.mimeType:"application/octet-stream";if("string"==typeof c.blob){let b=Uint8Array.from(atob(c.blob),a=>a.charCodeAt(0));a=new Blob([b],{type:e})}else a=new Blob([String(c.text??"")],{type:e});let f=URL.createObjectURL(a),g=document.createElement("a");g.href=f,g.download=d,document.body.appendChild(g),g.click(),g.remove(),setTimeout(()=>URL.revokeObjectURL(f),4e3)}return{}}catch(a){return B.warn("MCP App download failed",a),{isError:!0}}},z.onloggingmessage=a=>{A()&&B.debug("MCP App log",a?.data)},z.onmessage=async a=>{if(!A())return{};if(!bd.current)throw Error("This host cannot deliver ui/message in this surface");let b=function(a){if(a?.role!=="user")throw Error('This host accepts ui/message only with role "user"');let b=a?.content,c=Array.isArray(b)?b:b&&"object"==typeof b?[b]:[];if(0===c.length||c.some(a=>a?.type!=="text"||"string"!=typeof a.text))throw Error("This host accepts text-only ui/message content");let d=c.map(a=>a.text).join("\n").trim();if(!d)throw Error("ui/message text must not be empty");return d}(a);if(!await bd.current(b))throw Error("ui/message was not delivered");return{}},z.onupdatemodelcontext=async a=>{if(!A())return{};let b=function(a){if(!a||"object"!=typeof a||Array.isArray(a))return"ui/update-model-context params must be an object";if(void 0!==a.content){if(!Array.isArray(a.content))return"Model context content must be an array";for(let b of a.content)if(!b||"object"!=typeof b||Array.isArray(b)||!F.has(b.type))return"Model context contains a modality this host did not advertise"}return void 0!==a.structuredContent&&(!a.structuredContent||"object"!=typeof a.structuredContent||Array.isArray(a.structuredContent))?"Model structuredContent must be an object":H(a)>G?`Model context exceeds ${G} bytes`:null}(a);if(b)throw Error(b);let d=`${c}::${y}`;if(!be.current)throw Error("This host cannot preserve model context in this surface");if(!await be.current(d,a))throw Error("MCP App model context was not stored");return{}},z.onsizechange=async({width:a,height:b})=>{if(!A()||bl.current)return;let c=aS.current?.getBoundingClientRect().width||aS.current?.clientWidth||0,d=function(a,b){let c={};if(Number.isFinite(a.width)&&a.width>0){let d=Number.isFinite(b)&&b>0?b:6e3;c.width=Math.min(a.width,d,6e3)}return Number.isFinite(a.height)&&a.height>0&&(c.height=Math.min(a.height,6e3)),c}({width:a,height:b},c);void 0!==d.height&&(aV.current=d.height,"fullscreen"!==a3.current&&(n.style.height=`${d.height}px`)),void 0!==d.width&&(n.style.width=`${d.width}px`,n.style.maxWidth="100%")},z.onrequestdisplaymode=async({mode:a})=>{if(!A())return{mode:a3.current};let b=a3.current,c=a2.current;if(!N(a,a4.current,c))return{mode:b};if("pip"===a&&!bl.current&&bf.current)return setTimeout(bn,0),{mode:b};let d=b;return(d=bj.current?await bj.current(a,[...c]):a)===b||N(d,a4.current,c)||(d=b),d!==b&&(a3.current=d,aG(d),await z.sendHostContextChange({displayMode:d})),{mode:d}},z.onrequestteardown=()=>{A()&&bm().finally(()=>{bk.current?bk.current():(a3.current="inline",aG("inline"),ar(!1))})},z.oninitialized=()=>{var a,b,c,d;if(!A())return;let e=z.getAppCapabilities()?.availableDisplayModes,f=Array.isArray(e)?[...new Set(e.filter(a=>E.includes(a)))]:[];a2.current=f,aK(f),bh.current?.(f.includes("pip")),bi.current?.([...f]),aZ.current=!0;let g=(a=u,b=bl.current,c=a4.current,d=f,b?N("pip",c,d)?"fullscreen"===a&&N("fullscreen",c,d)?"fullscreen":"pip":null:"fullscreen"===a&&N("fullscreen",c,d)?"fullscreen":"inline");if(null===g){av(ai("chat.app.canvasUnsupported")),at(!1),bm();return}bg.current&&f.includes("pip")&&!bl.current&&bf.current&&setTimeout(bn,0),a3.current=g,aG(g),g!==v&&z.sendHostContextChange({displayMode:g});let h=aS.current;if(h&&"u">typeof ResizeObserver){let a=()=>{if(!A()||!aZ.current)return;let a=h.getBoundingClientRect();a.width<=0||bl.current&&a.height<=0||z.sendHostContextChange({containerDimensions:P(h,bl.current)})};a$.current?.disconnect(),a$.current=new ResizeObserver(a),a$.current.observe(h),a()}let i=a9.current;a8.current=O(i.toolName,i.updateId,i.args,i.resultContent,i.cancelledReason,i.isError),(void 0!==i.args||void 0!==i.resultContent||void 0!==i.cancelledReason||!0===i.isError)&&bo(z,i.args,i.resultContent,i.cancelledReason,i.isError),at(!1)},await z.connect((f=n.contentWindow,g=n.contentWindow,h=new t.hJ(f,g),i={start:async()=>{h.onmessage=(a,b)=>{i.onmessage?.("ui/message"!==a.method||!a.params||Array.isArray(a.params.content)||!a.params.content||"object"!=typeof a.params.content?a:{...a,params:{...a.params,content:[a.params.content]}},b)},h.onerror=a=>i.onerror?.(a),h.onclose=()=>i.onclose?.(),await h.start()},send:(a,b)=>h.send(a,b),close:()=>h.close(),setProtocolVersion:a=>h.setProtocolVersion?.(a)})),!A())return;await z.sendSandboxResourceReady({html:l.html,csp:l.csp,permissions:l.permissions})}catch(a){if(!d())return;B.warn(`Failed to mount MCP App ${y} from ${c}`,a),av(a instanceof Error?a.message:ai("chat.app.loadFailed")),at(!1),bm()}},[bn,ap,bo,c,bm,an.palette.mode,y,ai]),bq=(0,e.useCallback)(()=>{let a=!aq;a||"fullscreen"!==a3.current||(a3.current="inline",aG("inline"),aW.current?.sendHostContextChange({displayMode:"inline"})),a&&ah?.(),ar(a),a&&("internal"===aw||"granted"===aw)&&setTimeout(()=>{bp()},0)},[aw,aq,bp,ah]);if((0,e.useEffect)(()=>{let a=aN.current;aN.current=ae,ac||!ae||a||aq||ar(!0)},[ae,ac,aq]),(0,e.useEffect)(()=>{ac&&("internal"===aw||"granted"===aw)&&!aX.current&&bp()},[aw,ac,bp]),(0,e.useEffect)(()=>{if(!ac&&("internal"===aw||"granted"===aw)&&aq&&!aX.current){let a=window.setTimeout(()=>{bp()},0);return()=>window.clearTimeout(a)}},[aw,ae,ac,aq,bp]),(0,e.useEffect)(()=>{let a=aU.current;if(a){if(ac||"fullscreen"===aQ){a.style.width="100%",a.style.height="100%",a.style.minHeight="0",a.style.borderRadius="0";return}a.style.width="100%",a.style.height=`${aV.current}px`,a.style.minHeight="120px",a.style.borderRadius=aL?"0":"4px"}},[aL,ac,aQ]),(0,e.useEffect)(()=>{a6.current===z||(a6.current=z,(aX.current||a_.current)&&bm().then(()=>{a1.current&&(bl.current||aq)&&bp()}))},[aq,bp,bm,z]),(0,e.useEffect)(()=>{let a=O(z,R,I,L,S,T);aZ.current&&aW.current&&a!==a8.current&&(a8.current=a,bm().then(()=>{a1.current&&(bl.current||aq)&&bp()}))},[aq,bp,bm,I,S,T,z,L,R]),(0,e.useEffect)(()=>{Z&&aZ.current&&aW.current&&a3.current!==Z&&N(Z,a4.current,a2.current)&&(a3.current=Z,aG(Z),aW.current.sendHostContextChange({displayMode:Z}))},[Z]),(0,e.useEffect)(()=>{aZ.current&&aW.current&&aW.current?.sendHostContextChange({theme:"dark"===an.palette.mode?"dark":"light"})},[an.palette.mode]),(0,e.useEffect)(()=>{let a=ab??`${c}::${y}`;return aa?.(a,bm),()=>aa?.(a,null)},[aa,c,bm,ab,y]),(0,e.useEffect)(()=>{let a=a=>{let b=a.detail;b?.serverName===c&&(b.config?.enableMcpApps===!1||b.config?.disabled===!0)&&(av(ai("chat.app.accessDisabled")),at(!1),bm().finally(()=>{bl.current&&bk.current?.()}))};return window.addEventListener("flujo:mcp-server-config-changed",a),()=>{window.removeEventListener("flujo:mcp-server-config-changed",a)}},[c,bm,ai]),(0,e.useEffect)(()=>(a1.current=!0,()=>{a1.current=!1,bm()}),[bm]),ac)return(0,d.jsxs)(g.default,{sx:{height:"100%",width:"100%",minHeight:0,display:"flex",visibility:ad?"visible":"hidden",pointerEvents:ad?"auto":"none",flexDirection:"column"},children:[al&&am&&"loading"===aw&&(0,d.jsx)(h.A,{variant:"body2",sx:{p:2},children:ai("chat.app.consentChecking")}),"prompt"===aw&&(0,d.jsxs)(g.default,{sx:{p:2},children:[(0,d.jsx)(h.A,{variant:"body2",sx:{mb:1},children:ai("chat.app.consentPrompt")}),(0,d.jsxs)(h.A,{variant:"caption",color:"text.secondary",display:"block",sx:{mb:1},children:[c," — ",y]}),(0,d.jsx)(i.A,{size:"small",disabled:ay,onClick:()=>{aD("allow-once")},children:ai("chat.app.consentAllowOnce")}),(0,d.jsx)(i.A,{size:"small",disabled:ay,onClick:()=>{aD("allow-always")},children:ai("chat.app.consentAllowAlways")}),(0,d.jsx)(i.A,{size:"small",disabled:ay,color:"inherit",onClick:()=>{aD("deny-always")},children:ai("chat.app.consentNeverAllow")})]}),"denied"===aw&&(0,d.jsxs)(g.default,{sx:{p:2},children:[(0,d.jsx)(h.A,{variant:"body2",color:"text.secondary",sx:{mb:1},children:ai("chat.app.consentBlocked")}),(0,d.jsx)(i.A,{size:"small",disabled:ay,onClick:()=>{aD("allow-always")},children:ai("chat.app.consentAllowAlways")}),(0,d.jsx)(i.A,{size:"small",disabled:ay,color:"inherit",onClick:()=>{aE()},children:ai("chat.app.consentAskAgain")})]}),aA&&(0,d.jsx)(j.A,{severity:"error",sx:{m:1},children:aA}),("internal"===aw||"granted"===aw)&&as&&(0,d.jsxs)(g.default,{sx:{display:"flex",alignItems:"center",gap:1,py:2,justifyContent:"center"},children:[(0,d.jsx)(k.default,{size:16,thickness:6}),(0,d.jsx)(h.A,{variant:"body2",color:"text.secondary",children:ai("chat.app.loading")})]}),au&&(0,d.jsx)(j.A,{severity:"error",sx:{m:1},children:au}),(0,d.jsx)(g.default,{ref:aS,sx:{flex:1,minHeight:0,width:"100%",display:au?"none":"block"}})]});let br=aJ.includes("inline")&&aJ.includes("fullscreen")&&aR.includes("fullscreen"),bs=aJ.includes("inline")&&aJ.includes("pip")&&aR.includes("pip")&&!!W;return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(g.default,{ref:aT,sx:{mt:1,...aL?{border:0,borderRadius:0}:{border:"1px solid",borderColor:"divider",borderRadius:1},overflow:"hidden",..."fullscreen"===aF?{position:"fixed",left:(aH?.x??16)-bc.x,top:(aH?.y??16)-bc.y,width:aH?.width??"calc(100vw - 32px)",height:aH?.height??"calc(100vh - 32px)",minWidth:"min(480px, 100vw)",minHeight:"min(320px, 100vh)",maxWidth:"100vw",maxHeight:"100vh",zIndex:1300,bgcolor:"background.paper",boxShadow:6,display:"flex",flexDirection:"column"}:{}},children:["fullscreen"===aF&&(0,d.jsx)(A.y1,{label:ai("chat.canvas.resize"),onResizeStart:bb}),(0,d.jsxs)(g.default,{onPointerDown:ba,sx:{display:"flex",alignItems:"center",gap:1,px:1,py:.5,bgcolor:"action.hover",cursor:"fullscreen"===aF?"move":"default",userSelect:"none",flexShrink:0},children:[(0,d.jsx)(n.A,{fontSize:"small",color:"primary"}),(0,d.jsx)(h.A,{variant:"body2",sx:{fontWeight:500},children:ai("chat.app.fromServer",{server:c})}),ag>1&&(0,d.jsxs)(h.A,{variant:"caption",color:"text.secondary",children:["\xd7",ag]}),(0,d.jsx)(l.A,{title:ai("chat.app.sandboxHelp"),children:(0,d.jsx)(o.A,{fontSize:"small",color:"action"})}),(0,d.jsx)(g.default,{sx:{flex:1}}),aq&&bs&&(0,d.jsx)(i.A,{size:"small",onClick:bn,children:ai("chat.app.canvas")}),aq&&(0,d.jsx)(l.A,{title:br?"fullscreen"===aF?ai("chat.app.exitFullscreen"):ai("chat.app.fullscreen"):ai("chat.app.fullscreenUnsupported"),children:(0,d.jsx)("span",{children:(0,d.jsx)(i.A,{size:"small",disabled:!br,onClick:()=>{let a="fullscreen"===aF?"inline":"fullscreen";N(a,aR,aJ)&&(a3.current=a,aG(a),aW.current?.sendHostContextChange({displayMode:a}))},sx:{minWidth:0},children:"fullscreen"===aF?(0,d.jsx)(s.A,{fontSize:"small"}):(0,d.jsx)(r.A,{fontSize:"small"})})})}),(0,d.jsx)(i.A,{size:"small",onClick:bq,startIcon:aq?(0,d.jsx)(q.A,{}):(0,d.jsx)(p.A,{}),children:aq?ai("chat.app.hide"):ai("chat.app.open")})]}),aq&&"prompt"===aw&&(0,d.jsxs)(g.default,{sx:{p:1},children:[(0,d.jsx)(h.A,{variant:"body2",sx:{mb:1},children:ai("chat.app.consentPrompt")}),(0,d.jsx)(h.A,{variant:"caption",color:"text.secondary",display:"block",sx:{mb:1},children:y}),(0,d.jsx)(i.A,{size:"small",disabled:ay,onClick:()=>{aD("allow-once")},children:ai("chat.app.consentAllowOnce")}),(0,d.jsx)(i.A,{size:"small",disabled:ay,onClick:()=>{aD("allow-always")},children:ai("chat.app.consentAllowAlways")}),(0,d.jsx)(i.A,{size:"small",disabled:ay,color:"inherit",onClick:()=>{aD("deny-always")},children:ai("chat.app.consentNeverAllow")})]}),aq&&"denied"===aw&&(0,d.jsxs)(g.default,{sx:{p:1},children:[(0,d.jsx)(h.A,{variant:"body2",color:"text.secondary",sx:{mb:1},children:ai("chat.app.consentBlocked")}),(0,d.jsx)(i.A,{size:"small",disabled:ay,onClick:()=>{aD("allow-always")},children:ai("chat.app.consentAllowAlways")}),(0,d.jsx)(i.A,{size:"small",disabled:ay,color:"inherit",onClick:()=>{aE()},children:ai("chat.app.consentAskAgain")})]}),aq&&aA&&(0,d.jsx)(j.A,{severity:"error",sx:{m:1},children:aA}),(0,d.jsx)(m.A,{in:aq&&("internal"===aw||"granted"===aw),onExited:()=>{bm()},sx:"fullscreen"===aF?{flex:1,minHeight:0,display:"flex",flexDirection:"column","& .MuiCollapse-wrapper, & .MuiCollapse-wrapperInner":{height:"100%",minHeight:0,display:"flex",flexDirection:"column"}}:void 0,children:(0,d.jsxs)(g.default,{sx:{p:1,height:"fullscreen"===aF?"100%":"auto",minHeight:0,display:"flex",flexDirection:"column"},children:[as&&(0,d.jsxs)(g.default,{sx:{display:"flex",alignItems:"center",gap:1,py:2,justifyContent:"center"},children:[(0,d.jsx)(k.default,{size:16,thickness:6}),(0,d.jsx)(h.A,{variant:"body2",color:"text.secondary",children:ai("chat.app.loading")})]}),au&&(0,d.jsx)(j.A,{severity:"error",sx:{my:1},children:au}),(0,d.jsx)(g.default,{ref:aS,sx:{width:"100%",flex:"fullscreen"===aF?1:void 0,minHeight:0,height:"fullscreen"===aF?"100%":"auto",display:au?"none":"block"}})]})})]}),(0,d.jsx)(A.Fy,{cursor:aO})]})}},94651:(a,b,c)=>{c.d(b,{DG:()=>f,Gt:()=>h,Pt:()=>e,_w:()=>j,q$:()=>g});let d="ui://",e=2097152;function f(a){return"string"==typeof a&&a.length>d.length&&a.slice(0,d.length).toLowerCase()===d&&!/\s/.test(a)}function g(a){if("string"!=typeof a)return!1;let[b,...c]=a.toLowerCase().split(";");if("text/html"!==b.trim())return!1;let d=!1;for(let a of c){let b=a.indexOf("=");if(b<=0)return!1;let c=a.slice(0,b).trim(),e=a.slice(b+1).trim();if(!c||!e)return!1;if("profile"===c){if(d||"mcp-app"!==e)return!1;d=!0}}return d}function h(a){if(!a||"object"!=typeof a)return;let b=a["ui/resourceUri"];if(f(b))return b;for(let b of[a.ui,a["io.modelcontextprotocol/ui"]])if(b&&"object"==typeof b){let a=b.resourceUri;if(f(a))return a}}let i=/^(http|ws):\/\/(127\.0\.0\.1|localhost|\[::1\]):(\d{1,5}|\*)$/i;function j(a,b=["http","ws"]){let c=function(a,b){if("string"!=typeof a||0===a.length||a.length>2048||/[^\x21-\x7e]/.test(a)||/[;,'"`$<>\\()]/.test(a))return;let c=i.exec(a);if(!c)return;let d=c[1].toLowerCase();if(b.includes(d)){if("*"!==c[3]){let a=Number(c[3]);if(!Number.isInteger(a)||a<1||a>65535)return}return{scheme:d,host:c[2].toLowerCase()}}}(a,b);return c&&`${c.scheme}://${c.host}:*`}}};
@@ -1 +1 @@
1
- "use strict";exports.id=87,exports.ids=[87],exports.modules={70087:(a,b,c)=>{c.d(b,{normalizeMaxTokens:()=>d.c});var d=c(70934);c(93702)},70934:(a,b,c)=>{c.d(b,{c:()=>e,m:()=>d});let d=255;function e(a){return"number"==typeof a&&Number.isFinite(a)&&a>0?Math.floor(a):void 0}},93702:(a,b,c)=>{function d(a){let b=i(a.provider,a.adapter,a.name??"");if(void 0!==a.temperature&&""!==a.temperature){let c="number"==typeof a.temperature?a.temperature:"string"==typeof a.temperature?Number(a.temperature):NaN;if(!b.creativity||!Number.isFinite(c)||c<b.creativity.min||c>b.creativity.max)return b.creativity?`Creativity must be between ${b.creativity.min} and ${b.creativity.max}`:"Creativity is not supported by this model"}return void 0===a.reasoningEffort||""===a.reasoningEffort||b.effortLevels?.includes(a.reasoningEffort)?void 0===a.thinkingLevel||""===a.thinkingLevel||b.thinkingLevels?.includes(a.thinkingLevel)?void 0===a.thinkingBudget||""===a.thinkingBudget||b.thinkingBudget&&"number"==typeof a.thinkingBudget&&Number.isInteger(a.thinkingBudget)&&!(a.thinkingBudget<-1)?void 0===a.serviceTier||""===a.serviceTier||b.priority&&("default"===a.serviceTier||"priority"===a.serviceTier)?void 0:"The selected service tier is not supported by this model":"Thinking budget must be an integer greater than or equal to -1 for this model":"The selected thinking level is not supported by this model":"The selected reasoning effort is not supported by this model"}function e(a,b,c,d=""){let f=i(b,c,d);if(!f.creativity||void 0===a||""===a)return;let g="number"==typeof a?a:"string"==typeof a?Number(a):NaN;if(Number.isFinite(g))return Math.min(f.creativity.max,Math.max(f.creativity.min,g))}c.d(b,{VQ:()=>e,u3:()=>d,vt:()=>j});let f=/(^|[/_-])(o[1-9]|gpt-5)(?:[./_-]|$)/i,g=/claude-(?:fable|mythos)-5|claude-opus-4-(?:[7-9]|\d{2,})|claude-sonnet-5/i,h=/^(?:opus|sonnet|fable)$|claude-(?:fable|mythos)-5|claude-opus-4-(?:[6-9]|\d{2,})|claude-sonnet-4-6/i;function i(a,b,c=""){let d=b||"openai",e=c.trim();if("codex-cli"===d)return{effortLevels:/^gpt-5\.6-(?:sol|terra)$/i.test(e)?["low","medium","high","xhigh","max","ultra"]:/^gpt-5\.6-/i.test(e)?["low","medium","high","xhigh","max"]:["low","medium","high","xhigh"],priority:!/(?:mini|spark|review)/i.test(e),maxOutputTokens:!1};if("claude-cli"===d)return{...h.test(e)?{effortLevels:["low","medium","high","xhigh","max"]}:{},maxOutputTokens:!1};if("anthropic"===d)return{...!g.test(e)?{creativity:{min:0,max:1,step:.1}}:{},...h.test(e)?{effortLevels:["low","medium","high","xhigh","max"]}:{},maxOutputTokens:!0};if("gemini"===d)return{creativity:{min:0,max:2,step:.1},.../^gemini-2\.5/i.test(e)?{thinkingBudget:!0}:!/^gemini-2\.0/i.test(e)?{thinkingLevels:["minimal","low","medium","high"]}:{},maxOutputTokens:!0};let j="openai"===(a||"openai")&&f.test(e);return{...!j?{creativity:{min:0,max:2,step:.1}}:{},...j?{effortLevels:["low","medium","high"]}:{},maxOutputTokens:!0}}function j(a){return"claude-cli"===a||"codex-cli"===a}}};
1
+ "use strict";exports.id=87,exports.ids=[87],exports.modules={70087:(a,b,c)=>{c.d(b,{normalizeMaxTokens:()=>d.c});var d=c(70934);c(93702)},70934:(a,b,c)=>{c.d(b,{c:()=>e,m:()=>d});let d=255;function e(a){return"number"==typeof a&&Number.isFinite(a)&&a>0?Math.floor(a):void 0}},93702:(a,b,c)=>{c.d(b,{V0:()=>d,VQ:()=>f,u3:()=>e,vt:()=>k});let d="2024-10-21";function e(a){if("azure"===a.adapter||"azure"===a.provider){if(!a.name?.trim())return"Azure OpenAI deployment name is required";let b=a.baseUrl?.trim();if(!b)return"Azure OpenAI endpoint is required";try{let a=new URL(b);if("https:"!==a.protocol)return"Azure OpenAI endpoint must use HTTPS"}catch{return"Azure OpenAI endpoint must be a valid URL"}if(!a.azureApiVersion?.trim())return"Azure OpenAI API version is required"}let b=j(a.provider,a.adapter,a.name??"");if(void 0!==a.temperature&&""!==a.temperature){let c="number"==typeof a.temperature?a.temperature:"string"==typeof a.temperature?Number(a.temperature):NaN;if(!b.creativity||!Number.isFinite(c)||c<b.creativity.min||c>b.creativity.max)return b.creativity?`Creativity must be between ${b.creativity.min} and ${b.creativity.max}`:"Creativity is not supported by this model"}return void 0===a.reasoningEffort||""===a.reasoningEffort||b.effortLevels?.includes(a.reasoningEffort)?void 0===a.thinkingLevel||""===a.thinkingLevel||b.thinkingLevels?.includes(a.thinkingLevel)?void 0===a.thinkingBudget||""===a.thinkingBudget||b.thinkingBudget&&"number"==typeof a.thinkingBudget&&Number.isInteger(a.thinkingBudget)&&!(a.thinkingBudget<-1)?void 0===a.serviceTier||""===a.serviceTier||b.priority&&("default"===a.serviceTier||"priority"===a.serviceTier)?void 0:"The selected service tier is not supported by this model":"Thinking budget must be an integer greater than or equal to -1 for this model":"The selected thinking level is not supported by this model":"The selected reasoning effort is not supported by this model"}function f(a,b,c,d=""){let e=j(b,c,d);if(!e.creativity||void 0===a||""===a)return;let g="number"==typeof a?a:"string"==typeof a?Number(a):NaN;if(Number.isFinite(g))return Math.min(e.creativity.max,Math.max(e.creativity.min,g))}let g=/(^|[/_-])(o[1-9]|gpt-5)(?:[./_-]|$)/i,h=/claude-(?:fable|mythos)-5|claude-opus-4-(?:[7-9]|\d{2,})|claude-sonnet-5/i,i=/^(?:opus|sonnet|fable)$|claude-(?:fable|mythos)-5|claude-opus-4-(?:[6-9]|\d{2,})|claude-sonnet-4-6/i;function j(a,b,c=""){let d=b||"openai",e=c.trim();if("codex-cli"===d)return{effortLevels:/^gpt-5\.6-(?:sol|terra)$/i.test(e)?["low","medium","high","xhigh","max","ultra"]:/^gpt-5\.6-/i.test(e)?["low","medium","high","xhigh","max"]:["low","medium","high","xhigh"],priority:!/(?:mini|spark|review)/i.test(e),maxOutputTokens:!1};if("claude-cli"===d)return{...i.test(e)?{effortLevels:["low","medium","high","xhigh","max"]}:{},maxOutputTokens:!1};if("anthropic"===d)return{...!h.test(e)?{creativity:{min:0,max:1,step:.1}}:{},...i.test(e)?{effortLevels:["low","medium","high","xhigh","max"]}:{},maxOutputTokens:!0};if("gemini"===d)return{creativity:{min:0,max:2,step:.1},.../^gemini-2\.5/i.test(e)?{thinkingBudget:!0}:!/^gemini-2\.0/i.test(e)?{thinkingLevels:["minimal","low","medium","high"]}:{},maxOutputTokens:!0};let f="openai"===(a||"openai")&&g.test(e);return{...!f?{creativity:{min:0,max:2,step:.1}}:{},...f?{effortLevels:["low","medium","high"]}:{},maxOutputTokens:!0}}function k(a){return"claude-cli"===a||"codex-cli"===a}}};