flujo-ai 3.10.0 → 3.11.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 (260) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +110 -110
  3. package/.next/app-path-routes-manifest.json +5 -5
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +15 -15
  6. package/.next/react-loadable-manifest.json +7 -7
  7. package/.next/server/app/_not-found/page.js +1 -1
  8. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  9. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/_not-found.html +1 -1
  11. package/.next/server/app/_not-found.rsc +1 -1
  12. package/.next/server/app/api/backup/route.js +1 -1
  13. package/.next/server/app/api/backup/route.js.nft.json +1 -1
  14. package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/browse/route.js +1 -2
  16. package/.next/server/app/api/browse/route.js.nft.json +1 -1
  17. package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/cwd/route.js +1 -2
  19. package/.next/server/app/api/cwd/route.js.nft.json +1 -1
  20. package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/encryption/secure/route.js +1 -1
  22. package/.next/server/app/api/encryption/secure/route.js.nft.json +1 -1
  23. package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
  24. package/.next/server/app/api/env/route.js +2 -2
  25. package/.next/server/app/api/env/route.js.nft.json +1 -1
  26. package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/flow/[id]/route.js +1 -1
  28. package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -1
  29. package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/flow/prompt-renderer/route.js +2 -2
  31. package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
  32. package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/flow/route.js +1 -1
  34. package/.next/server/app/api/flow/route.js.nft.json +1 -1
  35. package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/git/route.js +4 -5
  37. package/.next/server/app/api/git/route.js.nft.json +1 -1
  38. package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/init/route.js +1 -1
  40. package/.next/server/app/api/init/route.js.nft.json +1 -1
  41. package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/mcp/cancel/route.js +2 -2
  43. package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -1
  44. package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js +1 -1
  46. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -1
  47. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js +1 -1
  49. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -1
  50. package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js +1 -1
  52. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -1
  53. package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/mcp/servers/[name]/resources/route.js +1 -1
  55. package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -1
  56. package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/mcp/servers/[name]/route.js +1 -1
  58. package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -1
  59. package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/mcp/servers/[name]/status/route.js +1 -1
  61. package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -1
  62. package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js +1 -1
  64. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -1
  65. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
  66. package/.next/server/app/api/mcp/servers/[name]/tools/route.js +1 -1
  67. package/.next/server/app/api/mcp/servers/[name]/tools/route.js.nft.json +1 -1
  68. package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/mcp/servers/route.js +1 -1
  70. package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
  71. package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
  72. package/.next/server/app/api/mcp/test-connection/route.js +1 -1
  73. package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -1
  74. package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/mcp/test-connection/stream/route.js +1 -1
  76. package/.next/server/app/api/mcp/test-connection/stream/route.js.nft.json +1 -1
  77. package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/mcp-registry/route.js +1 -2
  79. package/.next/server/app/api/mcp-registry/route.js.nft.json +1 -1
  80. package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/mcp-registry/spotlight/route.js +1 -1
  82. package/.next/server/app/api/mcp-registry/spotlight/route.js.nft.json +1 -1
  83. package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/model/[id]/route.js +1 -1
  85. package/.next/server/app/api/model/[id]/route.js.nft.json +1 -1
  86. package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/model/provider/route.js +2 -2
  88. package/.next/server/app/api/model/provider/route.js.nft.json +1 -1
  89. package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/model/route.js +1 -1
  91. package/.next/server/app/api/model/route.js.nft.json +1 -1
  92. package/.next/server/app/api/model/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/model/test/route.js +2 -2
  94. package/.next/server/app/api/model/test/route.js.nft.json +1 -1
  95. package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/oauth/callback/route.js +2 -2
  97. package/.next/server/app/api/oauth/callback/route.js.nft.json +1 -1
  98. package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/oauth/initiate/route.js +2 -2
  100. package/.next/server/app/api/oauth/initiate/route.js.nft.json +1 -1
  101. package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/oauth/reset/route.js +2 -2
  103. package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -1
  104. package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/planned-executions/[id]/route.js +1 -1
  106. package/.next/server/app/api/planned-executions/[id]/route.js.nft.json +1 -1
  107. package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/planned-executions/[id]/run/route.js +1 -1
  109. package/.next/server/app/api/planned-executions/[id]/run/route.js.nft.json +1 -1
  110. package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/planned-executions/[id]/runs/route.js +1 -1
  112. package/.next/server/app/api/planned-executions/[id]/runs/route.js.nft.json +1 -1
  113. package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/planned-executions/preview-schedule/route.js +1 -2
  115. package/.next/server/app/api/planned-executions/preview-schedule/route.js.nft.json +1 -1
  116. package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/planned-executions/route.js +1 -1
  118. package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
  119. package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/restore/route.js +1 -1
  121. package/.next/server/app/api/restore/route.js.nft.json +1 -1
  122. package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/storage/route.js +1 -1
  124. package/.next/server/app/api/storage/route.js.nft.json +1 -1
  125. package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/update/route.js +1 -2
  127. package/.next/server/app/api/update/route.js.nft.json +1 -1
  128. package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/webhooks/[id]/route.js +1 -1
  130. package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
  131. package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/chat/page.js +1 -1
  133. package/.next/server/app/chat/page.js.nft.json +1 -1
  134. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  135. package/.next/server/app/chat.html +1 -1
  136. package/.next/server/app/chat.rsc +2 -2
  137. package/.next/server/app/docs/page.js +1 -1
  138. package/.next/server/app/docs/page.js.nft.json +1 -1
  139. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  140. package/.next/server/app/docs.html +1 -1
  141. package/.next/server/app/docs.rsc +1 -1
  142. package/.next/server/app/executions/page.js +1 -1
  143. package/.next/server/app/executions/page.js.nft.json +1 -1
  144. package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
  145. package/.next/server/app/executions.html +1 -1
  146. package/.next/server/app/executions.rsc +1 -1
  147. package/.next/server/app/flows/page.js +1 -1
  148. package/.next/server/app/flows/page.js.nft.json +1 -1
  149. package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
  150. package/.next/server/app/flows.html +1 -1
  151. package/.next/server/app/flows.rsc +1 -1
  152. package/.next/server/app/index.html +1 -1
  153. package/.next/server/app/index.rsc +2 -2
  154. package/.next/server/app/mcp/page.js +1 -1
  155. package/.next/server/app/mcp/page.js.nft.json +1 -1
  156. package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
  157. package/.next/server/app/mcp-flows/route.js +1 -1
  158. package/.next/server/app/mcp-flows/route.js.nft.json +1 -1
  159. package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
  161. package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -1
  162. package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
  163. package/.next/server/app/mcp.html +1 -1
  164. package/.next/server/app/mcp.rsc +2 -2
  165. package/.next/server/app/models/page.js +2 -2
  166. package/.next/server/app/models/page.js.nft.json +1 -1
  167. package/.next/server/app/models/page_client-reference-manifest.js +1 -1
  168. package/.next/server/app/page.js +1 -1
  169. package/.next/server/app/page.js.nft.json +1 -1
  170. package/.next/server/app/page_client-reference-manifest.js +1 -1
  171. package/.next/server/app/settings/page.js +2 -2
  172. package/.next/server/app/settings/page.js.nft.json +1 -1
  173. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  174. package/.next/server/app/settings.html +1 -1
  175. package/.next/server/app/settings.rsc +2 -2
  176. package/.next/server/app/v1/chat/completions/route.js +2 -2
  177. package/.next/server/app/v1/chat/completions/route.js.nft.json +1 -1
  178. package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
  179. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +1 -1
  180. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -1
  181. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
  182. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +2 -2
  183. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -1
  184. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
  185. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -1
  186. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -1
  187. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
  188. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -1
  189. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -1
  190. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
  191. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +1 -1
  192. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -1
  193. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
  194. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +6 -6
  195. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -1
  196. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
  197. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
  198. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
  199. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +2 -2
  201. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -1
  202. package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  203. package/.next/server/app/v1/chat/conversations/route.js +2 -2
  204. package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
  205. package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
  206. package/.next/server/app/v1/models/route.js +2 -2
  207. package/.next/server/app/v1/models/route.js.nft.json +1 -1
  208. package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -1
  209. package/.next/server/app-paths-manifest.json +5 -5
  210. package/.next/server/chunks/{5873.js → 1331.js} +3 -3
  211. package/.next/server/chunks/1403.js +2 -2
  212. package/.next/server/chunks/1692.js +1 -1
  213. package/.next/server/chunks/1905.js +2 -2
  214. package/.next/server/chunks/{5547.js → 2287.js} +2 -2
  215. package/.next/server/chunks/3984.js +2 -2
  216. package/.next/server/chunks/4706.js +1 -1
  217. package/.next/server/chunks/4729.js +2 -2
  218. package/.next/server/chunks/5389.js +4 -4
  219. package/.next/server/chunks/5504.js +17 -0
  220. package/.next/server/chunks/5734.js +2 -2
  221. package/.next/server/chunks/7214.js +1 -1
  222. package/.next/server/chunks/724.js +1 -1
  223. package/.next/server/chunks/7506.js +1 -1
  224. package/.next/server/chunks/{473.js → 7731.js} +2 -2
  225. package/.next/server/chunks/{4323.js → 8126.js} +1 -1
  226. package/.next/server/chunks/8739.js +2 -1
  227. package/.next/server/chunks/9343.js +1 -1
  228. package/.next/server/chunks/{120.js → 9387.js} +2 -2
  229. package/.next/server/chunks/{6637.js → 9688.js} +2 -2
  230. package/.next/server/chunks/9938.js +1 -1
  231. package/.next/server/chunks/9989.js +1 -1
  232. package/.next/server/functions-config-manifest.json +2 -2
  233. package/.next/server/middleware-build-manifest.js +1 -1
  234. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  235. package/.next/server/pages/404.html +1 -1
  236. package/.next/server/pages/500.html +1 -1
  237. package/.next/server/server-reference-manifest.js +1 -1
  238. package/.next/server/server-reference-manifest.json +1 -1
  239. package/.next/static/chunks/3217.1a7e24fd70294370.js +1 -0
  240. package/.next/static/chunks/3545.d3a512315a9fce3e.js +1 -0
  241. package/.next/static/chunks/9164-d15e4dab0a1bf282.js +1 -0
  242. package/.next/static/chunks/9195.294887f083b1a11b.js +1 -0
  243. package/.next/static/chunks/app/models/page-d81d2b1fe2f1d063.js +1 -0
  244. package/.next/static/chunks/app/page-6e18a8cd78b2050e.js +1 -0
  245. package/.next/static/chunks/app/settings/page-d03a168f6efbf7fd.js +1 -0
  246. package/.next/static/chunks/{webpack-6f17a022ac16e8bd.js → webpack-63a4c59e84967e90.js} +1 -1
  247. package/.next/trace +7 -7
  248. package/README.md +1 -1
  249. package/package.json +1 -1
  250. package/.next/server/chunks/2181.js +0 -17
  251. package/.next/server/chunks/2372.js +0 -2
  252. package/.next/static/chunks/3217.79ca74c918fc772c.js +0 -1
  253. package/.next/static/chunks/3545.c3fbe14528517a75.js +0 -1
  254. package/.next/static/chunks/9164-81ca1a1bccdc5ed2.js +0 -1
  255. package/.next/static/chunks/9195.01a57af6d6cdf1a5.js +0 -1
  256. package/.next/static/chunks/app/models/page-f43476ea07d5b501.js +0 -1
  257. package/.next/static/chunks/app/page-471879d3918aeeb6.js +0 -1
  258. package/.next/static/chunks/app/settings/page-88f7e1b65a6681ec.js +0 -1
  259. /package/.next/static/{geAgl8xNIf0s1v2mfu4tE → 9Pzu8N65j3JuRQ7zVUtwD}/_buildManifest.js +0 -0
  260. /package/.next/static/{geAgl8xNIf0s1v2mfu4tE → 9Pzu8N65j3JuRQ7zVUtwD}/_ssgManifest.js +0 -0
@@ -3,4 +3,4 @@
3
3
  <${a}>${b}</${a}>`}a.push(`<${b.function.name}>${d}
4
4
  </${b.function.name}>`)}catch(c){q.error(`[flujo=false] Failed to parse arguments for external tool ${b.function.name}`,{args:b.function.arguments,error:c,convId:A}),a.push(`<${b.function.name}>
5
5
  <error>Failed to parse arguments: ${c instanceof Error?c.message:String(c)}</error>
6
- </${b.function.name}>`)}b.lastResponse={_flujo_xml_tools:a.join("\n\n")},d=i.g4,q.info(`[flujo=false] Prepared XML for external tools. Exiting loop for conv ${A}.`);break}q.warn(`[flujo=false] TOOL_CALL_ACTION received for conv ${A} but no tools found after classification. Treating as final.`),d=i.g4;break}q.warn(`TOOL_CALL_ACTION received for conv ${A} but no tool_calls found in last message. Treating as final.`),d=i.g4;break}let c=await e.FlowExecutor.resolveHandoff(b,d);if(c.isSuccessorEdge){q.info(`[Action Handling] Step ${F}: Handling Handoff Action (Edge ID) for conv ${A}`),q.info(`Handoff action received for conv ${A}. Edge: ${d}`);let a=c.targetNodeId;if("string"==typeof a&&a.length>0){let c,f=b.messages.length>0?b.messages[b.messages.length-1]:null;if(f?.role==="assistant"&&f.tool_calls){let e=f.tool_calls.find(a=>"function"===a.type&&("handoff"===a.function.name||a.function.name.startsWith("handoff_to_")));if(e){c=e.id,q.debug(`Found handoff tool call ID: ${c} for edge ${d}`);let f={id:crypto.randomUUID(),role:"tool",tool_call_id:c,content:JSON.stringify({status:"Handoff processed",targetNodeId:a}),timestamp:Date.now(),processNodeId:b.currentNodeId};b.messages.push(f),q.info(`Appended tool result message for handoff tool call ${c}`)}else q.warn(`Handoff action received for edge ${d}, but could not find corresponding handoff tool call in last assistant message.`)}else q.warn(`Handoff action received for edge ${d}, but the last message was not an assistant message with tool calls.`);J();let g=b.currentNodeId;if(b.currentNodeId=a,b.handoffRequested=void 0,G({type:"handoff",from:g?{nodeId:g}:void 0,toNodeId:a,edgeId:d}),q.info(`Transitioning conv ${A} to node ${b.currentNodeId}`),e.FlowExecutor.conversationStates.set(A,b),K){q.info(`[Debug Step] Paused after handoff to node ${b.currentNodeId} for conv ${A}.`),L();break}q.info(`Continuing loop for conv ${A} after handoff.`);continue}q.error(`Handoff failed for conv ${A}: Successor node for edge ${d} has invalid ID.`),b.lastResponse={success:!1,error:`Handoff failed: Target node for edge ${d} has invalid ID.`},d=i.O;break}if(d===i.E5){q.info(`[Action Handling] Step ${F}: Handling STAY_ON_NODE_ACTION for conv ${A}`),q.info(`Stay on node action received for conv ${A} at step ${F}`);break}q.warn(`Unrecognized action '${d}' received at step ${F} for conv ${A}. Treating as final response.`),d=i.g4;break}}catch(a){if(q.error(`Unhandled error during execution loop for conv ${A}`,{loopError:a}),d!==i.O){let c=a?.details;b.lastResponse={success:!1,error:a instanceof Error?a.message:String(a),errorDetails:a instanceof Error?{name:a.name,message:a.message,stack:a.stack,...c&&"object"==typeof c?c:{}}:void 0},d=i.O}}d===i.O&&"error"!==b.status&&(b.status="error");let M=Date.now()-f,N=b.status||(d===i.g4?"completed":d===i.O?"error":"running");q.info(`Execution finished for conv ${A}. Final Action: ${d}, Final Status: ${N}`,{duration:`${M}ms`}),J(),("completed"===N||"error"===N)&&G({type:"run:done",status:N});try{if(b.updatedAt=Date.now(),"New Conversation"===b.title&&b.messages.length>0){let a=b.messages.find(a=>"user"===a.role);a&&"string"==typeof a.content&&(b.title=a.content.split(" ").slice(0,5).join(" ")+"...",q.verbose(`Updated conversation title for ${A} before final return to: ${b.title}`))}await s(B,b),q.debug(`Saved final state for conversation ${A} before returning.`)}catch(a){q.error(`Failed to save final state for conversation ${A}:`,a)}e.FlowExecutor.conversationStates.set(A,b);let O=()=>{x&&("completed"===b.status||"error"===b.status)&&e.FlowExecutor.conversationStates.delete(A)},P={conversationId:b.conversationId||A,messages:b.messages,usage:b.usage,finalAction:d,sharedState:b};if("paused_debug"===b.status)return q.info(`Returning paused debug state for conv ${A}`),{...P,status:"paused_debug",outputText:"",pendingToolCalls:b.pendingToolCalls};if("error"===b.status||d===i.O){let a,c="Unknown error during execution",d=500;if("object"==typeof b.lastResponse&&null!==b.lastResponse)if("success"in b.lastResponse&&!1===b.lastResponse.success&&"error"in b.lastResponse&&"string"==typeof b.lastResponse.error){if(c=b.lastResponse.error,"errorDetails"in b.lastResponse&&"object"==typeof b.lastResponse.errorDetails&&null!==b.lastResponse.errorDetails){let e=b.lastResponse.errorDetails;(a={message:"string"==typeof e.message?e.message:c,type:"string"==typeof e.type?e.type:void 0,code:"string"==typeof e.code?e.code:void 0,param:"string"==typeof e.param?e.param:void 0,status:"number"==typeof e.status?e.status:void 0,stack:"string"==typeof e.stack?e.stack:void 0,name:"string"==typeof e.name?e.name:void 0}).status&&(d=a.status)}}else try{c=`Unexpected error state object: ${JSON.stringify(b.lastResponse)}`}catch{c="Unexpected error state object (unserializable)"}else"string"==typeof b.lastResponse&&(c=b.lastResponse);return a?a.message=a.message||c:a={message:c},q.error(`Returning error result for conv ${A}`,{errorMessage:c,errorDetails:a,statusCode:d}),"error"!==b.status&&(b.status="error"),O(),{...P,status:"error",outputText:"",error:{message:c,details:a,statusCode:d}}}let Q=b.messages.length>0?b.messages[b.messages.length-1]:null,R="",S="";"object"==typeof b.lastResponse&&null!==b.lastResponse&&"_flujo_xml_tools"in b.lastResponse?(S=b.lastResponse._flujo_xml_tools,R=Q?.role==="assistant"&&"string"==typeof Q.content?Q.content:"",R+=(R?"\n\n":"")+S,b.lastResponse=R):R="string"==typeof b.lastResponse?b.lastResponse:Q?.role==="assistant"&&"string"==typeof Q.content?Q.content:d!==i.Jp||l?"Processing complete.":"";let T=S?void 0:Q?.role==="assistant"?Q.tool_calls:void 0;return q.info(`Returning success result for conv ${A}`,{action:d,status:b.status,flujo:l,requireApproval:t,flujodebug:u}),O(),{...P,status:b.status||(d===i.g4?"completed":"running"),outputText:R,toolCalls:T,pendingToolCalls:b.pendingToolCalls}}},94706:(a,b,c)=>{c.d(b,{validateFlowForRun:()=>m});var d=c(50846),e=c(79989),f=c(20433),g=c(1133),h=c(49181);function i(a){return a.data?.type??a.type??"unknown"}function j(a){return a.data?.label||a.id}function k(a){return a.data?.edgeType==="mcp"}let l=(0,d.h)("backend/execution/flow/validateFlowForRun");async function m(a){let b,c,d=await e.flowService.getFlow(a);if(!d)return l.warn(`validateFlowForRun: flow ${a} could not be loaded; skipping pre-run checks`),{issues:[],errorCount:0,warningCount:0,isRunnable:!0};try{b=await f.modelService.loadModels()}catch(a){l.warn("validateFlowForRun: could not load models; skipping model checks",a)}try{let a=await g.mcpService.loadServerConfigs();Array.isArray(a)&&(c=a.map(a=>({name:a.name,status:a.disabled?"disabled":void 0})))}catch(a){l.warn("validateFlowForRun: could not load servers; skipping server checks",a)}return function(a,b={}){let c=[],d=Array.isArray(a?.nodes)?a.nodes:[],e=Array.isArray(a?.edges)?a.edges:[],f=(a,b,d,e)=>c.push({severity:a,code:b,message:d,nodeId:e?.id,nodeLabel:e?j(e):void 0}),g=new Map((b.models??[]).map(a=>[a.id,a])),l=new Map((b.servers??[]).map(a=>[a.name,a])),m=!!b.models,n=!!b.servers,o=d.filter(a=>"start"===i(a)),p=d.filter(a=>"finish"===i(a)),q=d.filter(a=>"process"===i(a)),r=d.filter(a=>"mcp"===i(a));if(0===o.length)f("error","no-start-node","The flow has no Start node, so it has no entry point.");else if(o.length>1)for(let a of o.slice(1))f("error","multiple-start-nodes","The flow has more than one Start node; only one is allowed.",a);for(let a of(0===p.length&&f("warning","no-finish-node","The flow has no Finish node; it will run but never reaches a defined end."),q)){let b=a.data?.properties??{},c=b.boundModel;if(c){if(m&&!g.has(c)){let c="string"==typeof b.modelName&&b.modelName?` (was "${b.modelName}")`:"";f("error","process-model-missing",`Process node "${j(a)}" is bound to a model that no longer exists${c}.`,a)}}else f("error","process-missing-model",`Process node "${j(a)}" has no model bound.`,a)}for(let a of r){let b=(a.data?.properties??{}).boundServer;if(b){if(n&&!l.has(b))f("warning","mcp-server-missing",`MCP node "${j(a)}" is bound to server "${b}", which isn't in your current MCP server list. It may be offline (e.g. not connected), renamed, or removed — if it was renamed or removed, rebind this node.`,a);else if(n){let c=l.get(b);if(c.status&&"connected"!==c.status){let d="disabled"===c.status?"disabled":`not connected (${c.status})`;f("warning","mcp-server-disconnected",`MCP node "${j(a)}" is bound to server "${b}", which is currently ${d}. It will provide tools again once it reconnects.`,a)}}}else f("warning","mcp-missing-server",`MCP node "${j(a)}" is not bound to a server.`,a);e.some(b=>k(b)&&(b.source===a.id||b.target===a.id))||f("warning","mcp-node-unconnected",`MCP node "${j(a)}" is not connected to any Process node.`,a)}if(o.length>0){let a=function(a){let b=new Map,c=(a,c)=>{b.has(a)||b.set(a,[]),b.get(a).push(c)};for(let b of a)!k(b)&&(c(b.source,b.target),b.data?.bidirectional&&c(b.target,b.source));return b}(e);for(let b of o)a.get(b.id)?.length||f("error","start-no-outgoing","The Start node is not connected to anything; the flow cannot run.",b);let b=function(a,b){let c=new Set(a),d=[...a];for(;d.length;){let a=d.shift();for(let e of b.get(a)??[])c.has(e)||(c.add(e),d.push(e))}return c}(o.map(a=>a.id),a);for(let a of[...q,...p])b.has(a.id)||f("warning","unreachable-node",`${"finish"===i(a)?"Finish":"Process"} node "${j(a)}" is not reachable from the Start node.`,a)}for(let a of d.filter(a=>"subflow"===i(a))){let b=e.filter(b=>!k(b)&&(b.source===a.id||b.target===a.id&&!!b.data?.bidirectional));b.length>1&&f("error","subflow-multiple-outgoing",`Subflow node "${j(a)}" has ${b.length} outgoing connections; a subflow can only have one (either A > B > C or a bidirectional A <> B).`,a)}for(let a of q){let c=a.data?.properties?.promptTemplate;if("string"!=typeof c||!c)continue;let g=function(a,b,c){let d=new Map(b.map(a=>[a.id,a])),e=new Set;for(let b of c){if(!k(b))continue;let c=null;if(b.source===a?c=b.target:b.target===a&&(c=b.source),!c)continue;let f=d.get(c);if(!f||"mcp"!==i(f))continue;let g=f.data?.properties?.boundServer;"string"==typeof g&&g&&e.add(g)}return e}(a.id,d,e),l=new Set;for(let d of(0,h.A$)(c)){if("handoff"===d.server)continue;let c=`${d.kind}:${d.server}:${d.name}`;!l.has(c)&&(l.add(c),g.has(d.server)?"tool"===d.kind&&b.serverTools&&b.serverTools[d.server]&&!b.serverTools[d.server].includes(d.name)&&f("warning","tool-unavailable",`Process node "${j(a)}" references tool "${d.name}" which server "${d.server}" no longer provides.`,a):f("error","tool-pill-disconnected",`Process node "${j(a)}" references ${d.kind} "${d.name}" from server "${d.server}", but it is not connected to that server (the MCP node was removed or the server was renamed).`,a))}}let s=c.filter(a=>"error"===a.severity).length,t=c.length-s;return{issues:c,errorCount:s,warningCount:t,isRunnable:0===s}}(d,{models:b,servers:c})}}};
6
+ </${b.function.name}>`)}b.lastResponse={_flujo_xml_tools:a.join("\n\n")},d=i.g4,q.info(`[flujo=false] Prepared XML for external tools. Exiting loop for conv ${A}.`);break}q.warn(`[flujo=false] TOOL_CALL_ACTION received for conv ${A} but no tools found after classification. Treating as final.`),d=i.g4;break}q.warn(`TOOL_CALL_ACTION received for conv ${A} but no tool_calls found in last message. Treating as final.`),d=i.g4;break}let c=await e.FlowExecutor.resolveHandoff(b,d);if(c.isSuccessorEdge){q.info(`[Action Handling] Step ${F}: Handling Handoff Action (Edge ID) for conv ${A}`),q.info(`Handoff action received for conv ${A}. Edge: ${d}`);let a=c.targetNodeId;if("string"==typeof a&&a.length>0){let c,f=b.messages.length>0?b.messages[b.messages.length-1]:null;if(f?.role==="assistant"&&f.tool_calls){let e=f.tool_calls.find(a=>"function"===a.type&&("handoff"===a.function.name||a.function.name.startsWith("handoff_to_")));if(e){c=e.id,q.debug(`Found handoff tool call ID: ${c} for edge ${d}`);let f={id:crypto.randomUUID(),role:"tool",tool_call_id:c,content:JSON.stringify({status:"Handoff processed",targetNodeId:a}),timestamp:Date.now(),processNodeId:b.currentNodeId};b.messages.push(f),q.info(`Appended tool result message for handoff tool call ${c}`)}else q.warn(`Handoff action received for edge ${d}, but could not find corresponding handoff tool call in last assistant message.`)}else q.warn(`Handoff action received for edge ${d}, but the last message was not an assistant message with tool calls.`);J();let g=b.currentNodeId;if(b.currentNodeId=a,b.handoffRequested=void 0,G({type:"handoff",from:g?{nodeId:g}:void 0,toNodeId:a,edgeId:d}),q.info(`Transitioning conv ${A} to node ${b.currentNodeId}`),e.FlowExecutor.conversationStates.set(A,b),K){q.info(`[Debug Step] Paused after handoff to node ${b.currentNodeId} for conv ${A}.`),L();break}q.info(`Continuing loop for conv ${A} after handoff.`);continue}q.error(`Handoff failed for conv ${A}: Successor node for edge ${d} has invalid ID.`),b.lastResponse={success:!1,error:`Handoff failed: Target node for edge ${d} has invalid ID.`},d=i.O;break}if(d===i.E5){q.info(`[Action Handling] Step ${F}: Handling STAY_ON_NODE_ACTION for conv ${A}`),q.info(`Stay on node action received for conv ${A} at step ${F}`);break}q.warn(`Unrecognized action '${d}' received at step ${F} for conv ${A}. Treating as final response.`),d=i.g4;break}}catch(a){if(q.error(`Unhandled error during execution loop for conv ${A}`,{loopError:a}),d!==i.O){let c=a?.details;b.lastResponse={success:!1,error:a instanceof Error?a.message:String(a),errorDetails:a instanceof Error?{name:a.name,message:a.message,stack:a.stack,...c&&"object"==typeof c?c:{}}:void 0},d=i.O}}d===i.O&&"error"!==b.status&&(b.status="error");let M=Date.now()-f,N=b.status||(d===i.g4?"completed":d===i.O?"error":"running");q.info(`Execution finished for conv ${A}. Final Action: ${d}, Final Status: ${N}`,{duration:`${M}ms`}),J(),("completed"===N||"error"===N)&&G({type:"run:done",status:N});try{if(b.updatedAt=Date.now(),"New Conversation"===b.title&&b.messages.length>0){let a=b.messages.find(a=>"user"===a.role);a&&"string"==typeof a.content&&(b.title=a.content.split(" ").slice(0,5).join(" ")+"...",q.verbose(`Updated conversation title for ${A} before final return to: ${b.title}`))}await s(B,b),q.debug(`Saved final state for conversation ${A} before returning.`)}catch(a){q.error(`Failed to save final state for conversation ${A}:`,a)}e.FlowExecutor.conversationStates.set(A,b);let O=()=>{x&&("completed"===b.status||"error"===b.status)&&e.FlowExecutor.conversationStates.delete(A)},P={conversationId:b.conversationId||A,messages:b.messages,usage:b.usage,finalAction:d,sharedState:b};if("paused_debug"===b.status)return q.info(`Returning paused debug state for conv ${A}`),{...P,status:"paused_debug",outputText:"",pendingToolCalls:b.pendingToolCalls};if("error"===b.status||d===i.O){let a,c="Unknown error during execution",d=500;if("object"==typeof b.lastResponse&&null!==b.lastResponse)if("success"in b.lastResponse&&!1===b.lastResponse.success&&"error"in b.lastResponse&&"string"==typeof b.lastResponse.error){if(c=b.lastResponse.error,"errorDetails"in b.lastResponse&&"object"==typeof b.lastResponse.errorDetails&&null!==b.lastResponse.errorDetails){let e=b.lastResponse.errorDetails;(a={message:"string"==typeof e.message?e.message:c,type:"string"==typeof e.type?e.type:void 0,code:"string"==typeof e.code?e.code:void 0,param:"string"==typeof e.param?e.param:void 0,status:"number"==typeof e.status?e.status:void 0,stack:"string"==typeof e.stack?e.stack:void 0,name:"string"==typeof e.name?e.name:void 0}).status&&(d=a.status)}}else try{c=`Unexpected error state object: ${JSON.stringify(b.lastResponse)}`}catch{c="Unexpected error state object (unserializable)"}else"string"==typeof b.lastResponse&&(c=b.lastResponse);return a?a.message=a.message||c:a={message:c},q.error(`Returning error result for conv ${A}`,{errorMessage:c,errorDetails:a,statusCode:d}),"error"!==b.status&&(b.status="error"),O(),{...P,status:"error",outputText:"",error:{message:c,details:a,statusCode:d}}}let Q=b.messages.length>0?b.messages[b.messages.length-1]:null,R="",S="";"object"==typeof b.lastResponse&&null!==b.lastResponse&&"_flujo_xml_tools"in b.lastResponse?(S=b.lastResponse._flujo_xml_tools,R=Q?.role==="assistant"&&"string"==typeof Q.content?Q.content:"",R+=(R?"\n\n":"")+S,b.lastResponse=R):R="string"==typeof b.lastResponse?b.lastResponse:Q?.role==="assistant"&&"string"==typeof Q.content?Q.content:d!==i.Jp||l?"Processing complete.":"";let T=S?void 0:Q?.role==="assistant"?Q.tool_calls:void 0;return q.info(`Returning success result for conv ${A}`,{action:d,status:b.status,flujo:l,requireApproval:t,flujodebug:u}),O(),{...P,status:b.status||(d===i.g4?"completed":"running"),outputText:R,toolCalls:T,pendingToolCalls:b.pendingToolCalls}}},94706:(a,b,c)=>{c.d(b,{validateFlowForRun:()=>m});var d=c(50846),e=c(79989),f=c(20433),g=c(23514),h=c(49181);function i(a){return a.data?.type??a.type??"unknown"}function j(a){return a.data?.label||a.id}function k(a){return a.data?.edgeType==="mcp"}let l=(0,d.h)("backend/execution/flow/validateFlowForRun");async function m(a){let b,c,d=await e.flowService.getFlow(a);if(!d)return l.warn(`validateFlowForRun: flow ${a} could not be loaded; skipping pre-run checks`),{issues:[],errorCount:0,warningCount:0,isRunnable:!0};try{b=await f.modelService.loadModels()}catch(a){l.warn("validateFlowForRun: could not load models; skipping model checks",a)}try{let a=await g.mcpService.loadServerConfigs();Array.isArray(a)&&(c=a.map(a=>({name:a.name,status:a.disabled?"disabled":void 0})))}catch(a){l.warn("validateFlowForRun: could not load servers; skipping server checks",a)}return function(a,b={}){let c=[],d=Array.isArray(a?.nodes)?a.nodes:[],e=Array.isArray(a?.edges)?a.edges:[],f=(a,b,d,e)=>c.push({severity:a,code:b,message:d,nodeId:e?.id,nodeLabel:e?j(e):void 0}),g=new Map((b.models??[]).map(a=>[a.id,a])),l=new Map((b.servers??[]).map(a=>[a.name,a])),m=!!b.models,n=!!b.servers,o=d.filter(a=>"start"===i(a)),p=d.filter(a=>"finish"===i(a)),q=d.filter(a=>"process"===i(a)),r=d.filter(a=>"mcp"===i(a));if(0===o.length)f("error","no-start-node","The flow has no Start node, so it has no entry point.");else if(o.length>1)for(let a of o.slice(1))f("error","multiple-start-nodes","The flow has more than one Start node; only one is allowed.",a);for(let a of(0===p.length&&f("warning","no-finish-node","The flow has no Finish node; it will run but never reaches a defined end."),q)){let b=a.data?.properties??{},c=b.boundModel;if(c){if(m&&!g.has(c)){let c="string"==typeof b.modelName&&b.modelName?` (was "${b.modelName}")`:"";f("error","process-model-missing",`Process node "${j(a)}" is bound to a model that no longer exists${c}.`,a)}}else f("error","process-missing-model",`Process node "${j(a)}" has no model bound.`,a)}for(let a of r){let b=(a.data?.properties??{}).boundServer;if(b){if(n&&!l.has(b))f("warning","mcp-server-missing",`MCP node "${j(a)}" is bound to server "${b}", which isn't in your current MCP server list. It may be offline (e.g. not connected), renamed, or removed — if it was renamed or removed, rebind this node.`,a);else if(n){let c=l.get(b);if(c.status&&"connected"!==c.status){let d="disabled"===c.status?"disabled":`not connected (${c.status})`;f("warning","mcp-server-disconnected",`MCP node "${j(a)}" is bound to server "${b}", which is currently ${d}. It will provide tools again once it reconnects.`,a)}}}else f("warning","mcp-missing-server",`MCP node "${j(a)}" is not bound to a server.`,a);e.some(b=>k(b)&&(b.source===a.id||b.target===a.id))||f("warning","mcp-node-unconnected",`MCP node "${j(a)}" is not connected to any Process node.`,a)}if(o.length>0){let a=function(a){let b=new Map,c=(a,c)=>{b.has(a)||b.set(a,[]),b.get(a).push(c)};for(let b of a)!k(b)&&(c(b.source,b.target),b.data?.bidirectional&&c(b.target,b.source));return b}(e);for(let b of o)a.get(b.id)?.length||f("error","start-no-outgoing","The Start node is not connected to anything; the flow cannot run.",b);let b=function(a,b){let c=new Set(a),d=[...a];for(;d.length;){let a=d.shift();for(let e of b.get(a)??[])c.has(e)||(c.add(e),d.push(e))}return c}(o.map(a=>a.id),a);for(let a of[...q,...p])b.has(a.id)||f("warning","unreachable-node",`${"finish"===i(a)?"Finish":"Process"} node "${j(a)}" is not reachable from the Start node.`,a)}for(let a of d.filter(a=>"subflow"===i(a))){let b=e.filter(b=>!k(b)&&(b.source===a.id||b.target===a.id&&!!b.data?.bidirectional));b.length>1&&f("error","subflow-multiple-outgoing",`Subflow node "${j(a)}" has ${b.length} outgoing connections; a subflow can only have one (either A > B > C or a bidirectional A <> B).`,a)}for(let a of q){let c=a.data?.properties?.promptTemplate;if("string"!=typeof c||!c)continue;let g=function(a,b,c){let d=new Map(b.map(a=>[a.id,a])),e=new Set;for(let b of c){if(!k(b))continue;let c=null;if(b.source===a?c=b.target:b.target===a&&(c=b.source),!c)continue;let f=d.get(c);if(!f||"mcp"!==i(f))continue;let g=f.data?.properties?.boundServer;"string"==typeof g&&g&&e.add(g)}return e}(a.id,d,e),l=new Set;for(let d of(0,h.A$)(c)){if("handoff"===d.server)continue;let c=`${d.kind}:${d.server}:${d.name}`;!l.has(c)&&(l.add(c),g.has(d.server)?"tool"===d.kind&&b.serverTools&&b.serverTools[d.server]&&!b.serverTools[d.server].includes(d.name)&&f("warning","tool-unavailable",`Process node "${j(a)}" references tool "${d.name}" which server "${d.server}" no longer provides.`,a):f("error","tool-pill-disconnected",`Process node "${j(a)}" references ${d.kind} "${d.name}" from server "${d.server}", but it is not connected to that server (the MCP node was removed or the server was renamed).`,a))}}let s=c.filter(a=>"error"===a.severity).length,t=c.length-s;return{issues:c,errorCount:s,warningCount:t,isRunnable:0===s}}(d,{models:b,servers:c})}}};
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=724,exports.ids=[724],exports.modules={8164:(a,b,c)=>{c.d(b,{A$:()=>f.A$,xc:()=>e});let d=["key","secret","token","password"],e=a=>d.some(b=>a.toLowerCase().includes(b));var f=c(49181);c(73456)},49181:(a,b,c)=>{c.d(b,{A$:()=>g});let d="_-_-_",e=/^(tool|resource):(.+)$/,f=/\$\{((?:tool|resource):[^}]+|_-_-_[^}]+)\}/g;function g(a){let b,c=[];for(f.lastIndex=0;null!==(b=f.exec(a));){let a=function(a){let b=e.exec(a);if(b){let a=b[1],c=function(a){let b=a.indexOf("__");if(b<=0)return null;let c=a.slice(b+2);return c?{server:a.slice(0,b),name:c}:null}(b[2]);return c?{kind:a,server:c.server,name:c.name}:null}if(a.startsWith(d)){let b=a.split(d);if(3===b.length&&b[1]&&b[2])return{kind:"tool",server:b[1],name:b[2]}}return null}(b[1]);a&&c.push({...a,fullMatch:b[0],index:b.index})}return c}},60724:(a,b,c)=>{c.d(b,{h:()=>k});var d=c(79989),e=c(20433),f=c(1133),g=c(50846),h=c(8164);let i=(0,g.h)("backend/utils/PromptRenderer");class j{async renderPrompt(a,b,c){let d=c?.renderMode||"rendered",e=c?.includeConversationHistory||!1;i.info(`Rendering prompt for node ${b} in flow ${a}`,{renderMode:d,includeConversationHistory:e});let{prompt:f,excludeModelPrompt:g,excludeStartNodePrompt:h,excludeSystemPrompt:j}=await this.findNodePrompt(b,a),k=c?.excludeModelPrompt!==void 0?c?.excludeModelPrompt:g,l=c?.excludeStartNodePrompt!==void 0?c?.excludeStartNodePrompt:h,m=c?.excludeSystemPrompt!==void 0?c?.excludeSystemPrompt:j;i.debug("Exclusion settings",{excludeModelPrompt:k,excludeStartNodePrompt:l,excludeSystemPrompt:m,fromOptions:{excludeModelPrompt:c?.excludeModelPrompt!==void 0,excludeStartNodePrompt:c?.excludeStartNodePrompt!==void 0,excludeSystemPrompt:c?.excludeSystemPrompt!==void 0}});let n="",o=null;if(!l){let b=await this.findStartNodePrompt(a);b&&(i.debug("Adding start node prompt",{length:b.length}),n+=b+"\n\n")}if(!k){let c=await this.findModelPrompt(b,a);c.prompt&&(i.debug("Adding model prompt",{modelId:c.modelId,length:c.prompt.length}),n+=c.prompt+"\n\n"),o=c.functionCallingSchema,c.reasoningSchema&&(n+=`Please use the following pattern to mark your reasoning: ${c.reasoningSchema}
1
+ "use strict";exports.id=724,exports.ids=[724],exports.modules={8164:(a,b,c)=>{c.d(b,{A$:()=>f.A$,xc:()=>e});let d=["key","secret","token","password"],e=a=>d.some(b=>a.toLowerCase().includes(b));var f=c(49181);c(73456)},49181:(a,b,c)=>{c.d(b,{A$:()=>g});let d="_-_-_",e=/^(tool|resource):(.+)$/,f=/\$\{((?:tool|resource):[^}]+|_-_-_[^}]+)\}/g;function g(a){let b,c=[];for(f.lastIndex=0;null!==(b=f.exec(a));){let a=function(a){let b=e.exec(a);if(b){let a=b[1],c=function(a){let b=a.indexOf("__");if(b<=0)return null;let c=a.slice(b+2);return c?{server:a.slice(0,b),name:c}:null}(b[2]);return c?{kind:a,server:c.server,name:c.name}:null}if(a.startsWith(d)){let b=a.split(d);if(3===b.length&&b[1]&&b[2])return{kind:"tool",server:b[1],name:b[2]}}return null}(b[1]);a&&c.push({...a,fullMatch:b[0],index:b.index})}return c}},60724:(a,b,c)=>{c.d(b,{h:()=>k});var d=c(79989),e=c(20433),f=c(23514),g=c(50846),h=c(8164);let i=(0,g.h)("backend/utils/PromptRenderer");class j{async renderPrompt(a,b,c){let d=c?.renderMode||"rendered",e=c?.includeConversationHistory||!1;i.info(`Rendering prompt for node ${b} in flow ${a}`,{renderMode:d,includeConversationHistory:e});let{prompt:f,excludeModelPrompt:g,excludeStartNodePrompt:h,excludeSystemPrompt:j}=await this.findNodePrompt(b,a),k=c?.excludeModelPrompt!==void 0?c?.excludeModelPrompt:g,l=c?.excludeStartNodePrompt!==void 0?c?.excludeStartNodePrompt:h,m=c?.excludeSystemPrompt!==void 0?c?.excludeSystemPrompt:j;i.debug("Exclusion settings",{excludeModelPrompt:k,excludeStartNodePrompt:l,excludeSystemPrompt:m,fromOptions:{excludeModelPrompt:c?.excludeModelPrompt!==void 0,excludeStartNodePrompt:c?.excludeStartNodePrompt!==void 0,excludeSystemPrompt:c?.excludeSystemPrompt!==void 0}});let n="",o=null;if(!l){let b=await this.findStartNodePrompt(a);b&&(i.debug("Adding start node prompt",{length:b.length}),n+=b+"\n\n")}if(!k){let c=await this.findModelPrompt(b,a);c.prompt&&(i.debug("Adding model prompt",{modelId:c.modelId,length:c.prompt.length}),n+=c.prompt+"\n\n"),o=c.functionCallingSchema,c.reasoningSchema&&(n+=`Please use the following pattern to mark your reasoning: ${c.reasoningSchema}
2
2
 
3
3
  `),o&&(n+=`Please use the following pattern to use a tool: ${o}
4
4
 
@@ -5,6 +5,6 @@ ${b.condition}
5
5
  Tool result (untrusted data):
6
6
  \`\`\`json
7
7
  ${m}
8
- \`\`\``;try{let c="llm-gate"===b.mode?await j(b.modelId,n):await k(b.flowId,n),g=function(a){let b=a.match(/\{[\s\S]*\}/);if(!b)return null;try{let a=JSON.parse(b[0]);if("boolean"!=typeof a?.fire)return null;return{fire:a.fire,reason:"string"==typeof a.reason?a.reason:""}}catch{return null}}(c);if(!g)return f.warn(`Gate returned unparseable output: ${c.slice(0,200)}`),{fire:!1,newState:{lastHash:d,...l},error:"The AI check returned an unreadable answer — did not run the flow"};if(!g.fire)return{fire:!1,newState:{lastHash:d,...l}};return{fire:!0,summary:"flow-gate"===b.mode?"Flow condition met":"AI condition met",context:{result:(0,e.Je)(a),aiReason:g.reason},newState:{lastHash:d,...l}}}catch(b){let a=b instanceof Error?b.message:String(b);return f.warn(`Gate check failed: ${a}`),{fire:!1,newState:a.startsWith("config:")?{lastHash:d}:l,error:a.replace(/^config:\s*/,"")}}}async function j(a,b){let{modelService:d}=await Promise.all([c.e(6996),c.e(1223),c.e(5734),c.e(2181)]).then(c.bind(c,20433)),{getCompletionAdapter:e}=await Promise.all([c.e(6996),c.e(1223),c.e(5734),c.e(2181)]).then(c.bind(c,48999)),f=await d.getModel(a);if(!f)throw Error(`config: The AI-check model no longer exists (${a})`);let g=await d.resolveAndDecryptApiKey(f.ApiKey);if(!g)throw Error("config: Could not resolve the AI-check model API key");let i=e(f),{completion:j}=await i.createCompletion({model:f,apiKey:g,temperature:0,messages:[{role:"system",content:h},{role:"user",content:b}]}),k=j.choices?.[0]?.message?.content;return"string"==typeof k?k:""}async function k(a,b){let{runFlow:d}=await Promise.all([c.e(6996),c.e(1223),c.e(5734),c.e(1373),c.e(2181),c.e(724),c.e(1403),c.e(7214),c.e(9989)]).then(c.bind(c,57214)),e=await d({flowId:a,prompt:`${b}
8
+ \`\`\``;try{let c="llm-gate"===b.mode?await j(b.modelId,n):await k(b.flowId,n),g=function(a){let b=a.match(/\{[\s\S]*\}/);if(!b)return null;try{let a=JSON.parse(b[0]);if("boolean"!=typeof a?.fire)return null;return{fire:a.fire,reason:"string"==typeof a.reason?a.reason:""}}catch{return null}}(c);if(!g)return f.warn(`Gate returned unparseable output: ${c.slice(0,200)}`),{fire:!1,newState:{lastHash:d,...l},error:"The AI check returned an unreadable answer — did not run the flow"};if(!g.fire)return{fire:!1,newState:{lastHash:d,...l}};return{fire:!0,summary:"flow-gate"===b.mode?"Flow condition met":"AI condition met",context:{result:(0,e.Je)(a),aiReason:g.reason},newState:{lastHash:d,...l}}}catch(b){let a=b instanceof Error?b.message:String(b);return f.warn(`Gate check failed: ${a}`),{fire:!1,newState:a.startsWith("config:")?{lastHash:d}:l,error:a.replace(/^config:\s*/,"")}}}async function j(a,b){let{modelService:d}=await Promise.all([c.e(6996),c.e(1223),c.e(5734),c.e(5504)]).then(c.bind(c,20433)),{getCompletionAdapter:e}=await Promise.all([c.e(6996),c.e(1223),c.e(5734),c.e(5504)]).then(c.bind(c,48999)),f=await d.getModel(a);if(!f)throw Error(`config: The AI-check model no longer exists (${a})`);let g=await d.resolveAndDecryptApiKey(f.ApiKey);if(!g)throw Error("config: Could not resolve the AI-check model API key");let i=e(f),{completion:j}=await i.createCompletion({model:f,apiKey:g,temperature:0,messages:[{role:"system",content:h},{role:"user",content:b}]}),k=j.choices?.[0]?.message?.content;return"string"==typeof k?k:""}async function k(a,b){let{runFlow:d}=await Promise.all([c.e(6996),c.e(1223),c.e(5734),c.e(1373),c.e(5504),c.e(724),c.e(1403),c.e(7214),c.e(9989)]).then(c.bind(c,57214)),e=await d({flowId:a,prompt:`${b}
9
9
 
10
10
  ${g}`,mode:"ephemeral",requireApproval:!1,debug:!1,userTurn:!0});if("completed"!==e.status)throw Error(e.error?.message??`The checker flow ended with status "${e.status}"`);return e.outputText??""}}};
@@ -1,2 +1,2 @@
1
- exports.id=473,exports.ids=[473],exports.modules={947:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"40520b537d1d43f510acbccd60e3e7d42ce215c157":()=>d.c,"60de87c4c5950c080550cb766970e88ae9c9a0ca25":()=>d.G});var d=c(73456)},3421:(a,b,c)=>{"use strict";Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(71237),e=c(55088),f=c(17679);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}},51669:(a,b)=>{"use strict";function c(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
2
- Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(b,"D",{enumerable:!0,get:function(){return c}})},68633:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{decryptActionBoundArgs:function(){return s},encryptActionBoundArgs:function(){return r}}),c(77925);let d=c(97954),e=c(27825),f=c(47686),g=c(77533),h=c(63033),i=c(26906),j=function(a){return a&&a.__esModule?a:{default:a}}(c(74515)),k=new TextEncoder,l=new TextDecoder,m=void 0,n=void 0;async function o(a,b){let c=await (0,g.getActionEncryptionKey)();if(void 0===c)throw Object.defineProperty(Error("Missing encryption key for Server Action. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E65",enumerable:!1,configurable:!0});let d=atob(b),e=d.slice(0,16),f=d.slice(16),h=l.decode(await (0,g.decrypt)(c,(0,g.stringToUint8Array)(e),(0,g.stringToUint8Array)(f)));if(!h.startsWith(a))throw Object.defineProperty(Error("Invalid Server Action payload: failed to decrypt."),"__NEXT_ERROR_CODE",{value:"E191",enumerable:!1,configurable:!0});return h.slice(a.length)}async function p(a,b){let c=await (0,g.getActionEncryptionKey)();if(void 0===c)throw Object.defineProperty(Error("Missing encryption key for Server Action. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E65",enumerable:!1,configurable:!0});let d=new Uint8Array(16);h.workUnitAsyncStorage.exit(()=>crypto.getRandomValues(d));let e=(0,g.arrayBufferToString)(d.buffer),f=await (0,g.encrypt)(c,d,k.encode(a+b));return btoa(e+(0,g.arrayBufferToString)(f))}var q=function(a){return a[a.Ready=0]="Ready",a[a.Pending=1]="Pending",a[a.Complete=2]="Complete",a}(q||{});let r=j.default.cache(async function a(b,...c){let e=h.workUnitAsyncStorage.getStore(),j=e?(0,h.getCacheSignal)(e):void 0,{clientModules:k}=(0,g.getClientReferenceManifestForRsc)(),l=Error();Error.captureStackTrace(l,a);let n=!1,o=e?(0,i.createHangingInputAbortSignal)(e):void 0,q=0;function r(){0===q&&(q=1,null==j||j.beginRead())}function s(){1===q&&(null==j||j.endRead()),q=2}o&&j&&o.addEventListener("abort",r,{once:!0});let t=await (0,f.streamToString)((0,d.renderToReadableStream)(c,k,{filterStackFrame:m,signal:o,onError(a){(null==o||!o.aborted)&&(n||(n=!0,l.message=a instanceof Error?a.message:String(a)))}}),o);if(n)throw s(),l;if(!e)return p(b,t);r();let u=(0,h.getPrerenderResumeDataCache)(e),v=(0,h.getRenderResumeDataCache)(e),w=b+t,x=(null==u?void 0:u.encryptedBoundArgs.get(w))??(null==v?void 0:v.encryptedBoundArgs.get(w));if(x)return x;let y=await p(b,t);return s(),null==u||u.encryptedBoundArgs.set(w,y),y});async function s(a,b){let c,d=await b,f=h.workUnitAsyncStorage.getStore();if(f){let b=(0,h.getCacheSignal)(f),e=(0,h.getPrerenderResumeDataCache)(f),g=(0,h.getRenderResumeDataCache)(f);(c=(null==e?void 0:e.decryptedBoundArgs.get(d))??(null==g?void 0:g.decryptedBoundArgs.get(d)))||(null==b||b.beginRead(),c=await o(a,d),null==b||b.endRead(),null==e||e.decryptedBoundArgs.set(d,c))}else c=await o(a,d);let{edgeRscModuleMapping:i,rscModuleMapping:j}=(0,g.getClientReferenceManifestForRsc)();return await (0,e.createFromReadableStream)(new ReadableStream({start(a){switch(a.enqueue(k.encode(c)),null==f?void 0:f.type){case"prerender":case"prerender-runtime":f.renderSignal.aborted?a.close():f.renderSignal.addEventListener("abort",()=>a.close(),{once:!0});break;case"prerender-client":case"prerender-ppr":case"prerender-legacy":case"request":case"cache":case"private-cache":case"unstable-cache":case void 0:return a.close()}}}),{findSourceMapURL:n,serverConsumerManifest:{moduleLoading:null,moduleMap:j,serverModuleMap:(0,g.getServerModuleMap)()}})}},73456:(a,b,c)=>{"use strict";c.d(b,{G:()=>l,c:()=>k});var d=c(75879);c(68633);var e=c(50846),f=c(92372),g=c(46480),h=c(58739),i=c(51669);let j=(0,e.h)("backend/utils/resolveGlobalVars");async function k(a){j.debug("Entering resolveGlobalVars method");let b=await (0,f.YM)(g.Z.GLOBAL_ENV_VARS,{}),c=function(a){if(!a||"object"!=typeof a)return!1;let b=Object.keys(a);if(0===b.length)return!0;let c=a[b[0]];return c&&"object"==typeof c&&"value"in c&&"metadata"in c&&"object"==typeof c.metadata&&"isSecret"in c.metadata}(b);j.debug(`Loaded ${Object.keys(b).length} global environment variables (${c?"new":"old"} format)`);let d={};if(c)for(let[a,c]of Object.entries(b))d[a]=c.value;else d={...b};let e=async a=>{let b=a.match(/\$\{global:([^}]+)\}/g);if(!b)return a;let c=a;for(let a of b){let b=a.substring(9,a.length-1);if(void 0!==d[b]){let e=d[b];if(e.startsWith("encrypted:")){j.debug(`Decrypting encrypted global variable: ${b}`);try{let a=e.substring(10),c=await (0,h.decryptWithPassword)(a);if(c)e=c,j.debug(`Successfully decrypted global variable: ${b}`);else{j.warn(`Failed to decrypt global variable: ${b}`);continue}}catch(a){j.error(`Error decrypting global variable: ${b}`,a);continue}}else if(e.startsWith("encrypted_failed:")){j.warn(`Skipping failed encrypted global variable: ${b}`);continue}j.debug(`Resolved global variable: ${b}`),c=c.replace(a,e)}else j.warn(`Global variable not found: ${b}`)}return c},i=async a=>{if("string"==typeof a)return await e(a);if(Array.isArray(a))return await Promise.all(a.map(a=>i(a)));if(null!==a&&"object"==typeof a){let b={};for(let[c,d]of Object.entries(a))b[c]=await i(d);return b}return a},k=await i(a);return"object"==typeof a&&null!==a&&j.debug("Resolved global variables result:",JSON.stringify(k,null,2)),j.debug("Completed global variable resolution"),k}async function l(a,b=0){if(j.debug(`Entering resolveAndDecryptApiKey method (depth: ${b})`),!a)return j.warn("Empty value provided"),null;if(b>=10)return j.warn(`Maximum resolution depth reached (10) for value: ${a}`),a;let c=a;if(c.startsWith("encrypted:")){j.debug(`Decrypting encrypted value at depth ${b}`);try{let a=c.substring(10),d=await (0,h.decryptWithPassword)(a);if(!d)return j.warn(`Failed to decrypt value at depth ${b}`),null;j.debug(`Successfully decrypted value at depth ${b}`),j.verbose(d),c=d}catch(a){return j.error(`Error decrypting value at depth ${b}:`,a),null}}else c.startsWith("encrypted_failed:")&&(j.warn(`Skipping failed encrypted value at depth ${b}`),c=c.substring(17));if(c.includes("${global:")){j.debug(`Resolving global variables at depth ${b}`);try{let a=await k(c);if(j.verbose(a),a!==c)return j.debug(`Value changed after resolving globals at depth ${b}, processing recursively`),l(a,b+1);c=a}catch(a){return j.error(`Error resolving global variables at depth ${b}:`,a),null}}return j.debug(`Completed resolveAndDecryptApiKey at depth ${b}`),c}(0,i.D)([k,l]),(0,d.A)(k,"40520b537d1d43f510acbccd60e3e7d42ce215c157",null),(0,d.A)(l,"60de87c4c5950c080550cb766970e88ae9c9a0ca25",null)},75879:(a,b,c)=>{"use strict";Object.defineProperty(b,"A",{enumerable:!0,get:function(){return d.registerServerReference}});let d=c(97954)},78335:()=>{},95736:(a,b,c)=>{"use strict";a.exports=c(44870)},96487:()=>{},97020:(a,b,c)=>{"use strict";c.d(b,{Af:()=>g,PK:()=>f,Pq:()=>e});var d=c(1133);function e(a,b=200){return new Response(JSON.stringify(a),{status:b,headers:{"Content-Type":"application/json"}})}function f(a){return"string"!=typeof a||0===a.length?"A non-empty server name is required":a.length>200?"Server name must be 200 characters or fewer":"."===a||".."===a?'Server name cannot be "." or ".."':/[/\\\x00-\x1f]/.test(a)?'Server name cannot contain "/", "\\", or control characters':null}async function g(a){let b=await d.mcpService.loadServerConfigs();return Array.isArray(b)?{config:b.find(b=>b.name===a)}:{error:b.error||"Failed to load server configs"}}}};
1
+ exports.id=7731,exports.ids=[7731],exports.modules={947:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"40520b537d1d43f510acbccd60e3e7d42ce215c157":()=>d.c,"60de87c4c5950c080550cb766970e88ae9c9a0ca25":()=>d.G});var d=c(73456)},3676:(a,b,c)=>{"use strict";c.d(b,{Wj:()=>h,ln:()=>g});var d=c(10641),e=c(58739);let f="encryption_locked";async function g(){return(0,e.isEncryptionLocked)()}async function h(a){return await g()?a?.openai?d.NextResponse.json({error:{message:"Encryption is locked. Unlock FLUJO to continue.",type:f,code:f,param:null}},{status:423}):d.NextResponse.json({error:f},{status:423}):null}},51669:(a,b)=>{"use strict";function c(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
2
+ Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(b,"D",{enumerable:!0,get:function(){return c}})},68633:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{decryptActionBoundArgs:function(){return s},encryptActionBoundArgs:function(){return r}}),c(77925);let d=c(97954),e=c(27825),f=c(47686),g=c(77533),h=c(63033),i=c(26906),j=function(a){return a&&a.__esModule?a:{default:a}}(c(74515)),k=new TextEncoder,l=new TextDecoder,m=void 0,n=void 0;async function o(a,b){let c=await (0,g.getActionEncryptionKey)();if(void 0===c)throw Object.defineProperty(Error("Missing encryption key for Server Action. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E65",enumerable:!1,configurable:!0});let d=atob(b),e=d.slice(0,16),f=d.slice(16),h=l.decode(await (0,g.decrypt)(c,(0,g.stringToUint8Array)(e),(0,g.stringToUint8Array)(f)));if(!h.startsWith(a))throw Object.defineProperty(Error("Invalid Server Action payload: failed to decrypt."),"__NEXT_ERROR_CODE",{value:"E191",enumerable:!1,configurable:!0});return h.slice(a.length)}async function p(a,b){let c=await (0,g.getActionEncryptionKey)();if(void 0===c)throw Object.defineProperty(Error("Missing encryption key for Server Action. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E65",enumerable:!1,configurable:!0});let d=new Uint8Array(16);h.workUnitAsyncStorage.exit(()=>crypto.getRandomValues(d));let e=(0,g.arrayBufferToString)(d.buffer),f=await (0,g.encrypt)(c,d,k.encode(a+b));return btoa(e+(0,g.arrayBufferToString)(f))}var q=function(a){return a[a.Ready=0]="Ready",a[a.Pending=1]="Pending",a[a.Complete=2]="Complete",a}(q||{});let r=j.default.cache(async function a(b,...c){let e=h.workUnitAsyncStorage.getStore(),j=e?(0,h.getCacheSignal)(e):void 0,{clientModules:k}=(0,g.getClientReferenceManifestForRsc)(),l=Error();Error.captureStackTrace(l,a);let n=!1,o=e?(0,i.createHangingInputAbortSignal)(e):void 0,q=0;function r(){0===q&&(q=1,null==j||j.beginRead())}function s(){1===q&&(null==j||j.endRead()),q=2}o&&j&&o.addEventListener("abort",r,{once:!0});let t=await (0,f.streamToString)((0,d.renderToReadableStream)(c,k,{filterStackFrame:m,signal:o,onError(a){(null==o||!o.aborted)&&(n||(n=!0,l.message=a instanceof Error?a.message:String(a)))}}),o);if(n)throw s(),l;if(!e)return p(b,t);r();let u=(0,h.getPrerenderResumeDataCache)(e),v=(0,h.getRenderResumeDataCache)(e),w=b+t,x=(null==u?void 0:u.encryptedBoundArgs.get(w))??(null==v?void 0:v.encryptedBoundArgs.get(w));if(x)return x;let y=await p(b,t);return s(),null==u||u.encryptedBoundArgs.set(w,y),y});async function s(a,b){let c,d=await b,f=h.workUnitAsyncStorage.getStore();if(f){let b=(0,h.getCacheSignal)(f),e=(0,h.getPrerenderResumeDataCache)(f),g=(0,h.getRenderResumeDataCache)(f);(c=(null==e?void 0:e.decryptedBoundArgs.get(d))??(null==g?void 0:g.decryptedBoundArgs.get(d)))||(null==b||b.beginRead(),c=await o(a,d),null==b||b.endRead(),null==e||e.decryptedBoundArgs.set(d,c))}else c=await o(a,d);let{edgeRscModuleMapping:i,rscModuleMapping:j}=(0,g.getClientReferenceManifestForRsc)();return await (0,e.createFromReadableStream)(new ReadableStream({start(a){switch(a.enqueue(k.encode(c)),null==f?void 0:f.type){case"prerender":case"prerender-runtime":f.renderSignal.aborted?a.close():f.renderSignal.addEventListener("abort",()=>a.close(),{once:!0});break;case"prerender-client":case"prerender-ppr":case"prerender-legacy":case"request":case"cache":case"private-cache":case"unstable-cache":case void 0:return a.close()}}}),{findSourceMapURL:n,serverConsumerManifest:{moduleLoading:null,moduleMap:j,serverModuleMap:(0,g.getServerModuleMap)()}})}},73456:(a,b,c)=>{"use strict";c.d(b,{G:()=>l,c:()=>k});var d=c(75879);c(68633);var e=c(50846),f=c(92372),g=c(46480),h=c(58739),i=c(51669);let j=(0,e.h)("backend/utils/resolveGlobalVars");async function k(a){j.debug("Entering resolveGlobalVars method");let b=await (0,f.YM)(g.Z.GLOBAL_ENV_VARS,{}),c=function(a){if(!a||"object"!=typeof a)return!1;let b=Object.keys(a);if(0===b.length)return!0;let c=a[b[0]];return c&&"object"==typeof c&&"value"in c&&"metadata"in c&&"object"==typeof c.metadata&&"isSecret"in c.metadata}(b);j.debug(`Loaded ${Object.keys(b).length} global environment variables (${c?"new":"old"} format)`);let d={};if(c)for(let[a,c]of Object.entries(b))d[a]=c.value;else d={...b};let e=async a=>{let b=a.match(/\$\{global:([^}]+)\}/g);if(!b)return a;let c=a;for(let a of b){let b=a.substring(9,a.length-1);if(void 0!==d[b]){let e=d[b];if(e.startsWith("encrypted:")){j.debug(`Decrypting encrypted global variable: ${b}`);try{let a=e.substring(10),c=await (0,h.decryptWithPassword)(a);if(c)e=c,j.debug(`Successfully decrypted global variable: ${b}`);else{j.warn(`Failed to decrypt global variable: ${b}`);continue}}catch(a){j.error(`Error decrypting global variable: ${b}`,a);continue}}else if(e.startsWith("encrypted_failed:")){j.warn(`Skipping failed encrypted global variable: ${b}`);continue}j.debug(`Resolved global variable: ${b}`),c=c.replace(a,e)}else j.warn(`Global variable not found: ${b}`)}return c},i=async a=>{if("string"==typeof a)return await e(a);if(Array.isArray(a))return await Promise.all(a.map(a=>i(a)));if(null!==a&&"object"==typeof a){let b={};for(let[c,d]of Object.entries(a))b[c]=await i(d);return b}return a},k=await i(a);return"object"==typeof a&&null!==a&&j.debug("Resolved global variables result:",JSON.stringify(k,null,2)),j.debug("Completed global variable resolution"),k}async function l(a,b=0){if(j.debug(`Entering resolveAndDecryptApiKey method (depth: ${b})`),!a)return j.warn("Empty value provided"),null;if(b>=10)return j.warn(`Maximum resolution depth reached (10) for value: ${a}`),a;let c=a;if(c.startsWith("encrypted:")){j.debug(`Decrypting encrypted value at depth ${b}`);try{let a=c.substring(10),d=await (0,h.decryptWithPassword)(a);if(!d)return j.warn(`Failed to decrypt value at depth ${b}`),null;j.debug(`Successfully decrypted value at depth ${b}`),j.verbose(d),c=d}catch(a){return j.error(`Error decrypting value at depth ${b}:`,a),null}}else c.startsWith("encrypted_failed:")&&(j.warn(`Skipping failed encrypted value at depth ${b}`),c=c.substring(17));if(c.includes("${global:")){j.debug(`Resolving global variables at depth ${b}`);try{let a=await k(c);if(j.verbose(a),a!==c)return j.debug(`Value changed after resolving globals at depth ${b}, processing recursively`),l(a,b+1);c=a}catch(a){return j.error(`Error resolving global variables at depth ${b}:`,a),null}}return j.debug(`Completed resolveAndDecryptApiKey at depth ${b}`),c}(0,i.D)([k,l]),(0,d.A)(k,"40520b537d1d43f510acbccd60e3e7d42ce215c157",null),(0,d.A)(l,"60de87c4c5950c080550cb766970e88ae9c9a0ca25",null)},75879:(a,b,c)=>{"use strict";Object.defineProperty(b,"A",{enumerable:!0,get:function(){return d.registerServerReference}});let d=c(97954)},78335:()=>{},96487:()=>{},97020:(a,b,c)=>{"use strict";c.d(b,{Af:()=>g,PK:()=>f,Pq:()=>e});var d=c(23514);function e(a,b=200){return new Response(JSON.stringify(a),{status:b,headers:{"Content-Type":"application/json"}})}function f(a){return"string"!=typeof a||0===a.length?"A non-empty server name is required":a.length>200?"Server name must be 200 characters or fewer":"."===a||".."===a?'Server name cannot be "." or ".."':/[/\\\x00-\x1f]/.test(a)?'Server name cannot contain "/", "\\", or control characters':null}async function g(a){let b=await d.mcpService.loadServerConfigs();return Array.isArray(b)?{config:b.find(b=>b.name===a)}:{error:b.error||"Failed to load server configs"}}}};
@@ -1 +1 @@
1
- exports.id=4323,exports.ids=[4323,9989],exports.modules={947:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"40520b537d1d43f510acbccd60e3e7d42ce215c157":()=>d.c,"60de87c4c5950c080550cb766970e88ae9c9a0ca25":()=>d.G});var d=c(73456)},73456:(a,b,c)=>{"use strict";c.d(b,{G:()=>l,c:()=>k});var d=c(75879);c(68633);var e=c(50846),f=c(92372),g=c(46480),h=c(58739),i=c(51669);let j=(0,e.h)("backend/utils/resolveGlobalVars");async function k(a){j.debug("Entering resolveGlobalVars method");let b=await (0,f.YM)(g.Z.GLOBAL_ENV_VARS,{}),c=function(a){if(!a||"object"!=typeof a)return!1;let b=Object.keys(a);if(0===b.length)return!0;let c=a[b[0]];return c&&"object"==typeof c&&"value"in c&&"metadata"in c&&"object"==typeof c.metadata&&"isSecret"in c.metadata}(b);j.debug(`Loaded ${Object.keys(b).length} global environment variables (${c?"new":"old"} format)`);let d={};if(c)for(let[a,c]of Object.entries(b))d[a]=c.value;else d={...b};let e=async a=>{let b=a.match(/\$\{global:([^}]+)\}/g);if(!b)return a;let c=a;for(let a of b){let b=a.substring(9,a.length-1);if(void 0!==d[b]){let e=d[b];if(e.startsWith("encrypted:")){j.debug(`Decrypting encrypted global variable: ${b}`);try{let a=e.substring(10),c=await (0,h.decryptWithPassword)(a);if(c)e=c,j.debug(`Successfully decrypted global variable: ${b}`);else{j.warn(`Failed to decrypt global variable: ${b}`);continue}}catch(a){j.error(`Error decrypting global variable: ${b}`,a);continue}}else if(e.startsWith("encrypted_failed:")){j.warn(`Skipping failed encrypted global variable: ${b}`);continue}j.debug(`Resolved global variable: ${b}`),c=c.replace(a,e)}else j.warn(`Global variable not found: ${b}`)}return c},i=async a=>{if("string"==typeof a)return await e(a);if(Array.isArray(a))return await Promise.all(a.map(a=>i(a)));if(null!==a&&"object"==typeof a){let b={};for(let[c,d]of Object.entries(a))b[c]=await i(d);return b}return a},k=await i(a);return"object"==typeof a&&null!==a&&j.debug("Resolved global variables result:",JSON.stringify(k,null,2)),j.debug("Completed global variable resolution"),k}async function l(a,b=0){if(j.debug(`Entering resolveAndDecryptApiKey method (depth: ${b})`),!a)return j.warn("Empty value provided"),null;if(b>=10)return j.warn(`Maximum resolution depth reached (10) for value: ${a}`),a;let c=a;if(c.startsWith("encrypted:")){j.debug(`Decrypting encrypted value at depth ${b}`);try{let a=c.substring(10),d=await (0,h.decryptWithPassword)(a);if(!d)return j.warn(`Failed to decrypt value at depth ${b}`),null;j.debug(`Successfully decrypted value at depth ${b}`),j.verbose(d),c=d}catch(a){return j.error(`Error decrypting value at depth ${b}:`,a),null}}else c.startsWith("encrypted_failed:")&&(j.warn(`Skipping failed encrypted value at depth ${b}`),c=c.substring(17));if(c.includes("${global:")){j.debug(`Resolving global variables at depth ${b}`);try{let a=await k(c);if(j.verbose(a),a!==c)return j.debug(`Value changed after resolving globals at depth ${b}, processing recursively`),l(a,b+1);c=a}catch(a){return j.error(`Error resolving global variables at depth ${b}:`,a),null}}return j.debug(`Completed resolveAndDecryptApiKey at depth ${b}`),c}(0,i.D)([k,l]),(0,d.A)(k,"40520b537d1d43f510acbccd60e3e7d42ce215c157",null),(0,d.A)(l,"60de87c4c5950c080550cb766970e88ae9c9a0ca25",null)},78335:()=>{},79989:(a,b,c)=>{"use strict";c.d(b,{flowService:()=>k});var d=c(32524),e=c(92372),f=c(46480);let g=(0,c(50846).h)("backend/services/flow/index"),h=f.Z.FLOWS;async function i(){return global.__flujo_flowsMigration||(global.__flujo_flowsMigration=(async()=>{try{await (0,e.w5)(f.Z.FLOWS,h,a=>a.id)}catch(a){g.error("Flow storage migration failed",a),global.__flujo_flowsMigration=void 0}})()),global.__flujo_flowsMigration}class j{get flowsCache(){return global.__flujo_flowsCache??null}set flowsCache(a){global.__flujo_flowsCache=a}async loadFlows(){try{if(this.flowsCache)return g.debug("Using cached flows"),this.flowsCache;g.debug("Loading flows from storage"),await i();let a=await (0,e.pL)(h);return this.flowsCache=a,g.info("Loaded flows from storage",{count:a.length}),a}catch(a){return g.error("Failed to load flows",a),[]}}async getFlow(a){try{g.debug(`Getting flow by ID: ${a}`);let b=this.flowsCache?.find(b=>b.id===a)||null;if(b)return g.debug(`Flow ${a} found in cache`),b;await i();let c=null;try{c=await (0,e.EI)(h,a,null)}catch(b){g.debug(`getFlow: could not load flow ${a}`,b),c=null}if(c&&this.flowsCache){let a=this.flowsCache,b=a.findIndex(a=>a.id===c.id);b>=0?a[b]=c:a.push(c),this.flowsCache=a}return g.debug(`Flow ${a} ${c?"found":"not found"}`),c}catch(b){return g.error(`Failed to get flow ${a}`,b),null}}async invalidateExecutionCache(a){try{let{FlowExecutor:b}=await Promise.all([c.e(6996),c.e(1223),c.e(5734),c.e(1373),c.e(2181),c.e(724),c.e(1403)]).then(c.bind(c,91403));b.clearFlowCache(a),g.debug("Invalidated execution flow cache",{flowId:a??"all"})}catch(a){g.warn("Failed to invalidate execution flow cache",a)}}async saveFlow(a){try{g.debug(`Saving flow: ${a.id}`,{name:a.name}),(0,e.ln)(a.id),await i(),await (0,e.Vt)(h,a.id,a);let b=this.flowsCache;if(b){let c=b.findIndex(b=>b.id===a.id);c>=0?b[c]=a:b.push(a),this.flowsCache=b}return await this.invalidateExecutionCache(a.id),g.info(`Flow ${a.id} saved successfully`),{success:!0}}catch(a){return g.error("Failed to save flow",a),{success:!1,error:a instanceof Error?a.message:"Failed to save flow"}}}async deleteFlow(a){try{g.debug(`Deleting flow: ${a}`),await i(),await (0,e.bB)(h,a);let b=this.flowsCache;return b&&(this.flowsCache=b.filter(b=>b.id!==a)),await this.invalidateExecutionCache(a),g.info(`Flow ${a} deleted successfully`),{success:!0}}catch(b){return g.error(`Failed to delete flow: ${a}`,b),{success:!1,error:b instanceof Error?b.message:"Failed to delete flow"}}}createNode(a,b){g.debug(`Creating new node of type: ${a}`,{position:b});let c={id:(0,d.A)(),type:a,position:b,data:{label:`${"mcp"===a?"MCP":a.charAt(0).toUpperCase()+a.slice(1)} Node`,type:a,properties:{}}};return g.debug(`Node created with ID: ${c.id}`),c}createNewFlow(a="NewFlow"){g.debug(`Creating new flow: ${a}`);let b={id:(0,d.A)(),type:"start",position:{x:250,y:150},data:{label:"Start Node",type:"start",properties:{promptTemplate:""}}},c={id:(0,d.A)(),name:a,nodes:[b],edges:[]};return g.info(`New flow created with ID: ${c.id}`,{name:a}),c}createHistoryEntry(a,b){return g.debug("Creating history entry",{nodeCount:a.length,edgeCount:b.length}),{nodes:[...a],edges:[...b]}}generateSampleFlow(a="Sample Flow"){g.debug(`Generating sample flow: ${a}`);let b={id:(0,d.A)(),name:a,nodes:[{id:"1",type:"start",position:{x:250,y:50},data:{label:"Start Node",type:"start",properties:{prompt:"Enter your query here",systemMessage:"You are a helpful assistant",temperature:0}}},{id:"2",type:"process",position:{x:250,y:200},data:{label:"Process Node",type:"process",properties:{operation:"transform",enabled:!0}}},{id:"3",type:"finish",position:{x:250,y:350},data:{label:"Finish Node",type:"finish",properties:{format:"json",template:'{ "result": {{data}} }'}}},{id:"4",type:"mcp",position:{x:450,y:200},data:{label:"MCP Node",type:"mcp",properties:{channels:2,mode:"parallel"}}}],edges:[{id:"e1-2",source:"1",target:"2",type:"custom"},{id:"e2-3",source:"2",target:"3",type:"custom"}]};return g.info(`Sample flow generated with ID: ${b.id}`,{name:a}),b}async listFlows(){g.debug("listFlows: Entering method");try{let a=await this.loadFlows();return{success:!0,flows:a}}catch(a){return g.warn("listFlows: Failed to list flows:",a),{success:!1,error:a instanceof Error?a.message:"Failed to list flows"}}}}let k=new j},96487:()=>{}};
1
+ exports.id=8126,exports.ids=[8126,9989],exports.modules={947:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"40520b537d1d43f510acbccd60e3e7d42ce215c157":()=>d.c,"60de87c4c5950c080550cb766970e88ae9c9a0ca25":()=>d.G});var d=c(73456)},3676:(a,b,c)=>{"use strict";c.d(b,{Wj:()=>h,ln:()=>g});var d=c(10641),e=c(58739);let f="encryption_locked";async function g(){return(0,e.isEncryptionLocked)()}async function h(a){return await g()?a?.openai?d.NextResponse.json({error:{message:"Encryption is locked. Unlock FLUJO to continue.",type:f,code:f,param:null}},{status:423}):d.NextResponse.json({error:f},{status:423}):null}},73456:(a,b,c)=>{"use strict";c.d(b,{G:()=>l,c:()=>k});var d=c(75879);c(68633);var e=c(50846),f=c(92372),g=c(46480),h=c(58739),i=c(51669);let j=(0,e.h)("backend/utils/resolveGlobalVars");async function k(a){j.debug("Entering resolveGlobalVars method");let b=await (0,f.YM)(g.Z.GLOBAL_ENV_VARS,{}),c=function(a){if(!a||"object"!=typeof a)return!1;let b=Object.keys(a);if(0===b.length)return!0;let c=a[b[0]];return c&&"object"==typeof c&&"value"in c&&"metadata"in c&&"object"==typeof c.metadata&&"isSecret"in c.metadata}(b);j.debug(`Loaded ${Object.keys(b).length} global environment variables (${c?"new":"old"} format)`);let d={};if(c)for(let[a,c]of Object.entries(b))d[a]=c.value;else d={...b};let e=async a=>{let b=a.match(/\$\{global:([^}]+)\}/g);if(!b)return a;let c=a;for(let a of b){let b=a.substring(9,a.length-1);if(void 0!==d[b]){let e=d[b];if(e.startsWith("encrypted:")){j.debug(`Decrypting encrypted global variable: ${b}`);try{let a=e.substring(10),c=await (0,h.decryptWithPassword)(a);if(c)e=c,j.debug(`Successfully decrypted global variable: ${b}`);else{j.warn(`Failed to decrypt global variable: ${b}`);continue}}catch(a){j.error(`Error decrypting global variable: ${b}`,a);continue}}else if(e.startsWith("encrypted_failed:")){j.warn(`Skipping failed encrypted global variable: ${b}`);continue}j.debug(`Resolved global variable: ${b}`),c=c.replace(a,e)}else j.warn(`Global variable not found: ${b}`)}return c},i=async a=>{if("string"==typeof a)return await e(a);if(Array.isArray(a))return await Promise.all(a.map(a=>i(a)));if(null!==a&&"object"==typeof a){let b={};for(let[c,d]of Object.entries(a))b[c]=await i(d);return b}return a},k=await i(a);return"object"==typeof a&&null!==a&&j.debug("Resolved global variables result:",JSON.stringify(k,null,2)),j.debug("Completed global variable resolution"),k}async function l(a,b=0){if(j.debug(`Entering resolveAndDecryptApiKey method (depth: ${b})`),!a)return j.warn("Empty value provided"),null;if(b>=10)return j.warn(`Maximum resolution depth reached (10) for value: ${a}`),a;let c=a;if(c.startsWith("encrypted:")){j.debug(`Decrypting encrypted value at depth ${b}`);try{let a=c.substring(10),d=await (0,h.decryptWithPassword)(a);if(!d)return j.warn(`Failed to decrypt value at depth ${b}`),null;j.debug(`Successfully decrypted value at depth ${b}`),j.verbose(d),c=d}catch(a){return j.error(`Error decrypting value at depth ${b}:`,a),null}}else c.startsWith("encrypted_failed:")&&(j.warn(`Skipping failed encrypted value at depth ${b}`),c=c.substring(17));if(c.includes("${global:")){j.debug(`Resolving global variables at depth ${b}`);try{let a=await k(c);if(j.verbose(a),a!==c)return j.debug(`Value changed after resolving globals at depth ${b}, processing recursively`),l(a,b+1);c=a}catch(a){return j.error(`Error resolving global variables at depth ${b}:`,a),null}}return j.debug(`Completed resolveAndDecryptApiKey at depth ${b}`),c}(0,i.D)([k,l]),(0,d.A)(k,"40520b537d1d43f510acbccd60e3e7d42ce215c157",null),(0,d.A)(l,"60de87c4c5950c080550cb766970e88ae9c9a0ca25",null)},78335:()=>{},79989:(a,b,c)=>{"use strict";c.d(b,{flowService:()=>k});var d=c(32524),e=c(92372),f=c(46480);let g=(0,c(50846).h)("backend/services/flow/index"),h=f.Z.FLOWS;async function i(){return global.__flujo_flowsMigration||(global.__flujo_flowsMigration=(async()=>{try{await (0,e.w5)(f.Z.FLOWS,h,a=>a.id)}catch(a){g.error("Flow storage migration failed",a),global.__flujo_flowsMigration=void 0}})()),global.__flujo_flowsMigration}class j{get flowsCache(){return global.__flujo_flowsCache??null}set flowsCache(a){global.__flujo_flowsCache=a}async loadFlows(){try{if(this.flowsCache)return g.debug("Using cached flows"),this.flowsCache;g.debug("Loading flows from storage"),await i();let a=await (0,e.pL)(h);return this.flowsCache=a,g.info("Loaded flows from storage",{count:a.length}),a}catch(a){return g.error("Failed to load flows",a),[]}}async getFlow(a){try{g.debug(`Getting flow by ID: ${a}`);let b=this.flowsCache?.find(b=>b.id===a)||null;if(b)return g.debug(`Flow ${a} found in cache`),b;await i();let c=null;try{c=await (0,e.EI)(h,a,null)}catch(b){g.debug(`getFlow: could not load flow ${a}`,b),c=null}if(c&&this.flowsCache){let a=this.flowsCache,b=a.findIndex(a=>a.id===c.id);b>=0?a[b]=c:a.push(c),this.flowsCache=a}return g.debug(`Flow ${a} ${c?"found":"not found"}`),c}catch(b){return g.error(`Failed to get flow ${a}`,b),null}}async invalidateExecutionCache(a){try{let{FlowExecutor:b}=await Promise.all([c.e(6996),c.e(1223),c.e(5734),c.e(1373),c.e(5504),c.e(724),c.e(1403)]).then(c.bind(c,91403));b.clearFlowCache(a),g.debug("Invalidated execution flow cache",{flowId:a??"all"})}catch(a){g.warn("Failed to invalidate execution flow cache",a)}}async saveFlow(a){try{g.debug(`Saving flow: ${a.id}`,{name:a.name}),(0,e.ln)(a.id),await i(),await (0,e.Vt)(h,a.id,a);let b=this.flowsCache;if(b){let c=b.findIndex(b=>b.id===a.id);c>=0?b[c]=a:b.push(a),this.flowsCache=b}return await this.invalidateExecutionCache(a.id),g.info(`Flow ${a.id} saved successfully`),{success:!0}}catch(a){return g.error("Failed to save flow",a),{success:!1,error:a instanceof Error?a.message:"Failed to save flow"}}}async deleteFlow(a){try{g.debug(`Deleting flow: ${a}`),await i(),await (0,e.bB)(h,a);let b=this.flowsCache;return b&&(this.flowsCache=b.filter(b=>b.id!==a)),await this.invalidateExecutionCache(a),g.info(`Flow ${a} deleted successfully`),{success:!0}}catch(b){return g.error(`Failed to delete flow: ${a}`,b),{success:!1,error:b instanceof Error?b.message:"Failed to delete flow"}}}createNode(a,b){g.debug(`Creating new node of type: ${a}`,{position:b});let c={id:(0,d.A)(),type:a,position:b,data:{label:`${"mcp"===a?"MCP":a.charAt(0).toUpperCase()+a.slice(1)} Node`,type:a,properties:{}}};return g.debug(`Node created with ID: ${c.id}`),c}createNewFlow(a="NewFlow"){g.debug(`Creating new flow: ${a}`);let b={id:(0,d.A)(),type:"start",position:{x:250,y:150},data:{label:"Start Node",type:"start",properties:{promptTemplate:""}}},c={id:(0,d.A)(),name:a,nodes:[b],edges:[]};return g.info(`New flow created with ID: ${c.id}`,{name:a}),c}createHistoryEntry(a,b){return g.debug("Creating history entry",{nodeCount:a.length,edgeCount:b.length}),{nodes:[...a],edges:[...b]}}generateSampleFlow(a="Sample Flow"){g.debug(`Generating sample flow: ${a}`);let b={id:(0,d.A)(),name:a,nodes:[{id:"1",type:"start",position:{x:250,y:50},data:{label:"Start Node",type:"start",properties:{prompt:"Enter your query here",systemMessage:"You are a helpful assistant",temperature:0}}},{id:"2",type:"process",position:{x:250,y:200},data:{label:"Process Node",type:"process",properties:{operation:"transform",enabled:!0}}},{id:"3",type:"finish",position:{x:250,y:350},data:{label:"Finish Node",type:"finish",properties:{format:"json",template:'{ "result": {{data}} }'}}},{id:"4",type:"mcp",position:{x:450,y:200},data:{label:"MCP Node",type:"mcp",properties:{channels:2,mode:"parallel"}}}],edges:[{id:"e1-2",source:"1",target:"2",type:"custom"},{id:"e2-3",source:"2",target:"3",type:"custom"}]};return g.info(`Sample flow generated with ID: ${b.id}`,{name:a}),b}async listFlows(){g.debug("listFlows: Entering method");try{let a=await this.loadFlows();return{success:!0,flows:a}}catch(a){return g.warn("listFlows: Failed to list flows:",a),{success:!1,error:a instanceof Error?a.message:"Failed to list flows"}}}}let k=new j},96487:()=>{}};
@@ -1 +1,2 @@
1
- "use strict";exports.id=8739,exports.ids=[8739],exports.modules={58739:(a,b,c)=>{c.r(b),c.d(b,{authenticate:()=>F,changeEncryptionPassword:()=>A,decryptWithPassword:()=>D,encryptWithPassword:()=>C,getEncryptionType:()=>J,initializeDefaultEncryption:()=>v,initializeEncryption:()=>w,isEncryptionInitialized:()=>H,isUserEncryptionEnabled:()=>I,logout:()=>G,migrateToUserEncryption:()=>z,verifyPassword:()=>E});var d=c(58862),e=c.n(d),f=c(92372),g=c(46480),h=c(50846),i=c(32524);let j=(0,h.h)("utils/encryption/session"),k=new Map;function l(){let a=Date.now(),b=0;for(let[c,d]of k.entries())a-d.createdAt>72e5&&(k.delete(c),b++);b>0&&j.info(`Cleaned up ${b} expired encryption sessions`)}let m=null,n=(0,h.h)("utils/encryption/secure"),o="data_encryption_key",p="data_encryption_iv",q="data_encryption_salt",r="encryption_version",s="encryption_type";var t=function(a){return a.DEFAULT="default",a.USER="user",a}(t||{});function u(){let a=e().enc.Utf8.parse("flujo_fixed_salt_v1");return e().PBKDF2("FLUJO~",a,{keySize:8,iterations:1e5})}async function v(){n.debug("initializeDefaultEncryption: Entering method");try{if(await H())return!0;let a=u(),b=e().lib.WordArray.random(8),c=e().lib.WordArray.random(16),d=e().AES.encrypt(b.toString(),a,{iv:c,mode:e().mode.CBC,padding:e().pad.Pkcs7}),h=e().enc.Utf8.parse("flujo_fixed_salt_v1"),i={[o]:d.toString(),[p]:c.toString(),[q]:h.toString(),[r]:1,[s]:"default"};return await (0,f.VH)(g.Z.ENCRYPTION_KEY,i),!0}catch(a){return n.error("initializeDefaultEncryption: Failed to initialize default encryption:",a),!1}}async function w(a){n.debug("initializeEncryption: Entering method");try{let b=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(b&&"default"===b[s])return await z(a);let c=e().lib.WordArray.random(16),d=e().PBKDF2(a,c,{keySize:8,iterations:1e5}),h=e().lib.WordArray.random(8),i=e().lib.WordArray.random(16),j=e().AES.encrypt(h.toString(),d,{iv:i,mode:e().mode.CBC,padding:e().pad.Pkcs7}),k={[o]:j.toString(),[p]:i.toString(),[q]:c.toString(),[r]:1,[s]:"user"};return await (0,f.VH)(g.Z.ENCRYPTION_KEY,k),!0}catch(a){return n.error("initializeEncryption: Failed to initialize encryption:",a),!1}}async function x(){n.debug("getDefaultDEK: Entering method");try{let a=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(!a){if(!await v())return n.error("getDefaultDEK: Failed to initialize default encryption"),null;return await x()}if("default"!==a[s])return n.error("getDefaultDEK: Not using default encryption"),null;let b=a[o],c=e().enc.Hex.parse(a[p]),d=u(),h=e().AES.decrypt(b,d,{iv:c,mode:e().mode.CBC,padding:e().pad.Pkcs7});if(!h.toString())return n.error("getDefaultDEK: Failed to decrypt DEK with default key"),null;return e().enc.Hex.parse(h.toString())}catch(a){return n.error("getDefaultDEK: Failed to get default DEK:",a),null}}async function y(a){n.debug("getUserDEK: Entering method");try{let b=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(!b)return n.error("getUserDEK: No encryption metadata found"),null;if("user"!==b[s])return n.error("getUserDEK: Not using user encryption"),null;let c=b[o],d=e().enc.Hex.parse(b[p]),h=e().enc.Hex.parse(b[q]),i=e().PBKDF2(a,h,{keySize:8,iterations:1e5}),j=e().AES.decrypt(c,i,{iv:d,mode:e().mode.CBC,padding:e().pad.Pkcs7});if(!j.toString())return n.error("getUserDEK: Failed to decrypt DEK with provided password"),null;return e().enc.Hex.parse(j.toString())}catch(a){return n.error("getUserDEK: Failed to get user DEK:",a),null}}async function z(a){n.debug("migrateToUserEncryption: Entering method");try{let b=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(b&&"user"===b[s])return!0;let c=await x();if(!c)return n.error("migrateToUserEncryption: Failed to get default DEK for migration"),!1;let d=e().lib.WordArray.random(16),h=e().PBKDF2(a,d,{keySize:8,iterations:1e5}),i=e().lib.WordArray.random(16),j=e().AES.encrypt(c.toString(),h,{iv:i,mode:e().mode.CBC,padding:e().pad.Pkcs7}),k={[o]:j.toString(),[p]:i.toString(),[q]:d.toString(),[r]:b?b[r]:1,[s]:"user"};return await (0,f.VH)(g.Z.ENCRYPTION_KEY,k),!0}catch(a){return n.error("migrateToUserEncryption: Failed to migrate to user encryption:",a),!1}}async function A(a,b){n.debug("changeEncryptionPassword: Entering method");try{let c=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(!c)return n.error("changeEncryptionPassword: No encryption metadata found"),!1;if("default"===c[s])return await z(b);let d=c[o],h=e().enc.Hex.parse(c[p]),i=e().enc.Hex.parse(c[q]),j=e().PBKDF2(a,i,{keySize:8,iterations:1e5}),k=e().AES.decrypt(d,j,{iv:h,mode:e().mode.CBC,padding:e().pad.Pkcs7});if(!k.toString())return n.error("changeEncryptionPassword: Failed to decrypt DEK with old password"),!1;let l=e().lib.WordArray.random(16),m=e().PBKDF2(b,l,{keySize:8,iterations:1e5}),t=e().lib.WordArray.random(16),u=e().AES.encrypt(k.toString(),m,{iv:t,mode:e().mode.CBC,padding:e().pad.Pkcs7}),v={[o]:u.toString(),[p]:t.toString(),[q]:l.toString(),[r]:c[r],[s]:"user"};return await (0,f.VH)(g.Z.ENCRYPTION_KEY,v),!0}catch(a){return n.error("changeEncryptionPassword: Failed to change encryption password:",a),!1}}async function B(a,b=!1){n.debug("getDEK: Entering method");try{if(b&&a){n.debug("getDEK: Using session token");let b=function(a){let b=k.get(a);if(!b)return j.warn(`Session not found: ${a}`),null;let c=Date.now();return c-b.createdAt>72e5?(j.warn(`Session expired: ${a}`),k.delete(a),null):(b.lastUsed=c,b.dek)}(a);if(b)return e().enc.Hex.parse(b);n.warn("getDEK: Invalid or expired session token, falling back to default encryption")}let c=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(!c){if(n.info("getDEK: No encryption metadata found, initializing default encryption"),!await v())return n.error("getDEK: Failed to initialize default encryption"),null;return await B(a,b)}if("user"!==c[s])return await x();{if(!a||b){n.warn("getDEK: Password required for user encryption but not provided, falling back to default encryption");let a=await x();if(a)return a;if(!await v())return n.error("getDEK: Failed to initialize default encryption as fallback"),null;return await x()}let c=await y(a);if(c)return c;return n.warn("getDEK: Failed to get user DEK, falling back to default encryption"),await x()}}catch(a){n.error("getDEK: Failed to get DEK:",a);try{if(n.warn("getDEK: Attempting to initialize default encryption as error recovery"),await v())return await x()}catch(a){n.error("getDEK: Failed to initialize default encryption as error recovery:",a)}return null}}async function C(a,b,c=!1){n.debug("encryptWithPassword: Entering method");try{let d=await B(b,c);if(!d)return null;let f=e().lib.WordArray.random(16),g=e().AES.encrypt(a,d,{iv:f,mode:e().mode.CBC,padding:e().pad.Pkcs7});return f.toString()+":"+g.toString()}catch(a){return n.error("encryptWithPassword: Failed to encrypt data:",a),null}}async function D(a,b,c=!1){n.debug("decryptWithPassword: Entering method");try{let d=await B(b,c);if(!d)return null;let f=a.split(":");if(2!==f.length)return n.error("decryptWithPassword: Invalid ciphertext format"),null;let g=e().enc.Hex.parse(f[0]),h=f[1];return e().AES.decrypt(h,d,{iv:g,mode:e().mode.CBC,padding:e().pad.Pkcs7}).toString(e().enc.Utf8)}catch(a){return n.error("decryptWithPassword: Failed to decrypt data:",a),null}}async function E(a){n.debug("verifyPassword: Entering method");let b=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(!b||"user"!==b[s])return{valid:!1};{let b=await y(a);return null!==b?{valid:!0,token:function(a){let b=(0,i.A)(),c=Date.now();return k.set(b,{token:b,dek:a,createdAt:c,lastUsed:c}),j.info(`Created encryption session: ${b}`),!m&&(m=setInterval(l,36e5)).unref&&m.unref(),b}(b.toString())}:{valid:!1}}}async function F(a){n.debug("authenticate: Entering method");let b=await E(a);return b.valid&&b.token||null}async function G(a){n.debug("logout: Entering method");try{return k.has(a)&&(k.delete(a),j.info(`Invalidated encryption session: ${a}`)),!0}catch(a){return n.error("logout: Failed to invalidate session:",a),!1}}async function H(){return n.debug("isEncryptionInitialized: Entering method"),null!==await (0,f.YM)(g.Z.ENCRYPTION_KEY,null)}async function I(){n.debug("isUserEncryptionEnabled: Entering method");let a=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);return null!==a&&"user"===a[s]}async function J(){n.debug("getEncryptionType: Entering method");let a=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);return a?a[s]||"default":null}}};
1
+ "use strict";exports.id=8739,exports.ids=[8739],exports.modules={13516:(a,b,c)=>{c.d(b,{G:()=>d});let d={LOG_LEVEL:3,INCLUDE_TOOL_CALLS_IN_RESPONSE:!0,ENABLE_EXECUTION_TRACKER:!1}},43326:(a,b,c)=>{c.d(b,{JC:()=>f,Ne:()=>h,ok:()=>g});var d=c(33873),e=c.n(d);function f(){return process.cwd()}function g(){let a=process.env.FLUJO_DATA_DIR;return a&&a.trim().length>0?e().resolve(a):f()}function h(){return process.env.FLUJO_CONTAINER?"container":process.env.FLUJO_NPM?"npm":"git"}},46480:(a,b,c)=>{c.d(b,{Z:()=>d});var d=function(a){return a.MODELS="models",a.FLOWS="flows",a.CHAT_HISTORY="history",a.THEME="theme",a.ENCRYPTION_KEY="encryption_key",a.MCP_SERVERS="mcp_servers",a.GLOBAL_ENV_VARS="global_env_vars",a.CURRENT_CONVERSATION_ID="current_conversation_id",a.SELECTED_FLOW_ID="selected_flow_id",a.SPEECH_SETTINGS="speech_settings",a.SPOTLIGHT_SERVERS="spotlight_servers",a.PLANNED_EXECUTIONS="planned_executions",a}({})},50846:(a,b,c)=>{c.d(b,{h:()=>i});var d=c(13516);let e={VERBOSE:-1,DEBUG:0,INFO:1,WARN:2,ERROR:3},f="number"==typeof d.G.LOG_LEVEL?d.G.LOG_LEVEL:e.ERROR;function g(a,b=0){if(b>6)return String(a);if(!(a instanceof Error))return a;let c={name:a.name,message:a.message};for(let d of Object.getOwnPropertyNames(a)){if("name"===d||"message"===d)continue;let e=a[d];"function"!=typeof e&&("stack"===d?c.stack=e:"cause"===d?c.cause=g(e,b+1):"errors"===d&&Array.isArray(e)?c.errors=e.map(a=>g(a,b+1)):c[d]=e)}return c}function h(a,b,c,d,h){if(a>=("number"==typeof h?h:f)){if("function"==typeof d)try{d=d()}catch{d="[lazy log data threw]"}let f=new Date().toISOString(),h=`[${f}] [${b}]`,i=`${h} ${c}`;if(void 0!==d)if(d instanceof Error||"object"==typeof d)try{let a=d instanceof Error?g(d):d,b=JSON.stringify(a,(a,b)=>b instanceof Error?g(b):b,2);i+=`:
2
+ ${b}`}catch(a){i+=": [Object cannot be stringified]"}else i+=`: ${d}`;switch(a){case e.VERBOSE:console.debug(`[VERBOSE] ${i}`);break;case e.DEBUG:console.debug(i);break;case e.INFO:console.info(i);break;case e.WARN:console.warn(i);break;case e.ERROR:console.error(i);break;default:console.log(i)}}}function i(a,b){let c,d=((c=a.replace(/^src\//,"")).startsWith("/")&&(c=c.substring(1)),c);return{verbose:(a,c)=>{h(e.VERBOSE,d,a,c,b)},debug:(a,c)=>{h(e.DEBUG,d,a,c,b)},info:(a,c)=>{h(e.INFO,d,a,c,b)},warn:(a,c)=>{h(e.WARN,d,a,c,b)},error:(a,c)=>{h(e.ERROR,d,a,c,b)}}}},58739:(a,b,c)=>{c.r(b),c.d(b,{EncryptionLockedError:()=>o,authenticate:()=>G,changeEncryptionPassword:()=>B,decryptWithPassword:()=>E,encryptWithPassword:()=>D,getEncryptionType:()=>L,initializeDefaultEncryption:()=>w,initializeEncryption:()=>x,isEncryptionInitialized:()=>I,isEncryptionLocked:()=>K,isUserEncryptionEnabled:()=>J,logout:()=>H,migrateToUserEncryption:()=>A,verifyPassword:()=>F});var d=c(58862),e=c.n(d),f=c(92372),g=c(46480),h=c(50846),i=c(32524);let j=(0,h.h)("utils/encryption/session"),k=global.__flujo_encryption_sessions??(global.__flujo_encryption_sessions=new Map);function l(){let a=Date.now(),b=0;for(let[c,d]of k.entries())a-d.createdAt>72e5&&(k.delete(c),b++);b>0&&j.info(`Cleaned up ${b} expired encryption sessions`)}let m=null,n=(0,h.h)("utils/encryption/secure");class o extends Error{constructor(a="Encryption is locked: user password required to access secrets"){super(a),this.name="EncryptionLockedError",Object.setPrototypeOf(this,o.prototype)}}let p="data_encryption_key",q="data_encryption_iv",r="data_encryption_salt",s="encryption_version",t="encryption_type";var u=function(a){return a.DEFAULT="default",a.USER="user",a}(u||{});function v(){let a=e().enc.Utf8.parse("flujo_fixed_salt_v1");return e().PBKDF2("FLUJO~",a,{keySize:8,iterations:1e5})}async function w(){n.debug("initializeDefaultEncryption: Entering method");try{if(await I())return!0;let a=v(),b=e().lib.WordArray.random(8),c=e().lib.WordArray.random(16),d=e().AES.encrypt(b.toString(),a,{iv:c,mode:e().mode.CBC,padding:e().pad.Pkcs7}),h=e().enc.Utf8.parse("flujo_fixed_salt_v1"),i={[p]:d.toString(),[q]:c.toString(),[r]:h.toString(),[s]:1,[t]:"default"};return await (0,f.VH)(g.Z.ENCRYPTION_KEY,i),!0}catch(a){return n.error("initializeDefaultEncryption: Failed to initialize default encryption:",a),!1}}async function x(a){n.debug("initializeEncryption: Entering method");try{let b=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(b&&"default"===b[t])return await A(a);let c=e().lib.WordArray.random(16),d=e().PBKDF2(a,c,{keySize:8,iterations:1e5}),h=e().lib.WordArray.random(8),i=e().lib.WordArray.random(16),j=e().AES.encrypt(h.toString(),d,{iv:i,mode:e().mode.CBC,padding:e().pad.Pkcs7}),k={[p]:j.toString(),[q]:i.toString(),[r]:c.toString(),[s]:1,[t]:"user"};return await (0,f.VH)(g.Z.ENCRYPTION_KEY,k),!0}catch(a){return n.error("initializeEncryption: Failed to initialize encryption:",a),!1}}async function y(){n.debug("getDefaultDEK: Entering method");try{let a=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(!a){if(!await w())return n.error("getDefaultDEK: Failed to initialize default encryption"),null;return await y()}if("default"!==a[t])return n.error("getDefaultDEK: Not using default encryption"),null;let b=a[p],c=e().enc.Hex.parse(a[q]),d=v(),h=e().AES.decrypt(b,d,{iv:c,mode:e().mode.CBC,padding:e().pad.Pkcs7});if(!h.toString())return n.error("getDefaultDEK: Failed to decrypt DEK with default key"),null;return e().enc.Hex.parse(h.toString())}catch(a){return n.error("getDefaultDEK: Failed to get default DEK:",a),null}}async function z(a){n.debug("getUserDEK: Entering method");try{let b=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(!b)return n.error("getUserDEK: No encryption metadata found"),null;if("user"!==b[t])return n.error("getUserDEK: Not using user encryption"),null;let c=b[p],d=e().enc.Hex.parse(b[q]),h=e().enc.Hex.parse(b[r]),i=e().PBKDF2(a,h,{keySize:8,iterations:1e5}),j=e().AES.decrypt(c,i,{iv:d,mode:e().mode.CBC,padding:e().pad.Pkcs7});if(!j.toString())return n.error("getUserDEK: Failed to decrypt DEK with provided password"),null;return e().enc.Hex.parse(j.toString())}catch(a){return n.error("getUserDEK: Failed to get user DEK:",a),null}}async function A(a){n.debug("migrateToUserEncryption: Entering method");try{let b=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(b&&"user"===b[t])return!0;let c=await y();if(!c)return n.error("migrateToUserEncryption: Failed to get default DEK for migration"),!1;let d=e().lib.WordArray.random(16),h=e().PBKDF2(a,d,{keySize:8,iterations:1e5}),i=e().lib.WordArray.random(16),j=e().AES.encrypt(c.toString(e().enc.Utf8),h,{iv:i,mode:e().mode.CBC,padding:e().pad.Pkcs7}),k={[p]:j.toString(),[q]:i.toString(),[r]:d.toString(),[s]:b?b[s]:1,[t]:"user"};return await (0,f.VH)(g.Z.ENCRYPTION_KEY,k),!0}catch(a){return n.error("migrateToUserEncryption: Failed to migrate to user encryption:",a),!1}}async function B(a,b){n.debug("changeEncryptionPassword: Entering method");try{let c=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(!c)return n.error("changeEncryptionPassword: No encryption metadata found"),!1;if("default"===c[t])return await A(b);let d=c[p],h=e().enc.Hex.parse(c[q]),i=e().enc.Hex.parse(c[r]),j=e().PBKDF2(a,i,{keySize:8,iterations:1e5}),k=e().AES.decrypt(d,j,{iv:h,mode:e().mode.CBC,padding:e().pad.Pkcs7});if(!k.toString())return n.error("changeEncryptionPassword: Failed to decrypt DEK with old password"),!1;let l=e().lib.WordArray.random(16),m=e().PBKDF2(b,l,{keySize:8,iterations:1e5}),o=e().lib.WordArray.random(16),u=e().AES.encrypt(k.toString(e().enc.Utf8),m,{iv:o,mode:e().mode.CBC,padding:e().pad.Pkcs7}),v={[p]:u.toString(),[q]:o.toString(),[r]:l.toString(),[s]:c[s],[t]:"user"};return await (0,f.VH)(g.Z.ENCRYPTION_KEY,v),!0}catch(a){return n.error("changeEncryptionPassword: Failed to change encryption password:",a),!1}}async function C(a,b=!1){n.debug("getDEK: Entering method");try{if(b&&a){n.debug("getDEK: Using session token");let b=function(a){let b=k.get(a);if(!b)return j.warn(`Session not found: ${a}`),null;let c=Date.now();return c-b.createdAt>72e5?(j.warn(`Session expired: ${a}`),k.delete(a),null):(b.lastUsed=c,b.dek)}(a);if(b)return e().enc.Hex.parse(b);n.warn("getDEK: Invalid or expired session token, falling back to default encryption")}let c=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(!c){if(n.info("getDEK: No encryption metadata found, initializing default encryption"),!await w())return n.error("getDEK: Failed to initialize default encryption"),null;return await C(a,b)}if("user"!==c[t])return await y();{let c=global.__flujo_server_dek??null;if(c)return n.debug("getDEK: Using server unlock state for user encryption"),e().enc.Hex.parse(c);if(a&&!b){let b=await z(a);if(b)return b;n.warn("getDEK: Provided password did not yield a valid user DEK")}throw n.warn("getDEK: User encryption is locked (no unlock state or valid credential)"),new o}}catch(a){if(a instanceof o)throw a;n.error("getDEK: Failed to get DEK:",a);try{if(n.warn("getDEK: Attempting to initialize default encryption as error recovery"),await w())return await y()}catch(a){n.error("getDEK: Failed to initialize default encryption as error recovery:",a)}return null}}async function D(a,b,c=!1){n.debug("encryptWithPassword: Entering method");try{let d=await C(b,c);if(!d)return null;let f=e().lib.WordArray.random(16),g=e().AES.encrypt(a,d,{iv:f,mode:e().mode.CBC,padding:e().pad.Pkcs7});return f.toString()+":"+g.toString()}catch(a){if(a instanceof o)throw a;return n.error("encryptWithPassword: Failed to encrypt data:",a),null}}async function E(a,b,c=!1){n.debug("decryptWithPassword: Entering method");try{let d=await C(b,c);if(!d)return null;let f=a.split(":");if(2!==f.length)return n.error("decryptWithPassword: Invalid ciphertext format"),null;let g=e().enc.Hex.parse(f[0]),h=f[1];return e().AES.decrypt(h,d,{iv:g,mode:e().mode.CBC,padding:e().pad.Pkcs7}).toString(e().enc.Utf8)}catch(a){if(a instanceof o)throw a;return n.error("decryptWithPassword: Failed to decrypt data:",a),null}}async function F(a){n.debug("verifyPassword: Entering method");let b=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(!b||"user"!==b[t])return{valid:!1};{let b=await z(a);if(null!==b){var c;return c=b.toString(),global.__flujo_server_dek=c,j.info("Server encryption unlocked"),{valid:!0,token:function(a){let b=(0,i.A)(),c=Date.now();return k.set(b,{token:b,dek:a,createdAt:c,lastUsed:c}),j.info(`Created encryption session: ${b}`),!m&&(m=setInterval(l,36e5)).unref&&m.unref(),b}(b.toString())}}return{valid:!1}}}async function G(a){n.debug("authenticate: Entering method");let b=await F(a);return b.valid&&b.token||null}async function H(a){n.debug("logout: Entering method");try{return k.has(a)&&(k.delete(a),j.info(`Invalidated encryption session: ${a}`)),!0}catch(a){return n.error("logout: Failed to invalidate session:",a),!1}}async function I(){return n.debug("isEncryptionInitialized: Entering method"),null!==await (0,f.YM)(g.Z.ENCRYPTION_KEY,null)}async function J(){n.debug("isUserEncryptionEnabled: Entering method");let a=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);return null!=a&&"user"===a[t]}async function K(){return await J()&&!global.__flujo_server_dek}async function L(){n.debug("getEncryptionType: Entering method");let a=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);return a?a[t]||"default":null}},92372:(a,b,c)=>{c.d(b,{EI:()=>B,N2:()=>u,Pv:()=>o,VH:()=>s,Vt:()=>A,YM:()=>t,bB:()=>C,ln:()=>w,pL:()=>D,w5:()=>E});var d=c(29021),e=c(33873),f=c.n(e),g=c(46480),h=c(50846),i=c(43326);let j=(0,h.h)("utils/storage/backend"),k=f().join((0,i.ok)(),"db"),l=f().join((0,i.ok)(),".next","storage"),m=a=>f().join(k,`${a}.json`);async function n(){try{await d.promises.access(k),j.verbose(`Storage directory exists: ${k}`)}catch{j.debug(`Creating storage directory: ${k}`),await d.promises.mkdir(k,{recursive:!0})}try{await d.promises.access(l),j.warn(`Old storage directory found: ${l}. This may cause data inconsistency issues.`)}catch{}}async function o(){for(let a of(j.debug("Verifying storage system initialization"),await n(),Object.values(g.Z)))try{let b=m(a),c=!1;try{await d.promises.access(b),c=!0}catch{}j.debug(`Storage check: ${a} - ${c?"File exists":"File does not exist yet"}`);let e=f().join(l,`${a}.json`);try{await d.promises.access(e),c?j.warn(`Found ${a} in both old and new storage locations. This may cause data inconsistency.`):j.warn(`Found ${a} in old storage location but not in new location. This may cause data loss.`)}catch{}}catch(b){j.error(`Storage verification failed for ${a}:`,b)}j.debug("Storage verification completed")}let p=new Map,q=0;async function r(a,b){let c=f().dirname(a);await d.promises.mkdir(c,{recursive:!0});let e=`${a}.tmp.${process.pid}.${++q}`;try{await d.promises.writeFile(e,b),await d.promises.rename(e,a)}catch(a){try{await d.promises.unlink(e)}catch{}throw a}}async function s(a,b){let c=m(a),d=(p.get(a)??Promise.resolve()).catch(()=>{}).then(()=>r(c,JSON.stringify(b,null,2)));p.set(a,d);try{await d,j.verbose(`Successfully saved item to: ${c}`)}catch(b){throw j.error(`Error saving item with key "${a}" to ${c}:`,b),b}finally{p.get(a)===d&&p.delete(a)}}async function t(a,b){try{await n();let c=m(a),e=await d.promises.readFile(c,"utf-8");if(0===e.trim().length)return j.warn(`Item with key "${a}" at ${c} is empty; treating as missing and returning default.`),b;try{let a=JSON.parse(e);return j.verbose(`Successfully loaded item from: ${c}`),a}catch(b){j.error(`CRITICAL: Failed to parse JSON from ${c}:`,b);let a=`${c}.corrupted.${Date.now()}.bak`;try{await d.promises.writeFile(a,e),j.info(`Created backup of corrupted file at: ${a}`)}catch(a){j.error("Failed to create backup of corrupted file:",a)}throw Error(`Failed to parse JSON from ${c}. A backup has been created at ${a}. Original error: ${b.message}`)}}catch(c){if("ENOENT"===c.code)return j.verbose(`Item with key "${a}" not found at ${m(a)}, returning default.`),b;throw j.error(`CRITICAL: Error loading item with key "${a}" from ${m(a)}:`,c),c}}async function u(a){let b=m(a);try{await d.promises.unlink(b),j.verbose(`Successfully cleared item: ${b}`)}catch(c){"ENOENT"!==c.code?j.warn(`Error clearing item with key "${a}" at ${b}:`,c):j.verbose(`Item with key "${a}" not found at ${b}, nothing to clear.`)}}let v=/^[A-Za-z0-9_-]{1,64}$/;function w(a){if("string"!=typeof a||!v.test(a))throw Error(`Unsafe collection item id: ${JSON.stringify(a)}`)}let x=a=>f().join(k,a),y=(a,b)=>f().join(x(a),`${b}.json`);function z(a,b){let c=(p.get(a)??Promise.resolve()).catch(()=>{}).then(b);return p.set(a,c),c.catch(()=>{}).finally(()=>{p.get(a)===c&&p.delete(a)}),c}async function A(a,b,c){w(b);let d=y(a,b);try{await z(`${a}/${b}`,()=>r(d,JSON.stringify(c,null,2))),j.verbose(`Successfully saved collection item: ${d}`)}catch(c){throw j.error(`Error saving collection item "${a}/${b}" to ${d}:`,c),c}}async function B(a,b,c){w(b);let e=y(a,b);try{let f=await d.promises.readFile(e,"utf-8");if(0===f.trim().length)return j.warn(`Collection item "${a}/${b}" at ${e} is empty; treating as missing.`),c;try{return JSON.parse(f)}catch(b){j.error(`CRITICAL: Failed to parse JSON from ${e}:`,b);let a=`${e}.corrupted.${Date.now()}.bak`;try{await d.promises.writeFile(a,f),j.info(`Created backup of corrupted file at: ${a}`)}catch(a){j.error("Failed to create backup of corrupted file:",a)}throw Error(`Failed to parse JSON from ${e}. A backup has been created at ${a}. Original error: ${b.message}`)}}catch(d){if("ENOENT"===d.code)return j.verbose(`Collection item "${a}/${b}" not found at ${e}, returning default.`),c;throw j.error(`CRITICAL: Error loading collection item "${a}/${b}" from ${e}:`,d),d}}async function C(a,b){w(b);let c=y(a,b);await z(`${a}/${b}`,async()=>{try{await d.promises.unlink(c),j.verbose(`Successfully deleted collection item: ${c}`)}catch(d){if("ENOENT"!==d.code)throw d;j.verbose(`Collection item "${a}/${b}" not found at ${c}, nothing to delete.`)}})}async function D(a){let b,c=x(a);try{b=await d.promises.readdir(c)}catch(a){if("ENOENT"===a.code)return[];throw a}let e=[];for(let a of b){if(!a.endsWith(".json")||a.includes(".tmp.")||a.includes(".corrupted.")||a.endsWith(".bak"))continue;let b=f().join(c,a);try{let a=await d.promises.readFile(b,"utf-8");if(0===a.trim().length){j.warn(`Collection item file ${b} is empty; skipping.`);continue}e.push(JSON.parse(a))}catch(a){j.error(`Failed to read collection item ${b}; skipping.`,a)}}return e}async function E(a,b,c){let e,f,g=m(a);try{e=await d.promises.readFile(g,"utf-8")}catch(a){if("ENOENT"===a.code)return 0;throw a}if(0===e.trim().length)return await d.promises.rename(g,`${g}.migrated-${Date.now()}.bak`),0;try{f=JSON.parse(e)}catch(b){return j.error(`Migration: legacy ${a}.json is not valid JSON; leaving it in place.`,b),0}if(!Array.isArray(f))return j.error(`Migration: legacy ${a}.json is not an array; leaving it in place.`),0;for(let a of(await d.promises.mkdir(x(b),{recursive:!0}),f)){let e;try{e=c(a),w(e)}catch(a){j.error(`Migration: skipping ${b} item with invalid/unsafe id`,a);continue}let f=y(b,e);try{await d.promises.access(f),j.debug(`Migration: ${b}/${e} already exists; keeping the existing file.`);continue}catch{}await r(f,JSON.stringify(a,null,2))}return await d.promises.rename(g,`${g}.migrated-${Date.now()}.bak`),j.info(`Migration: moved ${f.length} ${b} item(s) from ${a}.json to per-item storage.`),f.length}}};
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=9343,exports.ids=[9343],exports.modules={49343:(a,b,c)=>{c.r(b),c.d(b,{BashSession:()=>P,betaAgentToolset20260401:()=>N,betaBashTool:()=>Q,betaEditTool:()=>T,betaGlobTool:()=>U,betaGrepTool:()=>V,betaReadTool:()=>R,betaWriteTool:()=>S,extractSkillArchive:()=>I,resolvePath:()=>O,resolveSkillVersion:()=>G,setupSkills:()=>F});var d,e,f,g,h,i,j,k=c(67746),l=c(51455),m=c(73024),n=c(76760),o=c(31421),p=c(77598),q=c(80481),r=c(31390),s=c(42032);function t(a){if("object"!==a.inputSchema.type)throw Error(`JSON schema for tool "${a.name}" must be an object, but got ${a.inputSchema.type}`);return{type:"custom",name:a.name,input_schema:a.inputSchema,description:a.description,run:a.run,parse:a=>a,...a.close?{close:a.close}:{}}}c(23514),c(98572);var u=c(68491);async function v(a){try{return await l.realpath(a)}catch{return a}}async function w(a){let b=[],c=a;for(;;){let d;try{d=await l.realpath(c)}catch{let d=!1;try{d=(await l.lstat(c)).isSymbolicLink()}catch{}if(d){c=n.resolve(n.dirname(c),await l.readlink(c));continue}let e=n.dirname(c);if(e===c)return a;b.push(n.basename(c)),c=e;continue}return b.length?n.join(d,...b.reverse()):d}}async function x(a,b,c){let d=c?.allowOutside??!1;if(n.isAbsolute(b)){if(!d)throw new s.v(`absolute path ${JSON.stringify(b)} not permitted`);return n.resolve(b)}let e=await v(n.resolve(a)),f=n.resolve(e,b);if(d)return f;let g=await w(f),h=e.endsWith(n.sep)?e:e+n.sep;if(g!==e&&!g.startsWith(h))throw new s.v(`path ${JSON.stringify(b)} escapes workdir`);return g}async function y(a,b){let c,d=n.dirname(a),e=n.join(d,`.tmp-${process.pid}-${(0,p.randomUUID)()}`);try{c=await l.open(e,"wx",420),await c.writeFile(b,"utf-8"),await c.sync(),await c.close(),c=void 0,await l.rename(e,a)}catch(a){throw c&&await c.close().catch(()=>{}),await l.unlink(e).catch(()=>{}),a}}function z(a,b){switch(a?.code){case"ENOENT":return`${b}: no such file or directory`;case"EACCES":case"EPERM":return`${b}: permission denied`;case"ENOTDIR":return`${b}: not a directory`;case"EISDIR":return`${b}: is a directory`;case"ELOOP":return`${b}: too many levels of symbolic links`;case"ENAMETOOLONG":return`${b}: file name too long`;case"ENOSPC":return`${b}: no space left on device`;case"EMFILE":case"ENFILE":return`${b}: too many open files`;default:return`${b}: ${a instanceof Error?a.message:String(a)}`}}var A=c(57975),B=c(57075),C=c(46466),D=c(82562);let E=(0,A.promisify)(o.execFile);async function F(a){let{client:b,sessionId:c}=a;if(!b||!c)return async()=>{};let d=(0,D.WG)(b),e=await b.beta.sessions.retrieve(c),f=n.resolve(a.workdir,"skills"),g=[];for(let a of e.agent.skills)try{let c=await G(b,a.skill_id,a.version),e=await b.beta.skills.versions.retrieve(c,{skill_id:a.skill_id}),h=n.basename(e.name.trim());(""===h||"."===h||".."===h)&&(h=a.skill_id);let i=n.resolve(f,h);if(i!==f&&!i.startsWith(f+n.sep)){d.warn("skill name escapes the skills dir; skipping",{component:"agent-tool-context",name:e.name});continue}let j=await b.beta.skills.versions.download(c,{skill_id:a.skill_id});await l.rm(i,{recursive:!0,force:!0}),await l.mkdir(i,{recursive:!0,mode:493}),g.push(i),await I(j,i),d.info("downloaded skill",{component:"agent-tool-context",skill_id:a.skill_id,version:c,dest:i})}catch(b){d.warn("failed to download skill",{component:"agent-tool-context",skill_id:a.skill_id,error:String(b)})}return async()=>{for(let a of g)await l.rm(a,{recursive:!0,force:!0}).catch(b=>{d.warn("failed to clean up skill",{component:"agent-tool-context",dest:a,error:String(b)})})}}async function G(a,b,c){let d;if(/^\d+$/.test(c))return c;for await(let c of a.beta.skills.versions.list(b))/^\d+$/.test(c.version)&&(void 0===d||BigInt(c.version)>BigInt(d))&&(d=c.version);if(void 0===d)throw new r.pJ(`skill ${JSON.stringify(b)} has no concrete version to resolve ${JSON.stringify(c)} against`);return d}async function H(a,b){try{let{stdout:c}=await E(a,b);return c}catch(b){if(null!=b&&"object"==typeof b&&"ENOENT"===b.code)throw new r.pJ(`skill extraction requires the \`${a}\` command, but it was not found on PATH`);throw b}}async function I(a,b){let c=n.join(b,`.skill-archive-${process.pid}-${Date.now()}`);if(!a.body)throw new r.pJ("skill download response had no body");await (0,C.pipeline)(B.Readable.fromWeb(a.body),m.createWriteStream(c));let d=n.join(n.dirname(b),`.skill-stage-${process.pid}-${Date.now()}`);try{let a=await J(c,4),e=a.length>=4&&80===a[0]&&75===a[1]&&3===a[2]&&4===a[3],f=e?"unzip":"tar",g=await H(f,e?["-Z1",c]:["-tf",c]);for(let a of g.split("\n")){let b=a.trim();if(b&&(n.isAbsolute(b)||b.split(/[\\/]/).includes("..")))throw new r.pJ(`refusing to extract unsafe archive member: ${b}`)}for(let a of(await H(f,e?["-Z",c]:["-tvf",c])).split("\n")){let b=a.trimStart()[0];if("l"===b||"h"===b||"b"===b||"c"===b||"p"===b||"s"===b)throw new r.pJ("refusing to extract archive with symlink/hardlink/device member")}let h=function(a){let b,c=!1;for(let d of a.split("\n")){let a=d.trim().split("/").filter(a=>""!==a&&"."!==a);if(0===a.length)continue;let e=a[0];if(void 0===b)b=e;else if(e!==b)return"";a.length>1&&(c=!0)}return void 0!==b&&c?b:""}(g);await l.mkdir(d,{recursive:!0,mode:493}),await H(f,e?["-oq",c,"-d",d]:["-xf",c,"-C",d]);let i=h?n.join(d,h):d;for(let a of(await l.readdir(i)))await l.rename(n.join(i,a),n.join(b,a))}finally{await l.rm(c,{force:!0}),await l.rm(d,{recursive:!0,force:!0})}}async function J(a,b){let c=await l.open(a,"r");try{let a=Buffer.alloc(b),{bytesRead:d}=await c.read(a,0,b,0);return a.subarray(0,d)}finally{await c.close()}}let K=/\x1b\[[0-9;?]*[ -/]*[@-~]/g,L=l.glob;function M(a){return void 0===a?262144:a}function N(a){return[Q(a),R(a),S(a),T(a),U(a),V(a)]}function O(a,b){return x(a.workdir,b,{allowOutside:a.unrestrictedPaths??!1})}class P{constructor(a,b=function(){let a={};for(let[b,c]of Object.entries(process.env))b.startsWith("ANTHROPIC_")||(a[b]=c);return a}()){d.add(this),e.set(this,void 0),f.set(this,""),g.set(this,!1),h.set(this,!1),i.set(this,null),(0,k.G)(this,e,o.spawn("/bin/bash",["--noprofile","--norc"],{cwd:a,env:{...b,PS1:"",PS2:"",TERM:"dumb"},stdio:["pipe","pipe","pipe"],detached:!0}),"f"),(0,k.g)(this,e,"f").stdout.setEncoding("utf8"),(0,k.g)(this,e,"f").stderr.setEncoding("utf8"),(0,k.g)(this,e,"f").stdout.on("data",a=>(0,k.g)(this,d,"m",j).call(this,a)),(0,k.g)(this,e,"f").stderr.on("data",a=>(0,k.g)(this,d,"m",j).call(this,a)),(0,k.g)(this,e,"f").once("close",()=>{(0,k.G)(this,h,!0,"f");let a=(0,k.g)(this,i,"f");(0,k.G)(this,i,null,"f"),a?.resolve()})}get closed(){return(0,k.g)(this,h,"f")}async exec(a,b={}){if((0,k.g)(this,h,"f"))throw new r.pJ("bash session terminated");let c=b.timeoutMs??12e4,d=b.signal;if(d?.aborted)throw new r.pJ("bash command aborted");(0,k.G)(this,f,"","f"),(0,k.G)(this,g,!1,"f");let j=`__ANT_CMD_${p.randomUUID()}_DONE__`,l=`${j.slice(0,8)}''${j.slice(8)}`,m=`{ ${a}
1
+ "use strict";exports.id=9343,exports.ids=[9343],exports.modules={49343:(a,b,c)=>{c.r(b),c.d(b,{BashSession:()=>P,betaAgentToolset20260401:()=>N,betaBashTool:()=>Q,betaEditTool:()=>T,betaGlobTool:()=>U,betaGrepTool:()=>V,betaReadTool:()=>R,betaWriteTool:()=>S,extractSkillArchive:()=>I,resolvePath:()=>O,resolveSkillVersion:()=>G,setupSkills:()=>F});var d,e,f,g,h,i,j,k=c(67746),l=c(51455),m=c(73024),n=c(76760),o=c(31421),p=c(77598),q=c(80481),r=c(31390),s=c(42032);function t(a){if("object"!==a.inputSchema.type)throw Error(`JSON schema for tool "${a.name}" must be an object, but got ${a.inputSchema.type}`);return{type:"custom",name:a.name,input_schema:a.inputSchema,description:a.description,run:a.run,parse:a=>a,...a.close?{close:a.close}:{}}}c(1133),c(98572);var u=c(68491);async function v(a){try{return await l.realpath(a)}catch{return a}}async function w(a){let b=[],c=a;for(;;){let d;try{d=await l.realpath(c)}catch{let d=!1;try{d=(await l.lstat(c)).isSymbolicLink()}catch{}if(d){c=n.resolve(n.dirname(c),await l.readlink(c));continue}let e=n.dirname(c);if(e===c)return a;b.push(n.basename(c)),c=e;continue}return b.length?n.join(d,...b.reverse()):d}}async function x(a,b,c){let d=c?.allowOutside??!1;if(n.isAbsolute(b)){if(!d)throw new s.v(`absolute path ${JSON.stringify(b)} not permitted`);return n.resolve(b)}let e=await v(n.resolve(a)),f=n.resolve(e,b);if(d)return f;let g=await w(f),h=e.endsWith(n.sep)?e:e+n.sep;if(g!==e&&!g.startsWith(h))throw new s.v(`path ${JSON.stringify(b)} escapes workdir`);return g}async function y(a,b){let c,d=n.dirname(a),e=n.join(d,`.tmp-${process.pid}-${(0,p.randomUUID)()}`);try{c=await l.open(e,"wx",420),await c.writeFile(b,"utf-8"),await c.sync(),await c.close(),c=void 0,await l.rename(e,a)}catch(a){throw c&&await c.close().catch(()=>{}),await l.unlink(e).catch(()=>{}),a}}function z(a,b){switch(a?.code){case"ENOENT":return`${b}: no such file or directory`;case"EACCES":case"EPERM":return`${b}: permission denied`;case"ENOTDIR":return`${b}: not a directory`;case"EISDIR":return`${b}: is a directory`;case"ELOOP":return`${b}: too many levels of symbolic links`;case"ENAMETOOLONG":return`${b}: file name too long`;case"ENOSPC":return`${b}: no space left on device`;case"EMFILE":case"ENFILE":return`${b}: too many open files`;default:return`${b}: ${a instanceof Error?a.message:String(a)}`}}var A=c(57975),B=c(57075),C=c(46466),D=c(82562);let E=(0,A.promisify)(o.execFile);async function F(a){let{client:b,sessionId:c}=a;if(!b||!c)return async()=>{};let d=(0,D.WG)(b),e=await b.beta.sessions.retrieve(c),f=n.resolve(a.workdir,"skills"),g=[];for(let a of e.agent.skills)try{let c=await G(b,a.skill_id,a.version),e=await b.beta.skills.versions.retrieve(c,{skill_id:a.skill_id}),h=n.basename(e.name.trim());(""===h||"."===h||".."===h)&&(h=a.skill_id);let i=n.resolve(f,h);if(i!==f&&!i.startsWith(f+n.sep)){d.warn("skill name escapes the skills dir; skipping",{component:"agent-tool-context",name:e.name});continue}let j=await b.beta.skills.versions.download(c,{skill_id:a.skill_id});await l.rm(i,{recursive:!0,force:!0}),await l.mkdir(i,{recursive:!0,mode:493}),g.push(i),await I(j,i),d.info("downloaded skill",{component:"agent-tool-context",skill_id:a.skill_id,version:c,dest:i})}catch(b){d.warn("failed to download skill",{component:"agent-tool-context",skill_id:a.skill_id,error:String(b)})}return async()=>{for(let a of g)await l.rm(a,{recursive:!0,force:!0}).catch(b=>{d.warn("failed to clean up skill",{component:"agent-tool-context",dest:a,error:String(b)})})}}async function G(a,b,c){let d;if(/^\d+$/.test(c))return c;for await(let c of a.beta.skills.versions.list(b))/^\d+$/.test(c.version)&&(void 0===d||BigInt(c.version)>BigInt(d))&&(d=c.version);if(void 0===d)throw new r.pJ(`skill ${JSON.stringify(b)} has no concrete version to resolve ${JSON.stringify(c)} against`);return d}async function H(a,b){try{let{stdout:c}=await E(a,b);return c}catch(b){if(null!=b&&"object"==typeof b&&"ENOENT"===b.code)throw new r.pJ(`skill extraction requires the \`${a}\` command, but it was not found on PATH`);throw b}}async function I(a,b){let c=n.join(b,`.skill-archive-${process.pid}-${Date.now()}`);if(!a.body)throw new r.pJ("skill download response had no body");await (0,C.pipeline)(B.Readable.fromWeb(a.body),m.createWriteStream(c));let d=n.join(n.dirname(b),`.skill-stage-${process.pid}-${Date.now()}`);try{let a=await J(c,4),e=a.length>=4&&80===a[0]&&75===a[1]&&3===a[2]&&4===a[3],f=e?"unzip":"tar",g=await H(f,e?["-Z1",c]:["-tf",c]);for(let a of g.split("\n")){let b=a.trim();if(b&&(n.isAbsolute(b)||b.split(/[\\/]/).includes("..")))throw new r.pJ(`refusing to extract unsafe archive member: ${b}`)}for(let a of(await H(f,e?["-Z",c]:["-tvf",c])).split("\n")){let b=a.trimStart()[0];if("l"===b||"h"===b||"b"===b||"c"===b||"p"===b||"s"===b)throw new r.pJ("refusing to extract archive with symlink/hardlink/device member")}let h=function(a){let b,c=!1;for(let d of a.split("\n")){let a=d.trim().split("/").filter(a=>""!==a&&"."!==a);if(0===a.length)continue;let e=a[0];if(void 0===b)b=e;else if(e!==b)return"";a.length>1&&(c=!0)}return void 0!==b&&c?b:""}(g);await l.mkdir(d,{recursive:!0,mode:493}),await H(f,e?["-oq",c,"-d",d]:["-xf",c,"-C",d]);let i=h?n.join(d,h):d;for(let a of(await l.readdir(i)))await l.rename(n.join(i,a),n.join(b,a))}finally{await l.rm(c,{force:!0}),await l.rm(d,{recursive:!0,force:!0})}}async function J(a,b){let c=await l.open(a,"r");try{let a=Buffer.alloc(b),{bytesRead:d}=await c.read(a,0,b,0);return a.subarray(0,d)}finally{await c.close()}}let K=/\x1b\[[0-9;?]*[ -/]*[@-~]/g,L=l.glob;function M(a){return void 0===a?262144:a}function N(a){return[Q(a),R(a),S(a),T(a),U(a),V(a)]}function O(a,b){return x(a.workdir,b,{allowOutside:a.unrestrictedPaths??!1})}class P{constructor(a,b=function(){let a={};for(let[b,c]of Object.entries(process.env))b.startsWith("ANTHROPIC_")||(a[b]=c);return a}()){d.add(this),e.set(this,void 0),f.set(this,""),g.set(this,!1),h.set(this,!1),i.set(this,null),(0,k.G)(this,e,o.spawn("/bin/bash",["--noprofile","--norc"],{cwd:a,env:{...b,PS1:"",PS2:"",TERM:"dumb"},stdio:["pipe","pipe","pipe"],detached:!0}),"f"),(0,k.g)(this,e,"f").stdout.setEncoding("utf8"),(0,k.g)(this,e,"f").stderr.setEncoding("utf8"),(0,k.g)(this,e,"f").stdout.on("data",a=>(0,k.g)(this,d,"m",j).call(this,a)),(0,k.g)(this,e,"f").stderr.on("data",a=>(0,k.g)(this,d,"m",j).call(this,a)),(0,k.g)(this,e,"f").once("close",()=>{(0,k.G)(this,h,!0,"f");let a=(0,k.g)(this,i,"f");(0,k.G)(this,i,null,"f"),a?.resolve()})}get closed(){return(0,k.g)(this,h,"f")}async exec(a,b={}){if((0,k.g)(this,h,"f"))throw new r.pJ("bash session terminated");let c=b.timeoutMs??12e4,d=b.signal;if(d?.aborted)throw new r.pJ("bash command aborted");(0,k.G)(this,f,"","f"),(0,k.G)(this,g,!1,"f");let j=`__ANT_CMD_${p.randomUUID()}_DONE__`,l=`${j.slice(0,8)}''${j.slice(8)}`,m=`{ ${a}
2
2
  } </dev/null 2>&1; printf '\\n${l}%d\\n' $?
3
3
  `;if((0,k.g)(this,e,"f").stdin.write(m),0>(0,k.g)(this,f,"f").indexOf(j)){let a,b,{promise:e,resolve:f}=(0,u.n)();(0,k.G)(this,i,{sentinel:j,resolve:f},"f");try{await Promise.race([e,new Promise((b,d)=>{a=setTimeout(()=>d(new r.pJ(`bash command timed out after ${c}ms`)),c)}),new Promise((a,c)=>{d&&(b=()=>c(new r.pJ("bash command aborted")),d.addEventListener("abort",b,{once:!0}))})])}finally{a&&clearTimeout(a),b&&d&&d.removeEventListener("abort",b),(0,k.G)(this,i,null,"f")}}let n=(0,k.g)(this,f,"f").indexOf(j);if(n<0)throw new r.pJ("bash session terminated");let o=(0,k.g)(this,f,"f").slice(n+j.length).match(/^(-?\d+)/),q=o?parseInt(o[1],10):-1,s=(0,k.g)(this,f,"f").slice(0,n).replace(K,"").replace(/\n+$/,"");return(0,k.g)(this,g,"f")&&(s=`[output truncated]
4
4
  ${s}`),{output:s,exitCode:q}}close(){if((0,k.g)(this,h,"f"))return;(0,k.G)(this,h,!0,"f");let a=(0,k.g)(this,i,"f");(0,k.G)(this,i,null,"f"),a?.resolve(),(0,k.g)(this,e,"f").stdout.destroy(),(0,k.g)(this,e,"f").stderr.destroy(),(0,k.g)(this,e,"f").stdin.destroy();try{process.kill(-(0,k.g)(this,e,"f").pid,"SIGKILL")}catch{(0,k.g)(this,e,"f").kill("SIGKILL")}(0,k.g)(this,e,"f").unref()}}function Q(a){let b,c=Promise.resolve();return t({name:"bash",description:"Run a bash command in a persistent shell. State (cwd, env vars) persists across calls.",inputSchema:{type:"object",properties:{command:{type:"string",description:"The command to run"},restart:{type:"boolean",description:"Restart the persistent shell before running"},timeout_ms:{type:"integer",description:"Per-call timeout in milliseconds"}}},run:async({command:d,restart:e,timeout_ms:f},g)=>{let h=c,i=(0,u.n)();c=i.promise;try{await h}catch{}try{if(e&&(b?.close(),b=void 0),!d){if(e)return"bash session restarted";throw new s.v("bash: command is required")}b??(b=new P(a.workdir,a.env));try{let{output:a,exitCode:c}=await b.exec(d,{timeoutMs:f??12e4,signal:g?.signal});if(0!==c)throw new s.v(a||`exit ${c}`);return a}catch(a){if(a instanceof s.v)throw a;throw b.close(),b=void 0,new s.v(`bash: ${a instanceof Error?a.message:String(a)}`)}}finally{i.resolve()}},close:()=>{b?.close(),b=void 0}})}function R(a){return t({name:"read",description:"Read a UTF-8 text file relative to the workdir.",inputSchema:{type:"object",properties:{file_path:{type:"string"},view_range:{type:"array",items:{type:"integer"},description:"[start_line, end_line] 1-indexed inclusive"}},required:["file_path"]},run:async({file_path:b,view_range:c})=>{let d;if(!b)throw new s.v("read: file_path is required");let e=await O(a,b);try{let c=await l.stat(e);if(!c.isFile())throw new s.v(`read: ${b} is not a regular file`);let f=M(a.maxFileBytes);if(null!==f&&c.size>f)throw new s.v(`read: ${b} is ${c.size} bytes, exceeds ${f}-byte limit. Use bash (head/tail/sed) to read a slice.`);d=await l.readFile(e,"utf8")}catch(a){if(a instanceof s.v)throw a;throw new s.v(`read: ${z(a,b)}`)}if(!c)return d;if(2!==c.length)throw new s.v("read: view_range must be [start_line, end_line]");let[f,g]=c,h=d.split("\n"),i=Math.max(0,f-1),j=g>0?g:h.length;return h.slice(i,j).join("\n")}})}function S(a){return t({name:"write",description:"Write a UTF-8 text file relative to the workdir, creating parent directories as needed.",inputSchema:{type:"object",properties:{file_path:{type:"string"},content:{type:"string"}},required:["file_path","content"]},run:async({file_path:b,content:c})=>{if(!b)throw new s.v("write: file_path is required");let d=await O(a,b);try{await l.mkdir(n.dirname(d),{recursive:!0,mode:493}),await y(d,c??"")}catch(a){throw new s.v(`write: ${z(a,b)}`)}return`wrote ${Buffer.byteLength(c??"")} bytes to ${b}`}})}function T(a){return t({name:"edit",description:"Replace old_string with new_string in a file. old_string must be unique unless replace_all.",inputSchema:{type:"object",properties:{file_path:{type:"string"},old_string:{type:"string"},new_string:{type:"string"},replace_all:{type:"boolean"}},required:["file_path","old_string","new_string"]},run:async({file_path:b,old_string:c,new_string:d,replace_all:e})=>{let f,g;if(!b)throw new s.v("edit: file_path is required");if(!c)throw new s.v("edit: old_string is required");let h=await O(a,b);try{let c=await l.stat(h);if(!c.isFile())throw new s.v(`edit: ${b} is not a regular file`);let d=M(a.maxFileBytes);if(null!==d&&c.size>d)throw new s.v(`edit: ${b} is ${c.size} bytes, exceeds ${d}-byte limit. Use bash (sed/awk) to edit a large file.`);f=await l.readFile(h,"utf8")}catch(a){if(a instanceof s.v)throw a;throw new s.v(`edit: ${z(a,b)}`)}let i=f.split(c).length-1;if(0===i)throw new s.v(`edit: old_string not found in ${b}`);if(e)g=f.split(c).join(d);else{if(i>1)throw new s.v(`edit: old_string appears ${i} times in ${b} (must be unique)`);g=f.replace(c,()=>d)}try{await y(h,g)}catch(a){throw new s.v(`edit: write: ${z(a,b)}`)}return`edited ${b} (${e?i:1} replacement(s))`}})}function U(a){return t({name:"glob",description:"Match files under the workdir against a glob pattern. Results are mtime-sorted, newest first.",inputSchema:{type:"object",properties:{pattern:{type:"string"},path:{type:"string",description:"Directory to search in. Defaults to the workdir."}},required:["pattern"]},run:async({pattern:b,path:c})=>{if(!b)throw new s.v("glob: pattern is required");let d=n.resolve(a.workdir),e=b;if(n.isAbsolute(b)){if(!a.unrestrictedPaths)throw new s.v("glob: absolute pattern not permitted");d=n.parse(b).root,e=n.relative(d,b)}else c&&(d=await O(a,c));if(!a.unrestrictedPaths&&e.split(/[\\/]/).includes(".."))throw new s.v('glob: ".." is not permitted in the pattern');let f=[];try{for await(let b of L(e,{cwd:d,withFileTypes:!0,exclude:a=>".git"===a.name||"node_modules"===a.name})){if(!b.isFile())continue;let c=n.join(b.parentPath,b.name);if(!a.unrestrictedPaths&&!function(a,b){let c=n.relative(a,b);return""===c||!c.startsWith(".."+n.sep)&&".."!==c&&!n.isAbsolute(c)}(d,c))continue;let e=0;try{e=(await l.stat(c)).mtimeMs}catch{}f.push({path:c,mtime:e})}}catch(a){throw new s.v(`glob: ${a instanceof Error?a.message:String(a)}`)}return 0===f.length?"no matches":(f.sort((a,b)=>b.mtime-a.mtime),f.slice(0,200).map(a=>a.path).join("\n"))}})}function V(a){return t({name:"grep",description:"Search file contents for a regex. Uses ripgrep if available, otherwise a built-in walker.",inputSchema:{type:"object",properties:{pattern:{type:"string"},path:{type:"string"}},required:["pattern"]},run:async({pattern:b,path:c},d)=>{var e,f,g,h;if(!b)throw new s.v("grep: pattern is required");let i=n.resolve(a.workdir);c&&(i=await O(a,c));let j=await Z();return j?(e=j,f=b,g=i,h=d?.signal,new Promise((a,b)=>{let c=o.spawn(e,["-n","--no-heading","-e",f,"--",g],{...h?{signal:h}:{}}),d="",i="",j=!1;c.stdout.on("data",a=>{!j&&(d+=a).length>102400&&(j=!0,d=d.slice(0,102400),c.kill("SIGKILL"))}),c.stderr.on("data",a=>i+=a),c.on("close",c=>h?.aborted?b(new s.v("grep: aborted")):j?a(d+`
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=120,exports.ids=[120],exports.modules={3421:(a,b,c)=>{Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(71237),e=c(55088),f=c(17679);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}},37464:(a,b,c)=>{c.d(b,{D:()=>L}),c(81630);var d=c(73496),e=c(27910),f=c(55511),g=class extends Error{constructor(a,b){super(a,b),this.name="RequestError"}},h=global.Request,i=class extends h{constructor(a,b){"object"==typeof a&&k in a&&(a=a[k]()),void 0!==b?.body?.getReader&&(b.duplex??="half"),super(a,b)}},j=Symbol("wrapBodyStream"),k=Symbol("getRequestCache"),l=Symbol("requestCache"),m=Symbol("incomingKey"),n=Symbol("urlKey"),o=Symbol("headersKey"),p=Symbol("abortControllerKey"),q=Symbol("getAbortController"),r={get method(){return this[m].method||"GET"},get url(){return this[n]},get headers(){return this[o]||=(a=>{let b=[],c=a.rawHeaders;for(let a=0;a<c.length;a+=2){let{[a]:d,[a+1]:e}=c;58!==d.charCodeAt(0)&&b.push([d,e])}return new Headers(b)})(this[m])},[q](){return this[k](),this[p]},[k](){return this[p]||=new AbortController,this[l]||=((a,b,c,d,f)=>{let g={method:a,headers:c,signal:f.signal};if("TRACE"===a){g.method="GET";let a=new i(b,g);return Object.defineProperty(a,"method",{get:()=>"TRACE"}),a}if("GET"!==a&&"HEAD"!==a)if("rawBody"in d&&d.rawBody instanceof Buffer)g.body=new ReadableStream({start(a){a.enqueue(d.rawBody),a.close()}});else if(d[j]){let a;g.body=new ReadableStream({async pull(b){try{a||=e.Readable.toWeb(d).getReader();let{done:c,value:f}=await a.read();c?b.close():b.enqueue(f)}catch(a){b.error(a)}}})}else g.body=e.Readable.toWeb(d);return new i(b,g)})(this.method,this[n],this.headers,this[m],this[p])}};["body","bodyUsed","cache","credentials","destination","integrity","mode","redirect","referrer","referrerPolicy","signal","keepalive"].forEach(a=>{Object.defineProperty(r,a,{get(){return this[k]()[a]}})}),["arrayBuffer","blob","clone","formData","json","text"].forEach(a=>{Object.defineProperty(r,a,{value:function(){return this[k]()[a]()}})}),Object.defineProperty(r,Symbol.for("nodejs.util.inspect.custom"),{value:function(a,b,c){let d={method:this.method,url:this.url,headers:this.headers,nativeRequest:this[l]};return`Request (lightweight) ${c(d,{...b,depth:null==a?null:a-1})}`}}),Object.setPrototypeOf(r,i.prototype);var s=Symbol("responseCache"),t=Symbol("getResponseCache"),u=Symbol("cache"),v=global.Response,w=class a{#a;#b;[t](){return delete this[u],this[s]||=new v(this.#a,this.#b)}constructor(b,c){let d;if(this.#a=b,c instanceof a){let a=c[s];if(a){this.#b=a,this[t]();return}this.#b=c.#b,d=new Headers(c.#b.headers)}else this.#b=c;("string"==typeof b||void 0!==b?.getReader||b instanceof Blob||b instanceof Uint8Array)&&(this[u]=[c?.status||200,b,d||c?.headers])}get headers(){let a=this[u];return a?(a[2]instanceof Headers||(a[2]=new Headers(a[2]||{"content-type":"text/plain; charset=UTF-8"})),a[2]):this[t]().headers}get status(){return this[u]?.[0]??this[t]().status}get ok(){let a=this.status;return a>=200&&a<300}};async function x(a){return Promise.race([a,Promise.resolve().then(()=>Promise.resolve(void 0))])}function y(a,b,c){let d=b=>{a.cancel(b).catch(()=>{})};return b.on("close",d),b.on("error",d),(c??a.read()).then(g,e),a.closed.finally(()=>{b.off("close",d),b.off("error",d)});function e(a){a&&b.destroy(a)}function f(){a.read().then(g,e)}function g({done:c,value:d}){try{if(c)b.end();else{if(b.write(d))return a.read().then(g,e);b.once("drain",f)}}catch(a){e(a)}}}["body","bodyUsed","redirected","statusText","trailers","type","url"].forEach(a=>{Object.defineProperty(w.prototype,a,{get(){return this[t]()[a]}})}),["arrayBuffer","blob","clone","formData","json","text"].forEach(a=>{Object.defineProperty(w.prototype,a,{value:function(){return this[t]()[a]()}})}),Object.defineProperty(w.prototype,Symbol.for("nodejs.util.inspect.custom"),{value:function(a,b,c){let d={status:this.status,headers:this.headers,ok:this.ok,nativeResponse:this[s]};return`Response (lightweight) ${c(d,{...b,depth:null==a?null:a-1})}`}}),Object.setPrototypeOf(w,v),Object.setPrototypeOf(w.prototype,v.prototype);var z=a=>{let b={};a instanceof Headers||(a=new Headers(a??void 0));let c=[];for(let[d,e]of a)"set-cookie"===d?c.push(e):b[d]=e;return c.length>0&&(b["set-cookie"]=c),b["content-type"]??="text/plain; charset=UTF-8",b};void 0===global.crypto&&(global.crypto=f);var A=Symbol("outgoingEnded"),B=Symbol("incomingDraining"),C=a=>{if(a.destroyed||a[B])return;if(a[B]=!0,a instanceof d.Http2ServerRequest){try{a.stream?.close?.(d.constants.NGHTTP2_NO_ERROR)}catch{}return}let b=0,c=()=>{clearTimeout(f),a.off("data",g),a.off("end",c),a.off("error",c)},e=()=>{c();let b=a.socket;b&&!b.destroyed&&b.destroySoon()},f=setTimeout(e,500);f.unref?.();let g=a=>{(b+=a.length)>0x4000000&&e()};a.on("data",g),a.on("end",c),a.on("error",c),a.resume()},D=a=>new Response(null,{status:a instanceof Error&&("TimeoutError"===a.name||"TimeoutError"===a.constructor.name)?504:500}),E=(a,b)=>{let c=a instanceof Error?a:Error("unknown error",{cause:a});"ERR_STREAM_PREMATURE_CLOSE"===c.code?console.info("The user aborted a request."):(console.error(a),b.headersSent||b.writeHead(500,{"Content-Type":"text/plain"}),b.end(`Error: ${c.message}`),b.destroy(c))},F=a=>{"flushHeaders"in a&&a.writable&&a.flushHeaders()},G=async(a,b)=>{let[c,d,e]=a[u],f=!1;if(e){if(e instanceof Headers)f=e.has("content-length"),e=z(e);else if(Array.isArray(e)){let a=new Headers(e);f=a.has("content-length"),e=z(a)}else for(let a in e)if(14===a.length&&"content-length"===a.toLowerCase()){f=!0;break}}else e={"content-type":"text/plain; charset=UTF-8"};!f&&("string"==typeof d?e["Content-Length"]=Buffer.byteLength(d):d instanceof Uint8Array?e["Content-Length"]=d.byteLength:d instanceof Blob&&(e["Content-Length"]=d.size)),b.writeHead(c,e),"string"==typeof d||d instanceof Uint8Array?b.end(d):d instanceof Blob?b.end(new Uint8Array(await d.arrayBuffer())):(F(b),await (function(a,b){if(a.locked)throw TypeError("ReadableStream is locked.");if(!b.destroyed)return y(a.getReader(),b)})(d,b)?.catch(a=>E(a,b))),b[A]?.()},H=async(a,b,c={})=>{if("function"==typeof a.then)if(c.errorHandler)try{a=await a}catch(d){let b=await c.errorHandler(d);if(!b)return;a=b}else a=await a.catch(D);if(u in a)return G(a,b);let d=z(a.headers);if(a.body){let c,e=a.body.getReader(),f=[],g=!1;if("chunked"!==d["transfer-encoding"]){let a=2;for(let b=0;b<a;b++){c||=e.read();let d=await x(c).catch(a=>{console.error(a),g=!0});if(!d){if(1===b){await new Promise(a=>setTimeout(a)),a=3;continue}break}if(c=void 0,d.value&&f.push(d.value),d.done){g=!0;break}}!g||"content-length"in d||(d["content-length"]=f.reduce((a,b)=>a+b.length,0))}b.writeHead(a.status,d),f.forEach(a=>{b.write(a)}),g?b.end():(0===f.length&&F(b),await y(e,b,c))}else d["x-hono-already-sent"]||(b.writeHead(a.status,d),b.end());b[A]?.()},I=(a,b={})=>{let c=b.autoCleanupIncoming??!0;return!1!==b.overrideGlobalObjects&&global.Request!==i&&(Object.defineProperty(global,"Request",{value:i}),Object.defineProperty(global,"Response",{value:w})),async(e,f)=>{let h,i;try{i=((a,b)=>{let c,e=Object.create(r);e[m]=a;let f=a.url||"";if("/"!==f[0]&&(f.startsWith("http://")||f.startsWith("https://"))){if(a instanceof d.Http2ServerRequest)throw new g("Absolute URL for :path is not allowed in HTTP/2");try{let a=new URL(f);e[n]=a.href}catch(a){throw new g("Invalid absolute URL",{cause:a})}return e}let h=(a instanceof d.Http2ServerRequest?a.authority:a.headers.host)||b;if(!h)throw new g("Missing host header");if(a instanceof d.Http2ServerRequest){if("http"!==(c=a.scheme)&&"https"!==c)throw new g("Unsupported scheme")}else c=a.socket&&a.socket.encrypted?"https":"http";let i=new URL(`${c}://${h}${f}`);if(i.hostname.length!==h.length&&i.hostname!==h.replace(/:\d+$/,""))throw new g("Invalid host header");return e[n]=i.href,e})(e,b.hostname);let k=!c||"GET"===e.method||"HEAD"===e.method;if(k||(e[j]=!0,e.on("end",()=>{k=!0}),e instanceof d.Http2ServerRequest&&(f[A]=()=>{k||setTimeout(()=>{k||setTimeout(()=>{C(e)})})}),f.on("finish",()=>{k||C(e)})),f.on("close",()=>{i[p]&&(e.errored?i[p].abort(e.errored.toString()):f.writableFinished||i[p].abort("Client connection prematurely closed.")),k||setTimeout(()=>{k||setTimeout(()=>{C(e)})})}),h=a(i,{incoming:e,outgoing:f}),u in h)return G(h,f)}catch(a){if(h)return E(a,f);if(b.errorHandler){if(!(h=await b.errorHandler(i?a:(a=>a instanceof g?a:new g(a.message,{cause:a}))(a))))return}else h=i?D(a):new Response(null,{status:400})}try{return await H(h,f,b)}catch(a){return E(a,f)}}},J=c(68780);class K{constructor(a={}){this._started=!1,this._hasHandledRequest=!1,this._streamMapping=new Map,this._requestToStreamMapping=new Map,this._requestResponseMap=new Map,this._initialized=!1,this._enableJsonResponse=!1,this._standaloneSseStreamId="_GET_stream",this.sessionIdGenerator=a.sessionIdGenerator,this._enableJsonResponse=a.enableJsonResponse??!1,this._eventStore=a.eventStore,this._onsessioninitialized=a.onsessioninitialized,this._onsessionclosed=a.onsessionclosed,this._allowedHosts=a.allowedHosts,this._allowedOrigins=a.allowedOrigins,this._enableDnsRebindingProtection=a.enableDnsRebindingProtection??!1,this._retryInterval=a.retryInterval}async start(){if(this._started)throw Error("Transport already started");this._started=!0}createJsonErrorResponse(a,b,c,d){let e={code:b,message:c};return d?.data!==void 0&&(e.data=d.data),new Response(JSON.stringify({jsonrpc:"2.0",error:e,id:null}),{status:a,headers:{"Content-Type":"application/json",...d?.headers}})}validateRequestHeaders(a){if(this._enableDnsRebindingProtection){if(this._allowedHosts&&this._allowedHosts.length>0){let b=a.headers.get("host");if(!b||!this._allowedHosts.includes(b)){let a=`Invalid Host header: ${b}`;return this.onerror?.(Error(a)),this.createJsonErrorResponse(403,-32e3,a)}}if(this._allowedOrigins&&this._allowedOrigins.length>0){let b=a.headers.get("origin");if(b&&!this._allowedOrigins.includes(b)){let a=`Invalid Origin header: ${b}`;return this.onerror?.(Error(a)),this.createJsonErrorResponse(403,-32e3,a)}}}}async handleRequest(a,b){if(!this.sessionIdGenerator&&this._hasHandledRequest)throw Error("Stateless transport cannot be reused across requests. Create a new transport per request.");this._hasHandledRequest=!0;let c=this.validateRequestHeaders(a);if(c)return c;switch(a.method){case"POST":return this.handlePostRequest(a,b);case"GET":return this.handleGetRequest(a);case"DELETE":return this.handleDeleteRequest(a);default:return this.handleUnsupportedRequest()}}async writePrimingEvent(a,b,c,d){if(!this._eventStore||d<"2025-11-25")return;let e=await this._eventStore.storeEvent(c,{}),f=`id: ${e}
1
+ "use strict";exports.id=9387,exports.ids=[9387],exports.modules={37464:(a,b,c)=>{c.d(b,{D:()=>L}),c(81630);var d=c(73496),e=c(27910),f=c(55511),g=class extends Error{constructor(a,b){super(a,b),this.name="RequestError"}},h=global.Request,i=class extends h{constructor(a,b){"object"==typeof a&&k in a&&(a=a[k]()),void 0!==b?.body?.getReader&&(b.duplex??="half"),super(a,b)}},j=Symbol("wrapBodyStream"),k=Symbol("getRequestCache"),l=Symbol("requestCache"),m=Symbol("incomingKey"),n=Symbol("urlKey"),o=Symbol("headersKey"),p=Symbol("abortControllerKey"),q=Symbol("getAbortController"),r={get method(){return this[m].method||"GET"},get url(){return this[n]},get headers(){return this[o]||=(a=>{let b=[],c=a.rawHeaders;for(let a=0;a<c.length;a+=2){let{[a]:d,[a+1]:e}=c;58!==d.charCodeAt(0)&&b.push([d,e])}return new Headers(b)})(this[m])},[q](){return this[k](),this[p]},[k](){return this[p]||=new AbortController,this[l]||=((a,b,c,d,f)=>{let g={method:a,headers:c,signal:f.signal};if("TRACE"===a){g.method="GET";let a=new i(b,g);return Object.defineProperty(a,"method",{get:()=>"TRACE"}),a}if("GET"!==a&&"HEAD"!==a)if("rawBody"in d&&d.rawBody instanceof Buffer)g.body=new ReadableStream({start(a){a.enqueue(d.rawBody),a.close()}});else if(d[j]){let a;g.body=new ReadableStream({async pull(b){try{a||=e.Readable.toWeb(d).getReader();let{done:c,value:f}=await a.read();c?b.close():b.enqueue(f)}catch(a){b.error(a)}}})}else g.body=e.Readable.toWeb(d);return new i(b,g)})(this.method,this[n],this.headers,this[m],this[p])}};["body","bodyUsed","cache","credentials","destination","integrity","mode","redirect","referrer","referrerPolicy","signal","keepalive"].forEach(a=>{Object.defineProperty(r,a,{get(){return this[k]()[a]}})}),["arrayBuffer","blob","clone","formData","json","text"].forEach(a=>{Object.defineProperty(r,a,{value:function(){return this[k]()[a]()}})}),Object.defineProperty(r,Symbol.for("nodejs.util.inspect.custom"),{value:function(a,b,c){let d={method:this.method,url:this.url,headers:this.headers,nativeRequest:this[l]};return`Request (lightweight) ${c(d,{...b,depth:null==a?null:a-1})}`}}),Object.setPrototypeOf(r,i.prototype);var s=Symbol("responseCache"),t=Symbol("getResponseCache"),u=Symbol("cache"),v=global.Response,w=class a{#a;#b;[t](){return delete this[u],this[s]||=new v(this.#a,this.#b)}constructor(b,c){let d;if(this.#a=b,c instanceof a){let a=c[s];if(a){this.#b=a,this[t]();return}this.#b=c.#b,d=new Headers(c.#b.headers)}else this.#b=c;("string"==typeof b||void 0!==b?.getReader||b instanceof Blob||b instanceof Uint8Array)&&(this[u]=[c?.status||200,b,d||c?.headers])}get headers(){let a=this[u];return a?(a[2]instanceof Headers||(a[2]=new Headers(a[2]||{"content-type":"text/plain; charset=UTF-8"})),a[2]):this[t]().headers}get status(){return this[u]?.[0]??this[t]().status}get ok(){let a=this.status;return a>=200&&a<300}};async function x(a){return Promise.race([a,Promise.resolve().then(()=>Promise.resolve(void 0))])}function y(a,b,c){let d=b=>{a.cancel(b).catch(()=>{})};return b.on("close",d),b.on("error",d),(c??a.read()).then(g,e),a.closed.finally(()=>{b.off("close",d),b.off("error",d)});function e(a){a&&b.destroy(a)}function f(){a.read().then(g,e)}function g({done:c,value:d}){try{if(c)b.end();else{if(b.write(d))return a.read().then(g,e);b.once("drain",f)}}catch(a){e(a)}}}["body","bodyUsed","redirected","statusText","trailers","type","url"].forEach(a=>{Object.defineProperty(w.prototype,a,{get(){return this[t]()[a]}})}),["arrayBuffer","blob","clone","formData","json","text"].forEach(a=>{Object.defineProperty(w.prototype,a,{value:function(){return this[t]()[a]()}})}),Object.defineProperty(w.prototype,Symbol.for("nodejs.util.inspect.custom"),{value:function(a,b,c){let d={status:this.status,headers:this.headers,ok:this.ok,nativeResponse:this[s]};return`Response (lightweight) ${c(d,{...b,depth:null==a?null:a-1})}`}}),Object.setPrototypeOf(w,v),Object.setPrototypeOf(w.prototype,v.prototype);var z=a=>{let b={};a instanceof Headers||(a=new Headers(a??void 0));let c=[];for(let[d,e]of a)"set-cookie"===d?c.push(e):b[d]=e;return c.length>0&&(b["set-cookie"]=c),b["content-type"]??="text/plain; charset=UTF-8",b};void 0===global.crypto&&(global.crypto=f);var A=Symbol("outgoingEnded"),B=Symbol("incomingDraining"),C=a=>{if(a.destroyed||a[B])return;if(a[B]=!0,a instanceof d.Http2ServerRequest){try{a.stream?.close?.(d.constants.NGHTTP2_NO_ERROR)}catch{}return}let b=0,c=()=>{clearTimeout(f),a.off("data",g),a.off("end",c),a.off("error",c)},e=()=>{c();let b=a.socket;b&&!b.destroyed&&b.destroySoon()},f=setTimeout(e,500);f.unref?.();let g=a=>{(b+=a.length)>0x4000000&&e()};a.on("data",g),a.on("end",c),a.on("error",c),a.resume()},D=a=>new Response(null,{status:a instanceof Error&&("TimeoutError"===a.name||"TimeoutError"===a.constructor.name)?504:500}),E=(a,b)=>{let c=a instanceof Error?a:Error("unknown error",{cause:a});"ERR_STREAM_PREMATURE_CLOSE"===c.code?console.info("The user aborted a request."):(console.error(a),b.headersSent||b.writeHead(500,{"Content-Type":"text/plain"}),b.end(`Error: ${c.message}`),b.destroy(c))},F=a=>{"flushHeaders"in a&&a.writable&&a.flushHeaders()},G=async(a,b)=>{let[c,d,e]=a[u],f=!1;if(e){if(e instanceof Headers)f=e.has("content-length"),e=z(e);else if(Array.isArray(e)){let a=new Headers(e);f=a.has("content-length"),e=z(a)}else for(let a in e)if(14===a.length&&"content-length"===a.toLowerCase()){f=!0;break}}else e={"content-type":"text/plain; charset=UTF-8"};!f&&("string"==typeof d?e["Content-Length"]=Buffer.byteLength(d):d instanceof Uint8Array?e["Content-Length"]=d.byteLength:d instanceof Blob&&(e["Content-Length"]=d.size)),b.writeHead(c,e),"string"==typeof d||d instanceof Uint8Array?b.end(d):d instanceof Blob?b.end(new Uint8Array(await d.arrayBuffer())):(F(b),await (function(a,b){if(a.locked)throw TypeError("ReadableStream is locked.");if(!b.destroyed)return y(a.getReader(),b)})(d,b)?.catch(a=>E(a,b))),b[A]?.()},H=async(a,b,c={})=>{if("function"==typeof a.then)if(c.errorHandler)try{a=await a}catch(d){let b=await c.errorHandler(d);if(!b)return;a=b}else a=await a.catch(D);if(u in a)return G(a,b);let d=z(a.headers);if(a.body){let c,e=a.body.getReader(),f=[],g=!1;if("chunked"!==d["transfer-encoding"]){let a=2;for(let b=0;b<a;b++){c||=e.read();let d=await x(c).catch(a=>{console.error(a),g=!0});if(!d){if(1===b){await new Promise(a=>setTimeout(a)),a=3;continue}break}if(c=void 0,d.value&&f.push(d.value),d.done){g=!0;break}}!g||"content-length"in d||(d["content-length"]=f.reduce((a,b)=>a+b.length,0))}b.writeHead(a.status,d),f.forEach(a=>{b.write(a)}),g?b.end():(0===f.length&&F(b),await y(e,b,c))}else d["x-hono-already-sent"]||(b.writeHead(a.status,d),b.end());b[A]?.()},I=(a,b={})=>{let c=b.autoCleanupIncoming??!0;return!1!==b.overrideGlobalObjects&&global.Request!==i&&(Object.defineProperty(global,"Request",{value:i}),Object.defineProperty(global,"Response",{value:w})),async(e,f)=>{let h,i;try{i=((a,b)=>{let c,e=Object.create(r);e[m]=a;let f=a.url||"";if("/"!==f[0]&&(f.startsWith("http://")||f.startsWith("https://"))){if(a instanceof d.Http2ServerRequest)throw new g("Absolute URL for :path is not allowed in HTTP/2");try{let a=new URL(f);e[n]=a.href}catch(a){throw new g("Invalid absolute URL",{cause:a})}return e}let h=(a instanceof d.Http2ServerRequest?a.authority:a.headers.host)||b;if(!h)throw new g("Missing host header");if(a instanceof d.Http2ServerRequest){if("http"!==(c=a.scheme)&&"https"!==c)throw new g("Unsupported scheme")}else c=a.socket&&a.socket.encrypted?"https":"http";let i=new URL(`${c}://${h}${f}`);if(i.hostname.length!==h.length&&i.hostname!==h.replace(/:\d+$/,""))throw new g("Invalid host header");return e[n]=i.href,e})(e,b.hostname);let k=!c||"GET"===e.method||"HEAD"===e.method;if(k||(e[j]=!0,e.on("end",()=>{k=!0}),e instanceof d.Http2ServerRequest&&(f[A]=()=>{k||setTimeout(()=>{k||setTimeout(()=>{C(e)})})}),f.on("finish",()=>{k||C(e)})),f.on("close",()=>{i[p]&&(e.errored?i[p].abort(e.errored.toString()):f.writableFinished||i[p].abort("Client connection prematurely closed.")),k||setTimeout(()=>{k||setTimeout(()=>{C(e)})})}),h=a(i,{incoming:e,outgoing:f}),u in h)return G(h,f)}catch(a){if(h)return E(a,f);if(b.errorHandler){if(!(h=await b.errorHandler(i?a:(a=>a instanceof g?a:new g(a.message,{cause:a}))(a))))return}else h=i?D(a):new Response(null,{status:400})}try{return await H(h,f,b)}catch(a){return E(a,f)}}},J=c(68780);class K{constructor(a={}){this._started=!1,this._hasHandledRequest=!1,this._streamMapping=new Map,this._requestToStreamMapping=new Map,this._requestResponseMap=new Map,this._initialized=!1,this._enableJsonResponse=!1,this._standaloneSseStreamId="_GET_stream",this.sessionIdGenerator=a.sessionIdGenerator,this._enableJsonResponse=a.enableJsonResponse??!1,this._eventStore=a.eventStore,this._onsessioninitialized=a.onsessioninitialized,this._onsessionclosed=a.onsessionclosed,this._allowedHosts=a.allowedHosts,this._allowedOrigins=a.allowedOrigins,this._enableDnsRebindingProtection=a.enableDnsRebindingProtection??!1,this._retryInterval=a.retryInterval}async start(){if(this._started)throw Error("Transport already started");this._started=!0}createJsonErrorResponse(a,b,c,d){let e={code:b,message:c};return d?.data!==void 0&&(e.data=d.data),new Response(JSON.stringify({jsonrpc:"2.0",error:e,id:null}),{status:a,headers:{"Content-Type":"application/json",...d?.headers}})}validateRequestHeaders(a){if(this._enableDnsRebindingProtection){if(this._allowedHosts&&this._allowedHosts.length>0){let b=a.headers.get("host");if(!b||!this._allowedHosts.includes(b)){let a=`Invalid Host header: ${b}`;return this.onerror?.(Error(a)),this.createJsonErrorResponse(403,-32e3,a)}}if(this._allowedOrigins&&this._allowedOrigins.length>0){let b=a.headers.get("origin");if(b&&!this._allowedOrigins.includes(b)){let a=`Invalid Origin header: ${b}`;return this.onerror?.(Error(a)),this.createJsonErrorResponse(403,-32e3,a)}}}}async handleRequest(a,b){if(!this.sessionIdGenerator&&this._hasHandledRequest)throw Error("Stateless transport cannot be reused across requests. Create a new transport per request.");this._hasHandledRequest=!0;let c=this.validateRequestHeaders(a);if(c)return c;switch(a.method){case"POST":return this.handlePostRequest(a,b);case"GET":return this.handleGetRequest(a);case"DELETE":return this.handleDeleteRequest(a);default:return this.handleUnsupportedRequest()}}async writePrimingEvent(a,b,c,d){if(!this._eventStore||d<"2025-11-25")return;let e=await this._eventStore.storeEvent(c,{}),f=`id: ${e}
2
2
  data:
3
3
 
4
4
  `;void 0!==this._retryInterval&&(f=`id: ${e}
@@ -12,4 +12,4 @@ data:
12
12
  `,a.enqueue(b.encode(e)),!0}catch(a){return this.onerror?.(a),!1}}handleUnsupportedRequest(){return this.onerror?.(Error("Method not allowed.")),new Response(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:"Method not allowed."},id:null}),{status:405,headers:{Allow:"GET, POST, DELETE","Content-Type":"application/json"}})}async handlePostRequest(a,b){try{let c,d,e,f=a.headers.get("accept");if(!f?.includes("application/json")||!f.includes("text/event-stream"))return this.onerror?.(Error("Not Acceptable: Client must accept both application/json and text/event-stream")),this.createJsonErrorResponse(406,-32e3,"Not Acceptable: Client must accept both application/json and text/event-stream");let g=a.headers.get("content-type");if(!g||!g.includes("application/json"))return this.onerror?.(Error("Unsupported Media Type: Content-Type must be application/json")),this.createJsonErrorResponse(415,-32e3,"Unsupported Media Type: Content-Type must be application/json");let h={headers:Object.fromEntries(a.headers.entries()),url:new URL(a.url)};if(b?.parsedBody!==void 0)c=b.parsedBody;else try{c=await a.json()}catch{return this.onerror?.(Error("Parse error: Invalid JSON")),this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON")}try{d=Array.isArray(c)?c.map(a=>J.OR.parse(a)):[J.OR.parse(c)]}catch{return this.onerror?.(Error("Parse error: Invalid JSON-RPC message")),this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON-RPC message")}let i=d.some(J.eK);if(i){if(this._initialized&&void 0!==this.sessionId)return this.onerror?.(Error("Invalid Request: Server already initialized")),this.createJsonErrorResponse(400,-32600,"Invalid Request: Server already initialized");if(d.length>1)return this.onerror?.(Error("Invalid Request: Only one initialization request is allowed")),this.createJsonErrorResponse(400,-32600,"Invalid Request: Only one initialization request is allowed");this.sessionId=this.sessionIdGenerator?.(),this._initialized=!0,this.sessionId&&this._onsessioninitialized&&await Promise.resolve(this._onsessioninitialized(this.sessionId))}if(!i){let b=this.validateSession(a);if(b)return b;let c=this.validateProtocolVersion(a);if(c)return c}if(!d.some(J.vo)){for(let a of d)this.onmessage?.(a,{authInfo:b?.authInfo,requestInfo:h});return new Response(null,{status:202})}let j=crypto.randomUUID(),k=d.find(a=>(0,J.eK)(a)),l=k?k.params.protocolVersion:a.headers.get("mcp-protocol-version")??J.PC;if(this._enableJsonResponse)return new Promise(a=>{for(let b of(this._streamMapping.set(j,{resolveJson:a,cleanup:()=>{this._streamMapping.delete(j)}}),d))(0,J.vo)(b)&&this._requestToStreamMapping.set(b.id,j);for(let a of d)this.onmessage?.(a,{authInfo:b?.authInfo,requestInfo:h})});let m=new TextEncoder,n=new ReadableStream({start:a=>{e=a},cancel:()=>{this._streamMapping.delete(j)}}),o={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"};for(let a of(void 0!==this.sessionId&&(o["mcp-session-id"]=this.sessionId),d))(0,J.vo)(a)&&(this._streamMapping.set(j,{controller:e,encoder:m,cleanup:()=>{this._streamMapping.delete(j);try{e.close()}catch{}}}),this._requestToStreamMapping.set(a.id,j));for(let a of(await this.writePrimingEvent(e,m,j,l),d)){let c,d;(0,J.vo)(a)&&this._eventStore&&l>="2025-11-25"&&(c=()=>{this.closeSSEStream(a.id)},d=()=>{this.closeStandaloneSSEStream()}),this.onmessage?.(a,{authInfo:b?.authInfo,requestInfo:h,closeSSEStream:c,closeStandaloneSSEStream:d})}return new Response(n,{status:200,headers:o})}catch(a){return this.onerror?.(a),this.createJsonErrorResponse(400,-32700,"Parse error",{data:String(a)})}}async handleDeleteRequest(a){let b=this.validateSession(a);if(b)return b;let c=this.validateProtocolVersion(a);return c||(await Promise.resolve(this._onsessionclosed?.(this.sessionId)),await this.close(),new Response(null,{status:200}))}validateSession(a){if(void 0===this.sessionIdGenerator)return;if(!this._initialized)return this.onerror?.(Error("Bad Request: Server not initialized")),this.createJsonErrorResponse(400,-32e3,"Bad Request: Server not initialized");let b=a.headers.get("mcp-session-id");return b?b!==this.sessionId?(this.onerror?.(Error("Session not found")),this.createJsonErrorResponse(404,-32001,"Session not found")):void 0:(this.onerror?.(Error("Bad Request: Mcp-Session-Id header is required")),this.createJsonErrorResponse(400,-32e3,"Bad Request: Mcp-Session-Id header is required"))}validateProtocolVersion(a){let b=a.headers.get("mcp-protocol-version");if(null!==b&&!J.Iu.includes(b))return this.onerror?.(Error(`Bad Request: Unsupported protocol version: ${b} (supported versions: ${J.Iu.join(", ")})`)),this.createJsonErrorResponse(400,-32e3,`Bad Request: Unsupported protocol version: ${b} (supported versions: ${J.Iu.join(", ")})`)}async close(){this._streamMapping.forEach(({cleanup:a})=>{a()}),this._streamMapping.clear(),this._requestResponseMap.clear(),this.onclose?.()}closeSSEStream(a){let b=this._requestToStreamMapping.get(a);if(!b)return;let c=this._streamMapping.get(b);c&&c.cleanup()}closeStandaloneSSEStream(){let a=this._streamMapping.get(this._standaloneSseStreamId);a&&a.cleanup()}async send(a,b){let c=b?.relatedRequestId;if(((0,J.ig)(a)||(0,J.LW)(a))&&(c=a.id),void 0===c){let b;if((0,J.ig)(a)||(0,J.LW)(a))throw Error("Cannot send a response on a standalone SSE stream unless resuming a previous client request");this._eventStore&&(b=await this._eventStore.storeEvent(this._standaloneSseStreamId,a));let c=this._streamMapping.get(this._standaloneSseStreamId);if(void 0===c)return;c.controller&&c.encoder&&this.writeSSEEvent(c.controller,c.encoder,a,b);return}let d=this._requestToStreamMapping.get(c);if(!d)throw Error(`No connection established for request ID: ${String(c)}`);let e=this._streamMapping.get(d);if(!this._enableJsonResponse&&e?.controller&&e?.encoder){let b;this._eventStore&&(b=await this._eventStore.storeEvent(d,a)),this.writeSSEEvent(e.controller,e.encoder,a,b)}if((0,J.ig)(a)||(0,J.LW)(a)){this._requestResponseMap.set(c,a);let b=Array.from(this._requestToStreamMapping.entries()).filter(([a,b])=>b===d).map(([a])=>a);if(b.every(a=>this._requestResponseMap.has(a))){if(!e)throw Error(`No connection established for request ID: ${String(c)}`);if(this._enableJsonResponse&&e.resolveJson){let a={"Content-Type":"application/json"};void 0!==this.sessionId&&(a["mcp-session-id"]=this.sessionId);let c=b.map(a=>this._requestResponseMap.get(a));1===c.length?e.resolveJson(new Response(JSON.stringify(c[0]),{status:200,headers:a})):e.resolveJson(new Response(JSON.stringify(c),{status:200,headers:a}))}else e.cleanup();for(let a of b)this._requestResponseMap.delete(a),this._requestToStreamMapping.delete(a)}}}}class L{constructor(a={}){this._requestContext=new WeakMap,this._webStandardTransport=new K(a),this._requestListener=I(async a=>{let b=this._requestContext.get(a);return this._webStandardTransport.handleRequest(a,{authInfo:b?.authInfo,parsedBody:b?.parsedBody})},{overrideGlobalObjects:!1})}get sessionId(){return this._webStandardTransport.sessionId}set onclose(a){this._webStandardTransport.onclose=a}get onclose(){return this._webStandardTransport.onclose}set onerror(a){this._webStandardTransport.onerror=a}get onerror(){return this._webStandardTransport.onerror}set onmessage(a){this._webStandardTransport.onmessage=a}get onmessage(){return this._webStandardTransport.onmessage}async start(){return this._webStandardTransport.start()}async close(){return this._webStandardTransport.close()}async send(a,b){return this._webStandardTransport.send(a,b)}async handleRequest(a,b,c){let d=a.auth,e=I(async a=>this._webStandardTransport.handleRequest(a,{authInfo:d,parsedBody:c}),{overrideGlobalObjects:!1});await e(a,b)}closeSSEStream(a){this._webStandardTransport.closeSSEStream(a)}closeStandaloneSSEStream(){this._webStandardTransport.closeStandaloneSSEStream()}}},51669:(a,b)=>{function c(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
13
13
  Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(b,"D",{enumerable:!0,get:function(){return c}})},68633:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{decryptActionBoundArgs:function(){return s},encryptActionBoundArgs:function(){return r}}),c(77925);let d=c(97954),e=c(27825),f=c(47686),g=c(77533),h=c(63033),i=c(26906),j=function(a){return a&&a.__esModule?a:{default:a}}(c(74515)),k=new TextEncoder,l=new TextDecoder,m=void 0,n=void 0;async function o(a,b){let c=await (0,g.getActionEncryptionKey)();if(void 0===c)throw Object.defineProperty(Error("Missing encryption key for Server Action. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E65",enumerable:!1,configurable:!0});let d=atob(b),e=d.slice(0,16),f=d.slice(16),h=l.decode(await (0,g.decrypt)(c,(0,g.stringToUint8Array)(e),(0,g.stringToUint8Array)(f)));if(!h.startsWith(a))throw Object.defineProperty(Error("Invalid Server Action payload: failed to decrypt."),"__NEXT_ERROR_CODE",{value:"E191",enumerable:!1,configurable:!0});return h.slice(a.length)}async function p(a,b){let c=await (0,g.getActionEncryptionKey)();if(void 0===c)throw Object.defineProperty(Error("Missing encryption key for Server Action. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E65",enumerable:!1,configurable:!0});let d=new Uint8Array(16);h.workUnitAsyncStorage.exit(()=>crypto.getRandomValues(d));let e=(0,g.arrayBufferToString)(d.buffer),f=await (0,g.encrypt)(c,d,k.encode(a+b));return btoa(e+(0,g.arrayBufferToString)(f))}var q=function(a){return a[a.Ready=0]="Ready",a[a.Pending=1]="Pending",a[a.Complete=2]="Complete",a}(q||{});let r=j.default.cache(async function a(b,...c){let e=h.workUnitAsyncStorage.getStore(),j=e?(0,h.getCacheSignal)(e):void 0,{clientModules:k}=(0,g.getClientReferenceManifestForRsc)(),l=Error();Error.captureStackTrace(l,a);let n=!1,o=e?(0,i.createHangingInputAbortSignal)(e):void 0,q=0;function r(){0===q&&(q=1,null==j||j.beginRead())}function s(){1===q&&(null==j||j.endRead()),q=2}o&&j&&o.addEventListener("abort",r,{once:!0});let t=await (0,f.streamToString)((0,d.renderToReadableStream)(c,k,{filterStackFrame:m,signal:o,onError(a){(null==o||!o.aborted)&&(n||(n=!0,l.message=a instanceof Error?a.message:String(a)))}}),o);if(n)throw s(),l;if(!e)return p(b,t);r();let u=(0,h.getPrerenderResumeDataCache)(e),v=(0,h.getRenderResumeDataCache)(e),w=b+t,x=(null==u?void 0:u.encryptedBoundArgs.get(w))??(null==v?void 0:v.encryptedBoundArgs.get(w));if(x)return x;let y=await p(b,t);return s(),null==u||u.encryptedBoundArgs.set(w,y),y});async function s(a,b){let c,d=await b,f=h.workUnitAsyncStorage.getStore();if(f){let b=(0,h.getCacheSignal)(f),e=(0,h.getPrerenderResumeDataCache)(f),g=(0,h.getRenderResumeDataCache)(f);(c=(null==e?void 0:e.decryptedBoundArgs.get(d))??(null==g?void 0:g.decryptedBoundArgs.get(d)))||(null==b||b.beginRead(),c=await o(a,d),null==b||b.endRead(),null==e||e.decryptedBoundArgs.set(d,c))}else c=await o(a,d);let{edgeRscModuleMapping:i,rscModuleMapping:j}=(0,g.getClientReferenceManifestForRsc)();return await (0,e.createFromReadableStream)(new ReadableStream({start(a){switch(a.enqueue(k.encode(c)),null==f?void 0:f.type){case"prerender":case"prerender-runtime":f.renderSignal.aborted?a.close():f.renderSignal.addEventListener("abort",()=>a.close(),{once:!0});break;case"prerender-client":case"prerender-ppr":case"prerender-legacy":case"request":case"cache":case"private-cache":case"unstable-cache":case void 0:return a.close()}}}),{findSourceMapURL:n,serverConsumerManifest:{moduleLoading:null,moduleMap:j,serverModuleMap:(0,g.getServerModuleMap)()}})}},75879:(a,b,c)=>{Object.defineProperty(b,"A",{enumerable:!0,get:function(){return d.registerServerReference}});let d=c(97954)},85853:(a,b,c)=>{c.d(b,{g:()=>j});var d=c(77833),e=c(68780),f=c(14262),g=c(43575);class h{constructor(a){this._server=a}requestStream(a,b,c){return this._server.requestStream(a,b,c)}createMessageStream(a,b){let c=this._server.getClientCapabilities();if((a.tools||a.toolChoice)&&!c?.sampling?.tools)throw Error("Client does not support sampling tools capability.");if(a.messages.length>0){let b=a.messages[a.messages.length-1],c=Array.isArray(b.content)?b.content:[b.content],d=c.some(a=>"tool_result"===a.type),e=a.messages.length>1?a.messages[a.messages.length-2]:void 0,f=e?Array.isArray(e.content)?e.content:[e.content]:[],g=f.some(a=>"tool_use"===a.type);if(d){if(c.some(a=>"tool_result"!==a.type))throw Error("The last message must contain only tool_result content if any is present");if(!g)throw Error("tool_result blocks are not matching any tool_use from the previous message")}if(g){let a=new Set(f.filter(a=>"tool_use"===a.type).map(a=>a.id)),b=new Set(c.filter(a=>"tool_result"===a.type).map(a=>a.toolUseId));if(a.size!==b.size||![...a].every(a=>b.has(a)))throw Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return this.requestStream({method:"sampling/createMessage",params:a},e.K1,b)}elicitInputStream(a,b){let c=this._server.getClientCapabilities(),d=a.mode??"form";switch(d){case"url":if(!c?.elicitation?.url)throw Error("Client does not support url elicitation.");break;case"form":if(!c?.elicitation?.form)throw Error("Client does not support form elicitation.")}let f="form"===d&&void 0===a.mode?{...a,mode:"form"}:a;return this.requestStream({method:"elicitation/create",params:f},e.n_,b)}async getTask(a,b){return this._server.getTask({taskId:a},b)}async getTaskResult(a,b,c){return this._server.getTaskResult({taskId:a},b,c)}async listTasks(a,b){return this._server.listTasks(a?{cursor:a}:void 0,b)}async cancelTask(a,b){return this._server.cancelTask({taskId:a},b)}}var i=c(52788);class j extends d.Zs{constructor(a,b){super(b),this._serverInfo=a,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(e.FP.options.map((a,b)=>[a,b])),this.isMessageIgnored=(a,b)=>{let c=this._loggingLevels.get(b);return!!c&&this.LOG_LEVEL_SEVERITY.get(a)<this.LOG_LEVEL_SEVERITY.get(c)},this._capabilities=b?.capabilities??{},this._instructions=b?.instructions,this._jsonSchemaValidator=b?.jsonSchemaValidator??new f.p,this.setRequestHandler(e.rk,a=>this._oninitialize(a)),this.setNotificationHandler(e.ZC,()=>this.oninitialized?.()),this._capabilities.logging&&this.setRequestHandler(e.b_,async(a,b)=>{let c=b.sessionId||b.requestInfo?.headers["mcp-session-id"]||void 0,{level:d}=a.params,f=e.FP.safeParse(d);return f.success&&this._loggingLevels.set(c,f.data),{}})}get experimental(){return this._experimental||(this._experimental={tasks:new h(this)}),this._experimental}registerCapabilities(a){if(this.transport)throw Error("Cannot register capabilities after connecting to transport");this._capabilities=(0,d.hG)(this._capabilities,a)}setRequestHandler(a,b){let c,d=(0,g.BW)(a),f=d?.method;if(!f)throw Error("Schema is missing a method literal");if((0,g.KW)(f)){let a=f._zod?.def;c=a?.value??f.value}else{let a=f._def;c=a?.value??f.value}if("string"!=typeof c)throw Error("Schema method literal must be a string");if("tools/call"===c){let c=async(a,c)=>{let d=(0,g.xL)(e.FT,a);if(!d.success){let a=d.error instanceof Error?d.error.message:String(d.error);throw new e.Nh(e.O4.InvalidParams,`Invalid tools/call request: ${a}`)}let{params:f}=d.data,h=await Promise.resolve(b(a,c));if(f.task){let a=(0,g.xL)(e.Mg,h);if(!a.success){let b=a.error instanceof Error?a.error.message:String(a.error);throw new e.Nh(e.O4.InvalidParams,`Invalid task creation result: ${b}`)}return a.data}let i=(0,g.xL)(e.TF,h);if(!i.success){let a=i.error instanceof Error?i.error.message:String(i.error);throw new e.Nh(e.O4.InvalidParams,`Invalid tools/call result: ${a}`)}return i.data};return super.setRequestHandler(a,c)}return super.setRequestHandler(a,b)}assertCapabilityForMethod(a){switch(a){case"sampling/createMessage":if(!this._clientCapabilities?.sampling)throw Error(`Client does not support sampling (required for ${a})`);break;case"elicitation/create":if(!this._clientCapabilities?.elicitation)throw Error(`Client does not support elicitation (required for ${a})`);break;case"roots/list":if(!this._clientCapabilities?.roots)throw Error(`Client does not support listing roots (required for ${a})`)}}assertNotificationCapability(a){switch(a){case"notifications/message":if(!this._capabilities.logging)throw Error(`Server does not support logging (required for ${a})`);break;case"notifications/resources/updated":case"notifications/resources/list_changed":if(!this._capabilities.resources)throw Error(`Server does not support notifying about resources (required for ${a})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw Error(`Server does not support notifying of tool list changes (required for ${a})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw Error(`Server does not support notifying of prompt list changes (required for ${a})`);break;case"notifications/elicitation/complete":if(!this._clientCapabilities?.elicitation?.url)throw Error(`Client does not support URL elicitation (required for ${a})`)}}assertRequestHandlerCapability(a){if(this._capabilities)switch(a){case"completion/complete":if(!this._capabilities.completions)throw Error(`Server does not support completions (required for ${a})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw Error(`Server does not support logging (required for ${a})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw Error(`Server does not support prompts (required for ${a})`);break;case"resources/list":case"resources/templates/list":case"resources/read":if(!this._capabilities.resources)throw Error(`Server does not support resources (required for ${a})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw Error(`Server does not support tools (required for ${a})`);break;case"tasks/get":case"tasks/list":case"tasks/result":case"tasks/cancel":if(!this._capabilities.tasks)throw Error(`Server does not support tasks capability (required for ${a})`)}}assertTaskCapability(a){(0,i.s)(this._clientCapabilities?.tasks?.requests,a,"Client")}assertTaskHandlerCapability(a){this._capabilities&&(0,i.z)(this._capabilities.tasks?.requests,a,"Server")}async _oninitialize(a){let b=a.params.protocolVersion;return this._clientCapabilities=a.params.capabilities,this._clientVersion=a.params.clientInfo,{protocolVersion:e.Iu.includes(b)?b:e.aE,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:"ping"},e.wR)}async createMessage(a,b){if((a.tools||a.toolChoice)&&!this._clientCapabilities?.sampling?.tools)throw Error("Client does not support sampling tools capability.");if(a.messages.length>0){let b=a.messages[a.messages.length-1],c=Array.isArray(b.content)?b.content:[b.content],d=c.some(a=>"tool_result"===a.type),e=a.messages.length>1?a.messages[a.messages.length-2]:void 0,f=e?Array.isArray(e.content)?e.content:[e.content]:[],g=f.some(a=>"tool_use"===a.type);if(d){if(c.some(a=>"tool_result"!==a.type))throw Error("The last message must contain only tool_result content if any is present");if(!g)throw Error("tool_result blocks are not matching any tool_use from the previous message")}if(g){let a=new Set(f.filter(a=>"tool_use"===a.type).map(a=>a.id)),b=new Set(c.filter(a=>"tool_result"===a.type).map(a=>a.toolUseId));if(a.size!==b.size||![...a].every(a=>b.has(a)))throw Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return a.tools?this.request({method:"sampling/createMessage",params:a},e.TI,b):this.request({method:"sampling/createMessage",params:a},e.K1,b)}async elicitInput(a,b){switch(a.mode??"form"){case"url":if(!this._clientCapabilities?.elicitation?.url)throw Error("Client does not support url elicitation.");return this.request({method:"elicitation/create",params:a},e.n_,b);case"form":{if(!this._clientCapabilities?.elicitation?.form)throw Error("Client does not support form elicitation.");let c="form"===a.mode?a:{...a,mode:"form"},d=await this.request({method:"elicitation/create",params:c},e.n_,b);if("accept"===d.action&&d.content&&c.requestedSchema)try{let a=this._jsonSchemaValidator.getValidator(c.requestedSchema)(d.content);if(!a.valid)throw new e.Nh(e.O4.InvalidParams,`Elicitation response content does not match requested schema: ${a.errorMessage}`)}catch(a){if(a instanceof e.Nh)throw a;throw new e.Nh(e.O4.InternalError,`Error validating elicitation response: ${a instanceof Error?a.message:String(a)}`)}return d}}}createElicitationCompletionNotifier(a,b){if(!this._clientCapabilities?.elicitation?.url)throw Error("Client does not support URL elicitation (required for notifications/elicitation/complete)");return()=>this.notification({method:"notifications/elicitation/complete",params:{elicitationId:a}},b)}async listRoots(a,b){return this.request({method:"roots/list",params:a},e.Cs,b)}async sendLoggingMessage(a,b){if(this._capabilities.logging&&!this.isMessageIgnored(a.level,b))return this.notification({method:"notifications/message",params:a})}async sendResourceUpdated(a){return this.notification({method:"notifications/resources/updated",params:a})}async sendResourceListChanged(){return this.notification({method:"notifications/resources/list_changed"})}async sendToolListChanged(){return this.notification({method:"notifications/tools/list_changed"})}async sendPromptListChanged(){return this.notification({method:"notifications/prompts/list_changed"})}}},90672:(a,b,c)=>{c.d(b,{ze:()=>ao,UG:()=>an});var d=c(57075),e=c(57975);let f=/^([A-Z][a-z0-9]*)+$/,g=["string","function","number","object","Function","Object","boolean","bigint","symbol"];class h extends Error{constructor(){super("Adding content for this request method or response status is not allowed.")}}class i extends Error{constructor(a,b){super(`Response body's content-length of ${a} byte(s) does not match the content-length of ${b} byte(s) set in header`)}}class j extends Error{constructor(a){super(`Cannot ${a} headers after they are sent to the client`)}}class k extends TypeError{constructor(a,b,c="is invalid"){let d=e.inspect(b);d.length>128&&(d=`${d.slice(0,128)}...`),super(`The ${a.includes(".")?"property":"argument"} '${a}' ${c}. Received ${d}`)}}class l extends TypeError{constructor(a,b){let c=`Invalid character in ${a}`;void 0!==b&&(c+=` ["${b}"]`),super(c)}}class m extends TypeError{constructor(a,b){super(`Invalid value "${a}" for header "${b}"`)}}class n extends RangeError{originalStatusCode;constructor(a){super(`Invalid status code: ${a}`),this.originalStatusCode=a}}class o extends Error{constructor(){super("Trailers are invalid with this transfer encoding")}}class p extends TypeError{constructor(a,b,c){Array.isArray(b)||(b=[b]);let d="The ";if(a.endsWith(" argument"))d+=`${a} `;else{let b=a.includes(".")?"property":"argument";d+=`"${a}" ${b} `}d+="must be ";let h=[],i=[],j=[];for(let a of b)g.includes(a)?h.push(a.toLowerCase()):null!==f.exec(a)?i.push(a):j.push(a);if(i.length>0){let a=h.indexOf("object");-1!==a&&(h.splice(a,1),i.push("Object"))}if(h.length>0){if(h.length>2){let a=h.pop();d+=`one of type ${h.join(", ")}, or ${a}`}else 2===h.length?d+=`one of type ${h[0]} or ${h[1]}`:d+=`of type ${h[0]}`;(i.length>0||j.length>0)&&(d+=" or ")}if(i.length>0){if(i.length>2){let a=i.pop();d+=`an instance of ${i.join(", ")}, or ${a}`}else d+=`an instance of ${i[0]}`,2===i.length&&(d+=` or ${i[1]}`);j.length>0&&(d+=" or ")}if(j.length>0)if(j.length>2){let a=j.pop();d+=`one of ${j.join(", ")}, or ${a}`}else 2===j.length?d+=`one of ${j[0]} or ${j[1]}`:(j[0].toLowerCase()!==j[0]&&(d+="an "),d+=`${j[0]}`);super(d+=`. Received ${function(a){if(null==a)return""+a;if("function"==typeof a&&a.name)return`function ${a.name}`;if("object"==typeof a)return a.constructor?.name?`an instance of ${a.constructor.name}`:`${e.inspect(a,{depth:-1})}`;let b=e.inspect(a,{colors:!1});return b.length>28&&(b=`${b.slice(0,25)}...`),`type ${typeof a} (${b})`}(c)}`)}}class q extends TypeError{constructor(a,b){super(`${a} must be a valid HTTP token ["${b}"]`)}}class r extends Error{constructor(a){super(`The ${a} method is not implemented`)}}class s extends Error{constructor(a){super(`Cannot call ${a} after a stream was finished`)}}class t extends Error{constructor(){super("Cannot pipe, not readable")}}class u extends Error{constructor(a){super(`Cannot call ${a} after a stream was destroyed`)}}class v extends TypeError{constructor(){super("May not write null values to stream")}}class w extends Error{constructor(){super("write after end")}}let x=Symbol("kHeaders"),y=Symbol("kHeadersDistinct"),z=Symbol("kHeadersCount"),A=Symbol("kTrailers"),B=Symbol("kTrailersDistinct"),C=Symbol("kTrailersCount");class D extends d.Readable{get socket(){return null}set socket(a){throw new r("socket")}httpVersionMajor;httpVersionMinor;httpVersion;complete=!1;[x]=null;[y]=null;[z]=0;rawHeaders=[];[A]=null;[B]=null;[C]=0;rawTrailers=[];joinDuplicateHeaders=!1;aborted=!1;upgrade=!1;url="";method;_consuming;_dumped;_stream=null;constructor(){super({}),this._readableState.readingMore=!0,this._consuming=!1,this._dumped=!1}get connection(){return null}set connection(a){console.error("No support for IncomingMessage.connection")}get headers(){if(!this[x]){this[x]={};let a=this.rawHeaders,b=this[x];for(let c=0;c<this[z];c+=2)this._addHeaderLine(a[c],a[c+1],b)}return this[x]}set headers(a){this[x]=a}get headersDistinct(){if(!this[y]){this[y]={};let a=this.rawHeaders,b=this[y];for(let c=0;c<this[z];c+=2)this._addHeaderLineDistinct(a[c],a[c+1],b)}return this[y]}set headersDistinct(a){this[y]=a}get trailers(){if(!this[A]){this[A]={};let a=this.rawTrailers,b=this[A];for(let c=0;c<this[C];c+=2)this._addHeaderLine(a[c],a[c+1],b)}return this[A]}set trailers(a){this[A]=a}get trailersDistinct(){if(!this[B]){this[B]={};let a=this.rawTrailers,b=this[B];for(let c=0;c<this[C];c+=2)this._addHeaderLineDistinct(a[c],a[c+1],b)}return this[B]}set trailersDistinct(a){this[B]=a}setTimeout(a,b){return this}async _read(a){if(this._consuming||(this._readableState.readingMore=!1,this._consuming=!0),null==this._stream){this.complete=!0,this.push(null);return}let b=this._stream.getReader();try{let a=await b.read();a.done?(this.complete=!0,this.push(null)):this.push(a.value)}catch(a){this.destroy(a)}finally{b.releaseLock()}}_destroy(a,b){this.readableEnded&&this.complete||(this.aborted=!0,this.emit("aborted")),setTimeout(E,0,this,a,b)}_addHeaderLines(a,b){if(a?.length){let c;if(this.complete?(this.rawTrailers=a,this[C]=b,c=this[A]):(this.rawHeaders=a,this[z]=b,c=this[x]),c)for(let d=0;d<b;d+=2)this._addHeaderLine(a[d],a[d+1],c)}}_addHeaderLine(a,b,c){let d=(a=function a(b,c=!1){switch(b.length){case 3:if("Age"===b||"age"===b)return"age";break;case 4:if("Host"===b||"host"===b)return"host";if("From"===b||"from"===b)return"from";if("ETag"===b||"etag"===b)return"etag";if("Date"===b||"date"===b)return"\0date";if("Vary"===b||"vary"===b)return"\0vary";break;case 6:if("Server"===b||"server"===b)return"server";if("Cookie"===b||"cookie"===b)return"\x02cookie";if("Origin"===b||"origin"===b)return"\0origin";if("Expect"===b||"expect"===b)return"\0expect";if("Accept"===b||"accept"===b)return"\0accept";break;case 7:if("Referer"===b||"referer"===b)return"referer";if("Expires"===b||"expires"===b)return"expires";if("Upgrade"===b||"upgrade"===b)return"\0upgrade";break;case 8:if("Location"===b||"location"===b)return"location";if("If-Match"===b||"if-match"===b)return"\0if-match";break;case 10:if("User-Agent"===b||"user-agent"===b)return"user-agent";if("Set-Cookie"===b||"set-cookie"===b)return"\x01";if("Connection"===b||"connection"===b)return"\0connection";break;case 11:if("Retry-After"===b||"retry-after"===b)return"retry-after";break;case 12:if("Content-Type"===b||"content-type"===b)return"content-type";if("Max-Forwards"===b||"max-forwards"===b)return"max-forwards";break;case 13:if("Authorization"===b||"authorization"===b)return"authorization";if("Last-Modified"===b||"last-modified"===b)return"last-modified";if("Cache-Control"===b||"cache-control"===b)return"\0cache-control";if("If-None-Match"===b||"if-none-match"===b)return"\0if-none-match";break;case 14:if("Content-Length"===b||"content-length"===b)return"content-length";break;case 15:if("Accept-Encoding"===b||"accept-encoding"===b)return"\0accept-encoding";if("Accept-Language"===b||"accept-language"===b)return"\0accept-language";if("X-Forwarded-For"===b||"x-forwarded-for"===b)return"\0x-forwarded-for";break;case 16:if("Content-Encoding"===b||"content-encoding"===b)return"\0content-encoding";if("X-Forwarded-Host"===b||"x-forwarded-host"===b)return"\0x-forwarded-host";break;case 17:if("If-Modified-Since"===b||"if-modified-since"===b)return"if-modified-since";if("Transfer-Encoding"===b||"transfer-encoding"===b)return"\0transfer-encoding";if("X-Forwarded-Proto"===b||"x-forwarded-proto"===b)return"\0x-forwarded-proto";break;case 19:if("Proxy-Authorization"===b||"proxy-authorization"===b)return"proxy-authorization";if("If-Unmodified-Since"===b||"if-unmodified-since"===b)return"if-unmodified-since"}return c?"\0"+b:a(b.toLowerCase(),!0)}(a)).charCodeAt(0);0===d||2===d?"string"==typeof c[a=a.slice(1)]?c[a]+=(0===d?", ":"; ")+b:c[a]=b:1===d?void 0!==c["set-cookie"]?c["set-cookie"].push(b):c["set-cookie"]=[b]:this.joinDuplicateHeaders?void 0===c[a]?c[a]=b:c[a]+=", "+b:void 0===c[a]&&(c[a]=b)}_addHeaderLineDistinct(a,b,c){c[a=a.toLowerCase()]?c[a].push(b):c[a]=[b]}_dump(){this._dumped||(this._dumped=!0,this.removeAllListeners("data"),this.resume())}}function E(a,b,c){0===a.listenerCount("error")?c():c(b)}var F=c(4573);function G(a,b){if("string"!=typeof a)throw new p(b,"string",a)}let H=/^(?:<[^>]*>)(?:\s*;\s*[^;"\s]+(?:=(")?[^;"\s]*\1)?)*$/;function I(a,b){if(void 0===a||!H.exec(a))throw new k(b,a,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}let J=Symbol("kNeedDrain"),K=Symbol("kOutHeaders");function L(a){return a?16:65536}let M=/^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/,N=/[^\t\x20-\x7e\x80-\xff]/;function O(a){return N.test(a)}let P=/(?:^|\W)chunked(?:$|\W)/i,Q=Symbol("corked"),R=Symbol("kChunkedBuffer"),S=Symbol("kChunkedLength"),T=Symbol("kUniqueHeaders"),U=Symbol("kBytesWritten"),V=Symbol("errored"),W=Symbol("kHighWaterMark"),X=Symbol("kRejectNonStandardBodyWrites"),Y=()=>{},Z=/(?:^|\W)close(?:$|\W)/i;class ${[Q]=0;[W]=L();entries=[];onWrite;constructor(a={}){this.onWrite=a.onWrite}write(a,b,c){return this.entries.push({data:a,length:a.length,encoding:b,callback:c,written:!1}),this._flush(),!0}cork(){this[Q]++}uncork(){this[Q]--,this._flush()}_flush(){if(this[Q]<=0)for(let[a,b]of this.entries.entries())b.written||(b.written=!0,null!=this.onWrite&&this.onWrite(a,b),null!=b.callback&&b.callback.call(void 0))}get writableLength(){return this.entries.reduce((a,b)=>a+(b.written&&b.length?b.length:0),0)}get writableHighWaterMark(){return this[W]}get writableCorked(){return this[Q]}}class _ extends d.Writable{req;outputData;outputSize;writtenHeaderBytes=0;_last;chunkedEncoding;shouldKeepAlive;maxRequestsOnConnectionReached;_defaultKeepAlive;useChunkedEncodingByDefault;sendDate;_removedConnection;_removedContLen;_removedTE;strictContentLength;[U];_contentLength;_hasBody;_trailer;[J];finished;_headerSent;[Q];[R];[S];_closed;_header;[K];_keepAliveTimeout;_maxRequestsPerSocket;_onPendingData;[T];[V];[W];[X];_writtenDataBuffer=new $({onWrite:this._onDataWritten.bind(this)});constructor(a,b){super(),this.req=a,this.outputData=[],this.outputSize=0,this.destroyed=!1,this._last=!1,this.chunkedEncoding=!1,this.shouldKeepAlive=!0,this.maxRequestsOnConnectionReached=!1,this._defaultKeepAlive=!0,this.useChunkedEncodingByDefault=!0,this.sendDate=!1,this._removedConnection=!1,this._removedContLen=!1,this._removedTE=!1,this.strictContentLength=!1,this[U]=0,this._contentLength=null,this._hasBody=!0,this._trailer="",this[J]=!1,this.finished=!1,this._headerSent=!1,this[Q]=0,this[R]=[],this[S]=0,this._closed=!1,this._header=null,this[K]=null,this._keepAliveTimeout=0,this._onPendingData=Y,this[V]=null,this[W]=b?.highWaterMark??L(),this[X]=b?.rejectNonStandardBodyWrites??!1,this[T]=null}_renderHeaders(){if(this._header)throw new j("render");let a=this[K],b={};if(null!==a){let c=Object.keys(a);for(let d=0,e=c.length;d<e;d++){let e=c[d];b[a[e][0]]=a[e][1]}}return b}cork(){this[Q]++,null!=this._writtenDataBuffer&&this._writtenDataBuffer.cork()}uncork(){if(this[Q]--,null!=this._writtenDataBuffer&&this._writtenDataBuffer.uncork(),!this[Q]&&0!==this[R].length){for(let{data:a,encoding:b,callback:c}of this[R])this._send(a??"",b,c);this[R].length=0,this[S]=0}}setTimeout(a,b){return this}destroy(a){return this.destroyed||(this.destroyed=!0,this[V]=a),this}_send(a,b,c,d){if(!this._headerSent){let c=this._header;"string"!=typeof a||"utf8"!==b&&"latin1"!==b&&b?(this.outputData.unshift({data:c,encoding:"latin1",callback:void 0}),this.outputSize+=c.length,this._onPendingData(c.length)):a=c+a,this._headerSent=!0,this.writtenHeaderBytes=c.length;let[d,...e]=this._header.split("\r\n"),f=/^HTTP\/1\.1 (?<statusCode>\d+) (?<statusMessage>.*)$/.exec(d);if(null==f)throw Error("Unexpected! Status line was "+d);let{statusCode:g,statusMessage:h}=f.groups??{},i=parseInt(g,10),j=[];for(let a of e)if(""!==a){let b=a.indexOf(": "),c=a.slice(0,b),d=a.slice(b+2);j.push([c,d])}this.emit("_headersSent",{statusCode:i,statusMessage:h,headers:j})}return this._writeRaw(a,b,c,d)}_writeRaw(a,b,c,d){return("function"==typeof b&&(c=b,b=null),null!=this._writtenDataBuffer)?(this.outputData.length&&this._flushOutput(this._writtenDataBuffer),this._writtenDataBuffer.write(a,b,c)):(this.outputData.push({data:a,encoding:b,callback:c}),this.outputSize+=a.length,this._onPendingData(a.length),this.outputSize<this[W])}_onDataWritten(a,b){this.emit("_dataWritten",{index:a,entry:b})}_storeHeader(a,b){let c={connection:!1,contLen:!1,te:!1,date:!1,expect:!1,trailer:!1,header:a};if(b)if(b===this[K])for(let a in b){let d=b[a];aa(this,c,d[0],d[1],!1)}else if(Array.isArray(b))if(b.length&&Array.isArray(b[0]))for(let a=0;a<b.length;a++){let d=b[a];aa(this,c,d[0],d[1],!0)}else{if(b.length%2!=0)throw new k("headers",b);for(let a=0;a<b.length;a+=2)aa(this,c,b[a],b[a+1],!0)}else for(let a in b)b.hasOwnProperty(a)&&aa(this,c,a,b[a],!0);let{header:d}=c;if(this.sendDate&&!c.date&&(d+="Date: "+new Date().toUTCString()+"\r\n"),this.chunkedEncoding&&(204===this.statusCode||304===this.statusCode)&&(this.statusCode,this.chunkedEncoding=!1,this.shouldKeepAlive=!1),this._removedConnection)this._last=!this.shouldKeepAlive;else if(!c.connection){let a=this.shouldKeepAlive&&(c.contLen||this.useChunkedEncodingByDefault);if(a&&this.maxRequestsOnConnectionReached)d+="Connection: close\r\n";else if(a){if(d+="Connection: keep-alive\r\n",this._keepAliveTimeout&&this._defaultKeepAlive){let a=Math.floor(this._keepAliveTimeout/1e3),b="";this._maxRequestsPerSocket&&~~this._maxRequestsPerSocket>0&&(b=`, max=${this._maxRequestsPerSocket}`),d+=`Keep-Alive: timeout=${a}${b}\r
14
14
  `}}else this._last=!0,d+="Connection: close\r\n"}if(c.contLen||c.te||(this._hasBody?this.useChunkedEncodingByDefault?c.trailer||this._removedContLen||"number"!=typeof this._contentLength?this._removedTE?this._last=!0:(d+="Transfer-Encoding: chunked\r\n",this.chunkedEncoding=!0):d+="Content-Length: "+this._contentLength+"\r\n":this._last=!0:this.chunkedEncoding=!1),!0!==this.chunkedEncoding&&c.trailer)throw new o;this._header=d+"\r\n",this._headerSent=!1,c.expect&&this._send("")}get _headers(){return console.warn("DEP0066: OutgoingMessage.prototype._headers is deprecated"),this.getHeaders()}set _headers(a){if(console.warn("DEP0066: OutgoingMessage.prototype._headers is deprecated"),null==a)this[K]=null;else if("object"==typeof a){let b=this[K]=Object.create(null),c=Object.keys(a);for(let d=0;d<c.length;++d){let e=c[d];b[e.toLowerCase()]=[e,a[e]]}}}get connection(){return null}set connection(a){console.error("No support for OutgoingMessage.connection")}get socket(){return null}set socket(a){console.error("No support for OutgoingMessage.socket")}get _headerNames(){console.warn("DEP0066: OutgoingMessage.prototype._headerNames is deprecated");let a=this[K];if(null!==a){let b=Object.create(null),c=Object.keys(a);for(let d=0;d<c.length;++d){let e=c[d],f=a[e][0];b[e]=f}return b}return null}set _headerNames(a){if(console.warn("DEP0066: OutgoingMessage.prototype._headerNames is deprecated"),"object"==typeof a&&null!==a){let b=this[K];if(!b)return;let c=Object.keys(a);for(let d=0;d<c.length;++d){let e=b[c[d]];e&&(e[0]=a[c[d]])}}}setHeader(a,b){if(this._header)throw new j("set");ac(a),ad(a,b);let c=this[K];return null===c&&(this[K]=c={__proto__:null}),c[a.toLowerCase()]=[a,b],this}setHeaders(a){if(this._header)throw new j("set");if(!a||Array.isArray(a)||"function"!=typeof a.keys||"function"!=typeof a.get)throw new p("headers",["Headers","Map"],a);let b=[];for(let{0:c,1:d}of a){if("set-cookie"===c){Array.isArray(d)?b.push(...d):b.push(d);continue}this.setHeader(c,d)}return b.length&&this.setHeader("set-cookie",b),this}appendHeader(a,b){if(this._header)throw new j("append");ac(a),ad(a,b);let c=a.toLowerCase(),d=this[K];if(null===d||!d[c])return this.setHeader(a,b);Array.isArray(d[c][1])||(d[c][1]=[d[c][1]]);let e=d[c][1];if(Array.isArray(b))for(let a=0,c=b.length;a<c;a++)e.push(b[a]);else e.push(b);return this}getHeader(a){G(a,"name");let b=this[K];if(null===b)return;let c=b[a.toLowerCase()];return c?.[1]}getHeaderNames(){return null!==this[K]?Object.keys(this[K]):[]}getRawHeaderNames(){let a=this[K];if(null===a)return[];let b=Object.values(a),c=Array(b.length);for(let a=0,d=b.length;a<d;a++)c[a]=b[a][0];return c}getHeaders(){let a=this[K],b={__proto__:null};if(a){let c=Object.keys(a);for(let d=0;d<c.length;++d){let e=c[d],f=a[e][1];b[e]=f}}return b}hasHeader(a){return G(a,"name"),null!==this[K]&&!!this[K][a.toLowerCase()]}removeHeader(a){if(G(a,"name"),this._header)throw new j("remove");let b=a.toLowerCase();switch(b){case"connection":this._removedConnection=!0;break;case"content-length":this._removedContLen=!0;break;case"transfer-encoding":this._removedTE=!0;break;case"date":this.sendDate=!1}null!==this[K]&&delete this[K][b]}_implicitHeader(){throw new r("_implicitHeader()")}get headersSent(){return!!this._header}write(a,b,c){"function"==typeof b&&(c=b,b=null);let d=ah(this,a,b,c,!1);return d||(this[J]=!0),d}addTrailers(a){this._trailer="";let b=Array.isArray(a),c=b?[...a.keys()]:Object.keys(a);for(let d=0,e=c.length;d<e;d++){let e,f;if(b){let b=c[d];e=a[b][0],f=a[b][1]}else{let b=c[d];e=b,f=a[b]}if(ac(e,"Trailer name"),Array.isArray(f)&&f.length>1&&(!this[T]||!this[T].has(e.toLowerCase())))for(let a=0,b=f.length;a<b;a++){if(O(f[a]))throw new l("trailer content",e);this._trailer+=e+": "+f[a]+"\r\n"}else{if(Array.isArray(f)&&(f=f.join("; ")),O(String(f)))throw new l("trailer content",e);this._trailer+=e+": "+f+"\r\n"}}}end(a,b,c){if("function"==typeof a?(c=a,a=null,b=null):"function"==typeof b&&(c=b,b=null),a){if(this.finished)return ae(this,new w,"function"!=typeof c?Y:c),this;null!=this._writtenDataBuffer&&this._writtenDataBuffer.cork(),ah(this,a,b,null,!0)}else{if(this.finished)return"function"==typeof c&&(this.writableFinished?c(new s("end")):this.on("finish",c)),this;this._header||(null!=this._writtenDataBuffer&&this._writtenDataBuffer.cork(),this._contentLength=0,this._implicitHeader())}if("function"==typeof c&&this.once("finish",c),ag(this)&&this[U]!==this._contentLength)throw new i(this[U],this._contentLength);let d=aj.bind(void 0,this);return this._hasBody&&this.chunkedEncoding||!this._headerSent||this.writableLength||a?this._send("","latin1",d):setTimeout(d,0),null!=this._writtenDataBuffer&&this._writtenDataBuffer.uncork(),this[Q]=1,this.uncork(),this.finished=!0,0===this.outputData.length&&null!=this._writtenDataBuffer&&this._finish(),this}_finish(){this.emit("prefinish")}_flush(){if(null!=this._writtenDataBuffer){let a=this._flushOutput(this._writtenDataBuffer);this.finished?this._finish():a&&this[J]&&(this[J]=!1,this.emit("drain"))}}_flushOutput(a){let b;for(;this[Q];)this[Q]--,a.cork();let c=this.outputData.length;if(c<=0)return;let d=this.outputData;a.cork();for(let e=0;e<c;e++){let{data:c,encoding:f,callback:g}=d[e];d[e].data=null,b=a.write(c??"",f,g)}return a.uncork(),this.outputData=[],this._onPendingData(-this.outputSize),this.outputSize=0,b}flushHeaders(){this._header||this._implicitHeader(),this._send("")}pipe(a){return this.emit("error",new t),a}}function aa(a,b,c,d,e){if(e&&ac(c),19===c.length&&"content-disposition"===c.toLowerCase()&&a._contentLength)if(Array.isArray(d))for(let a=0;a<d.length;a++)d[a]=String(F.Buffer.from(String(d[a]),"latin1"));else d=String(F.Buffer.from(String(d),"latin1"));if(Array.isArray(d)){if((d.length<2||6!==c.length||"cookie"!==c.toLowerCase())&&(!a[T]||!a[T].has(c.toLowerCase()))){for(let f=0;f<d.length;f++)ab(a,b,c,d[f],e);return}d=d.join("; ")}ab(a,b,c,String(d),e)}function ab(a,b,c,d,e){e&&ad(c,d),b.header+=c+": "+d+"\r\n",function(a,b,c,d){if(!(c.length<4)&&!(c.length>17))switch(c=c.toLowerCase()){case"connection":b.connection=!0,a._removedConnection=!1,null!==Z.exec(d)?a._last=!0:a.shouldKeepAlive=!0;break;case"transfer-encoding":b.te=!0,a._removedTE=!1,null!==P.exec(d)&&(a.chunkedEncoding=!0);break;case"content-length":b.contLen=!0,a._contentLength=+d,a._removedContLen=!1;break;case"date":case"expect":case"trailer":b[c]=!0;break;case"keep-alive":a._defaultKeepAlive=!1}}(a,b,c,d)}function ac(a,b){if("string"!=typeof a||!a||!M.test(a))throw new q(b||"Header name",a)}function ad(a,b){if(void 0===b)throw new m(String(b),a);if(O(String(b)))throw new l("header content",a)}function ae(a,b,c){a.destroyed||setTimeout(af,0,a,b,c)}function af(a,b,c){c(b),"function"!=typeof a.emit||a.destroyed||a.emit("error",b)}function ag(a){return a.strictContentLength&&null!=a._contentLength&&a._hasBody&&!a._removedContLen&&!a.chunkedEncoding&&!a.hasHeader("transfer-encoding")}function ah(a,b,c,d,e){let f,g,j;if("function"!=typeof d&&(d=Y),null===b)throw new v;if("string"!=typeof b&&(null==b||"Uint8Array"!==b[Symbol.toStringTag]))throw new p("chunk",["string","Buffer","Uint8Array"],b);if(a.finished?g=new w:a.destroyed&&(g=new u("write")),g)return a.destroyed?setTimeout(d,0,g):ae(a,g,d),!1;if(a.strictContentLength){if(j??="string"==typeof b?F.Buffer.byteLength(b,c??void 0):b.byteLength,ag(a)&&(e?a[U]+j!==a._contentLength:a[U]+j>(a._contentLength??0)))throw new i(j+a[U],a._contentLength);a[U]+=j}if(a._header||(e&&(a._contentLength=j??="string"==typeof b?F.Buffer.byteLength(b,c??void 0):b.byteLength),a._implicitHeader()),!a._hasBody)if(!a[X])return setTimeout(d,0),!0;else throw new h;return e||null==a._writtenDataBuffer||a._writtenDataBuffer.writableCorked||(a._writtenDataBuffer.cork(),setTimeout(ai,0,a._writtenDataBuffer)),a.chunkedEncoding&&0!==b.length?(j??="string"==typeof b?F.Buffer.byteLength(b,c??void 0):b.byteLength,a[Q]&&a._headerSent?(a[R].push({data:b,encoding:c,callback:d}),a[S]+=j,f=a[S]<a[W]):f=a._send(b,c,d,j)):f=a._send(b,c,d,j),f}function ai(a){a.uncork()}function aj(a){a.emit("finish")}Object.defineProperties(_.prototype,{errored:{get(){return this[V]}},closed:{get(){return this._closed}},writableFinished:{get(){return this.finished&&0===this.outputSize&&(null==this._writtenDataBuffer||0===this._writtenDataBuffer.writableLength)}},writableObjectMode:{get:()=>!1},writableLength:{get(){return this.outputSize+this[S]+(null!=this._writtenDataBuffer?this._writtenDataBuffer.writableLength:0)}},writableHighWaterMark:{get(){return null!=this._writtenDataBuffer?this._writtenDataBuffer.writableHighWaterMark:this[W]}},writableCorked:{get(){return this[Q]}},writableEnded:{get(){return this.finished}},writableNeedDrain:{get(){return!this.destroyed&&!this.finished&&this[J]}}});let ak=/[^\t\x20-\x7e\x80-\xff]/,al={100:"Continue",101:"Switching Protocols",102:"Processing",103:"Early Hints",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",208:"Already Reported",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",307:"Temporary Redirect",308:"Permanent Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Payload Too Large",414:"URI Too Long",415:"Unsupported Media Type",416:"Range Not Satisfiable",417:"Expectation Failed",418:"I'm a Teapot",421:"Misdirected Request",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",425:"Too Early",426:"Upgrade Required",428:"Precondition Required",429:"Too Many Requests",431:"Request Header Fields Too Large",451:"Unavailable For Legal Reasons",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",508:"Loop Detected",509:"Bandwidth Limit Exceeded",510:"Not Extended",511:"Network Authentication Required"};class am extends _{static encoder=new TextEncoder;statusCode=200;statusMessage;_sent100;_expect_continue;[K]=null;constructor(a,b){super(a,b),"HEAD"===a.method&&(this._hasBody=!1),this.sendDate=!0,this._sent100=!1,this._expect_continue=!1,(a.httpVersionMajor<1||a.httpVersionMinor<1)&&(this.useChunkedEncodingByDefault=null!==P.exec(String(a.headers.te)),this.shouldKeepAlive=!1),this.fetchResponse=new Promise(a=>{let b=!1;this.on("finish",()=>{b=!0});let c=[],d=a=>{b||(c[a.index]=this.dataFromDataWrittenEvent(a))};this.on("_dataWritten",d),this.on("_headersSent",e=>{this.off("_dataWritten",d);let{statusCode:f,statusMessage:g,headers:h}=e;a(this._toFetchResponse(f,g,h,c,b))})})}dataFromDataWrittenEvent(a){let{index:b,entry:c}=a,{data:d,encoding:e}=c;if(0===b){if("string"!=typeof d)throw console.error("First chunk should be string, not sure what happened."),new p("packet.data",["string","Buffer","Uint8Array"],d);d=d.slice(this.writtenHeaderBytes)}return"string"==typeof d&&(d=void 0===e||"utf8"===e||"utf-8"===e?am.encoder.encode(d):F.Buffer.from(d,e??void 0)),d??F.Buffer.from([])}_finish(){super._finish()}assignSocket(a){throw new r("assignSocket")}detachSocket(a){throw new r("detachSocket")}writeContinue(a){this._writeRaw("HTTP/1.1 100 Continue\r\n\r\n","ascii",a),this._sent100=!0}writeProcessing(a){this._writeRaw("HTTP/1.1 102 Processing\r\n\r\n","ascii",a)}writeEarlyHints(a,b){let c="HTTP/1.1 103 Early Hints\r\n";if(null===a.link||void 0===a.link)return;let d=function(a){if("string"==typeof a)return I(a,"hints"),a;if(Array.isArray(a)){let b=a.length,c="";if(0===b)return c;for(let d=0;d<b;d++){let e=a[d];I(e,"hints"),c+=e,d!==b-1&&(c+=", ")}return c}throw new k("hints",a,'must be an array or string of format "</styles.css>; rel=preload; as=style"')}(a.link);if(0!==d.length){for(let b of(c+="Link: "+d+"\r\n",Object.keys(a)))"link"!==b&&(c+=b+": "+a[b]+"\r\n");c+="\r\n",this._writeRaw(c,"ascii",b)}}_implicitHeader(){this.writeHead(this.statusCode)}writeHead(a,b,c){var d;let e;if(this._header)throw new j("write");let f=a;if((a|=0)<100||a>999)throw new n(f);if("string"==typeof b?this.statusMessage=b:(this.statusMessage||=al[a]||"unknown",c??=b),this.statusCode=a,this[K]){let a;if(Array.isArray(c)){if(c.length%2!=0)throw new k("headers",c);for(let b=0;b<c.length;b+=2)a=c[b+0],this.removeHeader(String(a));for(let b=0;b<c.length;b+=2)(a=c[b])&&this.appendHeader(String(a),c[b+1])}else if(c){let b=Object.keys(c);for(let d=0;d<b.length;d++)(a=b[d])&&this.setHeader(a,c[a])}e=this[K]}else e=c;if(d=this.statusMessage,ak.test(d))throw new l("statusMessage");let g=`HTTP/1.1 ${a} ${this.statusMessage}\r
15
- `;(204===a||304===a||a>=100&&a<=199)&&(this._hasBody=!1),this._expect_continue&&!this._sent100&&(this.shouldKeepAlive=!1);let h=(e&&!Array.isArray(e),e);return this._storeHeader(g,h??null),this}writeHeader=this.writeHead;fetchResponse;_toFetchResponse(a,b,c,d,e){let f=new Headers;for(let[a,b]of c)f.append(a,b);let g=this,h=this._hasBody?new ReadableStream({start(a){for(let b of d)a.enqueue(b);e?a.close():(g.on("finish",()=>{e=!0,a.close()}),g.on("_dataWritten",b=>{if(e)return;let c=g.dataFromDataWrittenEvent(b);a.enqueue(c)}))}}):null;if(null!=h&&"undefined"!=typeof FixedLengthStream){let a=parseInt(f.get("content-length")??"",10);a>=0&&(h=h.pipeThrough(new FixedLengthStream(a)))}return new Response(h,{status:a,statusText:b,headers:f})}}function an(a,b){let{createIncomingMessage:c=()=>new D,createServerResponse:d=a=>new am(a),ctx:e}=b??{},f=c(e),g=d(f,e),h=new URL(a.url);f.httpVersionMajor=1,f.httpVersionMinor=1,f.httpVersion="1.1",f.url=h.pathname+h.search,f.upgrade=!1;let i=[];for(let[b,c]of a.headers)i.push(b),i.push(c);return f._addHeaderLines(i,i.length),f.method=a.method,f._stream=a.body,{req:f,res:g}}function ao(a){if(!(a instanceof am))throw Error("toFetchResponse must be called on a ServerResponse generated by toReqRes");return a.fetchResponse}},95736:(a,b,c)=>{a.exports=c(44870)}};
15
+ `;(204===a||304===a||a>=100&&a<=199)&&(this._hasBody=!1),this._expect_continue&&!this._sent100&&(this.shouldKeepAlive=!1);let h=(e&&!Array.isArray(e),e);return this._storeHeader(g,h??null),this}writeHeader=this.writeHead;fetchResponse;_toFetchResponse(a,b,c,d,e){let f=new Headers;for(let[a,b]of c)f.append(a,b);let g=this,h=this._hasBody?new ReadableStream({start(a){for(let b of d)a.enqueue(b);e?a.close():(g.on("finish",()=>{e=!0,a.close()}),g.on("_dataWritten",b=>{if(e)return;let c=g.dataFromDataWrittenEvent(b);a.enqueue(c)}))}}):null;if(null!=h&&"undefined"!=typeof FixedLengthStream){let a=parseInt(f.get("content-length")??"",10);a>=0&&(h=h.pipeThrough(new FixedLengthStream(a)))}return new Response(h,{status:a,statusText:b,headers:f})}}function an(a,b){let{createIncomingMessage:c=()=>new D,createServerResponse:d=a=>new am(a),ctx:e}=b??{},f=c(e),g=d(f,e),h=new URL(a.url);f.httpVersionMajor=1,f.httpVersionMinor=1,f.httpVersion="1.1",f.url=h.pathname+h.search,f.upgrade=!1;let i=[];for(let[b,c]of a.headers)i.push(b),i.push(c);return f._addHeaderLines(i,i.length),f.method=a.method,f._stream=a.body,{req:f,res:g}}function ao(a){if(!(a instanceof am))throw Error("toFetchResponse must be called on a ServerResponse generated by toReqRes");return a.fetchResponse}}};