@whxway/loom 1.1.0 → 1.2.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 (347) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/cache/.tsbuildinfo +1 -1
  4. package/.next/diagnostics/route-bundle-stats.json +35 -35
  5. package/.next/fallback-build-manifest.json +3 -3
  6. package/.next/server/app/(auth)/login/page_client-reference-manifest.js +1 -1
  7. package/.next/server/app/(dashboard)/logs/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/(dashboard)/mcp/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/(dashboard)/mcp/presets/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/(dashboard)/models/[name]/page_client-reference-manifest.js +1 -1
  11. package/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  12. package/.next/server/app/(dashboard)/playground/audio/speech/page_client-reference-manifest.js +1 -1
  13. package/.next/server/app/(dashboard)/playground/audio/transcription/page_client-reference-manifest.js +1 -1
  14. package/.next/server/app/(dashboard)/playground/chat/page_client-reference-manifest.js +1 -1
  15. package/.next/server/app/(dashboard)/playground/embedding/page_client-reference-manifest.js +1 -1
  16. package/.next/server/app/(dashboard)/playground/image/page_client-reference-manifest.js +1 -1
  17. package/.next/server/app/(dashboard)/playground/page_client-reference-manifest.js +1 -1
  18. package/.next/server/app/(dashboard)/playground/video/page_client-reference-manifest.js +1 -1
  19. package/.next/server/app/(dashboard)/providers/[name]/page_client-reference-manifest.js +1 -1
  20. package/.next/server/app/(dashboard)/providers/page_client-reference-manifest.js +1 -1
  21. package/.next/server/app/(dashboard)/settings/api-keys/page_client-reference-manifest.js +1 -1
  22. package/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  23. package/.next/server/app/(dashboard)/settings/users/page_client-reference-manifest.js +1 -1
  24. package/.next/server/app/_global-error.html +1 -1
  25. package/.next/server/app/_global-error.rsc +1 -1
  26. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  27. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  28. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  29. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  30. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  31. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  32. package/.next/server/app/_not-found.html +2 -2
  33. package/.next/server/app/_not-found.rsc +3 -3
  34. package/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  35. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  36. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  37. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  38. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  39. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  40. package/.next/server/app/api/adapters/route.js.nft.json +1 -1
  41. package/.next/server/app/api/apikeys/[id]/route.js.nft.json +1 -1
  42. package/.next/server/app/api/apikeys/route.js.nft.json +1 -1
  43. package/.next/server/app/api/capabilities/route.js.nft.json +1 -1
  44. package/.next/server/app/api/conversations/[id]/messages/route.js.nft.json +1 -1
  45. package/.next/server/app/api/conversations/[id]/route.js.nft.json +1 -1
  46. package/.next/server/app/api/conversations/route.js.nft.json +1 -1
  47. package/.next/server/app/api/health/route.js.nft.json +1 -1
  48. package/.next/server/app/api/login/route.js.nft.json +1 -1
  49. package/.next/server/app/api/logout/route.js.nft.json +1 -1
  50. package/.next/server/app/api/logs/generations/[id]/images/[idx]/route.js.nft.json +1 -1
  51. package/.next/server/app/api/logs/generations/[id]/route.js.nft.json +1 -1
  52. package/.next/server/app/api/logs/generations/route.js.nft.json +1 -1
  53. package/.next/server/app/api/mcp/presets/route.js.nft.json +1 -1
  54. package/.next/server/app/api/mcp/servers/[id]/check/route.js +1 -1
  55. package/.next/server/app/api/mcp/servers/[id]/check/route.js.nft.json +1 -1
  56. package/.next/server/app/api/mcp/servers/[id]/route.js.nft.json +1 -1
  57. package/.next/server/app/api/mcp/servers/[id]/tools/route.js.nft.json +1 -1
  58. package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
  59. package/.next/server/app/api/messages/[id]/rate/route.js.nft.json +1 -1
  60. package/.next/server/app/api/models/[id]/route.js.nft.json +1 -1
  61. package/.next/server/app/api/models/route.js.nft.json +1 -1
  62. package/.next/server/app/api/ping/route.js.nft.json +1 -1
  63. package/.next/server/app/api/playground/chat/route.js +4 -4
  64. package/.next/server/app/api/playground/chat/route.js.nft.json +1 -1
  65. package/.next/server/app/api/playground/embedding/route.js +4 -4
  66. package/.next/server/app/api/playground/embedding/route.js.nft.json +1 -1
  67. package/.next/server/app/api/providers/[id]/check/route.js.nft.json +1 -1
  68. package/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  69. package/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
  70. package/.next/server/app/api/providers/probe/route.js.nft.json +1 -1
  71. package/.next/server/app/api/providers/reload/route.js.nft.json +1 -1
  72. package/.next/server/app/api/providers/route.js.nft.json +1 -1
  73. package/.next/server/app/api/stats/models/[name]/route.js.nft.json +1 -1
  74. package/.next/server/app/api/stats/route.js.nft.json +1 -1
  75. package/.next/server/app/api/tools/[id]/route.js.nft.json +1 -1
  76. package/.next/server/app/api/tools/route.js.nft.json +1 -1
  77. package/.next/server/app/api/users/[username]/route.js.nft.json +1 -1
  78. package/.next/server/app/api/users/me/preferences/route.js +1 -1
  79. package/.next/server/app/api/users/me/preferences/route.js.nft.json +1 -1
  80. package/.next/server/app/api/users/me/route.js.nft.json +1 -1
  81. package/.next/server/app/api/users/route.js.nft.json +1 -1
  82. package/.next/server/app/api/v1/audio/speech/route.js +1 -1
  83. package/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  84. package/.next/server/app/api/v1/audio/transcriptions/route.js +4 -4
  85. package/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  86. package/.next/server/app/api/v1/chat/completions/route.js +1 -1
  87. package/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  88. package/.next/server/app/api/v1/embeddings/route.js +1 -1
  89. package/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  90. package/.next/server/app/api/v1/images/generations/route.js +1 -1
  91. package/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  92. package/.next/server/app/api/v1/models/route.js.nft.json +1 -1
  93. package/.next/server/app/api/v1/rerank/route.js +1 -1
  94. package/.next/server/app/api/v1/rerank/route.js.nft.json +1 -1
  95. package/.next/server/app/api/v1/videos/[id]/content/route.js +4 -4
  96. package/.next/server/app/api/v1/videos/[id]/content/route.js.nft.json +1 -1
  97. package/.next/server/app/api/v1/videos/[id]/route.js +4 -4
  98. package/.next/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
  99. package/.next/server/app/api/v1/videos/route.js +1 -1
  100. package/.next/server/app/api/v1/videos/route.js.nft.json +1 -1
  101. package/.next/server/app/api/variants/route.js.nft.json +1 -1
  102. package/.next/server/app/index.html +2 -2
  103. package/.next/server/app/index.rsc +7 -7
  104. package/.next/server/app/index.segments/!KGRhc2hib2FyZCk/__PAGE__.segment.rsc +2 -2
  105. package/.next/server/app/index.segments/!KGRhc2hib2FyZCk.segment.rsc +3 -3
  106. package/.next/server/app/index.segments/_full.segment.rsc +7 -7
  107. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  108. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  109. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  110. package/.next/server/app/login.html +2 -2
  111. package/.next/server/app/login.rsc +3 -3
  112. package/.next/server/app/login.segments/!KGF1dGgp/login/__PAGE__.segment.rsc +1 -1
  113. package/.next/server/app/login.segments/!KGF1dGgp/login.segment.rsc +1 -1
  114. package/.next/server/app/login.segments/!KGF1dGgp.segment.rsc +1 -1
  115. package/.next/server/app/login.segments/_full.segment.rsc +3 -3
  116. package/.next/server/app/login.segments/_head.segment.rsc +1 -1
  117. package/.next/server/app/login.segments/_index.segment.rsc +2 -2
  118. package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  119. package/.next/server/app/logs.html +2 -2
  120. package/.next/server/app/logs.rsc +7 -7
  121. package/.next/server/app/logs.segments/!KGRhc2hib2FyZCk/logs/__PAGE__.segment.rsc +2 -2
  122. package/.next/server/app/logs.segments/!KGRhc2hib2FyZCk/logs.segment.rsc +1 -1
  123. package/.next/server/app/logs.segments/!KGRhc2hib2FyZCk.segment.rsc +3 -3
  124. package/.next/server/app/logs.segments/_full.segment.rsc +7 -7
  125. package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
  126. package/.next/server/app/logs.segments/_index.segment.rsc +2 -2
  127. package/.next/server/app/logs.segments/_tree.segment.rsc +2 -2
  128. package/.next/server/app/mcp/presets.html +2 -2
  129. package/.next/server/app/mcp/presets.rsc +7 -7
  130. package/.next/server/app/mcp/presets.segments/!KGRhc2hib2FyZCk/mcp/presets/__PAGE__.segment.rsc +2 -2
  131. package/.next/server/app/mcp/presets.segments/!KGRhc2hib2FyZCk/mcp/presets.segment.rsc +1 -1
  132. package/.next/server/app/mcp/presets.segments/!KGRhc2hib2FyZCk/mcp.segment.rsc +1 -1
  133. package/.next/server/app/mcp/presets.segments/!KGRhc2hib2FyZCk.segment.rsc +3 -3
  134. package/.next/server/app/mcp/presets.segments/_full.segment.rsc +7 -7
  135. package/.next/server/app/mcp/presets.segments/_head.segment.rsc +1 -1
  136. package/.next/server/app/mcp/presets.segments/_index.segment.rsc +2 -2
  137. package/.next/server/app/mcp/presets.segments/_tree.segment.rsc +2 -2
  138. package/.next/server/app/mcp.html +2 -2
  139. package/.next/server/app/mcp.rsc +7 -7
  140. package/.next/server/app/mcp.segments/!KGRhc2hib2FyZCk/mcp/__PAGE__.segment.rsc +2 -2
  141. package/.next/server/app/mcp.segments/!KGRhc2hib2FyZCk/mcp.segment.rsc +1 -1
  142. package/.next/server/app/mcp.segments/!KGRhc2hib2FyZCk.segment.rsc +3 -3
  143. package/.next/server/app/mcp.segments/_full.segment.rsc +7 -7
  144. package/.next/server/app/mcp.segments/_head.segment.rsc +1 -1
  145. package/.next/server/app/mcp.segments/_index.segment.rsc +2 -2
  146. package/.next/server/app/mcp.segments/_tree.segment.rsc +2 -2
  147. package/.next/server/app/playground/audio/speech.html +2 -2
  148. package/.next/server/app/playground/audio/speech.rsc +8 -8
  149. package/.next/server/app/playground/audio/speech.segments/!KGRhc2hib2FyZCk/playground/audio/speech/__PAGE__.segment.rsc +2 -2
  150. package/.next/server/app/playground/audio/speech.segments/!KGRhc2hib2FyZCk/playground/audio/speech.segment.rsc +1 -1
  151. package/.next/server/app/playground/audio/speech.segments/!KGRhc2hib2FyZCk/playground/audio.segment.rsc +1 -1
  152. package/.next/server/app/playground/audio/speech.segments/!KGRhc2hib2FyZCk/playground.segment.rsc +2 -2
  153. package/.next/server/app/playground/audio/speech.segments/!KGRhc2hib2FyZCk.segment.rsc +3 -3
  154. package/.next/server/app/playground/audio/speech.segments/_full.segment.rsc +8 -8
  155. package/.next/server/app/playground/audio/speech.segments/_head.segment.rsc +1 -1
  156. package/.next/server/app/playground/audio/speech.segments/_index.segment.rsc +2 -2
  157. package/.next/server/app/playground/audio/speech.segments/_tree.segment.rsc +2 -2
  158. package/.next/server/app/playground/audio/transcription.html +2 -2
  159. package/.next/server/app/playground/audio/transcription.rsc +8 -8
  160. package/.next/server/app/playground/audio/transcription.segments/!KGRhc2hib2FyZCk/playground/audio/transcription/__PAGE__.segment.rsc +2 -2
  161. package/.next/server/app/playground/audio/transcription.segments/!KGRhc2hib2FyZCk/playground/audio/transcription.segment.rsc +1 -1
  162. package/.next/server/app/playground/audio/transcription.segments/!KGRhc2hib2FyZCk/playground/audio.segment.rsc +1 -1
  163. package/.next/server/app/playground/audio/transcription.segments/!KGRhc2hib2FyZCk/playground.segment.rsc +2 -2
  164. package/.next/server/app/playground/audio/transcription.segments/!KGRhc2hib2FyZCk.segment.rsc +3 -3
  165. package/.next/server/app/playground/audio/transcription.segments/_full.segment.rsc +8 -8
  166. package/.next/server/app/playground/audio/transcription.segments/_head.segment.rsc +1 -1
  167. package/.next/server/app/playground/audio/transcription.segments/_index.segment.rsc +2 -2
  168. package/.next/server/app/playground/audio/transcription.segments/_tree.segment.rsc +2 -2
  169. package/.next/server/app/playground/chat.html +2 -2
  170. package/.next/server/app/playground/chat.rsc +8 -8
  171. package/.next/server/app/playground/chat.segments/!KGRhc2hib2FyZCk/playground/chat/__PAGE__.segment.rsc +2 -2
  172. package/.next/server/app/playground/chat.segments/!KGRhc2hib2FyZCk/playground/chat.segment.rsc +1 -1
  173. package/.next/server/app/playground/chat.segments/!KGRhc2hib2FyZCk/playground.segment.rsc +2 -2
  174. package/.next/server/app/playground/chat.segments/!KGRhc2hib2FyZCk.segment.rsc +3 -3
  175. package/.next/server/app/playground/chat.segments/_full.segment.rsc +8 -8
  176. package/.next/server/app/playground/chat.segments/_head.segment.rsc +1 -1
  177. package/.next/server/app/playground/chat.segments/_index.segment.rsc +2 -2
  178. package/.next/server/app/playground/chat.segments/_tree.segment.rsc +2 -2
  179. package/.next/server/app/playground/embedding.html +2 -2
  180. package/.next/server/app/playground/embedding.rsc +8 -8
  181. package/.next/server/app/playground/embedding.segments/!KGRhc2hib2FyZCk/playground/embedding/__PAGE__.segment.rsc +2 -2
  182. package/.next/server/app/playground/embedding.segments/!KGRhc2hib2FyZCk/playground/embedding.segment.rsc +1 -1
  183. package/.next/server/app/playground/embedding.segments/!KGRhc2hib2FyZCk/playground.segment.rsc +2 -2
  184. package/.next/server/app/playground/embedding.segments/!KGRhc2hib2FyZCk.segment.rsc +3 -3
  185. package/.next/server/app/playground/embedding.segments/_full.segment.rsc +8 -8
  186. package/.next/server/app/playground/embedding.segments/_head.segment.rsc +1 -1
  187. package/.next/server/app/playground/embedding.segments/_index.segment.rsc +2 -2
  188. package/.next/server/app/playground/embedding.segments/_tree.segment.rsc +2 -2
  189. package/.next/server/app/playground/image.html +2 -2
  190. package/.next/server/app/playground/image.rsc +8 -8
  191. package/.next/server/app/playground/image.segments/!KGRhc2hib2FyZCk/playground/image/__PAGE__.segment.rsc +2 -2
  192. package/.next/server/app/playground/image.segments/!KGRhc2hib2FyZCk/playground/image.segment.rsc +1 -1
  193. package/.next/server/app/playground/image.segments/!KGRhc2hib2FyZCk/playground.segment.rsc +2 -2
  194. package/.next/server/app/playground/image.segments/!KGRhc2hib2FyZCk.segment.rsc +3 -3
  195. package/.next/server/app/playground/image.segments/_full.segment.rsc +8 -8
  196. package/.next/server/app/playground/image.segments/_head.segment.rsc +1 -1
  197. package/.next/server/app/playground/image.segments/_index.segment.rsc +2 -2
  198. package/.next/server/app/playground/image.segments/_tree.segment.rsc +2 -2
  199. package/.next/server/app/playground/video.html +2 -2
  200. package/.next/server/app/playground/video.rsc +8 -8
  201. package/.next/server/app/playground/video.segments/!KGRhc2hib2FyZCk/playground/video/__PAGE__.segment.rsc +2 -2
  202. package/.next/server/app/playground/video.segments/!KGRhc2hib2FyZCk/playground/video.segment.rsc +1 -1
  203. package/.next/server/app/playground/video.segments/!KGRhc2hib2FyZCk/playground.segment.rsc +2 -2
  204. package/.next/server/app/playground/video.segments/!KGRhc2hib2FyZCk.segment.rsc +3 -3
  205. package/.next/server/app/playground/video.segments/_full.segment.rsc +8 -8
  206. package/.next/server/app/playground/video.segments/_head.segment.rsc +1 -1
  207. package/.next/server/app/playground/video.segments/_index.segment.rsc +2 -2
  208. package/.next/server/app/playground/video.segments/_tree.segment.rsc +2 -2
  209. package/.next/server/app/playground.html +2 -2
  210. package/.next/server/app/playground.rsc +8 -8
  211. package/.next/server/app/playground.segments/!KGRhc2hib2FyZCk/playground/__PAGE__.segment.rsc +2 -2
  212. package/.next/server/app/playground.segments/!KGRhc2hib2FyZCk/playground.segment.rsc +2 -2
  213. package/.next/server/app/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +3 -3
  214. package/.next/server/app/playground.segments/_full.segment.rsc +8 -8
  215. package/.next/server/app/playground.segments/_head.segment.rsc +1 -1
  216. package/.next/server/app/playground.segments/_index.segment.rsc +2 -2
  217. package/.next/server/app/playground.segments/_tree.segment.rsc +2 -2
  218. package/.next/server/app/providers.html +2 -2
  219. package/.next/server/app/providers.rsc +7 -7
  220. package/.next/server/app/providers.segments/!KGRhc2hib2FyZCk/providers/__PAGE__.segment.rsc +2 -2
  221. package/.next/server/app/providers.segments/!KGRhc2hib2FyZCk/providers.segment.rsc +1 -1
  222. package/.next/server/app/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +3 -3
  223. package/.next/server/app/providers.segments/_full.segment.rsc +7 -7
  224. package/.next/server/app/providers.segments/_head.segment.rsc +1 -1
  225. package/.next/server/app/providers.segments/_index.segment.rsc +2 -2
  226. package/.next/server/app/providers.segments/_tree.segment.rsc +2 -2
  227. package/.next/server/app/settings/api-keys.html +2 -2
  228. package/.next/server/app/settings/api-keys.rsc +7 -7
  229. package/.next/server/app/settings/api-keys.segments/!KGRhc2hib2FyZCk/settings/api-keys/__PAGE__.segment.rsc +2 -2
  230. package/.next/server/app/settings/api-keys.segments/!KGRhc2hib2FyZCk/settings/api-keys.segment.rsc +1 -1
  231. package/.next/server/app/settings/api-keys.segments/!KGRhc2hib2FyZCk/settings.segment.rsc +1 -1
  232. package/.next/server/app/settings/api-keys.segments/!KGRhc2hib2FyZCk.segment.rsc +3 -3
  233. package/.next/server/app/settings/api-keys.segments/_full.segment.rsc +7 -7
  234. package/.next/server/app/settings/api-keys.segments/_head.segment.rsc +1 -1
  235. package/.next/server/app/settings/api-keys.segments/_index.segment.rsc +2 -2
  236. package/.next/server/app/settings/api-keys.segments/_tree.segment.rsc +2 -2
  237. package/.next/server/app/settings/users.html +2 -2
  238. package/.next/server/app/settings/users.rsc +7 -7
  239. package/.next/server/app/settings/users.segments/!KGRhc2hib2FyZCk/settings/users/__PAGE__.segment.rsc +2 -2
  240. package/.next/server/app/settings/users.segments/!KGRhc2hib2FyZCk/settings/users.segment.rsc +1 -1
  241. package/.next/server/app/settings/users.segments/!KGRhc2hib2FyZCk/settings.segment.rsc +1 -1
  242. package/.next/server/app/settings/users.segments/!KGRhc2hib2FyZCk.segment.rsc +3 -3
  243. package/.next/server/app/settings/users.segments/_full.segment.rsc +7 -7
  244. package/.next/server/app/settings/users.segments/_head.segment.rsc +1 -1
  245. package/.next/server/app/settings/users.segments/_index.segment.rsc +2 -2
  246. package/.next/server/app/settings/users.segments/_tree.segment.rsc +2 -2
  247. package/.next/server/app/settings.html +2 -2
  248. package/.next/server/app/settings.rsc +8 -8
  249. package/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings/__PAGE__.segment.rsc +2 -2
  250. package/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings.segment.rsc +1 -1
  251. package/.next/server/app/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +3 -3
  252. package/.next/server/app/settings.segments/_full.segment.rsc +8 -8
  253. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  254. package/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  255. package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  256. package/.next/server/chunks/[root-of-the-server]__019oqc3._.js +3 -0
  257. package/.next/server/chunks/[root-of-the-server]__019oqc3._.js.map +1 -0
  258. package/.next/server/chunks/[root-of-the-server]__01ou67p._.js +1 -1
  259. package/.next/server/chunks/[root-of-the-server]__01ou67p._.js.map +1 -1
  260. package/.next/server/chunks/[root-of-the-server]__02sypva._.js +2 -2
  261. package/.next/server/chunks/[root-of-the-server]__02sypva._.js.map +1 -1
  262. package/.next/server/chunks/[root-of-the-server]__0myi8j1._.js +2 -2
  263. package/.next/server/chunks/[root-of-the-server]__0myi8j1._.js.map +1 -1
  264. package/.next/server/chunks/[root-of-the-server]__0wiw6hu._.js +3 -0
  265. package/.next/server/chunks/[root-of-the-server]__0wiw6hu._.js.map +1 -0
  266. package/.next/server/chunks/[root-of-the-server]__0xrm_9r._.js +3 -0
  267. package/.next/server/chunks/[root-of-the-server]__0xrm_9r._.js.map +1 -0
  268. package/.next/server/chunks/[root-of-the-server]__11t79he._.js +1 -1
  269. package/.next/server/chunks/[root-of-the-server]__11t79he._.js.map +1 -1
  270. package/.next/server/chunks/[root-of-the-server]__1fs5lo-._.js +1 -1
  271. package/.next/server/chunks/[root-of-the-server]__1fs5lo-._.js.map +1 -1
  272. package/.next/server/chunks/[root-of-the-server]__1qg3d87._.js +2 -2
  273. package/.next/server/chunks/[root-of-the-server]__1qg3d87._.js.map +1 -1
  274. package/.next/server/chunks/[root-of-the-server]__1zgou-a._.js +6 -0
  275. package/.next/server/chunks/[root-of-the-server]__1zgou-a._.js.map +1 -0
  276. package/.next/server/chunks/_00k5vl0._.js +3 -0
  277. package/.next/server/chunks/_00k5vl0._.js.map +1 -0
  278. package/.next/server/chunks/_06hthvw._.js +3 -0
  279. package/.next/server/chunks/_06hthvw._.js.map +1 -0
  280. package/.next/server/chunks/_0c6vpbw._.js +3 -0
  281. package/.next/server/chunks/_0c6vpbw._.js.map +1 -0
  282. package/.next/server/chunks/_0hawg18._.js +3 -0
  283. package/.next/server/chunks/_0hawg18._.js.map +1 -0
  284. package/.next/server/chunks/_0kr91st._.js +3 -0
  285. package/.next/server/chunks/_0kr91st._.js.map +1 -0
  286. package/.next/server/chunks/_1i4x7k4._.js +3 -0
  287. package/.next/server/chunks/_1i4x7k4._.js.map +1 -0
  288. package/.next/server/chunks/_1lk_ovb._.js +3 -0
  289. package/.next/server/chunks/_1lk_ovb._.js.map +1 -0
  290. package/.next/server/chunks/_1wk63w9._.js +3 -0
  291. package/.next/server/chunks/_1wk63w9._.js.map +1 -0
  292. package/.next/server/chunks/_1wl3z8e._.js +3 -0
  293. package/.next/server/chunks/_1wl3z8e._.js.map +1 -0
  294. package/.next/server/chunks/lib_server_11s_lvw._.js +1 -1
  295. package/.next/server/chunks/lib_server_11s_lvw._.js.map +1 -1
  296. package/.next/server/chunks/lib_server_gateway_index_ts_1nvei3v._.js +2 -2
  297. package/.next/server/chunks/lib_server_gateway_index_ts_1nvei3v._.js.map +1 -1
  298. package/.next/server/chunks/ssr/app_(dashboard)_settings_page_tsx_1hwv4x8._.js +2 -2
  299. package/.next/server/chunks/ssr/app_(dashboard)_settings_page_tsx_1hwv4x8._.js.map +1 -1
  300. package/.next/server/chunks/ssr/lib_schemas_preferences_ts_1fy1exu._.js +1 -1
  301. package/.next/server/chunks/ssr/lib_schemas_preferences_ts_1fy1exu._.js.map +1 -1
  302. package/.next/server/middleware-build-manifest.js +3 -3
  303. package/.next/server/pages/404.html +2 -2
  304. package/.next/server/pages/500.html +1 -1
  305. package/.next/static/chunks/{2zeeni2y2fh59.js → 1si1c1m377t3w.js} +1 -1
  306. package/.next/static/chunks/2yzdc8m536xea.css +1 -0
  307. package/.next/static/chunks/3oj24pftrz5zy.js +11 -0
  308. package/.next/trace +2 -2
  309. package/.next/trace-build +1 -1
  310. package/bin/loom.mjs +1 -1
  311. package/drizzle/0019_timeout_default_3600.sql +36 -0
  312. package/drizzle/meta/0019_snapshot.json +1309 -0
  313. package/drizzle/meta/_journal.json +7 -0
  314. package/package.json +1 -1
  315. package/.next/server/chunks/[root-of-the-server]__00b7x8i._.js +0 -3
  316. package/.next/server/chunks/[root-of-the-server]__00b7x8i._.js.map +0 -1
  317. package/.next/server/chunks/[root-of-the-server]__022u2d9._.js +0 -3
  318. package/.next/server/chunks/[root-of-the-server]__022u2d9._.js.map +0 -1
  319. package/.next/server/chunks/[root-of-the-server]__0g3mnim._.js +0 -6
  320. package/.next/server/chunks/[root-of-the-server]__0g3mnim._.js.map +0 -1
  321. package/.next/server/chunks/[root-of-the-server]__1gon00b._.js +0 -3
  322. package/.next/server/chunks/[root-of-the-server]__1gon00b._.js.map +0 -1
  323. package/.next/server/chunks/[root-of-the-server]__1xj9qqs._.js +0 -3
  324. package/.next/server/chunks/[root-of-the-server]__1xj9qqs._.js.map +0 -1
  325. package/.next/server/chunks/_028m5t0._.js +0 -3
  326. package/.next/server/chunks/_028m5t0._.js.map +0 -1
  327. package/.next/server/chunks/_0eq8a_c._.js +0 -3
  328. package/.next/server/chunks/_0eq8a_c._.js.map +0 -1
  329. package/.next/server/chunks/_0n06usu._.js +0 -3
  330. package/.next/server/chunks/_0n06usu._.js.map +0 -1
  331. package/.next/server/chunks/_0tcchv1._.js +0 -3
  332. package/.next/server/chunks/_0tcchv1._.js.map +0 -1
  333. package/.next/server/chunks/_14120rw._.js +0 -3
  334. package/.next/server/chunks/_14120rw._.js.map +0 -1
  335. package/.next/server/chunks/_1633jn_._.js +0 -3
  336. package/.next/server/chunks/_1633jn_._.js.map +0 -1
  337. package/.next/server/chunks/_19jpf08._.js +0 -3
  338. package/.next/server/chunks/_19jpf08._.js.map +0 -1
  339. package/.next/server/chunks/_1gi5m-_._.js +0 -3
  340. package/.next/server/chunks/_1gi5m-_._.js.map +0 -1
  341. package/.next/server/chunks/_1jgm_7u._.js +0 -3
  342. package/.next/server/chunks/_1jgm_7u._.js.map +0 -1
  343. package/.next/static/chunks/0cbg1vmtl84ae.css +0 -1
  344. package/.next/static/chunks/29p-wdja_cbgh.js +0 -11
  345. /package/.next/static/{wCZkC7ZaYrxG37d-e2tac → TZ8IS4-HWznFu8M4EwNGp}/_buildManifest.js +0 -0
  346. /package/.next/static/{wCZkC7ZaYrxG37d-e2tac → TZ8IS4-HWznFu8M4EwNGp}/_clientMiddlewareManifest.js +0 -0
  347. /package/.next/static/{wCZkC7ZaYrxG37d-e2tac → TZ8IS4-HWznFu8M4EwNGp}/_ssgManifest.js +0 -0
@@ -96,6 +96,6 @@ params: ${t}`),this.query=e,this.params=t,this.cause=i,Error.captureStackTrace(t
96
96
  hash text NOT NULL,
97
97
  created_at numeric
98
98
  )
99
- `;await t.run(r);let a=(await t.values(c.sql`SELECT id, hash, created_at FROM ${c.sql.identifier(n)} ORDER BY created_at DESC LIMIT 1`))[0]??void 0;await t.transaction(async t=>{for(let i of e)if(!a||Number(a[2])<i.folderMillis){for(let e of i.sql)await t.run(c.sql.raw(e));await t.run(c.sql`INSERT INTO ${c.sql.identifier(n)} ("hash", "created_at") VALUES(${i.hash}, ${i.folderMillis})`)}})}}class ej{static [r.entityKind]="TypedQueryBuilder";getSelectedFields(){return this._.selectedFields}}class eU{static [r.entityKind]="QueryPromise";[Symbol.toStringTag]="QueryPromise";catch(e){return this.then(void 0,e)}finally(e){return this.then(t=>(e?.(),t),t=>{throw e?.(),t})}then(e,t){return this.execute().then(e,t)}}class eL{constructor(e,t){this.name=e,this.value=t}static [r.entityKind]="SQLiteCheckBuilder";brand;build(e){return new eZ(e,this)}}class eZ{constructor(e,t){this.table=e,this.name=t.name,this.value=t.value}static [r.entityKind]="SQLiteCheck";name;value}class eq{constructor(e,t){this.name=e,this.unique=t}static [r.entityKind]="SQLiteIndexBuilderOn";on(...e){return new eR(this.name,e,this.unique)}}class eR{static [r.entityKind]="SQLiteIndexBuilder";config;constructor(e,t,i){this.config={name:e,columns:t,unique:i,where:void 0}}where(e){return this.config.where=e,this}build(e){return new eB(this.config,e)}}class eB{static [r.entityKind]="SQLiteIndex";config;constructor(e,t){this.config={...e,table:t}}}function eM(e){return new eq(e,!1)}class eK{static [r.entityKind]="SQLitePrimaryKeyBuilder";columns;name;constructor(e,t){this.columns=e,this.name=t}build(e){return new eF(e,this.columns,this.name)}}class eF{constructor(e,t,i){this.table=e,this.columns=t,this.name=i}static [r.entityKind]="SQLitePrimaryKey";columns;name;getName(){return this.name??`${this.table[eP.Symbol.Name]}_${this.columns.map(e=>e.name).join("_")}_pk`}}function eQ(e){return(0,r.is)(e,eP)?[`${e[s.Table.Symbol.BaseName]}`]:(0,r.is)(e,I.Subquery)?e._.usedTables??[]:(0,r.is)(e,c.SQL)?e.usedTables??[]:[]}class eJ{static [r.entityKind]="SQLiteSelectBuilder";fields;session;dialect;withList;distinct;constructor(e){this.fields=e.fields,this.session=e.session,this.dialect=e.dialect,this.withList=e.withList,this.distinct=e.distinct}from(e){let t,i=!!this.fields;return t=this.fields?this.fields:(0,r.is)(e,I.Subquery)?Object.fromEntries(Object.keys(e._.selectedFields).map(t=>[t,e[t]])):(0,r.is)(e,eA)?e[v.ViewBaseConfig].selectedFields:(0,r.is)(e,c.SQL)?{}:(0,J.getTableColumns)(e),new eW({table:e,fields:t,isPartialSelect:i,session:this.session,dialect:this.dialect,withList:this.withList,distinct:this.distinct})}}class eV extends ej{static [r.entityKind]="SQLiteSelectQueryBuilder";_;config;joinsNotNullableMap;tableName;isPartialSelect;session;dialect;cacheConfig=void 0;usedTables=new Set;constructor({table:e,fields:t,isPartialSelect:i,session:n,dialect:r,withList:a,distinct:s}){for(const o of(super(),this.config={withList:a,table:e,fields:{...t},distinct:s,setOperators:[]},this.isPartialSelect=i,this.session=n,this.dialect=r,this._={selectedFields:t,config:this.config},this.tableName=(0,J.getTableLikeName)(e),this.joinsNotNullableMap="string"==typeof this.tableName?{[this.tableName]:!0}:{},eQ(e)))this.usedTables.add(o)}getUsedTables(){return[...this.usedTables]}createJoin(e){return(t,i)=>{let n=this.tableName,a=(0,J.getTableLikeName)(t);for(let e of eQ(t))this.usedTables.add(e);if("string"==typeof a&&this.config.joins?.some(e=>e.alias===a))throw Error(`Alias "${a}" is already used in this query`);if(!this.isPartialSelect&&(1===Object.keys(this.joinsNotNullableMap).length&&"string"==typeof n&&(this.config.fields={[n]:this.config.fields}),"string"==typeof a&&!(0,r.is)(t,c.SQL))){let e=(0,r.is)(t,I.Subquery)?t._.selectedFields:(0,r.is)(t,c.View)?t[v.ViewBaseConfig].selectedFields:t[s.Table.Symbol.Columns];this.config.fields[a]=e}if("function"==typeof i&&(i=i(new Proxy(this.config.fields,new N({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})))),this.config.joins||(this.config.joins=[]),this.config.joins.push({on:i,table:t,joinType:e,alias:a}),"string"==typeof a)switch(e){case"left":this.joinsNotNullableMap[a]=!1;break;case"right":this.joinsNotNullableMap=Object.fromEntries(Object.entries(this.joinsNotNullableMap).map(([e])=>[e,!1])),this.joinsNotNullableMap[a]=!0;break;case"cross":case"inner":this.joinsNotNullableMap[a]=!0;break;case"full":this.joinsNotNullableMap=Object.fromEntries(Object.entries(this.joinsNotNullableMap).map(([e])=>[e,!1])),this.joinsNotNullableMap[a]=!1}return this}}leftJoin=this.createJoin("left");rightJoin=this.createJoin("right");innerJoin=this.createJoin("inner");fullJoin=this.createJoin("full");crossJoin=this.createJoin("cross");createSetOperator(e,t){return i=>{let n="function"==typeof i?i(eX()):i;if(!(0,J.haveSameKeys)(this.getSelectedFields(),n.getSelectedFields()))throw Error("Set operator error (union / intersect / except): selected fields are not the same or are in a different order");return this.config.setOperators.push({type:e,isAll:t,rightSelect:n}),this}}union=this.createSetOperator("union",!1);unionAll=this.createSetOperator("union",!0);intersect=this.createSetOperator("intersect",!1);except=this.createSetOperator("except",!1);addSetOperators(e){return this.config.setOperators.push(...e),this}where(e){return"function"==typeof e&&(e=e(new Proxy(this.config.fields,new N({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})))),this.config.where=e,this}having(e){return"function"==typeof e&&(e=e(new Proxy(this.config.fields,new N({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})))),this.config.having=e,this}groupBy(...e){if("function"==typeof e[0]){let t=e[0](new Proxy(this.config.fields,new N({sqlAliasedBehavior:"alias",sqlBehavior:"sql"})));this.config.groupBy=Array.isArray(t)?t:[t]}else this.config.groupBy=e;return this}orderBy(...e){if("function"==typeof e[0]){let t=e[0](new Proxy(this.config.fields,new N({sqlAliasedBehavior:"alias",sqlBehavior:"sql"}))),i=Array.isArray(t)?t:[t];this.config.setOperators.length>0?this.config.setOperators.at(-1).orderBy=i:this.config.orderBy=i}else this.config.setOperators.length>0?this.config.setOperators.at(-1).orderBy=e:this.config.orderBy=e;return this}limit(e){return this.config.setOperators.length>0?this.config.setOperators.at(-1).limit=e:this.config.limit=e,this}offset(e){return this.config.setOperators.length>0?this.config.setOperators.at(-1).offset=e:this.config.offset=e,this}getSQL(){return this.dialect.buildSelectQuery(this.config)}toSQL(){let{typings:e,...t}=this.dialect.sqlToQuery(this.getSQL());return t}as(e){let t=[];if(t.push(...eQ(this.config.table)),this.config.joins)for(let e of this.config.joins)t.push(...eQ(e.table));return new Proxy(new I.Subquery(this.getSQL(),this.config.fields,e,!1,[...new Set(t)]),new N({alias:e,sqlAliasedBehavior:"alias",sqlBehavior:"error"}))}getSelectedFields(){return new Proxy(this.config.fields,new N({alias:this.tableName,sqlAliasedBehavior:"alias",sqlBehavior:"error"}))}$dynamic(){return this}}class eW extends eV{static [r.entityKind]="SQLiteSelect";_prepare(e=!0){if(!this.session)throw Error("Cannot execute a query on a query builder. Please use a database instance instead.");let t=(0,J.orderSelectedFields)(this.config.fields),i=this.session[e?"prepareOneTimeQuery":"prepareQuery"](this.dialect.sqlToQuery(this.getSQL()),t,"all",!0,void 0,{type:"select",tables:[...this.usedTables]},this.cacheConfig);return i.joinsNotNullableMap=this.joinsNotNullableMap,i}$withCache(e){return this.cacheConfig=void 0===e?{config:{},enable:!0,autoInvalidate:!0}:!1===e?{enable:!1}:{enable:!0,autoInvalidate:!0,...e},this}prepare(){return this._prepare(!1)}run=e=>this._prepare().run(e);all=e=>this._prepare().all(e);get=e=>this._prepare().get(e);values=e=>this._prepare().values(e);async execute(){return this.all()}}function eG(e,t){return(i,n,...r)=>{let a=[n,...r].map(i=>({type:e,isAll:t,rightSelect:i}));for(let e of a)if(!(0,J.haveSameKeys)(i.getSelectedFields(),e.rightSelect.getSelectedFields()))throw Error("Set operator error (union / intersect / except): selected fields are not the same or are in a different order");return i.addSetOperators(a)}}(0,J.applyMixins)(eW,[eU]);let eX=()=>({union:eY,unionAll:eH,intersect:e0,except:e1}),eY=eG("union",!1),eH=eG("union",!0),e0=eG("intersect",!1),e1=eG("except",!1);class e6{static [r.entityKind]="SQLiteQueryBuilder";dialect;dialectConfig;constructor(e){this.dialect=(0,r.is)(e,eC)?e:void 0,this.dialectConfig=(0,r.is)(e,eC)?void 0:e}$with=(e,t)=>{let i=this;return{as:n=>("function"==typeof n&&(n=n(i)),new Proxy(new I.WithSubquery(n.getSQL(),t??("getSelectedFields"in n?n.getSelectedFields()??{}:{}),e,!0),new N({alias:e,sqlAliasedBehavior:"alias",sqlBehavior:"error"})))}};with(...e){let t=this;return{select:function(i){return new eJ({fields:i??void 0,session:void 0,dialect:t.getDialect(),withList:e})},selectDistinct:function(i){return new eJ({fields:i??void 0,session:void 0,dialect:t.getDialect(),withList:e,distinct:!0})}}}select(e){return new eJ({fields:e??void 0,session:void 0,dialect:this.getDialect()})}selectDistinct(e){return new eJ({fields:e??void 0,session:void 0,dialect:this.getDialect(),distinct:!0})}getDialect(){return this.dialect||(this.dialect=new eD(this.dialectConfig)),this.dialect}}class e4 extends eU{constructor(e,t,i,n){super(),this.table=e,this.session=t,this.dialect=i,this.config={table:e,withList:n}}static [r.entityKind]="SQLiteDelete";config;where(e){return this.config.where=e,this}orderBy(...e){if("function"==typeof e[0]){let t=e[0](new Proxy(this.config.table[s.Table.Symbol.Columns],new N({sqlAliasedBehavior:"alias",sqlBehavior:"sql"}))),i=Array.isArray(t)?t:[t];this.config.orderBy=i}else this.config.orderBy=e;return this}limit(e){return this.config.limit=e,this}returning(e=this.table[eP.Symbol.Columns]){return this.config.returning=(0,J.orderSelectedFields)(e),this}getSQL(){return this.dialect.buildDeleteQuery(this.config)}toSQL(){let{typings:e,...t}=this.dialect.sqlToQuery(this.getSQL());return t}_prepare(e=!0){return this.session[e?"prepareOneTimeQuery":"prepareQuery"](this.dialect.sqlToQuery(this.getSQL()),this.config.returning,this.config.returning?"all":"run",!0,void 0,{type:"delete",tables:eQ(this.config.table)})}prepare(){return this._prepare(!1)}run=e=>this._prepare().run(e);all=e=>this._prepare().all(e);get=e=>this._prepare().get(e);values=e=>this._prepare().values(e);async execute(e){return this._prepare().execute(e)}$dynamic(){return this}}class e2{constructor(e,t,i,n){this.table=e,this.session=t,this.dialect=i,this.withList=n}static [r.entityKind]="SQLiteInsertBuilder";values(e){if(0===(e=Array.isArray(e)?e:[e]).length)throw Error("values() must be called with at least one value");let t=e.map(e=>{let t={},i=this.table[s.Table.Symbol.Columns];for(let n of Object.keys(e)){let a=e[n];t[n]=(0,r.is)(a,c.SQL)?a:new c.Param(a,i[n])}return t});return new e9(this.table,t,this.session,this.dialect,this.withList)}select(e){let t="function"==typeof e?e(new e6):e;if(!(0,r.is)(t,c.SQL)&&!(0,J.haveSameKeys)(this.table[s.Columns],t._.selectedFields))throw Error("Insert select error: selected fields are not the same or are in a different order compared to the table definition");return new e9(this.table,t,this.session,this.dialect,this.withList,!0)}}class e9 extends eU{constructor(e,t,i,n,r,a){super(),this.session=i,this.dialect=n,this.config={table:e,values:t,withList:r,select:a}}static [r.entityKind]="SQLiteInsert";config;returning(e=this.config.table[eP.Symbol.Columns]){return this.config.returning=(0,J.orderSelectedFields)(e),this}onConflictDoNothing(e={}){if(this.config.onConflict||(this.config.onConflict=[]),void 0===e.target)this.config.onConflict.push(c.sql` on conflict do nothing`);else{let t=Array.isArray(e.target)?c.sql`${e.target}`:c.sql`${[e.target]}`,i=e.where?c.sql` where ${e.where}`:c.sql``;this.config.onConflict.push(c.sql` on conflict ${t} do nothing${i}`)}return this}onConflictDoUpdate(e){if(e.where&&(e.targetWhere||e.setWhere))throw Error('You cannot use both "where" and "targetWhere"/"setWhere" at the same time - "where" is deprecated, use "targetWhere" or "setWhere" instead.');this.config.onConflict||(this.config.onConflict=[]);let t=e.where?c.sql` where ${e.where}`:void 0,i=e.targetWhere?c.sql` where ${e.targetWhere}`:void 0,n=e.setWhere?c.sql` where ${e.setWhere}`:void 0,r=Array.isArray(e.target)?c.sql`${e.target}`:c.sql`${[e.target]}`,a=this.dialect.buildUpdateSet(this.config.table,(0,J.mapUpdateSet)(this.config.table,e.set));return this.config.onConflict.push(c.sql` on conflict ${r}${i} do update set ${a}${t}${n}`),this}getSQL(){return this.dialect.buildInsertQuery(this.config)}toSQL(){let{typings:e,...t}=this.dialect.sqlToQuery(this.getSQL());return t}_prepare(e=!0){return this.session[e?"prepareOneTimeQuery":"prepareQuery"](this.dialect.sqlToQuery(this.getSQL()),this.config.returning,this.config.returning?"all":"run",!0,void 0,{type:"insert",tables:eQ(this.config.table)})}prepare(){return this._prepare(!1)}run=e=>this._prepare().run(e);all=e=>this._prepare().all(e);get=e=>this._prepare().get(e);values=e=>this._prepare().values(e);async execute(){return this.config.returning?this.all():this.run()}$dynamic(){return this}}class e5{constructor(e,t,i,n){this.table=e,this.session=t,this.dialect=i,this.withList=n}static [r.entityKind]="SQLiteUpdateBuilder";set(e){return new e3(this.table,(0,J.mapUpdateSet)(this.table,e),this.session,this.dialect,this.withList)}}class e3 extends eU{constructor(e,t,i,n,r){super(),this.session=i,this.dialect=n,this.config={set:t,table:e,withList:r,joins:[]}}static [r.entityKind]="SQLiteUpdate";config;from(e){return this.config.from=e,this}createJoin(e){return(t,i)=>{let n=(0,J.getTableLikeName)(t);if("string"==typeof n&&this.config.joins.some(e=>e.alias===n))throw Error(`Alias "${n}" is already used in this query`);if("function"==typeof i){let e=this.config.from?(0,r.is)(t,eP)?t[s.Table.Symbol.Columns]:(0,r.is)(t,I.Subquery)?t._.selectedFields:(0,r.is)(t,eA)?t[v.ViewBaseConfig].selectedFields:void 0:void 0;i=i(new Proxy(this.config.table[s.Table.Symbol.Columns],new N({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})),e&&new Proxy(e,new N({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})))}return this.config.joins.push({on:i,table:t,joinType:e,alias:n}),this}}leftJoin=this.createJoin("left");rightJoin=this.createJoin("right");innerJoin=this.createJoin("inner");fullJoin=this.createJoin("full");where(e){return this.config.where=e,this}orderBy(...e){if("function"==typeof e[0]){let t=e[0](new Proxy(this.config.table[s.Table.Symbol.Columns],new N({sqlAliasedBehavior:"alias",sqlBehavior:"sql"}))),i=Array.isArray(t)?t:[t];this.config.orderBy=i}else this.config.orderBy=e;return this}limit(e){return this.config.limit=e,this}returning(e=this.config.table[eP.Symbol.Columns]){return this.config.returning=(0,J.orderSelectedFields)(e),this}getSQL(){return this.dialect.buildUpdateQuery(this.config)}toSQL(){let{typings:e,...t}=this.dialect.sqlToQuery(this.getSQL());return t}_prepare(e=!0){return this.session[e?"prepareOneTimeQuery":"prepareQuery"](this.dialect.sqlToQuery(this.getSQL()),this.config.returning,this.config.returning?"all":"run",!0,void 0,{type:"insert",tables:eQ(this.config.table)})}prepare(){return this._prepare(!1)}run=e=>this._prepare().run(e);all=e=>this._prepare().all(e);get=e=>this._prepare().get(e);values=e=>this._prepare().values(e);async execute(){return this.config.returning?this.all():this.run()}$dynamic(){return this}}var e8=c;class e7 extends e8.SQL{constructor(e){super(e7.buildEmbeddedCount(e.source,e.filters).queryChunks),this.params=e,this.session=e.session,this.sql=e7.buildCount(e.source,e.filters)}sql;static [r.entityKind]="SQLiteCountBuilderAsync";[Symbol.toStringTag]="SQLiteCountBuilderAsync";session;static buildEmbeddedCount(e,t){return e8.sql`(select count(*) from ${e}${e8.sql.raw(" where ").if(t)}${t})`}static buildCount(e,t){return e8.sql`select count(*) from ${e}${e8.sql.raw(" where ").if(t)}${t}`}then(e,t){return Promise.resolve(this.session.count(this.sql)).then(e,t)}catch(e){return this.then(void 0,e)}finally(e){return this.then(t=>(e?.(),t),t=>{throw e?.(),t})}}class te{constructor(e,t,i,n,r,a,s,o){this.mode=e,this.fullSchema=t,this.schema=i,this.tableNamesMap=n,this.table=r,this.tableConfig=a,this.dialect=s,this.session=o}static [r.entityKind]="SQLiteAsyncRelationalQueryBuilder";findMany(e){return"sync"===this.mode?new ti(this.fullSchema,this.schema,this.tableNamesMap,this.table,this.tableConfig,this.dialect,this.session,e||{},"many"):new tt(this.fullSchema,this.schema,this.tableNamesMap,this.table,this.tableConfig,this.dialect,this.session,e||{},"many")}findFirst(e){return"sync"===this.mode?new ti(this.fullSchema,this.schema,this.tableNamesMap,this.table,this.tableConfig,this.dialect,this.session,e?{...e,limit:1}:{limit:1},"first"):new tt(this.fullSchema,this.schema,this.tableNamesMap,this.table,this.tableConfig,this.dialect,this.session,e?{...e,limit:1}:{limit:1},"first")}}class tt extends eU{constructor(e,t,i,n,r,a,s,o,l){super(),this.fullSchema=e,this.schema=t,this.tableNamesMap=i,this.table=n,this.tableConfig=r,this.dialect=a,this.session=s,this.config=o,this.mode=l}static [r.entityKind]="SQLiteAsyncRelationalQuery";mode;getSQL(){return this.dialect.buildRelationalQuery({fullSchema:this.fullSchema,schema:this.schema,tableNamesMap:this.tableNamesMap,table:this.table,tableConfig:this.tableConfig,queryConfig:this.config,tableAlias:this.tableConfig.tsName}).sql}_prepare(e=!1){let{query:t,builtQuery:i}=this._toSQL();return this.session[e?"prepareOneTimeQuery":"prepareQuery"](i,void 0,"first"===this.mode?"get":"all",!0,(e,i)=>{let n=e.map(e=>(function e(t,i,n,a,s=e=>e){let l={};for(let[u,d]of a.entries())if(d.isJson){let a=i.relations[d.tsKey],o=n[u],c="string"==typeof o?JSON.parse(o):o;l[d.tsKey]=(0,r.is)(a,h)?c&&e(t,t[d.relationTableTsKey],c,d.selection,s):c.map(i=>e(t,t[d.relationTableTsKey],i,d.selection,s))}else{let e,t=s(n[u]),i=d.field;e=(0,r.is)(i,o.Column)?i:(0,r.is)(i,c.SQL)?i.decoder:i.sql.decoder,l[d.tsKey]=null===t?null:e.mapFromDriverValue(t)}return l})(this.schema,this.tableConfig,e,t.selection,i));return"first"===this.mode?n[0]:n})}prepare(){return this._prepare(!1)}_toSQL(){let e=this.dialect.buildRelationalQuery({fullSchema:this.fullSchema,schema:this.schema,tableNamesMap:this.tableNamesMap,table:this.table,tableConfig:this.tableConfig,queryConfig:this.config,tableAlias:this.tableConfig.tsName}),t=this.dialect.sqlToQuery(e.sql);return{query:e,builtQuery:t}}toSQL(){return this._toSQL().builtQuery}executeRaw(){return"first"===this.mode?this._prepare(!1).get():this._prepare(!1).all()}async execute(){return this.executeRaw()}}class ti extends tt{static [r.entityKind]="SQLiteSyncRelationalQuery";sync(){return this.executeRaw()}}class tn extends eU{constructor(e,t,i,n,r){super(),this.execute=e,this.getSQL=t,this.dialect=n,this.mapBatchResult=r,this.config={action:i}}static [r.entityKind]="SQLiteRaw";config;getQuery(){return{...this.dialect.sqlToQuery(this.getSQL()),method:this.config.action}}mapResult(e,t){return t?this.mapBatchResult(e):e}_prepare(){return this}isResponseInArrayMode(){return!1}}class tr{constructor(e,t,i,n){this.resultKind=e,this.dialect=t,this.session=i,this._=n?{schema:n.schema,fullSchema:n.fullSchema,tableNamesMap:n.tableNamesMap}:{schema:void 0,fullSchema:{},tableNamesMap:{}},this.query={};const r=this.query;if(this._.schema)for(const[a,s]of Object.entries(this._.schema))r[a]=new te(e,n.fullSchema,this._.schema,this._.tableNamesMap,n.fullSchema[a],s,t,i);this.$cache={invalidate:async e=>{}}}static [r.entityKind]="BaseSQLiteDatabase";query;$with=(e,t)=>{let i=this;return{as:n=>("function"==typeof n&&(n=n(new e6(i.dialect))),new Proxy(new I.WithSubquery(n.getSQL(),t??("getSelectedFields"in n?n.getSelectedFields()??{}:{}),e,!0),new N({alias:e,sqlAliasedBehavior:"alias",sqlBehavior:"error"})))}};$count(e,t){return new e7({source:e,filters:t,session:this.session})}with(...e){let t=this;return{select:function(i){return new eJ({fields:i??void 0,session:t.session,dialect:t.dialect,withList:e})},selectDistinct:function(i){return new eJ({fields:i??void 0,session:t.session,dialect:t.dialect,withList:e,distinct:!0})},update:function(i){return new e5(i,t.session,t.dialect,e)},insert:function(i){return new e2(i,t.session,t.dialect,e)},delete:function(i){return new e4(i,t.session,t.dialect,e)}}}select(e){return new eJ({fields:e??void 0,session:this.session,dialect:this.dialect})}selectDistinct(e){return new eJ({fields:e??void 0,session:this.session,dialect:this.dialect,distinct:!0})}update(e){return new e5(e,this.session,this.dialect)}$cache;insert(e){return new e2(e,this.session,this.dialect)}delete(e){return new e4(e,this.session,this.dialect)}run(e){let t="string"==typeof e?c.sql.raw(e):e.getSQL();return"async"===this.resultKind?new tn(async()=>this.session.run(t),()=>t,"run",this.dialect,this.session.extractRawRunValueFromBatchResult.bind(this.session)):this.session.run(t)}all(e){let t="string"==typeof e?c.sql.raw(e):e.getSQL();return"async"===this.resultKind?new tn(async()=>this.session.all(t),()=>t,"all",this.dialect,this.session.extractRawAllValueFromBatchResult.bind(this.session)):this.session.all(t)}get(e){let t="string"==typeof e?c.sql.raw(e):e.getSQL();return"async"===this.resultKind?new tn(async()=>this.session.get(t),()=>t,"get",this.dialect,this.session.extractRawGetValueFromBatchResult.bind(this.session)):this.session.get(t)}values(e){let t="string"==typeof e?c.sql.raw(e):e.getSQL();return"async"===this.resultKind?new tn(async()=>this.session.values(t),()=>t,"values",this.dialect,this.session.extractRawValuesValueFromBatchResult.bind(this.session)):this.session.values(t)}transaction(e,t){return this.session.transaction(e,t)}}class ta{static [r.entityKind]="Cache"}class ts extends ta{strategy(){return"all"}static [r.entityKind]="NoopCache";async get(e){}async put(e,t,i,n){}async onMutate(e){}}async function to(e,t){let i=`${e}-${JSON.stringify(t)}`,n=new TextEncoder().encode(i);return[...new Uint8Array(await crypto.subtle.digest("SHA-256",n))].map(e=>e.toString(16).padStart(2,"0")).join("")}class tl extends eU{constructor(e){super(),this.resultCb=e}static [r.entityKind]="ExecuteResultSync";async execute(){return this.resultCb()}sync(){return this.resultCb()}}class tu{constructor(e,t,i,n,r,a){this.mode=e,this.executeMethod=t,this.query=i,this.cache=n,this.queryMetadata=r,this.cacheConfig=a,n&&"all"===n.strategy()&&void 0===a&&(this.cacheConfig={enable:!0,autoInvalidate:!0}),this.cacheConfig?.enable||(this.cacheConfig=void 0)}static [r.entityKind]="PreparedQuery";joinsNotNullableMap;async queryWithCache(e,t,i){if(void 0===this.cache||(0,r.is)(this.cache,ts)||void 0===this.queryMetadata||this.cacheConfig&&!this.cacheConfig.enable)try{return await i()}catch(i){throw new C(e,t,i)}if(("insert"===this.queryMetadata.type||"update"===this.queryMetadata.type||"delete"===this.queryMetadata.type)&&this.queryMetadata.tables.length>0)try{let[e]=await Promise.all([i(),this.cache.onMutate({tables:this.queryMetadata.tables})]);return e}catch(i){throw new C(e,t,i)}if(!this.cacheConfig)try{return await i()}catch(i){throw new C(e,t,i)}if("select"===this.queryMetadata.type){let n=await this.cache.get(this.cacheConfig.tag??await to(e,t),this.queryMetadata.tables,void 0!==this.cacheConfig.tag,this.cacheConfig.autoInvalidate);if(void 0===n){let n;try{n=await i()}catch(i){throw new C(e,t,i)}return await this.cache.put(this.cacheConfig.tag??await to(e,t),n,this.cacheConfig.autoInvalidate?this.queryMetadata.tables:[],void 0!==this.cacheConfig.tag,this.cacheConfig.config),n}return n}try{return await i()}catch(i){throw new C(e,t,i)}}getQuery(){return this.query}mapRunResult(e,t){return e}mapAllResult(e,t){throw Error("Not implemented")}mapGetResult(e,t){throw Error("Not implemented")}execute(e){return"async"===this.mode?this[this.executeMethod](e):new tl(()=>this[this.executeMethod](e))}mapResult(e,t){switch(this.executeMethod){case"run":return this.mapRunResult(e,t);case"all":return this.mapAllResult(e,t);case"get":return this.mapGetResult(e,t)}}}class tc{constructor(e){this.dialect=e}static [r.entityKind]="SQLiteSession";prepareOneTimeQuery(e,t,i,n,r,a,s){return this.prepareQuery(e,t,i,n,r,a,s)}run(e){let t=this.dialect.sqlToQuery(e);try{return this.prepareOneTimeQuery(t,void 0,"run",!1).run()}catch(e){throw new A({cause:e,message:`Failed to run the query '${t.sql}'`})}}extractRawRunValueFromBatchResult(e){return e}all(e){return this.prepareOneTimeQuery(this.dialect.sqlToQuery(e),void 0,"run",!1).all()}extractRawAllValueFromBatchResult(e){throw Error("Not implemented")}get(e){return this.prepareOneTimeQuery(this.dialect.sqlToQuery(e),void 0,"run",!1).get()}extractRawGetValueFromBatchResult(e){throw Error("Not implemented")}values(e){return this.prepareOneTimeQuery(this.dialect.sqlToQuery(e),void 0,"run",!1).values()}async count(e){return(await this.values(e))[0][0]}extractRawValuesValueFromBatchResult(e){throw Error("Not implemented")}}class td extends tr{constructor(e,t,i,n,r=0){super(e,t,i,n),this.schema=n,this.nestedIndex=r}static [r.entityKind]="SQLiteTransaction";rollback(){throw new D}}class tf extends tc{constructor(e,t,i,n={}){super(t),this.client=e,this.schema=i,this.logger=n.logger??new a.NoopLogger,this.cache=n.cache??new ts}static [r.entityKind]="BetterSQLiteSession";logger;cache;prepareQuery(e,t,i,n,r,a,s){return new tp(this.client.prepare(e.sql),e,this.logger,this.cache,a,s,t,i,n,r)}transaction(e,t={}){let i=new tm("sync",this.dialect,this,this.schema);return this.client.transaction(e)[t.behavior??"deferred"](i)}}class tm extends td{static [r.entityKind]="BetterSQLiteTransaction";transaction(e){let t=`sp${this.nestedIndex}`,i=new tm("sync",this.dialect,this.session,this.schema,this.nestedIndex+1);this.session.run(c.sql.raw(`savepoint ${t}`));try{let n=e(i);return this.session.run(c.sql.raw(`release savepoint ${t}`)),n}catch(e){throw this.session.run(c.sql.raw(`rollback to savepoint ${t}`)),e}}}class tp extends tu{constructor(e,t,i,n,r,a,s,o,l,u){super("sync",o,t,n,r,a),this.stmt=e,this.logger=i,this.fields=s,this._isResponseInArrayMode=l,this.customResultMapper=u}static [r.entityKind]="BetterSQLitePreparedQuery";run(e){let t=(0,c.fillPlaceholders)(this.query.params,e??{});return this.logger.logQuery(this.query.sql,t),this.stmt.run(...t)}all(e){let{fields:t,joinsNotNullableMap:i,query:n,logger:r,stmt:a,customResultMapper:s}=this;if(!t&&!s){let t=(0,c.fillPlaceholders)(n.params,e??{});return r.logQuery(n.sql,t),a.all(...t)}let o=this.values(e);return s?s(o):o.map(e=>(0,J.mapResultRow)(t,e,i))}get(e){let t=(0,c.fillPlaceholders)(this.query.params,e??{});this.logger.logQuery(this.query.sql,t);let{fields:i,stmt:n,joinsNotNullableMap:r,customResultMapper:a}=this;if(!i&&!a)return n.get(...t);let s=n.raw().get(...t);if(s)return a?a([s]):(0,J.mapResultRow)(i,s,r)}values(e){let t=(0,c.fillPlaceholders)(this.query.params,e??{});return this.logger.logQuery(this.query.sql,t),this.stmt.raw().all(...t)}isResponseInArrayMode(){return this._isResponseInArrayMode}}class th extends tr{static [r.entityKind]="BetterSQLite3Database"}function tg(e,t={}){let i,n,o=new eD({casing:t.casing});if(!0===t.logger?i=new a.DefaultLogger:!1!==t.logger&&(i=t.logger),t.schema){let e=function(e,t){1===Object.keys(e).length&&"default"in e&&!(0,r.is)(e.default,s.Table)&&(e=e.default);let i={},n={},a={};for(let[o,u]of Object.entries(e))if((0,r.is)(u,s.Table)){let e=(0,s.getTableUniqueName)(u),t=n[e];for(let n of(i[e]=o,a[o]={tsName:o,dbName:u[s.Table.Symbol.Name],schema:u[s.Table.Symbol.Schema],columns:u[s.Table.Symbol.Columns],relations:t?.relations??{},primaryKey:t?.primaryKey??[]},Object.values(u[s.Table.Symbol.Columns])))n.primary&&a[o].primaryKey.push(n);let c=u[s.Table.Symbol.ExtraConfigBuilder]?.(u[s.Table.Symbol.ExtraConfigColumns]);if(c)for(let e of Object.values(c))(0,r.is)(e,l.PrimaryKeyBuilder)&&a[o].primaryKey.push(...e.columns)}else if((0,r.is)(u,p)){let e,r=(0,s.getTableUniqueName)(u.table),o=i[r];for(let[i,s]of Object.entries(u.config(t(u.table))))if(o){let t=a[o];t.relations[i]=s,e&&t.primaryKey.push(...e)}else r in n||(n[r]={relations:{},primaryKey:e}),n[r].relations[i]=s}return{tables:a,tableNamesMap:i}}(t.schema,y);n={fullSchema:t.schema,schema:e.tables,tableNamesMap:e.tableNamesMap}}let u=new tf(e,o,n,{logger:i}),c=new th("sync",o,u,n);return c.$client=e,c}function ty(...e){if(void 0===e[0]||"string"==typeof e[0])return tg(void 0===e[0]?new n.default:new n.default(e[0]),e[1]);if((0,J.isConfig)(e[0])){let{connection:t,client:i,...r}=e[0];if(i)return tg(i,r);if("object"==typeof t){let{source:e,...i}=t;return tg(new n.default(e,i),r)}return tg(new n.default(t),r)}return tg(e[0],e[1])}(ty||(ty={})).mock=function(e){return tg({},e)};var tv=e.i(902157),tb=e.i(750227);let tx=c.sql`CURRENT_TIMESTAMP`,t$=eT("users",{id:eN("id").primaryKey(),username:eN("username").notNull().unique(),passwordHash:eN("password_hash").notNull(),role:eN("role",{enum:["admin","user"]}).notNull().default("user"),createdAt:eN("created_at").notNull().default(tx)}),t_=eT("sessions",{id:eN("id").primaryKey(),userId:eN("user_id").notNull().references(()=>t$.id,{onDelete:"cascade"}),expiresAt:ef("expires_at",{mode:"timestamp"}).notNull(),createdAt:eN("created_at").notNull().default(tx)},e=>[eM("sessions_user_idx").on(e.userId)]),tS=eT("api_keys",{id:eN("id").primaryKey(),userId:eN("user_id").notNull().references(()=>t$.id,{onDelete:"cascade"}),name:eN("name").notNull(),prefix:eN("prefix").notNull(),keyHash:eN("key_hash").notNull().unique(),lastUsedAt:eN("last_used_at"),createdAt:eN("created_at").notNull().default(tx)},e=>[eM("api_keys_user_idx").on(e.userId)]),tw=eT("providers",{id:eN("id").primaryKey(),name:eN("name").notNull().unique(),adapterId:eN("adapter_id").notNull().default("openai"),baseUrl:eN("base_url").notNull(),apiVersion:eN("api_version"),apiKeyEncrypted:eN("api_key_encrypted"),defaultParams:eN("default_params",{mode:"json"}).$type().default({}),httpProxy:eN("http_proxy",{mode:"json"}).$type(),documentPage:eN("document_page"),modelPage:eN("model_page"),healthCheckUrl:eN("health_check_url"),lastHealthStatus:eN("last_health_status",{enum:["ok","down"]}),lastHealthCheckedAt:eN("last_health_checked_at"),lastHealthError:eN("last_health_error"),isLocal:ef("is_local",{mode:"boolean"}).notNull().default(!1),enabled:ef("enabled",{mode:"boolean"}).notNull().default(!0),createdAt:eN("created_at").notNull().default(tx),updatedAt:eN("updated_at").notNull().default(tx)}),tk=eT("models",{id:eN("id").primaryKey(),name:eN("name").notNull().unique(),providerId:eN("provider_id").notNull().references(()=>tw.id,{onDelete:"cascade"}),upstreamModelId:eN("upstream_model_id").notNull(),type:eN("type").notNull().default("chat"),defaultParams:eN("default_params",{mode:"json"}).$type().default({}),contextWindow:ef("context_window"),maxTokens:ef("max_tokens"),outputDimension:ef("output_dimension"),pricing:eN("pricing",{mode:"json"}).$type(),description:eN("description"),knowledgeDate:eN("knowledge_date"),timeout:ef("timeout").notNull().default(60),maxRetries:ef("max_retries").notNull().default(2),httpProxy:eN("http_proxy",{mode:"json"}).$type(),enabled:ef("enabled",{mode:"boolean"}).notNull().default(!0),apiVariantId:eN("api_variant_id"),discoveredMetadata:eN("discovered_metadata",{mode:"json"}).$type(),createdAt:eN("created_at").notNull().default(tx),updatedAt:eN("updated_at").notNull().default(tx)},e=>[eM("models_provider_idx").on(e.providerId),eM("models_type_idx").on(e.type)]),tI=eT("conversations",{id:eN("id").primaryKey(),userId:eN("user_id").notNull().references(()=>t$.id,{onDelete:"cascade"}),title:eN("title").notNull().default("New Chat"),config:eN("config",{mode:"json"}).$type().default({}),groupId:eN("group_id"),isDeleted:ef("is_deleted",{mode:"boolean"}).notNull().default(!1),createdAt:eN("created_at").notNull().default(tx),updatedAt:eN("updated_at").notNull().default(tx)},e=>[eM("conversations_user_idx").on(e.userId),eM("conversations_updated_idx").on(e.updatedAt),eM("conversations_user_active_updated_idx").on(e.userId,e.isDeleted,e.updatedAt)]),tN=eT("messages",{id:eN("id").primaryKey(),conversationId:eN("conversation_id").notNull().references(()=>tI.id,{onDelete:"cascade"}),role:eN("role",{enum:["user","assistant","system","tool"]}).notNull(),content:eN("content",{mode:"json"}).$type().notNull(),reasoningContent:eN("reasoning_content"),modelId:eN("model_id"),generationId:eN("generation_id"),parentId:eN("parent_id"),isActive:ef("is_active",{mode:"boolean"}).notNull().default(!0),rating:eN("rating",{enum:["up","down"]}),feedback:eN("feedback"),error:eN("error"),createdAt:eN("created_at").notNull().default(tx)},e=>[eM("messages_conv_idx").on(e.conversationId),eM("messages_parent_idx").on(e.parentId),eM("messages_conv_active_created_idx").on(e.conversationId,e.isActive,e.createdAt)]),tO=eT("generation_logs",{id:eN("id").primaryKey(),userId:eN("user_id").notNull().references(()=>t$.id,{onDelete:"cascade"}),modelName:eN("model_name").notNull(),capability:eN("capability"),status:eN("status",{enum:["pending","completed","failed"]}).notNull().default("pending"),input:eN("input",{mode:"json"}).$type(),inputSummary:eN("input_summary"),output:eN("output"),reason:eN("reason"),generationKwargs:eN("generation_kwargs",{mode:"json"}).$type().default({}),generation:eN("generation",{mode:"json"}).$type(),conversationId:eN("conversation_id"),messageId:eN("message_id"),promptTokens:ef("prompt_tokens"),completionTokens:ef("completion_tokens"),totalTokens:ef("total_tokens"),firstTokenLatencyMs:ef("first_token_latency_ms"),totalLatencyMs:ef("total_latency_ms"),isDeleted:ef("is_deleted",{mode:"boolean"}).notNull().default(!1),createdAt:eN("created_at").notNull().default(tx),updatedAt:eN("updated_at").notNull().default(tx)},e=>[eM("gen_logs_user_idx").on(e.userId),eM("gen_logs_model_idx").on(e.modelName),eM("gen_logs_status_idx").on(e.status),eM("gen_logs_capability_idx").on(e.capability),eM("gen_logs_created_idx").on(e.createdAt),eM("gen_logs_user_deleted_created_idx").on(e.userId,e.isDeleted,e.createdAt),eM("gen_logs_cap_deleted_created_idx").on(e.capability,e.isDeleted,e.createdAt),eM("gen_logs_status_deleted_created_idx").on(e.status,e.isDeleted,e.createdAt)]),tP=eT("user_preferences",{userId:eN("user_id").primaryKey().references(()=>t$.id,{onDelete:"cascade"}),preferences:eN("preferences",{mode:"json"}).$type().notNull().default({}),updatedAt:eN("updated_at").notNull().default(tx)}),tT=eT("tools",{id:eN("id").primaryKey(),name:eN("name").notNull().unique(),description:eN("description").notNull().default(""),parameters:eN("parameters",{mode:"json"}).$type().notNull().default({}),webhookUrl:eN("webhook_url"),enabled:ef("enabled",{mode:"boolean"}).notNull().default(!0),createdAt:eN("created_at").notNull().default(tx),updatedAt:eN("updated_at").notNull().default(tx)}),tE=eT("mcp_servers",{id:eN("id").primaryKey(),name:eN("name").notNull().unique(),description:eN("description").notNull().default(""),transport:eN("transport",{enum:["stdio","http"]}).notNull(),config:eN("config",{mode:"json"}).$type().notNull().default({}),enabled:ef("enabled",{mode:"boolean"}).notNull().default(!0),lastCheckStatus:eN("last_check_status",{enum:["ok","error"]}),lastCheckAt:eN("last_check_at"),lastCheckError:eN("last_check_error"),toolsCache:eN("tools_cache",{mode:"json"}).$type(),resourcesCache:eN("resources_cache",{mode:"json"}).$type(),promptsCache:eN("prompts_cache",{mode:"json"}).$type(),serverInfo:eN("server_info",{mode:"json"}).$type(),createdAt:eN("created_at").notNull().default(tx),updatedAt:eN("updated_at").notNull().default(tx)});e.s(["apiKeys",0,tS,"conversations",0,tI,"generationLogs",0,tO,"mcpServers",0,tE,"messages",0,tN,"models",0,tk,"providers",0,tw,"sessions",0,t_,"tools",0,tT,"userPreferences",0,tP,"users",0,t$],401632);var tA=e.i(401632);let tC=process.env.LOOM_USER_CWD||process.cwd(),tD=process.env.LOOM_DB_PATH||(0,tb.resolve)(tC,"data","loom.db"),tz=globalThis.__loom_db__??function(){let e=(0,tb.dirname)(tD);(0,tv.existsSync)(e)||(0,tv.mkdirSync)(e,{recursive:!0});let t=new n.default(tD);t.pragma("journal_mode = WAL"),t.pragma("synchronous = NORMAL"),t.pragma("busy_timeout = 5000"),t.pragma("cache_size = -64000"),t.pragma("temp_store = MEMORY"),t.pragma("foreign_keys = ON");let r=ty(t,{schema:tA}),a=process.env.LOOM_PACKAGE_ROOT||process.cwd(),s=(0,tb.resolve)(a,"drizzle");if((0,tv.existsSync)(s))try{var o;let e;o={migrationsFolder:s},e=function(e){let t=e.migrationsFolder,n=[],r=`${t}/meta/_journal.json`;if(!tv.default.existsSync(r))throw Error("Can't find meta/_journal.json file");for(let e of JSON.parse(tv.default.readFileSync(`${t}/meta/_journal.json`).toString()).entries){let r=`${t}/${e.tag}.sql`;try{let r=tv.default.readFileSync(`${t}/${e.tag}.sql`).toString(),a=r.split("--> statement-breakpoint").map(e=>e);n.push({sql:a,bps:e.breakpoints,folderMillis:e.when,hash:i.default.createHash("sha256").update(r).digest("hex")})}catch{throw Error(`No file ${r} found in ${t} folder`)}}return n}(o),r.dialect.migrate(e,r.session,o)}catch(e){throw console.error("[loom] Failed to run migrations:",e),e}return r}();e.s(["db",0,tz],846344);var tj=e.i(493458);let tU="aes-256-gcm",tL=null;function tZ(){if(tL)return tL;let e=process.env.LOOM_MASTER_KEY;if(!e)throw Error("LOOM_MASTER_KEY environment variable is required to encrypt/decrypt provider API keys.");return tL=(0,i.createHash)("sha256").update(e).digest()}function tq(e){if(!e)return null;let t=tZ(),n=(0,i.randomBytes)(12),r=(0,i.createCipheriv)(tU,t,n),a=Buffer.concat([r.update(e,"utf8"),r.final()]),s=r.getAuthTag();return Buffer.concat([n,s,a]).toString("base64")}function tR(e){return(0,i.createHash)("sha256").update(e).digest("hex")}function tB(e=32){return(0,i.randomBytes)(e).toString("base64url")}e.s(["decryptSecret",0,function(e){if(!e)return null;let t=tZ(),n=Buffer.from(e,"base64");if(n.length<28)throw Error("Encrypted payload too short");let r=n.subarray(0,12),a=n.subarray(12,28),s=n.subarray(28),o=(0,i.createDecipheriv)(tU,t,r);return o.setAuthTag(a),Buffer.concat([o.update(s),o.final()]).toString("utf8")},"encryptSecret",0,tq,"generateRandomToken",0,tB,"sha256",0,tR],425568);var tM=e.i(89171);function tK(e,t){return tM.NextResponse.json({code:0,msg:"ok",data:e},t)}function tF(e,t=400,i=-1,n){return tM.NextResponse.json({code:i,msg:e,data:null},{...n,status:t})}class tQ extends Error{status;code;constructor(e,t=400,i=-1){super(e),this.status=t,this.code=i,this.name="HttpError"}}function tJ(e){return new tQ(e,400,-1)}function tV(e="Unauthorized"){return new tQ(e,401,-1)}function tW(e="Forbidden"){return new tQ(e,403,-1)}function tG(e){if(e instanceof tQ)return tF(e.message,e.status,e.code);let t=e instanceof Error?e.message:"Internal server error";return console.error("[loom] unhandled error:",e),tF(t,500,-1)}function tX(e){return{id:e.id,username:e.username,role:e.role,createdAt:e.createdAt}}e.s(["HttpError",0,tQ,"badRequest",0,tJ,"fail",0,tF,"forbidden",0,tW,"handle",0,tG,"notFound",0,function(e="Not found"){return new tQ(e,404,-1)},"ok",0,tK,"unauthorized",0,tV],803028);let tY="loom_session";function tH(){let e=Number(process.env.LOOM_SESSION_TTL_DAYS);return Number.isFinite(e)&&e>0?86400*e*1e3:2592e6}async function t0(e){let t=tB(32),i=tR(t),n=new Date(Date.now()+tH());return tz.insert(t_).values({id:i,userId:e,expiresAt:n}).run(),t}async function t1(e){(await (0,tj.cookies)()).set(tY,e,{httpOnly:!0,sameSite:"lax",secure:!0,path:"/",maxAge:Math.floor(tH()/1e3)})}async function t6(){(await (0,tj.cookies)()).delete(tY)}async function t4(e){if(!e)return;let t=tR(e);tz.delete(t_).where((0,u.eq)(t_.id,t)).run()}async function t2(){let e=await (0,tj.cookies)();return e.get(tY)?.value??null}async function t9(){let e=await t2();if(!e)return null;let t=tR(e),i=tz.select({user:t$,session:t_}).from(t_).innerJoin(t$,(0,u.eq)(t$.id,t_.userId)).where((0,u.eq)(t_.id,t)).get();return i?i.session.expiresAt.getTime()<Date.now()?(tz.delete(t_).where((0,u.lt)(t_.expiresAt,new Date)).run(),null):tX(i.user):null}async function t5(){let e=await t9();if(!e)throw tV();return e}async function t3(){let e=await t5();if("admin"!==e.role)throw tW("Admin required");return e}async function t8(e){let t=(e.headers.get("Authorization")||"").match(/^Bearer\s+(.+)$/i);if(!t)throw tV("Missing Bearer token");let i=tR(t[1].trim()),n=tz.select({user:t$,apiKey:tS}).from(tS).innerJoin(t$,(0,u.eq)(t$.id,tS.userId)).where((0,u.eq)(tS.keyHash,i)).get();if(!n)throw tV("Invalid API key");return function(e,t){if(t){let e=Date.parse(t.endsWith("Z")||t7.test(t)?t:t+"Z");if(Number.isFinite(e)&&Date.now()-e<6e4)return}tz.update(tS).set({lastUsedAt:new Date().toISOString()}).where((0,u.eq)(tS.id,e)).run()}(n.apiKey.id,n.apiKey.lastUsedAt),tX(n.user)}e.s(["SESSION_COOKIE",0,tY,"clearSessionCookie",0,t6,"createSession",0,t0,"destroySession",0,t4,"getCurrentUser",0,t9,"requireAdmin",0,t3,"requireUser",0,t5,"setSessionCookie",0,t1],313795);let t7=/[+-]\d\d:?\d\d$/;async function ie(e){let t=e.headers.get("Authorization");if(t&&/^Bearer\s+/i.test(t))return t8(e);let i=await t9();if(i)return i;throw tV("Missing or invalid credentials")}e.s(["authenticateBearer",0,t8,"generateApiKey",0,function(){let e=tB(32),t=`sk-loom-${e}`;return{plain:t,prefix:t.slice(0,12),hash:tR(t)}}],559747),e.s(["authenticateGateway",0,ie],299207);var it=e.i(254799);function ii(e,t){if("number"!=typeof(e=e||ic))throw Error("Illegal arguments: "+typeof e+", "+typeof t);e<4?e=4:e>31&&(e=31);var i=[];return i.push("$2b$"),e<10&&i.push("0"),i.push(e.toString()),i.push("$"),i.push(il(function(e){try{return crypto.getRandomValues(new Uint8Array(e))}catch{}try{return it.default.randomBytes(e)}catch{}!0;throw Error("Neither WebCryptoAPI nor a crypto module is available. Use bcrypt.setRandomFallback to set an alternative")}(iu),iu)),i.join("")}function ir(e,t,i,n){function r(i){"string"==typeof e&&"number"==typeof t?function(e,t,i){if("function"==typeof t&&(i=t,t=void 0),"function"==typeof e&&(i=e,e=void 0),void 0===e)e=ic;else if("number"!=typeof e)throw Error("illegal arguments: "+typeof e);function n(t){ia(function(){try{t(null,ii(e))}catch(e){t(e)}})}if(!i)return new Promise(function(e,t){n(function(i,n){i?t(i):e(n)})});if("function"!=typeof i)throw Error("Illegal callback: "+typeof i);n(i)}(t,function(t,r){ib(e,r,i,n)}):"string"==typeof e&&"string"==typeof t?ib(e,t,i,n):ia(i.bind(this,Error("Illegal arguments: "+typeof e+", "+typeof t)))}if(!i)return new Promise(function(e,t){r(function(i,n){i?t(i):e(n)})});if("function"!=typeof i)throw Error("Illegal callback: "+typeof i);r(i)}var ia="function"==typeof setImmediate?setImmediate:"object"==typeof scheduler&&"function"==typeof scheduler.postTask?scheduler.postTask.bind(scheduler):setTimeout,is="./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),io=[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,54,55,56,57,58,59,60,61,62,63,-1,-1,-1,-1,-1,-1,-1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,-1,-1,-1,-1,-1,-1,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,-1,-1,-1,-1,-1];function il(e,t){var i,n,r=0,a=[];if(t<=0||t>e.length)throw Error("Illegal len: "+t);for(;r<t;){if(i=255&e[r++],a.push(is[i>>2&63]),i=(3&i)<<4,r>=t||(i|=(n=255&e[r++])>>4&15,a.push(is[63&i]),i=(15&n)<<2,r>=t)){a.push(is[63&i]);break}i|=(n=255&e[r++])>>6&3,a.push(is[63&i]),a.push(is[63&n])}return a.join("")}var iu=16,ic=10,id=[0x243f6a88,0x85a308d3,0x13198a2e,0x3707344,0xa4093822,0x299f31d0,0x82efa98,0xec4e6c89,0x452821e6,0x38d01377,0xbe5466cf,0x34e90c6c,0xc0ac29b7,0xc97c50dd,0x3f84d5b5,0xb5470917,0x9216d5d9,0x8979fb1b],im=[0xd1310ba6,0x98dfb5ac,0x2ffd72db,0xd01adfb7,0xb8e1afed,0x6a267e96,0xba7c9045,0xf12c7f99,0x24a19947,0xb3916cf7,0x801f2e2,0x858efc16,0x636920d8,0x71574e69,0xa458fea3,0xf4933d7e,0xd95748f,0x728eb658,0x718bcd58,0x82154aee,0x7b54a41d,0xc25a59b5,0x9c30d539,0x2af26013,0xc5d1b023,0x286085f0,0xca417918,0xb8db38ef,0x8e79dcb0,0x603a180e,0x6c9e0e8b,0xb01e8a3e,0xd71577c1,0xbd314b27,0x78af2fda,0x55605c60,0xe65525f3,0xaa55ab94,0x57489862,0x63e81440,0x55ca396a,0x2aab10b6,0xb4cc5c34,0x1141e8ce,0xa15486af,0x7c72e993,0xb3ee1411,0x636fbc2a,0x2ba9c55d,0x741831f6,0xce5c3e16,0x9b87931e,0xafd6ba33,0x6c24cf5c,0x7a325381,0x28958677,0x3b8f4898,0x6b4bb9af,0xc4bfe81b,0x66282193,0x61d809cc,0xfb21a991,0x487cac60,0x5dec8032,0xef845d5d,0xe98575b1,0xdc262302,0xeb651b88,0x23893e81,0xd396acc5,0xf6d6ff3,0x83f44239,0x2e0b4482,0xa4842004,0x69c8f04a,0x9e1f9b5e,0x21c66842,0xf6e96c9a,0x670c9c61,0xabd388f0,0x6a51a0d2,0xd8542f68,0x960fa728,0xab5133a3,0x6eef0b6c,0x137a3be4,0xba3bf050,0x7efb2a98,0xa1f1651d,0x39af0176,0x66ca593e,0x82430e88,0x8cee8619,0x456f9fb4,0x7d84a5c3,0x3b8b5ebe,0xe06f75d8,0x85c12073,0x401a449f,0x56c16aa6,0x4ed3aa62,0x363f7706,0x1bfedf72,0x429b023d,0x37d0d724,0xd00a1248,0xdb0fead3,0x49f1c09b,0x75372c9,0x80991b7b,0x25d479d8,0xf6e8def7,0xe3fe501a,0xb6794c3b,0x976ce0bd,0x4c006ba,0xc1a94fb6,0x409f60c4,0x5e5c9ec2,0x196a2463,0x68fb6faf,0x3e6c53b5,0x1339b2eb,0x3b52ec6f,0x6dfc511f,0x9b30952c,0xcc814544,0xaf5ebd09,0xbee3d004,0xde334afd,0x660f2807,0x192e4bb3,0xc0cba857,0x45c8740f,0xd20b5f39,0xb9d3fbdb,0x5579c0bd,0x1a60320a,0xd6a100c6,0x402c7279,0x679f25fe,0xfb1fa3cc,0x8ea5e9f8,0xdb3222f8,0x3c7516df,0xfd616b15,0x2f501ec8,0xad0552ab,0x323db5fa,0xfd238760,0x53317b48,0x3e00df82,0x9e5c57bb,0xca6f8ca0,0x1a87562e,0xdf1769db,0xd542a8f6,0x287effc3,0xac6732c6,0x8c4f5573,0x695b27b0,0xbbca58c8,0xe1ffa35d,0xb8f011a0,0x10fa3d98,0xfd2183b8,0x4afcb56c,0x2dd1d35b,0x9a53e479,0xb6f84565,0xd28e49bc,0x4bfb9790,0xe1ddf2da,0xa4cb7e33,0x62fb1341,0xcee4c6e8,0xef20cada,0x36774c01,0xd07e9efe,0x2bf11fb4,0x95dbda4d,0xae909198,0xeaad8e71,0x6b93d5a0,0xd08ed1d0,0xafc725e0,0x8e3c5b2f,0x8e7594b7,0x8ff6e2fb,0xf2122b64,0x8888b812,0x900df01c,0x4fad5ea0,0x688fc31c,0xd1cff191,0xb3a8c1ad,0x2f2f2218,0xbe0e1777,0xea752dfe,0x8b021fa1,0xe5a0cc0f,0xb56f74e8,0x18acf3d6,0xce89e299,0xb4a84fe0,0xfd13e0b7,0x7cc43b81,0xd2ada8d9,0x165fa266,0x80957705,0x93cc7314,0x211a1477,0xe6ad2065,0x77b5fa86,0xc75442f5,0xfb9d35cf,0xebcdaf0c,0x7b3e89a0,0xd6411bd3,0xae1e7e49,2428461,0x2071b35e,0x226800bb,0x57b8e0af,0x2464369b,0xf009b91e,0x5563911d,0x59dfa6aa,0x78c14389,0xd95a537f,0x207d5ba2,0x2e5b9c5,0x83260376,0x6295cfa9,0x11c81968,0x4e734a41,0xb3472dca,0x7b14a94a,0x1b510052,0x9a532915,0xd60f573f,0xbc9bc6e4,0x2b60a476,0x81e67400,0x8ba6fb5,0x571be91f,0xf296ec6b,0x2a0dd915,0xb6636521,0xe7b9f9b6,0xff34052e,0xc5855664,0x53b02d5d,0xa99f8fa1,0x8ba4799,0x6e85076a,0x4b7a70e9,0xb5b32944,0xdb75092e,0xc4192623,290971e4,0x49a7df7d,0x9cee60b8,0x8fedb266,0xecaa8c71,0x699a17ff,0x5664526c,0xc2b19ee1,0x193602a5,0x75094c29,0xa0591340,0xe4183a3e,0x3f54989a,0x5b429d65,0x6b8fe4d6,0x99f73fd6,0xa1d29c07,0xefe830f5,0x4d2d38e6,0xf0255dc1,0x4cdd2086,0x8470eb26,0x6382e9c6,0x21ecc5e,0x9686b3f,0x3ebaefc9,0x3c971814,0x6b6a70a1,0x687f3584,0x52a0e286,0xb79c5305,0xaa500737,0x3e07841c,0x7fdeae5c,0x8e7d44ec,0x5716f2b8,0xb03ada37,0xf0500c0d,0xf01c1f04,0x200b3ff,0xae0cf51a,0x3cb574b2,0x25837a58,0xdc0921bd,0xd19113f9,0x7ca92ff6,0x94324773,0x22f54701,0x3ae5e581,0x37c2dadc,0xc8b57634,0x9af3dda7,0xa9446146,0xfd0030e,0xecc8c73e,0xa4751e41,0xe238cd99,0x3bea0e2f,0x3280bba1,0x183eb331,0x4e548b38,0x4f6db908,0x6f420d03,0xf60a04bf,0x2cb81290,0x24977c79,0x5679b072,0xbcaf89af,0xde9a771f,0xd9930810,0xb38bae12,0xdccf3f2e,0x5512721f,0x2e6b7124,0x501adde6,0x9f84cd87,0x7a584718,0x7408da17,0xbc9f9abc,0xe94b7d8c,0xec7aec3a,0xdb851dfa,0x63094366,0xc464c3d2,0xef1c1847,0x3215d908,0xdd433b37,0x24c2ba16,0x12a14d43,0x2a65c451,0x50940002,0x133ae4dd,0x71dff89e,0x10314e55,0x81ac77d6,0x5f11199b,0x43556f1,0xd7a3c76b,0x3c11183b,0x5924a509,0xf28fe6ed,0x97f1fbfa,0x9ebabf2c,0x1e153c6e,0x86e34570,0xeae96fb1,0x860e5e0a,0x5a3e2ab3,0x771fe71c,0x4e3d06fa,0x2965dcb9,0x99e71d0f,0x803e89d6,0x5266c825,0x2e4cc978,0x9c10b36a,0xc6150eba,0x94e2ea78,0xa5fc3c53,0x1e0a2df4,0xf2f74ea7,0x361d2b3d,0x1939260f,0x19c27960,0x5223a708,0xf71312b6,0xebadfe6e,0xeac31f66,0xe3bc4595,0xa67bc883,0xb17f37d1,0x18cff28,0xc332ddef,0xbe6c5aa5,0x65582185,0x68ab9802,0xeecea50f,0xdb2f953b,0x2aef7dad,0x5b6e2f84,0x1521b628,0x29076170,0xecdd4775,0x619f1510,0x13cca830,0xeb61bd96,0x334fe1e,0xaa0363cf,0xb5735c90,0x4c70a239,0xd59e9e0b,0xcbaade14,0xeecc86bc,0x60622ca7,0x9cab5cab,0xb2f3846e,0x648b1eaf,0x19bdf0ca,0xa02369b9,0x655abb50,0x40685a32,0x3c2ab4b3,0x319ee9d5,0xc021b8f7,0x9b540b19,0x875fa099,0x95f7997e,0x623d7da8,0xf837889a,0x97e32d77,0x11ed935f,0x16681281,0xe358829,0xc7e61fd6,0x96dedfa1,0x7858ba99,0x57f584a5,0x1b227263,0x9b83c3ff,0x1ac24696,0xcdb30aeb,0x532e3054,0x8fd948e4,0x6dbc3128,0x58ebf2ef,0x34c6ffea,0xfe28ed61,0xee7c3c73,0x5d4a14d9,0xe864b7e3,0x42105d14,0x203e13e0,0x45eee2b6,0xa3aaabea,0xdb6c4f15,0xfacb4fd0,0xc742f442,0xef6abbb5,0x654f3b1d,0x41cd2105,0xd81e799e,0x86854dc7,0xe44b476a,0x3d816250,0xcf62a1f2,0x5b8d2646,0xfc8883a0,0xc1c7b6a3,0x7f1524c3,0x69cb7492,0x47848a0b,0x5692b285,0x95bbf00,0xad19489d,0x1462b174,0x23820e00,0x58428d2a,0xc55f5ea,0x1dadf43e,0x233f7061,0x3372f092,0x8d937e41,0xd65fecf1,0x6c223bdb,0x7cde3759,0xcbee7460,0x4085f2a7,0xce77326e,0xa6078084,0x19f8509e,0xe8efd855,0x61d99735,0xa969a7aa,0xc50c06c2,0x5a04abfc,0x800bcadc,0x9e447a2e,0xc3453484,0xfdd56705,0xe1e9ec9,0xdb73dbd3,0x105588cd,0x675fda79,0xe3674340,0xc5c43465,0x713e38d8,0x3d28f89e,0xf16dff20,0x153e21e7,0x8fb03d4a,0xe6e39f2b,0xdb83adf7,0xe93d5a68,0x948140f7,0xf64c261c,0x94692934,0x411520f7,0x7602d4f7,0xbcf46b2e,0xd4a20068,0xd4082471,0x3320f46a,0x43b7d4b7,0x500061af,0x1e39f62e,0x97244546,0x14214f74,0xbf8b8840,0x4d95fc1d,0x96b591af,0x70f4ddd3,0x66a02f45,0xbfbc09ec,0x3bd9785,0x7fac6dd0,0x31cb8504,0x96eb27b3,0x55fd3941,0xda2547e6,0xabca0a9a,0x28507825,0x530429f4,0xa2c86da,0xe9b66dfb,0x68dc1462,0xd7486900,0x680ec0a4,0x27a18dee,0x4f3ffea2,0xe887ad8c,0xb58ce006,0x7af4d6b6,0xaace1e7c,0xd3375fec,0xce78a399,0x406b2a42,0x20fe9e35,0xd9f385b9,0xee39d7ab,0x3b124e8b,0x1dc9faf7,0x4b6d1856,0x26a36631,0xeae397b2,0x3a6efa74,0xdd5b4332,0x6841e7f7,0xca7820fb,0xfb0af54e,0xd8feb397,0x454056ac,0xba489527,0x55533a3a,0x20838d87,0xfe6ba9b7,0xd096954b,0x55a867bc,0xa1159a58,0xcca92963,0x99e1db33,0xa62a4a56,0x3f3125f9,0x5ef47e1c,0x9029317c,0xfdf8e802,0x4272f70,0x80bb155c,0x5282ce3,0x95c11548,0xe4c66d22,0x48c1133f,0xc70f86dc,0x7f9c9ee,0x41041f0f,0x404779a4,0x5d886e17,0x325f51eb,0xd59bc0d1,0xf2bcc18f,0x41113564,0x257b7834,0x602a9c60,0xdff8e8a3,0x1f636c1b,0xe12b4c2,0x2e1329e,0xaf664fd1,0xcad18115,0x6b2395e0,0x333e92e1,0x3b240b62,0xeebeb922,0x85b2a20e,0xe6ba0d99,0xde720c8c,0x2da2f728,0xd0127845,0x95b794fd,0x647d0862,0xe7ccf5f0,0x5449a36f,0x877d48fa,0xc39dfd27,0xf33e8d1e,0xa476341,0x992eff74,0x3a6f6eab,0xf4f8fd37,0xa812dc60,0xa1ebddf8,0x991be14c,0xdb6e6b0d,0xc67b5510,0x6d672c37,0x2765d43b,0xdcd0e804,0xf1290dc7,0xcc00ffa3,0xb5390f92,0x690fed0b,0x667b9ffb,0xcedb7d9c,0xa091cf0b,0xd9155ea3,0xbb132f88,0x515bad24,0x7b9479bf,0x763bd6eb,0x37392eb3,0xcc115979,0x8026e297,0xf42e312d,0x6842ada7,0xc66a2b3b,0x12754ccc,0x782ef11c,0x6a124237,0xb79251e7,0x6a1bbe6,0x4bfb6350,0x1a6b1018,0x11caedfa,0x3d25bdd8,0xe2e1c3c9,0x44421659,0xa121386,0xd90cec6e,0xd5abea2a,0x64af674e,0xda86a85f,0xbebfe988,0x64e4c3fe,0x9dbc8057,0xf0f7c086,0x60787bf8,0x6003604d,0xd1fd8346,0xf6381fb0,0x7745ae04,0xd736fccc,0x83426b33,0xf01eab71,0xb0804187,0x3c005e5f,0x77a057be,0xbde8ae24,0x55464299,0xbf582e61,0x4e58f48f,0xf2ddfda2,0xf474ef38,0x8789bdc2,0x5366f9c3,0xc8b38e74,0xb475f255,0x46fcd9b9,0x7aeb2661,0x8b1ddf84,0x846a0e79,0x915f95e2,0x466e598e,0x20b45770,0x8cd55591,0xc902de4c,0xb90bace1,0xbb8205d0,0x11a86248,0x7574a99e,0xb77f19b6,0xe0a9dc09,0x662d09a1,0xc4324633,0xe85a1f02,0x9f0be8c,0x4a99a025,0x1d6efe10,0x1ab93d1d,0xba5a4df,0xa186f20f,0x2868f169,0xdcb7da83,0x573906fe,0xa1e2ce9b,0x4fcd7f52,0x50115e01,0xa70683fa,0xa002b5c4,0xde6d027,0x9af88c27,0x773f8641,0xc3604c06,0x61a806b5,0xf0177a28,0xc0f586e0,6314154,0x30dc7d62,0x11e69ed7,0x2338ea63,0x53c2dd94,0xc2c21634,0xbbcbee56,0x90bcb6de,0xebfc7da1,0xce591d76,0x6f05e409,0x4b7c0188,0x39720a3d,0x7c927c24,0x86e3725f,0x724d9db9,0x1ac15bb4,0xd39eb8fc,0xed545578,0x8fca5b5,0xd83d7cd3,0x4dad0fc4,0x1e50ef5e,0xb161e6f8,0xa28514d9,0x6c51133c,0x6fd5c7e7,0x56e14ec4,0x362abfce,0xddc6c837,0xd79a3234,0x92638212,0x670efa8e,0x406000e0,0x3a39ce37,0xd3faf5cf,0xabc27737,0x5ac52d1b,0x5cb0679e,0x4fa33742,0xd3822740,0x99bc9bbe,0xd5118e9d,0xbf0f7315,0xd62d1c7e,0xc700c47b,0xb78c1b6b,0x21a19045,0xb26eb1be,0x6a366eb4,0x5748ab2f,0xbc946e79,0xc6a376d2,0x6549c2c8,0x530ff8ee,0x468dde7d,0xd5730a1d,0x4cd04dc6,0x2939bbdb,0xa9ba4650,0xac9526e8,0xbe5ee304,0xa1fad5f0,0x6a2d519a,0x63ef8ce2,0x9a86ee22,0xc089c2b8,0x43242ef6,0xa51e03aa,0x9cf2d0a4,0x83c061ba,0x9be96a4d,0x8fe51550,0xba645bd6,0x2826a2f9,0xa73a3ae1,0x4ba99586,0xef5562e9,0xc72fefd3,0xf752f7da,0x3f046f69,0x77fa0a59,0x80e4a915,0x87b08601,0x9b09e6ad,0x3b3ee593,0xe990fd5a,0x9e34d797,0x2cf0b7d9,0x22b8b51,0x96d5ac3a,0x17da67d,0xd1cf3ed6,0x7c7d2d28,0x1f9f25cf,0xadf2b89b,0x5ad6b472,0x5a88f54c,0xe029ac71,0xe019a5e6,0x47b0acfd,0xed93fa9b,0xe8d3c48d,0x283b57cc,0xf8d56629,0x79132e28,0x785f0191,0xed756055,0xf7960e44,0xe3d35e8c,0x15056dd4,0x88f46dba,0x3a16125,0x564f0bd,0xc3eb9e15,0x3c9057a2,0x97271aec,0xa93a072a,0x1b3f6d9b,0x1e6321f5,0xf59c66fb,0x26dcf319,0x7533d928,0xb155fdf5,0x3563482,0x8aba3cbb,0x28517711,0xc20ad9f8,0xabcc5167,0xccad925f,0x4de81751,0x3830dc8e,0x379d5862,0x9320f991,0xea7a90c2,0xfb3e7bce,0x5121ce64,0x774fbe32,0xa8b6e37e,0xc3293d46,0x48de5369,0x6413e680,0xa2ae0810,0xdd6db224,0x69852dfd,0x9072166,0xb39a460a,0x6445c0dd,0x586cdecf,0x1c20c8ae,0x5bbef7dd,0x1b588d40,0xccd2017f,0x6bb4e3bb,0xdda26a7e,0x3a59ff45,0x3e350a44,0xbcb4cdd5,0x72eacea8,0xfa6484bb,0x8d6612ae,0xbf3c6f47,0xd29be463,0x542f5d9e,0xaec2771b,0xf64e6370,0x740e0d8d,0xe75b1357,0xf8721671,0xaf537d5d,0x4040cb08,0x4eb4e2cc,0x34d2466a,0x115af84,3786409e3,0x95983a1d,0x6b89fb4,0xce6ea048,0x6f3f3b82,0x3520ab82,0x11a1d4b,0x277227f8,0x611560b1,0xe7933fdc,0xbb3a792b,0x344525bd,0xa08839e1,0x51ce794b,0x2f32c9b7,0xa01fbac9,0xe01cc87e,0xbcc7d1f6,0xcf0111c3,0xa1e8aac7,0x1a908749,0xd44fbd9a,0xd0dadecb,0xd50ada38,0x339c32a,0xc6913667,0x8df9317c,0xe0b12b4f,0xf79e59b7,0x43f5bb3a,0xf2d519ff,0x27d9459c,0xbf97222c,0x15e6fc2a,0xf91fc71,0x9b941525,0xfae59361,0xceb69ceb,0xc2a86459,0x12baa8d1,0xb6c1075e,0xe3056a0c,0x10d25065,0xcb03a442,0xe0ec6e0e,0x1698db3b,0x4c98a0be,0x3278e964,0x9f1f9532,0xe0d392df,0xd3a0342b,0x8971f21e,0x1b0a7441,0x4ba3348c,0xc5be7120,0xc37632d8,0xdf359f8d,0x9b992f2e,0xe60b6f47,0xfe3f11d,0xe54cda54,0x1edad891,0xce6279cf,0xcd3e7e6f,0x1618b166,0xfd2c1d05,0x848fd2c5,0xf6fb2299,0xf523f357,0xa6327623,0x93a83531,0x56cccd02,0xacf08162,0x5a75ebb5,0x6e163697,0x88d273cc,0xde966292,0x81b949d0,0x4c50901b,0x71c65614,0xe6c6c7bd,0x327a140a,0x45e1d006,0xc3f27b9a,0xc9aa53fd,0x62a80f00,0xbb25bfe2,0x35bdd2f6,0x71126905,0xb2040222,0xb6cbcf7c,0xcd769c2b,0x53113ec0,0x1640e3d3,0x38abbd60,0x2547adf0,0xba38209c,0xf746ce76,0x77afa1c5,0x20756060,0x85cbfe4e,0x8ae88dd8,0x7aaaf9b0,0x4cf9aa7e,0x1948c25c,0x2fb8a8c,0x1c36ae4,0xd6ebe1f9,0x90d4f869,0xa65cdea0,0x3f09252d,0xc208e69f,0xb74e6132,0xce77e25b,0x578fdfe3,0x3ac372e6],ip=[0x4f727068,0x65616e42,0x65686f6c,0x64657253,0x63727944,0x6f756274];function ih(e,t,i,n){var r=e[t],a=e[t+1];return r^=i[0],a^=(n[r>>>24]+n[256|r>>16&255]^n[512|r>>8&255])+n[768|255&r]^i[1],r^=(n[a>>>24]+n[256|a>>16&255]^n[512|a>>8&255])+n[768|255&a]^i[2],a^=(n[r>>>24]+n[256|r>>16&255]^n[512|r>>8&255])+n[768|255&r]^i[3],r^=(n[a>>>24]+n[256|a>>16&255]^n[512|a>>8&255])+n[768|255&a]^i[4],a^=(n[r>>>24]+n[256|r>>16&255]^n[512|r>>8&255])+n[768|255&r]^i[5],r^=(n[a>>>24]+n[256|a>>16&255]^n[512|a>>8&255])+n[768|255&a]^i[6],a^=(n[r>>>24]+n[256|r>>16&255]^n[512|r>>8&255])+n[768|255&r]^i[7],r^=(n[a>>>24]+n[256|a>>16&255]^n[512|a>>8&255])+n[768|255&a]^i[8],a^=(n[r>>>24]+n[256|r>>16&255]^n[512|r>>8&255])+n[768|255&r]^i[9],r^=(n[a>>>24]+n[256|a>>16&255]^n[512|a>>8&255])+n[768|255&a]^i[10],a^=(n[r>>>24]+n[256|r>>16&255]^n[512|r>>8&255])+n[768|255&r]^i[11],r^=(n[a>>>24]+n[256|a>>16&255]^n[512|a>>8&255])+n[768|255&a]^i[12],a^=(n[r>>>24]+n[256|r>>16&255]^n[512|r>>8&255])+n[768|255&r]^i[13],r^=(n[a>>>24]+n[256|a>>16&255]^n[512|a>>8&255])+n[768|255&a]^i[14],a^=(n[r>>>24]+n[256|r>>16&255]^n[512|r>>8&255])+n[768|255&r]^i[15],r^=(n[a>>>24]+n[256|a>>16&255]^n[512|a>>8&255])+n[768|255&a]^i[16],e[t]=a^i[17],e[t+1]=r,e}function ig(e,t){for(var i=0,n=0;i<4;++i)n=n<<8|255&e[t],t=(t+1)%e.length;return{key:n,offp:t}}function iy(e,t,i){for(var n,r=0,a=[0,0],s=t.length,o=i.length,l=0;l<s;l++)r=(n=ig(e,r)).offp,t[l]=t[l]^n.key;for(l=0;l<s;l+=2)a=ih(a,0,t,i),t[l]=a[0],t[l+1]=a[1];for(l=0;l<o;l+=2)a=ih(a,0,t,i),i[l]=a[0],i[l+1]=a[1]}function iv(e,t,i,n,r){var a,s,o=ip.slice(),l=o.length;if(i<4||i>31){if(s=Error("Illegal number of rounds (4-31): "+i),n)return void ia(n.bind(this,s));throw s}if(t.length!==iu){if(s=Error("Illegal salt length: "+t.length+" != "+iu),n)return void ia(n.bind(this,s));throw s}i=1<<i>>>0;var u,c,d,f=0;function m(){if(r&&r(f/i),f<i)for(var a=Date.now();f<i&&(f+=1,iy(e,u,c),iy(t,u,c),!(Date.now()-a>100)););else{for(f=0;f<64;f++)for(d=0;d<l>>1;d++)ih(o,d<<1,u,c);var s=[];for(f=0;f<l;f++)s.push((o[f]>>24&255)>>>0),s.push((o[f]>>16&255)>>>0),s.push((o[f]>>8&255)>>>0),s.push((255&o[f])>>>0);return n?void n(null,s):s}n&&ia(m)}if("function"==typeof Int32Array?(u=new Int32Array(id),c=new Int32Array(im)):(u=id.slice(),c=im.slice()),!function(e,t,i,n){for(var r,a=0,s=[0,0],o=i.length,l=n.length,u=0;u<o;u++)a=(r=ig(t,a)).offp,i[u]=i[u]^r.key;for(u=0,a=0;u<o;u+=2)a=(r=ig(e,a)).offp,s[0]^=r.key,a=(r=ig(e,a)).offp,s[1]^=r.key,s=ih(s,0,i,n),i[u]=s[0],i[u+1]=s[1];for(u=0;u<l;u+=2)a=(r=ig(e,a)).offp,s[0]^=r.key,a=(r=ig(e,a)).offp,s[1]^=r.key,s=ih(s,0,i,n),n[u]=s[0],n[u+1]=s[1]}(t,e,u,c),void 0!==n)m();else for(;;)if(void 0!==(a=m()))return a||[]}function ib(e,t,i,n){if("string"!=typeof e||"string"!=typeof t){if(r=Error("Invalid string / salt: Not a string"),i)return void ia(i.bind(this,r));throw r}if("$"!==t.charAt(0)||"2"!==t.charAt(1)){if(r=Error("Invalid salt version: "+t.substring(0,2)),i)return void ia(i.bind(this,r));throw r}if("$"===t.charAt(2))a="\0",s=3;else{if("a"!==(a=t.charAt(2))&&"b"!==a&&"y"!==a||"$"!==t.charAt(3)){if(r=Error("Invalid salt revision: "+t.substring(2,4)),i)return void ia(i.bind(this,r));throw r}s=4}if(t.charAt(s+2)>"$"){if(r=Error("Missing salt rounds"),i)return void ia(i.bind(this,r));throw r}var r,a,s,o=10*parseInt(t.substring(s,s+1),10)+parseInt(t.substring(s+1,s+2),10),l=t.substring(s+3,s+25),u=function(e){for(var t,i,n=0,r=Array(function(e){for(var t=0,i=0,n=0;n<e.length;++n)(i=e.charCodeAt(n))<128?t+=1:i<2048?t+=2:(64512&i)==55296&&(64512&e.charCodeAt(n+1))==56320?(++n,t+=4):t+=3;return t}(e)),a=0,s=e.length;a<s;++a)(t=e.charCodeAt(a))<128?r[n++]=t:(t<2048?r[n++]=t>>6|192:((64512&t)==55296&&(64512&(i=e.charCodeAt(a+1)))==56320?(t=65536+((1023&t)<<10)+(1023&i),++a,r[n++]=t>>18|240,r[n++]=t>>12&63|128):r[n++]=t>>12|224,r[n++]=t>>6&63|128),r[n++]=63&t|128);return r}(e+=a>="a"?"\0":""),c=function(e,t){var i,n,r,a,s,o=0,l=e.length,u=0,c=[];if(t<=0)throw Error("Illegal len: "+t);for(;o<l-1&&u<t&&(i=(s=e.charCodeAt(o++))<io.length?io[s]:-1,n=(s=e.charCodeAt(o++))<io.length?io[s]:-1,-1!=i&&-1!=n)&&(a=i<<2>>>0|(48&n)>>4,c.push(String.fromCharCode(a)),!(++u>=t||o>=l||-1==(r=(s=e.charCodeAt(o++))<io.length?io[s]:-1)||(a=(15&n)<<4>>>0|(60&r)>>2,c.push(String.fromCharCode(a)),++u>=t||o>=l)));){;a=(3&r)<<6>>>0|((s=e.charCodeAt(o++))<io.length?io[s]:-1),c.push(String.fromCharCode(a)),++u}var d=[];for(o=0;o<u;o++)d.push(c[o].charCodeAt(0));return d}(l,iu);function d(e){var t=[];return t.push("$2"),a>="a"&&t.push(a),t.push("$"),o<10&&t.push("0"),t.push(o.toString()),t.push("$"),t.push(il(c,c.length)),t.push(il(e,4*ip.length-1)),t.join("")}if(void 0===i)return d(iv(u,c,o));iv(u,c,o,function(e,t){e?i(e,null):i(null,d(t))},n)}let ix=function(e,t,i,n){function r(i){"string"!=typeof e||"string"!=typeof t?ia(i.bind(this,Error("Illegal arguments: "+typeof e+", "+typeof t))):60!==t.length?ia(i.bind(this,null,!1)):ir(e,t.substring(0,29),function(e,n){e?i(e):i(null,function(e,t){for(var i=e.length^t.length,n=0;n<e.length;++n)i|=e.charCodeAt(n)^t.charCodeAt(n);return 0===i}(n,t))},n)}if(!i)return new Promise(function(e,t){r(function(i,n){i?t(i):e(n)})});if("function"!=typeof i)throw Error("Illegal callback: "+typeof i);r(i)};async function i$(e){return ir(e,10)}async function i_(e,t){return!!t&&ix(e,t)}e.s(["hashPassword",0,i$,"verifyPassword",0,i_],837423),e.s([],222784);let iS=!1;async function iw(){if(iS||(iS=!0,tz.select().from(t$).all().length>0))return;let e=process.env.LOOM_ADMIN_USERNAME||"admin",t=process.env.LOOM_ADMIN_PASSWORD;if(!t)return void console.warn("[loom] No users in database and LOOM_ADMIN_PASSWORD is not set. Set LOOM_ADMIN_USERNAME / LOOM_ADMIN_PASSWORD to bootstrap the first admin.");let n=await i$(t);tz.insert(t$).values({id:(0,i.randomUUID)(),username:e,passwordHash:n,role:"admin"}).run(),console.log(`[loom] Bootstrapped admin user "${e}".`)}var ik=tA;e.s(["schema",0,ik],110726);var ik=tA,iI=e.i(660526),iN=e.i(523008);let iO=["loom.config.yaml","loom.config.yml","loom.config.json"],iP=["loom.yaml","loom.yml","loom.json"];function iT(){return process.env.LOOM_USER_CWD||process.cwd()}let iE=new Map,iA=new Map;function iC(e){return iE.get(e)}function iD(e,t){var i;let n=new Set(t?.supported_apis??[]),r=(i=e.id,iA.get(i)??[]);if(e.variantPreference){for(let t of e.variantPreference)if(n.has(t)&&iE.has(t))return t}for(let e of r)if(n.has(e.id))return e.id;if(e.defaultVariantId&&iE.has(e.defaultVariantId))return e.defaultVariantId;if(r.length>0)return r[0].id;throw Error(`No upstream API variant registered for capability "${e.id}"`)}e.s(["defaultSelectVariantId",0,iD,"getVariant",0,iC,"listVariants",0,function(){return Array.from(iE.values())},"registerVariant",0,function(e){let t=iE.get(e.id);iE.set(e.id,e);let i=iA.get(e.capability)??[],n=i.findIndex(t=>t.id===e.id);if(n>=0?i[n]=e:i.push(e),iA.set(e.capability,i),t&&t.capability!==e.capability){let i=iA.get(t.capability)??[];iA.set(t.capability,i.filter(t=>t.id!==e.id))}}],54013);let iz=[],ij=new Map;function iU(e){if(ij.has(e.id)){let t=iz.findIndex(t=>t.id===e.id);t>=0&&(iz[t]=e)}else iz.push(e);ij.set(e.id,e)}function iL(e){if(e.adapterId){let t=ij.get(e.adapterId);if(t)return t}for(let t of iz)if(t.matches(e))return t;let t=ij.get("openai");if(!t)throw Error("No 'openai' adapter registered — adapter registry not initialized");return t}e.s(["listAdapters",0,function(){return iz.map(e=>({id:e.id,label:e.label,description:e.description}))},"registerAdapter",0,iU,"resolveAdapter",0,iL,"resolveVariantId",0,function(e,t,i,n){let r=i.apiVariantId;if(r){let e=iC(r);if(e&&e.capability===t.id)return e.id}return e.selectVariant?e.selectVariant(t,i,n):iD(t,n)}],183397);let iZ=new Map;function iq(){return Array.from(iZ.values()).sort((e,t)=>(t.priority??0)-(e.priority??0))}function iR(e){for(let t of iq())if(t.matches?.(e))return t.id;return iB}let iB="chat";async function iM(e,t){let i=`${e.baseUrl.replace(/\/$/,"")}/models`,n={Accept:"application/json"};t&&(n.Authorization=`Bearer ${t}`);let r=await fetch(i,{headers:n});if(!r.ok)throw Error(`models discovery HTTP ${r.status} from ${i}`);let a=await r.json();return Array.isArray(a)?a:Array.isArray(a?.data)?a.data:[]}e.s(["classifyModel",0,iR,"getCapability",0,function(e){return iZ.get(e)},"listCapabilities",0,iq,"registerCapability",0,function(e){if(!e.id)throw Error("capability.id is required");iZ.set(e.id,e)}],152358);let iK=new Set(["model","messages","stream","input","prompt"]);iU({id:"openai",label:"OpenAI compatible",description:"OpenAI direct, DeepSeek, Together, Groq, vLLM, Ollama — any /v1 OpenAI-compatible upstream.",matches:()=>!0,fetchModels:iM,extractModelMeta(e){let t="string"==typeof e?.id?e.id:null;if(!t)return null;let i=iR(t);return{upstream_id:t,label:t,supported_apis:["embedding"===i?"embeddings":"image"===i?"images.generations":"audio.speech"===i?"audio.speech":"audio.transcription"===i?"audio.transcriptions":"rerank"===i?"rerank":"video"===i?"videos":"chat.completions"],capabilities:{chat:"chat"===i,embeddings:"embedding"===i,audio_in:"audio.transcription"===i,audio_out:"audio.speech"===i},owned_by:"string"==typeof e.owned_by?e.owned_by:null,raw:e}},upstreamUrl:function(e){let t=e.provider.baseUrl.replace(/\/$/,"");return`${t}${e.variant.path}`},upstreamHeaders:function(e,t){let i={"Content-Type":"application/json"};return t&&(i.Authorization=`Bearer ${t}`),i},finalizeRequest:(e,t)=>({...e,model:t.model.upstreamModelId})}),e.s(["applyFieldFilter",0,function(e,t){if(!t)return e;let i=t.accepted_fields&&t.accepted_fields.length>0?new Set(t.accepted_fields):null,n=t.rejected_fields&&t.rejected_fields.length>0?new Set(t.rejected_fields):null;if(!i&&!n)return e;let r={};for(let[t,a]of Object.entries(e)){if(iK.has(t)){r[t]=a;continue}!n?.has(t)&&(!i||i.has(t))&&(r[t]=a)}return r},"fetchOpenAIModels",0,iM],57578);let iF={chatCompletion:"chat.completions",responses:"responses",embeddings:"embeddings",imageGeneration:"images.generations",audioSpeech:"audio.speech",audioTranscription:"audio.transcriptions",rerank:"rerank"},iQ=["model","messages","stream","temperature","top_p","max_tokens","max_completion_tokens","stop","n","frequency_penalty","presence_penalty","logit_bias","user","seed","tools","tool_choice","response_format"],iJ=["stream_options","parallel_tool_calls","service_tier","store","metadata","prediction","modalities","audio","web_search_options"];function iV(e){return e.apiVersion?.trim()||"2024-10-21"}function iW(e){return e.baseUrl.replace(/\/$/,"")}iU({id:"azure-foundry",label:"Azure AI Foundry (Inference)",description:"Azure AI Inference / Foundry endpoints serving OSS or partner models. Strict schema, rich metadata.",matches(e){try{var t;return t=new URL(e.baseUrl).host,/\.(inference|services)\.ai\.azure\.com$/.test(t)}catch{return!1}},fetchModels:iM,extractModelMeta(e){let t="string"==typeof e?.id?e.id:null;if(!t)return null;let i=[],n=e.capabilities??{};for(let[e,t]of Object.entries(n)){if(!0!==t&&"true"!==t&&1!==t)continue;let n=iF[e];n&&!i.includes(n)&&i.push(n)}0===i.length&&i.push("chat.completions");let r=e.model??{},a=r.Publisher??null,s=r.Format??null,o=r.Version??null,l=e.RateLimits??e.rate_limits??{};return{upstream_id:t,label:"string"==typeof r.Name?r.Name:t,supported_apis:i,capabilities:{chat:i.includes("chat.completions"),responses:i.includes("responses"),embeddings:i.includes("embeddings"),batch:!0===n.batch||"true"===n.batch},accepted_fields:iQ,rejected_fields:iJ,publisher:a,version:o,format:s,owned_by:"string"==typeof e.owned_by?e.owned_by:null,rate_limits:{requests:"number"==typeof l.requests?l.requests:null,tokens:"number"==typeof l.tokens?l.tokens:null},raw:e}},upstreamUrl(e){let t=e.provider.baseUrl.replace(/\/$/,"");return`${t}${e.variant.path}`},upstreamHeaders(e,t){let i={"Content-Type":"application/json"};return t&&(i["api-key"]=t),i},finalizeRequest:(e,t)=>({...e,model:t.model.upstreamModelId})}),iU({id:"azure-openai",label:"Azure OpenAI",description:"First-party Azure-hosted OpenAI models. Deployment-based URLs, api-key header, api-version query.",matches(e){try{var t;return t=new URL(e.baseUrl).host,/\.openai\.azure\.com$/.test(t)}catch{return!1}},async fetchModels(e,t){let i=`${iW(e)}/openai/models?api-version=${encodeURIComponent(iV(e))}`,n={Accept:"application/json"};t&&(n["api-key"]=t);let r=await fetch(i,{headers:n});if(!r.ok)throw Error(`models discovery HTTP ${r.status} from ${i}`);let a=await r.json();return Array.isArray(a)?a:Array.isArray(a?.data)?a.data:[]},extractModelMeta(e){let t="string"==typeof e?.id?e.id:null;return t?{upstream_id:t,label:t,supported_apis:[],capabilities:{chat:!1},owned_by:"string"==typeof e.owned_by?e.owned_by:null,raw:e}:null},upstreamUrl(e){let t=encodeURIComponent(e.model.upstreamModelId),i=iV(e.provider);return`${iW(e.provider)}/openai/deployments/${t}${e.variant.path}?api-version=${encodeURIComponent(i)}`},upstreamHeaders(e,t){let i={"Content-Type":"application/json"};return t&&(i["api-key"]=t),i},finalizeRequest(e){let{model:t,...i}=e;return i}}),e.s([],439782);let iG=!1,iX=null;function iY(e,t,i){let n=e.safeParse(t);if(!n.success)throw new tQ(iH(n.error,i),400);return n.data}function iH(e,t="input"){return 0===e.issues.length?`Invalid ${t}`:e.issues.map(e=>{let i=e.path.length>0?e.path.join("."):t,n=e.received;return"invalid_type"===e.code&&"undefined"===n?`${i}: required`:`${i}: ${e.message}`}).join("; ")}e.s(["defineRoute",0,function(e){let n=e.auth??"user";return async(r,a={params:Promise.resolve({})})=>{try{let t;await (!iX&&(iX=(async()=>{try{!function(){if(iG)return;iG=!0;let{path:e,cfg:t,applied:n}=function(){let e,t=function(){let e=process.env.LOOM_CONFIG_PATH;if(e){let t=(0,tb.resolve)(iT(),e);return(0,tv.existsSync)(t)?t:null}let t=iT();for(let e of[...iO.map(e=>(0,tb.resolve)(t,e)),...iP.map(e=>(0,tb.resolve)(t,".config",e)),...iP.map(e=>(0,tb.resolve)(process.env.XDG_CONFIG_HOME||(0,tb.resolve)((0,iI.homedir)(),".config"),e))])if((0,tv.existsSync)(e))return e;return null}();if(!t)return{path:null,cfg:null,applied:[]};try{let i;i=(0,tv.readFileSync)(t,"utf8"),e=function e(t){if("string"==typeof t)return t.replace(/\$\{([A-Z0-9_]+)\}/g,(e,t)=>process.env[t]??"");if(Array.isArray(t))return t.map(t=>e(t));if(t&&"object"==typeof t){let i={};for(let[n,r]of Object.entries(t))i[n]=e(r);return i}return t}((t.endsWith(".json")?JSON.parse(i):(0,iN.parse)(i))??{})}catch(e){return console.error(`[loom:config] failed to parse ${t}:`,e),{path:t,cfg:null,applied:[]}}let i=function(e){if(!e||"object"!=typeof e)return[];let t=[],i=(e,i)=>{let n=process.env[e];!function(e,t){if(null==t||void 0!==process.env[e]&&""!==process.env[e])return;let i="string"==typeof t?t:String(t);i&&(process.env[e]=i)}(e,i),process.env[e]!==n&&t.push(e)};return i("LOOM_MASTER_KEY",e.master_key),i("LOOM_DB_PATH",e.database?.path),i("LOOM_ADMIN_USERNAME",e.admin?.username),i("LOOM_ADMIN_PASSWORD",e.admin?.password),i("LOOM_SESSION_TTL_DAYS",e.session?.ttl_days),i("LOOM_MODELS_CACHE_TTL",e.cache?.models_ttl_seconds),i("LOOM_SERVER_PORT",e.server?.port),i("LOOM_SERVER_HOSTNAME",e.server?.hostname),t}(e);return{path:t,cfg:e,applied:i}}();if(!e||!t)return;n.length>0?console.log(`[loom:config] ${e}: applied env from config (${n.join(", ")}).`):console.log(`[loom:config] ${e} loaded.`),Array.isArray(t.models)&&console.warn(`[loom:config] ${e}: \`models:\` section is deprecated — models are now discovered live from each provider's /models endpoint. Use the admin UI to add per-model overrides (Azure deployments, display-name aliases, etc.).`);let r=Array.isArray(t.providers)?t.providers:[];if(0===r.length)return;let a=0;for(let e of r)try{(function(e){var t;let n=e.name?.trim(),r=e.base_url?.trim();if(!n)return console.warn("[loom:config] skipping provider with no name"),null;if(!r)return console.warn(`[loom:config] provider "${n}" missing base_url; skipping`),null;let a=(t={...e,base_url:r}).adapter_id&&t.adapter_id.trim()?t.adapter_id.trim():iL({id:"",name:"",adapterId:"",baseUrl:t.base_url??"",apiVersion:t.api_version??null,apiKeyEncrypted:null,defaultParams:{},httpProxy:null,documentPage:null,modelPage:null,healthCheckUrl:null,lastHealthStatus:null,lastHealthCheckedAt:null,lastHealthError:null,isLocal:!1,enabled:!0,createdAt:"",updatedAt:""}).id,s=tz.select().from(ik.providers).where((0,u.eq)(ik.providers.name,n)).get(),o=e.api_key?.trim()?e.api_key.trim():null,l={adapterId:a,baseUrl:r,apiVersion:e.api_version?.trim()||null,defaultParams:e.default_params??{},httpProxy:e.http_proxy??null,documentPage:e.document_page??null,modelPage:e.model_page??null,healthCheckUrl:e.health_check_url?.trim()||null,isLocal:!!e.is_local,enabled:e.enabled??!0,updatedAt:new Date().toISOString()};if(s){let t={...l};return void 0!==e.api_key&&(t.apiKeyEncrypted=o?tq(o):null),tz.update(ik.providers).set(t).where((0,u.eq)(ik.providers.id,s.id)).run(),{id:s.id,name:n}}let c=(0,i.randomUUID)();return tz.insert(ik.providers).values({id:c,name:n,apiKeyEncrypted:o?tq(o):null,...l}).run(),{id:c,name:n}})(e)&&a++}catch(t){console.error(`[loom:config] upsert provider "${e.name}" failed:`,t)}a>0&&console.log(`[loom:config] upserted ${a} provider(s).`)}()}catch(e){console.error("[loom] config file load failed:",e)}await iw()})()),iX);let s=null;switch(n){case"public":s=await t9();break;case"user":s=await t5();break;case"admin":s=await t3();break;case"gateway":s=await ie(r)}let o=a.params?await a.params:{},l=e.params?iY(e.params,o,"params"):o,c=Object.fromEntries(new URL(r.url).searchParams),d=e.query?iY(e.query,c,"query"):c;if(e.body){let i={};if("GET"!==r.method&&"HEAD"!==r.method)try{i=await r.json()}catch{throw tJ("Request body must be valid JSON")}t=iY(e.body,i,"body")}let f=await e.handler({req:r,user:s,params:l,body:t,query:d});if(f instanceof Response)return f;return tK(void 0===f?null:f)}catch(e){if(e instanceof t.ZodError)return tF(iH(e),400);return tG(e)}}}],456315)}];
99
+ `;await t.run(r);let a=(await t.values(c.sql`SELECT id, hash, created_at FROM ${c.sql.identifier(n)} ORDER BY created_at DESC LIMIT 1`))[0]??void 0;await t.transaction(async t=>{for(let i of e)if(!a||Number(a[2])<i.folderMillis){for(let e of i.sql)await t.run(c.sql.raw(e));await t.run(c.sql`INSERT INTO ${c.sql.identifier(n)} ("hash", "created_at") VALUES(${i.hash}, ${i.folderMillis})`)}})}}class ej{static [r.entityKind]="TypedQueryBuilder";getSelectedFields(){return this._.selectedFields}}class eU{static [r.entityKind]="QueryPromise";[Symbol.toStringTag]="QueryPromise";catch(e){return this.then(void 0,e)}finally(e){return this.then(t=>(e?.(),t),t=>{throw e?.(),t})}then(e,t){return this.execute().then(e,t)}}class eL{constructor(e,t){this.name=e,this.value=t}static [r.entityKind]="SQLiteCheckBuilder";brand;build(e){return new eZ(e,this)}}class eZ{constructor(e,t){this.table=e,this.name=t.name,this.value=t.value}static [r.entityKind]="SQLiteCheck";name;value}class eq{constructor(e,t){this.name=e,this.unique=t}static [r.entityKind]="SQLiteIndexBuilderOn";on(...e){return new eR(this.name,e,this.unique)}}class eR{static [r.entityKind]="SQLiteIndexBuilder";config;constructor(e,t,i){this.config={name:e,columns:t,unique:i,where:void 0}}where(e){return this.config.where=e,this}build(e){return new eB(this.config,e)}}class eB{static [r.entityKind]="SQLiteIndex";config;constructor(e,t){this.config={...e,table:t}}}function eM(e){return new eq(e,!1)}class eK{static [r.entityKind]="SQLitePrimaryKeyBuilder";columns;name;constructor(e,t){this.columns=e,this.name=t}build(e){return new eF(e,this.columns,this.name)}}class eF{constructor(e,t,i){this.table=e,this.columns=t,this.name=i}static [r.entityKind]="SQLitePrimaryKey";columns;name;getName(){return this.name??`${this.table[eP.Symbol.Name]}_${this.columns.map(e=>e.name).join("_")}_pk`}}function eQ(e){return(0,r.is)(e,eP)?[`${e[s.Table.Symbol.BaseName]}`]:(0,r.is)(e,I.Subquery)?e._.usedTables??[]:(0,r.is)(e,c.SQL)?e.usedTables??[]:[]}class eJ{static [r.entityKind]="SQLiteSelectBuilder";fields;session;dialect;withList;distinct;constructor(e){this.fields=e.fields,this.session=e.session,this.dialect=e.dialect,this.withList=e.withList,this.distinct=e.distinct}from(e){let t,i=!!this.fields;return t=this.fields?this.fields:(0,r.is)(e,I.Subquery)?Object.fromEntries(Object.keys(e._.selectedFields).map(t=>[t,e[t]])):(0,r.is)(e,eA)?e[v.ViewBaseConfig].selectedFields:(0,r.is)(e,c.SQL)?{}:(0,J.getTableColumns)(e),new eW({table:e,fields:t,isPartialSelect:i,session:this.session,dialect:this.dialect,withList:this.withList,distinct:this.distinct})}}class eV extends ej{static [r.entityKind]="SQLiteSelectQueryBuilder";_;config;joinsNotNullableMap;tableName;isPartialSelect;session;dialect;cacheConfig=void 0;usedTables=new Set;constructor({table:e,fields:t,isPartialSelect:i,session:n,dialect:r,withList:a,distinct:s}){for(const o of(super(),this.config={withList:a,table:e,fields:{...t},distinct:s,setOperators:[]},this.isPartialSelect=i,this.session=n,this.dialect=r,this._={selectedFields:t,config:this.config},this.tableName=(0,J.getTableLikeName)(e),this.joinsNotNullableMap="string"==typeof this.tableName?{[this.tableName]:!0}:{},eQ(e)))this.usedTables.add(o)}getUsedTables(){return[...this.usedTables]}createJoin(e){return(t,i)=>{let n=this.tableName,a=(0,J.getTableLikeName)(t);for(let e of eQ(t))this.usedTables.add(e);if("string"==typeof a&&this.config.joins?.some(e=>e.alias===a))throw Error(`Alias "${a}" is already used in this query`);if(!this.isPartialSelect&&(1===Object.keys(this.joinsNotNullableMap).length&&"string"==typeof n&&(this.config.fields={[n]:this.config.fields}),"string"==typeof a&&!(0,r.is)(t,c.SQL))){let e=(0,r.is)(t,I.Subquery)?t._.selectedFields:(0,r.is)(t,c.View)?t[v.ViewBaseConfig].selectedFields:t[s.Table.Symbol.Columns];this.config.fields[a]=e}if("function"==typeof i&&(i=i(new Proxy(this.config.fields,new N({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})))),this.config.joins||(this.config.joins=[]),this.config.joins.push({on:i,table:t,joinType:e,alias:a}),"string"==typeof a)switch(e){case"left":this.joinsNotNullableMap[a]=!1;break;case"right":this.joinsNotNullableMap=Object.fromEntries(Object.entries(this.joinsNotNullableMap).map(([e])=>[e,!1])),this.joinsNotNullableMap[a]=!0;break;case"cross":case"inner":this.joinsNotNullableMap[a]=!0;break;case"full":this.joinsNotNullableMap=Object.fromEntries(Object.entries(this.joinsNotNullableMap).map(([e])=>[e,!1])),this.joinsNotNullableMap[a]=!1}return this}}leftJoin=this.createJoin("left");rightJoin=this.createJoin("right");innerJoin=this.createJoin("inner");fullJoin=this.createJoin("full");crossJoin=this.createJoin("cross");createSetOperator(e,t){return i=>{let n="function"==typeof i?i(eX()):i;if(!(0,J.haveSameKeys)(this.getSelectedFields(),n.getSelectedFields()))throw Error("Set operator error (union / intersect / except): selected fields are not the same or are in a different order");return this.config.setOperators.push({type:e,isAll:t,rightSelect:n}),this}}union=this.createSetOperator("union",!1);unionAll=this.createSetOperator("union",!0);intersect=this.createSetOperator("intersect",!1);except=this.createSetOperator("except",!1);addSetOperators(e){return this.config.setOperators.push(...e),this}where(e){return"function"==typeof e&&(e=e(new Proxy(this.config.fields,new N({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})))),this.config.where=e,this}having(e){return"function"==typeof e&&(e=e(new Proxy(this.config.fields,new N({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})))),this.config.having=e,this}groupBy(...e){if("function"==typeof e[0]){let t=e[0](new Proxy(this.config.fields,new N({sqlAliasedBehavior:"alias",sqlBehavior:"sql"})));this.config.groupBy=Array.isArray(t)?t:[t]}else this.config.groupBy=e;return this}orderBy(...e){if("function"==typeof e[0]){let t=e[0](new Proxy(this.config.fields,new N({sqlAliasedBehavior:"alias",sqlBehavior:"sql"}))),i=Array.isArray(t)?t:[t];this.config.setOperators.length>0?this.config.setOperators.at(-1).orderBy=i:this.config.orderBy=i}else this.config.setOperators.length>0?this.config.setOperators.at(-1).orderBy=e:this.config.orderBy=e;return this}limit(e){return this.config.setOperators.length>0?this.config.setOperators.at(-1).limit=e:this.config.limit=e,this}offset(e){return this.config.setOperators.length>0?this.config.setOperators.at(-1).offset=e:this.config.offset=e,this}getSQL(){return this.dialect.buildSelectQuery(this.config)}toSQL(){let{typings:e,...t}=this.dialect.sqlToQuery(this.getSQL());return t}as(e){let t=[];if(t.push(...eQ(this.config.table)),this.config.joins)for(let e of this.config.joins)t.push(...eQ(e.table));return new Proxy(new I.Subquery(this.getSQL(),this.config.fields,e,!1,[...new Set(t)]),new N({alias:e,sqlAliasedBehavior:"alias",sqlBehavior:"error"}))}getSelectedFields(){return new Proxy(this.config.fields,new N({alias:this.tableName,sqlAliasedBehavior:"alias",sqlBehavior:"error"}))}$dynamic(){return this}}class eW extends eV{static [r.entityKind]="SQLiteSelect";_prepare(e=!0){if(!this.session)throw Error("Cannot execute a query on a query builder. Please use a database instance instead.");let t=(0,J.orderSelectedFields)(this.config.fields),i=this.session[e?"prepareOneTimeQuery":"prepareQuery"](this.dialect.sqlToQuery(this.getSQL()),t,"all",!0,void 0,{type:"select",tables:[...this.usedTables]},this.cacheConfig);return i.joinsNotNullableMap=this.joinsNotNullableMap,i}$withCache(e){return this.cacheConfig=void 0===e?{config:{},enable:!0,autoInvalidate:!0}:!1===e?{enable:!1}:{enable:!0,autoInvalidate:!0,...e},this}prepare(){return this._prepare(!1)}run=e=>this._prepare().run(e);all=e=>this._prepare().all(e);get=e=>this._prepare().get(e);values=e=>this._prepare().values(e);async execute(){return this.all()}}function eG(e,t){return(i,n,...r)=>{let a=[n,...r].map(i=>({type:e,isAll:t,rightSelect:i}));for(let e of a)if(!(0,J.haveSameKeys)(i.getSelectedFields(),e.rightSelect.getSelectedFields()))throw Error("Set operator error (union / intersect / except): selected fields are not the same or are in a different order");return i.addSetOperators(a)}}(0,J.applyMixins)(eW,[eU]);let eX=()=>({union:eY,unionAll:eH,intersect:e0,except:e1}),eY=eG("union",!1),eH=eG("union",!0),e0=eG("intersect",!1),e1=eG("except",!1);class e6{static [r.entityKind]="SQLiteQueryBuilder";dialect;dialectConfig;constructor(e){this.dialect=(0,r.is)(e,eC)?e:void 0,this.dialectConfig=(0,r.is)(e,eC)?void 0:e}$with=(e,t)=>{let i=this;return{as:n=>("function"==typeof n&&(n=n(i)),new Proxy(new I.WithSubquery(n.getSQL(),t??("getSelectedFields"in n?n.getSelectedFields()??{}:{}),e,!0),new N({alias:e,sqlAliasedBehavior:"alias",sqlBehavior:"error"})))}};with(...e){let t=this;return{select:function(i){return new eJ({fields:i??void 0,session:void 0,dialect:t.getDialect(),withList:e})},selectDistinct:function(i){return new eJ({fields:i??void 0,session:void 0,dialect:t.getDialect(),withList:e,distinct:!0})}}}select(e){return new eJ({fields:e??void 0,session:void 0,dialect:this.getDialect()})}selectDistinct(e){return new eJ({fields:e??void 0,session:void 0,dialect:this.getDialect(),distinct:!0})}getDialect(){return this.dialect||(this.dialect=new eD(this.dialectConfig)),this.dialect}}class e4 extends eU{constructor(e,t,i,n){super(),this.table=e,this.session=t,this.dialect=i,this.config={table:e,withList:n}}static [r.entityKind]="SQLiteDelete";config;where(e){return this.config.where=e,this}orderBy(...e){if("function"==typeof e[0]){let t=e[0](new Proxy(this.config.table[s.Table.Symbol.Columns],new N({sqlAliasedBehavior:"alias",sqlBehavior:"sql"}))),i=Array.isArray(t)?t:[t];this.config.orderBy=i}else this.config.orderBy=e;return this}limit(e){return this.config.limit=e,this}returning(e=this.table[eP.Symbol.Columns]){return this.config.returning=(0,J.orderSelectedFields)(e),this}getSQL(){return this.dialect.buildDeleteQuery(this.config)}toSQL(){let{typings:e,...t}=this.dialect.sqlToQuery(this.getSQL());return t}_prepare(e=!0){return this.session[e?"prepareOneTimeQuery":"prepareQuery"](this.dialect.sqlToQuery(this.getSQL()),this.config.returning,this.config.returning?"all":"run",!0,void 0,{type:"delete",tables:eQ(this.config.table)})}prepare(){return this._prepare(!1)}run=e=>this._prepare().run(e);all=e=>this._prepare().all(e);get=e=>this._prepare().get(e);values=e=>this._prepare().values(e);async execute(e){return this._prepare().execute(e)}$dynamic(){return this}}class e2{constructor(e,t,i,n){this.table=e,this.session=t,this.dialect=i,this.withList=n}static [r.entityKind]="SQLiteInsertBuilder";values(e){if(0===(e=Array.isArray(e)?e:[e]).length)throw Error("values() must be called with at least one value");let t=e.map(e=>{let t={},i=this.table[s.Table.Symbol.Columns];for(let n of Object.keys(e)){let a=e[n];t[n]=(0,r.is)(a,c.SQL)?a:new c.Param(a,i[n])}return t});return new e9(this.table,t,this.session,this.dialect,this.withList)}select(e){let t="function"==typeof e?e(new e6):e;if(!(0,r.is)(t,c.SQL)&&!(0,J.haveSameKeys)(this.table[s.Columns],t._.selectedFields))throw Error("Insert select error: selected fields are not the same or are in a different order compared to the table definition");return new e9(this.table,t,this.session,this.dialect,this.withList,!0)}}class e9 extends eU{constructor(e,t,i,n,r,a){super(),this.session=i,this.dialect=n,this.config={table:e,values:t,withList:r,select:a}}static [r.entityKind]="SQLiteInsert";config;returning(e=this.config.table[eP.Symbol.Columns]){return this.config.returning=(0,J.orderSelectedFields)(e),this}onConflictDoNothing(e={}){if(this.config.onConflict||(this.config.onConflict=[]),void 0===e.target)this.config.onConflict.push(c.sql` on conflict do nothing`);else{let t=Array.isArray(e.target)?c.sql`${e.target}`:c.sql`${[e.target]}`,i=e.where?c.sql` where ${e.where}`:c.sql``;this.config.onConflict.push(c.sql` on conflict ${t} do nothing${i}`)}return this}onConflictDoUpdate(e){if(e.where&&(e.targetWhere||e.setWhere))throw Error('You cannot use both "where" and "targetWhere"/"setWhere" at the same time - "where" is deprecated, use "targetWhere" or "setWhere" instead.');this.config.onConflict||(this.config.onConflict=[]);let t=e.where?c.sql` where ${e.where}`:void 0,i=e.targetWhere?c.sql` where ${e.targetWhere}`:void 0,n=e.setWhere?c.sql` where ${e.setWhere}`:void 0,r=Array.isArray(e.target)?c.sql`${e.target}`:c.sql`${[e.target]}`,a=this.dialect.buildUpdateSet(this.config.table,(0,J.mapUpdateSet)(this.config.table,e.set));return this.config.onConflict.push(c.sql` on conflict ${r}${i} do update set ${a}${t}${n}`),this}getSQL(){return this.dialect.buildInsertQuery(this.config)}toSQL(){let{typings:e,...t}=this.dialect.sqlToQuery(this.getSQL());return t}_prepare(e=!0){return this.session[e?"prepareOneTimeQuery":"prepareQuery"](this.dialect.sqlToQuery(this.getSQL()),this.config.returning,this.config.returning?"all":"run",!0,void 0,{type:"insert",tables:eQ(this.config.table)})}prepare(){return this._prepare(!1)}run=e=>this._prepare().run(e);all=e=>this._prepare().all(e);get=e=>this._prepare().get(e);values=e=>this._prepare().values(e);async execute(){return this.config.returning?this.all():this.run()}$dynamic(){return this}}class e5{constructor(e,t,i,n){this.table=e,this.session=t,this.dialect=i,this.withList=n}static [r.entityKind]="SQLiteUpdateBuilder";set(e){return new e3(this.table,(0,J.mapUpdateSet)(this.table,e),this.session,this.dialect,this.withList)}}class e3 extends eU{constructor(e,t,i,n,r){super(),this.session=i,this.dialect=n,this.config={set:t,table:e,withList:r,joins:[]}}static [r.entityKind]="SQLiteUpdate";config;from(e){return this.config.from=e,this}createJoin(e){return(t,i)=>{let n=(0,J.getTableLikeName)(t);if("string"==typeof n&&this.config.joins.some(e=>e.alias===n))throw Error(`Alias "${n}" is already used in this query`);if("function"==typeof i){let e=this.config.from?(0,r.is)(t,eP)?t[s.Table.Symbol.Columns]:(0,r.is)(t,I.Subquery)?t._.selectedFields:(0,r.is)(t,eA)?t[v.ViewBaseConfig].selectedFields:void 0:void 0;i=i(new Proxy(this.config.table[s.Table.Symbol.Columns],new N({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})),e&&new Proxy(e,new N({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})))}return this.config.joins.push({on:i,table:t,joinType:e,alias:n}),this}}leftJoin=this.createJoin("left");rightJoin=this.createJoin("right");innerJoin=this.createJoin("inner");fullJoin=this.createJoin("full");where(e){return this.config.where=e,this}orderBy(...e){if("function"==typeof e[0]){let t=e[0](new Proxy(this.config.table[s.Table.Symbol.Columns],new N({sqlAliasedBehavior:"alias",sqlBehavior:"sql"}))),i=Array.isArray(t)?t:[t];this.config.orderBy=i}else this.config.orderBy=e;return this}limit(e){return this.config.limit=e,this}returning(e=this.config.table[eP.Symbol.Columns]){return this.config.returning=(0,J.orderSelectedFields)(e),this}getSQL(){return this.dialect.buildUpdateQuery(this.config)}toSQL(){let{typings:e,...t}=this.dialect.sqlToQuery(this.getSQL());return t}_prepare(e=!0){return this.session[e?"prepareOneTimeQuery":"prepareQuery"](this.dialect.sqlToQuery(this.getSQL()),this.config.returning,this.config.returning?"all":"run",!0,void 0,{type:"insert",tables:eQ(this.config.table)})}prepare(){return this._prepare(!1)}run=e=>this._prepare().run(e);all=e=>this._prepare().all(e);get=e=>this._prepare().get(e);values=e=>this._prepare().values(e);async execute(){return this.config.returning?this.all():this.run()}$dynamic(){return this}}var e8=c;class e7 extends e8.SQL{constructor(e){super(e7.buildEmbeddedCount(e.source,e.filters).queryChunks),this.params=e,this.session=e.session,this.sql=e7.buildCount(e.source,e.filters)}sql;static [r.entityKind]="SQLiteCountBuilderAsync";[Symbol.toStringTag]="SQLiteCountBuilderAsync";session;static buildEmbeddedCount(e,t){return e8.sql`(select count(*) from ${e}${e8.sql.raw(" where ").if(t)}${t})`}static buildCount(e,t){return e8.sql`select count(*) from ${e}${e8.sql.raw(" where ").if(t)}${t}`}then(e,t){return Promise.resolve(this.session.count(this.sql)).then(e,t)}catch(e){return this.then(void 0,e)}finally(e){return this.then(t=>(e?.(),t),t=>{throw e?.(),t})}}class te{constructor(e,t,i,n,r,a,s,o){this.mode=e,this.fullSchema=t,this.schema=i,this.tableNamesMap=n,this.table=r,this.tableConfig=a,this.dialect=s,this.session=o}static [r.entityKind]="SQLiteAsyncRelationalQueryBuilder";findMany(e){return"sync"===this.mode?new ti(this.fullSchema,this.schema,this.tableNamesMap,this.table,this.tableConfig,this.dialect,this.session,e||{},"many"):new tt(this.fullSchema,this.schema,this.tableNamesMap,this.table,this.tableConfig,this.dialect,this.session,e||{},"many")}findFirst(e){return"sync"===this.mode?new ti(this.fullSchema,this.schema,this.tableNamesMap,this.table,this.tableConfig,this.dialect,this.session,e?{...e,limit:1}:{limit:1},"first"):new tt(this.fullSchema,this.schema,this.tableNamesMap,this.table,this.tableConfig,this.dialect,this.session,e?{...e,limit:1}:{limit:1},"first")}}class tt extends eU{constructor(e,t,i,n,r,a,s,o,l){super(),this.fullSchema=e,this.schema=t,this.tableNamesMap=i,this.table=n,this.tableConfig=r,this.dialect=a,this.session=s,this.config=o,this.mode=l}static [r.entityKind]="SQLiteAsyncRelationalQuery";mode;getSQL(){return this.dialect.buildRelationalQuery({fullSchema:this.fullSchema,schema:this.schema,tableNamesMap:this.tableNamesMap,table:this.table,tableConfig:this.tableConfig,queryConfig:this.config,tableAlias:this.tableConfig.tsName}).sql}_prepare(e=!1){let{query:t,builtQuery:i}=this._toSQL();return this.session[e?"prepareOneTimeQuery":"prepareQuery"](i,void 0,"first"===this.mode?"get":"all",!0,(e,i)=>{let n=e.map(e=>(function e(t,i,n,a,s=e=>e){let l={};for(let[u,d]of a.entries())if(d.isJson){let a=i.relations[d.tsKey],o=n[u],c="string"==typeof o?JSON.parse(o):o;l[d.tsKey]=(0,r.is)(a,h)?c&&e(t,t[d.relationTableTsKey],c,d.selection,s):c.map(i=>e(t,t[d.relationTableTsKey],i,d.selection,s))}else{let e,t=s(n[u]),i=d.field;e=(0,r.is)(i,o.Column)?i:(0,r.is)(i,c.SQL)?i.decoder:i.sql.decoder,l[d.tsKey]=null===t?null:e.mapFromDriverValue(t)}return l})(this.schema,this.tableConfig,e,t.selection,i));return"first"===this.mode?n[0]:n})}prepare(){return this._prepare(!1)}_toSQL(){let e=this.dialect.buildRelationalQuery({fullSchema:this.fullSchema,schema:this.schema,tableNamesMap:this.tableNamesMap,table:this.table,tableConfig:this.tableConfig,queryConfig:this.config,tableAlias:this.tableConfig.tsName}),t=this.dialect.sqlToQuery(e.sql);return{query:e,builtQuery:t}}toSQL(){return this._toSQL().builtQuery}executeRaw(){return"first"===this.mode?this._prepare(!1).get():this._prepare(!1).all()}async execute(){return this.executeRaw()}}class ti extends tt{static [r.entityKind]="SQLiteSyncRelationalQuery";sync(){return this.executeRaw()}}class tn extends eU{constructor(e,t,i,n,r){super(),this.execute=e,this.getSQL=t,this.dialect=n,this.mapBatchResult=r,this.config={action:i}}static [r.entityKind]="SQLiteRaw";config;getQuery(){return{...this.dialect.sqlToQuery(this.getSQL()),method:this.config.action}}mapResult(e,t){return t?this.mapBatchResult(e):e}_prepare(){return this}isResponseInArrayMode(){return!1}}class tr{constructor(e,t,i,n){this.resultKind=e,this.dialect=t,this.session=i,this._=n?{schema:n.schema,fullSchema:n.fullSchema,tableNamesMap:n.tableNamesMap}:{schema:void 0,fullSchema:{},tableNamesMap:{}},this.query={};const r=this.query;if(this._.schema)for(const[a,s]of Object.entries(this._.schema))r[a]=new te(e,n.fullSchema,this._.schema,this._.tableNamesMap,n.fullSchema[a],s,t,i);this.$cache={invalidate:async e=>{}}}static [r.entityKind]="BaseSQLiteDatabase";query;$with=(e,t)=>{let i=this;return{as:n=>("function"==typeof n&&(n=n(new e6(i.dialect))),new Proxy(new I.WithSubquery(n.getSQL(),t??("getSelectedFields"in n?n.getSelectedFields()??{}:{}),e,!0),new N({alias:e,sqlAliasedBehavior:"alias",sqlBehavior:"error"})))}};$count(e,t){return new e7({source:e,filters:t,session:this.session})}with(...e){let t=this;return{select:function(i){return new eJ({fields:i??void 0,session:t.session,dialect:t.dialect,withList:e})},selectDistinct:function(i){return new eJ({fields:i??void 0,session:t.session,dialect:t.dialect,withList:e,distinct:!0})},update:function(i){return new e5(i,t.session,t.dialect,e)},insert:function(i){return new e2(i,t.session,t.dialect,e)},delete:function(i){return new e4(i,t.session,t.dialect,e)}}}select(e){return new eJ({fields:e??void 0,session:this.session,dialect:this.dialect})}selectDistinct(e){return new eJ({fields:e??void 0,session:this.session,dialect:this.dialect,distinct:!0})}update(e){return new e5(e,this.session,this.dialect)}$cache;insert(e){return new e2(e,this.session,this.dialect)}delete(e){return new e4(e,this.session,this.dialect)}run(e){let t="string"==typeof e?c.sql.raw(e):e.getSQL();return"async"===this.resultKind?new tn(async()=>this.session.run(t),()=>t,"run",this.dialect,this.session.extractRawRunValueFromBatchResult.bind(this.session)):this.session.run(t)}all(e){let t="string"==typeof e?c.sql.raw(e):e.getSQL();return"async"===this.resultKind?new tn(async()=>this.session.all(t),()=>t,"all",this.dialect,this.session.extractRawAllValueFromBatchResult.bind(this.session)):this.session.all(t)}get(e){let t="string"==typeof e?c.sql.raw(e):e.getSQL();return"async"===this.resultKind?new tn(async()=>this.session.get(t),()=>t,"get",this.dialect,this.session.extractRawGetValueFromBatchResult.bind(this.session)):this.session.get(t)}values(e){let t="string"==typeof e?c.sql.raw(e):e.getSQL();return"async"===this.resultKind?new tn(async()=>this.session.values(t),()=>t,"values",this.dialect,this.session.extractRawValuesValueFromBatchResult.bind(this.session)):this.session.values(t)}transaction(e,t){return this.session.transaction(e,t)}}class ta{static [r.entityKind]="Cache"}class ts extends ta{strategy(){return"all"}static [r.entityKind]="NoopCache";async get(e){}async put(e,t,i,n){}async onMutate(e){}}async function to(e,t){let i=`${e}-${JSON.stringify(t)}`,n=new TextEncoder().encode(i);return[...new Uint8Array(await crypto.subtle.digest("SHA-256",n))].map(e=>e.toString(16).padStart(2,"0")).join("")}class tl extends eU{constructor(e){super(),this.resultCb=e}static [r.entityKind]="ExecuteResultSync";async execute(){return this.resultCb()}sync(){return this.resultCb()}}class tu{constructor(e,t,i,n,r,a){this.mode=e,this.executeMethod=t,this.query=i,this.cache=n,this.queryMetadata=r,this.cacheConfig=a,n&&"all"===n.strategy()&&void 0===a&&(this.cacheConfig={enable:!0,autoInvalidate:!0}),this.cacheConfig?.enable||(this.cacheConfig=void 0)}static [r.entityKind]="PreparedQuery";joinsNotNullableMap;async queryWithCache(e,t,i){if(void 0===this.cache||(0,r.is)(this.cache,ts)||void 0===this.queryMetadata||this.cacheConfig&&!this.cacheConfig.enable)try{return await i()}catch(i){throw new C(e,t,i)}if(("insert"===this.queryMetadata.type||"update"===this.queryMetadata.type||"delete"===this.queryMetadata.type)&&this.queryMetadata.tables.length>0)try{let[e]=await Promise.all([i(),this.cache.onMutate({tables:this.queryMetadata.tables})]);return e}catch(i){throw new C(e,t,i)}if(!this.cacheConfig)try{return await i()}catch(i){throw new C(e,t,i)}if("select"===this.queryMetadata.type){let n=await this.cache.get(this.cacheConfig.tag??await to(e,t),this.queryMetadata.tables,void 0!==this.cacheConfig.tag,this.cacheConfig.autoInvalidate);if(void 0===n){let n;try{n=await i()}catch(i){throw new C(e,t,i)}return await this.cache.put(this.cacheConfig.tag??await to(e,t),n,this.cacheConfig.autoInvalidate?this.queryMetadata.tables:[],void 0!==this.cacheConfig.tag,this.cacheConfig.config),n}return n}try{return await i()}catch(i){throw new C(e,t,i)}}getQuery(){return this.query}mapRunResult(e,t){return e}mapAllResult(e,t){throw Error("Not implemented")}mapGetResult(e,t){throw Error("Not implemented")}execute(e){return"async"===this.mode?this[this.executeMethod](e):new tl(()=>this[this.executeMethod](e))}mapResult(e,t){switch(this.executeMethod){case"run":return this.mapRunResult(e,t);case"all":return this.mapAllResult(e,t);case"get":return this.mapGetResult(e,t)}}}class tc{constructor(e){this.dialect=e}static [r.entityKind]="SQLiteSession";prepareOneTimeQuery(e,t,i,n,r,a,s){return this.prepareQuery(e,t,i,n,r,a,s)}run(e){let t=this.dialect.sqlToQuery(e);try{return this.prepareOneTimeQuery(t,void 0,"run",!1).run()}catch(e){throw new A({cause:e,message:`Failed to run the query '${t.sql}'`})}}extractRawRunValueFromBatchResult(e){return e}all(e){return this.prepareOneTimeQuery(this.dialect.sqlToQuery(e),void 0,"run",!1).all()}extractRawAllValueFromBatchResult(e){throw Error("Not implemented")}get(e){return this.prepareOneTimeQuery(this.dialect.sqlToQuery(e),void 0,"run",!1).get()}extractRawGetValueFromBatchResult(e){throw Error("Not implemented")}values(e){return this.prepareOneTimeQuery(this.dialect.sqlToQuery(e),void 0,"run",!1).values()}async count(e){return(await this.values(e))[0][0]}extractRawValuesValueFromBatchResult(e){throw Error("Not implemented")}}class td extends tr{constructor(e,t,i,n,r=0){super(e,t,i,n),this.schema=n,this.nestedIndex=r}static [r.entityKind]="SQLiteTransaction";rollback(){throw new D}}class tf extends tc{constructor(e,t,i,n={}){super(t),this.client=e,this.schema=i,this.logger=n.logger??new a.NoopLogger,this.cache=n.cache??new ts}static [r.entityKind]="BetterSQLiteSession";logger;cache;prepareQuery(e,t,i,n,r,a,s){return new tp(this.client.prepare(e.sql),e,this.logger,this.cache,a,s,t,i,n,r)}transaction(e,t={}){let i=new tm("sync",this.dialect,this,this.schema);return this.client.transaction(e)[t.behavior??"deferred"](i)}}class tm extends td{static [r.entityKind]="BetterSQLiteTransaction";transaction(e){let t=`sp${this.nestedIndex}`,i=new tm("sync",this.dialect,this.session,this.schema,this.nestedIndex+1);this.session.run(c.sql.raw(`savepoint ${t}`));try{let n=e(i);return this.session.run(c.sql.raw(`release savepoint ${t}`)),n}catch(e){throw this.session.run(c.sql.raw(`rollback to savepoint ${t}`)),e}}}class tp extends tu{constructor(e,t,i,n,r,a,s,o,l,u){super("sync",o,t,n,r,a),this.stmt=e,this.logger=i,this.fields=s,this._isResponseInArrayMode=l,this.customResultMapper=u}static [r.entityKind]="BetterSQLitePreparedQuery";run(e){let t=(0,c.fillPlaceholders)(this.query.params,e??{});return this.logger.logQuery(this.query.sql,t),this.stmt.run(...t)}all(e){let{fields:t,joinsNotNullableMap:i,query:n,logger:r,stmt:a,customResultMapper:s}=this;if(!t&&!s){let t=(0,c.fillPlaceholders)(n.params,e??{});return r.logQuery(n.sql,t),a.all(...t)}let o=this.values(e);return s?s(o):o.map(e=>(0,J.mapResultRow)(t,e,i))}get(e){let t=(0,c.fillPlaceholders)(this.query.params,e??{});this.logger.logQuery(this.query.sql,t);let{fields:i,stmt:n,joinsNotNullableMap:r,customResultMapper:a}=this;if(!i&&!a)return n.get(...t);let s=n.raw().get(...t);if(s)return a?a([s]):(0,J.mapResultRow)(i,s,r)}values(e){let t=(0,c.fillPlaceholders)(this.query.params,e??{});return this.logger.logQuery(this.query.sql,t),this.stmt.raw().all(...t)}isResponseInArrayMode(){return this._isResponseInArrayMode}}class th extends tr{static [r.entityKind]="BetterSQLite3Database"}function tg(e,t={}){let i,n,o=new eD({casing:t.casing});if(!0===t.logger?i=new a.DefaultLogger:!1!==t.logger&&(i=t.logger),t.schema){let e=function(e,t){1===Object.keys(e).length&&"default"in e&&!(0,r.is)(e.default,s.Table)&&(e=e.default);let i={},n={},a={};for(let[o,u]of Object.entries(e))if((0,r.is)(u,s.Table)){let e=(0,s.getTableUniqueName)(u),t=n[e];for(let n of(i[e]=o,a[o]={tsName:o,dbName:u[s.Table.Symbol.Name],schema:u[s.Table.Symbol.Schema],columns:u[s.Table.Symbol.Columns],relations:t?.relations??{},primaryKey:t?.primaryKey??[]},Object.values(u[s.Table.Symbol.Columns])))n.primary&&a[o].primaryKey.push(n);let c=u[s.Table.Symbol.ExtraConfigBuilder]?.(u[s.Table.Symbol.ExtraConfigColumns]);if(c)for(let e of Object.values(c))(0,r.is)(e,l.PrimaryKeyBuilder)&&a[o].primaryKey.push(...e.columns)}else if((0,r.is)(u,p)){let e,r=(0,s.getTableUniqueName)(u.table),o=i[r];for(let[i,s]of Object.entries(u.config(t(u.table))))if(o){let t=a[o];t.relations[i]=s,e&&t.primaryKey.push(...e)}else r in n||(n[r]={relations:{},primaryKey:e}),n[r].relations[i]=s}return{tables:a,tableNamesMap:i}}(t.schema,y);n={fullSchema:t.schema,schema:e.tables,tableNamesMap:e.tableNamesMap}}let u=new tf(e,o,n,{logger:i}),c=new th("sync",o,u,n);return c.$client=e,c}function ty(...e){if(void 0===e[0]||"string"==typeof e[0])return tg(void 0===e[0]?new n.default:new n.default(e[0]),e[1]);if((0,J.isConfig)(e[0])){let{connection:t,client:i,...r}=e[0];if(i)return tg(i,r);if("object"==typeof t){let{source:e,...i}=t;return tg(new n.default(e,i),r)}return tg(new n.default(t),r)}return tg(e[0],e[1])}(ty||(ty={})).mock=function(e){return tg({},e)};var tv=e.i(902157),tb=e.i(750227);let tx=c.sql`CURRENT_TIMESTAMP`,t$=eT("users",{id:eN("id").primaryKey(),username:eN("username").notNull().unique(),passwordHash:eN("password_hash").notNull(),role:eN("role",{enum:["admin","user"]}).notNull().default("user"),createdAt:eN("created_at").notNull().default(tx)}),t_=eT("sessions",{id:eN("id").primaryKey(),userId:eN("user_id").notNull().references(()=>t$.id,{onDelete:"cascade"}),expiresAt:ef("expires_at",{mode:"timestamp"}).notNull(),createdAt:eN("created_at").notNull().default(tx)},e=>[eM("sessions_user_idx").on(e.userId)]),tS=eT("api_keys",{id:eN("id").primaryKey(),userId:eN("user_id").notNull().references(()=>t$.id,{onDelete:"cascade"}),name:eN("name").notNull(),prefix:eN("prefix").notNull(),keyHash:eN("key_hash").notNull().unique(),lastUsedAt:eN("last_used_at"),createdAt:eN("created_at").notNull().default(tx)},e=>[eM("api_keys_user_idx").on(e.userId)]),tw=eT("providers",{id:eN("id").primaryKey(),name:eN("name").notNull().unique(),adapterId:eN("adapter_id").notNull().default("openai"),baseUrl:eN("base_url").notNull(),apiVersion:eN("api_version"),apiKeyEncrypted:eN("api_key_encrypted"),defaultParams:eN("default_params",{mode:"json"}).$type().default({}),httpProxy:eN("http_proxy",{mode:"json"}).$type(),documentPage:eN("document_page"),modelPage:eN("model_page"),healthCheckUrl:eN("health_check_url"),lastHealthStatus:eN("last_health_status",{enum:["ok","down"]}),lastHealthCheckedAt:eN("last_health_checked_at"),lastHealthError:eN("last_health_error"),isLocal:ef("is_local",{mode:"boolean"}).notNull().default(!1),enabled:ef("enabled",{mode:"boolean"}).notNull().default(!0),createdAt:eN("created_at").notNull().default(tx),updatedAt:eN("updated_at").notNull().default(tx)}),tk=eT("models",{id:eN("id").primaryKey(),name:eN("name").notNull().unique(),providerId:eN("provider_id").notNull().references(()=>tw.id,{onDelete:"cascade"}),upstreamModelId:eN("upstream_model_id").notNull(),type:eN("type").notNull().default("chat"),defaultParams:eN("default_params",{mode:"json"}).$type().default({}),contextWindow:ef("context_window"),maxTokens:ef("max_tokens"),outputDimension:ef("output_dimension"),pricing:eN("pricing",{mode:"json"}).$type(),description:eN("description"),knowledgeDate:eN("knowledge_date"),timeout:ef("timeout").notNull().default(3600),maxRetries:ef("max_retries").notNull().default(2),httpProxy:eN("http_proxy",{mode:"json"}).$type(),enabled:ef("enabled",{mode:"boolean"}).notNull().default(!0),apiVariantId:eN("api_variant_id"),discoveredMetadata:eN("discovered_metadata",{mode:"json"}).$type(),createdAt:eN("created_at").notNull().default(tx),updatedAt:eN("updated_at").notNull().default(tx)},e=>[eM("models_provider_idx").on(e.providerId),eM("models_type_idx").on(e.type)]),tI=eT("conversations",{id:eN("id").primaryKey(),userId:eN("user_id").notNull().references(()=>t$.id,{onDelete:"cascade"}),title:eN("title").notNull().default("New Chat"),config:eN("config",{mode:"json"}).$type().default({}),groupId:eN("group_id"),isDeleted:ef("is_deleted",{mode:"boolean"}).notNull().default(!1),createdAt:eN("created_at").notNull().default(tx),updatedAt:eN("updated_at").notNull().default(tx)},e=>[eM("conversations_user_idx").on(e.userId),eM("conversations_updated_idx").on(e.updatedAt),eM("conversations_user_active_updated_idx").on(e.userId,e.isDeleted,e.updatedAt)]),tN=eT("messages",{id:eN("id").primaryKey(),conversationId:eN("conversation_id").notNull().references(()=>tI.id,{onDelete:"cascade"}),role:eN("role",{enum:["user","assistant","system","tool"]}).notNull(),content:eN("content",{mode:"json"}).$type().notNull(),reasoningContent:eN("reasoning_content"),modelId:eN("model_id"),generationId:eN("generation_id"),parentId:eN("parent_id"),isActive:ef("is_active",{mode:"boolean"}).notNull().default(!0),rating:eN("rating",{enum:["up","down"]}),feedback:eN("feedback"),error:eN("error"),createdAt:eN("created_at").notNull().default(tx)},e=>[eM("messages_conv_idx").on(e.conversationId),eM("messages_parent_idx").on(e.parentId),eM("messages_conv_active_created_idx").on(e.conversationId,e.isActive,e.createdAt)]),tO=eT("generation_logs",{id:eN("id").primaryKey(),userId:eN("user_id").notNull().references(()=>t$.id,{onDelete:"cascade"}),modelName:eN("model_name").notNull(),capability:eN("capability"),status:eN("status",{enum:["pending","completed","failed"]}).notNull().default("pending"),input:eN("input",{mode:"json"}).$type(),inputSummary:eN("input_summary"),output:eN("output"),reason:eN("reason"),generationKwargs:eN("generation_kwargs",{mode:"json"}).$type().default({}),generation:eN("generation",{mode:"json"}).$type(),conversationId:eN("conversation_id"),messageId:eN("message_id"),promptTokens:ef("prompt_tokens"),completionTokens:ef("completion_tokens"),totalTokens:ef("total_tokens"),firstTokenLatencyMs:ef("first_token_latency_ms"),totalLatencyMs:ef("total_latency_ms"),isDeleted:ef("is_deleted",{mode:"boolean"}).notNull().default(!1),createdAt:eN("created_at").notNull().default(tx),updatedAt:eN("updated_at").notNull().default(tx)},e=>[eM("gen_logs_user_idx").on(e.userId),eM("gen_logs_model_idx").on(e.modelName),eM("gen_logs_status_idx").on(e.status),eM("gen_logs_capability_idx").on(e.capability),eM("gen_logs_created_idx").on(e.createdAt),eM("gen_logs_user_deleted_created_idx").on(e.userId,e.isDeleted,e.createdAt),eM("gen_logs_cap_deleted_created_idx").on(e.capability,e.isDeleted,e.createdAt),eM("gen_logs_status_deleted_created_idx").on(e.status,e.isDeleted,e.createdAt)]),tP=eT("user_preferences",{userId:eN("user_id").primaryKey().references(()=>t$.id,{onDelete:"cascade"}),preferences:eN("preferences",{mode:"json"}).$type().notNull().default({}),updatedAt:eN("updated_at").notNull().default(tx)}),tT=eT("tools",{id:eN("id").primaryKey(),name:eN("name").notNull().unique(),description:eN("description").notNull().default(""),parameters:eN("parameters",{mode:"json"}).$type().notNull().default({}),webhookUrl:eN("webhook_url"),enabled:ef("enabled",{mode:"boolean"}).notNull().default(!0),createdAt:eN("created_at").notNull().default(tx),updatedAt:eN("updated_at").notNull().default(tx)}),tE=eT("mcp_servers",{id:eN("id").primaryKey(),name:eN("name").notNull().unique(),description:eN("description").notNull().default(""),transport:eN("transport",{enum:["stdio","http"]}).notNull(),config:eN("config",{mode:"json"}).$type().notNull().default({}),enabled:ef("enabled",{mode:"boolean"}).notNull().default(!0),lastCheckStatus:eN("last_check_status",{enum:["ok","error"]}),lastCheckAt:eN("last_check_at"),lastCheckError:eN("last_check_error"),toolsCache:eN("tools_cache",{mode:"json"}).$type(),resourcesCache:eN("resources_cache",{mode:"json"}).$type(),promptsCache:eN("prompts_cache",{mode:"json"}).$type(),serverInfo:eN("server_info",{mode:"json"}).$type(),createdAt:eN("created_at").notNull().default(tx),updatedAt:eN("updated_at").notNull().default(tx)});e.s(["apiKeys",0,tS,"conversations",0,tI,"generationLogs",0,tO,"mcpServers",0,tE,"messages",0,tN,"models",0,tk,"providers",0,tw,"sessions",0,t_,"tools",0,tT,"userPreferences",0,tP,"users",0,t$],401632);var tA=e.i(401632);let tC=process.env.LOOM_USER_CWD||process.cwd(),tD=process.env.LOOM_DB_PATH||(0,tb.resolve)(tC,"data","loom.db"),tz=globalThis.__loom_db__??function(){let e=(0,tb.dirname)(tD);(0,tv.existsSync)(e)||(0,tv.mkdirSync)(e,{recursive:!0});let t=new n.default(tD);t.pragma("journal_mode = WAL"),t.pragma("synchronous = NORMAL"),t.pragma("busy_timeout = 5000"),t.pragma("cache_size = -64000"),t.pragma("temp_store = MEMORY"),t.pragma("foreign_keys = ON");let r=ty(t,{schema:tA}),a=process.env.LOOM_PACKAGE_ROOT||process.cwd(),s=(0,tb.resolve)(a,"drizzle");if((0,tv.existsSync)(s))try{var o;let e;o={migrationsFolder:s},e=function(e){let t=e.migrationsFolder,n=[],r=`${t}/meta/_journal.json`;if(!tv.default.existsSync(r))throw Error("Can't find meta/_journal.json file");for(let e of JSON.parse(tv.default.readFileSync(`${t}/meta/_journal.json`).toString()).entries){let r=`${t}/${e.tag}.sql`;try{let r=tv.default.readFileSync(`${t}/${e.tag}.sql`).toString(),a=r.split("--> statement-breakpoint").map(e=>e);n.push({sql:a,bps:e.breakpoints,folderMillis:e.when,hash:i.default.createHash("sha256").update(r).digest("hex")})}catch{throw Error(`No file ${r} found in ${t} folder`)}}return n}(o),r.dialect.migrate(e,r.session,o)}catch(e){throw console.error("[loom] Failed to run migrations:",e),e}return r}();e.s(["db",0,tz],846344);var tj=e.i(493458);let tU="aes-256-gcm",tL=null;function tZ(){if(tL)return tL;let e=process.env.LOOM_MASTER_KEY;if(!e)throw Error("LOOM_MASTER_KEY environment variable is required to encrypt/decrypt provider API keys.");return tL=(0,i.createHash)("sha256").update(e).digest()}function tq(e){if(!e)return null;let t=tZ(),n=(0,i.randomBytes)(12),r=(0,i.createCipheriv)(tU,t,n),a=Buffer.concat([r.update(e,"utf8"),r.final()]),s=r.getAuthTag();return Buffer.concat([n,s,a]).toString("base64")}function tR(e){return(0,i.createHash)("sha256").update(e).digest("hex")}function tB(e=32){return(0,i.randomBytes)(e).toString("base64url")}e.s(["decryptSecret",0,function(e){if(!e)return null;let t=tZ(),n=Buffer.from(e,"base64");if(n.length<28)throw Error("Encrypted payload too short");let r=n.subarray(0,12),a=n.subarray(12,28),s=n.subarray(28),o=(0,i.createDecipheriv)(tU,t,r);return o.setAuthTag(a),Buffer.concat([o.update(s),o.final()]).toString("utf8")},"encryptSecret",0,tq,"generateRandomToken",0,tB,"sha256",0,tR],425568);var tM=e.i(89171);function tK(e,t){return tM.NextResponse.json({code:0,msg:"ok",data:e},t)}function tF(e,t=400,i=-1,n){return tM.NextResponse.json({code:i,msg:e,data:null},{...n,status:t})}class tQ extends Error{status;code;constructor(e,t=400,i=-1){super(e),this.status=t,this.code=i,this.name="HttpError"}}function tJ(e){return new tQ(e,400,-1)}function tV(e="Unauthorized"){return new tQ(e,401,-1)}function tW(e="Forbidden"){return new tQ(e,403,-1)}function tG(e){if(e instanceof tQ)return tF(e.message,e.status,e.code);let t=e instanceof Error?e.message:"Internal server error";return console.error("[loom] unhandled error:",e),tF(t,500,-1)}function tX(e){return{id:e.id,username:e.username,role:e.role,createdAt:e.createdAt}}e.s(["HttpError",0,tQ,"badRequest",0,tJ,"fail",0,tF,"forbidden",0,tW,"handle",0,tG,"notFound",0,function(e="Not found"){return new tQ(e,404,-1)},"ok",0,tK,"unauthorized",0,tV],803028);let tY="loom_session";function tH(){let e=Number(process.env.LOOM_SESSION_TTL_DAYS);return Number.isFinite(e)&&e>0?86400*e*1e3:2592e6}async function t0(e){let t=tB(32),i=tR(t),n=new Date(Date.now()+tH());return tz.insert(t_).values({id:i,userId:e,expiresAt:n}).run(),t}async function t1(e){(await (0,tj.cookies)()).set(tY,e,{httpOnly:!0,sameSite:"lax",secure:!0,path:"/",maxAge:Math.floor(tH()/1e3)})}async function t6(){(await (0,tj.cookies)()).delete(tY)}async function t4(e){if(!e)return;let t=tR(e);tz.delete(t_).where((0,u.eq)(t_.id,t)).run()}async function t2(){let e=await (0,tj.cookies)();return e.get(tY)?.value??null}async function t9(){let e=await t2();if(!e)return null;let t=tR(e),i=tz.select({user:t$,session:t_}).from(t_).innerJoin(t$,(0,u.eq)(t$.id,t_.userId)).where((0,u.eq)(t_.id,t)).get();return i?i.session.expiresAt.getTime()<Date.now()?(tz.delete(t_).where((0,u.lt)(t_.expiresAt,new Date)).run(),null):tX(i.user):null}async function t5(){let e=await t9();if(!e)throw tV();return e}async function t3(){let e=await t5();if("admin"!==e.role)throw tW("Admin required");return e}async function t8(e){let t=(e.headers.get("Authorization")||"").match(/^Bearer\s+(.+)$/i);if(!t)throw tV("Missing Bearer token");let i=tR(t[1].trim()),n=tz.select({user:t$,apiKey:tS}).from(tS).innerJoin(t$,(0,u.eq)(t$.id,tS.userId)).where((0,u.eq)(tS.keyHash,i)).get();if(!n)throw tV("Invalid API key");return function(e,t){if(t){let e=Date.parse(t.endsWith("Z")||t7.test(t)?t:t+"Z");if(Number.isFinite(e)&&Date.now()-e<6e4)return}tz.update(tS).set({lastUsedAt:new Date().toISOString()}).where((0,u.eq)(tS.id,e)).run()}(n.apiKey.id,n.apiKey.lastUsedAt),tX(n.user)}e.s(["SESSION_COOKIE",0,tY,"clearSessionCookie",0,t6,"createSession",0,t0,"destroySession",0,t4,"getCurrentUser",0,t9,"requireAdmin",0,t3,"requireUser",0,t5,"setSessionCookie",0,t1],313795);let t7=/[+-]\d\d:?\d\d$/;async function ie(e){let t=e.headers.get("Authorization");if(t&&/^Bearer\s+/i.test(t))return t8(e);let i=await t9();if(i)return i;throw tV("Missing or invalid credentials")}e.s(["authenticateBearer",0,t8,"generateApiKey",0,function(){let e=tB(32),t=`sk-loom-${e}`;return{plain:t,prefix:t.slice(0,12),hash:tR(t)}}],559747),e.s(["authenticateGateway",0,ie],299207);var it=e.i(254799);function ii(e,t){if("number"!=typeof(e=e||ic))throw Error("Illegal arguments: "+typeof e+", "+typeof t);e<4?e=4:e>31&&(e=31);var i=[];return i.push("$2b$"),e<10&&i.push("0"),i.push(e.toString()),i.push("$"),i.push(il(function(e){try{return crypto.getRandomValues(new Uint8Array(e))}catch{}try{return it.default.randomBytes(e)}catch{}!0;throw Error("Neither WebCryptoAPI nor a crypto module is available. Use bcrypt.setRandomFallback to set an alternative")}(iu),iu)),i.join("")}function ir(e,t,i,n){function r(i){"string"==typeof e&&"number"==typeof t?function(e,t,i){if("function"==typeof t&&(i=t,t=void 0),"function"==typeof e&&(i=e,e=void 0),void 0===e)e=ic;else if("number"!=typeof e)throw Error("illegal arguments: "+typeof e);function n(t){ia(function(){try{t(null,ii(e))}catch(e){t(e)}})}if(!i)return new Promise(function(e,t){n(function(i,n){i?t(i):e(n)})});if("function"!=typeof i)throw Error("Illegal callback: "+typeof i);n(i)}(t,function(t,r){ib(e,r,i,n)}):"string"==typeof e&&"string"==typeof t?ib(e,t,i,n):ia(i.bind(this,Error("Illegal arguments: "+typeof e+", "+typeof t)))}if(!i)return new Promise(function(e,t){r(function(i,n){i?t(i):e(n)})});if("function"!=typeof i)throw Error("Illegal callback: "+typeof i);r(i)}var ia="function"==typeof setImmediate?setImmediate:"object"==typeof scheduler&&"function"==typeof scheduler.postTask?scheduler.postTask.bind(scheduler):setTimeout,is="./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),io=[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,54,55,56,57,58,59,60,61,62,63,-1,-1,-1,-1,-1,-1,-1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,-1,-1,-1,-1,-1,-1,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,-1,-1,-1,-1,-1];function il(e,t){var i,n,r=0,a=[];if(t<=0||t>e.length)throw Error("Illegal len: "+t);for(;r<t;){if(i=255&e[r++],a.push(is[i>>2&63]),i=(3&i)<<4,r>=t||(i|=(n=255&e[r++])>>4&15,a.push(is[63&i]),i=(15&n)<<2,r>=t)){a.push(is[63&i]);break}i|=(n=255&e[r++])>>6&3,a.push(is[63&i]),a.push(is[63&n])}return a.join("")}var iu=16,ic=10,id=[0x243f6a88,0x85a308d3,0x13198a2e,0x3707344,0xa4093822,0x299f31d0,0x82efa98,0xec4e6c89,0x452821e6,0x38d01377,0xbe5466cf,0x34e90c6c,0xc0ac29b7,0xc97c50dd,0x3f84d5b5,0xb5470917,0x9216d5d9,0x8979fb1b],im=[0xd1310ba6,0x98dfb5ac,0x2ffd72db,0xd01adfb7,0xb8e1afed,0x6a267e96,0xba7c9045,0xf12c7f99,0x24a19947,0xb3916cf7,0x801f2e2,0x858efc16,0x636920d8,0x71574e69,0xa458fea3,0xf4933d7e,0xd95748f,0x728eb658,0x718bcd58,0x82154aee,0x7b54a41d,0xc25a59b5,0x9c30d539,0x2af26013,0xc5d1b023,0x286085f0,0xca417918,0xb8db38ef,0x8e79dcb0,0x603a180e,0x6c9e0e8b,0xb01e8a3e,0xd71577c1,0xbd314b27,0x78af2fda,0x55605c60,0xe65525f3,0xaa55ab94,0x57489862,0x63e81440,0x55ca396a,0x2aab10b6,0xb4cc5c34,0x1141e8ce,0xa15486af,0x7c72e993,0xb3ee1411,0x636fbc2a,0x2ba9c55d,0x741831f6,0xce5c3e16,0x9b87931e,0xafd6ba33,0x6c24cf5c,0x7a325381,0x28958677,0x3b8f4898,0x6b4bb9af,0xc4bfe81b,0x66282193,0x61d809cc,0xfb21a991,0x487cac60,0x5dec8032,0xef845d5d,0xe98575b1,0xdc262302,0xeb651b88,0x23893e81,0xd396acc5,0xf6d6ff3,0x83f44239,0x2e0b4482,0xa4842004,0x69c8f04a,0x9e1f9b5e,0x21c66842,0xf6e96c9a,0x670c9c61,0xabd388f0,0x6a51a0d2,0xd8542f68,0x960fa728,0xab5133a3,0x6eef0b6c,0x137a3be4,0xba3bf050,0x7efb2a98,0xa1f1651d,0x39af0176,0x66ca593e,0x82430e88,0x8cee8619,0x456f9fb4,0x7d84a5c3,0x3b8b5ebe,0xe06f75d8,0x85c12073,0x401a449f,0x56c16aa6,0x4ed3aa62,0x363f7706,0x1bfedf72,0x429b023d,0x37d0d724,0xd00a1248,0xdb0fead3,0x49f1c09b,0x75372c9,0x80991b7b,0x25d479d8,0xf6e8def7,0xe3fe501a,0xb6794c3b,0x976ce0bd,0x4c006ba,0xc1a94fb6,0x409f60c4,0x5e5c9ec2,0x196a2463,0x68fb6faf,0x3e6c53b5,0x1339b2eb,0x3b52ec6f,0x6dfc511f,0x9b30952c,0xcc814544,0xaf5ebd09,0xbee3d004,0xde334afd,0x660f2807,0x192e4bb3,0xc0cba857,0x45c8740f,0xd20b5f39,0xb9d3fbdb,0x5579c0bd,0x1a60320a,0xd6a100c6,0x402c7279,0x679f25fe,0xfb1fa3cc,0x8ea5e9f8,0xdb3222f8,0x3c7516df,0xfd616b15,0x2f501ec8,0xad0552ab,0x323db5fa,0xfd238760,0x53317b48,0x3e00df82,0x9e5c57bb,0xca6f8ca0,0x1a87562e,0xdf1769db,0xd542a8f6,0x287effc3,0xac6732c6,0x8c4f5573,0x695b27b0,0xbbca58c8,0xe1ffa35d,0xb8f011a0,0x10fa3d98,0xfd2183b8,0x4afcb56c,0x2dd1d35b,0x9a53e479,0xb6f84565,0xd28e49bc,0x4bfb9790,0xe1ddf2da,0xa4cb7e33,0x62fb1341,0xcee4c6e8,0xef20cada,0x36774c01,0xd07e9efe,0x2bf11fb4,0x95dbda4d,0xae909198,0xeaad8e71,0x6b93d5a0,0xd08ed1d0,0xafc725e0,0x8e3c5b2f,0x8e7594b7,0x8ff6e2fb,0xf2122b64,0x8888b812,0x900df01c,0x4fad5ea0,0x688fc31c,0xd1cff191,0xb3a8c1ad,0x2f2f2218,0xbe0e1777,0xea752dfe,0x8b021fa1,0xe5a0cc0f,0xb56f74e8,0x18acf3d6,0xce89e299,0xb4a84fe0,0xfd13e0b7,0x7cc43b81,0xd2ada8d9,0x165fa266,0x80957705,0x93cc7314,0x211a1477,0xe6ad2065,0x77b5fa86,0xc75442f5,0xfb9d35cf,0xebcdaf0c,0x7b3e89a0,0xd6411bd3,0xae1e7e49,2428461,0x2071b35e,0x226800bb,0x57b8e0af,0x2464369b,0xf009b91e,0x5563911d,0x59dfa6aa,0x78c14389,0xd95a537f,0x207d5ba2,0x2e5b9c5,0x83260376,0x6295cfa9,0x11c81968,0x4e734a41,0xb3472dca,0x7b14a94a,0x1b510052,0x9a532915,0xd60f573f,0xbc9bc6e4,0x2b60a476,0x81e67400,0x8ba6fb5,0x571be91f,0xf296ec6b,0x2a0dd915,0xb6636521,0xe7b9f9b6,0xff34052e,0xc5855664,0x53b02d5d,0xa99f8fa1,0x8ba4799,0x6e85076a,0x4b7a70e9,0xb5b32944,0xdb75092e,0xc4192623,290971e4,0x49a7df7d,0x9cee60b8,0x8fedb266,0xecaa8c71,0x699a17ff,0x5664526c,0xc2b19ee1,0x193602a5,0x75094c29,0xa0591340,0xe4183a3e,0x3f54989a,0x5b429d65,0x6b8fe4d6,0x99f73fd6,0xa1d29c07,0xefe830f5,0x4d2d38e6,0xf0255dc1,0x4cdd2086,0x8470eb26,0x6382e9c6,0x21ecc5e,0x9686b3f,0x3ebaefc9,0x3c971814,0x6b6a70a1,0x687f3584,0x52a0e286,0xb79c5305,0xaa500737,0x3e07841c,0x7fdeae5c,0x8e7d44ec,0x5716f2b8,0xb03ada37,0xf0500c0d,0xf01c1f04,0x200b3ff,0xae0cf51a,0x3cb574b2,0x25837a58,0xdc0921bd,0xd19113f9,0x7ca92ff6,0x94324773,0x22f54701,0x3ae5e581,0x37c2dadc,0xc8b57634,0x9af3dda7,0xa9446146,0xfd0030e,0xecc8c73e,0xa4751e41,0xe238cd99,0x3bea0e2f,0x3280bba1,0x183eb331,0x4e548b38,0x4f6db908,0x6f420d03,0xf60a04bf,0x2cb81290,0x24977c79,0x5679b072,0xbcaf89af,0xde9a771f,0xd9930810,0xb38bae12,0xdccf3f2e,0x5512721f,0x2e6b7124,0x501adde6,0x9f84cd87,0x7a584718,0x7408da17,0xbc9f9abc,0xe94b7d8c,0xec7aec3a,0xdb851dfa,0x63094366,0xc464c3d2,0xef1c1847,0x3215d908,0xdd433b37,0x24c2ba16,0x12a14d43,0x2a65c451,0x50940002,0x133ae4dd,0x71dff89e,0x10314e55,0x81ac77d6,0x5f11199b,0x43556f1,0xd7a3c76b,0x3c11183b,0x5924a509,0xf28fe6ed,0x97f1fbfa,0x9ebabf2c,0x1e153c6e,0x86e34570,0xeae96fb1,0x860e5e0a,0x5a3e2ab3,0x771fe71c,0x4e3d06fa,0x2965dcb9,0x99e71d0f,0x803e89d6,0x5266c825,0x2e4cc978,0x9c10b36a,0xc6150eba,0x94e2ea78,0xa5fc3c53,0x1e0a2df4,0xf2f74ea7,0x361d2b3d,0x1939260f,0x19c27960,0x5223a708,0xf71312b6,0xebadfe6e,0xeac31f66,0xe3bc4595,0xa67bc883,0xb17f37d1,0x18cff28,0xc332ddef,0xbe6c5aa5,0x65582185,0x68ab9802,0xeecea50f,0xdb2f953b,0x2aef7dad,0x5b6e2f84,0x1521b628,0x29076170,0xecdd4775,0x619f1510,0x13cca830,0xeb61bd96,0x334fe1e,0xaa0363cf,0xb5735c90,0x4c70a239,0xd59e9e0b,0xcbaade14,0xeecc86bc,0x60622ca7,0x9cab5cab,0xb2f3846e,0x648b1eaf,0x19bdf0ca,0xa02369b9,0x655abb50,0x40685a32,0x3c2ab4b3,0x319ee9d5,0xc021b8f7,0x9b540b19,0x875fa099,0x95f7997e,0x623d7da8,0xf837889a,0x97e32d77,0x11ed935f,0x16681281,0xe358829,0xc7e61fd6,0x96dedfa1,0x7858ba99,0x57f584a5,0x1b227263,0x9b83c3ff,0x1ac24696,0xcdb30aeb,0x532e3054,0x8fd948e4,0x6dbc3128,0x58ebf2ef,0x34c6ffea,0xfe28ed61,0xee7c3c73,0x5d4a14d9,0xe864b7e3,0x42105d14,0x203e13e0,0x45eee2b6,0xa3aaabea,0xdb6c4f15,0xfacb4fd0,0xc742f442,0xef6abbb5,0x654f3b1d,0x41cd2105,0xd81e799e,0x86854dc7,0xe44b476a,0x3d816250,0xcf62a1f2,0x5b8d2646,0xfc8883a0,0xc1c7b6a3,0x7f1524c3,0x69cb7492,0x47848a0b,0x5692b285,0x95bbf00,0xad19489d,0x1462b174,0x23820e00,0x58428d2a,0xc55f5ea,0x1dadf43e,0x233f7061,0x3372f092,0x8d937e41,0xd65fecf1,0x6c223bdb,0x7cde3759,0xcbee7460,0x4085f2a7,0xce77326e,0xa6078084,0x19f8509e,0xe8efd855,0x61d99735,0xa969a7aa,0xc50c06c2,0x5a04abfc,0x800bcadc,0x9e447a2e,0xc3453484,0xfdd56705,0xe1e9ec9,0xdb73dbd3,0x105588cd,0x675fda79,0xe3674340,0xc5c43465,0x713e38d8,0x3d28f89e,0xf16dff20,0x153e21e7,0x8fb03d4a,0xe6e39f2b,0xdb83adf7,0xe93d5a68,0x948140f7,0xf64c261c,0x94692934,0x411520f7,0x7602d4f7,0xbcf46b2e,0xd4a20068,0xd4082471,0x3320f46a,0x43b7d4b7,0x500061af,0x1e39f62e,0x97244546,0x14214f74,0xbf8b8840,0x4d95fc1d,0x96b591af,0x70f4ddd3,0x66a02f45,0xbfbc09ec,0x3bd9785,0x7fac6dd0,0x31cb8504,0x96eb27b3,0x55fd3941,0xda2547e6,0xabca0a9a,0x28507825,0x530429f4,0xa2c86da,0xe9b66dfb,0x68dc1462,0xd7486900,0x680ec0a4,0x27a18dee,0x4f3ffea2,0xe887ad8c,0xb58ce006,0x7af4d6b6,0xaace1e7c,0xd3375fec,0xce78a399,0x406b2a42,0x20fe9e35,0xd9f385b9,0xee39d7ab,0x3b124e8b,0x1dc9faf7,0x4b6d1856,0x26a36631,0xeae397b2,0x3a6efa74,0xdd5b4332,0x6841e7f7,0xca7820fb,0xfb0af54e,0xd8feb397,0x454056ac,0xba489527,0x55533a3a,0x20838d87,0xfe6ba9b7,0xd096954b,0x55a867bc,0xa1159a58,0xcca92963,0x99e1db33,0xa62a4a56,0x3f3125f9,0x5ef47e1c,0x9029317c,0xfdf8e802,0x4272f70,0x80bb155c,0x5282ce3,0x95c11548,0xe4c66d22,0x48c1133f,0xc70f86dc,0x7f9c9ee,0x41041f0f,0x404779a4,0x5d886e17,0x325f51eb,0xd59bc0d1,0xf2bcc18f,0x41113564,0x257b7834,0x602a9c60,0xdff8e8a3,0x1f636c1b,0xe12b4c2,0x2e1329e,0xaf664fd1,0xcad18115,0x6b2395e0,0x333e92e1,0x3b240b62,0xeebeb922,0x85b2a20e,0xe6ba0d99,0xde720c8c,0x2da2f728,0xd0127845,0x95b794fd,0x647d0862,0xe7ccf5f0,0x5449a36f,0x877d48fa,0xc39dfd27,0xf33e8d1e,0xa476341,0x992eff74,0x3a6f6eab,0xf4f8fd37,0xa812dc60,0xa1ebddf8,0x991be14c,0xdb6e6b0d,0xc67b5510,0x6d672c37,0x2765d43b,0xdcd0e804,0xf1290dc7,0xcc00ffa3,0xb5390f92,0x690fed0b,0x667b9ffb,0xcedb7d9c,0xa091cf0b,0xd9155ea3,0xbb132f88,0x515bad24,0x7b9479bf,0x763bd6eb,0x37392eb3,0xcc115979,0x8026e297,0xf42e312d,0x6842ada7,0xc66a2b3b,0x12754ccc,0x782ef11c,0x6a124237,0xb79251e7,0x6a1bbe6,0x4bfb6350,0x1a6b1018,0x11caedfa,0x3d25bdd8,0xe2e1c3c9,0x44421659,0xa121386,0xd90cec6e,0xd5abea2a,0x64af674e,0xda86a85f,0xbebfe988,0x64e4c3fe,0x9dbc8057,0xf0f7c086,0x60787bf8,0x6003604d,0xd1fd8346,0xf6381fb0,0x7745ae04,0xd736fccc,0x83426b33,0xf01eab71,0xb0804187,0x3c005e5f,0x77a057be,0xbde8ae24,0x55464299,0xbf582e61,0x4e58f48f,0xf2ddfda2,0xf474ef38,0x8789bdc2,0x5366f9c3,0xc8b38e74,0xb475f255,0x46fcd9b9,0x7aeb2661,0x8b1ddf84,0x846a0e79,0x915f95e2,0x466e598e,0x20b45770,0x8cd55591,0xc902de4c,0xb90bace1,0xbb8205d0,0x11a86248,0x7574a99e,0xb77f19b6,0xe0a9dc09,0x662d09a1,0xc4324633,0xe85a1f02,0x9f0be8c,0x4a99a025,0x1d6efe10,0x1ab93d1d,0xba5a4df,0xa186f20f,0x2868f169,0xdcb7da83,0x573906fe,0xa1e2ce9b,0x4fcd7f52,0x50115e01,0xa70683fa,0xa002b5c4,0xde6d027,0x9af88c27,0x773f8641,0xc3604c06,0x61a806b5,0xf0177a28,0xc0f586e0,6314154,0x30dc7d62,0x11e69ed7,0x2338ea63,0x53c2dd94,0xc2c21634,0xbbcbee56,0x90bcb6de,0xebfc7da1,0xce591d76,0x6f05e409,0x4b7c0188,0x39720a3d,0x7c927c24,0x86e3725f,0x724d9db9,0x1ac15bb4,0xd39eb8fc,0xed545578,0x8fca5b5,0xd83d7cd3,0x4dad0fc4,0x1e50ef5e,0xb161e6f8,0xa28514d9,0x6c51133c,0x6fd5c7e7,0x56e14ec4,0x362abfce,0xddc6c837,0xd79a3234,0x92638212,0x670efa8e,0x406000e0,0x3a39ce37,0xd3faf5cf,0xabc27737,0x5ac52d1b,0x5cb0679e,0x4fa33742,0xd3822740,0x99bc9bbe,0xd5118e9d,0xbf0f7315,0xd62d1c7e,0xc700c47b,0xb78c1b6b,0x21a19045,0xb26eb1be,0x6a366eb4,0x5748ab2f,0xbc946e79,0xc6a376d2,0x6549c2c8,0x530ff8ee,0x468dde7d,0xd5730a1d,0x4cd04dc6,0x2939bbdb,0xa9ba4650,0xac9526e8,0xbe5ee304,0xa1fad5f0,0x6a2d519a,0x63ef8ce2,0x9a86ee22,0xc089c2b8,0x43242ef6,0xa51e03aa,0x9cf2d0a4,0x83c061ba,0x9be96a4d,0x8fe51550,0xba645bd6,0x2826a2f9,0xa73a3ae1,0x4ba99586,0xef5562e9,0xc72fefd3,0xf752f7da,0x3f046f69,0x77fa0a59,0x80e4a915,0x87b08601,0x9b09e6ad,0x3b3ee593,0xe990fd5a,0x9e34d797,0x2cf0b7d9,0x22b8b51,0x96d5ac3a,0x17da67d,0xd1cf3ed6,0x7c7d2d28,0x1f9f25cf,0xadf2b89b,0x5ad6b472,0x5a88f54c,0xe029ac71,0xe019a5e6,0x47b0acfd,0xed93fa9b,0xe8d3c48d,0x283b57cc,0xf8d56629,0x79132e28,0x785f0191,0xed756055,0xf7960e44,0xe3d35e8c,0x15056dd4,0x88f46dba,0x3a16125,0x564f0bd,0xc3eb9e15,0x3c9057a2,0x97271aec,0xa93a072a,0x1b3f6d9b,0x1e6321f5,0xf59c66fb,0x26dcf319,0x7533d928,0xb155fdf5,0x3563482,0x8aba3cbb,0x28517711,0xc20ad9f8,0xabcc5167,0xccad925f,0x4de81751,0x3830dc8e,0x379d5862,0x9320f991,0xea7a90c2,0xfb3e7bce,0x5121ce64,0x774fbe32,0xa8b6e37e,0xc3293d46,0x48de5369,0x6413e680,0xa2ae0810,0xdd6db224,0x69852dfd,0x9072166,0xb39a460a,0x6445c0dd,0x586cdecf,0x1c20c8ae,0x5bbef7dd,0x1b588d40,0xccd2017f,0x6bb4e3bb,0xdda26a7e,0x3a59ff45,0x3e350a44,0xbcb4cdd5,0x72eacea8,0xfa6484bb,0x8d6612ae,0xbf3c6f47,0xd29be463,0x542f5d9e,0xaec2771b,0xf64e6370,0x740e0d8d,0xe75b1357,0xf8721671,0xaf537d5d,0x4040cb08,0x4eb4e2cc,0x34d2466a,0x115af84,3786409e3,0x95983a1d,0x6b89fb4,0xce6ea048,0x6f3f3b82,0x3520ab82,0x11a1d4b,0x277227f8,0x611560b1,0xe7933fdc,0xbb3a792b,0x344525bd,0xa08839e1,0x51ce794b,0x2f32c9b7,0xa01fbac9,0xe01cc87e,0xbcc7d1f6,0xcf0111c3,0xa1e8aac7,0x1a908749,0xd44fbd9a,0xd0dadecb,0xd50ada38,0x339c32a,0xc6913667,0x8df9317c,0xe0b12b4f,0xf79e59b7,0x43f5bb3a,0xf2d519ff,0x27d9459c,0xbf97222c,0x15e6fc2a,0xf91fc71,0x9b941525,0xfae59361,0xceb69ceb,0xc2a86459,0x12baa8d1,0xb6c1075e,0xe3056a0c,0x10d25065,0xcb03a442,0xe0ec6e0e,0x1698db3b,0x4c98a0be,0x3278e964,0x9f1f9532,0xe0d392df,0xd3a0342b,0x8971f21e,0x1b0a7441,0x4ba3348c,0xc5be7120,0xc37632d8,0xdf359f8d,0x9b992f2e,0xe60b6f47,0xfe3f11d,0xe54cda54,0x1edad891,0xce6279cf,0xcd3e7e6f,0x1618b166,0xfd2c1d05,0x848fd2c5,0xf6fb2299,0xf523f357,0xa6327623,0x93a83531,0x56cccd02,0xacf08162,0x5a75ebb5,0x6e163697,0x88d273cc,0xde966292,0x81b949d0,0x4c50901b,0x71c65614,0xe6c6c7bd,0x327a140a,0x45e1d006,0xc3f27b9a,0xc9aa53fd,0x62a80f00,0xbb25bfe2,0x35bdd2f6,0x71126905,0xb2040222,0xb6cbcf7c,0xcd769c2b,0x53113ec0,0x1640e3d3,0x38abbd60,0x2547adf0,0xba38209c,0xf746ce76,0x77afa1c5,0x20756060,0x85cbfe4e,0x8ae88dd8,0x7aaaf9b0,0x4cf9aa7e,0x1948c25c,0x2fb8a8c,0x1c36ae4,0xd6ebe1f9,0x90d4f869,0xa65cdea0,0x3f09252d,0xc208e69f,0xb74e6132,0xce77e25b,0x578fdfe3,0x3ac372e6],ip=[0x4f727068,0x65616e42,0x65686f6c,0x64657253,0x63727944,0x6f756274];function ih(e,t,i,n){var r=e[t],a=e[t+1];return r^=i[0],a^=(n[r>>>24]+n[256|r>>16&255]^n[512|r>>8&255])+n[768|255&r]^i[1],r^=(n[a>>>24]+n[256|a>>16&255]^n[512|a>>8&255])+n[768|255&a]^i[2],a^=(n[r>>>24]+n[256|r>>16&255]^n[512|r>>8&255])+n[768|255&r]^i[3],r^=(n[a>>>24]+n[256|a>>16&255]^n[512|a>>8&255])+n[768|255&a]^i[4],a^=(n[r>>>24]+n[256|r>>16&255]^n[512|r>>8&255])+n[768|255&r]^i[5],r^=(n[a>>>24]+n[256|a>>16&255]^n[512|a>>8&255])+n[768|255&a]^i[6],a^=(n[r>>>24]+n[256|r>>16&255]^n[512|r>>8&255])+n[768|255&r]^i[7],r^=(n[a>>>24]+n[256|a>>16&255]^n[512|a>>8&255])+n[768|255&a]^i[8],a^=(n[r>>>24]+n[256|r>>16&255]^n[512|r>>8&255])+n[768|255&r]^i[9],r^=(n[a>>>24]+n[256|a>>16&255]^n[512|a>>8&255])+n[768|255&a]^i[10],a^=(n[r>>>24]+n[256|r>>16&255]^n[512|r>>8&255])+n[768|255&r]^i[11],r^=(n[a>>>24]+n[256|a>>16&255]^n[512|a>>8&255])+n[768|255&a]^i[12],a^=(n[r>>>24]+n[256|r>>16&255]^n[512|r>>8&255])+n[768|255&r]^i[13],r^=(n[a>>>24]+n[256|a>>16&255]^n[512|a>>8&255])+n[768|255&a]^i[14],a^=(n[r>>>24]+n[256|r>>16&255]^n[512|r>>8&255])+n[768|255&r]^i[15],r^=(n[a>>>24]+n[256|a>>16&255]^n[512|a>>8&255])+n[768|255&a]^i[16],e[t]=a^i[17],e[t+1]=r,e}function ig(e,t){for(var i=0,n=0;i<4;++i)n=n<<8|255&e[t],t=(t+1)%e.length;return{key:n,offp:t}}function iy(e,t,i){for(var n,r=0,a=[0,0],s=t.length,o=i.length,l=0;l<s;l++)r=(n=ig(e,r)).offp,t[l]=t[l]^n.key;for(l=0;l<s;l+=2)a=ih(a,0,t,i),t[l]=a[0],t[l+1]=a[1];for(l=0;l<o;l+=2)a=ih(a,0,t,i),i[l]=a[0],i[l+1]=a[1]}function iv(e,t,i,n,r){var a,s,o=ip.slice(),l=o.length;if(i<4||i>31){if(s=Error("Illegal number of rounds (4-31): "+i),n)return void ia(n.bind(this,s));throw s}if(t.length!==iu){if(s=Error("Illegal salt length: "+t.length+" != "+iu),n)return void ia(n.bind(this,s));throw s}i=1<<i>>>0;var u,c,d,f=0;function m(){if(r&&r(f/i),f<i)for(var a=Date.now();f<i&&(f+=1,iy(e,u,c),iy(t,u,c),!(Date.now()-a>100)););else{for(f=0;f<64;f++)for(d=0;d<l>>1;d++)ih(o,d<<1,u,c);var s=[];for(f=0;f<l;f++)s.push((o[f]>>24&255)>>>0),s.push((o[f]>>16&255)>>>0),s.push((o[f]>>8&255)>>>0),s.push((255&o[f])>>>0);return n?void n(null,s):s}n&&ia(m)}if("function"==typeof Int32Array?(u=new Int32Array(id),c=new Int32Array(im)):(u=id.slice(),c=im.slice()),!function(e,t,i,n){for(var r,a=0,s=[0,0],o=i.length,l=n.length,u=0;u<o;u++)a=(r=ig(t,a)).offp,i[u]=i[u]^r.key;for(u=0,a=0;u<o;u+=2)a=(r=ig(e,a)).offp,s[0]^=r.key,a=(r=ig(e,a)).offp,s[1]^=r.key,s=ih(s,0,i,n),i[u]=s[0],i[u+1]=s[1];for(u=0;u<l;u+=2)a=(r=ig(e,a)).offp,s[0]^=r.key,a=(r=ig(e,a)).offp,s[1]^=r.key,s=ih(s,0,i,n),n[u]=s[0],n[u+1]=s[1]}(t,e,u,c),void 0!==n)m();else for(;;)if(void 0!==(a=m()))return a||[]}function ib(e,t,i,n){if("string"!=typeof e||"string"!=typeof t){if(r=Error("Invalid string / salt: Not a string"),i)return void ia(i.bind(this,r));throw r}if("$"!==t.charAt(0)||"2"!==t.charAt(1)){if(r=Error("Invalid salt version: "+t.substring(0,2)),i)return void ia(i.bind(this,r));throw r}if("$"===t.charAt(2))a="\0",s=3;else{if("a"!==(a=t.charAt(2))&&"b"!==a&&"y"!==a||"$"!==t.charAt(3)){if(r=Error("Invalid salt revision: "+t.substring(2,4)),i)return void ia(i.bind(this,r));throw r}s=4}if(t.charAt(s+2)>"$"){if(r=Error("Missing salt rounds"),i)return void ia(i.bind(this,r));throw r}var r,a,s,o=10*parseInt(t.substring(s,s+1),10)+parseInt(t.substring(s+1,s+2),10),l=t.substring(s+3,s+25),u=function(e){for(var t,i,n=0,r=Array(function(e){for(var t=0,i=0,n=0;n<e.length;++n)(i=e.charCodeAt(n))<128?t+=1:i<2048?t+=2:(64512&i)==55296&&(64512&e.charCodeAt(n+1))==56320?(++n,t+=4):t+=3;return t}(e)),a=0,s=e.length;a<s;++a)(t=e.charCodeAt(a))<128?r[n++]=t:(t<2048?r[n++]=t>>6|192:((64512&t)==55296&&(64512&(i=e.charCodeAt(a+1)))==56320?(t=65536+((1023&t)<<10)+(1023&i),++a,r[n++]=t>>18|240,r[n++]=t>>12&63|128):r[n++]=t>>12|224,r[n++]=t>>6&63|128),r[n++]=63&t|128);return r}(e+=a>="a"?"\0":""),c=function(e,t){var i,n,r,a,s,o=0,l=e.length,u=0,c=[];if(t<=0)throw Error("Illegal len: "+t);for(;o<l-1&&u<t&&(i=(s=e.charCodeAt(o++))<io.length?io[s]:-1,n=(s=e.charCodeAt(o++))<io.length?io[s]:-1,-1!=i&&-1!=n)&&(a=i<<2>>>0|(48&n)>>4,c.push(String.fromCharCode(a)),!(++u>=t||o>=l||-1==(r=(s=e.charCodeAt(o++))<io.length?io[s]:-1)||(a=(15&n)<<4>>>0|(60&r)>>2,c.push(String.fromCharCode(a)),++u>=t||o>=l)));){;a=(3&r)<<6>>>0|((s=e.charCodeAt(o++))<io.length?io[s]:-1),c.push(String.fromCharCode(a)),++u}var d=[];for(o=0;o<u;o++)d.push(c[o].charCodeAt(0));return d}(l,iu);function d(e){var t=[];return t.push("$2"),a>="a"&&t.push(a),t.push("$"),o<10&&t.push("0"),t.push(o.toString()),t.push("$"),t.push(il(c,c.length)),t.push(il(e,4*ip.length-1)),t.join("")}if(void 0===i)return d(iv(u,c,o));iv(u,c,o,function(e,t){e?i(e,null):i(null,d(t))},n)}let ix=function(e,t,i,n){function r(i){"string"!=typeof e||"string"!=typeof t?ia(i.bind(this,Error("Illegal arguments: "+typeof e+", "+typeof t))):60!==t.length?ia(i.bind(this,null,!1)):ir(e,t.substring(0,29),function(e,n){e?i(e):i(null,function(e,t){for(var i=e.length^t.length,n=0;n<e.length;++n)i|=e.charCodeAt(n)^t.charCodeAt(n);return 0===i}(n,t))},n)}if(!i)return new Promise(function(e,t){r(function(i,n){i?t(i):e(n)})});if("function"!=typeof i)throw Error("Illegal callback: "+typeof i);r(i)};async function i$(e){return ir(e,10)}async function i_(e,t){return!!t&&ix(e,t)}e.s(["hashPassword",0,i$,"verifyPassword",0,i_],837423),e.s([],222784);let iS=!1;async function iw(){if(iS||(iS=!0,tz.select().from(t$).all().length>0))return;let e=process.env.LOOM_ADMIN_USERNAME||"admin",t=process.env.LOOM_ADMIN_PASSWORD;if(!t)return void console.warn("[loom] No users in database and LOOM_ADMIN_PASSWORD is not set. Set LOOM_ADMIN_USERNAME / LOOM_ADMIN_PASSWORD to bootstrap the first admin.");let n=await i$(t);tz.insert(t$).values({id:(0,i.randomUUID)(),username:e,passwordHash:n,role:"admin"}).run(),console.log(`[loom] Bootstrapped admin user "${e}".`)}var ik=tA;e.s(["schema",0,ik],110726);var ik=tA,iI=e.i(660526),iN=e.i(523008);let iO=["loom.config.yaml","loom.config.yml","loom.config.json"],iP=["loom.yaml","loom.yml","loom.json"];function iT(){return process.env.LOOM_USER_CWD||process.cwd()}let iE=new Map,iA=new Map;function iC(e){return iE.get(e)}function iD(e,t){var i;let n=new Set(t?.supported_apis??[]),r=(i=e.id,iA.get(i)??[]);if(e.variantPreference){for(let t of e.variantPreference)if(n.has(t)&&iE.has(t))return t}for(let e of r)if(n.has(e.id))return e.id;if(e.defaultVariantId&&iE.has(e.defaultVariantId))return e.defaultVariantId;if(r.length>0)return r[0].id;throw Error(`No upstream API variant registered for capability "${e.id}"`)}e.s(["defaultSelectVariantId",0,iD,"getVariant",0,iC,"listVariants",0,function(){return Array.from(iE.values())},"registerVariant",0,function(e){let t=iE.get(e.id);iE.set(e.id,e);let i=iA.get(e.capability)??[],n=i.findIndex(t=>t.id===e.id);if(n>=0?i[n]=e:i.push(e),iA.set(e.capability,i),t&&t.capability!==e.capability){let i=iA.get(t.capability)??[];iA.set(t.capability,i.filter(t=>t.id!==e.id))}}],54013);let iz=[],ij=new Map;function iU(e){if(ij.has(e.id)){let t=iz.findIndex(t=>t.id===e.id);t>=0&&(iz[t]=e)}else iz.push(e);ij.set(e.id,e)}function iL(e){if(e.adapterId){let t=ij.get(e.adapterId);if(t)return t}for(let t of iz)if(t.matches(e))return t;let t=ij.get("openai");if(!t)throw Error("No 'openai' adapter registered — adapter registry not initialized");return t}e.s(["listAdapters",0,function(){return iz.map(e=>({id:e.id,label:e.label,description:e.description}))},"registerAdapter",0,iU,"resolveAdapter",0,iL,"resolveVariantId",0,function(e,t,i,n){let r=i.apiVariantId;if(r){let e=iC(r);if(e&&e.capability===t.id)return e.id}return e.selectVariant?e.selectVariant(t,i,n):iD(t,n)}],183397);let iZ=new Map;function iq(){return Array.from(iZ.values()).sort((e,t)=>(t.priority??0)-(e.priority??0))}function iR(e){for(let t of iq())if(t.matches?.(e))return t.id;return iB}let iB="chat";async function iM(e,t){let i=`${e.baseUrl.replace(/\/$/,"")}/models`,n={Accept:"application/json"};t&&(n.Authorization=`Bearer ${t}`);let r=await fetch(i,{headers:n});if(!r.ok)throw Error(`models discovery HTTP ${r.status} from ${i}`);let a=await r.json();return Array.isArray(a)?a:Array.isArray(a?.data)?a.data:[]}e.s(["classifyModel",0,iR,"getCapability",0,function(e){return iZ.get(e)},"listCapabilities",0,iq,"registerCapability",0,function(e){if(!e.id)throw Error("capability.id is required");iZ.set(e.id,e)}],152358);let iK=new Set(["model","messages","stream","input","prompt"]);iU({id:"openai",label:"OpenAI compatible",description:"OpenAI direct, DeepSeek, Together, Groq, vLLM, Ollama — any /v1 OpenAI-compatible upstream.",matches:()=>!0,fetchModels:iM,extractModelMeta(e){let t="string"==typeof e?.id?e.id:null;if(!t)return null;let i=iR(t);return{upstream_id:t,label:t,supported_apis:["embedding"===i?"embeddings":"image"===i?"images.generations":"audio.speech"===i?"audio.speech":"audio.transcription"===i?"audio.transcriptions":"rerank"===i?"rerank":"video"===i?"videos":"chat.completions"],capabilities:{chat:"chat"===i,embeddings:"embedding"===i,audio_in:"audio.transcription"===i,audio_out:"audio.speech"===i},owned_by:"string"==typeof e.owned_by?e.owned_by:null,raw:e}},upstreamUrl:function(e){let t=e.provider.baseUrl.replace(/\/$/,"");return`${t}${e.variant.path}`},upstreamHeaders:function(e,t){let i={"Content-Type":"application/json"};return t&&(i.Authorization=`Bearer ${t}`),i},finalizeRequest:(e,t)=>({...e,model:t.model.upstreamModelId})}),e.s(["applyFieldFilter",0,function(e,t){if(!t)return e;let i=t.accepted_fields&&t.accepted_fields.length>0?new Set(t.accepted_fields):null,n=t.rejected_fields&&t.rejected_fields.length>0?new Set(t.rejected_fields):null;if(!i&&!n)return e;let r={};for(let[t,a]of Object.entries(e)){if(iK.has(t)){r[t]=a;continue}!n?.has(t)&&(!i||i.has(t))&&(r[t]=a)}return r},"fetchOpenAIModels",0,iM],57578);let iF={chatCompletion:"chat.completions",responses:"responses",embeddings:"embeddings",imageGeneration:"images.generations",audioSpeech:"audio.speech",audioTranscription:"audio.transcriptions",rerank:"rerank"},iQ=["model","messages","stream","temperature","top_p","max_tokens","max_completion_tokens","stop","n","frequency_penalty","presence_penalty","logit_bias","user","seed","tools","tool_choice","response_format"],iJ=["stream_options","parallel_tool_calls","service_tier","store","metadata","prediction","modalities","audio","web_search_options"];function iV(e){return e.apiVersion?.trim()||"2024-10-21"}function iW(e){return e.baseUrl.replace(/\/$/,"")}iU({id:"azure-foundry",label:"Azure AI Foundry (Inference)",description:"Azure AI Inference / Foundry endpoints serving OSS or partner models. Strict schema, rich metadata.",matches(e){try{var t;return t=new URL(e.baseUrl).host,/\.(inference|services)\.ai\.azure\.com$/.test(t)}catch{return!1}},fetchModels:iM,extractModelMeta(e){let t="string"==typeof e?.id?e.id:null;if(!t)return null;let i=[],n=e.capabilities??{};for(let[e,t]of Object.entries(n)){if(!0!==t&&"true"!==t&&1!==t)continue;let n=iF[e];n&&!i.includes(n)&&i.push(n)}0===i.length&&i.push("chat.completions");let r=e.model??{},a=r.Publisher??null,s=r.Format??null,o=r.Version??null,l=e.RateLimits??e.rate_limits??{};return{upstream_id:t,label:"string"==typeof r.Name?r.Name:t,supported_apis:i,capabilities:{chat:i.includes("chat.completions"),responses:i.includes("responses"),embeddings:i.includes("embeddings"),batch:!0===n.batch||"true"===n.batch},accepted_fields:iQ,rejected_fields:iJ,publisher:a,version:o,format:s,owned_by:"string"==typeof e.owned_by?e.owned_by:null,rate_limits:{requests:"number"==typeof l.requests?l.requests:null,tokens:"number"==typeof l.tokens?l.tokens:null},raw:e}},upstreamUrl(e){let t=e.provider.baseUrl.replace(/\/$/,"");return`${t}${e.variant.path}`},upstreamHeaders(e,t){let i={"Content-Type":"application/json"};return t&&(i["api-key"]=t),i},finalizeRequest:(e,t)=>({...e,model:t.model.upstreamModelId})}),iU({id:"azure-openai",label:"Azure OpenAI",description:"First-party Azure-hosted OpenAI models. Deployment-based URLs, api-key header, api-version query.",matches(e){try{var t;return t=new URL(e.baseUrl).host,/\.openai\.azure\.com$/.test(t)}catch{return!1}},async fetchModels(e,t){let i=`${iW(e)}/openai/models?api-version=${encodeURIComponent(iV(e))}`,n={Accept:"application/json"};t&&(n["api-key"]=t);let r=await fetch(i,{headers:n});if(!r.ok)throw Error(`models discovery HTTP ${r.status} from ${i}`);let a=await r.json();return Array.isArray(a)?a:Array.isArray(a?.data)?a.data:[]},extractModelMeta(e){let t="string"==typeof e?.id?e.id:null;return t?{upstream_id:t,label:t,supported_apis:[],capabilities:{chat:!1},owned_by:"string"==typeof e.owned_by?e.owned_by:null,raw:e}:null},upstreamUrl(e){let t=encodeURIComponent(e.model.upstreamModelId),i=iV(e.provider);return`${iW(e.provider)}/openai/deployments/${t}${e.variant.path}?api-version=${encodeURIComponent(i)}`},upstreamHeaders(e,t){let i={"Content-Type":"application/json"};return t&&(i["api-key"]=t),i},finalizeRequest(e){let{model:t,...i}=e;return i}}),e.s([],439782);let iG=!1,iX=null;function iY(e,t,i){let n=e.safeParse(t);if(!n.success)throw new tQ(iH(n.error,i),400);return n.data}function iH(e,t="input"){return 0===e.issues.length?`Invalid ${t}`:e.issues.map(e=>{let i=e.path.length>0?e.path.join("."):t,n=e.received;return"invalid_type"===e.code&&"undefined"===n?`${i}: required`:`${i}: ${e.message}`}).join("; ")}e.s(["defineRoute",0,function(e){let n=e.auth??"user";return async(r,a={params:Promise.resolve({})})=>{try{let t;await (!iX&&(iX=(async()=>{try{!function(){if(iG)return;iG=!0;let{path:e,cfg:t,applied:n}=function(){let e,t=function(){let e=process.env.LOOM_CONFIG_PATH;if(e){let t=(0,tb.resolve)(iT(),e);return(0,tv.existsSync)(t)?t:null}let t=iT();for(let e of[...iO.map(e=>(0,tb.resolve)(t,e)),...iP.map(e=>(0,tb.resolve)(t,".config",e)),...iP.map(e=>(0,tb.resolve)(process.env.XDG_CONFIG_HOME||(0,tb.resolve)((0,iI.homedir)(),".config"),e))])if((0,tv.existsSync)(e))return e;return null}();if(!t)return{path:null,cfg:null,applied:[]};try{let i;i=(0,tv.readFileSync)(t,"utf8"),e=function e(t){if("string"==typeof t)return t.replace(/\$\{([A-Z0-9_]+)\}/g,(e,t)=>process.env[t]??"");if(Array.isArray(t))return t.map(t=>e(t));if(t&&"object"==typeof t){let i={};for(let[n,r]of Object.entries(t))i[n]=e(r);return i}return t}((t.endsWith(".json")?JSON.parse(i):(0,iN.parse)(i))??{})}catch(e){return console.error(`[loom:config] failed to parse ${t}:`,e),{path:t,cfg:null,applied:[]}}let i=function(e){if(!e||"object"!=typeof e)return[];let t=[],i=(e,i)=>{let n=process.env[e];!function(e,t){if(null==t||void 0!==process.env[e]&&""!==process.env[e])return;let i="string"==typeof t?t:String(t);i&&(process.env[e]=i)}(e,i),process.env[e]!==n&&t.push(e)};return i("LOOM_MASTER_KEY",e.master_key),i("LOOM_DB_PATH",e.database?.path),i("LOOM_ADMIN_USERNAME",e.admin?.username),i("LOOM_ADMIN_PASSWORD",e.admin?.password),i("LOOM_SESSION_TTL_DAYS",e.session?.ttl_days),i("LOOM_MODELS_CACHE_TTL",e.cache?.models_ttl_seconds),i("LOOM_SERVER_PORT",e.server?.port),i("LOOM_SERVER_HOSTNAME",e.server?.hostname),t}(e);return{path:t,cfg:e,applied:i}}();if(!e||!t)return;n.length>0?console.log(`[loom:config] ${e}: applied env from config (${n.join(", ")}).`):console.log(`[loom:config] ${e} loaded.`),Array.isArray(t.models)&&console.warn(`[loom:config] ${e}: \`models:\` section is deprecated — models are now discovered live from each provider's /models endpoint. Use the admin UI to add per-model overrides (Azure deployments, display-name aliases, etc.).`);let r=Array.isArray(t.providers)?t.providers:[];if(0===r.length)return;let a=0;for(let e of r)try{(function(e){var t;let n=e.name?.trim(),r=e.base_url?.trim();if(!n)return console.warn("[loom:config] skipping provider with no name"),null;if(!r)return console.warn(`[loom:config] provider "${n}" missing base_url; skipping`),null;let a=(t={...e,base_url:r}).adapter_id&&t.adapter_id.trim()?t.adapter_id.trim():iL({id:"",name:"",adapterId:"",baseUrl:t.base_url??"",apiVersion:t.api_version??null,apiKeyEncrypted:null,defaultParams:{},httpProxy:null,documentPage:null,modelPage:null,healthCheckUrl:null,lastHealthStatus:null,lastHealthCheckedAt:null,lastHealthError:null,isLocal:!1,enabled:!0,createdAt:"",updatedAt:""}).id,s=tz.select().from(ik.providers).where((0,u.eq)(ik.providers.name,n)).get(),o=e.api_key?.trim()?e.api_key.trim():null,l={adapterId:a,baseUrl:r,apiVersion:e.api_version?.trim()||null,defaultParams:e.default_params??{},httpProxy:e.http_proxy??null,documentPage:e.document_page??null,modelPage:e.model_page??null,healthCheckUrl:e.health_check_url?.trim()||null,isLocal:!!e.is_local,enabled:e.enabled??!0,updatedAt:new Date().toISOString()};if(s){let t={...l};return void 0!==e.api_key&&(t.apiKeyEncrypted=o?tq(o):null),tz.update(ik.providers).set(t).where((0,u.eq)(ik.providers.id,s.id)).run(),{id:s.id,name:n}}let c=(0,i.randomUUID)();return tz.insert(ik.providers).values({id:c,name:n,apiKeyEncrypted:o?tq(o):null,...l}).run(),{id:c,name:n}})(e)&&a++}catch(t){console.error(`[loom:config] upsert provider "${e.name}" failed:`,t)}a>0&&console.log(`[loom:config] upserted ${a} provider(s).`)}()}catch(e){console.error("[loom] config file load failed:",e)}await iw()})()),iX);let s=null;switch(n){case"public":s=await t9();break;case"user":s=await t5();break;case"admin":s=await t3();break;case"gateway":s=await ie(r)}let o=a.params?await a.params:{},l=e.params?iY(e.params,o,"params"):o,c=Object.fromEntries(new URL(r.url).searchParams),d=e.query?iY(e.query,c,"query"):c;if(e.body){let i={};if("GET"!==r.method&&"HEAD"!==r.method)try{i=await r.json()}catch{throw tJ("Request body must be valid JSON")}t=iY(e.body,i,"body")}let f=await e.handler({req:r,user:s,params:l,body:t,query:d});if(f instanceof Response)return f;return tK(void 0===f?null:f)}catch(e){if(e instanceof t.ZodError)return tF(iH(e),400);return tG(e)}}}],456315)}];
100
100
 
101
101
  //# sourceMappingURL=%5Broot-of-the-server%5D__1fs5lo-._.js.map