wrong-notebook 2026.10.21 → 2026.10.22-2

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 (295) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/server/app/_global-error.html +1 -1
  5. package/.next/server/app/_global-error.rsc +1 -1
  6. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  7. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  9. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  10. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  11. package/.next/server/app/admin/page.js.nft.json +1 -1
  12. package/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  13. package/.next/server/app/admin/user/[id]/page.js.nft.json +1 -1
  14. package/.next/server/app/admin/user/[id]/page_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/admin/dashboard/route.js +1 -1
  16. package/.next/server/app/api/admin/dashboard/route.js.nft.json +1 -1
  17. package/.next/server/app/api/admin/migrate-tags/route.js.nft.json +1 -1
  18. package/.next/server/app/api/admin/system-reset/route.js.nft.json +1 -1
  19. package/.next/server/app/api/admin/users/[id]/detail/route.js.nft.json +1 -1
  20. package/.next/server/app/api/admin/users/[id]/route.js.nft.json +1 -1
  21. package/.next/server/app/api/admin/users/route.js.nft.json +1 -1
  22. package/.next/server/app/api/ai/models/route.js +2 -2
  23. package/.next/server/app/api/ai/models/route.js.nft.json +1 -1
  24. package/.next/server/app/api/ai/test/route.js +3 -3
  25. package/.next/server/app/api/ai/test/route.js.nft.json +1 -1
  26. package/.next/server/app/api/analytics/route.js +1 -1
  27. package/.next/server/app/api/analytics/route.js.nft.json +1 -1
  28. package/.next/server/app/api/analyze/route.js +2 -2
  29. package/.next/server/app/api/analyze/route.js.nft.json +1 -1
  30. package/.next/server/app/api/auth/[...nextauth]/route.js.nft.json +1 -1
  31. package/.next/server/app/api/error-items/[id]/delete/route.js.nft.json +1 -1
  32. package/.next/server/app/api/error-items/[id]/figure/route.js +2 -2
  33. package/.next/server/app/api/error-items/[id]/figure/route.js.nft.json +1 -1
  34. package/.next/server/app/api/error-items/[id]/fix-latex/route.js +2 -2
  35. package/.next/server/app/api/error-items/[id]/fix-latex/route.js.nft.json +1 -1
  36. package/.next/server/app/api/error-items/[id]/geogebra/route.js +4 -3
  37. package/.next/server/app/api/error-items/[id]/geogebra/route.js.nft.json +1 -1
  38. package/.next/server/app/api/error-items/[id]/image/route.js.nft.json +1 -1
  39. package/.next/server/app/api/error-items/[id]/mastery/route.js.nft.json +1 -1
  40. package/.next/server/app/api/error-items/[id]/notes/route.js.nft.json +1 -1
  41. package/.next/server/app/api/error-items/[id]/practice-records/route.js.nft.json +1 -1
  42. package/.next/server/app/api/error-items/[id]/reanswer/route.js +5 -4
  43. package/.next/server/app/api/error-items/[id]/reanswer/route.js.nft.json +1 -1
  44. package/.next/server/app/api/error-items/[id]/retag/route.js +6 -6
  45. package/.next/server/app/api/error-items/[id]/retag/route.js.nft.json +1 -1
  46. package/.next/server/app/api/error-items/[id]/route.js.nft.json +1 -1
  47. package/.next/server/app/api/error-items/[id]/svg-animation/route.js +2 -2
  48. package/.next/server/app/api/error-items/[id]/svg-animation/route.js.nft.json +1 -1
  49. package/.next/server/app/api/error-items/batch-delete/route.js.nft.json +1 -1
  50. package/.next/server/app/api/error-items/clear/route.js.nft.json +1 -1
  51. package/.next/server/app/api/error-items/list/route.js +1 -1
  52. package/.next/server/app/api/error-items/list/route.js.nft.json +1 -1
  53. package/.next/server/app/api/error-items/route.js +6 -6
  54. package/.next/server/app/api/error-items/route.js.nft.json +1 -1
  55. package/.next/server/app/api/error-items/short/[shortId]/route.js.nft.json +1 -1
  56. package/.next/server/app/api/error-items/similarity/route.js.nft.json +1 -1
  57. package/.next/server/app/api/exams/[id]/questions/[questionId]/regenerate/route.js +5 -5
  58. package/.next/server/app/api/exams/[id]/questions/[questionId]/regenerate/route.js.nft.json +1 -1
  59. package/.next/server/app/api/exams/[id]/results/route.js +6 -6
  60. package/.next/server/app/api/exams/[id]/results/route.js.nft.json +1 -1
  61. package/.next/server/app/api/exams/[id]/retry/route.js +5 -5
  62. package/.next/server/app/api/exams/[id]/retry/route.js.nft.json +1 -1
  63. package/.next/server/app/api/exams/[id]/route.js +3 -3
  64. package/.next/server/app/api/exams/[id]/route.js.nft.json +1 -1
  65. package/.next/server/app/api/exams/route.js +4 -4
  66. package/.next/server/app/api/exams/route.js.nft.json +1 -1
  67. package/.next/server/app/api/export/route.js +1 -1
  68. package/.next/server/app/api/export/route.js.nft.json +1 -1
  69. package/.next/server/app/api/geogebra-analyze/route.js +4 -4
  70. package/.next/server/app/api/geogebra-analyze/route.js.nft.json +1 -1
  71. package/.next/server/app/api/health/route.js.nft.json +1 -1
  72. package/.next/server/app/api/import/route.js +6 -6
  73. package/.next/server/app/api/import/route.js.nft.json +1 -1
  74. package/.next/server/app/api/logs/frontend/route.js.nft.json +1 -1
  75. package/.next/server/app/api/notebooks/[id]/retag/route.js +3 -3
  76. package/.next/server/app/api/notebooks/[id]/retag/route.js.nft.json +1 -1
  77. package/.next/server/app/api/notebooks/[id]/route.js.nft.json +1 -1
  78. package/.next/server/app/api/notebooks/route.js.nft.json +1 -1
  79. package/.next/server/app/api/openclaw/batch-upload/route.js +5 -5
  80. package/.next/server/app/api/openclaw/batch-upload/route.js.nft.json +1 -1
  81. package/.next/server/app/api/practice/generate/route.js +4 -4
  82. package/.next/server/app/api/practice/generate/route.js.nft.json +1 -1
  83. package/.next/server/app/api/practice/record/[id]/route.js +4 -4
  84. package/.next/server/app/api/practice/record/[id]/route.js.nft.json +1 -1
  85. package/.next/server/app/api/practice/record/route.js +4 -3
  86. package/.next/server/app/api/practice/record/route.js.nft.json +1 -1
  87. package/.next/server/app/api/reanswer/route.js +4 -4
  88. package/.next/server/app/api/reanswer/route.js.nft.json +1 -1
  89. package/.next/server/app/api/register/route.js +1 -1
  90. package/.next/server/app/api/register/route.js.nft.json +1 -1
  91. package/.next/server/app/api/register/status/route.js +1 -1
  92. package/.next/server/app/api/register/status/route.js.nft.json +1 -1
  93. package/.next/server/app/api/settings/route.js +5 -4
  94. package/.next/server/app/api/settings/route.js.nft.json +1 -1
  95. package/.next/server/app/api/stats/practice/clear/route.js.nft.json +1 -1
  96. package/.next/server/app/api/stats/practice/route.js +1 -1
  97. package/.next/server/app/api/stats/practice/route.js.nft.json +1 -1
  98. package/.next/server/app/api/tags/route.js.nft.json +1 -1
  99. package/.next/server/app/api/tags/stats/route.js.nft.json +1 -1
  100. package/.next/server/app/api/tags/suggestions/route.js.nft.json +1 -1
  101. package/.next/server/app/api/tasks/route.js.nft.json +1 -1
  102. package/.next/server/app/api/user/route.js.nft.json +1 -1
  103. package/.next/server/app/error-items/[id]/page.js.nft.json +1 -1
  104. package/.next/server/app/error-items/[id]/page_client-reference-manifest.js +1 -1
  105. package/.next/server/app/exams/[id]/page.js.nft.json +1 -1
  106. package/.next/server/app/exams/[id]/page_client-reference-manifest.js +1 -1
  107. package/.next/server/app/exams/[id]/print/page.js.nft.json +1 -1
  108. package/.next/server/app/exams/[id]/print/page_client-reference-manifest.js +1 -1
  109. package/.next/server/app/exams/page.js.nft.json +1 -1
  110. package/.next/server/app/exams/page_client-reference-manifest.js +1 -1
  111. package/.next/server/app/latex-test/page.js.nft.json +1 -1
  112. package/.next/server/app/latex-test/page_client-reference-manifest.js +1 -1
  113. package/.next/server/app/login/page.js.nft.json +1 -1
  114. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  115. package/.next/server/app/notebooks/[id]/add/page.js.nft.json +1 -1
  116. package/.next/server/app/notebooks/[id]/add/page_client-reference-manifest.js +1 -1
  117. package/.next/server/app/notebooks/[id]/page.js.nft.json +1 -1
  118. package/.next/server/app/notebooks/[id]/page_client-reference-manifest.js +1 -1
  119. package/.next/server/app/notebooks/page.js.nft.json +1 -1
  120. package/.next/server/app/notebooks/page_client-reference-manifest.js +1 -1
  121. package/.next/server/app/page.js.nft.json +1 -1
  122. package/.next/server/app/page_client-reference-manifest.js +1 -1
  123. package/.next/server/app/practice/page.js.nft.json +1 -1
  124. package/.next/server/app/practice/page_client-reference-manifest.js +1 -1
  125. package/.next/server/app/print-preview/page.js.nft.json +1 -1
  126. package/.next/server/app/print-preview/page_client-reference-manifest.js +1 -1
  127. package/.next/server/app/register/page.js.nft.json +1 -1
  128. package/.next/server/app/register/page_client-reference-manifest.js +1 -1
  129. package/.next/server/app/stats/page.js.nft.json +1 -1
  130. package/.next/server/app/stats/page_client-reference-manifest.js +1 -1
  131. package/.next/server/app/tags/page.js.nft.json +1 -1
  132. package/.next/server/app/tags/page_client-reference-manifest.js +1 -1
  133. package/.next/server/chunks/{[root-of-the-server]__0-8hf14._.js → [root-of-the-server]__02j1w81._.js} +1 -1
  134. package/.next/server/chunks/{[root-of-the-server]__08gak8r._.js → [root-of-the-server]__03nfvnm._.js} +1 -1
  135. package/.next/server/chunks/{[root-of-the-server]__0gpohuv._.js → [root-of-the-server]__06_nln5._.js} +2 -2
  136. package/.next/server/chunks/[root-of-the-server]__07jl92a._.js +1 -1
  137. package/.next/server/chunks/{[root-of-the-server]__08zi-xg._.js → [root-of-the-server]__0be5c5r._.js} +1 -1
  138. package/.next/server/chunks/{[root-of-the-server]__0994h9l._.js → [root-of-the-server]__0bqawi0._.js} +1 -1
  139. package/.next/server/chunks/[root-of-the-server]__0bsw5c9._.js +3 -0
  140. package/.next/server/chunks/[root-of-the-server]__0cmxmwt._.js +3 -0
  141. package/.next/server/chunks/{[root-of-the-server]__1utxo11._.js → [root-of-the-server]__0d5dpu4._.js} +2 -2
  142. package/.next/server/chunks/{[root-of-the-server]__05no8nw._.js → [root-of-the-server]__0d9ijed._.js} +2 -2
  143. package/.next/server/chunks/[root-of-the-server]__0fnyu4s._.js +3 -0
  144. package/.next/server/chunks/[root-of-the-server]__0j5231l._.js +3 -0
  145. package/.next/server/chunks/{[root-of-the-server]__0m_f8ct._.js → [root-of-the-server]__0k-nf6a._.js} +2 -2
  146. package/.next/server/chunks/[root-of-the-server]__0k-p1pj._.js +3 -0
  147. package/.next/server/chunks/[root-of-the-server]__0lrdm1u._.js +3 -0
  148. package/.next/server/chunks/[root-of-the-server]__0lro5a7._.js +3 -0
  149. package/.next/server/chunks/[root-of-the-server]__0mfjf2y._.js +3 -0
  150. package/.next/server/chunks/{[root-of-the-server]__0yds0ae._.js → [root-of-the-server]__0mqorxb._.js} +2 -2
  151. package/.next/server/chunks/[root-of-the-server]__0no6umu._.js +3 -0
  152. package/.next/server/chunks/[root-of-the-server]__0o9gtvd._.js +3 -0
  153. package/.next/server/chunks/{[root-of-the-server]__0ynfeq-._.js → [root-of-the-server]__0obb4y-._.js} +2 -2
  154. package/.next/server/chunks/[root-of-the-server]__0p3u6_q._.js +3 -0
  155. package/.next/server/chunks/[root-of-the-server]__0rmrkd_._.js +3 -0
  156. package/.next/server/chunks/[root-of-the-server]__0tdibjz._.js +3 -0
  157. package/.next/server/chunks/[root-of-the-server]__0vhjihq._.js +3 -0
  158. package/.next/server/chunks/[root-of-the-server]__0vz88er._.js +3 -0
  159. package/.next/server/chunks/[root-of-the-server]__0wf9znr._.js +3 -0
  160. package/.next/server/chunks/[root-of-the-server]__0zv7jom._.js +3 -0
  161. package/.next/server/chunks/[root-of-the-server]__11_-ncy._.js +3 -0
  162. package/.next/server/chunks/[root-of-the-server]__11_1z7m._.js +3 -0
  163. package/.next/server/chunks/[root-of-the-server]__11n87go._.js +3 -0
  164. package/.next/server/chunks/[root-of-the-server]__11p4ahb._.js +3 -0
  165. package/.next/server/chunks/[root-of-the-server]__122xu-0._.js +3 -3
  166. package/.next/server/chunks/[root-of-the-server]__131taws._.js +3 -0
  167. package/.next/server/chunks/[root-of-the-server]__14dnbrn._.js +3 -0
  168. package/.next/server/chunks/[root-of-the-server]__14jqm9_._.js +3 -0
  169. package/.next/server/chunks/[root-of-the-server]__152lbaw._.js +3 -0
  170. package/.next/server/chunks/{[root-of-the-server]__04mu6-m._.js → [root-of-the-server]__16begv4._.js} +2 -2
  171. package/.next/server/chunks/[root-of-the-server]__17duis5._.js +3 -0
  172. package/.next/server/chunks/[root-of-the-server]__17q3k-v._.js +3 -0
  173. package/.next/server/chunks/[root-of-the-server]__184u6de._.js +3 -0
  174. package/.next/server/chunks/[root-of-the-server]__18atlj8._.js +3 -0
  175. package/.next/server/chunks/[root-of-the-server]__18c7l6u._.js +3 -0
  176. package/.next/server/chunks/[root-of-the-server]__18zrkky._.js +3 -0
  177. package/.next/server/chunks/[root-of-the-server]__1aaux7e._.js +3 -0
  178. package/.next/server/chunks/[root-of-the-server]__1cceu4b._.js +3 -0
  179. package/.next/server/chunks/[root-of-the-server]__1h09r50._.js +3 -0
  180. package/.next/server/chunks/[root-of-the-server]__1j6mx-v._.js +3 -0
  181. package/.next/server/chunks/[root-of-the-server]__1jdi-1f._.js +3 -0
  182. package/.next/server/chunks/[root-of-the-server]__1ju8z29._.js +3 -0
  183. package/.next/server/chunks/[root-of-the-server]__1kpo44g._.js +3 -0
  184. package/.next/server/chunks/[root-of-the-server]__1lct0vi._.js +3 -0
  185. package/.next/server/chunks/[root-of-the-server]__1loecue._.js +3 -0
  186. package/.next/server/chunks/[root-of-the-server]__1mkpya8._.js +3 -0
  187. package/.next/server/chunks/{[root-of-the-server]__1a4i9sz._.js → [root-of-the-server]__1nwf3ua._.js} +2 -2
  188. package/.next/server/chunks/[root-of-the-server]__1p8hw44._.js +3 -0
  189. package/.next/server/chunks/[root-of-the-server]__1rsn804._.js +3 -0
  190. package/.next/server/chunks/[root-of-the-server]__1u-1vx4._.js +3 -0
  191. package/.next/server/chunks/[root-of-the-server]__1v6nwhq._.js +3 -0
  192. package/.next/server/chunks/[root-of-the-server]__1vw740y._.js +3 -3
  193. package/.next/server/chunks/[root-of-the-server]__20465pr._.js +3 -0
  194. package/.next/server/chunks/[root-of-the-server]__207mxv8._.js +3 -0
  195. package/.next/server/chunks/_0-eguqv._.js +3 -0
  196. package/.next/server/chunks/_011-ll5._.js +1 -1
  197. package/.next/server/chunks/_0389uce._.js +3 -0
  198. package/.next/server/chunks/_0_o8yhv._.js +3 -0
  199. package/.next/server/chunks/_0c5hvv3._.js +1 -1
  200. package/.next/server/chunks/_0frix22._.js +1 -1
  201. package/.next/server/chunks/_0gwg6ba._.js +3 -0
  202. package/.next/server/chunks/_0rdo0a4._.js +3 -0
  203. package/.next/server/chunks/_13ffmxv._.js +1 -1
  204. package/.next/server/chunks/_167vv93._.js +3 -0
  205. package/.next/server/chunks/_16jdov0._.js +1 -1
  206. package/.next/server/chunks/{_1ve0z0w._.js → _1e1h1f1._.js} +1 -1
  207. package/.next/server/chunks/_1flar98._.js +3 -0
  208. package/.next/server/chunks/_1pvqo-q._.js +3 -0
  209. package/.next/server/chunks/src_lib_ai_prompts_ts_0z36zms._.js +20 -12
  210. package/.next/server/chunks/ssr/src_1gayunq._.js +1 -1
  211. package/.next/server/chunks/ssr/src_1o363ao._.js +1 -1
  212. package/.next/server/chunks/ssr/src_app_error-items_[id]_page_tsx_04xwwdm._.js +1 -1
  213. package/.next/server/chunks/ssr/src_app_notebooks_[id]_page_tsx_08njm-5._.js +1 -1
  214. package/.next/server/chunks/ssr/src_components_providers_tsx_09kw-mv._.js +10 -10
  215. package/.next/server/middleware-build-manifest.js +3 -3
  216. package/.next/server/middleware-manifest.json +5 -5
  217. package/.next/server/pages/500.html +1 -1
  218. package/.next/server/server-reference-manifest.js +1 -1
  219. package/.next/server/server-reference-manifest.json +1 -1
  220. package/.next/static/chunks/130ch9mnvb6mp.css +3 -0
  221. package/.next/static/chunks/17wdtw8hml2n6.js +191 -0
  222. package/.next/static/chunks/2a0kgntckcbvf.js +1 -0
  223. package/.next/static/chunks/2f37cahijtel1.js +1 -0
  224. package/.next/static/chunks/2vm3br71ud51j.js +1 -0
  225. package/launcher.js +16 -0
  226. package/package.json +1 -1
  227. package/prisma/migrations/20261022000141_add_svg_animation_en/migration.sql +2 -0
  228. package/prisma/schema.prisma +2 -1
  229. package/prisma/seed.db +0 -0
  230. package/.next/server/chunks/[root-of-the-server]__00m7v48._.js +0 -3
  231. package/.next/server/chunks/[root-of-the-server]__01m28mx._.js +0 -3
  232. package/.next/server/chunks/[root-of-the-server]__07nvz1d._.js +0 -3
  233. package/.next/server/chunks/[root-of-the-server]__0b3nww4._.js +0 -3
  234. package/.next/server/chunks/[root-of-the-server]__0bs5unr._.js +0 -3
  235. package/.next/server/chunks/[root-of-the-server]__0dfbwm3._.js +0 -3
  236. package/.next/server/chunks/[root-of-the-server]__0els3c1._.js +0 -3
  237. package/.next/server/chunks/[root-of-the-server]__0grkic-._.js +0 -3
  238. package/.next/server/chunks/[root-of-the-server]__0hj9oe2._.js +0 -3
  239. package/.next/server/chunks/[root-of-the-server]__0j-gv3-._.js +0 -3
  240. package/.next/server/chunks/[root-of-the-server]__0je3zje._.js +0 -3
  241. package/.next/server/chunks/[root-of-the-server]__0na-z2m._.js +0 -3
  242. package/.next/server/chunks/[root-of-the-server]__0ns_tws._.js +0 -3
  243. package/.next/server/chunks/[root-of-the-server]__0p3hkz7._.js +0 -3
  244. package/.next/server/chunks/[root-of-the-server]__0pli74s._.js +0 -3
  245. package/.next/server/chunks/[root-of-the-server]__0qaih8c._.js +0 -3
  246. package/.next/server/chunks/[root-of-the-server]__0ra48rd._.js +0 -3
  247. package/.next/server/chunks/[root-of-the-server]__0sh6-yu._.js +0 -3
  248. package/.next/server/chunks/[root-of-the-server]__0ssagl1._.js +0 -3
  249. package/.next/server/chunks/[root-of-the-server]__0ws6c0v._.js +0 -3
  250. package/.next/server/chunks/[root-of-the-server]__0ydrrdj._.js +0 -3
  251. package/.next/server/chunks/[root-of-the-server]__0z-sjqh._.js +0 -3
  252. package/.next/server/chunks/[root-of-the-server]__0zp1e41._.js +0 -3
  253. package/.next/server/chunks/[root-of-the-server]__108ydjw._.js +0 -3
  254. package/.next/server/chunks/[root-of-the-server]__10yghm_._.js +0 -3
  255. package/.next/server/chunks/[root-of-the-server]__11-sf2-._.js +0 -3
  256. package/.next/server/chunks/[root-of-the-server]__11wobg2._.js +0 -3
  257. package/.next/server/chunks/[root-of-the-server]__13_c7nc._.js +0 -3
  258. package/.next/server/chunks/[root-of-the-server]__14pcopd._.js +0 -3
  259. package/.next/server/chunks/[root-of-the-server]__150ei9u._.js +0 -3
  260. package/.next/server/chunks/[root-of-the-server]__15g7yjy._.js +0 -3
  261. package/.next/server/chunks/[root-of-the-server]__19nm3y_._.js +0 -3
  262. package/.next/server/chunks/[root-of-the-server]__1e3crdc._.js +0 -3
  263. package/.next/server/chunks/[root-of-the-server]__1g-xe1f._.js +0 -3
  264. package/.next/server/chunks/[root-of-the-server]__1g3usdn._.js +0 -3
  265. package/.next/server/chunks/[root-of-the-server]__1hmv25w._.js +0 -3
  266. package/.next/server/chunks/[root-of-the-server]__1hq73__._.js +0 -3
  267. package/.next/server/chunks/[root-of-the-server]__1ouzjax._.js +0 -3
  268. package/.next/server/chunks/[root-of-the-server]__1pcgq22._.js +0 -3
  269. package/.next/server/chunks/[root-of-the-server]__1q5nt5y._.js +0 -3
  270. package/.next/server/chunks/[root-of-the-server]__1qt6_3b._.js +0 -3
  271. package/.next/server/chunks/[root-of-the-server]__1v1dgs2._.js +0 -3
  272. package/.next/server/chunks/[root-of-the-server]__1v9b8go._.js +0 -3
  273. package/.next/server/chunks/[root-of-the-server]__1vzxn91._.js +0 -3
  274. package/.next/server/chunks/[root-of-the-server]__1wgn76g._.js +0 -3
  275. package/.next/server/chunks/[root-of-the-server]__1wkh9sj._.js +0 -3
  276. package/.next/server/chunks/[root-of-the-server]__1xcmja4._.js +0 -3
  277. package/.next/server/chunks/[root-of-the-server]__1y6fx9-._.js +0 -3
  278. package/.next/server/chunks/[root-of-the-server]__1zos_p4._.js +0 -3
  279. package/.next/server/chunks/[root-of-the-server]__1zp0oig._.js +0 -3
  280. package/.next/server/chunks/[root-of-the-server]__203q6el._.js +0 -3
  281. package/.next/server/chunks/[root-of-the-server]__20bun16._.js +0 -3
  282. package/.next/server/chunks/_0ae3z2e._.js +0 -3
  283. package/.next/server/chunks/_0o1p57f._.js +0 -3
  284. package/.next/server/chunks/_0t6g4yt._.js +0 -3
  285. package/.next/server/chunks/_19fidvw._.js +0 -3
  286. package/.next/server/chunks/_1oqpwh8._.js +0 -3
  287. package/.next/server/chunks/_1q5w9fc._.js +0 -3
  288. package/.next/static/chunks/05q4yafxnvtzs.js +0 -1
  289. package/.next/static/chunks/1ad3ir88_e_v6.css +0 -3
  290. package/.next/static/chunks/29erttsjondpe.js +0 -1
  291. package/.next/static/chunks/31rxdwy0u_t29.js +0 -1
  292. package/.next/static/chunks/37g3bsrs22xg7.js +0 -191
  293. /package/.next/static/{OpwRvHtdhPgxve2rKkWkK → xZpf28Jr6w9NoYOlVaWKI}/_buildManifest.js +0 -0
  294. /package/.next/static/{OpwRvHtdhPgxve2rKkWkK → xZpf28Jr6w9NoYOlVaWKI}/_clientMiddlewareManifest.js +0 -0
  295. /package/.next/static/{OpwRvHtdhPgxve2rKkWkK → xZpf28Jr6w9NoYOlVaWKI}/_ssgManifest.js +0 -0
@@ -1,3 +0,0 @@
1
- module.exports=[54799,(e,t,r)=>{t.exports=e.x("crypto",()=>require("crypto"))},22734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},20635,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},59043,(e,t,r)=>{t.exports=e.x("next/dist/server/runtime-reacts.external.js",()=>require("next/dist/server/runtime-reacts.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},81111,(e,t,r)=>{t.exports=e.x("node:stream",()=>require("node:stream"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},37370,e=>{"use strict";var t=e.i(58821),r=e.i(98003);async function n(){let e=(0,r.getAppConfig)();return t.NextResponse.json({allowRegistration:!1!==e.allowRegistration})}e.s(["GET",0,n])},67007,e=>{"use strict";var t=e.i(47909),r=e.i(74017),n=e.i(96250),a=e.i(59756),i=e.i(61916),s=e.i(74677),o=e.i(69741),l=e.i(16795),p=e.i(87718),c=e.i(95169),u=e.i(47587),d=e.i(66012),x=e.i(70101),m=e.i(74838),g=e.i(10372),v=e.i(93695),f=e.i(9580);e.i(52474);var h=e.i(220);let E=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/register/status/route",pathname:"/api/register/status",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/register/status/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(37370),...{}}),{workAsyncStorage:R,workUnitAsyncStorage:I,serverHooks:A}=E;async function y(e,t,n){n.requestMeta&&(0,a.setRequestMeta)(e,n.requestMeta),E.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let R="/api/register/status/route";R=R.replace(/\/index$/,"")||"/";let I=await E.prepare(e,t,{srcPage:R,multiZoneDraftMode:!1});if(!I)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:A,deploymentId:y,params:_,nextConfig:w,parsedUrl:O,isDraftMode:N,prerenderManifest:C,routerServerContext:P,isOnDemandRevalidate:T,revalidateOnlyGenerated:S,resolvedPathname:b,clientReferenceManifest:D,serverActionsManifest:U}=I,q=(0,o.normalizeAppPath)(R),M=!!C.routes[b]&&(E.isDev||(0,f.isRouteCacheOwner)(b,E.cacheOwner,C.routes[b])),L=!!(C.dynamicRoutes[q]||M),j=async()=>((null==P?void 0:P.render404)?await P.render404(e,t,O,!1):t.end("This page could not be found"),null);if(L&&!N){let e=C.dynamicRoutes[q];if(e&&!1===e.fallback&&!M){if(w.adapterPath)return await j();throw new v.NoFallbackError}}let Z=null;!L||E.isDev||N||(Z="/index"===(Z=b)?"/":Z);let k=!0===E.isDev||!L,H=L&&!k;U&&D&&(0,s.setManifestsSingleton)({page:R,clientReferenceManifest:D,serverActionsManifest:U});let K=e.method||"GET",F=(0,i.getTracer)(),G=F.getActiveScopeSpan(),V=!!(null==P?void 0:P.isWrappedByNextServer),z=!!(0,a.getRequestMeta)(e,"minimalMode"),B=(0,a.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,w,C,z);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let Y={params:_,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts,useCacheTimeout:w.experimental.useCacheTimeout},cacheComponents:!!w.cacheComponents,validationLevel:w.experimental.instantInsights.validationLevel,isDraftMode:N,supportsDynamicResponse:k,incrementalCache:B,hmrRefreshHash:(0,a.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:w.cacheLife,staticPageGenerationTimeout:w.staticPageGenerationTimeout,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>E.onRequestError(e,t,n,a,P)},sharedContext:{buildId:A,deploymentId:y}},$=new l.NodeNextRequest(e),J=new l.NodeNextResponse(t),X=p.NextRequestAdapter.fromNodeNextRequest($,(0,p.signalFromNodeResponse)(t)),W=async({previousCacheEntry:r})=>{try{if(!z&&T&&S&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await E.handle(X,Y);e.fetchMetrics=Y.renderOpts.fetchMetrics;let i=Y.renderOpts.pendingWaitUntil;i&&n.waitUntil&&(n.waitUntil(i),i=void 0);let s=Y.renderOpts.collectedTags;if(!L)return await (0,d.sendResponse)($,J,a,i),null;{let e=await a.blob(),t=(0,x.toNodeOutgoingHttpHeaders)(a.headers);s&&(t[g.NEXT_CACHE_TAGS_HEADER]=s),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==Y.renderOpts.collectedRevalidate&&!(Y.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,n=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=g.INFINITE_CACHE?!1!==r&&r>0?w.expireTime:void 0:Y.renderOpts.collectedExpire;return{value:{kind:h.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await E.onRequestError(e,t,{routerKind:"App Router",routePath:R,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:T})},!1,P),t}},Q=async(a,s)=>{try{var o,l;let a=await E.handleResponse({req:e,nextConfig:w,cacheKey:Z,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:T,revalidateOnlyGenerated:S,responseGenerator:W,waitUntil:n.waitUntil,isMinimalMode:z});if(!L)return;if((null==a||null==(o=a.value)?void 0:o.kind)!==h.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==a||null==(l=a.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});z||t.setHeader("x-nextjs-cache",T?"REVALIDATED":a.isMiss?"MISS":a.isStale?"STALE":"HIT"),N&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let i=(0,x.fromNodeOutgoingHttpHeaders)(a.value.headers);z&&L||i.delete(g.NEXT_CACHE_TAGS_HEADER),!a.cacheControl||t.getHeader("Cache-Control")||i.get("Cache-Control")||i.set("Cache-Control",(0,m.getCacheControlHeader)(a.cacheControl)),await (0,d.sendResponse)($,J,new Response(a.value.body,{headers:i,status:a.value.status||200}));return}catch(t){if(t instanceof v.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:q,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:T})},!1,P),L)throw t;await (0,d.sendResponse)($,J,new Response(null,{status:500}));return}finally{(()=>{if(!a)return;let e=t.statusCode;a.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(a.setStatus({code:i.SpanStatusCode.ERROR}),a.setAttribute("error.type",e.toString()));let r=F.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==c.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route")||q,o=`${K} ${n}`;a.setAttributes({"next.route":n,"http.route":n,"next.span_name":o}),a.updateName(o),s&&s!==a&&(s.setAttribute("http.route",n),s.updateName(o))})()}};if(V&&G)await Q(G,void 0);else{let t=F.getActiveScopeSpan();await F.withPropagatedContext(e.headers,()=>F.trace(c.BaseServerSpan.handleRequest,{spanName:`${K} ${R}`,kind:i.SpanKind.SERVER,attributes:{"http.method":K,"http.target":e.url}},e=>Q(e,t)),void 0,!V)}}e.s(["handler",0,y,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:R,workUnitAsyncStorage:I})},"routeModule",0,E,"serverHooks",0,A,"workAsyncStorage",0,R,"workUnitAsyncStorage",0,I])},98003,e=>{"use strict";var t=e.i(22734),r=e.i(14747),n=e.i(50377),a=e.i(76025);let i=(0,n.createLogger)("config"),s=r.default.join(process.env.CONFIG_DIR||r.default.join(process.cwd(),"config"),"app-config.json"),o={aiProvider:process.env.AI_PROVIDER||"gemini",allowRegistration:!0,timeZone:a.DEFAULT_TIME_ZONE,openai:{instances:process.env.OPENAI_API_KEY?[{id:"env-default",name:"Default (ENV)",apiKey:process.env.OPENAI_API_KEY,baseUrl:process.env.OPENAI_BASE_URL||"https://api.openai.com/v1",model:process.env.OPENAI_MODEL||"gpt-4o"}]:[],activeInstanceId:process.env.OPENAI_API_KEY?"env-default":void 0},gemini:{apiKey:process.env.GOOGLE_API_KEY,baseUrl:process.env.GEMINI_BASE_URL,model:process.env.GEMINI_MODEL||"gemini-2.5-flash"},azure:{apiKey:process.env.AZURE_OPENAI_API_KEY,endpoint:process.env.AZURE_OPENAI_ENDPOINT,deploymentName:process.env.AZURE_OPENAI_DEPLOYMENT,apiVersion:process.env.AZURE_OPENAI_API_VERSION||"2024-02-15-preview",model:process.env.AZURE_OPENAI_MODEL||"gpt-4o"},anthropic:{apiKey:process.env.ANTHROPIC_API_KEY,baseUrl:process.env.ANTHROPIC_BASE_URL,model:process.env.ANTHROPIC_MODEL||"claude-sonnet-5-5"},prompts:{analyze:"",similar:""},timeouts:{analyze:18e4}};function l(){if(t.default.existsSync(s))try{var e;let r=t.default.readFileSync(s,"utf-8"),n=JSON.parse(r),l=n.openai;if((e=n.openai)&&"object"==typeof e&&"apiKey"in e&&!("instances"in e)){i.info("Detected legacy OpenAI config, migrating to multi-instance format..."),l=function(e){if(!e.apiKey)return{instances:[],activeInstanceId:void 0};let t={id:"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}),name:"Default",apiKey:e.apiKey,baseUrl:e.baseUrl||"https://api.openai.com/v1",model:e.model||"gpt-4o"};return{instances:[t],activeInstanceId:t.id}}(n.openai);let e={...n,openai:l};t.default.writeFileSync(s,JSON.stringify(e,null,2)),i.info("Legacy OpenAI config migrated successfully")}return{...o,...n,timeZone:(0,a.isValidTimeZone)(n.timeZone)?n.timeZone.trim():a.DEFAULT_TIME_ZONE,openai:{instances:l?.instances||o.openai?.instances||[],activeInstanceId:l?.activeInstanceId||o.openai?.activeInstanceId},gemini:{...o.gemini,...n.gemini},azure:{...o.azure,...n.azure},anthropic:{...o.anthropic,...n.anthropic},prompts:{...o.prompts,...n.prompts},timeouts:{...o.timeouts,...n.timeouts}}}catch(e){i.error({error:e},"Failed to read config file")}return o}e.s(["getActiveOpenAIConfig",0,function(){let e=l(),t=e.openai?.instances||[],r=e.openai?.activeInstanceId;if(r&&0!==t.length)return t.find(e=>e.id===r)},"getAppConfig",0,l,"getAppTimeZone",0,function(){return l().timeZone||a.DEFAULT_TIME_ZONE},"updateAppConfig",0,function(e){if(void 0!==e.timeZone&&!(0,a.isValidTimeZone)(e.timeZone))throw Error("INVALID_TIME_ZONE");let r=l(),n={...r,...e,timeZone:e.timeZone?.trim()??r.timeZone??a.DEFAULT_TIME_ZONE,openai:{instances:e.openai?.instances??r.openai?.instances??[],activeInstanceId:e.openai?.activeInstanceId??r.openai?.activeInstanceId},gemini:{...r.gemini,...e.gemini},azure:{...r.azure,...e.azure},anthropic:{...r.anthropic,...e.anthropic},prompts:{...r.prompts,...e.prompts},timeouts:{...r.timeouts,...e.timeouts}};try{return t.default.writeFileSync(s,JSON.stringify(n,null,2)),n}catch(e){throw i.error({error:e},"Failed to write config file"),e}}])},50377,e=>{"use strict";let t={trace:10,debug:20,info:30,warn:40,error:50,fatal:60};function r(e,n={}){let a,i=t[e],s=(a=process.env.LOG_LEVEL?.toLowerCase())&&void 0!==t[a]?t[a]:t.info;return(t,r)=>{let a,o;if(i<s)return;let l=new Date;"string"==typeof t?(a={},o=t):(a=t,o=r||"");{let t=JSON.stringify({level:e,time:l.toISOString(),...n,...a,msg:o});switch(e){case"error":case"fatal":console.error(t);break;case"warn":console.warn(t);break;default:console.log(t)}}}}let n=function e(t={}){return t.module,{trace:r("trace",t),debug:r("debug",t),info:r("info",t),warn:r("warn",t),error:r("error",t),fatal:r("fatal",t),child:r=>e({...t,...r}),box:(e,r,n="📋")=>{console.log(JSON.stringify({level:"info",time:new Date().toISOString(),...t,title:e,..."string"==typeof r?{content:r}:r||{},msg:e}))},divider:(e="-")=>{}}}({env:"production"});e.s(["createLogger",0,function(e){return n.child({module:e})}])}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__1g-xe1f._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[51615,(e,r,o)=>{r.exports=e.x("node:buffer",()=>require("node:buffer"))},2157,(e,r,o)=>{r.exports=e.x("node:fs",()=>require("node:fs"))},47299,(e,r,o)=>{r.exports=e.x("node:http",()=>require("node:http"))},61095,(e,r,o)=>{r.exports=e.x("node:net",()=>require("node:net"))},50227,(e,r,o)=>{r.exports=e.x("node:path",()=>require("node:path"))},59639,(e,r,o)=>{r.exports=e.x("node:process",()=>require("node:process"))},57764,(e,r,o)=>{r.exports=e.x("node:url",()=>require("node:url"))},12057,(e,r,o)=>{r.exports=e.x("node:util",()=>require("node:util"))},27028,(e,r,o)=>{r.exports=e.x("node:zlib",()=>require("node:zlib"))},25897,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__0akadps._.js","server/chunks/[root-of-the-server]__15tkoe6._.js"].map(r=>e.l(r))).then(()=>r(55057)))}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__1g3usdn._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[63021,(e,r,t)=>{r.exports=e.x("@prisma/client-2c3a283f134fdcb6",()=>require("@prisma/client-2c3a283f134fdcb6"))},98043,e=>{"use strict";var r=e.i(63021);let t=e.g.prisma||new r.PrismaClient({log:"true"===process.env.DEBUG_DB?["query","error","warn"]:["error"]});e.s(["prisma",0,t])},49719,(e,r,t)=>{r.exports=e.x("assert",()=>require("assert"))},44950,e=>e.a(async(r,t)=>{try{var n=await e.y("bcryptjs-ee66c2bdc904f2cf");e.n(n),t()}catch(e){t(e)}},!0),874,(e,r,t)=>{r.exports=e.x("buffer",()=>require("buffer"))},54799,(e,r,t)=>{r.exports=e.x("crypto",()=>require("crypto"))},27699,(e,r,t)=>{r.exports=e.x("events",()=>require("events"))},22734,(e,r,t)=>{r.exports=e.x("fs",()=>require("fs"))},21517,(e,r,t)=>{r.exports=e.x("http",()=>require("http"))},24836,(e,r,t)=>{r.exports=e.x("https",()=>require("https"))},4446,(e,r,t)=>{r.exports=e.x("net",()=>require("net"))},70406,(e,r,t)=>{r.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,r,t)=>{r.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},20635,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},24725,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},56704,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},59043,(e,r,t)=>{r.exports=e.x("next/dist/server/runtime-reacts.external.js",()=>require("next/dist/server/runtime-reacts.external.js"))},93695,(e,r,t)=>{r.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},81111,(e,r,t)=>{r.exports=e.x("node:stream",()=>require("node:stream"))},46786,(e,r,t)=>{r.exports=e.x("os",()=>require("os"))},14747,(e,r,t)=>{r.exports=e.x("path",()=>require("path"))},45706,(e,r,t)=>{r.exports=e.x("querystring",()=>require("querystring"))},55004,(e,r,t)=>{r.exports=e.x("tls",()=>require("tls"))},92509,(e,r,t)=>{r.exports=e.x("url",()=>require("url"))},24361,(e,r,t)=>{r.exports=e.x("util",()=>require("util"))},6461,(e,r,t)=>{r.exports=e.x("zlib",()=>require("zlib"))},96155,50580,64351,e=>{"use strict";e.s(["__classPrivateFieldGet",0,function(e,r,t,n){if("a"===t&&!n)throw TypeError("Private accessor was defined without a getter");if("function"==typeof r?e!==r||!n:!r.has(e))throw TypeError("Cannot read private member from an object whose class did not declare it");return"m"===t?n:"a"===t?n.call(e):n?n.value:r.get(e)},"__classPrivateFieldSet",0,function(e,r,t,n,s){if("m"===n)throw TypeError("Private method is not writable");if("a"===n&&!s)throw TypeError("Private accessor was defined without a setter");if("function"==typeof r?e!==r||!s:!r.has(e))throw TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(e,t):s?s.value=t:r.set(e,t),t}],96155);let r=e=>{if(e instanceof Error)return e;if("object"==typeof e&&null!==e){try{let r=Object.prototype.toString.call(e);if("[object Error]"===r||"[object DOMException]"===r){let r=Error(e.message,e.cause?{cause:e.cause}:{});return e.stack&&(r.stack=e.stack),e.cause&&!r.cause&&(r.cause=e.cause),e.name&&(r.name=e.name),r}}catch{}try{return Error(JSON.stringify(e))}catch{}}return Error(e)};e.s(["castToError",0,r,"isAbortError",0,function(e){return"object"==typeof e&&null!==e&&("name"in e&&"AbortError"===e.name||"message"in e&&String(e.message).includes("FetchRequestCanceledException"))}],50580);var t=class extends Error{};class n extends t{constructor(e,r,t,s,i){super(`${n.makeMessage(e,r,t)}`),this.status=e,this.headers=s,this.requestID=s?.get("request-id"),this.workspaceID=s?.get("anthropic-workspace-id"),this.error=r,this.type=i??null}static makeMessage(e,r,t){let n=r?.message?"string"==typeof r.message?r.message:JSON.stringify(r.message):r?JSON.stringify(r):t;return e&&n?`${e} ${n}`:e?`${e} status code (no body)`:n||"(no status code or body)"}static generate(e,t,f,g){if(!e||!g)return new s({message:f,cause:r(t)});let m=t?.error?.type;return 400===e?new i(e,t,f,g,m):401===e?new o(e,t,f,g,m):403===e?new a(e,t,f,g,m):404===e?new c(e,t,f,g,m):409===e?new u(e,t,f,g,m):422===e?new l(e,t,f,g,m):429===e?new p(e,t,f,g,m):e>=500?new d(e,t,f,g,m):new n(e,t,f,g,m)}}class s extends n{constructor({message:e,cause:r}){super(void 0,void 0,e||"Connection error.",void 0),r&&(this.cause=r)}}class i extends n{}class o extends n{}class a extends n{}class c extends n{}class u extends n{}class l extends n{}class p extends n{}class d extends n{}e.s(["APIConnectionError",0,s,"APIConnectionTimeoutError",0,class extends s{constructor({message:e}={}){super({message:e??"Request timed out."})}},"APIError",0,n,"APIUserAbortError",0,class extends n{constructor({message:e}={}){super(void 0,void 0,e||"Request was aborted.",void 0)}},"AnthropicError",0,t,"AuthenticationError",0,o,"BadRequestError",0,i,"ConflictError",0,u,"InternalServerError",0,d,"NotFoundError",0,c,"PermissionDeniedError",0,a,"RateLimitError",0,p,"RetryableError",0,class extends t{constructor(e,{cause:r}={}){super(e??"Retryable error."),void 0!==r&&(this.cause=r)}},"UnprocessableEntityError",0,l],64351)},98156,e=>{"use strict";var r=e.i(64351);function t(e,t){return e instanceof r.APIError&&e.status===t}e.s(["applyJitter",0,function(e){return e*(1-.25*Math.random())},"backoff",0,function(e,r,t){return Math.min(r*2**e,t)},"isFatal4xx",0,function(e){return e instanceof r.APIError&&"number"==typeof e.status&&e.status>=400&&e.status<500&&!t(e,408)&&!t(e,409)&&!t(e,429)},"isStatus",0,t,"jitter",0,function(e,r){return e+Math.random()*(r-e)}])},87160,e=>{"use strict";let r,t;e.s(["concatBytes",0,function(e){let r=0;for(let t of e)r+=t.length;let t=new Uint8Array(r),n=0;for(let r of e)t.set(r,n),n+=r.length;return t},"decodeUTF8",0,function(e){let r;return(t??(t=(r=new globalThis.TextDecoder).decode.bind(r)))(e)},"encodeUTF8",0,function(e){let t;return(r??(r=(t=new globalThis.TextEncoder).encode.bind(t)))(e)}])},11935,e=>{"use strict";let r,t;var n=e.i(64219),s=e.i(31963);let i="warn",o={off:0,error:200,warn:300,info:400,debug:500},a=(e,r,t)=>{if(e){if((0,n.hasOwn)(o,e))return e;t.warn(`${r} was set to ${JSON.stringify(e)}, expected one of ${JSON.stringify(Object.keys(o))}`)}};function c(){}function u(e,r,t){return!r||o[e]>o[t]?c:r[e].bind(r)}let l={error:c,warn:c,info:c,debug:c},p=new WeakMap;function d(e,r){let t=p.get(e);if(t&&t[0]===r)return t[1];let n={error:u("error",e,r),warn:u("warn",e,r),info:u("info",e,r),debug:u("debug",e,r)};return p.set(e,[r,n]),n}e.s(["debugLogRequestDetails",0,function(e,r,t){let n;e.debug!==c&&e.debug(r,((n=t).options&&(n.options={...n.options},delete n.options.headers),n.headers&&(n.headers=Object.fromEntries((n.headers instanceof Headers?[...n.headers]:Object.entries(n.headers)).map(([e,r])=>[e,"authorization"===e.toLowerCase()||"api-key"===e.toLowerCase()||"x-api-key"===e.toLowerCase()||"cookie"===e.toLowerCase()||"set-cookie"===e.toLowerCase()?"***":r]))),"retryOfRequestLogID"in n&&(n.retryOfRequestLogID&&(n.retryOf=n.retryOfRequestLogID),delete n.retryOfRequestLogID),n))},"defaultLogLevel",0,i,"defaultLogger",0,function(){let e=(0,s.readEnv)("ANTHROPIC_LOG");return t&&e===r||(r=e,t=d(console,a(e,"process.env['ANTHROPIC_LOG']",d(console,i))??i)),t},"loggerFor",0,function(e){let r=e.logger,t=e.logLevel??"off";return r?d(r,t):l},"parseLogLevel",0,a])},68120,e=>{"use strict";e.s(["promiseWithResolvers",0,function(){let e,r;return{promise:new Promise((t,n)=>{e=t,r=n}),resolve:e,reject:r}}])},64219,31963,e=>{"use strict";var r=e.i(64351);let t=/^[a-z][a-z0-9+.-]*:/i,n=e=>(n=Array.isArray)(e),s=n;e.s(["checkNever",0,function(e){},"hasOwn",0,function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},"isAbsoluteURL",0,e=>t.test(e),"isArray",()=>n,"isEmptyObj",0,function(e){if(!e)return!0;for(let r in e)return!1;return!0},"isObj",0,function(e){return null!=e&&"object"==typeof e&&!Array.isArray(e)},"isReadonlyArray",0,s,"maybeObj",0,function(e){return"object"!=typeof e?{}:e??{}},"safeJSON",0,e=>{try{return JSON.parse(e)}catch(e){return}},"validatePositiveInteger",0,(e,t)=>{if("number"!=typeof t||!Number.isInteger(t))throw new r.AnthropicError(`${e} must be an integer`);if(t<0)throw new r.AnthropicError(`${e} must be a positive integer`);return t}],64219),e.s(["readEnv",0,e=>void 0!==globalThis.process?globalThis.process.env?.[e]?.trim()||void 0:void 0!==globalThis.Deno&&globalThis.Deno.env?.get?.(e)?.trim()||void 0],31963)},32014,e=>{"use strict";var r=class extends Error{constructor(e){super("string"==typeof e?e:e.map(e=>"text"===e.type?e.text:`[${e.type}]`).join(" ")),this.name="ToolError",this.content=e}};e.s(["ToolError",0,r])},93668,e=>{"use strict";var r=e.i(64351);e.s(["DEFAULT_MEMORY_SYNC_INTERVAL_MS",0,15e3,"MIN_MEMORY_SYNC_INTERVAL_MS",0,5e3,"checkMemorySyncInterval",0,function(e,t){if(!(e>=5e3))throw new r.AnthropicError(`${t} must be at least 5000ms (got ${e}); to run without memory sync, pass \`memorySyncIntervalMs: null\` to the worker instead`)}])},98003,e=>{"use strict";var r=e.i(22734),t=e.i(14747),n=e.i(50377),s=e.i(76025);let i=(0,n.createLogger)("config"),o=t.default.join(process.env.CONFIG_DIR||t.default.join(process.cwd(),"config"),"app-config.json"),a={aiProvider:process.env.AI_PROVIDER||"gemini",allowRegistration:!0,timeZone:s.DEFAULT_TIME_ZONE,openai:{instances:process.env.OPENAI_API_KEY?[{id:"env-default",name:"Default (ENV)",apiKey:process.env.OPENAI_API_KEY,baseUrl:process.env.OPENAI_BASE_URL||"https://api.openai.com/v1",model:process.env.OPENAI_MODEL||"gpt-4o"}]:[],activeInstanceId:process.env.OPENAI_API_KEY?"env-default":void 0},gemini:{apiKey:process.env.GOOGLE_API_KEY,baseUrl:process.env.GEMINI_BASE_URL,model:process.env.GEMINI_MODEL||"gemini-2.5-flash"},azure:{apiKey:process.env.AZURE_OPENAI_API_KEY,endpoint:process.env.AZURE_OPENAI_ENDPOINT,deploymentName:process.env.AZURE_OPENAI_DEPLOYMENT,apiVersion:process.env.AZURE_OPENAI_API_VERSION||"2024-02-15-preview",model:process.env.AZURE_OPENAI_MODEL||"gpt-4o"},anthropic:{apiKey:process.env.ANTHROPIC_API_KEY,baseUrl:process.env.ANTHROPIC_BASE_URL,model:process.env.ANTHROPIC_MODEL||"claude-sonnet-5-5"},prompts:{analyze:"",similar:""},timeouts:{analyze:18e4}};function c(){if(r.default.existsSync(o))try{var e;let t=r.default.readFileSync(o,"utf-8"),n=JSON.parse(t),c=n.openai;if((e=n.openai)&&"object"==typeof e&&"apiKey"in e&&!("instances"in e)){i.info("Detected legacy OpenAI config, migrating to multi-instance format..."),c=function(e){if(!e.apiKey)return{instances:[],activeInstanceId:void 0};let r={id:"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let r=16*Math.random()|0;return("x"===e?r:3&r|8).toString(16)}),name:"Default",apiKey:e.apiKey,baseUrl:e.baseUrl||"https://api.openai.com/v1",model:e.model||"gpt-4o"};return{instances:[r],activeInstanceId:r.id}}(n.openai);let e={...n,openai:c};r.default.writeFileSync(o,JSON.stringify(e,null,2)),i.info("Legacy OpenAI config migrated successfully")}return{...a,...n,timeZone:(0,s.isValidTimeZone)(n.timeZone)?n.timeZone.trim():s.DEFAULT_TIME_ZONE,openai:{instances:c?.instances||a.openai?.instances||[],activeInstanceId:c?.activeInstanceId||a.openai?.activeInstanceId},gemini:{...a.gemini,...n.gemini},azure:{...a.azure,...n.azure},anthropic:{...a.anthropic,...n.anthropic},prompts:{...a.prompts,...n.prompts},timeouts:{...a.timeouts,...n.timeouts}}}catch(e){i.error({error:e},"Failed to read config file")}return a}e.s(["getActiveOpenAIConfig",0,function(){let e=c(),r=e.openai?.instances||[],t=e.openai?.activeInstanceId;if(t&&0!==r.length)return r.find(e=>e.id===t)},"getAppConfig",0,c,"getAppTimeZone",0,function(){return c().timeZone||s.DEFAULT_TIME_ZONE},"updateAppConfig",0,function(e){if(void 0!==e.timeZone&&!(0,s.isValidTimeZone)(e.timeZone))throw Error("INVALID_TIME_ZONE");let t=c(),n={...t,...e,timeZone:e.timeZone?.trim()??t.timeZone??s.DEFAULT_TIME_ZONE,openai:{instances:e.openai?.instances??t.openai?.instances??[],activeInstanceId:e.openai?.activeInstanceId??t.openai?.activeInstanceId},gemini:{...t.gemini,...e.gemini},azure:{...t.azure,...e.azure},anthropic:{...t.anthropic,...e.anthropic},prompts:{...t.prompts,...e.prompts},timeouts:{...t.timeouts,...e.timeouts}};try{return r.default.writeFileSync(o,JSON.stringify(n,null,2)),n}catch(e){throw i.error({error:e},"Failed to write config file"),e}}])},83508,e=>{"use strict";var r=e.i(76025);e.s(["calculateGradeNumber",0,function(e,t,n=r.DEFAULT_TIME_ZONE){if(!t||"primary"!==e&&"junior_high"!==e&&"senior_high"!==e)return null;let s=(0,r.getCalendarDate)(new Date,n),i=s.getFullYear(),o=s.getMonth()+1,a=i-t;if(o<9&&(a-=1),"primary"===e){let e=1+a;if(e>=1&&e<=6)return e}else if("junior_high"===e){let e=7+a;if(e>=7&&e<=9)return e}else if("senior_high"===e){let e=10+a;if(e>=10&&e<=12)return e}return null},"inferSubjectFromName",0,function(e){if(!e)return null;let r=e.toLowerCase();return r.includes("math")||r.includes("数学")?"math":r.includes("physics")||r.includes("物理")?"physics":r.includes("chemistry")||r.includes("化学")?"chemistry":r.includes("biology")||r.includes("生物")?"biology":r.includes("english")||r.includes("英语")?"english":r.includes("chinese")||r.includes("语文")?"chinese":r.includes("history")||r.includes("历史")?"history":r.includes("geography")||r.includes("地理")?"geography":r.includes("politics")||r.includes("政治")?"politics":null}])},50377,e=>{"use strict";let r={trace:10,debug:20,info:30,warn:40,error:50,fatal:60};function t(e,n={}){let s,i=r[e],o=(s=process.env.LOG_LEVEL?.toLowerCase())&&void 0!==r[s]?r[s]:r.info;return(r,t)=>{let s,a;if(i<o)return;let c=new Date;"string"==typeof r?(s={},a=r):(s=r,a=t||"");{let r=JSON.stringify({level:e,time:c.toISOString(),...n,...s,msg:a});switch(e){case"error":case"fatal":console.error(r);break;case"warn":console.warn(r);break;default:console.log(r)}}}}let n=function e(r={}){return r.module,{trace:t("trace",r),debug:t("debug",r),info:t("info",r),warn:t("warn",r),error:t("error",r),fatal:t("fatal",r),child:t=>e({...r,...t}),box:(e,t,n="📋")=>{console.log(JSON.stringify({level:"info",time:new Date().toISOString(),...r,title:e,..."string"==typeof t?{content:t}:t||{},msg:e}))},divider:(e="-")=>{}}}({env:"production"});e.s(["createLogger",0,function(e){return n.child({module:e})}])},30166,e=>{"use strict";e.s(["normalizeMistakeStatusForSave",0,function(e,r){return(r||"").trim()?"wrong_attempt":"not_attempted"===e||"wrong_attempt"===e||"unknown"===e?e:"unknown"}])},68426,e=>{"use strict";var r=e.i(83508);let t=["primary","junior_high","senior_high"],n="primary",s=["math","english","chinese","physics","chemistry","biology","history","geography","politics"],i={primary:["math","english"],junior_high:s,senior_high:s},o={primary:/^[一二三四五六]年级/,junior_high:/^[七八九]年级/,senior_high:/^高[一二三]/};function a(e){return"string"==typeof e&&t.includes(e)}function c(e){return"string"==typeof e&&s.includes(e)}e.s(["STAGE_SUBJECTS",0,i,"SUBJECT_DISPLAY_NAMES",0,{math:"数学",english:"英语",chinese:"语文",physics:"物理",chemistry:"化学",biology:"生物",history:"历史",geography:"地理",politics:"政治"},"isGradeInStage",0,function(e,r){return o[r].test(e)},"isNotebookSubject",0,c,"isValidNotebookScope",0,function(e,r){return a(e)&&c(r)&&i[e].includes(r)},"resolveNotebookScope",0,function(e){let t=c(e.subjectKey)?e.subjectKey:(0,r.inferSubjectFromName)(e.name);return{stage:a(e.stage)?e.stage:n,subject:t&&c(t)?t:null}},"stageFromEducationStage",0,function(e){return a(e)?e:n}])}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__1hmv25w._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[63021,(e,r,t)=>{r.exports=e.x("@prisma/client-2c3a283f134fdcb6",()=>require("@prisma/client-2c3a283f134fdcb6"))},98043,e=>{"use strict";var r=e.i(63021);let t=e.g.prisma||new r.PrismaClient({log:"true"===process.env.DEBUG_DB?["query","error","warn"]:["error"]});e.s(["prisma",0,t])},49719,(e,r,t)=>{r.exports=e.x("assert",()=>require("assert"))},44950,e=>e.a(async(r,t)=>{try{var n=await e.y("bcryptjs-ee66c2bdc904f2cf");e.n(n),t()}catch(e){t(e)}},!0),874,(e,r,t)=>{r.exports=e.x("buffer",()=>require("buffer"))},54799,(e,r,t)=>{r.exports=e.x("crypto",()=>require("crypto"))},85685,e=>{e.v(e=>Promise.resolve().then(()=>e(54799)))},27699,(e,r,t)=>{r.exports=e.x("events",()=>require("events"))},22734,(e,r,t)=>{r.exports=e.x("fs",()=>require("fs"))},21517,(e,r,t)=>{r.exports=e.x("http",()=>require("http"))},24836,(e,r,t)=>{r.exports=e.x("https",()=>require("https"))},70406,(e,r,t)=>{r.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,r,t)=>{r.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},20635,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},24725,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},56704,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},59043,(e,r,t)=>{r.exports=e.x("next/dist/server/runtime-reacts.external.js",()=>require("next/dist/server/runtime-reacts.external.js"))},93695,(e,r,t)=>{r.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},81111,(e,r,t)=>{r.exports=e.x("node:stream",()=>require("node:stream"))},14747,(e,r,t)=>{r.exports=e.x("path",()=>require("path"))},45706,(e,r,t)=>{r.exports=e.x("querystring",()=>require("querystring"))},92509,(e,r,t)=>{r.exports=e.x("url",()=>require("url"))},24361,(e,r,t)=>{r.exports=e.x("util",()=>require("util"))},6461,(e,r,t)=>{r.exports=e.x("zlib",()=>require("zlib"))},79955,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__1_gkx5x._.js"].map(r=>e.l(r))).then(()=>r(35611)))},46735,e=>{e.v(r=>Promise.all(["server/chunks/[externals]__04n7qbr._.js","server/chunks/[root-of-the-server]__0rk_yxy._.js"].map(r=>e.l(r))).then(()=>r(83085)))},91961,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__1jtd2ar._.js"].map(r=>e.l(r))).then(()=>r(12111)))},72331,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__0grkic-._.js","server/chunks/[root-of-the-server]__1nmtv65._.js","server/chunks/[root-of-the-server]__0_t7bbz._.js"].map(r=>e.l(r))).then(()=>r(20442)))},30249,e=>{e.v(e=>Promise.resolve().then(()=>e(5898)))},76759,e=>{"use strict";var r=e.i(58821);let t={UNAUTHORIZED:"UNAUTHORIZED",SESSION_EXPIRED:"SESSION_EXPIRED",FORBIDDEN:"FORBIDDEN",NOT_OWNER:"NOT_OWNER",ADMIN_REQUIRED:"ADMIN_REQUIRED",NOT_FOUND:"NOT_FOUND",USER_NOT_FOUND:"USER_NOT_FOUND",ITEM_NOT_FOUND:"ITEM_NOT_FOUND",BAD_REQUEST:"BAD_REQUEST",INVALID_INPUT:"INVALID_INPUT",MISSING_REQUIRED_FIELD:"MISSING_REQUIRED_FIELD",VALIDATION_ERROR:"VALIDATION_ERROR",OPERATION_NOT_ALLOWED:"OPERATION_NOT_ALLOWED",CONFLICT:"CONFLICT",ALREADY_EXISTS:"ALREADY_EXISTS",INTERNAL_ERROR:"INTERNAL_ERROR",DATABASE_ERROR:"DATABASE_ERROR",AI_ERROR:"AI_ERROR"};function n(e,t,n,i){let s={message:e};return n&&(s.code=n),i&&(s.details=i),r.NextResponse.json(s,{status:t})}e.s(["ErrorCode",0,t,"badRequest",0,function(e,r){return n(e,400,t.BAD_REQUEST,r)},"conflict",0,function(e){return n(e,409,t.CONFLICT)},"createErrorResponse",0,n,"forbidden",0,function(e="Forbidden"){return n(e,403,t.FORBIDDEN)},"internalError",0,function(e="Internal server error"){return n(e,500,t.INTERNAL_ERROR)},"notFound",0,function(e="Not found"){return n(e,404,t.NOT_FOUND)},"unauthorized",0,function(e="Unauthorized"){return n(e,401,t.UNAUTHORIZED)},"validationError",0,function(e,r){return n(e,400,t.VALIDATION_ERROR,r)}])},98003,e=>{"use strict";var r=e.i(22734),t=e.i(14747),n=e.i(50377),i=e.i(76025);let s=(0,n.createLogger)("config"),a=t.default.join(process.env.CONFIG_DIR||t.default.join(process.cwd(),"config"),"app-config.json"),o={aiProvider:process.env.AI_PROVIDER||"gemini",allowRegistration:!0,timeZone:i.DEFAULT_TIME_ZONE,openai:{instances:process.env.OPENAI_API_KEY?[{id:"env-default",name:"Default (ENV)",apiKey:process.env.OPENAI_API_KEY,baseUrl:process.env.OPENAI_BASE_URL||"https://api.openai.com/v1",model:process.env.OPENAI_MODEL||"gpt-4o"}]:[],activeInstanceId:process.env.OPENAI_API_KEY?"env-default":void 0},gemini:{apiKey:process.env.GOOGLE_API_KEY,baseUrl:process.env.GEMINI_BASE_URL,model:process.env.GEMINI_MODEL||"gemini-2.5-flash"},azure:{apiKey:process.env.AZURE_OPENAI_API_KEY,endpoint:process.env.AZURE_OPENAI_ENDPOINT,deploymentName:process.env.AZURE_OPENAI_DEPLOYMENT,apiVersion:process.env.AZURE_OPENAI_API_VERSION||"2024-02-15-preview",model:process.env.AZURE_OPENAI_MODEL||"gpt-4o"},anthropic:{apiKey:process.env.ANTHROPIC_API_KEY,baseUrl:process.env.ANTHROPIC_BASE_URL,model:process.env.ANTHROPIC_MODEL||"claude-sonnet-5-5"},prompts:{analyze:"",similar:""},timeouts:{analyze:18e4}};function c(){if(r.default.existsSync(a))try{var e;let t=r.default.readFileSync(a,"utf-8"),n=JSON.parse(t),c=n.openai;if((e=n.openai)&&"object"==typeof e&&"apiKey"in e&&!("instances"in e)){s.info("Detected legacy OpenAI config, migrating to multi-instance format..."),c=function(e){if(!e.apiKey)return{instances:[],activeInstanceId:void 0};let r={id:"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let r=16*Math.random()|0;return("x"===e?r:3&r|8).toString(16)}),name:"Default",apiKey:e.apiKey,baseUrl:e.baseUrl||"https://api.openai.com/v1",model:e.model||"gpt-4o"};return{instances:[r],activeInstanceId:r.id}}(n.openai);let e={...n,openai:c};r.default.writeFileSync(a,JSON.stringify(e,null,2)),s.info("Legacy OpenAI config migrated successfully")}return{...o,...n,timeZone:(0,i.isValidTimeZone)(n.timeZone)?n.timeZone.trim():i.DEFAULT_TIME_ZONE,openai:{instances:c?.instances||o.openai?.instances||[],activeInstanceId:c?.activeInstanceId||o.openai?.activeInstanceId},gemini:{...o.gemini,...n.gemini},azure:{...o.azure,...n.azure},anthropic:{...o.anthropic,...n.anthropic},prompts:{...o.prompts,...n.prompts},timeouts:{...o.timeouts,...n.timeouts}}}catch(e){s.error({error:e},"Failed to read config file")}return o}e.s(["getActiveOpenAIConfig",0,function(){let e=c(),r=e.openai?.instances||[],t=e.openai?.activeInstanceId;if(t&&0!==r.length)return r.find(e=>e.id===t)},"getAppConfig",0,c,"getAppTimeZone",0,function(){return c().timeZone||i.DEFAULT_TIME_ZONE},"updateAppConfig",0,function(e){if(void 0!==e.timeZone&&!(0,i.isValidTimeZone)(e.timeZone))throw Error("INVALID_TIME_ZONE");let t=c(),n={...t,...e,timeZone:e.timeZone?.trim()??t.timeZone??i.DEFAULT_TIME_ZONE,openai:{instances:e.openai?.instances??t.openai?.instances??[],activeInstanceId:e.openai?.activeInstanceId??t.openai?.activeInstanceId},gemini:{...t.gemini,...e.gemini},azure:{...t.azure,...e.azure},anthropic:{...t.anthropic,...e.anthropic},prompts:{...t.prompts,...e.prompts},timeouts:{...t.timeouts,...e.timeouts}};try{return r.default.writeFileSync(a,JSON.stringify(n,null,2)),n}catch(e){throw s.error({error:e},"Failed to write config file"),e}}])},50377,e=>{"use strict";let r={trace:10,debug:20,info:30,warn:40,error:50,fatal:60};function t(e,n={}){let i,s=r[e],a=(i=process.env.LOG_LEVEL?.toLowerCase())&&void 0!==r[i]?r[i]:r.info;return(r,t)=>{let i,o;if(s<a)return;let c=new Date;"string"==typeof r?(i={},o=r):(i=r,o=t||"");{let r=JSON.stringify({level:e,time:c.toISOString(),...n,...i,msg:o});switch(e){case"error":case"fatal":console.error(r);break;case"warn":console.warn(r);break;default:console.log(r)}}}}let n=function e(r={}){return r.module,{trace:t("trace",r),debug:t("debug",r),info:t("info",r),warn:t("warn",r),error:t("error",r),fatal:t("fatal",r),child:t=>e({...r,...t}),box:(e,t,n="📋")=>{console.log(JSON.stringify({level:"info",time:new Date().toISOString(),...r,title:e,..."string"==typeof t?{content:t}:t||{},msg:e}))},divider:(e="-")=>{}}}({env:"production"});e.s(["createLogger",0,function(e){return n.child({module:e})}])},4752,e=>{"use strict";var r=e.i(98043),t=e.i(43911);let n=(0,e.i(50377).createLogger)("mastery"),i=["correct","wrong","not_attempted"];function s(e){return"string"==typeof e&&i.includes(e)}let a={easy:.85,medium:.95,hard:1,harder:1},o={wrong:.1,not_attempted:0};async function c(e){let i=await r.prisma.errorItem.findUnique({where:{id:e},select:{id:!0,questionText:!0,mistakeStatus:!0,tags:{select:{name:!0}},practiceRecords:{where:{result:{not:null}},orderBy:[{createdAt:"asc"},{id:"asc"}],select:{result:!0,difficulty:!0,source:!0,createdAt:!0}}}});if(!i)return;let c=i.practiceRecords.filter(e=>s(e.result)).map(e=>({date:e.createdAt.toISOString(),difficulty:e.difficulty,result:e.result,source:e.source})),l=function(e){if(0===e.length)return null;let r=.15,t=.5;return e.forEach((n,i)=>{let s=Math.pow(.7,e.length-1-i),c="correct"===n.result?a[n.difficulty||"medium"]??a.medium:o[n.result];r+=s*c,t+=s}),Math.round(r/t*100)/100}(c);if(null===l)return void await r.prisma.errorItem.update({where:{id:i.id},data:{masteryProbability:null,masteryReason:null,masterySource:null,masteryEvaluatedAt:null}});let u=l,p="",d="rule";try{let e=await (0,t.getAIService)().evaluateMastery({questionText:i.questionText||"",knowledgePoints:i.tags.map(e=>e.name),mistakeStatus:i.mistakeStatus,history:c,ruleProbability:l});u=e.probability,p=e.reason,d="ai"}catch(t){n.warn({errorItemId:e,error:t instanceof Error?t.message:String(t)},"AI mastery evaluation failed, using rule estimate");let r=c.filter(e=>"correct"===e.result).length;p=`共练习 ${c.length} 次,做对 ${r} 次(规则估算)`}await r.prisma.errorItem.update({where:{id:i.id},data:{masteryProbability:u,masteryReason:p,masterySource:d,masteryEvaluatedAt:new Date,masteryLevel:+(u>=.8)}}),n.info({errorItemId:e,probability:u,source:d},"Mastery evaluated")}let l=new Set,u=!1;async function p(){if(!u){u=!0;try{for(;l.size>0;){let[e]=l;l.delete(e);try{await c(e)}catch(r){n.error({errorItemId:e,error:r},"Mastery evaluation failed")}}}finally{u=!1}}}e.s(["PRACTICE_RESULTS",0,i,"isPracticeResult",0,s,"scheduleMasteryEvaluation",0,function(e){e.forEach(e=>l.add(e)),p()}])}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__1hq73__._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[63021,(e,r,t)=>{r.exports=e.x("@prisma/client-2c3a283f134fdcb6",()=>require("@prisma/client-2c3a283f134fdcb6"))},98043,e=>{"use strict";var r=e.i(63021);let t=e.g.prisma||new r.PrismaClient({log:"true"===process.env.DEBUG_DB?["query","error","warn"]:["error"]});e.s(["prisma",0,t])},49719,(e,r,t)=>{r.exports=e.x("assert",()=>require("assert"))},44950,e=>e.a(async(r,t)=>{try{var n=await e.y("bcryptjs-ee66c2bdc904f2cf");e.n(n),t()}catch(e){t(e)}},!0),874,(e,r,t)=>{r.exports=e.x("buffer",()=>require("buffer"))},54799,(e,r,t)=>{r.exports=e.x("crypto",()=>require("crypto"))},85685,e=>{e.v(e=>Promise.resolve().then(()=>e(54799)))},27699,(e,r,t)=>{r.exports=e.x("events",()=>require("events"))},22734,(e,r,t)=>{r.exports=e.x("fs",()=>require("fs"))},21517,(e,r,t)=>{r.exports=e.x("http",()=>require("http"))},24836,(e,r,t)=>{r.exports=e.x("https",()=>require("https"))},70406,(e,r,t)=>{r.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,r,t)=>{r.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},20635,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},24725,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},56704,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},59043,(e,r,t)=>{r.exports=e.x("next/dist/server/runtime-reacts.external.js",()=>require("next/dist/server/runtime-reacts.external.js"))},93695,(e,r,t)=>{r.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},81111,(e,r,t)=>{r.exports=e.x("node:stream",()=>require("node:stream"))},14747,(e,r,t)=>{r.exports=e.x("path",()=>require("path"))},45706,(e,r,t)=>{r.exports=e.x("querystring",()=>require("querystring"))},92509,(e,r,t)=>{r.exports=e.x("url",()=>require("url"))},24361,(e,r,t)=>{r.exports=e.x("util",()=>require("util"))},6461,(e,r,t)=>{r.exports=e.x("zlib",()=>require("zlib"))},79955,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__1_gkx5x._.js"].map(r=>e.l(r))).then(()=>r(35611)))},46735,e=>{e.v(r=>Promise.all(["server/chunks/[externals]__04n7qbr._.js","server/chunks/[root-of-the-server]__0rk_yxy._.js"].map(r=>e.l(r))).then(()=>r(83085)))},91961,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__1jtd2ar._.js"].map(r=>e.l(r))).then(()=>r(12111)))},72331,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__08zi-xg._.js","server/chunks/[root-of-the-server]__1nmtv65._.js","server/chunks/[root-of-the-server]__0_t7bbz._.js"].map(r=>e.l(r))).then(()=>r(20442)))},30249,e=>{e.v(e=>Promise.resolve().then(()=>e(5898)))},76759,e=>{"use strict";var r=e.i(58821);let t={UNAUTHORIZED:"UNAUTHORIZED",SESSION_EXPIRED:"SESSION_EXPIRED",FORBIDDEN:"FORBIDDEN",NOT_OWNER:"NOT_OWNER",ADMIN_REQUIRED:"ADMIN_REQUIRED",NOT_FOUND:"NOT_FOUND",USER_NOT_FOUND:"USER_NOT_FOUND",ITEM_NOT_FOUND:"ITEM_NOT_FOUND",BAD_REQUEST:"BAD_REQUEST",INVALID_INPUT:"INVALID_INPUT",MISSING_REQUIRED_FIELD:"MISSING_REQUIRED_FIELD",VALIDATION_ERROR:"VALIDATION_ERROR",OPERATION_NOT_ALLOWED:"OPERATION_NOT_ALLOWED",CONFLICT:"CONFLICT",ALREADY_EXISTS:"ALREADY_EXISTS",INTERNAL_ERROR:"INTERNAL_ERROR",DATABASE_ERROR:"DATABASE_ERROR",AI_ERROR:"AI_ERROR"};function n(e,t,n,s){let i={message:e};return n&&(i.code=n),s&&(i.details=s),r.NextResponse.json(i,{status:t})}e.s(["ErrorCode",0,t,"badRequest",0,function(e,r){return n(e,400,t.BAD_REQUEST,r)},"conflict",0,function(e){return n(e,409,t.CONFLICT)},"createErrorResponse",0,n,"forbidden",0,function(e="Forbidden"){return n(e,403,t.FORBIDDEN)},"internalError",0,function(e="Internal server error"){return n(e,500,t.INTERNAL_ERROR)},"notFound",0,function(e="Not found"){return n(e,404,t.NOT_FOUND)},"unauthorized",0,function(e="Unauthorized"){return n(e,401,t.UNAUTHORIZED)},"validationError",0,function(e,r){return n(e,400,t.VALIDATION_ERROR,r)}])},26828,e=>{"use strict";let r=(0,e.i(50377).createLogger)("background-tasks"),t=globalThis,n=t.__backgroundTasks??=new Map,s=0;function i(e){for(let[r,t]of n)t.finishedAt&&e-Date.parse(t.finishedAt)>18e5&&n.delete(r)}function o(e){let t=Date.now();i(t);let o=`${t.toString(36)}-${(s++).toString(36)}`,a={id:o,userId:e.userId,kind:e.kind,subject:e.subject??null,status:"running",progress:void 0!==e.total?{done:0,total:e.total,failed:0}:null,error:null,link:e.link??null,startedAt:new Date(t).toISOString(),finishedAt:null};n.set(o,a);let c=(e,r)=>{"running"===a.status&&(a.status=e,a.error=r,a.finishedAt=new Date().toISOString())};return{id:o,setProgress:(e,r,t)=>{a.progress={done:e,total:r??a.progress?.total??e,failed:t??a.progress?.failed??0}},succeed:()=>c("succeeded",null),fail:e=>{let t;c("failed",((t=e instanceof Error?e.message:String(e)).startsWith("AI_")?t.split(":")[0]:t).slice(0,200)),r.debug({taskId:o,kind:a.kind,error:a.error},"Background task failed")}}}async function a(e,r){let t=o(e);try{let e=await r(t);return t.succeed(),e}catch(e){throw t.fail(e),e}}e.s(["clearFinishedBackgroundTasks",0,function(e){for(let[r,t]of n)t.userId===e&&"running"!==t.status&&n.delete(r)},"describeQuestion",0,function(e){let r=(e.questionText??"").replace(/\$+/g,"").replace(/\\[a-zA-Z]+|[{}\\]/g," ").replace(/[#*>`|_-]+/g," ").replace(/\s+/g," ").replace(/\s*([,。;:?!、])\s*/g,"$1").trim(),t=r.length>24?`${r.slice(0,24)}…`:r;return[e.shortId,t].filter(Boolean).join(" ")||"—"},"listBackgroundTasks",0,function(e){i(Date.now());let r=[...n.values()].filter(r=>r.userId===e);return[...r.filter(e=>"running"===e.status).sort((e,r)=>e.startedAt.localeCompare(r.startedAt)),...r.filter(e=>"running"!==e.status).sort((e,r)=>(r.finishedAt??"").localeCompare(e.finishedAt??"")).slice(0,30)].map(e=>({id:e.id,kind:e.kind,subject:e.subject,status:e.status,progress:e.progress&&{...e.progress},error:e.error,link:e.link,startedAt:e.startedAt,finishedAt:e.finishedAt}))},"startBackgroundTask",0,o,"trackBackgroundTask",0,a])},98003,e=>{"use strict";var r=e.i(22734),t=e.i(14747),n=e.i(50377),s=e.i(76025);let i=(0,n.createLogger)("config"),o=t.default.join(process.env.CONFIG_DIR||t.default.join(process.cwd(),"config"),"app-config.json"),a={aiProvider:process.env.AI_PROVIDER||"gemini",allowRegistration:!0,timeZone:s.DEFAULT_TIME_ZONE,openai:{instances:process.env.OPENAI_API_KEY?[{id:"env-default",name:"Default (ENV)",apiKey:process.env.OPENAI_API_KEY,baseUrl:process.env.OPENAI_BASE_URL||"https://api.openai.com/v1",model:process.env.OPENAI_MODEL||"gpt-4o"}]:[],activeInstanceId:process.env.OPENAI_API_KEY?"env-default":void 0},gemini:{apiKey:process.env.GOOGLE_API_KEY,baseUrl:process.env.GEMINI_BASE_URL,model:process.env.GEMINI_MODEL||"gemini-2.5-flash"},azure:{apiKey:process.env.AZURE_OPENAI_API_KEY,endpoint:process.env.AZURE_OPENAI_ENDPOINT,deploymentName:process.env.AZURE_OPENAI_DEPLOYMENT,apiVersion:process.env.AZURE_OPENAI_API_VERSION||"2024-02-15-preview",model:process.env.AZURE_OPENAI_MODEL||"gpt-4o"},anthropic:{apiKey:process.env.ANTHROPIC_API_KEY,baseUrl:process.env.ANTHROPIC_BASE_URL,model:process.env.ANTHROPIC_MODEL||"claude-sonnet-5-5"},prompts:{analyze:"",similar:""},timeouts:{analyze:18e4}};function c(){if(r.default.existsSync(o))try{var e;let t=r.default.readFileSync(o,"utf-8"),n=JSON.parse(t),c=n.openai;if((e=n.openai)&&"object"==typeof e&&"apiKey"in e&&!("instances"in e)){i.info("Detected legacy OpenAI config, migrating to multi-instance format..."),c=function(e){if(!e.apiKey)return{instances:[],activeInstanceId:void 0};let r={id:"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let r=16*Math.random()|0;return("x"===e?r:3&r|8).toString(16)}),name:"Default",apiKey:e.apiKey,baseUrl:e.baseUrl||"https://api.openai.com/v1",model:e.model||"gpt-4o"};return{instances:[r],activeInstanceId:r.id}}(n.openai);let e={...n,openai:c};r.default.writeFileSync(o,JSON.stringify(e,null,2)),i.info("Legacy OpenAI config migrated successfully")}return{...a,...n,timeZone:(0,s.isValidTimeZone)(n.timeZone)?n.timeZone.trim():s.DEFAULT_TIME_ZONE,openai:{instances:c?.instances||a.openai?.instances||[],activeInstanceId:c?.activeInstanceId||a.openai?.activeInstanceId},gemini:{...a.gemini,...n.gemini},azure:{...a.azure,...n.azure},anthropic:{...a.anthropic,...n.anthropic},prompts:{...a.prompts,...n.prompts},timeouts:{...a.timeouts,...n.timeouts}}}catch(e){i.error({error:e},"Failed to read config file")}return a}e.s(["getActiveOpenAIConfig",0,function(){let e=c(),r=e.openai?.instances||[],t=e.openai?.activeInstanceId;if(t&&0!==r.length)return r.find(e=>e.id===t)},"getAppConfig",0,c,"getAppTimeZone",0,function(){return c().timeZone||s.DEFAULT_TIME_ZONE},"updateAppConfig",0,function(e){if(void 0!==e.timeZone&&!(0,s.isValidTimeZone)(e.timeZone))throw Error("INVALID_TIME_ZONE");let t=c(),n={...t,...e,timeZone:e.timeZone?.trim()??t.timeZone??s.DEFAULT_TIME_ZONE,openai:{instances:e.openai?.instances??t.openai?.instances??[],activeInstanceId:e.openai?.activeInstanceId??t.openai?.activeInstanceId},gemini:{...t.gemini,...e.gemini},azure:{...t.azure,...e.azure},anthropic:{...t.anthropic,...e.anthropic},prompts:{...t.prompts,...e.prompts},timeouts:{...t.timeouts,...e.timeouts}};try{return r.default.writeFileSync(o,JSON.stringify(n,null,2)),n}catch(e){throw i.error({error:e},"Failed to write config file"),e}}])},50377,e=>{"use strict";let r={trace:10,debug:20,info:30,warn:40,error:50,fatal:60};function t(e,n={}){let s,i=r[e],o=(s=process.env.LOG_LEVEL?.toLowerCase())&&void 0!==r[s]?r[s]:r.info;return(r,t)=>{let s,a;if(i<o)return;let c=new Date;"string"==typeof r?(s={},a=r):(s=r,a=t||"");{let r=JSON.stringify({level:e,time:c.toISOString(),...n,...s,msg:a});switch(e){case"error":case"fatal":console.error(r);break;case"warn":console.warn(r);break;default:console.log(r)}}}}let n=function e(r={}){return r.module,{trace:t("trace",r),debug:t("debug",r),info:t("info",r),warn:t("warn",r),error:t("error",r),fatal:t("fatal",r),child:t=>e({...r,...t}),box:(e,t,n="📋")=>{console.log(JSON.stringify({level:"info",time:new Date().toISOString(),...r,title:e,..."string"==typeof t?{content:t}:t||{},msg:e}))},divider:(e="-")=>{}}}({env:"production"});e.s(["createLogger",0,function(e){return n.child({module:e})}])}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__1ouzjax._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[63021,(e,r,t)=>{r.exports=e.x("@prisma/client-2c3a283f134fdcb6",()=>require("@prisma/client-2c3a283f134fdcb6"))},98043,e=>{"use strict";var r=e.i(63021);let t=e.g.prisma||new r.PrismaClient({log:"true"===process.env.DEBUG_DB?["query","error","warn"]:["error"]});e.s(["prisma",0,t])},49719,(e,r,t)=>{r.exports=e.x("assert",()=>require("assert"))},44950,e=>e.a(async(r,t)=>{try{var n=await e.y("bcryptjs-ee66c2bdc904f2cf");e.n(n),t()}catch(e){t(e)}},!0),874,(e,r,t)=>{r.exports=e.x("buffer",()=>require("buffer"))},54799,(e,r,t)=>{r.exports=e.x("crypto",()=>require("crypto"))},27699,(e,r,t)=>{r.exports=e.x("events",()=>require("events"))},22734,(e,r,t)=>{r.exports=e.x("fs",()=>require("fs"))},21517,(e,r,t)=>{r.exports=e.x("http",()=>require("http"))},24836,(e,r,t)=>{r.exports=e.x("https",()=>require("https"))},70406,(e,r,t)=>{r.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,r,t)=>{r.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},20635,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},24725,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},56704,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},59043,(e,r,t)=>{r.exports=e.x("next/dist/server/runtime-reacts.external.js",()=>require("next/dist/server/runtime-reacts.external.js"))},93695,(e,r,t)=>{r.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},81111,(e,r,t)=>{r.exports=e.x("node:stream",()=>require("node:stream"))},14747,(e,r,t)=>{r.exports=e.x("path",()=>require("path"))},45706,(e,r,t)=>{r.exports=e.x("querystring",()=>require("querystring"))},92509,(e,r,t)=>{r.exports=e.x("url",()=>require("url"))},24361,(e,r,t)=>{r.exports=e.x("util",()=>require("util"))},6461,(e,r,t)=>{r.exports=e.x("zlib",()=>require("zlib"))},96155,50580,64351,e=>{"use strict";e.s(["__classPrivateFieldGet",0,function(e,r,t,n){if("a"===t&&!n)throw TypeError("Private accessor was defined without a getter");if("function"==typeof r?e!==r||!n:!r.has(e))throw TypeError("Cannot read private member from an object whose class did not declare it");return"m"===t?n:"a"===t?n.call(e):n?n.value:r.get(e)},"__classPrivateFieldSet",0,function(e,r,t,n,s){if("m"===n)throw TypeError("Private method is not writable");if("a"===n&&!s)throw TypeError("Private accessor was defined without a setter");if("function"==typeof r?e!==r||!s:!r.has(e))throw TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?s.call(e,t):s?s.value=t:r.set(e,t),t}],96155);let r=e=>{if(e instanceof Error)return e;if("object"==typeof e&&null!==e){try{let r=Object.prototype.toString.call(e);if("[object Error]"===r||"[object DOMException]"===r){let r=Error(e.message,e.cause?{cause:e.cause}:{});return e.stack&&(r.stack=e.stack),e.cause&&!r.cause&&(r.cause=e.cause),e.name&&(r.name=e.name),r}}catch{}try{return Error(JSON.stringify(e))}catch{}}return Error(e)};e.s(["castToError",0,r,"isAbortError",0,function(e){return"object"==typeof e&&null!==e&&("name"in e&&"AbortError"===e.name||"message"in e&&String(e.message).includes("FetchRequestCanceledException"))}],50580);var t=class extends Error{};class n extends t{constructor(e,r,t,s,i){super(`${n.makeMessage(e,r,t)}`),this.status=e,this.headers=s,this.requestID=s?.get("request-id"),this.workspaceID=s?.get("anthropic-workspace-id"),this.error=r,this.type=i??null}static makeMessage(e,r,t){let n=r?.message?"string"==typeof r.message?r.message:JSON.stringify(r.message):r?JSON.stringify(r):t;return e&&n?`${e} ${n}`:e?`${e} status code (no body)`:n||"(no status code or body)"}static generate(e,t,f,E){if(!e||!E)return new s({message:f,cause:r(t)});let g=t?.error?.type;return 400===e?new i(e,t,f,E,g):401===e?new o(e,t,f,E,g):403===e?new a(e,t,f,E,g):404===e?new c(e,t,f,E,g):409===e?new u(e,t,f,E,g):422===e?new l(e,t,f,E,g):429===e?new p(e,t,f,E,g):e>=500?new d(e,t,f,E,g):new n(e,t,f,E,g)}}class s extends n{constructor({message:e,cause:r}){super(void 0,void 0,e||"Connection error.",void 0),r&&(this.cause=r)}}class i extends n{}class o extends n{}class a extends n{}class c extends n{}class u extends n{}class l extends n{}class p extends n{}class d extends n{}e.s(["APIConnectionError",0,s,"APIConnectionTimeoutError",0,class extends s{constructor({message:e}={}){super({message:e??"Request timed out."})}},"APIError",0,n,"APIUserAbortError",0,class extends n{constructor({message:e}={}){super(void 0,void 0,e||"Request was aborted.",void 0)}},"AnthropicError",0,t,"AuthenticationError",0,o,"BadRequestError",0,i,"ConflictError",0,u,"InternalServerError",0,d,"NotFoundError",0,c,"PermissionDeniedError",0,a,"RateLimitError",0,p,"RetryableError",0,class extends t{constructor(e,{cause:r}={}){super(e??"Retryable error."),void 0!==r&&(this.cause=r)}},"UnprocessableEntityError",0,l],64351)},98156,e=>{"use strict";var r=e.i(64351);function t(e,t){return e instanceof r.APIError&&e.status===t}e.s(["applyJitter",0,function(e){return e*(1-.25*Math.random())},"backoff",0,function(e,r,t){return Math.min(r*2**e,t)},"isFatal4xx",0,function(e){return e instanceof r.APIError&&"number"==typeof e.status&&e.status>=400&&e.status<500&&!t(e,408)&&!t(e,409)&&!t(e,429)},"isStatus",0,t,"jitter",0,function(e,r){return e+Math.random()*(r-e)}])},87160,e=>{"use strict";let r,t;e.s(["concatBytes",0,function(e){let r=0;for(let t of e)r+=t.length;let t=new Uint8Array(r),n=0;for(let r of e)t.set(r,n),n+=r.length;return t},"decodeUTF8",0,function(e){let r;return(t??(t=(r=new globalThis.TextDecoder).decode.bind(r)))(e)},"encodeUTF8",0,function(e){let t;return(r??(r=(t=new globalThis.TextEncoder).encode.bind(t)))(e)}])},11935,e=>{"use strict";let r,t;var n=e.i(64219),s=e.i(31963);let i="warn",o={off:0,error:200,warn:300,info:400,debug:500},a=(e,r,t)=>{if(e){if((0,n.hasOwn)(o,e))return e;t.warn(`${r} was set to ${JSON.stringify(e)}, expected one of ${JSON.stringify(Object.keys(o))}`)}};function c(){}function u(e,r,t){return!r||o[e]>o[t]?c:r[e].bind(r)}let l={error:c,warn:c,info:c,debug:c},p=new WeakMap;function d(e,r){let t=p.get(e);if(t&&t[0]===r)return t[1];let n={error:u("error",e,r),warn:u("warn",e,r),info:u("info",e,r),debug:u("debug",e,r)};return p.set(e,[r,n]),n}e.s(["debugLogRequestDetails",0,function(e,r,t){let n;e.debug!==c&&e.debug(r,((n=t).options&&(n.options={...n.options},delete n.options.headers),n.headers&&(n.headers=Object.fromEntries((n.headers instanceof Headers?[...n.headers]:Object.entries(n.headers)).map(([e,r])=>[e,"authorization"===e.toLowerCase()||"api-key"===e.toLowerCase()||"x-api-key"===e.toLowerCase()||"cookie"===e.toLowerCase()||"set-cookie"===e.toLowerCase()?"***":r]))),"retryOfRequestLogID"in n&&(n.retryOfRequestLogID&&(n.retryOf=n.retryOfRequestLogID),delete n.retryOfRequestLogID),n))},"defaultLogLevel",0,i,"defaultLogger",0,function(){let e=(0,s.readEnv)("ANTHROPIC_LOG");return t&&e===r||(r=e,t=d(console,a(e,"process.env['ANTHROPIC_LOG']",d(console,i))??i)),t},"loggerFor",0,function(e){let r=e.logger,t=e.logLevel??"off";return r?d(r,t):l},"parseLogLevel",0,a])},68120,e=>{"use strict";e.s(["promiseWithResolvers",0,function(){let e,r;return{promise:new Promise((t,n)=>{e=t,r=n}),resolve:e,reject:r}}])},64219,31963,e=>{"use strict";var r=e.i(64351);let t=/^[a-z][a-z0-9+.-]*:/i,n=e=>(n=Array.isArray)(e),s=n;e.s(["checkNever",0,function(e){},"hasOwn",0,function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},"isAbsoluteURL",0,e=>t.test(e),"isArray",()=>n,"isEmptyObj",0,function(e){if(!e)return!0;for(let r in e)return!1;return!0},"isObj",0,function(e){return null!=e&&"object"==typeof e&&!Array.isArray(e)},"isReadonlyArray",0,s,"maybeObj",0,function(e){return"object"!=typeof e?{}:e??{}},"safeJSON",0,e=>{try{return JSON.parse(e)}catch(e){return}},"validatePositiveInteger",0,(e,t)=>{if("number"!=typeof t||!Number.isInteger(t))throw new r.AnthropicError(`${e} must be an integer`);if(t<0)throw new r.AnthropicError(`${e} must be a positive integer`);return t}],64219),e.s(["readEnv",0,e=>void 0!==globalThis.process?globalThis.process.env?.[e]?.trim()||void 0:void 0!==globalThis.Deno&&globalThis.Deno.env?.get?.(e)?.trim()||void 0],31963)},32014,e=>{"use strict";var r=class extends Error{constructor(e){super("string"==typeof e?e:e.map(e=>"text"===e.type?e.text:`[${e.type}]`).join(" ")),this.name="ToolError",this.content=e}};e.s(["ToolError",0,r])},93668,e=>{"use strict";var r=e.i(64351);e.s(["DEFAULT_MEMORY_SYNC_INTERVAL_MS",0,15e3,"MIN_MEMORY_SYNC_INTERVAL_MS",0,5e3,"checkMemorySyncInterval",0,function(e,t){if(!(e>=5e3))throw new r.AnthropicError(`${t} must be at least 5000ms (got ${e}); to run without memory sync, pass \`memorySyncIntervalMs: null\` to the worker instead`)}])},76759,e=>{"use strict";var r=e.i(58821);let t={UNAUTHORIZED:"UNAUTHORIZED",SESSION_EXPIRED:"SESSION_EXPIRED",FORBIDDEN:"FORBIDDEN",NOT_OWNER:"NOT_OWNER",ADMIN_REQUIRED:"ADMIN_REQUIRED",NOT_FOUND:"NOT_FOUND",USER_NOT_FOUND:"USER_NOT_FOUND",ITEM_NOT_FOUND:"ITEM_NOT_FOUND",BAD_REQUEST:"BAD_REQUEST",INVALID_INPUT:"INVALID_INPUT",MISSING_REQUIRED_FIELD:"MISSING_REQUIRED_FIELD",VALIDATION_ERROR:"VALIDATION_ERROR",OPERATION_NOT_ALLOWED:"OPERATION_NOT_ALLOWED",CONFLICT:"CONFLICT",ALREADY_EXISTS:"ALREADY_EXISTS",INTERNAL_ERROR:"INTERNAL_ERROR",DATABASE_ERROR:"DATABASE_ERROR",AI_ERROR:"AI_ERROR"};function n(e,t,n,s){let i={message:e};return n&&(i.code=n),s&&(i.details=s),r.NextResponse.json(i,{status:t})}e.s(["ErrorCode",0,t,"badRequest",0,function(e,r){return n(e,400,t.BAD_REQUEST,r)},"conflict",0,function(e){return n(e,409,t.CONFLICT)},"createErrorResponse",0,n,"forbidden",0,function(e="Forbidden"){return n(e,403,t.FORBIDDEN)},"internalError",0,function(e="Internal server error"){return n(e,500,t.INTERNAL_ERROR)},"notFound",0,function(e="Not found"){return n(e,404,t.NOT_FOUND)},"unauthorized",0,function(e="Unauthorized"){return n(e,401,t.UNAUTHORIZED)},"validationError",0,function(e,r){return n(e,400,t.VALIDATION_ERROR,r)}])},98003,e=>{"use strict";var r=e.i(22734),t=e.i(14747),n=e.i(50377),s=e.i(76025);let i=(0,n.createLogger)("config"),o=t.default.join(process.env.CONFIG_DIR||t.default.join(process.cwd(),"config"),"app-config.json"),a={aiProvider:process.env.AI_PROVIDER||"gemini",allowRegistration:!0,timeZone:s.DEFAULT_TIME_ZONE,openai:{instances:process.env.OPENAI_API_KEY?[{id:"env-default",name:"Default (ENV)",apiKey:process.env.OPENAI_API_KEY,baseUrl:process.env.OPENAI_BASE_URL||"https://api.openai.com/v1",model:process.env.OPENAI_MODEL||"gpt-4o"}]:[],activeInstanceId:process.env.OPENAI_API_KEY?"env-default":void 0},gemini:{apiKey:process.env.GOOGLE_API_KEY,baseUrl:process.env.GEMINI_BASE_URL,model:process.env.GEMINI_MODEL||"gemini-2.5-flash"},azure:{apiKey:process.env.AZURE_OPENAI_API_KEY,endpoint:process.env.AZURE_OPENAI_ENDPOINT,deploymentName:process.env.AZURE_OPENAI_DEPLOYMENT,apiVersion:process.env.AZURE_OPENAI_API_VERSION||"2024-02-15-preview",model:process.env.AZURE_OPENAI_MODEL||"gpt-4o"},anthropic:{apiKey:process.env.ANTHROPIC_API_KEY,baseUrl:process.env.ANTHROPIC_BASE_URL,model:process.env.ANTHROPIC_MODEL||"claude-sonnet-5-5"},prompts:{analyze:"",similar:""},timeouts:{analyze:18e4}};function c(){if(r.default.existsSync(o))try{var e;let t=r.default.readFileSync(o,"utf-8"),n=JSON.parse(t),c=n.openai;if((e=n.openai)&&"object"==typeof e&&"apiKey"in e&&!("instances"in e)){i.info("Detected legacy OpenAI config, migrating to multi-instance format..."),c=function(e){if(!e.apiKey)return{instances:[],activeInstanceId:void 0};let r={id:"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let r=16*Math.random()|0;return("x"===e?r:3&r|8).toString(16)}),name:"Default",apiKey:e.apiKey,baseUrl:e.baseUrl||"https://api.openai.com/v1",model:e.model||"gpt-4o"};return{instances:[r],activeInstanceId:r.id}}(n.openai);let e={...n,openai:c};r.default.writeFileSync(o,JSON.stringify(e,null,2)),i.info("Legacy OpenAI config migrated successfully")}return{...a,...n,timeZone:(0,s.isValidTimeZone)(n.timeZone)?n.timeZone.trim():s.DEFAULT_TIME_ZONE,openai:{instances:c?.instances||a.openai?.instances||[],activeInstanceId:c?.activeInstanceId||a.openai?.activeInstanceId},gemini:{...a.gemini,...n.gemini},azure:{...a.azure,...n.azure},anthropic:{...a.anthropic,...n.anthropic},prompts:{...a.prompts,...n.prompts},timeouts:{...a.timeouts,...n.timeouts}}}catch(e){i.error({error:e},"Failed to read config file")}return a}e.s(["getActiveOpenAIConfig",0,function(){let e=c(),r=e.openai?.instances||[],t=e.openai?.activeInstanceId;if(t&&0!==r.length)return r.find(e=>e.id===t)},"getAppConfig",0,c,"getAppTimeZone",0,function(){return c().timeZone||s.DEFAULT_TIME_ZONE},"updateAppConfig",0,function(e){if(void 0!==e.timeZone&&!(0,s.isValidTimeZone)(e.timeZone))throw Error("INVALID_TIME_ZONE");let t=c(),n={...t,...e,timeZone:e.timeZone?.trim()??t.timeZone??s.DEFAULT_TIME_ZONE,openai:{instances:e.openai?.instances??t.openai?.instances??[],activeInstanceId:e.openai?.activeInstanceId??t.openai?.activeInstanceId},gemini:{...t.gemini,...e.gemini},azure:{...t.azure,...e.azure},anthropic:{...t.anthropic,...e.anthropic},prompts:{...t.prompts,...e.prompts},timeouts:{...t.timeouts,...e.timeouts}};try{return r.default.writeFileSync(o,JSON.stringify(n,null,2)),n}catch(e){throw i.error({error:e},"Failed to write config file"),e}}])},83508,e=>{"use strict";var r=e.i(76025);e.s(["calculateGradeNumber",0,function(e,t,n=r.DEFAULT_TIME_ZONE){if(!t||"primary"!==e&&"junior_high"!==e&&"senior_high"!==e)return null;let s=(0,r.getCalendarDate)(new Date,n),i=s.getFullYear(),o=s.getMonth()+1,a=i-t;if(o<9&&(a-=1),"primary"===e){let e=1+a;if(e>=1&&e<=6)return e}else if("junior_high"===e){let e=7+a;if(e>=7&&e<=9)return e}else if("senior_high"===e){let e=10+a;if(e>=10&&e<=12)return e}return null},"inferSubjectFromName",0,function(e){if(!e)return null;let r=e.toLowerCase();return r.includes("math")||r.includes("数学")?"math":r.includes("physics")||r.includes("物理")?"physics":r.includes("chemistry")||r.includes("化学")?"chemistry":r.includes("biology")||r.includes("生物")?"biology":r.includes("english")||r.includes("英语")?"english":r.includes("chinese")||r.includes("语文")?"chinese":r.includes("history")||r.includes("历史")?"history":r.includes("geography")||r.includes("地理")?"geography":r.includes("politics")||r.includes("政治")?"politics":null}])},50377,e=>{"use strict";let r={trace:10,debug:20,info:30,warn:40,error:50,fatal:60};function t(e,n={}){let s,i=r[e],o=(s=process.env.LOG_LEVEL?.toLowerCase())&&void 0!==r[s]?r[s]:r.info;return(r,t)=>{let s,a;if(i<o)return;let c=new Date;"string"==typeof r?(s={},a=r):(s=r,a=t||"");{let r=JSON.stringify({level:e,time:c.toISOString(),...n,...s,msg:a});switch(e){case"error":case"fatal":console.error(r);break;case"warn":console.warn(r);break;default:console.log(r)}}}}let n=function e(r={}){return r.module,{trace:t("trace",r),debug:t("debug",r),info:t("info",r),warn:t("warn",r),error:t("error",r),fatal:t("fatal",r),child:t=>e({...r,...t}),box:(e,t,n="📋")=>{console.log(JSON.stringify({level:"info",time:new Date().toISOString(),...r,title:e,..."string"==typeof t?{content:t}:t||{},msg:e}))},divider:(e="-")=>{}}}({env:"production"});e.s(["createLogger",0,function(e){return n.child({module:e})}])},30166,e=>{"use strict";e.s(["normalizeMistakeStatusForSave",0,function(e,r){return(r||"").trim()?"wrong_attempt":"not_attempted"===e||"wrong_attempt"===e||"unknown"===e?e:"unknown"}])},68426,e=>{"use strict";var r=e.i(83508);let t=["primary","junior_high","senior_high"],n="primary",s=["math","english","chinese","physics","chemistry","biology","history","geography","politics"],i={primary:["math","english"],junior_high:s,senior_high:s},o={primary:/^[一二三四五六]年级/,junior_high:/^[七八九]年级/,senior_high:/^高[一二三]/};function a(e){return"string"==typeof e&&t.includes(e)}function c(e){return"string"==typeof e&&s.includes(e)}e.s(["STAGE_SUBJECTS",0,i,"SUBJECT_DISPLAY_NAMES",0,{math:"数学",english:"英语",chinese:"语文",physics:"物理",chemistry:"化学",biology:"生物",history:"历史",geography:"地理",politics:"政治"},"isGradeInStage",0,function(e,r){return o[r].test(e)},"isNotebookSubject",0,c,"isValidNotebookScope",0,function(e,r){return a(e)&&c(r)&&i[e].includes(r)},"resolveNotebookScope",0,function(e){let t=c(e.subjectKey)?e.subjectKey:(0,r.inferSubjectFromName)(e.name);return{stage:a(e.stage)?e.stage:n,subject:t&&c(t)?t:null}},"stageFromEducationStage",0,function(e){return a(e)?e:n}])}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__1pcgq22._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[51615,(e,r,o)=>{r.exports=e.x("node:buffer",()=>require("node:buffer"))},2157,(e,r,o)=>{r.exports=e.x("node:fs",()=>require("node:fs"))},47299,(e,r,o)=>{r.exports=e.x("node:http",()=>require("node:http"))},61095,(e,r,o)=>{r.exports=e.x("node:net",()=>require("node:net"))},50227,(e,r,o)=>{r.exports=e.x("node:path",()=>require("node:path"))},59639,(e,r,o)=>{r.exports=e.x("node:process",()=>require("node:process"))},57764,(e,r,o)=>{r.exports=e.x("node:url",()=>require("node:url"))},12057,(e,r,o)=>{r.exports=e.x("node:util",()=>require("node:util"))},27028,(e,r,o)=>{r.exports=e.x("node:zlib",()=>require("node:zlib"))},25897,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__0akadps._.js","server/chunks/[root-of-the-server]__15tkoe6._.js"].map(r=>e.l(r))).then(()=>r(55057)))}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__1q5nt5y._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[63021,(e,t,r)=>{t.exports=e.x("@prisma/client-2c3a283f134fdcb6",()=>require("@prisma/client-2c3a283f134fdcb6"))},98043,e=>{"use strict";var t=e.i(63021);let r=e.g.prisma||new t.PrismaClient({log:"true"===process.env.DEBUG_DB?["query","error","warn"]:["error"]});e.s(["prisma",0,r])},49719,(e,t,r)=>{t.exports=e.x("assert",()=>require("assert"))},44950,e=>e.a(async(t,r)=>{try{var n=await e.y("bcryptjs-ee66c2bdc904f2cf");e.n(n),r()}catch(e){r(e)}},!0),874,(e,t,r)=>{t.exports=e.x("buffer",()=>require("buffer"))},54799,(e,t,r)=>{t.exports=e.x("crypto",()=>require("crypto"))},27699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},22734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},21517,(e,t,r)=>{t.exports=e.x("http",()=>require("http"))},24836,(e,t,r)=>{t.exports=e.x("https",()=>require("https"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},20635,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},59043,(e,t,r)=>{t.exports=e.x("next/dist/server/runtime-reacts.external.js",()=>require("next/dist/server/runtime-reacts.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},81111,(e,t,r)=>{t.exports=e.x("node:stream",()=>require("node:stream"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},45706,(e,t,r)=>{t.exports=e.x("querystring",()=>require("querystring"))},92509,(e,t,r)=>{t.exports=e.x("url",()=>require("url"))},24361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},6461,(e,t,r)=>{t.exports=e.x("zlib",()=>require("zlib"))},47381,e=>e.a(async(t,r)=>{try{var n=e.i(58821),a=e.i(98043),i=e.i(79832),o=e.i(13618),s=e.i(98003),l=e.i(76025),c=e.i(76759),p=e.i(50377),u=t([i]);[i]=u.then?(await u)():u;let E=(0,p.createLogger)("api:analytics");async function d(e){let t=await (0,o.getServerSession)(i.authOptions);if(!t||!t.user)return(0,c.unauthorized)();let r=t.user.id;try{let e=await a.prisma.errorItem.count({where:{userId:r}}),t=await a.prisma.errorItem.count({where:{userId:r,masteryLevel:{gt:0}}}),i=e>0?(t/e*100).toFixed(1):0,o=await a.prisma.errorItem.findMany({where:{userId:r},include:{subject:!0}}),c=new Map;o.forEach(e=>{let t=e.subject?.name||"Unknown";c.set(t,(c.get(t)||0)+1)});let p=Array.from(c.entries()).map(([e,t])=>({name:e,value:t})),u=[],d=(0,s.getAppTimeZone)(),E=new Date;for(let e=6;e>=0;e--){let{start:t,end:n}=(0,l.getDayRange)(E,d,-e),i=(0,l.formatDateTime)(t,"MM-dd",d),o=await a.prisma.errorItem.count({where:{userId:r,createdAt:{gte:t,lt:n}}});u.push({date:i,count:o})}return n.NextResponse.json({totalErrors:e,masteredCount:t,masteryRate:i,subjectStats:p,activityData:u})}catch(e){return E.error({error:e},"Error fetching analytics"),(0,c.internalError)("Failed to fetch analytics")}}e.s(["GET",0,d]),r()}catch(e){r(e)}},!1),32424,e=>{"use strict";var t=e.i(47909),r=e.i(74017),n=e.i(96250),a=e.i(59756),i=e.i(61916),o=e.i(74677),s=e.i(69741),l=e.i(16795),c=e.i(87718),p=e.i(95169),u=e.i(47587),d=e.i(66012),E=e.i(70101),R=e.i(74838),x=e.i(10372),f=e.i(93695),m=e.i(9580);e.i(52474);var I=e.i(220);let v=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/analytics/route",pathname:"/api/analytics",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/analytics/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(47381),...{}}),{workAsyncStorage:g,workUnitAsyncStorage:h,serverHooks:O}=v;async function A(e,t,n){n.requestMeta&&(0,a.setRequestMeta)(e,n.requestMeta),v.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/analytics/route";g=g.replace(/\/index$/,"")||"/";let h=await v.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!h)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:O,deploymentId:A,params:N,nextConfig:_,parsedUrl:y,isDraftMode:T,prerenderManifest:w,routerServerContext:D,isOnDemandRevalidate:S,revalidateOnlyGenerated:U,resolvedPathname:C,clientReferenceManifest:P,serverActionsManifest:b}=h,L=(0,s.normalizeAppPath)(g),q=!!w.routes[C]&&(v.isDev||(0,m.isRouteCacheOwner)(C,v.cacheOwner,w.routes[C])),M=!!(w.dynamicRoutes[L]||q),F=async()=>((null==D?void 0:D.render404)?await D.render404(e,t,y,!1):t.end("This page could not be found"),null);if(M&&!T){let e=w.dynamicRoutes[L];if(e&&!1===e.fallback&&!q){if(_.adapterPath)return await F();throw new f.NoFallbackError}}let j=null;!M||v.isDev||T||(j="/index"===(j=C)?"/":j);let Z=!0===v.isDev||!M,H=M&&!Z;b&&P&&(0,o.setManifestsSingleton)({page:g,clientReferenceManifest:P,serverActionsManifest:b});let k=e.method||"GET",K=(0,i.getTracer)(),B=K.getActiveScopeSpan(),V=!!(null==D?void 0:D.isWrappedByNextServer),z=!!(0,a.getRequestMeta)(e,"minimalMode"),G=(0,a.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,_,w,z);null==G||G.resetRequestCache(),globalThis.__incrementalCache=G;let Y={params:N,previewProps:w.preview,renderOpts:{experimental:{authInterrupts:!!_.experimental.authInterrupts,useCacheTimeout:_.experimental.useCacheTimeout},cacheComponents:!!_.cacheComponents,validationLevel:_.experimental.instantInsights.validationLevel,isDraftMode:T,supportsDynamicResponse:Z,incrementalCache:G,hmrRefreshHash:(0,a.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:_.cacheLife,staticPageGenerationTimeout:_.staticPageGenerationTimeout,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>v.onRequestError(e,t,n,a,D)},sharedContext:{buildId:O,deploymentId:A}},Q=new l.NodeNextRequest(e),X=new l.NodeNextResponse(t),$=c.NextRequestAdapter.fromNodeNextRequest(Q,(0,c.signalFromNodeResponse)(t)),W=async({previousCacheEntry:r})=>{try{if(!z&&S&&U&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await v.handle($,Y);e.fetchMetrics=Y.renderOpts.fetchMetrics;let i=Y.renderOpts.pendingWaitUntil;i&&n.waitUntil&&(n.waitUntil(i),i=void 0);let o=Y.renderOpts.collectedTags;if(!M)return await (0,d.sendResponse)(Q,X,a,i),null;{let e=await a.blob(),t=(0,E.toNodeOutgoingHttpHeaders)(a.headers);o&&(t[x.NEXT_CACHE_TAGS_HEADER]=o),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==Y.renderOpts.collectedRevalidate&&!(Y.renderOpts.collectedRevalidate>=x.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,n=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=x.INFINITE_CACHE?!1!==r&&r>0?_.expireTime:void 0:Y.renderOpts.collectedExpire;return{value:{kind:I.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await v.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:S})},!1,D),t}},J=async(a,o)=>{try{var s,l;let a=await v.handleResponse({req:e,nextConfig:_,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:w,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:U,responseGenerator:W,waitUntil:n.waitUntil,isMinimalMode:z});if(!M)return;if((null==a||null==(s=a.value)?void 0:s.kind)!==I.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==a||null==(l=a.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});z||t.setHeader("x-nextjs-cache",S?"REVALIDATED":a.isMiss?"MISS":a.isStale?"STALE":"HIT"),T&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let i=(0,E.fromNodeOutgoingHttpHeaders)(a.value.headers);z&&M||i.delete(x.NEXT_CACHE_TAGS_HEADER),!a.cacheControl||t.getHeader("Cache-Control")||i.get("Cache-Control")||i.set("Cache-Control",(0,R.getCacheControlHeader)(a.cacheControl)),await (0,d.sendResponse)(Q,X,new Response(a.value.body,{headers:i,status:a.value.status||200}));return}catch(t){if(t instanceof f.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:L,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:S})},!1,D),M)throw t;await (0,d.sendResponse)(Q,X,new Response(null,{status:500}));return}finally{(()=>{if(!a)return;let e=t.statusCode;a.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(a.setStatus({code:i.SpanStatusCode.ERROR}),a.setAttribute("error.type",e.toString()));let r=K.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==p.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route")||L,s=`${k} ${n}`;a.setAttributes({"next.route":n,"http.route":n,"next.span_name":s}),a.updateName(s),o&&o!==a&&(o.setAttribute("http.route",n),o.updateName(s))})()}};if(V&&B)await J(B,void 0);else{let t=K.getActiveScopeSpan();await K.withPropagatedContext(e.headers,()=>K.trace(p.BaseServerSpan.handleRequest,{spanName:`${k} ${g}`,kind:i.SpanKind.SERVER,attributes:{"http.method":k,"http.target":e.url}},e=>J(e,t)),void 0,!V)}}e.s(["handler",0,A,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:g,workUnitAsyncStorage:h})},"routeModule",0,v,"serverHooks",0,O,"workAsyncStorage",0,g,"workUnitAsyncStorage",0,h])},76759,e=>{"use strict";var t=e.i(58821);let r={UNAUTHORIZED:"UNAUTHORIZED",SESSION_EXPIRED:"SESSION_EXPIRED",FORBIDDEN:"FORBIDDEN",NOT_OWNER:"NOT_OWNER",ADMIN_REQUIRED:"ADMIN_REQUIRED",NOT_FOUND:"NOT_FOUND",USER_NOT_FOUND:"USER_NOT_FOUND",ITEM_NOT_FOUND:"ITEM_NOT_FOUND",BAD_REQUEST:"BAD_REQUEST",INVALID_INPUT:"INVALID_INPUT",MISSING_REQUIRED_FIELD:"MISSING_REQUIRED_FIELD",VALIDATION_ERROR:"VALIDATION_ERROR",OPERATION_NOT_ALLOWED:"OPERATION_NOT_ALLOWED",CONFLICT:"CONFLICT",ALREADY_EXISTS:"ALREADY_EXISTS",INTERNAL_ERROR:"INTERNAL_ERROR",DATABASE_ERROR:"DATABASE_ERROR",AI_ERROR:"AI_ERROR"};function n(e,r,n,a){let i={message:e};return n&&(i.code=n),a&&(i.details=a),t.NextResponse.json(i,{status:r})}e.s(["ErrorCode",0,r,"badRequest",0,function(e,t){return n(e,400,r.BAD_REQUEST,t)},"conflict",0,function(e){return n(e,409,r.CONFLICT)},"createErrorResponse",0,n,"forbidden",0,function(e="Forbidden"){return n(e,403,r.FORBIDDEN)},"internalError",0,function(e="Internal server error"){return n(e,500,r.INTERNAL_ERROR)},"notFound",0,function(e="Not found"){return n(e,404,r.NOT_FOUND)},"unauthorized",0,function(e="Unauthorized"){return n(e,401,r.UNAUTHORIZED)},"validationError",0,function(e,t){return n(e,400,r.VALIDATION_ERROR,t)}])},98003,e=>{"use strict";var t=e.i(22734),r=e.i(14747),n=e.i(50377),a=e.i(76025);let i=(0,n.createLogger)("config"),o=r.default.join(process.env.CONFIG_DIR||r.default.join(process.cwd(),"config"),"app-config.json"),s={aiProvider:process.env.AI_PROVIDER||"gemini",allowRegistration:!0,timeZone:a.DEFAULT_TIME_ZONE,openai:{instances:process.env.OPENAI_API_KEY?[{id:"env-default",name:"Default (ENV)",apiKey:process.env.OPENAI_API_KEY,baseUrl:process.env.OPENAI_BASE_URL||"https://api.openai.com/v1",model:process.env.OPENAI_MODEL||"gpt-4o"}]:[],activeInstanceId:process.env.OPENAI_API_KEY?"env-default":void 0},gemini:{apiKey:process.env.GOOGLE_API_KEY,baseUrl:process.env.GEMINI_BASE_URL,model:process.env.GEMINI_MODEL||"gemini-2.5-flash"},azure:{apiKey:process.env.AZURE_OPENAI_API_KEY,endpoint:process.env.AZURE_OPENAI_ENDPOINT,deploymentName:process.env.AZURE_OPENAI_DEPLOYMENT,apiVersion:process.env.AZURE_OPENAI_API_VERSION||"2024-02-15-preview",model:process.env.AZURE_OPENAI_MODEL||"gpt-4o"},anthropic:{apiKey:process.env.ANTHROPIC_API_KEY,baseUrl:process.env.ANTHROPIC_BASE_URL,model:process.env.ANTHROPIC_MODEL||"claude-sonnet-5-5"},prompts:{analyze:"",similar:""},timeouts:{analyze:18e4}};function l(){if(t.default.existsSync(o))try{var e;let r=t.default.readFileSync(o,"utf-8"),n=JSON.parse(r),l=n.openai;if((e=n.openai)&&"object"==typeof e&&"apiKey"in e&&!("instances"in e)){i.info("Detected legacy OpenAI config, migrating to multi-instance format..."),l=function(e){if(!e.apiKey)return{instances:[],activeInstanceId:void 0};let t={id:"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}),name:"Default",apiKey:e.apiKey,baseUrl:e.baseUrl||"https://api.openai.com/v1",model:e.model||"gpt-4o"};return{instances:[t],activeInstanceId:t.id}}(n.openai);let e={...n,openai:l};t.default.writeFileSync(o,JSON.stringify(e,null,2)),i.info("Legacy OpenAI config migrated successfully")}return{...s,...n,timeZone:(0,a.isValidTimeZone)(n.timeZone)?n.timeZone.trim():a.DEFAULT_TIME_ZONE,openai:{instances:l?.instances||s.openai?.instances||[],activeInstanceId:l?.activeInstanceId||s.openai?.activeInstanceId},gemini:{...s.gemini,...n.gemini},azure:{...s.azure,...n.azure},anthropic:{...s.anthropic,...n.anthropic},prompts:{...s.prompts,...n.prompts},timeouts:{...s.timeouts,...n.timeouts}}}catch(e){i.error({error:e},"Failed to read config file")}return s}e.s(["getActiveOpenAIConfig",0,function(){let e=l(),t=e.openai?.instances||[],r=e.openai?.activeInstanceId;if(r&&0!==t.length)return t.find(e=>e.id===r)},"getAppConfig",0,l,"getAppTimeZone",0,function(){return l().timeZone||a.DEFAULT_TIME_ZONE},"updateAppConfig",0,function(e){if(void 0!==e.timeZone&&!(0,a.isValidTimeZone)(e.timeZone))throw Error("INVALID_TIME_ZONE");let r=l(),n={...r,...e,timeZone:e.timeZone?.trim()??r.timeZone??a.DEFAULT_TIME_ZONE,openai:{instances:e.openai?.instances??r.openai?.instances??[],activeInstanceId:e.openai?.activeInstanceId??r.openai?.activeInstanceId},gemini:{...r.gemini,...e.gemini},azure:{...r.azure,...e.azure},anthropic:{...r.anthropic,...e.anthropic},prompts:{...r.prompts,...e.prompts},timeouts:{...r.timeouts,...e.timeouts}};try{return t.default.writeFileSync(o,JSON.stringify(n,null,2)),n}catch(e){throw i.error({error:e},"Failed to write config file"),e}}])},50377,e=>{"use strict";let t={trace:10,debug:20,info:30,warn:40,error:50,fatal:60};function r(e,n={}){let a,i=t[e],o=(a=process.env.LOG_LEVEL?.toLowerCase())&&void 0!==t[a]?t[a]:t.info;return(t,r)=>{let a,s;if(i<o)return;let l=new Date;"string"==typeof t?(a={},s=t):(a=t,s=r||"");{let t=JSON.stringify({level:e,time:l.toISOString(),...n,...a,msg:s});switch(e){case"error":case"fatal":console.error(t);break;case"warn":console.warn(t);break;default:console.log(t)}}}}let n=function e(t={}){return t.module,{trace:r("trace",t),debug:r("debug",t),info:r("info",t),warn:r("warn",t),error:r("error",t),fatal:r("fatal",t),child:r=>e({...t,...r}),box:(e,r,n="📋")=>{console.log(JSON.stringify({level:"info",time:new Date().toISOString(),...t,title:e,..."string"==typeof r?{content:r}:r||{},msg:e}))},divider:(e="-")=>{}}}({env:"production"});e.s(["createLogger",0,function(e){return n.child({module:e})}])}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__1qt6_3b._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[85685,e=>{e.v(e=>Promise.resolve().then(()=>e(54799)))},79955,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__1_gkx5x._.js"].map(r=>e.l(r))).then(()=>r(35611)))},46735,e=>{e.v(r=>Promise.all(["server/chunks/[externals]__04n7qbr._.js","server/chunks/[root-of-the-server]__0rk_yxy._.js"].map(r=>e.l(r))).then(()=>r(83085)))},91961,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__1jtd2ar._.js"].map(r=>e.l(r))).then(()=>r(12111)))},72331,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__0qaih8c._.js","server/chunks/[root-of-the-server]__1nmtv65._.js","server/chunks/[root-of-the-server]__0_t7bbz._.js"].map(r=>e.l(r))).then(()=>r(20442)))},30249,e=>{e.v(e=>Promise.resolve().then(()=>e(5898)))}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__1v1dgs2._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[85685,e=>{e.v(e=>Promise.resolve().then(()=>e(54799)))},79955,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__1_gkx5x._.js"].map(r=>e.l(r))).then(()=>r(35611)))},46735,e=>{e.v(r=>Promise.all(["server/chunks/[externals]__04n7qbr._.js","server/chunks/[root-of-the-server]__0rk_yxy._.js"].map(r=>e.l(r))).then(()=>r(83085)))},91961,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__1jtd2ar._.js"].map(r=>e.l(r))).then(()=>r(12111)))},72331,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__0b3nww4._.js","server/chunks/[root-of-the-server]__1nmtv65._.js","server/chunks/[root-of-the-server]__0_t7bbz._.js"].map(r=>e.l(r))).then(()=>r(20442)))},30249,e=>{e.v(e=>Promise.resolve().then(()=>e(5898)))}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__1v9b8go._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[51615,(e,r,o)=>{r.exports=e.x("node:buffer",()=>require("node:buffer"))},2157,(e,r,o)=>{r.exports=e.x("node:fs",()=>require("node:fs"))},47299,(e,r,o)=>{r.exports=e.x("node:http",()=>require("node:http"))},61095,(e,r,o)=>{r.exports=e.x("node:net",()=>require("node:net"))},50227,(e,r,o)=>{r.exports=e.x("node:path",()=>require("node:path"))},59639,(e,r,o)=>{r.exports=e.x("node:process",()=>require("node:process"))},57764,(e,r,o)=>{r.exports=e.x("node:url",()=>require("node:url"))},12057,(e,r,o)=>{r.exports=e.x("node:util",()=>require("node:util"))},27028,(e,r,o)=>{r.exports=e.x("node:zlib",()=>require("node:zlib"))},25897,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__0akadps._.js","server/chunks/[root-of-the-server]__15tkoe6._.js"].map(r=>e.l(r))).then(()=>r(55057)))}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__1vzxn91._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[51615,(e,r,o)=>{r.exports=e.x("node:buffer",()=>require("node:buffer"))},2157,(e,r,o)=>{r.exports=e.x("node:fs",()=>require("node:fs"))},47299,(e,r,o)=>{r.exports=e.x("node:http",()=>require("node:http"))},61095,(e,r,o)=>{r.exports=e.x("node:net",()=>require("node:net"))},50227,(e,r,o)=>{r.exports=e.x("node:path",()=>require("node:path"))},59639,(e,r,o)=>{r.exports=e.x("node:process",()=>require("node:process"))},57764,(e,r,o)=>{r.exports=e.x("node:url",()=>require("node:url"))},12057,(e,r,o)=>{r.exports=e.x("node:util",()=>require("node:util"))},27028,(e,r,o)=>{r.exports=e.x("node:zlib",()=>require("node:zlib"))},25897,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__0akadps._.js","server/chunks/[root-of-the-server]__15tkoe6._.js"].map(r=>e.l(r))).then(()=>r(55057)))}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__1wgn76g._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[63021,(e,t,r)=>{t.exports=e.x("@prisma/client-2c3a283f134fdcb6",()=>require("@prisma/client-2c3a283f134fdcb6"))},98043,e=>{"use strict";var t=e.i(63021);let r=e.g.prisma||new t.PrismaClient({log:"true"===process.env.DEBUG_DB?["query","error","warn"]:["error"]});e.s(["prisma",0,r])},49719,(e,t,r)=>{t.exports=e.x("assert",()=>require("assert"))},44950,e=>e.a(async(t,r)=>{try{var n=await e.y("bcryptjs-ee66c2bdc904f2cf");e.n(n),r()}catch(e){r(e)}},!0),874,(e,t,r)=>{t.exports=e.x("buffer",()=>require("buffer"))},54799,(e,t,r)=>{t.exports=e.x("crypto",()=>require("crypto"))},27699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},22734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},21517,(e,t,r)=>{t.exports=e.x("http",()=>require("http"))},24836,(e,t,r)=>{t.exports=e.x("https",()=>require("https"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},20635,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},59043,(e,t,r)=>{t.exports=e.x("next/dist/server/runtime-reacts.external.js",()=>require("next/dist/server/runtime-reacts.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},81111,(e,t,r)=>{t.exports=e.x("node:stream",()=>require("node:stream"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},45706,(e,t,r)=>{t.exports=e.x("querystring",()=>require("querystring"))},92509,(e,t,r)=>{t.exports=e.x("url",()=>require("url"))},24361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},6461,(e,t,r)=>{t.exports=e.x("zlib",()=>require("zlib"))},36189,e=>e.a(async(t,r)=>{try{var n=e.i(58821),i=e.i(13618),a=e.i(79832),o=e.i(58078),s=e.i(98003),p=e.i(76759),u=e.i(50377),c=e.i(76025),l=t([a]);[a]=l.then?(await l)():l;let R=(0,u.createLogger)("api:settings");async function d(){let e=await (0,i.getServerSession)(a.authOptions);if(!e?.user)return(0,p.unauthorized)("Authentication required");let t=(0,s.getAppConfig)();return(0,o.requireAdmin)(e)?n.NextResponse.json(t):n.NextResponse.json({aiProvider:t.aiProvider,timeouts:t.timeouts,timeZone:t.timeZone})}async function E(e){let t=await (0,i.getServerSession)(a.authOptions);if(!t?.user)return(0,p.unauthorized)("Authentication required");if(!(0,o.requireAdmin)(t))return(0,p.forbidden)("Admin access required");try{let t=await e.json();if(void 0!==t.timeZone){if(!(0,c.isValidTimeZone)(t.timeZone))return(0,p.badRequest)("INVALID_TIME_ZONE");t.timeZone=t.timeZone.trim()}let r=(0,s.getAppConfig)();if(t.gemini?.apiKey==="********"&&(t.gemini.apiKey=r.gemini?.apiKey),t.openai?.instances){let e=r.openai?.instances||[];t.openai.instances=t.openai.instances.map(t=>{if("********"===t.apiKey){let r=e.find(e=>e.id===t.id);return{...t,apiKey:r?.apiKey||""}}return t})}t.azure?.apiKey==="********"&&(t.azure.apiKey=r.azure?.apiKey),t.anthropic?.apiKey==="********"&&(t.anthropic.apiKey=r.anthropic?.apiKey);let i=(0,s.updateAppConfig)(t);return n.NextResponse.json(i)}catch(e){return R.error({error:e},"Failed to update settings"),(0,p.internalError)("Failed to update settings")}}e.s(["GET",0,d,"POST",0,E,"dynamic",0,"force-dynamic"]),r()}catch(e){r(e)}},!1),61525,e=>{"use strict";var t=e.i(47909),r=e.i(74017),n=e.i(96250),i=e.i(59756),a=e.i(61916),o=e.i(74677),s=e.i(69741),p=e.i(16795),u=e.i(87718),c=e.i(95169),l=e.i(47587),d=e.i(66012),E=e.i(70101),R=e.i(74838),x=e.i(10372),f=e.i(93695),m=e.i(9580);e.i(52474);var I=e.i(220);let g=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/settings/route",pathname:"/api/settings",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/settings/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(36189),...{}}),{workAsyncStorage:v,workUnitAsyncStorage:h,serverHooks:A}=g;async function O(e,t,n){n.requestMeta&&(0,i.setRequestMeta)(e,n.requestMeta),g.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/settings/route";v=v.replace(/\/index$/,"")||"/";let h=await g.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!h)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:A,deploymentId:O,params:N,nextConfig:_,parsedUrl:y,isDraftMode:T,prerenderManifest:D,routerServerContext:S,isOnDemandRevalidate:w,revalidateOnlyGenerated:C,resolvedPathname:P,clientReferenceManifest:U,serverActionsManifest:b}=h,q=(0,s.normalizeAppPath)(v),L=!!D.routes[P]&&(g.isDev||(0,m.isRouteCacheOwner)(P,g.cacheOwner,D.routes[P])),F=!!(D.dynamicRoutes[q]||L),M=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,y,!1):t.end("This page could not be found"),null);if(F&&!T){let e=D.dynamicRoutes[q];if(e&&!1===e.fallback&&!L){if(_.adapterPath)return await M();throw new f.NoFallbackError}}let Z=null;!F||g.isDev||T||(Z="/index"===(Z=P)?"/":Z);let K=!0===g.isDev||!F,j=F&&!K;b&&U&&(0,o.setManifestsSingleton)({page:v,clientReferenceManifest:U,serverActionsManifest:b});let H=e.method||"GET",k=(0,a.getTracer)(),z=k.getActiveScopeSpan(),B=!!(null==S?void 0:S.isWrappedByNextServer),V=!!(0,i.getRequestMeta)(e,"minimalMode"),G=(0,i.getRequestMeta)(e,"incrementalCache")||await g.getIncrementalCache(e,_,D,V);null==G||G.resetRequestCache(),globalThis.__incrementalCache=G;let Y={params:N,previewProps:D.preview,renderOpts:{experimental:{authInterrupts:!!_.experimental.authInterrupts,useCacheTimeout:_.experimental.useCacheTimeout},cacheComponents:!!_.cacheComponents,validationLevel:_.experimental.instantInsights.validationLevel,isDraftMode:T,supportsDynamicResponse:K,incrementalCache:G,hmrRefreshHash:(0,i.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:_.cacheLife,staticPageGenerationTimeout:_.staticPageGenerationTimeout,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,i)=>g.onRequestError(e,t,n,i,S)},sharedContext:{buildId:A,deploymentId:O}},Q=new p.NodeNextRequest(e),X=new p.NodeNextResponse(t),$=u.NextRequestAdapter.fromNodeNextRequest(Q,(0,u.signalFromNodeResponse)(t)),W=async({previousCacheEntry:r})=>{try{if(!V&&w&&C&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await g.handle($,Y);e.fetchMetrics=Y.renderOpts.fetchMetrics;let a=Y.renderOpts.pendingWaitUntil;a&&n.waitUntil&&(n.waitUntil(a),a=void 0);let o=Y.renderOpts.collectedTags;if(!F)return await (0,d.sendResponse)(Q,X,i,a),null;{let e=await i.blob(),t=(0,E.toNodeOutgoingHttpHeaders)(i.headers);o&&(t[x.NEXT_CACHE_TAGS_HEADER]=o),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==Y.renderOpts.collectedRevalidate&&!(Y.renderOpts.collectedRevalidate>=x.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,n=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=x.INFINITE_CACHE?!1!==r&&r>0?_.expireTime:void 0:Y.renderOpts.collectedExpire;return{value:{kind:I.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await g.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,l.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:w})},!1,S),t}},J=async(i,o)=>{try{var s,p;let i=await g.handleResponse({req:e,nextConfig:_,cacheKey:Z,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:D,isRoutePPREnabled:!1,isOnDemandRevalidate:w,revalidateOnlyGenerated:C,responseGenerator:W,waitUntil:n.waitUntil,isMinimalMode:V});if(!F)return;if((null==i||null==(s=i.value)?void 0:s.kind)!==I.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==i||null==(p=i.value)?void 0:p.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});V||t.setHeader("x-nextjs-cache",w?"REVALIDATED":i.isMiss?"MISS":i.isStale?"STALE":"HIT"),T&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let a=(0,E.fromNodeOutgoingHttpHeaders)(i.value.headers);V&&F||a.delete(x.NEXT_CACHE_TAGS_HEADER),!i.cacheControl||t.getHeader("Cache-Control")||a.get("Cache-Control")||a.set("Cache-Control",(0,R.getCacheControlHeader)(i.cacheControl)),await (0,d.sendResponse)(Q,X,new Response(i.value.body,{headers:a,status:i.value.status||200}));return}catch(t){if(t instanceof f.NoFallbackError||await g.onRequestError(e,t,{routerKind:"App Router",routePath:q,routeType:"route",revalidateReason:(0,l.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:w})},!1,S),F)throw t;await (0,d.sendResponse)(Q,X,new Response(null,{status:500}));return}finally{(()=>{if(!i)return;let e=t.statusCode;i.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(i.setStatus({code:a.SpanStatusCode.ERROR}),i.setAttribute("error.type",e.toString()));let r=k.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==c.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route")||q,s=`${H} ${n}`;i.setAttributes({"next.route":n,"http.route":n,"next.span_name":s}),i.updateName(s),o&&o!==i&&(o.setAttribute("http.route",n),o.updateName(s))})()}};if(B&&z)await J(z,void 0);else{let t=k.getActiveScopeSpan();await k.withPropagatedContext(e.headers,()=>k.trace(c.BaseServerSpan.handleRequest,{spanName:`${H} ${v}`,kind:a.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},e=>J(e,t)),void 0,!B)}}e.s(["handler",0,O,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:v,workUnitAsyncStorage:h})},"routeModule",0,g,"serverHooks",0,A,"workAsyncStorage",0,v,"workUnitAsyncStorage",0,h])},76759,e=>{"use strict";var t=e.i(58821);let r={UNAUTHORIZED:"UNAUTHORIZED",SESSION_EXPIRED:"SESSION_EXPIRED",FORBIDDEN:"FORBIDDEN",NOT_OWNER:"NOT_OWNER",ADMIN_REQUIRED:"ADMIN_REQUIRED",NOT_FOUND:"NOT_FOUND",USER_NOT_FOUND:"USER_NOT_FOUND",ITEM_NOT_FOUND:"ITEM_NOT_FOUND",BAD_REQUEST:"BAD_REQUEST",INVALID_INPUT:"INVALID_INPUT",MISSING_REQUIRED_FIELD:"MISSING_REQUIRED_FIELD",VALIDATION_ERROR:"VALIDATION_ERROR",OPERATION_NOT_ALLOWED:"OPERATION_NOT_ALLOWED",CONFLICT:"CONFLICT",ALREADY_EXISTS:"ALREADY_EXISTS",INTERNAL_ERROR:"INTERNAL_ERROR",DATABASE_ERROR:"DATABASE_ERROR",AI_ERROR:"AI_ERROR"};function n(e,r,n,i){let a={message:e};return n&&(a.code=n),i&&(a.details=i),t.NextResponse.json(a,{status:r})}e.s(["ErrorCode",0,r,"badRequest",0,function(e,t){return n(e,400,r.BAD_REQUEST,t)},"conflict",0,function(e){return n(e,409,r.CONFLICT)},"createErrorResponse",0,n,"forbidden",0,function(e="Forbidden"){return n(e,403,r.FORBIDDEN)},"internalError",0,function(e="Internal server error"){return n(e,500,r.INTERNAL_ERROR)},"notFound",0,function(e="Not found"){return n(e,404,r.NOT_FOUND)},"unauthorized",0,function(e="Unauthorized"){return n(e,401,r.UNAUTHORIZED)},"validationError",0,function(e,t){return n(e,400,r.VALIDATION_ERROR,t)}])},58078,e=>{"use strict";e.s(["requireAdmin",0,function(e){var t;return!!e&&(t=e.user,t?.role==="admin")}])},98003,e=>{"use strict";var t=e.i(22734),r=e.i(14747),n=e.i(50377),i=e.i(76025);let a=(0,n.createLogger)("config"),o=r.default.join(process.env.CONFIG_DIR||r.default.join(process.cwd(),"config"),"app-config.json"),s={aiProvider:process.env.AI_PROVIDER||"gemini",allowRegistration:!0,timeZone:i.DEFAULT_TIME_ZONE,openai:{instances:process.env.OPENAI_API_KEY?[{id:"env-default",name:"Default (ENV)",apiKey:process.env.OPENAI_API_KEY,baseUrl:process.env.OPENAI_BASE_URL||"https://api.openai.com/v1",model:process.env.OPENAI_MODEL||"gpt-4o"}]:[],activeInstanceId:process.env.OPENAI_API_KEY?"env-default":void 0},gemini:{apiKey:process.env.GOOGLE_API_KEY,baseUrl:process.env.GEMINI_BASE_URL,model:process.env.GEMINI_MODEL||"gemini-2.5-flash"},azure:{apiKey:process.env.AZURE_OPENAI_API_KEY,endpoint:process.env.AZURE_OPENAI_ENDPOINT,deploymentName:process.env.AZURE_OPENAI_DEPLOYMENT,apiVersion:process.env.AZURE_OPENAI_API_VERSION||"2024-02-15-preview",model:process.env.AZURE_OPENAI_MODEL||"gpt-4o"},anthropic:{apiKey:process.env.ANTHROPIC_API_KEY,baseUrl:process.env.ANTHROPIC_BASE_URL,model:process.env.ANTHROPIC_MODEL||"claude-sonnet-5-5"},prompts:{analyze:"",similar:""},timeouts:{analyze:18e4}};function p(){if(t.default.existsSync(o))try{var e;let r=t.default.readFileSync(o,"utf-8"),n=JSON.parse(r),p=n.openai;if((e=n.openai)&&"object"==typeof e&&"apiKey"in e&&!("instances"in e)){a.info("Detected legacy OpenAI config, migrating to multi-instance format..."),p=function(e){if(!e.apiKey)return{instances:[],activeInstanceId:void 0};let t={id:"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}),name:"Default",apiKey:e.apiKey,baseUrl:e.baseUrl||"https://api.openai.com/v1",model:e.model||"gpt-4o"};return{instances:[t],activeInstanceId:t.id}}(n.openai);let e={...n,openai:p};t.default.writeFileSync(o,JSON.stringify(e,null,2)),a.info("Legacy OpenAI config migrated successfully")}return{...s,...n,timeZone:(0,i.isValidTimeZone)(n.timeZone)?n.timeZone.trim():i.DEFAULT_TIME_ZONE,openai:{instances:p?.instances||s.openai?.instances||[],activeInstanceId:p?.activeInstanceId||s.openai?.activeInstanceId},gemini:{...s.gemini,...n.gemini},azure:{...s.azure,...n.azure},anthropic:{...s.anthropic,...n.anthropic},prompts:{...s.prompts,...n.prompts},timeouts:{...s.timeouts,...n.timeouts}}}catch(e){a.error({error:e},"Failed to read config file")}return s}e.s(["getActiveOpenAIConfig",0,function(){let e=p(),t=e.openai?.instances||[],r=e.openai?.activeInstanceId;if(r&&0!==t.length)return t.find(e=>e.id===r)},"getAppConfig",0,p,"getAppTimeZone",0,function(){return p().timeZone||i.DEFAULT_TIME_ZONE},"updateAppConfig",0,function(e){if(void 0!==e.timeZone&&!(0,i.isValidTimeZone)(e.timeZone))throw Error("INVALID_TIME_ZONE");let r=p(),n={...r,...e,timeZone:e.timeZone?.trim()??r.timeZone??i.DEFAULT_TIME_ZONE,openai:{instances:e.openai?.instances??r.openai?.instances??[],activeInstanceId:e.openai?.activeInstanceId??r.openai?.activeInstanceId},gemini:{...r.gemini,...e.gemini},azure:{...r.azure,...e.azure},anthropic:{...r.anthropic,...e.anthropic},prompts:{...r.prompts,...e.prompts},timeouts:{...r.timeouts,...e.timeouts}};try{return t.default.writeFileSync(o,JSON.stringify(n,null,2)),n}catch(e){throw a.error({error:e},"Failed to write config file"),e}}])},50377,e=>{"use strict";let t={trace:10,debug:20,info:30,warn:40,error:50,fatal:60};function r(e,n={}){let i,a=t[e],o=(i=process.env.LOG_LEVEL?.toLowerCase())&&void 0!==t[i]?t[i]:t.info;return(t,r)=>{let i,s;if(a<o)return;let p=new Date;"string"==typeof t?(i={},s=t):(i=t,s=r||"");{let t=JSON.stringify({level:e,time:p.toISOString(),...n,...i,msg:s});switch(e){case"error":case"fatal":console.error(t);break;case"warn":console.warn(t);break;default:console.log(t)}}}}let n=function e(t={}){return t.module,{trace:r("trace",t),debug:r("debug",t),info:r("info",t),warn:r("warn",t),error:r("error",t),fatal:r("fatal",t),child:r=>e({...t,...r}),box:(e,r,n="📋")=>{console.log(JSON.stringify({level:"info",time:new Date().toISOString(),...t,title:e,..."string"==typeof r?{content:r}:r||{},msg:e}))},divider:(e="-")=>{}}}({env:"production"});e.s(["createLogger",0,function(e){return n.child({module:e})}])}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__1wkh9sj._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[51615,(e,r,o)=>{r.exports=e.x("node:buffer",()=>require("node:buffer"))},2157,(e,r,o)=>{r.exports=e.x("node:fs",()=>require("node:fs"))},47299,(e,r,o)=>{r.exports=e.x("node:http",()=>require("node:http"))},61095,(e,r,o)=>{r.exports=e.x("node:net",()=>require("node:net"))},50227,(e,r,o)=>{r.exports=e.x("node:path",()=>require("node:path"))},59639,(e,r,o)=>{r.exports=e.x("node:process",()=>require("node:process"))},57764,(e,r,o)=>{r.exports=e.x("node:url",()=>require("node:url"))},12057,(e,r,o)=>{r.exports=e.x("node:util",()=>require("node:util"))},27028,(e,r,o)=>{r.exports=e.x("node:zlib",()=>require("node:zlib"))},25897,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__0akadps._.js","server/chunks/[root-of-the-server]__15tkoe6._.js"].map(r=>e.l(r))).then(()=>r(55057)))}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__1xcmja4._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[63021,(e,r,t)=>{r.exports=e.x("@prisma/client-2c3a283f134fdcb6",()=>require("@prisma/client-2c3a283f134fdcb6"))},98043,e=>{"use strict";var r=e.i(63021);let t=e.g.prisma||new r.PrismaClient({log:"true"===process.env.DEBUG_DB?["query","error","warn"]:["error"]});e.s(["prisma",0,t])},49719,(e,r,t)=>{r.exports=e.x("assert",()=>require("assert"))},44950,e=>e.a(async(r,t)=>{try{var n=await e.y("bcryptjs-ee66c2bdc904f2cf");e.n(n),t()}catch(e){t(e)}},!0),874,(e,r,t)=>{r.exports=e.x("buffer",()=>require("buffer"))},54799,(e,r,t)=>{r.exports=e.x("crypto",()=>require("crypto"))},27699,(e,r,t)=>{r.exports=e.x("events",()=>require("events"))},22734,(e,r,t)=>{r.exports=e.x("fs",()=>require("fs"))},21517,(e,r,t)=>{r.exports=e.x("http",()=>require("http"))},24836,(e,r,t)=>{r.exports=e.x("https",()=>require("https"))},70406,(e,r,t)=>{r.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,r,t)=>{r.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},20635,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},24725,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},56704,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},59043,(e,r,t)=>{r.exports=e.x("next/dist/server/runtime-reacts.external.js",()=>require("next/dist/server/runtime-reacts.external.js"))},93695,(e,r,t)=>{r.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},81111,(e,r,t)=>{r.exports=e.x("node:stream",()=>require("node:stream"))},14747,(e,r,t)=>{r.exports=e.x("path",()=>require("path"))},45706,(e,r,t)=>{r.exports=e.x("querystring",()=>require("querystring"))},92509,(e,r,t)=>{r.exports=e.x("url",()=>require("url"))},24361,(e,r,t)=>{r.exports=e.x("util",()=>require("util"))},6461,(e,r,t)=>{r.exports=e.x("zlib",()=>require("zlib"))},76759,e=>{"use strict";var r=e.i(58821);let t={UNAUTHORIZED:"UNAUTHORIZED",SESSION_EXPIRED:"SESSION_EXPIRED",FORBIDDEN:"FORBIDDEN",NOT_OWNER:"NOT_OWNER",ADMIN_REQUIRED:"ADMIN_REQUIRED",NOT_FOUND:"NOT_FOUND",USER_NOT_FOUND:"USER_NOT_FOUND",ITEM_NOT_FOUND:"ITEM_NOT_FOUND",BAD_REQUEST:"BAD_REQUEST",INVALID_INPUT:"INVALID_INPUT",MISSING_REQUIRED_FIELD:"MISSING_REQUIRED_FIELD",VALIDATION_ERROR:"VALIDATION_ERROR",OPERATION_NOT_ALLOWED:"OPERATION_NOT_ALLOWED",CONFLICT:"CONFLICT",ALREADY_EXISTS:"ALREADY_EXISTS",INTERNAL_ERROR:"INTERNAL_ERROR",DATABASE_ERROR:"DATABASE_ERROR",AI_ERROR:"AI_ERROR"};function n(e,t,n,i){let s={message:e};return n&&(s.code=n),i&&(s.details=i),r.NextResponse.json(s,{status:t})}e.s(["ErrorCode",0,t,"badRequest",0,function(e,r){return n(e,400,t.BAD_REQUEST,r)},"conflict",0,function(e){return n(e,409,t.CONFLICT)},"createErrorResponse",0,n,"forbidden",0,function(e="Forbidden"){return n(e,403,t.FORBIDDEN)},"internalError",0,function(e="Internal server error"){return n(e,500,t.INTERNAL_ERROR)},"notFound",0,function(e="Not found"){return n(e,404,t.NOT_FOUND)},"unauthorized",0,function(e="Unauthorized"){return n(e,401,t.UNAUTHORIZED)},"validationError",0,function(e,r){return n(e,400,t.VALIDATION_ERROR,r)}])},26828,e=>{"use strict";let r=(0,e.i(50377).createLogger)("background-tasks"),t=globalThis,n=t.__backgroundTasks??=new Map,i=0;function s(e){for(let[r,t]of n)t.finishedAt&&e-Date.parse(t.finishedAt)>18e5&&n.delete(r)}function a(e){let t=Date.now();s(t);let a=`${t.toString(36)}-${(i++).toString(36)}`,o={id:a,userId:e.userId,kind:e.kind,subject:e.subject??null,status:"running",progress:void 0!==e.total?{done:0,total:e.total,failed:0}:null,error:null,link:e.link??null,startedAt:new Date(t).toISOString(),finishedAt:null};n.set(a,o);let c=(e,r)=>{"running"===o.status&&(o.status=e,o.error=r,o.finishedAt=new Date().toISOString())};return{id:a,setProgress:(e,r,t)=>{o.progress={done:e,total:r??o.progress?.total??e,failed:t??o.progress?.failed??0}},succeed:()=>c("succeeded",null),fail:e=>{let t;c("failed",((t=e instanceof Error?e.message:String(e)).startsWith("AI_")?t.split(":")[0]:t).slice(0,200)),r.debug({taskId:a,kind:o.kind,error:o.error},"Background task failed")}}}async function o(e,r){let t=a(e);try{let e=await r(t);return t.succeed(),e}catch(e){throw t.fail(e),e}}e.s(["clearFinishedBackgroundTasks",0,function(e){for(let[r,t]of n)t.userId===e&&"running"!==t.status&&n.delete(r)},"describeQuestion",0,function(e){let r=(e.questionText??"").replace(/\$+/g,"").replace(/\\[a-zA-Z]+|[{}\\]/g," ").replace(/[#*>`|_-]+/g," ").replace(/\s+/g," ").replace(/\s*([,。;:?!、])\s*/g,"$1").trim(),t=r.length>24?`${r.slice(0,24)}…`:r;return[e.shortId,t].filter(Boolean).join(" ")||"—"},"listBackgroundTasks",0,function(e){s(Date.now());let r=[...n.values()].filter(r=>r.userId===e);return[...r.filter(e=>"running"===e.status).sort((e,r)=>e.startedAt.localeCompare(r.startedAt)),...r.filter(e=>"running"!==e.status).sort((e,r)=>(r.finishedAt??"").localeCompare(e.finishedAt??"")).slice(0,30)].map(e=>({id:e.id,kind:e.kind,subject:e.subject,status:e.status,progress:e.progress&&{...e.progress},error:e.error,link:e.link,startedAt:e.startedAt,finishedAt:e.finishedAt}))},"startBackgroundTask",0,a,"trackBackgroundTask",0,o])},98003,e=>{"use strict";var r=e.i(22734),t=e.i(14747),n=e.i(50377),i=e.i(76025);let s=(0,n.createLogger)("config"),a=t.default.join(process.env.CONFIG_DIR||t.default.join(process.cwd(),"config"),"app-config.json"),o={aiProvider:process.env.AI_PROVIDER||"gemini",allowRegistration:!0,timeZone:i.DEFAULT_TIME_ZONE,openai:{instances:process.env.OPENAI_API_KEY?[{id:"env-default",name:"Default (ENV)",apiKey:process.env.OPENAI_API_KEY,baseUrl:process.env.OPENAI_BASE_URL||"https://api.openai.com/v1",model:process.env.OPENAI_MODEL||"gpt-4o"}]:[],activeInstanceId:process.env.OPENAI_API_KEY?"env-default":void 0},gemini:{apiKey:process.env.GOOGLE_API_KEY,baseUrl:process.env.GEMINI_BASE_URL,model:process.env.GEMINI_MODEL||"gemini-2.5-flash"},azure:{apiKey:process.env.AZURE_OPENAI_API_KEY,endpoint:process.env.AZURE_OPENAI_ENDPOINT,deploymentName:process.env.AZURE_OPENAI_DEPLOYMENT,apiVersion:process.env.AZURE_OPENAI_API_VERSION||"2024-02-15-preview",model:process.env.AZURE_OPENAI_MODEL||"gpt-4o"},anthropic:{apiKey:process.env.ANTHROPIC_API_KEY,baseUrl:process.env.ANTHROPIC_BASE_URL,model:process.env.ANTHROPIC_MODEL||"claude-sonnet-5-5"},prompts:{analyze:"",similar:""},timeouts:{analyze:18e4}};function c(){if(r.default.existsSync(a))try{var e;let t=r.default.readFileSync(a,"utf-8"),n=JSON.parse(t),c=n.openai;if((e=n.openai)&&"object"==typeof e&&"apiKey"in e&&!("instances"in e)){s.info("Detected legacy OpenAI config, migrating to multi-instance format..."),c=function(e){if(!e.apiKey)return{instances:[],activeInstanceId:void 0};let r={id:"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let r=16*Math.random()|0;return("x"===e?r:3&r|8).toString(16)}),name:"Default",apiKey:e.apiKey,baseUrl:e.baseUrl||"https://api.openai.com/v1",model:e.model||"gpt-4o"};return{instances:[r],activeInstanceId:r.id}}(n.openai);let e={...n,openai:c};r.default.writeFileSync(a,JSON.stringify(e,null,2)),s.info("Legacy OpenAI config migrated successfully")}return{...o,...n,timeZone:(0,i.isValidTimeZone)(n.timeZone)?n.timeZone.trim():i.DEFAULT_TIME_ZONE,openai:{instances:c?.instances||o.openai?.instances||[],activeInstanceId:c?.activeInstanceId||o.openai?.activeInstanceId},gemini:{...o.gemini,...n.gemini},azure:{...o.azure,...n.azure},anthropic:{...o.anthropic,...n.anthropic},prompts:{...o.prompts,...n.prompts},timeouts:{...o.timeouts,...n.timeouts}}}catch(e){s.error({error:e},"Failed to read config file")}return o}e.s(["getActiveOpenAIConfig",0,function(){let e=c(),r=e.openai?.instances||[],t=e.openai?.activeInstanceId;if(t&&0!==r.length)return r.find(e=>e.id===t)},"getAppConfig",0,c,"getAppTimeZone",0,function(){return c().timeZone||i.DEFAULT_TIME_ZONE},"updateAppConfig",0,function(e){if(void 0!==e.timeZone&&!(0,i.isValidTimeZone)(e.timeZone))throw Error("INVALID_TIME_ZONE");let t=c(),n={...t,...e,timeZone:e.timeZone?.trim()??t.timeZone??i.DEFAULT_TIME_ZONE,openai:{instances:e.openai?.instances??t.openai?.instances??[],activeInstanceId:e.openai?.activeInstanceId??t.openai?.activeInstanceId},gemini:{...t.gemini,...e.gemini},azure:{...t.azure,...e.azure},anthropic:{...t.anthropic,...e.anthropic},prompts:{...t.prompts,...e.prompts},timeouts:{...t.timeouts,...e.timeouts}};try{return r.default.writeFileSync(a,JSON.stringify(n,null,2)),n}catch(e){throw s.error({error:e},"Failed to write config file"),e}}])},63856,e=>e.a(async(r,t)=>{try{var n=e.i(13618),i=e.i(79832),s=e.i(98043),a=r([i]);async function o(){let e=await (0,n.getServerSession)(i.authOptions);return e?.user?.email?s.prisma.user.findUnique({where:{email:e.user.email}}):null}[i]=a.then?(await a)():a,e.s(["getCurrentUser",0,o]),t()}catch(e){t(e)}},!1),50377,e=>{"use strict";let r={trace:10,debug:20,info:30,warn:40,error:50,fatal:60};function t(e,n={}){let i,s=r[e],a=(i=process.env.LOG_LEVEL?.toLowerCase())&&void 0!==r[i]?r[i]:r.info;return(r,t)=>{let i,o;if(s<a)return;let c=new Date;"string"==typeof r?(i={},o=r):(i=r,o=t||"");{let r=JSON.stringify({level:e,time:c.toISOString(),...n,...i,msg:o});switch(e){case"error":case"fatal":console.error(r);break;case"warn":console.warn(r);break;default:console.log(r)}}}}let n=function e(r={}){return r.module,{trace:t("trace",r),debug:t("debug",r),info:t("info",r),warn:t("warn",r),error:t("error",r),fatal:t("fatal",r),child:t=>e({...r,...t}),box:(e,t,n="📋")=>{console.log(JSON.stringify({level:"info",time:new Date().toISOString(),...r,title:e,..."string"==typeof t?{content:t}:t||{},msg:e}))},divider:(e="-")=>{}}}({env:"production"});e.s(["createLogger",0,function(e){return n.child({module:e})}])}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__1y6fx9-._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[51615,(e,r,o)=>{r.exports=e.x("node:buffer",()=>require("node:buffer"))},2157,(e,r,o)=>{r.exports=e.x("node:fs",()=>require("node:fs"))},47299,(e,r,o)=>{r.exports=e.x("node:http",()=>require("node:http"))},61095,(e,r,o)=>{r.exports=e.x("node:net",()=>require("node:net"))},50227,(e,r,o)=>{r.exports=e.x("node:path",()=>require("node:path"))},59639,(e,r,o)=>{r.exports=e.x("node:process",()=>require("node:process"))},57764,(e,r,o)=>{r.exports=e.x("node:url",()=>require("node:url"))},12057,(e,r,o)=>{r.exports=e.x("node:util",()=>require("node:util"))},27028,(e,r,o)=>{r.exports=e.x("node:zlib",()=>require("node:zlib"))},25897,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__0akadps._.js","server/chunks/[root-of-the-server]__15tkoe6._.js"].map(r=>e.l(r))).then(()=>r(55057)))}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__1zos_p4._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[85685,e=>{e.v(e=>Promise.resolve().then(()=>e(54799)))},79955,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__1_gkx5x._.js"].map(r=>e.l(r))).then(()=>r(35611)))},46735,e=>{e.v(r=>Promise.all(["server/chunks/[externals]__04n7qbr._.js","server/chunks/[root-of-the-server]__0rk_yxy._.js"].map(r=>e.l(r))).then(()=>r(83085)))},91961,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__1jtd2ar._.js"].map(r=>e.l(r))).then(()=>r(12111)))},72331,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__150ei9u._.js","server/chunks/[root-of-the-server]__1nmtv65._.js","server/chunks/[root-of-the-server]__0_t7bbz._.js"].map(r=>e.l(r))).then(()=>r(20442)))},30249,e=>{e.v(e=>Promise.resolve().then(()=>e(5898)))}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__1zp0oig._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[63021,(e,r,t)=>{r.exports=e.x("@prisma/client-2c3a283f134fdcb6",()=>require("@prisma/client-2c3a283f134fdcb6"))},98043,e=>{"use strict";var r=e.i(63021);let t=e.g.prisma||new r.PrismaClient({log:"true"===process.env.DEBUG_DB?["query","error","warn"]:["error"]});e.s(["prisma",0,t])},49719,(e,r,t)=>{r.exports=e.x("assert",()=>require("assert"))},44950,e=>e.a(async(r,t)=>{try{var n=await e.y("bcryptjs-ee66c2bdc904f2cf");e.n(n),t()}catch(e){t(e)}},!0),874,(e,r,t)=>{r.exports=e.x("buffer",()=>require("buffer"))},54799,(e,r,t)=>{r.exports=e.x("crypto",()=>require("crypto"))},27699,(e,r,t)=>{r.exports=e.x("events",()=>require("events"))},22734,(e,r,t)=>{r.exports=e.x("fs",()=>require("fs"))},21517,(e,r,t)=>{r.exports=e.x("http",()=>require("http"))},24836,(e,r,t)=>{r.exports=e.x("https",()=>require("https"))},70406,(e,r,t)=>{r.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,r,t)=>{r.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},20635,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},24725,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},56704,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},59043,(e,r,t)=>{r.exports=e.x("next/dist/server/runtime-reacts.external.js",()=>require("next/dist/server/runtime-reacts.external.js"))},93695,(e,r,t)=>{r.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},81111,(e,r,t)=>{r.exports=e.x("node:stream",()=>require("node:stream"))},14747,(e,r,t)=>{r.exports=e.x("path",()=>require("path"))},45706,(e,r,t)=>{r.exports=e.x("querystring",()=>require("querystring"))},92509,(e,r,t)=>{r.exports=e.x("url",()=>require("url"))},24361,(e,r,t)=>{r.exports=e.x("util",()=>require("util"))},6461,(e,r,t)=>{r.exports=e.x("zlib",()=>require("zlib"))},76759,e=>{"use strict";var r=e.i(58821);let t={UNAUTHORIZED:"UNAUTHORIZED",SESSION_EXPIRED:"SESSION_EXPIRED",FORBIDDEN:"FORBIDDEN",NOT_OWNER:"NOT_OWNER",ADMIN_REQUIRED:"ADMIN_REQUIRED",NOT_FOUND:"NOT_FOUND",USER_NOT_FOUND:"USER_NOT_FOUND",ITEM_NOT_FOUND:"ITEM_NOT_FOUND",BAD_REQUEST:"BAD_REQUEST",INVALID_INPUT:"INVALID_INPUT",MISSING_REQUIRED_FIELD:"MISSING_REQUIRED_FIELD",VALIDATION_ERROR:"VALIDATION_ERROR",OPERATION_NOT_ALLOWED:"OPERATION_NOT_ALLOWED",CONFLICT:"CONFLICT",ALREADY_EXISTS:"ALREADY_EXISTS",INTERNAL_ERROR:"INTERNAL_ERROR",DATABASE_ERROR:"DATABASE_ERROR",AI_ERROR:"AI_ERROR"};function n(e,t,n,i){let s={message:e};return n&&(s.code=n),i&&(s.details=i),r.NextResponse.json(s,{status:t})}e.s(["ErrorCode",0,t,"badRequest",0,function(e,r){return n(e,400,t.BAD_REQUEST,r)},"conflict",0,function(e){return n(e,409,t.CONFLICT)},"createErrorResponse",0,n,"forbidden",0,function(e="Forbidden"){return n(e,403,t.FORBIDDEN)},"internalError",0,function(e="Internal server error"){return n(e,500,t.INTERNAL_ERROR)},"notFound",0,function(e="Not found"){return n(e,404,t.NOT_FOUND)},"unauthorized",0,function(e="Unauthorized"){return n(e,401,t.UNAUTHORIZED)},"validationError",0,function(e,r){return n(e,400,t.VALIDATION_ERROR,r)}])},98003,e=>{"use strict";var r=e.i(22734),t=e.i(14747),n=e.i(50377),i=e.i(76025);let s=(0,n.createLogger)("config"),o=t.default.join(process.env.CONFIG_DIR||t.default.join(process.cwd(),"config"),"app-config.json"),a={aiProvider:process.env.AI_PROVIDER||"gemini",allowRegistration:!0,timeZone:i.DEFAULT_TIME_ZONE,openai:{instances:process.env.OPENAI_API_KEY?[{id:"env-default",name:"Default (ENV)",apiKey:process.env.OPENAI_API_KEY,baseUrl:process.env.OPENAI_BASE_URL||"https://api.openai.com/v1",model:process.env.OPENAI_MODEL||"gpt-4o"}]:[],activeInstanceId:process.env.OPENAI_API_KEY?"env-default":void 0},gemini:{apiKey:process.env.GOOGLE_API_KEY,baseUrl:process.env.GEMINI_BASE_URL,model:process.env.GEMINI_MODEL||"gemini-2.5-flash"},azure:{apiKey:process.env.AZURE_OPENAI_API_KEY,endpoint:process.env.AZURE_OPENAI_ENDPOINT,deploymentName:process.env.AZURE_OPENAI_DEPLOYMENT,apiVersion:process.env.AZURE_OPENAI_API_VERSION||"2024-02-15-preview",model:process.env.AZURE_OPENAI_MODEL||"gpt-4o"},anthropic:{apiKey:process.env.ANTHROPIC_API_KEY,baseUrl:process.env.ANTHROPIC_BASE_URL,model:process.env.ANTHROPIC_MODEL||"claude-sonnet-5-5"},prompts:{analyze:"",similar:""},timeouts:{analyze:18e4}};function p(){if(r.default.existsSync(o))try{var e;let t=r.default.readFileSync(o,"utf-8"),n=JSON.parse(t),p=n.openai;if((e=n.openai)&&"object"==typeof e&&"apiKey"in e&&!("instances"in e)){s.info("Detected legacy OpenAI config, migrating to multi-instance format..."),p=function(e){if(!e.apiKey)return{instances:[],activeInstanceId:void 0};let r={id:"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let r=16*Math.random()|0;return("x"===e?r:3&r|8).toString(16)}),name:"Default",apiKey:e.apiKey,baseUrl:e.baseUrl||"https://api.openai.com/v1",model:e.model||"gpt-4o"};return{instances:[r],activeInstanceId:r.id}}(n.openai);let e={...n,openai:p};r.default.writeFileSync(o,JSON.stringify(e,null,2)),s.info("Legacy OpenAI config migrated successfully")}return{...a,...n,timeZone:(0,i.isValidTimeZone)(n.timeZone)?n.timeZone.trim():i.DEFAULT_TIME_ZONE,openai:{instances:p?.instances||a.openai?.instances||[],activeInstanceId:p?.activeInstanceId||a.openai?.activeInstanceId},gemini:{...a.gemini,...n.gemini},azure:{...a.azure,...n.azure},anthropic:{...a.anthropic,...n.anthropic},prompts:{...a.prompts,...n.prompts},timeouts:{...a.timeouts,...n.timeouts}}}catch(e){s.error({error:e},"Failed to read config file")}return a}e.s(["getActiveOpenAIConfig",0,function(){let e=p(),r=e.openai?.instances||[],t=e.openai?.activeInstanceId;if(t&&0!==r.length)return r.find(e=>e.id===t)},"getAppConfig",0,p,"getAppTimeZone",0,function(){return p().timeZone||i.DEFAULT_TIME_ZONE},"updateAppConfig",0,function(e){if(void 0!==e.timeZone&&!(0,i.isValidTimeZone)(e.timeZone))throw Error("INVALID_TIME_ZONE");let t=p(),n={...t,...e,timeZone:e.timeZone?.trim()??t.timeZone??i.DEFAULT_TIME_ZONE,openai:{instances:e.openai?.instances??t.openai?.instances??[],activeInstanceId:e.openai?.activeInstanceId??t.openai?.activeInstanceId},gemini:{...t.gemini,...e.gemini},azure:{...t.azure,...e.azure},anthropic:{...t.anthropic,...e.anthropic},prompts:{...t.prompts,...e.prompts},timeouts:{...t.timeouts,...e.timeouts}};try{return r.default.writeFileSync(o,JSON.stringify(n,null,2)),n}catch(e){throw s.error({error:e},"Failed to write config file"),e}}])},50377,e=>{"use strict";let r={trace:10,debug:20,info:30,warn:40,error:50,fatal:60};function t(e,n={}){let i,s=r[e],o=(i=process.env.LOG_LEVEL?.toLowerCase())&&void 0!==r[i]?r[i]:r.info;return(r,t)=>{let i,a;if(s<o)return;let p=new Date;"string"==typeof r?(i={},a=r):(i=r,a=t||"");{let r=JSON.stringify({level:e,time:p.toISOString(),...n,...i,msg:a});switch(e){case"error":case"fatal":console.error(r);break;case"warn":console.warn(r);break;default:console.log(r)}}}}let n=function e(r={}){return r.module,{trace:t("trace",r),debug:t("debug",r),info:t("info",r),warn:t("warn",r),error:t("error",r),fatal:t("fatal",r),child:t=>e({...r,...t}),box:(e,t,n="📋")=>{console.log(JSON.stringify({level:"info",time:new Date().toISOString(),...r,title:e,..."string"==typeof t?{content:t}:t||{},msg:e}))},divider:(e="-")=>{}}}({env:"production"});e.s(["createLogger",0,function(e){return n.child({module:e})}])}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__203q6el._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[63021,(e,t,r)=>{t.exports=e.x("@prisma/client-2c3a283f134fdcb6",()=>require("@prisma/client-2c3a283f134fdcb6"))},98043,e=>{"use strict";var t=e.i(63021);let r=e.g.prisma||new t.PrismaClient({log:"true"===process.env.DEBUG_DB?["query","error","warn"]:["error"]});e.s(["prisma",0,r])},49719,(e,t,r)=>{t.exports=e.x("assert",()=>require("assert"))},44950,e=>e.a(async(t,r)=>{try{var n=await e.y("bcryptjs-ee66c2bdc904f2cf");e.n(n),r()}catch(e){r(e)}},!0),874,(e,t,r)=>{t.exports=e.x("buffer",()=>require("buffer"))},54799,(e,t,r)=>{t.exports=e.x("crypto",()=>require("crypto"))},27699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},22734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},21517,(e,t,r)=>{t.exports=e.x("http",()=>require("http"))},24836,(e,t,r)=>{t.exports=e.x("https",()=>require("https"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},20635,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},59043,(e,t,r)=>{t.exports=e.x("next/dist/server/runtime-reacts.external.js",()=>require("next/dist/server/runtime-reacts.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},81111,(e,t,r)=>{t.exports=e.x("node:stream",()=>require("node:stream"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},45706,(e,t,r)=>{t.exports=e.x("querystring",()=>require("querystring"))},92509,(e,t,r)=>{t.exports=e.x("url",()=>require("url"))},24361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},6461,(e,t,r)=>{t.exports=e.x("zlib",()=>require("zlib"))},97072,e=>e.a(async(t,r)=>{try{var n=e.i(58821),i=e.i(98043),a=e.i(79832),s=e.i(13618),o=e.i(43911),l=e.i(76759),c=e.i(50377),u=e.i(26828),d=t([a]);[a]=d.then?(await d)():d;let f=(0,c.createLogger)("api:practice:generate");async function p(e){let t=await (0,s.getServerSession)(a.authOptions);if(!t?.user)return(0,l.unauthorized)("Authentication required");try{let{errorItemId:r,language:a,difficulty:s}=await e.json(),c=await i.prisma.errorItem.findUnique({where:{id:r},include:{subject:!0}});if(!c||c.userId!==t.user.id)return(0,l.notFound)("Item not found");let d=[];try{d=JSON.parse(c.knowledgePoints||"[]")}catch(e){d=[]}let p=(0,o.getAIService)(),f=await (0,u.trackBackgroundTask)({userId:t.user.id,kind:"practice",subject:(0,u.describeQuestion)(c),link:`/error-items/${r}`},()=>p.generateSimilarQuestion(c.questionText||"",d,a,s||"medium",c.gradeSemester,c.figureSvg)),g=c.subject?.name||"其他";return f.subject=["数学","物理","化学","生物","英语","语文","历史","地理","政治","其他"].includes(g)?g:"其他",n.NextResponse.json(f)}catch(t){f.error({error:t},"Error generating practice");let e=t instanceof Error?t.message:"Failed to generate practice question";return(0,l.internalError)(e)}}e.s(["POST",0,p]),r()}catch(e){r(e)}},!1),89034,e=>{"use strict";var t=e.i(47909),r=e.i(74017),n=e.i(96250),i=e.i(59756),a=e.i(61916),s=e.i(74677),o=e.i(69741),l=e.i(16795),c=e.i(87718),u=e.i(95169),d=e.i(47587),p=e.i(66012),f=e.i(70101),g=e.i(74838),E=e.i(10372),x=e.i(93695),R=e.i(9580);e.i(52474);var I=e.i(220);let m=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/practice/generate/route",pathname:"/api/practice/generate",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/practice/generate/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(97072),...{}}),{workAsyncStorage:h,workUnitAsyncStorage:v,serverHooks:A}=m;async function O(e,t,n){n.requestMeta&&(0,i.setRequestMeta)(e,n.requestMeta),m.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let h="/api/practice/generate/route";h=h.replace(/\/index$/,"")||"/";let v=await m.prepare(e,t,{srcPage:h,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:A,deploymentId:O,params:_,nextConfig:N,parsedUrl:T,isDraftMode:y,prerenderManifest:S,routerServerContext:w,isOnDemandRevalidate:D,revalidateOnlyGenerated:b,resolvedPathname:P,clientReferenceManifest:C,serverActionsManifest:U}=v,k=(0,o.normalizeAppPath)(h),q=!!S.routes[P]&&(m.isDev||(0,R.isRouteCacheOwner)(P,m.cacheOwner,S.routes[P])),L=!!(S.dynamicRoutes[k]||q),j=async()=>((null==w?void 0:w.render404)?await w.render404(e,t,T,!1):t.end("This page could not be found"),null);if(L&&!y){let e=S.dynamicRoutes[k];if(e&&!1===e.fallback&&!q){if(N.adapterPath)return await j();throw new x.NoFallbackError}}let F=null;!L||m.isDev||y||(F="/index"===(F=P)?"/":F);let M=!0===m.isDev||!L,Z=L&&!M;U&&C&&(0,s.setManifestsSingleton)({page:h,clientReferenceManifest:C,serverActionsManifest:U});let B=e.method||"GET",H=(0,a.getTracer)(),K=H.getActiveScopeSpan(),z=!!(null==w?void 0:w.isWrappedByNextServer),V=!!(0,i.getRequestMeta)(e,"minimalMode"),G=(0,i.getRequestMeta)(e,"incrementalCache")||await m.getIncrementalCache(e,N,S,V);null==G||G.resetRequestCache(),globalThis.__incrementalCache=G;let $={params:_,previewProps:S.preview,renderOpts:{experimental:{authInterrupts:!!N.experimental.authInterrupts,useCacheTimeout:N.experimental.useCacheTimeout},cacheComponents:!!N.cacheComponents,validationLevel:N.experimental.instantInsights.validationLevel,isDraftMode:y,supportsDynamicResponse:M,incrementalCache:G,hmrRefreshHash:(0,i.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:N.cacheLife,staticPageGenerationTimeout:N.staticPageGenerationTimeout,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,i)=>m.onRequestError(e,t,n,i,w)},sharedContext:{buildId:A,deploymentId:O}},Q=new l.NodeNextRequest(e),Y=new l.NodeNextResponse(t),W=c.NextRequestAdapter.fromNodeNextRequest(Q,(0,c.signalFromNodeResponse)(t)),X=async({previousCacheEntry:r})=>{try{if(!V&&D&&b&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await m.handle(W,$);e.fetchMetrics=$.renderOpts.fetchMetrics;let a=$.renderOpts.pendingWaitUntil;a&&n.waitUntil&&(n.waitUntil(a),a=void 0);let s=$.renderOpts.collectedTags;if(!L)return await (0,p.sendResponse)(Q,Y,i,a),null;{let e=await i.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(i.headers);s&&(t[E.NEXT_CACHE_TAGS_HEADER]=s),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=E.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,n=void 0===$.renderOpts.collectedExpire||$.renderOpts.collectedExpire>=E.INFINITE_CACHE?!1!==r&&r>0?N.expireTime:void 0:$.renderOpts.collectedExpire;return{value:{kind:I.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await m.onRequestError(e,t,{routerKind:"App Router",routePath:h,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:Z,isOnDemandRevalidate:D})},!1,w),t}},J=async(i,s)=>{try{var o,l;let i=await m.handleResponse({req:e,nextConfig:N,cacheKey:F,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:S,isRoutePPREnabled:!1,isOnDemandRevalidate:D,revalidateOnlyGenerated:b,responseGenerator:X,waitUntil:n.waitUntil,isMinimalMode:V});if(!L)return;if((null==i||null==(o=i.value)?void 0:o.kind)!==I.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==i||null==(l=i.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});V||t.setHeader("x-nextjs-cache",D?"REVALIDATED":i.isMiss?"MISS":i.isStale?"STALE":"HIT"),y&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let a=(0,f.fromNodeOutgoingHttpHeaders)(i.value.headers);V&&L||a.delete(E.NEXT_CACHE_TAGS_HEADER),!i.cacheControl||t.getHeader("Cache-Control")||a.get("Cache-Control")||a.set("Cache-Control",(0,g.getCacheControlHeader)(i.cacheControl)),await (0,p.sendResponse)(Q,Y,new Response(i.value.body,{headers:a,status:i.value.status||200}));return}catch(t){if(t instanceof x.NoFallbackError||await m.onRequestError(e,t,{routerKind:"App Router",routePath:k,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:Z,isOnDemandRevalidate:D})},!1,w),L)throw t;await (0,p.sendResponse)(Q,Y,new Response(null,{status:500}));return}finally{(()=>{if(!i)return;let e=t.statusCode;i.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(i.setStatus({code:a.SpanStatusCode.ERROR}),i.setAttribute("error.type",e.toString()));let r=H.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route")||k,o=`${B} ${n}`;i.setAttributes({"next.route":n,"http.route":n,"next.span_name":o}),i.updateName(o),s&&s!==i&&(s.setAttribute("http.route",n),s.updateName(o))})()}};if(z&&K)await J(K,void 0);else{let t=H.getActiveScopeSpan();await H.withPropagatedContext(e.headers,()=>H.trace(u.BaseServerSpan.handleRequest,{spanName:`${B} ${h}`,kind:a.SpanKind.SERVER,attributes:{"http.method":B,"http.target":e.url}},e=>J(e,t)),void 0,!z)}}e.s(["handler",0,O,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:h,workUnitAsyncStorage:v})},"routeModule",0,m,"serverHooks",0,A,"workAsyncStorage",0,h,"workUnitAsyncStorage",0,v])},76759,e=>{"use strict";var t=e.i(58821);let r={UNAUTHORIZED:"UNAUTHORIZED",SESSION_EXPIRED:"SESSION_EXPIRED",FORBIDDEN:"FORBIDDEN",NOT_OWNER:"NOT_OWNER",ADMIN_REQUIRED:"ADMIN_REQUIRED",NOT_FOUND:"NOT_FOUND",USER_NOT_FOUND:"USER_NOT_FOUND",ITEM_NOT_FOUND:"ITEM_NOT_FOUND",BAD_REQUEST:"BAD_REQUEST",INVALID_INPUT:"INVALID_INPUT",MISSING_REQUIRED_FIELD:"MISSING_REQUIRED_FIELD",VALIDATION_ERROR:"VALIDATION_ERROR",OPERATION_NOT_ALLOWED:"OPERATION_NOT_ALLOWED",CONFLICT:"CONFLICT",ALREADY_EXISTS:"ALREADY_EXISTS",INTERNAL_ERROR:"INTERNAL_ERROR",DATABASE_ERROR:"DATABASE_ERROR",AI_ERROR:"AI_ERROR"};function n(e,r,n,i){let a={message:e};return n&&(a.code=n),i&&(a.details=i),t.NextResponse.json(a,{status:r})}e.s(["ErrorCode",0,r,"badRequest",0,function(e,t){return n(e,400,r.BAD_REQUEST,t)},"conflict",0,function(e){return n(e,409,r.CONFLICT)},"createErrorResponse",0,n,"forbidden",0,function(e="Forbidden"){return n(e,403,r.FORBIDDEN)},"internalError",0,function(e="Internal server error"){return n(e,500,r.INTERNAL_ERROR)},"notFound",0,function(e="Not found"){return n(e,404,r.NOT_FOUND)},"unauthorized",0,function(e="Unauthorized"){return n(e,401,r.UNAUTHORIZED)},"validationError",0,function(e,t){return n(e,400,r.VALIDATION_ERROR,t)}])},26828,e=>{"use strict";let t=(0,e.i(50377).createLogger)("background-tasks"),r=globalThis,n=r.__backgroundTasks??=new Map,i=0;function a(e){for(let[t,r]of n)r.finishedAt&&e-Date.parse(r.finishedAt)>18e5&&n.delete(t)}function s(e){let r=Date.now();a(r);let s=`${r.toString(36)}-${(i++).toString(36)}`,o={id:s,userId:e.userId,kind:e.kind,subject:e.subject??null,status:"running",progress:void 0!==e.total?{done:0,total:e.total,failed:0}:null,error:null,link:e.link??null,startedAt:new Date(r).toISOString(),finishedAt:null};n.set(s,o);let l=(e,t)=>{"running"===o.status&&(o.status=e,o.error=t,o.finishedAt=new Date().toISOString())};return{id:s,setProgress:(e,t,r)=>{o.progress={done:e,total:t??o.progress?.total??e,failed:r??o.progress?.failed??0}},succeed:()=>l("succeeded",null),fail:e=>{let r;l("failed",((r=e instanceof Error?e.message:String(e)).startsWith("AI_")?r.split(":")[0]:r).slice(0,200)),t.debug({taskId:s,kind:o.kind,error:o.error},"Background task failed")}}}async function o(e,t){let r=s(e);try{let e=await t(r);return r.succeed(),e}catch(e){throw r.fail(e),e}}e.s(["clearFinishedBackgroundTasks",0,function(e){for(let[t,r]of n)r.userId===e&&"running"!==r.status&&n.delete(t)},"describeQuestion",0,function(e){let t=(e.questionText??"").replace(/\$+/g,"").replace(/\\[a-zA-Z]+|[{}\\]/g," ").replace(/[#*>`|_-]+/g," ").replace(/\s+/g," ").replace(/\s*([,。;:?!、])\s*/g,"$1").trim(),r=t.length>24?`${t.slice(0,24)}…`:t;return[e.shortId,r].filter(Boolean).join(" ")||"—"},"listBackgroundTasks",0,function(e){a(Date.now());let t=[...n.values()].filter(t=>t.userId===e);return[...t.filter(e=>"running"===e.status).sort((e,t)=>e.startedAt.localeCompare(t.startedAt)),...t.filter(e=>"running"!==e.status).sort((e,t)=>(t.finishedAt??"").localeCompare(e.finishedAt??"")).slice(0,30)].map(e=>({id:e.id,kind:e.kind,subject:e.subject,status:e.status,progress:e.progress&&{...e.progress},error:e.error,link:e.link,startedAt:e.startedAt,finishedAt:e.finishedAt}))},"startBackgroundTask",0,s,"trackBackgroundTask",0,o])},98003,e=>{"use strict";var t=e.i(22734),r=e.i(14747),n=e.i(50377),i=e.i(76025);let a=(0,n.createLogger)("config"),s=r.default.join(process.env.CONFIG_DIR||r.default.join(process.cwd(),"config"),"app-config.json"),o={aiProvider:process.env.AI_PROVIDER||"gemini",allowRegistration:!0,timeZone:i.DEFAULT_TIME_ZONE,openai:{instances:process.env.OPENAI_API_KEY?[{id:"env-default",name:"Default (ENV)",apiKey:process.env.OPENAI_API_KEY,baseUrl:process.env.OPENAI_BASE_URL||"https://api.openai.com/v1",model:process.env.OPENAI_MODEL||"gpt-4o"}]:[],activeInstanceId:process.env.OPENAI_API_KEY?"env-default":void 0},gemini:{apiKey:process.env.GOOGLE_API_KEY,baseUrl:process.env.GEMINI_BASE_URL,model:process.env.GEMINI_MODEL||"gemini-2.5-flash"},azure:{apiKey:process.env.AZURE_OPENAI_API_KEY,endpoint:process.env.AZURE_OPENAI_ENDPOINT,deploymentName:process.env.AZURE_OPENAI_DEPLOYMENT,apiVersion:process.env.AZURE_OPENAI_API_VERSION||"2024-02-15-preview",model:process.env.AZURE_OPENAI_MODEL||"gpt-4o"},anthropic:{apiKey:process.env.ANTHROPIC_API_KEY,baseUrl:process.env.ANTHROPIC_BASE_URL,model:process.env.ANTHROPIC_MODEL||"claude-sonnet-5-5"},prompts:{analyze:"",similar:""},timeouts:{analyze:18e4}};function l(){if(t.default.existsSync(s))try{var e;let r=t.default.readFileSync(s,"utf-8"),n=JSON.parse(r),l=n.openai;if((e=n.openai)&&"object"==typeof e&&"apiKey"in e&&!("instances"in e)){a.info("Detected legacy OpenAI config, migrating to multi-instance format..."),l=function(e){if(!e.apiKey)return{instances:[],activeInstanceId:void 0};let t={id:"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}),name:"Default",apiKey:e.apiKey,baseUrl:e.baseUrl||"https://api.openai.com/v1",model:e.model||"gpt-4o"};return{instances:[t],activeInstanceId:t.id}}(n.openai);let e={...n,openai:l};t.default.writeFileSync(s,JSON.stringify(e,null,2)),a.info("Legacy OpenAI config migrated successfully")}return{...o,...n,timeZone:(0,i.isValidTimeZone)(n.timeZone)?n.timeZone.trim():i.DEFAULT_TIME_ZONE,openai:{instances:l?.instances||o.openai?.instances||[],activeInstanceId:l?.activeInstanceId||o.openai?.activeInstanceId},gemini:{...o.gemini,...n.gemini},azure:{...o.azure,...n.azure},anthropic:{...o.anthropic,...n.anthropic},prompts:{...o.prompts,...n.prompts},timeouts:{...o.timeouts,...n.timeouts}}}catch(e){a.error({error:e},"Failed to read config file")}return o}e.s(["getActiveOpenAIConfig",0,function(){let e=l(),t=e.openai?.instances||[],r=e.openai?.activeInstanceId;if(r&&0!==t.length)return t.find(e=>e.id===r)},"getAppConfig",0,l,"getAppTimeZone",0,function(){return l().timeZone||i.DEFAULT_TIME_ZONE},"updateAppConfig",0,function(e){if(void 0!==e.timeZone&&!(0,i.isValidTimeZone)(e.timeZone))throw Error("INVALID_TIME_ZONE");let r=l(),n={...r,...e,timeZone:e.timeZone?.trim()??r.timeZone??i.DEFAULT_TIME_ZONE,openai:{instances:e.openai?.instances??r.openai?.instances??[],activeInstanceId:e.openai?.activeInstanceId??r.openai?.activeInstanceId},gemini:{...r.gemini,...e.gemini},azure:{...r.azure,...e.azure},anthropic:{...r.anthropic,...e.anthropic},prompts:{...r.prompts,...e.prompts},timeouts:{...r.timeouts,...e.timeouts}};try{return t.default.writeFileSync(s,JSON.stringify(n,null,2)),n}catch(e){throw a.error({error:e},"Failed to write config file"),e}}])},50377,e=>{"use strict";let t={trace:10,debug:20,info:30,warn:40,error:50,fatal:60};function r(e,n={}){let i,a=t[e],s=(i=process.env.LOG_LEVEL?.toLowerCase())&&void 0!==t[i]?t[i]:t.info;return(t,r)=>{let i,o;if(a<s)return;let l=new Date;"string"==typeof t?(i={},o=t):(i=t,o=r||"");{let t=JSON.stringify({level:e,time:l.toISOString(),...n,...i,msg:o});switch(e){case"error":case"fatal":console.error(t);break;case"warn":console.warn(t);break;default:console.log(t)}}}}let n=function e(t={}){return t.module,{trace:r("trace",t),debug:r("debug",t),info:r("info",t),warn:r("warn",t),error:r("error",t),fatal:r("fatal",t),child:r=>e({...t,...r}),box:(e,r,n="📋")=>{console.log(JSON.stringify({level:"info",time:new Date().toISOString(),...t,title:e,..."string"==typeof r?{content:r}:r||{},msg:e}))},divider:(e="-")=>{}}}({env:"production"});e.s(["createLogger",0,function(e){return n.child({module:e})}])}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__20bun16._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[92290,e=>e.a(async(t,r)=>{try{var a=e.i(58821),n=e.i(63856),i=e.i(98043),s=e.i(76759),o=e.i(50377),l=e.i(26828),u=e.i(83918),d=t([n]);[n]=d.then?(await d)():d;let p=(0,o.createLogger)("api:error-items:retag");async function c(e,{params:t}){let{id:r}=await t;try{let t=await (0,n.getCurrentUser)();if(!t)return(0,s.unauthorized)("Authentication required");let o=await e.json().catch(()=>({})),d=await i.prisma.errorItem.findUnique({where:{id:r},select:{userId:!0,shortId:!0,questionText:!0}});if(!d||d.userId!==t.id)return(0,s.notFound)("Item not found");let c=await (0,l.trackBackgroundTask)({userId:t.id,kind:"retag",subject:(0,l.describeQuestion)(d),link:`/error-items/${r}`},()=>!0===o.preview?(0,u.previewRetagErrorItem)(r,t.id):(0,u.retagErrorItem)(r,t.id));return a.NextResponse.json(c)}catch(t){let e=t instanceof Error?t.message:String(t);if("ITEM_NOT_FOUND"===e)return(0,s.notFound)("Item not found");if(["NO_QUESTION_TEXT","NO_AVAILABLE_TAGS","NO_TAGS_SELECTED"].includes(e))return(0,s.badRequest)(e);return p.error({error:e},"Error retagging item"),(0,s.internalError)(e.startsWith("AI_")?e.split(":")[0]:"Failed to retag item")}}e.s(["POST",0,c]),r()}catch(e){r(e)}},!1),99052,e=>{"use strict";var t=e.i(47909),r=e.i(74017),a=e.i(96250),n=e.i(59756),i=e.i(61916),s=e.i(74677),o=e.i(69741),l=e.i(16795),u=e.i(87718),d=e.i(95169),c=e.i(47587),p=e.i(66012),g=e.i(70101),h=e.i(74838),m=e.i(10372),f=e.i(93695),w=e.i(9580);e.i(52474);var E=e.i(220);let R=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/error-items/[id]/retag/route",pathname:"/api/error-items/[id]/retag",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/error-items/[id]/retag/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(92290),...{}}),{workAsyncStorage:v,workUnitAsyncStorage:S,serverHooks:T}=R;async function y(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),R.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/error-items/[id]/retag/route";v=v.replace(/\/index$/,"")||"/";let S=await R.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!S)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:T,deploymentId:y,params:A,nextConfig:I,parsedUrl:b,isDraftMode:_,prerenderManifest:C,routerServerContext:N,isOnDemandRevalidate:x,revalidateOnlyGenerated:O,resolvedPathname:P,clientReferenceManifest:D,serverActionsManifest:q}=S,k=(0,o.normalizeAppPath)(v),M=!!C.routes[P]&&(R.isDev||(0,w.isRouteCacheOwner)(P,R.cacheOwner,C.routes[P])),L=!!(C.dynamicRoutes[k]||M),G=async()=>((null==N?void 0:N.render404)?await N.render404(e,t,b,!1):t.end("This page could not be found"),null);if(L&&!_){let e=C.dynamicRoutes[k];if(e&&!1===e.fallback&&!M){if(I.adapterPath)return await G();throw new f.NoFallbackError}}let H=null;!L||R.isDev||_||(H="/index"===(H=P)?"/":H);let U=!0===R.isDev||!L,j=L&&!U;q&&D&&(0,s.setManifestsSingleton)({page:v,clientReferenceManifest:D,serverActionsManifest:q});let F=e.method||"GET",$=(0,i.getTracer)(),B=$.getActiveScopeSpan(),K=!!(null==N?void 0:N.isWrappedByNextServer),J=!!(0,n.getRequestMeta)(e,"minimalMode"),Y=(0,n.getRequestMeta)(e,"incrementalCache")||await R.getIncrementalCache(e,I,C,J);null==Y||Y.resetRequestCache(),globalThis.__incrementalCache=Y;let V={params:A,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!I.experimental.authInterrupts,useCacheTimeout:I.experimental.useCacheTimeout},cacheComponents:!!I.cacheComponents,validationLevel:I.experimental.instantInsights.validationLevel,isDraftMode:_,supportsDynamicResponse:U,incrementalCache:Y,hmrRefreshHash:(0,n.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:I.cacheLife,staticPageGenerationTimeout:I.staticPageGenerationTimeout,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>R.onRequestError(e,t,a,n,N)},sharedContext:{buildId:T,deploymentId:y}},X=new l.NodeNextRequest(e),z=new l.NodeNextResponse(t),Z=u.NextRequestAdapter.fromNodeNextRequest(X,(0,u.signalFromNodeResponse)(t)),Q=async({previousCacheEntry:r})=>{try{if(!J&&x&&O&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await R.handle(Z,V);e.fetchMetrics=V.renderOpts.fetchMetrics;let i=V.renderOpts.pendingWaitUntil;i&&a.waitUntil&&(a.waitUntil(i),i=void 0);let s=V.renderOpts.collectedTags;if(!L)return await (0,p.sendResponse)(X,z,n,i),null;{let e=await n.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(n.headers);s&&(t[m.NEXT_CACHE_TAGS_HEADER]=s),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==V.renderOpts.collectedRevalidate&&!(V.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&V.renderOpts.collectedRevalidate,a=void 0===V.renderOpts.collectedExpire||V.renderOpts.collectedExpire>=m.INFINITE_CACHE?!1!==r&&r>0?I.expireTime:void 0:V.renderOpts.collectedExpire;return{value:{kind:E.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await R.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:x})},!1,N),t}},W=async(n,s)=>{try{var o,l;let n=await R.handleResponse({req:e,nextConfig:I,cacheKey:H,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:x,revalidateOnlyGenerated:O,responseGenerator:Q,waitUntil:a.waitUntil,isMinimalMode:J});if(!L)return;if((null==n||null==(o=n.value)?void 0:o.kind)!==E.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==n||null==(l=n.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});J||t.setHeader("x-nextjs-cache",x?"REVALIDATED":n.isMiss?"MISS":n.isStale?"STALE":"HIT"),_&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let i=(0,g.fromNodeOutgoingHttpHeaders)(n.value.headers);J&&L||i.delete(m.NEXT_CACHE_TAGS_HEADER),!n.cacheControl||t.getHeader("Cache-Control")||i.get("Cache-Control")||i.set("Cache-Control",(0,h.getCacheControlHeader)(n.cacheControl)),await (0,p.sendResponse)(X,z,new Response(n.value.body,{headers:i,status:n.value.status||200}));return}catch(t){if(t instanceof f.NoFallbackError||await R.onRequestError(e,t,{routerKind:"App Router",routePath:k,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:x})},!1,N),L)throw t;await (0,p.sendResponse)(X,z,new Response(null,{status:500}));return}finally{(()=>{if(!n)return;let e=t.statusCode;n.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(n.setStatus({code:i.SpanStatusCode.ERROR}),n.setAttribute("error.type",e.toString()));let r=$.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route")||k,o=`${F} ${a}`;n.setAttributes({"next.route":a,"http.route":a,"next.span_name":o}),n.updateName(o),s&&s!==n&&(s.setAttribute("http.route",a),s.updateName(o))})()}};if(K&&B)await W(B,void 0);else{let t=$.getActiveScopeSpan();await $.withPropagatedContext(e.headers,()=>$.trace(d.BaseServerSpan.handleRequest,{spanName:`${F} ${v}`,kind:i.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},e=>W(e,t)),void 0,!K)}}e.s(["handler",0,y,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:v,workUnitAsyncStorage:S})},"routeModule",0,R,"serverHooks",0,T,"workAsyncStorage",0,v,"workUnitAsyncStorage",0,S])},39811,e=>{"use strict";var t=e.i(76025);e.s(["calculateGrade",0,function(e,r,a=new Date,n="en",i=t.DEFAULT_TIME_ZONE){let s=(0,t.getCalendarDate)(a,i),o=s.getFullYear(),l=s.getMonth()+1,u=o-r,d="2nd";l>=9?(u+=1,d="1st"):d=l<2?"1st":"2nd";let c="zh"===n,p=c?"1st"===d?"上期":"下期":"1st"===d?"1st Semester":"2nd Semester",g=(c?{primary:["一年级","二年级","三年级","四年级","五年级","六年级"],junior_high:["初一","初二","初三"],senior_high:["高一","高二","高三"],university:["大一","大二","大三","大四"]}:{primary:["Grade 1","Grade 2","Grade 3","Grade 4","Grade 5","Grade 6"],junior_high:["Junior High Grade 1","Junior High Grade 2","Junior High Grade 3"],senior_high:["Senior High Grade 1","Senior High Grade 2","Senior High Grade 3"],university:["Freshman","Sophomore","Junior","Senior"]})[e]||[],h=`${u}`;if(h=u>0&&u<=g.length?g[u-1]:u>g.length?c?"已毕业":"Graduated":c?"学前":"Pre-school",!c)return`${h}, ${p}`;{let e="1st"===d?"上":"下";return`${h}${e}`}}])},55920,e=>{"use strict";e.s(["getDefaultPaperLevel",0,function(e){return"number"!=typeof e||!Number.isInteger(e)||e<1||e>5?null:e<=3?"a":"b"}])},83918,e=>{"use strict";var t=e.i(98043),r=e.i(43911),a=e.i(59398),n=e.i(83508),i=e.i(39811),s=e.i(68426),o=e.i(50377),l=e.i(55920),u=e.i(98003),d=e.i(26828);let c=(0,o.createLogger)("retag");async function p(e,o){let l=await t.prisma.errorItem.findUnique({where:{id:e},select:{userId:!0,questionText:!0,answerText:!0,analysis:!0,gradeSemester:!0,paperLevel:!0,subject:{select:{name:!0,stage:!0,subjectKey:!0}},tags:{select:{id:!0,name:!0,isSystem:!0}},user:{select:{educationStage:!0,enrollmentYear:!0}}}});if(!l||l.userId!==o)throw Error("ITEM_NOT_FOUND");if(!l.questionText?.trim())throw Error("NO_QUESTION_TEXT");let d=l.subject?(0,s.resolveNotebookScope)(l.subject):null,c=d?.subject||"math",p=d?.subject?await (0,a.getScopeTagsFromDB)(d.subject,d.stage):await (0,a.getMathTagsFromDB)((0,n.calculateGradeNumber)(l.user.educationStage,l.user.enrollmentYear,(0,u.getAppTimeZone)()));if(0===p.length)throw Error("NO_AVAILABLE_TAGS");let g=l.gradeSemester||(l.user.educationStage&&l.user.enrollmentYear?(0,i.calculateGrade)(l.user.educationStage,l.user.enrollmentYear,new Date,"zh",(0,u.getAppTimeZone)()):null),{tags:h,difficultyStars:m}=await (0,r.getAIService)().suggestKnowledgeTags({questionText:l.questionText,answerText:l.answerText,analysis:l.analysis,subject:s.SUBJECT_DISPLAY_NAMES[c],allowedTags:p,gradeSemester:g});if(0===h.length)throw Error("NO_TAGS_SELECTED");let f=await t.prisma.knowledgeTag.findMany({where:{isSystem:!0,subject:c,name:{in:h}},select:{id:!0,name:!0}}),w=new Map;for(let e of f)w.has(e.name)||w.set(e.name,e.id);let E=h.filter(e=>w.has(e));return{tagNames:[...E,...l.tags.filter(e=>!e.isSystem).map(e=>e.name).filter(e=>!E.includes(e))],difficultyStars:m,paperLevel:l.paperLevel,newTagIds:E.map(e=>w.get(e)),oldSystemTags:l.tags.filter(e=>e.isSystem).map(({id:e,name:t})=>({id:e,name:t}))}}async function g(e,t){let{tagNames:r,difficultyStars:a}=await p(e,t);return{errorItemId:e,tags:r,difficultyStars:a}}async function h(e,r){let{tagNames:a,newTagIds:n,oldSystemTags:i,difficultyStars:s,paperLevel:o}=await p(e,r),u=o?null:(0,l.getDefaultPaperLevel)(s);return await t.prisma.errorItem.update({where:{id:e},data:{knowledgePoints:JSON.stringify(a),...null!==s?{difficultyStars:s}:{},...u?{paperLevel:u}:{},tags:{disconnect:i.map(e=>({id:e.id})),connect:n.map(e=>({id:e}))}}}),c.info({errorItemId:e,before:i.map(e=>e.name),after:a,difficultyStars:s},"Error item retagged"),{errorItemId:e,tags:a,difficultyStars:s}}let m=new Map,f=(e,t)=>`${e}:${t}`;async function w(e,r){let a=f(e,r),n=m.get(a);if(n?.running)return n;let i=await t.prisma.errorItem.findMany({where:{userId:e,subjectId:r},select:{id:!0},orderBy:{createdAt:"asc"}}),s={subjectId:r,total:i.length,done:0,failed:0,running:i.length>0,startedAt:new Date().toISOString(),finishedAt:i.length>0?null:new Date().toISOString()};m.set(a,s);let o=await t.prisma.subject.findUnique({where:{id:r},select:{name:!0}}),l=(0,d.startBackgroundTask)({userId:e,kind:"retag_notebook",subject:o?.name??null,link:`/notebooks/${r}`,total:i.length}),u=i.map(e=>e.id),p=async()=>{for(;u.length>0;){let t=u.shift();try{await h(t,e)}catch(e){s.failed++,c.warn({errorItemId:t,error:e instanceof Error?e.message:String(e)},"Retag failed")}finally{s.done++,l.setProgress(s.done,s.total,s.failed)}}};return Promise.all(Array.from({length:Math.min(2,u.length)},p)).finally(()=>{s.running=!1,s.finishedAt=new Date().toISOString(),s.total>0&&s.failed===s.total?l.fail("ALL_FAILED"):l.succeed(),c.info({subjectId:r,total:s.total,failed:s.failed},"Retag job finished")}),s}e.s(["getRetagJob",0,function(e,t){return m.get(f(e,t))??null},"previewRetagErrorItem",0,g,"retagErrorItem",0,h,"startRetagJob",0,w])}];
2
-
3
- //# sourceMappingURL=_0ae3z2e._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[75185,e=>e.a(async(t,r)=>{try{var a=e.i(58821),i=e.i(98043),n=e.i(63856),s=e.i(76759),o=e.i(50377),u=e.i(74866),l=t([n]);[n]=l.then?(await l)():l;let p=(0,o.createLogger)("api:exams:id");async function d(e,{params:t}){let{id:r}=await t;try{let e=await (0,n.getCurrentUser)();if(!e)return(0,s.unauthorized)("Authentication required");let t=await i.prisma.examPaper.findUnique({where:{id:r},include:{questions:{orderBy:{order:"asc"},include:{errorItem:{select:{id:!0,subject:{select:{name:!0}}}},practiceRecords:{orderBy:[{createdAt:"asc"},{id:"asc"}],select:{id:!0,result:!0,createdAt:!0}}}}}});if(!t||t.userId!==e.id)return(0,s.notFound)("Exam paper not found");"generating"!==t.status||(0,u.isPaperGenerating)(t.id)||(0,u.generateExamPaper)(t.id);let{userId:o,questions:l,...d}=t;return a.NextResponse.json({...d,questions:l.map(({errorItem:e,practiceRecords:t,...r})=>({...r,notebookName:e?.subject?.name??null,attempts:t}))})}catch(e){return p.error({error:e},"Error fetching exam paper"),(0,s.internalError)("Failed to fetch exam paper")}}async function c(e,{params:t}){let{id:r}=await t;try{let e=await (0,n.getCurrentUser)();if(!e)return(0,s.unauthorized)("Authentication required");let t=await i.prisma.examPaper.findUnique({where:{id:r},select:{userId:!0}});if(!t||t.userId!==e.id)return(0,s.notFound)("Exam paper not found");return await i.prisma.examPaper.delete({where:{id:r}}),a.NextResponse.json({success:!0})}catch(e){return p.error({error:e},"Error deleting exam paper"),(0,s.internalError)("Failed to delete exam paper")}}e.s(["DELETE",0,c,"GET",0,d]),r()}catch(e){r(e)}},!1),98057,e=>{"use strict";var t=e.i(47909),r=e.i(74017),a=e.i(96250),i=e.i(59756),n=e.i(61916),s=e.i(74677),o=e.i(69741),u=e.i(16795),l=e.i(87718),d=e.i(95169),c=e.i(47587),p=e.i(66012),m=e.i(70101),h=e.i(74838),g=e.i(10372),f=e.i(93695),w=e.i(9580);e.i(52474);var E=e.i(220);let x=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/exams/[id]/route",pathname:"/api/exams/[id]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/exams/[id]/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(75185),...{}}),{workAsyncStorage:R,workUnitAsyncStorage:y,serverHooks:I}=x;async function T(e,t,a){a.requestMeta&&(0,i.setRequestMeta)(e,a.requestMeta),x.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let R="/api/exams/[id]/route";R=R.replace(/\/index$/,"")||"/";let y=await x.prepare(e,t,{srcPage:R,multiZoneDraftMode:!1});if(!y)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:I,deploymentId:T,params:v,nextConfig:S,parsedUrl:A,isDraftMode:C,prerenderManifest:_,routerServerContext:q,isOnDemandRevalidate:P,revalidateOnlyGenerated:N,resolvedPathname:b,clientReferenceManifest:M,serverActionsManifest:U}=y,O=(0,o.normalizeAppPath)(R),k=!!_.routes[b]&&(x.isDev||(0,w.isRouteCacheOwner)(b,x.cacheOwner,_.routes[b])),D=!!(_.dynamicRoutes[O]||k),j=async()=>((null==q?void 0:q.render404)?await q.render404(e,t,A,!1):t.end("This page could not be found"),null);if(D&&!C){let e=_.dynamicRoutes[O];if(e&&!1===e.fallback&&!k){if(S.adapterPath)return await j();throw new f.NoFallbackError}}let L=null;!D||x.isDev||C||(L="/index"===(L=b)?"/":L);let H=!0===x.isDev||!D,Q=D&&!H;U&&M&&(0,s.setManifestsSingleton)({page:R,clientReferenceManifest:M,serverActionsManifest:U});let F=e.method||"GET",X=(0,n.getTracer)(),B=X.getActiveScopeSpan(),G=!!(null==q?void 0:q.isWrappedByNextServer),K=!!(0,i.getRequestMeta)(e,"minimalMode"),$=(0,i.getRequestMeta)(e,"incrementalCache")||await x.getIncrementalCache(e,S,_,K);null==$||$.resetRequestCache(),globalThis.__incrementalCache=$;let z={params:v,previewProps:_.preview,renderOpts:{experimental:{authInterrupts:!!S.experimental.authInterrupts,useCacheTimeout:S.experimental.useCacheTimeout},cacheComponents:!!S.cacheComponents,validationLevel:S.experimental.instantInsights.validationLevel,isDraftMode:C,supportsDynamicResponse:H,incrementalCache:$,hmrRefreshHash:(0,i.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:S.cacheLife,staticPageGenerationTimeout:S.staticPageGenerationTimeout,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,i)=>x.onRequestError(e,t,a,i,q)},sharedContext:{buildId:I,deploymentId:T}},V=new u.NodeNextRequest(e),W=new u.NodeNextResponse(t),J=l.NextRequestAdapter.fromNodeNextRequest(V,(0,l.signalFromNodeResponse)(t)),Y=async({previousCacheEntry:r})=>{try{if(!K&&P&&N&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await x.handle(J,z);e.fetchMetrics=z.renderOpts.fetchMetrics;let n=z.renderOpts.pendingWaitUntil;n&&a.waitUntil&&(a.waitUntil(n),n=void 0);let s=z.renderOpts.collectedTags;if(!D)return await (0,p.sendResponse)(V,W,i,n),null;{let e=await i.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(i.headers);s&&(t[g.NEXT_CACHE_TAGS_HEADER]=s),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==z.renderOpts.collectedRevalidate&&!(z.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&z.renderOpts.collectedRevalidate,a=void 0===z.renderOpts.collectedExpire||z.renderOpts.collectedExpire>=g.INFINITE_CACHE?!1!==r&&r>0?S.expireTime:void 0:z.renderOpts.collectedExpire;return{value:{kind:E.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await x.onRequestError(e,t,{routerKind:"App Router",routePath:R,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:Q,isOnDemandRevalidate:P})},!1,q),t}},Z=async(i,s)=>{try{var o,u;let i=await x.handleResponse({req:e,nextConfig:S,cacheKey:L,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:_,isRoutePPREnabled:!1,isOnDemandRevalidate:P,revalidateOnlyGenerated:N,responseGenerator:Y,waitUntil:a.waitUntil,isMinimalMode:K});if(!D)return;if((null==i||null==(o=i.value)?void 0:o.kind)!==E.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==i||null==(u=i.value)?void 0:u.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});K||t.setHeader("x-nextjs-cache",P?"REVALIDATED":i.isMiss?"MISS":i.isStale?"STALE":"HIT"),C&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let n=(0,m.fromNodeOutgoingHttpHeaders)(i.value.headers);K&&D||n.delete(g.NEXT_CACHE_TAGS_HEADER),!i.cacheControl||t.getHeader("Cache-Control")||n.get("Cache-Control")||n.set("Cache-Control",(0,h.getCacheControlHeader)(i.cacheControl)),await (0,p.sendResponse)(V,W,new Response(i.value.body,{headers:n,status:i.value.status||200}));return}catch(t){if(t instanceof f.NoFallbackError||await x.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:Q,isOnDemandRevalidate:P})},!1,q),D)throw t;await (0,p.sendResponse)(V,W,new Response(null,{status:500}));return}finally{(()=>{if(!i)return;let e=t.statusCode;i.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(i.setStatus({code:n.SpanStatusCode.ERROR}),i.setAttribute("error.type",e.toString()));let r=X.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route")||O,o=`${F} ${a}`;i.setAttributes({"next.route":a,"http.route":a,"next.span_name":o}),i.updateName(o),s&&s!==i&&(s.setAttribute("http.route",a),s.updateName(o))})()}};if(G&&B)await Z(B,void 0);else{let t=X.getActiveScopeSpan();await X.withPropagatedContext(e.headers,()=>X.trace(d.BaseServerSpan.handleRequest,{spanName:`${F} ${R}`,kind:n.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},e=>Z(e,t)),void 0,!G)}}e.s(["handler",0,T,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:R,workUnitAsyncStorage:y})},"routeModule",0,x,"serverHooks",0,I,"workAsyncStorage",0,R,"workUnitAsyncStorage",0,y])},74866,e=>{"use strict";var t=e.i(98043),r=e.i(43911),a=e.i(50377),i=e.i(26828),n=e.i(68426);let s=(0,a.createLogger)("exam"),o="least_practiced";function u(e,t,r=Math.random){let a=[...e];for(let e=a.length-1;e>0;e--){let t=Math.floor(r()*(e+1));[a[e],a[t]]=[a[t],a[e]]}return a.slice(0,t)}async function l(e,r){let a,i=(await t.prisma.errorItem.findMany({where:(a={userId:e,subjectId:{in:r.subjectIds},shortId:{not:null}},"unmastered"===r.scope?a.masteryLevel=0:"mastered"===r.scope&&(a.masteryLevel={gt:0}),r.tagNames&&r.tagNames.length>0&&(a.tags={some:{name:{in:r.tagNames}}}),a),select:{id:!0,shortId:!0,_count:{select:{practiceRecords:!0}}}})).map(({_count:e,...t})=>({...t,practiceCount:e.practiceRecords}));return(r.pickRule??o)==="random"?u(i,r.count):function(e,t,r=Math.random){return u(e,e.length,r).sort((e,t)=>e.practiceCount-t.practiceCount).slice(0,t)}(i,r.count)}function d(e){if(e.some(e=>"pending"===e))return"generating";let t=e.filter(e=>"ready"===e).length;return t===e.length?"ready":0===t?"failed":"partial"}function c(e){if(e.tags.length>0)return e.tags.map(e=>e.name);try{let t=JSON.parse(e.knowledgePoints||"[]");return Array.isArray(t)?t.filter(e=>"string"==typeof e):[]}catch{return[]}}async function p(e,a,i){let n=await t.prisma.examQuestion.findUnique({where:{id:e},select:{errorItem:{select:{questionText:!0,knowledgePoints:!0,gradeSemester:!0,figureSvg:!0,tags:{select:{name:!0}}}}}});if(!n?.errorItem)return void await t.prisma.examQuestion.update({where:{id:e},data:{status:"failed",error:"SOURCE_DELETED"}});try{let s=await (0,r.getAIService)().generateSimilarQuestion(n.errorItem.questionText||"",c(n.errorItem),i,a,n.errorItem.gradeSemester,n.errorItem.figureSvg);await t.prisma.examQuestion.update({where:{id:e},data:{status:"ready",questionText:s.questionText,answerText:s.answerText,analysis:s.analysis,figureSvg:s.figureSvg??null,error:null}})}catch(a){let r=a instanceof Error?a.message:String(a);s.warn({questionId:e,error:r},"Exam question generation failed"),await t.prisma.examQuestion.update({where:{id:e},data:{status:"failed",error:r.slice(0,200)}})}}let m=new Set;async function h(e,r="zh"){if(m.has(e))return;m.add(e);let a=null;try{let n=await t.prisma.examPaper.findUnique({where:{id:e},select:{userId:!0,title:!0,difficulty:!0,questions:{where:{status:{not:"ready"}},select:{id:!0}}}});if(!n)return;let s=n.questions.map(e=>e.id),o=s.length,u=0;o>0&&(a=(0,i.startBackgroundTask)({userId:n.userId,kind:"exam",subject:n.title,link:`/exams/${e}`,total:o})),s.length>0&&(await t.prisma.examQuestion.updateMany({where:{id:{in:s}},data:{status:"pending",error:null}}),await t.prisma.examPaper.update({where:{id:e},data:{status:"generating"}}));let l=async()=>{for(;s.length>0;)await p(s.shift(),n.difficulty,r),a?.setProgress(++u,o)};await Promise.all(Array.from({length:Math.min(3,s.length)},l));let c=await t.prisma.examQuestion.findMany({where:{paperId:e},select:{status:!0}}),m=d(c.map(e=>e.status));await t.prisma.examPaper.update({where:{id:e},data:{status:m}}),a?.setProgress(u,o,c.filter(e=>"failed"===e.status).length),"failed"===m?a?.fail("ALL_FAILED"):a?.succeed()}catch(t){s.error({paperId:e,error:t},"Exam paper generation failed"),a?.fail(t)}finally{m.delete(e)}}let g={status:!0,questionText:!0,answerText:!0,analysis:!0,figureSvg:!0,error:!0};async function f(e,a,o,u,l="zh"){let d=await t.prisma.examQuestion.findUnique({where:{id:a},select:{paperId:!0,status:!0,questionText:!0,paper:{select:{userId:!0,title:!0,difficulty:!0}},errorItem:{select:{questionText:!0,knowledgePoints:!0,gradeSemester:!0,figureSvg:!0,tags:{select:{name:!0}},subject:{select:{name:!0,stage:!0,subjectKey:!0}}}},_count:{select:{practiceRecords:!0}}}});if(!d||d.paperId!==e||d.paper.userId!==o)throw Error("EXAM_QUESTION_NOT_FOUND");if("pending"===d.status)throw Error("QUESTION_GENERATING");let p={userId:o,subject:d.paper.title,link:`/exams/${e}`};if("question"===u){if(d._count.practiceRecords>0)throw Error("HAS_RESULTS");let n=d.errorItem;if(!n)throw Error("SOURCE_DELETED");let s=await (0,i.trackBackgroundTask)({...p,kind:"exam"},()=>(0,r.getAIService)().generateSimilarQuestion(n.questionText||"",c(n),l,d.paper.difficulty,n.gradeSemester,n.figureSvg)),{count:o}=await t.prisma.examQuestion.updateMany({where:{id:a,practiceRecords:{none:{}}},data:{status:"ready",questionText:s.questionText,answerText:s.answerText,analysis:s.analysis,figureSvg:s.figureSvg??null,error:null}});if(0===o)throw Error("HAS_RESULTS");await w(e)}else{let e=d.questionText;if("ready"!==d.status||!e?.trim())throw Error("NO_QUESTION_TEXT");let s=d.errorItem?.subject?(0,n.resolveNotebookScope)(d.errorItem.subject):null,o=s?.subject?n.SUBJECT_DISPLAY_NAMES[s.subject]:null,u=await (0,i.trackBackgroundTask)({...p,kind:"reanswer"},()=>(0,r.getAIService)().reanswerQuestion(e,l,o,void 0,d.errorItem?.gradeSemester));if(!u.answerText.trim()&&!u.analysis.trim())throw Error("EMPTY_ANSWER");let c={answerText:u.answerText,analysis:u.analysis};await t.prisma.$transaction([t.prisma.examQuestion.update({where:{id:a},data:c}),t.prisma.practiceRecord.updateMany({where:{examQuestionId:a},data:c})])}let m=await t.prisma.examQuestion.findUnique({where:{id:a},select:g});return s.info({paperId:e,questionId:a,mode:u},"Exam question regenerated"),m}async function w(e){let r=await t.prisma.examQuestion.findMany({where:{paperId:e},select:{status:!0}});await t.prisma.examPaper.update({where:{id:e},data:{status:d(r.map(e=>e.status))}})}async function E(e,r,a,i){let n=await t.prisma.examPaper.findUnique({where:{id:e},select:{userId:!0,difficulty:!0,questions:{select:{id:!0,errorItemId:!0,questionText:!0,answerText:!0,analysis:!0,figureSvg:!0,errorItem:{select:{subject:{select:{name:!0}}}}}}}});if(!n||n.userId!==r)throw Error("EXAM_NOT_FOUND");let s=new Map(n.questions.map(e=>[e.id,e])),o=new Set;return await t.prisma.$transaction(async t=>{for(let{questionId:e,result:u}of i){let i=s.get(e);i?.errorItemId&&null!==u&&(await t.practiceRecord.create({data:{userId:r,errorItemId:i.errorItemId,examQuestionId:i.id,source:"exam",result:u,isCorrect:"correct"===u,createdAt:a,difficulty:n.difficulty,subject:i.errorItem?.subject?.name??null,questionText:i.questionText,answerText:i.answerText,analysis:i.analysis,figureSvg:i.figureSvg}}),o.add(i.errorItemId))}o.size>0&&await t.examPaper.update({where:{id:e},data:{resultsRecordedAt:new Date}})}),[...o]}e.s(["DEFAULT_EXAM_PICK_RULE",0,o,"EXAM_DIFFICULTIES",0,["easy","medium","hard","harder"],"EXAM_PICK_RULES",0,["least_practiced","random"],"EXAM_REGENERATE_MODES",0,["question","answer"],"EXAM_SCOPES",0,["unmastered","mastered","all"],"MAX_EXAM_QUESTIONS",0,50,"generateExamPaper",0,h,"isPaperGenerating",0,function(e){return m.has(e)},"recordExamResults",0,E,"regenerateExamQuestion",0,f,"selectSourceItems",0,l])}];
2
-
3
- //# sourceMappingURL=_0o1p57f._.js.map