@customize-agent/server 4.60.30 → 4.60.32

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 (175) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +285 -193
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/required-server-files.json +1 -1
  5. package/.next/routes-manifest.json +6 -0
  6. package/.next/server/chunks/1243.js +1 -1
  7. package/.next/server/chunks/6321.js +1 -1
  8. package/.next/server/chunks/6822.js +1 -1
  9. package/.next/server/chunks/{4722.js → 7848.js} +14 -14
  10. package/.next/server/chunks/8204.js +1 -1
  11. package/.next/server/chunks/9666.js +43 -42
  12. package/.next/server/instrumentation.js +1 -1
  13. package/.next/server/instrumentation.js.nft.json +1 -1
  14. package/.next/server/middleware-build-manifest.js +1 -1
  15. package/.next/server/pages/404.html +1 -1
  16. package/.next/server/pages/500.html +1 -1
  17. package/.next/server/pages/api/config/embedding/healthCheck.js +2 -1
  18. package/.next/server/pages/api/config/embedding.js +2 -1
  19. package/.next/server/pages/api/config/healthCheck.js +2 -1
  20. package/.next/server/pages/api/config/models.js +2 -1
  21. package/.next/server/pages/api/config/providers/[provider].js +2 -1
  22. package/.next/server/pages/api/config/providers.js +2 -1
  23. package/.next/server/pages/api/config/reset.js +3 -0
  24. package/.next/server/pages/api/config/reset.js.nft.json +1 -0
  25. package/.next/server/pages/api/config/web-access.js +2 -1
  26. package/.next/server/pages/api/documents/export.js +1 -1
  27. package/.next/server/pages/api/documents/generate/preview.js +1 -1
  28. package/.next/server/pages/api/documents/generate.js +1 -1
  29. package/.next/server/pages/api/health.js +1 -1
  30. package/.next/server/pages/api/kb/features.js +2 -1
  31. package/.next/server/pages/api/prompt/chat.js +3 -2
  32. package/.next/server/pages/api/system/reset.js +1 -1
  33. package/.next/server/pages/canvas/[id].html +1 -1
  34. package/.next/server/pages/canvas.html +1 -1
  35. package/.next/server/pages/documents.html +1 -1
  36. package/.next/server/pages/guide.html +1 -1
  37. package/.next/server/pages/index.html +1 -1
  38. package/.next/server/pages/jobs.html +1 -0
  39. package/.next/server/pages/jobs.js.nft.json +1 -0
  40. package/.next/server/pages/knowledge/file-detail.html +1 -1
  41. package/.next/server/pages/knowledge/files.html +1 -1
  42. package/.next/server/pages/knowledge/manage.html +1 -1
  43. package/.next/server/pages/knowledge/source-preview.html +1 -1
  44. package/.next/server/pages/knowledge.html +1 -1
  45. package/.next/server/pages/models.html +1 -1
  46. package/.next/server/pages/overview.html +1 -1
  47. package/.next/server/pages/prompt.html +1 -1
  48. package/.next/server/pages/settings.html +1 -1
  49. package/.next/server/pages/skills/[id]/edit.html +1 -1
  50. package/.next/server/pages/skills/[id]/edit.js.nft.json +1 -1
  51. package/.next/server/pages/skills/[id].html +1 -1
  52. package/.next/server/pages/skills/[id].js.nft.json +1 -1
  53. package/.next/server/pages/skills/new.html +1 -1
  54. package/.next/server/pages/skills/new.js.nft.json +1 -1
  55. package/.next/server/pages/skills.html +1 -1
  56. package/.next/server/pages/system/logs.html +1 -1
  57. package/.next/server/pages-manifest.json +39 -37
  58. package/.next/static/279fd5e41d98af82751903f8ea0267af84a75c794a35915a6e294777024190f8/_buildManifest.js +1 -0
  59. package/.next/static/chunks/1141-d420a7685bc3623c.js +1 -0
  60. package/.next/static/chunks/1210-703ad87eaeee1e4e.js +15 -0
  61. package/.next/static/chunks/1499-ff8f02f6bb6f3d45.js +10 -0
  62. package/.next/static/chunks/1702-f5e99af7aface475.js +1 -0
  63. package/.next/static/chunks/2864-b040f2bffa08c139.js +6 -0
  64. package/.next/static/chunks/3456-70bb03a39473f693.js +1 -0
  65. package/.next/static/chunks/3980-73841c40d55ddfa1.js +1 -0
  66. package/.next/static/chunks/4052-199e61ca9e6a33e7.js +1 -0
  67. package/.next/static/chunks/4337-a670a1a94ab505d9.js +1 -0
  68. package/.next/static/chunks/4530-e73bdd645bb7a953.js +1 -0
  69. package/.next/static/chunks/4565-3c5ff667062ccec9.js +21 -0
  70. package/.next/static/chunks/4665-1984a3d8b0573fa1.js +1 -0
  71. package/.next/static/chunks/5061-80765d4a612286e0.js +1 -0
  72. package/.next/static/chunks/5544-d77b8289662b4c28.js +4 -0
  73. package/.next/static/chunks/5760-f4191aac081b12d4.js +11 -0
  74. package/.next/static/chunks/6409-5a3bb0fbad4f64b1.js +14 -0
  75. package/.next/static/chunks/6506-ac0ba7338cc84b7d.js +1 -0
  76. package/.next/static/chunks/6748-07b0b05bf03c72f0.js +1 -0
  77. package/.next/static/chunks/7217-416b8488e0d2d498.js +1 -0
  78. package/.next/static/chunks/7576-ba6fc03060415b0e.js +1 -0
  79. package/.next/static/chunks/7646-159733564c7eb8dc.js +1 -0
  80. package/.next/static/chunks/7795-c11ff1a81c67c5aa.js +1 -0
  81. package/.next/static/chunks/8318-cb3a94de1617f983.js +1 -0
  82. package/.next/static/chunks/8338-b2ea00050048ba9f.js +4 -0
  83. package/.next/static/chunks/8399-a001bb2a0cb1640b.js +16 -0
  84. package/.next/static/chunks/8564-ac3e2f1bf87765b3.js +1 -0
  85. package/.next/static/chunks/8569-1d5c61a3f4fa0e26.js +16 -0
  86. package/.next/static/chunks/8715-ee013bd7f5ba38e8.js +1 -0
  87. package/.next/static/chunks/8750-a3c55a576effb3a6.js +1 -0
  88. package/.next/static/chunks/{787-207289f4bb577708.js → 8787-49b1f35eb4acfac9.js} +1 -1
  89. package/.next/static/chunks/{964-82cc4701f08f7351.js → 8964-e959915ecfae86b2.js} +1 -1
  90. package/.next/static/chunks/9551-f4b09bf2213ad571.js +16 -0
  91. package/.next/static/chunks/9605-3dee531f8a7ecbe0.js +4 -0
  92. package/.next/static/chunks/9937-e4b2deadd24e3962.js +1 -0
  93. package/.next/static/chunks/framework-9cde5013cd555765.js +1 -0
  94. package/.next/static/chunks/main-b313efde54fa6d2e.js +1 -0
  95. package/.next/static/chunks/pages/_app-646f249ed0cc363f.js +140 -0
  96. package/.next/static/chunks/pages/_error-c01b6fb772028676.js +1 -0
  97. package/.next/static/chunks/pages/canvas/[id]-18865f1b7e3a4696.js +1 -0
  98. package/.next/static/chunks/pages/canvas-47a86f1679c159af.js +1 -0
  99. package/.next/static/chunks/pages/documents-a1af5c6be26daed2.js +1 -0
  100. package/.next/static/chunks/pages/guide-fdf0822dc1d28813.js +1 -0
  101. package/.next/static/chunks/pages/index-c572e9caa60cb278.js +1 -0
  102. package/.next/static/chunks/pages/jobs-ebd1877dbf788a83.js +1 -0
  103. package/.next/static/chunks/pages/knowledge/file-detail-3d1ffd43f4f0e47b.js +1 -0
  104. package/.next/static/chunks/pages/knowledge/files-b796702bb5f8ac50.js +1 -0
  105. package/.next/static/chunks/pages/knowledge/manage-6d7b21cdca1255f2.js +1 -0
  106. package/.next/static/chunks/pages/knowledge/{source-preview-814c683fc3723177.js → source-preview-24936b9a746ed07f.js} +1 -1
  107. package/.next/static/chunks/pages/knowledge-2a776c1740386874.js +1 -0
  108. package/.next/static/chunks/pages/models-e679c45d71631078.js +1 -0
  109. package/.next/static/chunks/pages/overview-7e8018014009682e.js +1 -0
  110. package/.next/static/chunks/pages/prompt-11f87694feb6514c.js +1 -0
  111. package/.next/static/chunks/pages/settings-e8dcaba1551a0b2b.js +1 -0
  112. package/.next/static/chunks/pages/skills/[id]/edit-99e616d5019e80b1.js +1 -0
  113. package/.next/static/chunks/pages/skills/[id]-71f696be252bbf0d.js +1 -0
  114. package/.next/static/chunks/pages/skills/new-00886ea4c676f927.js +1 -0
  115. package/.next/static/chunks/pages/skills-8ad2577b4aa17f3b.js +1 -0
  116. package/.next/static/chunks/pages/system/logs-0856f7c65432befb.js +1 -0
  117. package/.next/static/chunks/{webpack-6224d37324e372cb.js → webpack-2da1769ff35eb1ed.js} +1 -1
  118. package/.next/static/css/808682ca3875966b.css +1 -0
  119. package/messages/en-US.json +35 -1
  120. package/messages/zh-CN.json +35 -1
  121. package/package.json +3 -3
  122. package/scripts/brand-moon-fit.cjs +0 -47
  123. package/scripts/generate-brand-assets.cjs +0 -41
  124. package/scripts/half-built-scan.allow.json +16 -6
  125. package/scripts/half-built-scan.baseline.json +2 -17
  126. package/scripts/half-built-scan.mjs +1 -84
  127. package/.next/server/chunks/6021.js +0 -1
  128. package/.next/static/chunks/127-7d37d37dab02bd10.js +0 -1
  129. package/.next/static/chunks/162-36b2a3e6ee7d9717.js +0 -8
  130. package/.next/static/chunks/257-879f095890deadad.js +0 -1
  131. package/.next/static/chunks/313-4b3ff7075e0ff3c3.js +0 -1
  132. package/.next/static/chunks/318-ca122b774ea4ee84.js +0 -1
  133. package/.next/static/chunks/338-19ccbaec57a7bf9c.js +0 -4
  134. package/.next/static/chunks/499-2233cadc6d4da647.js +0 -10
  135. package/.next/static/chunks/530-98c3b3fbf3fcd8e3.js +0 -1
  136. package/.next/static/chunks/551-446a9d48add4944f.js +0 -16
  137. package/.next/static/chunks/569-2bfdde9e402af5b2.js +0 -16
  138. package/.next/static/chunks/576-6699fed6c88502fe.js +0 -1
  139. package/.next/static/chunks/579-fc0a2eb64aedb001.js +0 -1
  140. package/.next/static/chunks/665-0634aa49137defc4.js +0 -1
  141. package/.next/static/chunks/711-40c1a2dbd15c2807.js +0 -21
  142. package/.next/static/chunks/715-6285c5942e5ec5ea.js +0 -1
  143. package/.next/static/chunks/717-743b697a417dd5ee.js +0 -4
  144. package/.next/static/chunks/748-e13db510f76568b1.js +0 -1
  145. package/.next/static/chunks/795-3edd02531a6d39ae.js +0 -1
  146. package/.next/static/chunks/808-0506edc7454b5c0e.js +0 -1
  147. package/.next/static/chunks/864-b06700e1a4e573f2.js +0 -6
  148. package/.next/static/chunks/880-64d8a15c524106d2.js +0 -1
  149. package/.next/static/chunks/955-f0542d4dea118b62.js +0 -1
  150. package/.next/static/chunks/framework-4b565b3ddc94cdac.js +0 -1
  151. package/.next/static/chunks/main-0c91f573696223ca.js +0 -1
  152. package/.next/static/chunks/pages/_app-5f5b2094ef219088.js +0 -185
  153. package/.next/static/chunks/pages/_error-282257fbdcc167b4.js +0 -1
  154. package/.next/static/chunks/pages/canvas/[id]-792d02e3874c19c0.js +0 -1
  155. package/.next/static/chunks/pages/canvas-e011bb88585d3441.js +0 -1
  156. package/.next/static/chunks/pages/documents-e6a80f2de39c6fd2.js +0 -1
  157. package/.next/static/chunks/pages/guide-3185f12fbcb5a6af.js +0 -1
  158. package/.next/static/chunks/pages/index-cb27bfa36c212ab5.js +0 -1
  159. package/.next/static/chunks/pages/knowledge/file-detail-c34e1f995fb8316f.js +0 -1
  160. package/.next/static/chunks/pages/knowledge/files-b3ef5324e4b74c4a.js +0 -1
  161. package/.next/static/chunks/pages/knowledge/manage-d9eaebf3a8307953.js +0 -1
  162. package/.next/static/chunks/pages/knowledge-3afd4bc337d44550.js +0 -1
  163. package/.next/static/chunks/pages/models-e07b2e29595effd7.js +0 -1
  164. package/.next/static/chunks/pages/overview-8713b5d37af0eeb3.js +0 -1
  165. package/.next/static/chunks/pages/prompt-47a1ac955831dedb.js +0 -1
  166. package/.next/static/chunks/pages/settings-8879d8c90bee2025.js +0 -1
  167. package/.next/static/chunks/pages/skills/[id]/edit-88e2490a4190467b.js +0 -1
  168. package/.next/static/chunks/pages/skills/[id]-4700cd743c5efe05.js +0 -1
  169. package/.next/static/chunks/pages/skills/new-b2204742b055565a.js +0 -1
  170. package/.next/static/chunks/pages/skills-1f6bcb42cd90abeb.js +0 -1
  171. package/.next/static/chunks/pages/system/logs-8c5dd4d06fa9d8c9.js +0 -1
  172. package/.next/static/css/cb79b8022e718258.css +0 -1
  173. package/.next/static/e20217fc48f7d7bdc8b62a7ec3647e78e1695668d237c7e44f973da8621a5ece/_buildManifest.js +0 -1
  174. package/scripts/capture-baseline.mjs +0 -353
  175. /package/.next/static/{e20217fc48f7d7bdc8b62a7ec3647e78e1695668d237c7e44f973da8621a5ece → 279fd5e41d98af82751903f8ea0267af84a75c794a35915a6e294777024190f8}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" data-next-head=""/><link rel="icon" type="image/svg+xml" href="/favicon.svg" data-next-head=""/><link rel="icon" href="/favicon.ico" sizes="any" data-next-head=""/><link rel="apple-touch-icon" href="/apple-touch-icon.png" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><link rel="preload" href="/_next/static/css/cb79b8022e718258.css" as="style"/><link rel="stylesheet" href="/_next/static/css/cb79b8022e718258.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-6224d37324e372cb.js" defer=""></script><script src="/_next/static/chunks/framework-4b565b3ddc94cdac.js" defer=""></script><script src="/_next/static/chunks/main-0c91f573696223ca.js" defer=""></script><script src="/_next/static/chunks/pages/_app-5f5b2094ef219088.js" defer=""></script><script src="/_next/static/chunks/pages/_error-282257fbdcc167b4.js" defer=""></script><script src="/_next/static/e20217fc48f7d7bdc8b62a7ec3647e78e1695668d237c7e44f973da8621a5ece/_buildManifest.js" defer=""></script><script src="/_next/static/e20217fc48f7d7bdc8b62a7ec3647e78e1695668d237c7e44f973da8621a5ece/_ssgManifest.js" defer=""></script></head><body><div id="__next"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div class="css-1pi45l5 ant-app css-var-_R_56_"><aside class="sidebar sidebarCollapsedSelf"><div class="sidebarLogoRow"><a class="min-w-0 flex-1" href="/overview"><div class="sidebarLogo"><div class="w-8 h-8 rounded-lg bg-black dark:bg-white flex items-center justify-center shrink-0"><svg width="26" height="26" viewBox="0 0 24 24" class="text-white dark:text-black" aria-hidden="true" focusable="false"><g transform="translate(12.2475 11.7525) scale(1.0500) translate(0.9636 0.0000) rotate(5.00)"><path d="M8.561 5.168 A10 10 0 1 1 1.544 -9.880 A8.5 8.5 0 1 0 8.561 5.168 Z" fill="currentColor"></path></g></svg></div><div class="sidebarLogoTitle"><span class="logoGradient">Customize Agent</span></div></div></a></div><nav class="sidebarNav mt-2"><a href="/overview"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-layout-dashboard"><rect width="7" height="9" x="3" y="3" rx="1"></rect><rect width="7" height="5" x="14" y="3" rx="1"></rect><rect width="7" height="9" x="14" y="12" rx="1"></rect><rect width="7" height="5" x="3" y="16" rx="1"></rect></svg><span class="sidebarLabel">总览</span></div></a><a href="/knowledge"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-database"><ellipse cx="12" cy="5" rx="9" ry="3"></ellipse><path d="M3 5V19A9 3 0 0 0 21 19V5"></path><path d="M3 12A9 3 0 0 0 21 12"></path></svg><span class="sidebarLabel">知识库</span></div></a><a href="/models"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cpu"><rect width="16" height="16" x="4" y="4" rx="2"></rect><rect width="6" height="6" x="9" y="9" rx="1"></rect><path d="M15 2v2"></path><path d="M15 20v2"></path><path d="M2 15h2"></path><path d="M2 9h2"></path><path d="M20 15h2"></path><path d="M20 9h2"></path><path d="M9 2v2"></path><path d="M9 20v2"></path></svg><span class="sidebarLabel">模型配置</span></div></a><a href="/prompt"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg><span class="sidebarLabel">提示词管理</span></div></a><a href="/skills"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield-check"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path><path d="m9 12 2 2 4-4"></path></svg><span class="sidebarLabel">技能库</span></div></a><a href="/canvas"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-network"><rect x="16" y="16" width="6" height="6" rx="1"></rect><rect x="2" y="16" width="6" height="6" rx="1"></rect><rect x="9" y="2" width="6" height="6" rx="1"></rect><path d="M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3"></path><path d="M12 12V8"></path></svg><span class="sidebarLabel">生成画布</span></div></a><a href="/guide"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-book-open"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path></svg><span class="sidebarLabel">指引</span></div></a><a href="/settings"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"></path><circle cx="12" cy="12" r="3"></circle></svg><span class="sidebarLabel">设置</span></div></a></nav></aside><div class="mainContent"><header class="topbar"><div class="flex-1"></div><span class="ant-badge css-1pi45l5 css-var-_R_56_"><button type="button" class="ant-btn css-1pi45l5 css-var-_R_56_ ant-btn-default ant-btn-color-default ant-btn-variant-outlined topbarBtn"><span class="ant-btn-icon"><span role="img" aria-label="clock-circle" class="anticon anticon-clock-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="clock-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path><path d="M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z"></path></svg></span></span><span>后台任务</span></button></span><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg><span>深色</span></button><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-languages"><path d="m5 8 6 6"></path><path d="m4 14 6-6 2-3"></path><path d="M2 5h12"></path><path d="M7 2h1"></path><path d="m22 22-5-10-5 10"></path><path d="M14 18h6"></path></svg><span>English</span></button></header><main class="mainInner"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"e20217fc48f7d7bdc8b62a7ec3647e78e1695668d237c7e44f973da8621a5ece","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" data-next-head=""/><link rel="icon" type="image/svg+xml" href="/favicon.svg" data-next-head=""/><link rel="icon" href="/favicon.ico" sizes="any" data-next-head=""/><link rel="apple-touch-icon" href="/apple-touch-icon.png" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><link rel="preload" href="/_next/static/css/808682ca3875966b.css" as="style"/><link rel="stylesheet" href="/_next/static/css/808682ca3875966b.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-2da1769ff35eb1ed.js" defer=""></script><script src="/_next/static/chunks/framework-9cde5013cd555765.js" defer=""></script><script src="/_next/static/chunks/main-b313efde54fa6d2e.js" defer=""></script><script src="/_next/static/chunks/pages/_app-646f249ed0cc363f.js" defer=""></script><script src="/_next/static/chunks/pages/_error-c01b6fb772028676.js" defer=""></script><script src="/_next/static/279fd5e41d98af82751903f8ea0267af84a75c794a35915a6e294777024190f8/_buildManifest.js" defer=""></script><script src="/_next/static/279fd5e41d98af82751903f8ea0267af84a75c794a35915a6e294777024190f8/_ssgManifest.js" defer=""></script></head><body><div id="__next"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div class="css-1pi45l5 ant-app css-var-_R_56_"><aside class="sidebar sidebarCollapsedSelf"><div class="sidebarLogoRow"><a class="min-w-0 flex-1" href="/overview"><div class="sidebarLogo"><div class="w-8 h-8 rounded-lg bg-black dark:bg-white flex items-center justify-center shrink-0"><svg width="26" height="26" viewBox="0 0 24 24" class="text-white dark:text-black" aria-hidden="true" focusable="false"><g transform="translate(12.2475 11.7525) scale(1.0500) translate(0.9636 0.0000) rotate(5.00)"><path d="M8.561 5.168 A10 10 0 1 1 1.544 -9.880 A8.5 8.5 0 1 0 8.561 5.168 Z" fill="currentColor"></path></g></svg></div><div class="sidebarLogoTitle"><span class="logoGradient">Customize Agent</span></div></div></a></div><nav class="sidebarNav mt-2"><a href="/overview"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-layout-dashboard"><rect width="7" height="9" x="3" y="3" rx="1"></rect><rect width="7" height="5" x="14" y="3" rx="1"></rect><rect width="7" height="9" x="14" y="12" rx="1"></rect><rect width="7" height="5" x="3" y="16" rx="1"></rect></svg><span class="sidebarLabel">总览</span></div></a><a href="/knowledge"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-database"><ellipse cx="12" cy="5" rx="9" ry="3"></ellipse><path d="M3 5V19A9 3 0 0 0 21 19V5"></path><path d="M3 12A9 3 0 0 0 21 12"></path></svg><span class="sidebarLabel">知识库</span></div></a><a href="/models"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cpu"><rect width="16" height="16" x="4" y="4" rx="2"></rect><rect width="6" height="6" x="9" y="9" rx="1"></rect><path d="M15 2v2"></path><path d="M15 20v2"></path><path d="M2 15h2"></path><path d="M2 9h2"></path><path d="M20 15h2"></path><path d="M20 9h2"></path><path d="M9 2v2"></path><path d="M9 20v2"></path></svg><span class="sidebarLabel">模型配置</span></div></a><a href="/prompt"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg><span class="sidebarLabel">提示词管理</span></div></a><a href="/skills"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield-check"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path><path d="m9 12 2 2 4-4"></path></svg><span class="sidebarLabel">技能库</span></div></a><a href="/canvas"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-network"><rect x="16" y="16" width="6" height="6" rx="1"></rect><rect x="2" y="16" width="6" height="6" rx="1"></rect><rect x="9" y="2" width="6" height="6" rx="1"></rect><path d="M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3"></path><path d="M12 12V8"></path></svg><span class="sidebarLabel">生成画布</span></div></a><a href="/guide"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-book-open"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path></svg><span class="sidebarLabel">指引</span></div></a><a href="/settings"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"></path><circle cx="12" cy="12" r="3"></circle></svg><span class="sidebarLabel">设置</span></div></a></nav></aside><div class="mainContent"><header class="topbar"><div class="flex-1"></div><a class="shrink-0" href="/jobs"><span class="ant-badge css-1pi45l5 css-var-_R_56_"><button type="button" class="ant-btn css-1pi45l5 css-var-_R_56_ ant-btn-default ant-btn-color-default ant-btn-variant-outlined topbarBtn"><span class="ant-btn-icon"><span role="img" aria-label="clock-circle" class="anticon anticon-clock-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="clock-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path><path d="M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z"></path></svg></span></span><span>后台任务</span></button></span></a><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg><span>深色</span></button><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-languages"><path d="m5 8 6 6"></path><path d="m4 14 6-6 2-3"></path><path d="M2 5h12"></path><path d="M7 2h1"></path><path d="m22 22-5-10-5 10"></path><path d="M14 18h6"></path></svg><span>English</span></button></header><main class="mainInner"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"279fd5e41d98af82751903f8ea0267af84a75c794a35915a6e294777024190f8","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
@@ -1,2 +1,3 @@
1
1
  "use strict";(()=>{var a={};a.id=1316,a.ids=[1316],a.modules={191:(a,b,c)=>{c.d(b,{cW:()=>p,hH:()=>q,mG:()=>t,wF:()=>o});var d=c(51342),e=c(29021),f=c.n(e),g=c(33873),h=c.n(g),i=c(55511),j=c.n(i);let k=h().join((0,d.J0)(),"logs"),l=h().join(k,"errors.jsonl"),m="errors-";function n(){try{return f().readdirSync(k).filter(a=>a.startsWith(m)&&a.endsWith(".jsonl")).sort().reverse()}catch{return[]}}function o(a){let{message:b,stack:c}=function(a){if(a instanceof Error)return{message:a.message,stack:a.stack};if("string"==typeof a)return{message:a};try{return{message:JSON.stringify(a)}}catch{return{message:String(a)}}}(a.error),d={id:`err_${Date.now()}_${j().randomBytes(4).toString("hex")}`,level:a.level||"error",source:a.source,functionName:a.functionName,message:b,stack:c,request:a.req?{method:a.req.method,url:a.req.url,query:a.req.query}:void 0,meta:a.meta,createdAt:Date.now()};try{f().mkdirSync(k,{recursive:!0}),function(){try{if(f().statSync(l).size<=2097152)return;f().renameSync(l,h().join(k,`${m}${Date.now()}.jsonl`)),function(){for(let a of n().slice(20))try{f().rmSync(h().join(k,a),{force:!0})}catch{}}()}catch{}}(),f().appendFileSync(l,`${JSON.stringify(d)}
2
- `)}catch(a){console.error("[errorLogService] failed to write error log",a)}return d}function p(a=200){let b=[l,...n().map(a=>h().join(k,a))],c=[];for(let d of b){if(c.length>=a)break;for(let b of(function(a){try{return f().readFileSync(a,"utf8").split("\n").filter(Boolean).flatMap(a=>{try{return[JSON.parse(a)]}catch{return[]}})}catch{return[]}})(d).reverse())if(c.push(b),c.length>=a)break}return c}function q(){let a=0;if(f().existsSync(l))try{f().rmSync(l,{force:!0}),a++}catch{}for(let b of n())try{f().rmSync(h().join(k,b),{force:!0}),a++}catch{}return a}let r=!1;function s(a,b,c,d=20){let e=0,f=0;return g=>{try{b(g);let h=Date.now();h-e>6e4&&(e=h,f=0),f<d&&(f+=1,c(a,g))}catch{}}}function t(){r||(r=!0,process.on("uncaughtException",s("uncaughtException",a=>o({source:"process",functionName:"uncaughtException",error:a}),(a,b)=>console.error(`[process] ${a}`,b))),process.on("unhandledRejection",s("unhandledRejection",a=>o({source:"process",functionName:"unhandledRejection",error:a}),(a,b)=>console.error(`[process] ${a}`,b))))}},16006:(a,b,c)=>{c.d(b,{j:()=>f});var d=c(191),e=c(47774);function f(a,b){return async function(c,f){let g=async()=>{try{await b(c,f)}catch(h){if(h instanceof e.Bc){f.headersSent||f.status(503).json({error:h.message});return}let g=(0,d.wF)({source:a,functionName:b.name||"anonymous",error:h,req:c});console.error(`[${a}]`,g.id,h),f.headersSent||f.status(500).json({error:h instanceof Error?h.message:"Internal server error",requestId:g.id})}};if("api/system/reset"===a||a.startsWith("api/health"))return void await g();try{await (0,e.i0)(g)}catch(a){if(a instanceof e.Bc&&!f.headersSent)f.status(503).json({error:a.message});else throw a}}}(0,d.mG)()},19898:a=>{a.exports=require("@customize-agent/knowledge")},29021:a=>{a.exports=require("fs")},29281:(a,b,c)=>{c.d(b,{I:()=>i,R:()=>j});var d=c(96770),e=c(51342),f=c(47774);let g=globalThis,h=g.__customizeConfigStores??=new Map;function i(){(0,f.jF)();let a=(0,e.J0)();return h.has(a)||h.set(a,new d.ConfigStore(a)),h.get(a)}function j(){h.clear()}},33873:a=>{a.exports=require("path")},47774:(a,b,c)=>{c.d(b,{Bc:()=>g,b:()=>h,i0:()=>j,jF:()=>i,jp:()=>k,mh:()=>l,wx:()=>m});let d=globalThis,e=d.__customizeStorageMaintenance??={active:!1},f=d.__customizeStorageApiWriters??=new Set;class g extends Error{constructor(){super("系统清空正在执行,暂不接收新的存储访问"),this.name="StorageMaintenanceError"}}function h(){return e.active}function i(){if(e.active)throw new g}async function j(a){i();let b=Promise.resolve(a());f.add(b);try{return await b}finally{f.delete(b)}}function k(){return[...f]}function l(){if(e.active)throw Error("已有系统清空任务正在执行");e.active=!0;let a=!1;return()=>{a||(a=!0,e.active=!1)}}async function m(a,b=1e4){let c;if(!a.length)return!0;try{return await Promise.race([Promise.allSettled(a).then(()=>!0),new Promise(a=>{c=setTimeout(()=>a(!1),b)})])}finally{c&&clearTimeout(c)}}},48161:a=>{a.exports=require("node:os")},51342:(a,b,c)=>{c.d(b,{Bn:()=>k,J0:()=>h});var d=c(73024),e=c(48161),f=c(96770),g=c(76760);function h(){return(0,f.resolveAgentStorageRoot)(process.env.CUSTOMIZE_AGENT_HOME?.trim()||e.homedir())}function i(){return g.join(h(),"state.json")}function j(){try{let a=JSON.parse(d.readFileSync(i(),"utf8")),b=a?.firstStartedAt;return"number"==typeof b&&Number.isFinite(b)&&b>0?{firstStartedAt:b}:null}catch{return null}}function k(a=Date.now()){return Math.max(0,Math.round((a-function(a=Date.now()){let b=j();if(b)return b.firstStartedAt;try{let b=i();d.mkdirSync(g.dirname(b),{recursive:!0});let c=`${b}.${process.pid}.${Date.now()}.tmp`;return d.writeFileSync(c,JSON.stringify({firstStartedAt:a}),"utf8"),d.renameSync(c,b),a}catch{return j()?.firstStartedAt??a}}(a))/1e3))}},55511:a=>{a.exports=require("crypto")},73024:a=>{a.exports=require("node:fs")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:a=>{a.exports=require("node:path")},88341:(a,b,c)=>{c.r(b),c.d(b,{config:()=>q,default:()=>p,handler:()=>s});var d={};c.r(d),c.d(d,{default:()=>m});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(16006),j=c(29281),k=c(19898);async function l(a,b){if("POST"!==a.method)return b.status(405).json({error:"Method not allowed"});let c=Date.now();try{let a=(0,j.I)().getEmbedding();if("transformers-local"===a.provider){let d=new k.LocalTransformersEmbeddingProvider({model:a.model,dimensions:a.dimensions}),e=await d.embedQuery("ping");return b.status(200).json({success:e.length>0,message:e.length>0?"本地语义 Embedding 可用":"返回向量为空",latencyMs:Date.now()-c})}if(!a.baseUrl||!a.model)return b.status(200).json({success:!1,message:"Embedding baseUrl/model 未配置",latencyMs:Date.now()-c});let d=await fetch(`${a.baseUrl.replace(/\/+$/u,"")}/embeddings`,{method:"POST",headers:{"Content-Type":"application/json",...a.apiKey?{Authorization:`Bearer ${a.apiKey}`}:{}},body:JSON.stringify({model:a.model,input:["ping"]})});if(!d.ok)return b.status(200).json({success:!1,message:`HTTP ${d.status}`,latencyMs:Date.now()-c});let e=await d.json(),f=e.data?.[0]?.embedding;return b.status(200).json({success:Array.isArray(f)&&f.length>0,message:Array.isArray(f)&&f.length>0?"连接成功":"返回向量为空",latencyMs:Date.now()-c})}catch(a){return console.error("[api] config/embedding/healthCheck",a),b.status(200).json({success:!1,message:"Health check failed",latencyMs:Date.now()-c})}}let m=(0,i.j)("api/config/embedding/healthCheck",l);var n=c(68970),o=c(50296);let p=(0,h.M)(d,"default"),q=(0,h.M)(d,"config"),r=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/config/embedding/healthCheck",pathname:"/api/config/embedding/healthCheck",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function s(a,b,c){let d=await r.prepare(a,b,{srcPage:"/api/config/embedding/healthCheck"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,n.getTracer)(),e=d.getActiveScopeSpan(),j=r.instrumentationOnRequestError.bind(r),k=async e=>r.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:r.isDev,page:"/api/config/embedding/healthCheck",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>j(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==o.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await k(e):await d.withPropagatedContext(a.headers,()=>d.trace(o.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:n.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(r.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},96770:a=>{a.exports=require("@customize-agent/runtime")}};var b=require("../../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705],()=>b(b.s=88341));module.exports=c})();
2
+ `)}catch(a){console.error("[errorLogService] failed to write error log",a)}return d}function p(a=200){let b=[l,...n().map(a=>h().join(k,a))],c=[];for(let d of b){if(c.length>=a)break;for(let b of(function(a){try{return f().readFileSync(a,"utf8").split("\n").filter(Boolean).flatMap(a=>{try{return[JSON.parse(a)]}catch{return[]}})}catch{return[]}})(d).reverse())if(c.push(b),c.length>=a)break}return c}function q(){let a=0;if(f().existsSync(l))try{f().rmSync(l,{force:!0}),a++}catch{}for(let b of n())try{f().rmSync(h().join(k,b),{force:!0}),a++}catch{}return a}let r=!1;function s(a,b,c,d=20){let e=0,f=0;return g=>{try{b(g);let h=Date.now();h-e>6e4&&(e=h,f=0),f<d&&(f+=1,c(a,g))}catch{}}}function t(){r||(r=!0,process.on("uncaughtException",s("uncaughtException",a=>o({source:"process",functionName:"uncaughtException",error:a}),(a,b)=>console.error(`[process] ${a}`,b))),process.on("unhandledRejection",s("unhandledRejection",a=>o({source:"process",functionName:"unhandledRejection",error:a}),(a,b)=>console.error(`[process] ${a}`,b))))}},16006:(a,b,c)=>{c.d(b,{j:()=>f});var d=c(191),e=c(47774);function f(a,b){return async function(c,f){let g=async()=>{try{await b(c,f)}catch(h){if(h instanceof e.Bc){f.headersSent||f.status(503).json({error:h.message});return}let g=(0,d.wF)({source:a,functionName:b.name||"anonymous",error:h,req:c});console.error(`[${a}]`,g.id,h),f.headersSent||f.status(500).json({error:h instanceof Error?h.message:"Internal server error",requestId:g.id})}};if("api/system/reset"===a||a.startsWith("api/health"))return void await g();try{await (0,e.i0)(g)}catch(a){if(a instanceof e.Bc&&!f.headersSent)f.status(503).json({error:a.message});else throw a}}}(0,d.mG)()},19898:a=>{a.exports=require("@customize-agent/knowledge")},29021:a=>{a.exports=require("fs")},29281:(a,b,c)=>{c.d(b,{IS:()=>k,R1:()=>l,jU:()=>m});var d=c(96770),e=c(29021),f=c(33873),g=c(51342),h=c(47774);let i=globalThis,j=i.__customizeConfigStores??=new Map;function k(){(0,h.jF)();let a=(0,g.J0)();return j.has(a)||j.set(a,new d.ConfigStore(a)),j.get(a)}function l(){j.clear()}function m(a={}){let b;(0,h.jF)();let c=f.join((0,g.J0)(),"config.json"),d=e.existsSync(c);if(d&&!e.statSync(c).isFile())throw Error(`配置路径不是普通文件,无法清除:${c}`);let i=null;if(d){b=f.join(f.dirname(c),`config.backup-${new Date().toISOString().replace(/[:.]/gu,"-")}.json`),e.copyFileSync(c,b);try{let a=JSON.parse(e.readFileSync(c,"utf-8"));i=a&&"object"==typeof a&&!Array.isArray(a)?a:null}catch{i=null}}let j="models"==("all"===a.scope?"all":"models")&&null!==i;return j?e.writeFileSync(c,`${JSON.stringify({...i,models:{active:null,list:[]}},null,2)}
3
+ `,{mode:384}):d&&e.rmSync(c,{force:!0}),l(),j||k().load(),{mode:j?"models":"all",backupPath:b,sourceParsed:null!==i}}},33873:a=>{a.exports=require("path")},47774:(a,b,c)=>{c.d(b,{Bc:()=>g,b:()=>h,i0:()=>j,jF:()=>i,jp:()=>k,mh:()=>l,wx:()=>m});let d=globalThis,e=d.__customizeStorageMaintenance??={active:!1},f=d.__customizeStorageApiWriters??=new Set;class g extends Error{constructor(){super("系统清空正在执行,暂不接收新的存储访问"),this.name="StorageMaintenanceError"}}function h(){return e.active}function i(){if(e.active)throw new g}async function j(a){i();let b=Promise.resolve(a());f.add(b);try{return await b}finally{f.delete(b)}}function k(){return[...f]}function l(){if(e.active)throw Error("已有系统清空任务正在执行");e.active=!0;let a=!1;return()=>{a||(a=!0,e.active=!1)}}async function m(a,b=1e4){let c;if(!a.length)return!0;try{return await Promise.race([Promise.allSettled(a).then(()=>!0),new Promise(a=>{c=setTimeout(()=>a(!1),b)})])}finally{c&&clearTimeout(c)}}},48161:a=>{a.exports=require("node:os")},51342:(a,b,c)=>{c.d(b,{Bn:()=>k,J0:()=>h});var d=c(73024),e=c(48161),f=c(96770),g=c(76760);function h(){return(0,f.resolveAgentStorageRoot)(process.env.CUSTOMIZE_AGENT_HOME?.trim()||e.homedir())}function i(){return g.join(h(),"state.json")}function j(){try{let a=JSON.parse(d.readFileSync(i(),"utf8")),b=a?.firstStartedAt;return"number"==typeof b&&Number.isFinite(b)&&b>0?{firstStartedAt:b}:null}catch{return null}}function k(a=Date.now()){return Math.max(0,Math.round((a-function(a=Date.now()){let b=j();if(b)return b.firstStartedAt;try{let b=i();d.mkdirSync(g.dirname(b),{recursive:!0});let c=`${b}.${process.pid}.${Date.now()}.tmp`;return d.writeFileSync(c,JSON.stringify({firstStartedAt:a}),"utf8"),d.renameSync(c,b),a}catch{return j()?.firstStartedAt??a}}(a))/1e3))}},55511:a=>{a.exports=require("crypto")},73024:a=>{a.exports=require("node:fs")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:a=>{a.exports=require("node:path")},88341:(a,b,c)=>{c.r(b),c.d(b,{config:()=>q,default:()=>p,handler:()=>s});var d={};c.r(d),c.d(d,{default:()=>m});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(16006),j=c(29281),k=c(19898);async function l(a,b){if("POST"!==a.method)return b.status(405).json({error:"Method not allowed"});let c=Date.now();try{let a=(0,j.IS)().getEmbedding();if("transformers-local"===a.provider){let d=new k.LocalTransformersEmbeddingProvider({model:a.model,dimensions:a.dimensions}),e=await d.embedQuery("ping");return b.status(200).json({success:e.length>0,message:e.length>0?"本地语义 Embedding 可用":"返回向量为空",latencyMs:Date.now()-c})}if(!a.baseUrl||!a.model)return b.status(200).json({success:!1,message:"Embedding baseUrl/model 未配置",latencyMs:Date.now()-c});let d=await fetch(`${a.baseUrl.replace(/\/+$/u,"")}/embeddings`,{method:"POST",headers:{"Content-Type":"application/json",...a.apiKey?{Authorization:`Bearer ${a.apiKey}`}:{}},body:JSON.stringify({model:a.model,input:["ping"]})});if(!d.ok)return b.status(200).json({success:!1,message:`HTTP ${d.status}`,latencyMs:Date.now()-c});let e=await d.json(),f=e.data?.[0]?.embedding;return b.status(200).json({success:Array.isArray(f)&&f.length>0,message:Array.isArray(f)&&f.length>0?"连接成功":"返回向量为空",latencyMs:Date.now()-c})}catch(a){return console.error("[api] config/embedding/healthCheck",a),b.status(200).json({success:!1,message:"Health check failed",latencyMs:Date.now()-c})}}let m=(0,i.j)("api/config/embedding/healthCheck",l);var n=c(68970),o=c(50296);let p=(0,h.M)(d,"default"),q=(0,h.M)(d,"config"),r=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/config/embedding/healthCheck",pathname:"/api/config/embedding/healthCheck",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function s(a,b,c){let d=await r.prepare(a,b,{srcPage:"/api/config/embedding/healthCheck"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,n.getTracer)(),e=d.getActiveScopeSpan(),j=r.instrumentationOnRequestError.bind(r),k=async e=>r.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:r.isDev,page:"/api/config/embedding/healthCheck",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>j(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==o.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await k(e):await d.withPropagatedContext(a.headers,()=>d.trace(o.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:n.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(r.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},96770:a=>{a.exports=require("@customize-agent/runtime")}};var b=require("../../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705],()=>b(b.s=88341));module.exports=c})();
@@ -1,2 +1,3 @@
1
1
  "use strict";(()=>{var a={};a.id=9591,a.ids=[9591],a.modules={191:(a,b,c)=>{c.d(b,{cW:()=>p,hH:()=>q,mG:()=>t,wF:()=>o});var d=c(51342),e=c(29021),f=c.n(e),g=c(33873),h=c.n(g),i=c(55511),j=c.n(i);let k=h().join((0,d.J0)(),"logs"),l=h().join(k,"errors.jsonl"),m="errors-";function n(){try{return f().readdirSync(k).filter(a=>a.startsWith(m)&&a.endsWith(".jsonl")).sort().reverse()}catch{return[]}}function o(a){let{message:b,stack:c}=function(a){if(a instanceof Error)return{message:a.message,stack:a.stack};if("string"==typeof a)return{message:a};try{return{message:JSON.stringify(a)}}catch{return{message:String(a)}}}(a.error),d={id:`err_${Date.now()}_${j().randomBytes(4).toString("hex")}`,level:a.level||"error",source:a.source,functionName:a.functionName,message:b,stack:c,request:a.req?{method:a.req.method,url:a.req.url,query:a.req.query}:void 0,meta:a.meta,createdAt:Date.now()};try{f().mkdirSync(k,{recursive:!0}),function(){try{if(f().statSync(l).size<=2097152)return;f().renameSync(l,h().join(k,`${m}${Date.now()}.jsonl`)),function(){for(let a of n().slice(20))try{f().rmSync(h().join(k,a),{force:!0})}catch{}}()}catch{}}(),f().appendFileSync(l,`${JSON.stringify(d)}
2
- `)}catch(a){console.error("[errorLogService] failed to write error log",a)}return d}function p(a=200){let b=[l,...n().map(a=>h().join(k,a))],c=[];for(let d of b){if(c.length>=a)break;for(let b of(function(a){try{return f().readFileSync(a,"utf8").split("\n").filter(Boolean).flatMap(a=>{try{return[JSON.parse(a)]}catch{return[]}})}catch{return[]}})(d).reverse())if(c.push(b),c.length>=a)break}return c}function q(){let a=0;if(f().existsSync(l))try{f().rmSync(l,{force:!0}),a++}catch{}for(let b of n())try{f().rmSync(h().join(k,b),{force:!0}),a++}catch{}return a}let r=!1;function s(a,b,c,d=20){let e=0,f=0;return g=>{try{b(g);let h=Date.now();h-e>6e4&&(e=h,f=0),f<d&&(f+=1,c(a,g))}catch{}}}function t(){r||(r=!0,process.on("uncaughtException",s("uncaughtException",a=>o({source:"process",functionName:"uncaughtException",error:a}),(a,b)=>console.error(`[process] ${a}`,b))),process.on("unhandledRejection",s("unhandledRejection",a=>o({source:"process",functionName:"unhandledRejection",error:a}),(a,b)=>console.error(`[process] ${a}`,b))))}},16006:(a,b,c)=>{c.d(b,{j:()=>f});var d=c(191),e=c(47774);function f(a,b){return async function(c,f){let g=async()=>{try{await b(c,f)}catch(h){if(h instanceof e.Bc){f.headersSent||f.status(503).json({error:h.message});return}let g=(0,d.wF)({source:a,functionName:b.name||"anonymous",error:h,req:c});console.error(`[${a}]`,g.id,h),f.headersSent||f.status(500).json({error:h instanceof Error?h.message:"Internal server error",requestId:g.id})}};if("api/system/reset"===a||a.startsWith("api/health"))return void await g();try{await (0,e.i0)(g)}catch(a){if(a instanceof e.Bc&&!f.headersSent)f.status(503).json({error:a.message});else throw a}}}(0,d.mG)()},29021:a=>{a.exports=require("fs")},29281:(a,b,c)=>{c.d(b,{I:()=>i,R:()=>j});var d=c(96770),e=c(51342),f=c(47774);let g=globalThis,h=g.__customizeConfigStores??=new Map;function i(){(0,f.jF)();let a=(0,e.J0)();return h.has(a)||h.set(a,new d.ConfigStore(a)),h.get(a)}function j(){h.clear()}},33873:a=>{a.exports=require("path")},47774:(a,b,c)=>{c.d(b,{Bc:()=>g,b:()=>h,i0:()=>j,jF:()=>i,jp:()=>k,mh:()=>l,wx:()=>m});let d=globalThis,e=d.__customizeStorageMaintenance??={active:!1},f=d.__customizeStorageApiWriters??=new Set;class g extends Error{constructor(){super("系统清空正在执行,暂不接收新的存储访问"),this.name="StorageMaintenanceError"}}function h(){return e.active}function i(){if(e.active)throw new g}async function j(a){i();let b=Promise.resolve(a());f.add(b);try{return await b}finally{f.delete(b)}}function k(){return[...f]}function l(){if(e.active)throw Error("已有系统清空任务正在执行");e.active=!0;let a=!1;return()=>{a||(a=!0,e.active=!1)}}async function m(a,b=1e4){let c;if(!a.length)return!0;try{return await Promise.race([Promise.allSettled(a).then(()=>!0),new Promise(a=>{c=setTimeout(()=>a(!1),b)})])}finally{c&&clearTimeout(c)}}},48161:a=>{a.exports=require("node:os")},51342:(a,b,c)=>{c.d(b,{Bn:()=>k,J0:()=>h});var d=c(73024),e=c(48161),f=c(96770),g=c(76760);function h(){return(0,f.resolveAgentStorageRoot)(process.env.CUSTOMIZE_AGENT_HOME?.trim()||e.homedir())}function i(){return g.join(h(),"state.json")}function j(){try{let a=JSON.parse(d.readFileSync(i(),"utf8")),b=a?.firstStartedAt;return"number"==typeof b&&Number.isFinite(b)&&b>0?{firstStartedAt:b}:null}catch{return null}}function k(a=Date.now()){return Math.max(0,Math.round((a-function(a=Date.now()){let b=j();if(b)return b.firstStartedAt;try{let b=i();d.mkdirSync(g.dirname(b),{recursive:!0});let c=`${b}.${process.pid}.${Date.now()}.tmp`;return d.writeFileSync(c,JSON.stringify({firstStartedAt:a}),"utf8"),d.renameSync(c,b),a}catch{return j()?.firstStartedAt??a}}(a))/1e3))}},55511:a=>{a.exports=require("crypto")},73024:a=>{a.exports=require("node:fs")},74136:(a,b,c)=>{c.r(b),c.d(b,{config:()=>p,default:()=>o,handler:()=>r});var d={};c.r(d),c.d(d,{default:()=>l});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(16006),j=c(29281);function k(a){return{...a,apiKey:a.apiKey?"••••"+a.apiKey.slice(-4):void 0,hasApiKey:!!a.apiKey}}let l=(0,i.j)("api/config/embedding",function(a,b){if(!["GET","PUT"].includes(a.method))return b.status(405).json({error:"Method not allowed"});try{let c=(0,j.I)();if("PUT"===a.method){let d=a.body,e=c.getEmbedding(),f="openai-compatible"===d.provider?"openai-compatible":"transformers-local",g=Number(d.dimensions??("transformers-local"===f?512:1024)),h="transformers-local"===f?{provider:"transformers-local",model:"BAAI/bge-small-zh-v1.5",dimensions:512}:{provider:"openai-compatible",baseUrl:"string"==typeof d.baseUrl?d.baseUrl.trim():"",apiKey:"string"!=typeof d.apiKey||d.apiKey.includes("•")?e.apiKey:d.apiKey,model:"string"==typeof d.model?d.model.trim():"",dimensions:Number.isFinite(g)?g:1024};if("openai-compatible"===h.provider&&(!h.baseUrl||!h.model))return b.status(400).json({error:"Embedding baseUrl and model are required"});if("transformers-local"===h.provider&&!h.model)return b.status(400).json({error:"Embedding model is required"});return c.setEmbedding(h),b.status(200).json(k(h))}return b.status(200).json(k(c.getEmbedding()))}catch(a){console.error("[api] config/embedding",a),b.status(500).json({error:"Internal server error"})}});var m=c(68970),n=c(50296);let o=(0,h.M)(d,"default"),p=(0,h.M)(d,"config"),q=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/config/embedding",pathname:"/api/config/embedding",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function r(a,b,c){let d=await q.prepare(a,b,{srcPage:"/api/config/embedding"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,m.getTracer)(),e=d.getActiveScopeSpan(),j=q.instrumentationOnRequestError.bind(q),k=async e=>q.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:q.isDev,page:"/api/config/embedding",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>j(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await k(e):await d.withPropagatedContext(a.headers,()=>d.trace(n.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:m.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(q.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:a=>{a.exports=require("node:path")},96770:a=>{a.exports=require("@customize-agent/runtime")}};var b=require("../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705],()=>b(b.s=74136));module.exports=c})();
2
+ `)}catch(a){console.error("[errorLogService] failed to write error log",a)}return d}function p(a=200){let b=[l,...n().map(a=>h().join(k,a))],c=[];for(let d of b){if(c.length>=a)break;for(let b of(function(a){try{return f().readFileSync(a,"utf8").split("\n").filter(Boolean).flatMap(a=>{try{return[JSON.parse(a)]}catch{return[]}})}catch{return[]}})(d).reverse())if(c.push(b),c.length>=a)break}return c}function q(){let a=0;if(f().existsSync(l))try{f().rmSync(l,{force:!0}),a++}catch{}for(let b of n())try{f().rmSync(h().join(k,b),{force:!0}),a++}catch{}return a}let r=!1;function s(a,b,c,d=20){let e=0,f=0;return g=>{try{b(g);let h=Date.now();h-e>6e4&&(e=h,f=0),f<d&&(f+=1,c(a,g))}catch{}}}function t(){r||(r=!0,process.on("uncaughtException",s("uncaughtException",a=>o({source:"process",functionName:"uncaughtException",error:a}),(a,b)=>console.error(`[process] ${a}`,b))),process.on("unhandledRejection",s("unhandledRejection",a=>o({source:"process",functionName:"unhandledRejection",error:a}),(a,b)=>console.error(`[process] ${a}`,b))))}},16006:(a,b,c)=>{c.d(b,{j:()=>f});var d=c(191),e=c(47774);function f(a,b){return async function(c,f){let g=async()=>{try{await b(c,f)}catch(h){if(h instanceof e.Bc){f.headersSent||f.status(503).json({error:h.message});return}let g=(0,d.wF)({source:a,functionName:b.name||"anonymous",error:h,req:c});console.error(`[${a}]`,g.id,h),f.headersSent||f.status(500).json({error:h instanceof Error?h.message:"Internal server error",requestId:g.id})}};if("api/system/reset"===a||a.startsWith("api/health"))return void await g();try{await (0,e.i0)(g)}catch(a){if(a instanceof e.Bc&&!f.headersSent)f.status(503).json({error:a.message});else throw a}}}(0,d.mG)()},29021:a=>{a.exports=require("fs")},29281:(a,b,c)=>{c.d(b,{IS:()=>k,R1:()=>l,jU:()=>m});var d=c(96770),e=c(29021),f=c(33873),g=c(51342),h=c(47774);let i=globalThis,j=i.__customizeConfigStores??=new Map;function k(){(0,h.jF)();let a=(0,g.J0)();return j.has(a)||j.set(a,new d.ConfigStore(a)),j.get(a)}function l(){j.clear()}function m(a={}){let b;(0,h.jF)();let c=f.join((0,g.J0)(),"config.json"),d=e.existsSync(c);if(d&&!e.statSync(c).isFile())throw Error(`配置路径不是普通文件,无法清除:${c}`);let i=null;if(d){b=f.join(f.dirname(c),`config.backup-${new Date().toISOString().replace(/[:.]/gu,"-")}.json`),e.copyFileSync(c,b);try{let a=JSON.parse(e.readFileSync(c,"utf-8"));i=a&&"object"==typeof a&&!Array.isArray(a)?a:null}catch{i=null}}let j="models"==("all"===a.scope?"all":"models")&&null!==i;return j?e.writeFileSync(c,`${JSON.stringify({...i,models:{active:null,list:[]}},null,2)}
3
+ `,{mode:384}):d&&e.rmSync(c,{force:!0}),l(),j||k().load(),{mode:j?"models":"all",backupPath:b,sourceParsed:null!==i}}},33873:a=>{a.exports=require("path")},47774:(a,b,c)=>{c.d(b,{Bc:()=>g,b:()=>h,i0:()=>j,jF:()=>i,jp:()=>k,mh:()=>l,wx:()=>m});let d=globalThis,e=d.__customizeStorageMaintenance??={active:!1},f=d.__customizeStorageApiWriters??=new Set;class g extends Error{constructor(){super("系统清空正在执行,暂不接收新的存储访问"),this.name="StorageMaintenanceError"}}function h(){return e.active}function i(){if(e.active)throw new g}async function j(a){i();let b=Promise.resolve(a());f.add(b);try{return await b}finally{f.delete(b)}}function k(){return[...f]}function l(){if(e.active)throw Error("已有系统清空任务正在执行");e.active=!0;let a=!1;return()=>{a||(a=!0,e.active=!1)}}async function m(a,b=1e4){let c;if(!a.length)return!0;try{return await Promise.race([Promise.allSettled(a).then(()=>!0),new Promise(a=>{c=setTimeout(()=>a(!1),b)})])}finally{c&&clearTimeout(c)}}},48161:a=>{a.exports=require("node:os")},51342:(a,b,c)=>{c.d(b,{Bn:()=>k,J0:()=>h});var d=c(73024),e=c(48161),f=c(96770),g=c(76760);function h(){return(0,f.resolveAgentStorageRoot)(process.env.CUSTOMIZE_AGENT_HOME?.trim()||e.homedir())}function i(){return g.join(h(),"state.json")}function j(){try{let a=JSON.parse(d.readFileSync(i(),"utf8")),b=a?.firstStartedAt;return"number"==typeof b&&Number.isFinite(b)&&b>0?{firstStartedAt:b}:null}catch{return null}}function k(a=Date.now()){return Math.max(0,Math.round((a-function(a=Date.now()){let b=j();if(b)return b.firstStartedAt;try{let b=i();d.mkdirSync(g.dirname(b),{recursive:!0});let c=`${b}.${process.pid}.${Date.now()}.tmp`;return d.writeFileSync(c,JSON.stringify({firstStartedAt:a}),"utf8"),d.renameSync(c,b),a}catch{return j()?.firstStartedAt??a}}(a))/1e3))}},55511:a=>{a.exports=require("crypto")},73024:a=>{a.exports=require("node:fs")},74136:(a,b,c)=>{c.r(b),c.d(b,{config:()=>p,default:()=>o,handler:()=>r});var d={};c.r(d),c.d(d,{default:()=>l});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(16006),j=c(29281);function k(a){return{...a,apiKey:a.apiKey?"••••"+a.apiKey.slice(-4):void 0,hasApiKey:!!a.apiKey}}let l=(0,i.j)("api/config/embedding",function(a,b){if(!["GET","PUT"].includes(a.method))return b.status(405).json({error:"Method not allowed"});try{let c=(0,j.IS)();if("PUT"===a.method){let d=a.body,e=c.getEmbedding(),f="openai-compatible"===d.provider?"openai-compatible":"transformers-local",g=Number(d.dimensions??("transformers-local"===f?512:1024)),h="transformers-local"===f?{provider:"transformers-local",model:"BAAI/bge-small-zh-v1.5",dimensions:512}:{provider:"openai-compatible",baseUrl:"string"==typeof d.baseUrl?d.baseUrl.trim():"",apiKey:"string"!=typeof d.apiKey||d.apiKey.includes("•")?e.apiKey:d.apiKey,model:"string"==typeof d.model?d.model.trim():"",dimensions:Number.isFinite(g)?g:1024};if("openai-compatible"===h.provider&&(!h.baseUrl||!h.model))return b.status(400).json({error:"Embedding baseUrl and model are required"});if("transformers-local"===h.provider&&!h.model)return b.status(400).json({error:"Embedding model is required"});return c.setEmbedding(h),b.status(200).json(k(h))}return b.status(200).json(k(c.getEmbedding()))}catch(a){console.error("[api] config/embedding",a),b.status(500).json({error:"Internal server error"})}});var m=c(68970),n=c(50296);let o=(0,h.M)(d,"default"),p=(0,h.M)(d,"config"),q=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/config/embedding",pathname:"/api/config/embedding",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function r(a,b,c){let d=await q.prepare(a,b,{srcPage:"/api/config/embedding"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,m.getTracer)(),e=d.getActiveScopeSpan(),j=q.instrumentationOnRequestError.bind(q),k=async e=>q.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:q.isDev,page:"/api/config/embedding",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>j(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await k(e):await d.withPropagatedContext(a.headers,()=>d.trace(n.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:m.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(q.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:a=>{a.exports=require("node:path")},96770:a=>{a.exports=require("@customize-agent/runtime")}};var b=require("../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705],()=>b(b.s=74136));module.exports=c})();
@@ -1,2 +1,3 @@
1
1
  "use strict";(()=>{var a={};a.id=1266,a.ids=[1266],a.modules={191:(a,b,c)=>{c.d(b,{cW:()=>p,hH:()=>q,mG:()=>t,wF:()=>o});var d=c(51342),e=c(29021),f=c.n(e),g=c(33873),h=c.n(g),i=c(55511),j=c.n(i);let k=h().join((0,d.J0)(),"logs"),l=h().join(k,"errors.jsonl"),m="errors-";function n(){try{return f().readdirSync(k).filter(a=>a.startsWith(m)&&a.endsWith(".jsonl")).sort().reverse()}catch{return[]}}function o(a){let{message:b,stack:c}=function(a){if(a instanceof Error)return{message:a.message,stack:a.stack};if("string"==typeof a)return{message:a};try{return{message:JSON.stringify(a)}}catch{return{message:String(a)}}}(a.error),d={id:`err_${Date.now()}_${j().randomBytes(4).toString("hex")}`,level:a.level||"error",source:a.source,functionName:a.functionName,message:b,stack:c,request:a.req?{method:a.req.method,url:a.req.url,query:a.req.query}:void 0,meta:a.meta,createdAt:Date.now()};try{f().mkdirSync(k,{recursive:!0}),function(){try{if(f().statSync(l).size<=2097152)return;f().renameSync(l,h().join(k,`${m}${Date.now()}.jsonl`)),function(){for(let a of n().slice(20))try{f().rmSync(h().join(k,a),{force:!0})}catch{}}()}catch{}}(),f().appendFileSync(l,`${JSON.stringify(d)}
2
- `)}catch(a){console.error("[errorLogService] failed to write error log",a)}return d}function p(a=200){let b=[l,...n().map(a=>h().join(k,a))],c=[];for(let d of b){if(c.length>=a)break;for(let b of(function(a){try{return f().readFileSync(a,"utf8").split("\n").filter(Boolean).flatMap(a=>{try{return[JSON.parse(a)]}catch{return[]}})}catch{return[]}})(d).reverse())if(c.push(b),c.length>=a)break}return c}function q(){let a=0;if(f().existsSync(l))try{f().rmSync(l,{force:!0}),a++}catch{}for(let b of n())try{f().rmSync(h().join(k,b),{force:!0}),a++}catch{}return a}let r=!1;function s(a,b,c,d=20){let e=0,f=0;return g=>{try{b(g);let h=Date.now();h-e>6e4&&(e=h,f=0),f<d&&(f+=1,c(a,g))}catch{}}}function t(){r||(r=!0,process.on("uncaughtException",s("uncaughtException",a=>o({source:"process",functionName:"uncaughtException",error:a}),(a,b)=>console.error(`[process] ${a}`,b))),process.on("unhandledRejection",s("unhandledRejection",a=>o({source:"process",functionName:"unhandledRejection",error:a}),(a,b)=>console.error(`[process] ${a}`,b))))}},16006:(a,b,c)=>{c.d(b,{j:()=>f});var d=c(191),e=c(47774);function f(a,b){return async function(c,f){let g=async()=>{try{await b(c,f)}catch(h){if(h instanceof e.Bc){f.headersSent||f.status(503).json({error:h.message});return}let g=(0,d.wF)({source:a,functionName:b.name||"anonymous",error:h,req:c});console.error(`[${a}]`,g.id,h),f.headersSent||f.status(500).json({error:h instanceof Error?h.message:"Internal server error",requestId:g.id})}};if("api/system/reset"===a||a.startsWith("api/health"))return void await g();try{await (0,e.i0)(g)}catch(a){if(a instanceof e.Bc&&!f.headersSent)f.status(503).json({error:a.message});else throw a}}}(0,d.mG)()},29021:a=>{a.exports=require("fs")},29281:(a,b,c)=>{c.d(b,{I:()=>i,R:()=>j});var d=c(96770),e=c(51342),f=c(47774);let g=globalThis,h=g.__customizeConfigStores??=new Map;function i(){(0,f.jF)();let a=(0,e.J0)();return h.has(a)||h.set(a,new d.ConfigStore(a)),h.get(a)}function j(){h.clear()}},33873:a=>{a.exports=require("path")},47774:(a,b,c)=>{c.d(b,{Bc:()=>g,b:()=>h,i0:()=>j,jF:()=>i,jp:()=>k,mh:()=>l,wx:()=>m});let d=globalThis,e=d.__customizeStorageMaintenance??={active:!1},f=d.__customizeStorageApiWriters??=new Set;class g extends Error{constructor(){super("系统清空正在执行,暂不接收新的存储访问"),this.name="StorageMaintenanceError"}}function h(){return e.active}function i(){if(e.active)throw new g}async function j(a){i();let b=Promise.resolve(a());f.add(b);try{return await b}finally{f.delete(b)}}function k(){return[...f]}function l(){if(e.active)throw Error("已有系统清空任务正在执行");e.active=!0;let a=!1;return()=>{a||(a=!0,e.active=!1)}}async function m(a,b=1e4){let c;if(!a.length)return!0;try{return await Promise.race([Promise.allSettled(a).then(()=>!0),new Promise(a=>{c=setTimeout(()=>a(!1),b)})])}finally{c&&clearTimeout(c)}}},48161:a=>{a.exports=require("node:os")},51342:(a,b,c)=>{c.d(b,{Bn:()=>k,J0:()=>h});var d=c(73024),e=c(48161),f=c(96770),g=c(76760);function h(){return(0,f.resolveAgentStorageRoot)(process.env.CUSTOMIZE_AGENT_HOME?.trim()||e.homedir())}function i(){return g.join(h(),"state.json")}function j(){try{let a=JSON.parse(d.readFileSync(i(),"utf8")),b=a?.firstStartedAt;return"number"==typeof b&&Number.isFinite(b)&&b>0?{firstStartedAt:b}:null}catch{return null}}function k(a=Date.now()){return Math.max(0,Math.round((a-function(a=Date.now()){let b=j();if(b)return b.firstStartedAt;try{let b=i();d.mkdirSync(g.dirname(b),{recursive:!0});let c=`${b}.${process.pid}.${Date.now()}.tmp`;return d.writeFileSync(c,JSON.stringify({firstStartedAt:a}),"utf8"),d.renameSync(c,b),a}catch{return j()?.firstStartedAt??a}}(a))/1e3))}},52084:(a,b,c)=>{c.r(b),c.d(b,{config:()=>r,default:()=>q,handler:()=>t});var d={};c.r(d),c.d(d,{default:()=>n});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(29281),j=c(95393),k=c(96770),l=c(191);async function m(a,b){if("POST"!==a.method)return b.status(405).json({error:"Method not allowed"});let{provider:c}=a.body;if("string"!=typeof c||!c.trim())return b.status(400).json({success:!1,message:"Provider name required"});let d=(0,i.I)().load(),e=d.providers[c];if(!e)return b.status(400).json({success:!1,message:"模型服务不存在"});let f=d.models.list.filter(a=>a.provider===c);if(f.length>1)return b.status(400).json({success:!1,message:"一个模型服务只能配置一个实际模型标识"});let g=f[0]?.name??c,h=function(a,b){let c=(0,k.resolveProtocol)(a,b);return"anthropic"===c?"anthropic":"google"===c?"google":"ollama"===c?"ollama":"openrouter"===c?"openrouter":"openai"===c?["deepseek","openai","openrouter","ollama"].includes(a)?a:"openai":a}(c,e),m=Date.now(),n=new AbortController,o=setTimeout(()=>n.abort(),3e4);try{let a=(0,j.createProvider)(h,{apiKey:e?.apiKey,baseUrl:e?.baseUrl,modelName:g,directEndpoint:e?.directEndpoint}),c=await a.chat([{role:"user",content:"请只回复 pong。"}],{temperature:0,signal:n.signal,...(0,j.isGlm53Model)(g)?{reasoningEffort:"low",maxTokens:2048}:{}});if(!c.content?.trim())throw Error("模型未返回有效正文,连接测试失败");if("length"===c.finishReason)throw Error("模型响应被截断,连接测试失败");b.status(200).json({success:!0,message:"连接成功",latencyMs:Date.now()-m,modelName:g})}catch(f){let d=(0,l.wF)({level:"warn",source:"api/config/healthCheck",functionName:"providerHealthCheck",error:f,req:a,meta:{providerName:c,modelName:g}}),e=n.signal.aborted?"健康检查超时":f instanceof Error?f.message:"Health check failed";b.status(200).json({success:!1,message:e,latencyMs:Date.now()-m,requestId:d.id,modelName:g})}finally{clearTimeout(o)}}let n=(0,c(16006).j)("api/config/healthCheck",m);var o=c(68970),p=c(50296);let q=(0,h.M)(d,"default"),r=(0,h.M)(d,"config"),s=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/config/healthCheck",pathname:"/api/config/healthCheck",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function t(a,b,c){let d=await s.prepare(a,b,{srcPage:"/api/config/healthCheck"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,o.getTracer)(),e=d.getActiveScopeSpan(),j=s.instrumentationOnRequestError.bind(s),k=async e=>s.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:s.isDev,page:"/api/config/healthCheck",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>j(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await k(e):await d.withPropagatedContext(a.headers,()=>d.trace(p.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:o.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(s.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},55511:a=>{a.exports=require("crypto")},73024:a=>{a.exports=require("node:fs")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:a=>{a.exports=require("node:path")},95393:a=>{a.exports=require("@customize-agent/llm")},96770:a=>{a.exports=require("@customize-agent/runtime")}};var b=require("../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705],()=>b(b.s=52084));module.exports=c})();
2
+ `)}catch(a){console.error("[errorLogService] failed to write error log",a)}return d}function p(a=200){let b=[l,...n().map(a=>h().join(k,a))],c=[];for(let d of b){if(c.length>=a)break;for(let b of(function(a){try{return f().readFileSync(a,"utf8").split("\n").filter(Boolean).flatMap(a=>{try{return[JSON.parse(a)]}catch{return[]}})}catch{return[]}})(d).reverse())if(c.push(b),c.length>=a)break}return c}function q(){let a=0;if(f().existsSync(l))try{f().rmSync(l,{force:!0}),a++}catch{}for(let b of n())try{f().rmSync(h().join(k,b),{force:!0}),a++}catch{}return a}let r=!1;function s(a,b,c,d=20){let e=0,f=0;return g=>{try{b(g);let h=Date.now();h-e>6e4&&(e=h,f=0),f<d&&(f+=1,c(a,g))}catch{}}}function t(){r||(r=!0,process.on("uncaughtException",s("uncaughtException",a=>o({source:"process",functionName:"uncaughtException",error:a}),(a,b)=>console.error(`[process] ${a}`,b))),process.on("unhandledRejection",s("unhandledRejection",a=>o({source:"process",functionName:"unhandledRejection",error:a}),(a,b)=>console.error(`[process] ${a}`,b))))}},16006:(a,b,c)=>{c.d(b,{j:()=>f});var d=c(191),e=c(47774);function f(a,b){return async function(c,f){let g=async()=>{try{await b(c,f)}catch(h){if(h instanceof e.Bc){f.headersSent||f.status(503).json({error:h.message});return}let g=(0,d.wF)({source:a,functionName:b.name||"anonymous",error:h,req:c});console.error(`[${a}]`,g.id,h),f.headersSent||f.status(500).json({error:h instanceof Error?h.message:"Internal server error",requestId:g.id})}};if("api/system/reset"===a||a.startsWith("api/health"))return void await g();try{await (0,e.i0)(g)}catch(a){if(a instanceof e.Bc&&!f.headersSent)f.status(503).json({error:a.message});else throw a}}}(0,d.mG)()},29021:a=>{a.exports=require("fs")},29281:(a,b,c)=>{c.d(b,{IS:()=>k,R1:()=>l,jU:()=>m});var d=c(96770),e=c(29021),f=c(33873),g=c(51342),h=c(47774);let i=globalThis,j=i.__customizeConfigStores??=new Map;function k(){(0,h.jF)();let a=(0,g.J0)();return j.has(a)||j.set(a,new d.ConfigStore(a)),j.get(a)}function l(){j.clear()}function m(a={}){let b;(0,h.jF)();let c=f.join((0,g.J0)(),"config.json"),d=e.existsSync(c);if(d&&!e.statSync(c).isFile())throw Error(`配置路径不是普通文件,无法清除:${c}`);let i=null;if(d){b=f.join(f.dirname(c),`config.backup-${new Date().toISOString().replace(/[:.]/gu,"-")}.json`),e.copyFileSync(c,b);try{let a=JSON.parse(e.readFileSync(c,"utf-8"));i=a&&"object"==typeof a&&!Array.isArray(a)?a:null}catch{i=null}}let j="models"==("all"===a.scope?"all":"models")&&null!==i;return j?e.writeFileSync(c,`${JSON.stringify({...i,models:{active:null,list:[]}},null,2)}
3
+ `,{mode:384}):d&&e.rmSync(c,{force:!0}),l(),j||k().load(),{mode:j?"models":"all",backupPath:b,sourceParsed:null!==i}}},33873:a=>{a.exports=require("path")},47774:(a,b,c)=>{c.d(b,{Bc:()=>g,b:()=>h,i0:()=>j,jF:()=>i,jp:()=>k,mh:()=>l,wx:()=>m});let d=globalThis,e=d.__customizeStorageMaintenance??={active:!1},f=d.__customizeStorageApiWriters??=new Set;class g extends Error{constructor(){super("系统清空正在执行,暂不接收新的存储访问"),this.name="StorageMaintenanceError"}}function h(){return e.active}function i(){if(e.active)throw new g}async function j(a){i();let b=Promise.resolve(a());f.add(b);try{return await b}finally{f.delete(b)}}function k(){return[...f]}function l(){if(e.active)throw Error("已有系统清空任务正在执行");e.active=!0;let a=!1;return()=>{a||(a=!0,e.active=!1)}}async function m(a,b=1e4){let c;if(!a.length)return!0;try{return await Promise.race([Promise.allSettled(a).then(()=>!0),new Promise(a=>{c=setTimeout(()=>a(!1),b)})])}finally{c&&clearTimeout(c)}}},48161:a=>{a.exports=require("node:os")},51342:(a,b,c)=>{c.d(b,{Bn:()=>k,J0:()=>h});var d=c(73024),e=c(48161),f=c(96770),g=c(76760);function h(){return(0,f.resolveAgentStorageRoot)(process.env.CUSTOMIZE_AGENT_HOME?.trim()||e.homedir())}function i(){return g.join(h(),"state.json")}function j(){try{let a=JSON.parse(d.readFileSync(i(),"utf8")),b=a?.firstStartedAt;return"number"==typeof b&&Number.isFinite(b)&&b>0?{firstStartedAt:b}:null}catch{return null}}function k(a=Date.now()){return Math.max(0,Math.round((a-function(a=Date.now()){let b=j();if(b)return b.firstStartedAt;try{let b=i();d.mkdirSync(g.dirname(b),{recursive:!0});let c=`${b}.${process.pid}.${Date.now()}.tmp`;return d.writeFileSync(c,JSON.stringify({firstStartedAt:a}),"utf8"),d.renameSync(c,b),a}catch{return j()?.firstStartedAt??a}}(a))/1e3))}},52084:(a,b,c)=>{c.r(b),c.d(b,{config:()=>r,default:()=>q,handler:()=>t});var d={};c.r(d),c.d(d,{default:()=>n});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(29281),j=c(95393),k=c(96770),l=c(191);async function m(a,b){if("POST"!==a.method)return b.status(405).json({error:"Method not allowed"});let{provider:c}=a.body;if("string"!=typeof c||!c.trim())return b.status(400).json({success:!1,message:"Provider name required"});let d=(0,i.IS)().load(),e=d.providers[c];if(!e)return b.status(400).json({success:!1,message:"模型服务不存在"});let f=d.models.list.filter(a=>a.provider===c);if(f.length>1)return b.status(400).json({success:!1,message:"一个模型服务只能配置一个实际模型标识"});let g=f[0]?.name??c,h=function(a,b){let c=(0,k.resolveProtocol)(a,b);return"anthropic"===c?"anthropic":"google"===c?"google":"ollama"===c?"ollama":"openrouter"===c?"openrouter":"openai"===c?["deepseek","openai","openrouter","ollama"].includes(a)?a:"openai":a}(c,e),m=Date.now(),n=new AbortController,o=setTimeout(()=>n.abort(),3e4);try{let a=(0,j.createProvider)(h,{apiKey:e?.apiKey,baseUrl:e?.baseUrl,modelName:g,directEndpoint:e?.directEndpoint}),c=await a.chat([{role:"user",content:"请只回复 pong。"}],{temperature:0,signal:n.signal,...(0,j.isGlm53Model)(g)?{reasoningEffort:"low",maxTokens:2048}:{}});if(!c.content?.trim())throw Error("模型未返回有效正文,连接测试失败");if("length"===c.finishReason)throw Error("模型响应被截断,连接测试失败");b.status(200).json({success:!0,message:"连接成功",latencyMs:Date.now()-m,modelName:g})}catch(f){let d=(0,l.wF)({level:"warn",source:"api/config/healthCheck",functionName:"providerHealthCheck",error:f,req:a,meta:{providerName:c,modelName:g}}),e=n.signal.aborted?"健康检查超时":f instanceof Error?f.message:"Health check failed";b.status(200).json({success:!1,message:e,latencyMs:Date.now()-m,requestId:d.id,modelName:g})}finally{clearTimeout(o)}}let n=(0,c(16006).j)("api/config/healthCheck",m);var o=c(68970),p=c(50296);let q=(0,h.M)(d,"default"),r=(0,h.M)(d,"config"),s=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/config/healthCheck",pathname:"/api/config/healthCheck",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function t(a,b,c){let d=await s.prepare(a,b,{srcPage:"/api/config/healthCheck"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,o.getTracer)(),e=d.getActiveScopeSpan(),j=s.instrumentationOnRequestError.bind(s),k=async e=>s.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:s.isDev,page:"/api/config/healthCheck",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>j(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await k(e):await d.withPropagatedContext(a.headers,()=>d.trace(p.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:o.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(s.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},55511:a=>{a.exports=require("crypto")},73024:a=>{a.exports=require("node:fs")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:a=>{a.exports=require("node:path")},95393:a=>{a.exports=require("@customize-agent/llm")},96770:a=>{a.exports=require("@customize-agent/runtime")}};var b=require("../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705],()=>b(b.s=52084));module.exports=c})();
@@ -1,2 +1,3 @@
1
1
  "use strict";(()=>{var a={};a.id=8798,a.ids=[8798],a.modules={191:(a,b,c)=>{c.d(b,{cW:()=>p,hH:()=>q,mG:()=>t,wF:()=>o});var d=c(51342),e=c(29021),f=c.n(e),g=c(33873),h=c.n(g),i=c(55511),j=c.n(i);let k=h().join((0,d.J0)(),"logs"),l=h().join(k,"errors.jsonl"),m="errors-";function n(){try{return f().readdirSync(k).filter(a=>a.startsWith(m)&&a.endsWith(".jsonl")).sort().reverse()}catch{return[]}}function o(a){let{message:b,stack:c}=function(a){if(a instanceof Error)return{message:a.message,stack:a.stack};if("string"==typeof a)return{message:a};try{return{message:JSON.stringify(a)}}catch{return{message:String(a)}}}(a.error),d={id:`err_${Date.now()}_${j().randomBytes(4).toString("hex")}`,level:a.level||"error",source:a.source,functionName:a.functionName,message:b,stack:c,request:a.req?{method:a.req.method,url:a.req.url,query:a.req.query}:void 0,meta:a.meta,createdAt:Date.now()};try{f().mkdirSync(k,{recursive:!0}),function(){try{if(f().statSync(l).size<=2097152)return;f().renameSync(l,h().join(k,`${m}${Date.now()}.jsonl`)),function(){for(let a of n().slice(20))try{f().rmSync(h().join(k,a),{force:!0})}catch{}}()}catch{}}(),f().appendFileSync(l,`${JSON.stringify(d)}
2
- `)}catch(a){console.error("[errorLogService] failed to write error log",a)}return d}function p(a=200){let b=[l,...n().map(a=>h().join(k,a))],c=[];for(let d of b){if(c.length>=a)break;for(let b of(function(a){try{return f().readFileSync(a,"utf8").split("\n").filter(Boolean).flatMap(a=>{try{return[JSON.parse(a)]}catch{return[]}})}catch{return[]}})(d).reverse())if(c.push(b),c.length>=a)break}return c}function q(){let a=0;if(f().existsSync(l))try{f().rmSync(l,{force:!0}),a++}catch{}for(let b of n())try{f().rmSync(h().join(k,b),{force:!0}),a++}catch{}return a}let r=!1;function s(a,b,c,d=20){let e=0,f=0;return g=>{try{b(g);let h=Date.now();h-e>6e4&&(e=h,f=0),f<d&&(f+=1,c(a,g))}catch{}}}function t(){r||(r=!0,process.on("uncaughtException",s("uncaughtException",a=>o({source:"process",functionName:"uncaughtException",error:a}),(a,b)=>console.error(`[process] ${a}`,b))),process.on("unhandledRejection",s("unhandledRejection",a=>o({source:"process",functionName:"unhandledRejection",error:a}),(a,b)=>console.error(`[process] ${a}`,b))))}},16006:(a,b,c)=>{c.d(b,{j:()=>f});var d=c(191),e=c(47774);function f(a,b){return async function(c,f){let g=async()=>{try{await b(c,f)}catch(h){if(h instanceof e.Bc){f.headersSent||f.status(503).json({error:h.message});return}let g=(0,d.wF)({source:a,functionName:b.name||"anonymous",error:h,req:c});console.error(`[${a}]`,g.id,h),f.headersSent||f.status(500).json({error:h instanceof Error?h.message:"Internal server error",requestId:g.id})}};if("api/system/reset"===a||a.startsWith("api/health"))return void await g();try{await (0,e.i0)(g)}catch(a){if(a instanceof e.Bc&&!f.headersSent)f.status(503).json({error:a.message});else throw a}}}(0,d.mG)()},22922:(a,b,c)=>{c.r(b),c.d(b,{config:()=>p,default:()=>o,handler:()=>r});var d={};c.r(d),c.d(d,{default:()=>l});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(16006),j=c(29281),k=c(96770);let l=(0,i.j)("api/config/models",function(a,b){if(!["GET","PUT"].includes(a.method))return b.status(405).json({error:"Method not allowed"});try{let c=(0,j.I)();if("PUT"===a.method){let d,e=c.load();try{for(let b of(d=(0,k.parseModelsConfig)(a.body)).list)if(!Object.hasOwn(e.providers,b.provider))throw Error(`未配置模型供应商:${b.provider}`)}catch(a){return b.status(400).json({error:a instanceof Error?a.message:"模型配置无效"})}return e.models=d,c.save(e),b.status(200).json({success:!0,models:d})}b.status(200).json(c.load().models)}catch(a){console.error("[api] config/models",a),b.status(500).json({error:"Internal server error"})}});var m=c(68970),n=c(50296);let o=(0,h.M)(d,"default"),p=(0,h.M)(d,"config"),q=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/config/models",pathname:"/api/config/models",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function r(a,b,c){let d=await q.prepare(a,b,{srcPage:"/api/config/models"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,m.getTracer)(),e=d.getActiveScopeSpan(),j=q.instrumentationOnRequestError.bind(q),k=async e=>q.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:q.isDev,page:"/api/config/models",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>j(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await k(e):await d.withPropagatedContext(a.headers,()=>d.trace(n.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:m.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(q.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},29021:a=>{a.exports=require("fs")},29281:(a,b,c)=>{c.d(b,{I:()=>i,R:()=>j});var d=c(96770),e=c(51342),f=c(47774);let g=globalThis,h=g.__customizeConfigStores??=new Map;function i(){(0,f.jF)();let a=(0,e.J0)();return h.has(a)||h.set(a,new d.ConfigStore(a)),h.get(a)}function j(){h.clear()}},33873:a=>{a.exports=require("path")},47774:(a,b,c)=>{c.d(b,{Bc:()=>g,b:()=>h,i0:()=>j,jF:()=>i,jp:()=>k,mh:()=>l,wx:()=>m});let d=globalThis,e=d.__customizeStorageMaintenance??={active:!1},f=d.__customizeStorageApiWriters??=new Set;class g extends Error{constructor(){super("系统清空正在执行,暂不接收新的存储访问"),this.name="StorageMaintenanceError"}}function h(){return e.active}function i(){if(e.active)throw new g}async function j(a){i();let b=Promise.resolve(a());f.add(b);try{return await b}finally{f.delete(b)}}function k(){return[...f]}function l(){if(e.active)throw Error("已有系统清空任务正在执行");e.active=!0;let a=!1;return()=>{a||(a=!0,e.active=!1)}}async function m(a,b=1e4){let c;if(!a.length)return!0;try{return await Promise.race([Promise.allSettled(a).then(()=>!0),new Promise(a=>{c=setTimeout(()=>a(!1),b)})])}finally{c&&clearTimeout(c)}}},48161:a=>{a.exports=require("node:os")},51342:(a,b,c)=>{c.d(b,{Bn:()=>k,J0:()=>h});var d=c(73024),e=c(48161),f=c(96770),g=c(76760);function h(){return(0,f.resolveAgentStorageRoot)(process.env.CUSTOMIZE_AGENT_HOME?.trim()||e.homedir())}function i(){return g.join(h(),"state.json")}function j(){try{let a=JSON.parse(d.readFileSync(i(),"utf8")),b=a?.firstStartedAt;return"number"==typeof b&&Number.isFinite(b)&&b>0?{firstStartedAt:b}:null}catch{return null}}function k(a=Date.now()){return Math.max(0,Math.round((a-function(a=Date.now()){let b=j();if(b)return b.firstStartedAt;try{let b=i();d.mkdirSync(g.dirname(b),{recursive:!0});let c=`${b}.${process.pid}.${Date.now()}.tmp`;return d.writeFileSync(c,JSON.stringify({firstStartedAt:a}),"utf8"),d.renameSync(c,b),a}catch{return j()?.firstStartedAt??a}}(a))/1e3))}},55511:a=>{a.exports=require("crypto")},73024:a=>{a.exports=require("node:fs")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:a=>{a.exports=require("node:path")},96770:a=>{a.exports=require("@customize-agent/runtime")}};var b=require("../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705],()=>b(b.s=22922));module.exports=c})();
2
+ `)}catch(a){console.error("[errorLogService] failed to write error log",a)}return d}function p(a=200){let b=[l,...n().map(a=>h().join(k,a))],c=[];for(let d of b){if(c.length>=a)break;for(let b of(function(a){try{return f().readFileSync(a,"utf8").split("\n").filter(Boolean).flatMap(a=>{try{return[JSON.parse(a)]}catch{return[]}})}catch{return[]}})(d).reverse())if(c.push(b),c.length>=a)break}return c}function q(){let a=0;if(f().existsSync(l))try{f().rmSync(l,{force:!0}),a++}catch{}for(let b of n())try{f().rmSync(h().join(k,b),{force:!0}),a++}catch{}return a}let r=!1;function s(a,b,c,d=20){let e=0,f=0;return g=>{try{b(g);let h=Date.now();h-e>6e4&&(e=h,f=0),f<d&&(f+=1,c(a,g))}catch{}}}function t(){r||(r=!0,process.on("uncaughtException",s("uncaughtException",a=>o({source:"process",functionName:"uncaughtException",error:a}),(a,b)=>console.error(`[process] ${a}`,b))),process.on("unhandledRejection",s("unhandledRejection",a=>o({source:"process",functionName:"unhandledRejection",error:a}),(a,b)=>console.error(`[process] ${a}`,b))))}},16006:(a,b,c)=>{c.d(b,{j:()=>f});var d=c(191),e=c(47774);function f(a,b){return async function(c,f){let g=async()=>{try{await b(c,f)}catch(h){if(h instanceof e.Bc){f.headersSent||f.status(503).json({error:h.message});return}let g=(0,d.wF)({source:a,functionName:b.name||"anonymous",error:h,req:c});console.error(`[${a}]`,g.id,h),f.headersSent||f.status(500).json({error:h instanceof Error?h.message:"Internal server error",requestId:g.id})}};if("api/system/reset"===a||a.startsWith("api/health"))return void await g();try{await (0,e.i0)(g)}catch(a){if(a instanceof e.Bc&&!f.headersSent)f.status(503).json({error:a.message});else throw a}}}(0,d.mG)()},22922:(a,b,c)=>{c.r(b),c.d(b,{config:()=>p,default:()=>o,handler:()=>r});var d={};c.r(d),c.d(d,{default:()=>l});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(16006),j=c(29281),k=c(96770);let l=(0,i.j)("api/config/models",function(a,b){if(!["GET","PUT"].includes(a.method))return b.status(405).json({error:"Method not allowed"});try{let c=(0,j.IS)();if("PUT"===a.method){let d,e=c.load();try{for(let b of(d=(0,k.parseModelsConfig)(a.body)).list)if(!Object.hasOwn(e.providers,b.provider))throw Error(`未配置模型供应商:${b.provider}`)}catch(a){return b.status(400).json({error:a instanceof Error?a.message:"模型配置无效"})}return e.models=d,c.save(e),b.status(200).json({success:!0,models:d})}b.status(200).json(c.load().models)}catch(a){console.error("[api] config/models",a),b.status(500).json({error:"Internal server error"})}});var m=c(68970),n=c(50296);let o=(0,h.M)(d,"default"),p=(0,h.M)(d,"config"),q=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/config/models",pathname:"/api/config/models",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function r(a,b,c){let d=await q.prepare(a,b,{srcPage:"/api/config/models"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,m.getTracer)(),e=d.getActiveScopeSpan(),j=q.instrumentationOnRequestError.bind(q),k=async e=>q.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:q.isDev,page:"/api/config/models",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>j(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await k(e):await d.withPropagatedContext(a.headers,()=>d.trace(n.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:m.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(q.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},29021:a=>{a.exports=require("fs")},29281:(a,b,c)=>{c.d(b,{IS:()=>k,R1:()=>l,jU:()=>m});var d=c(96770),e=c(29021),f=c(33873),g=c(51342),h=c(47774);let i=globalThis,j=i.__customizeConfigStores??=new Map;function k(){(0,h.jF)();let a=(0,g.J0)();return j.has(a)||j.set(a,new d.ConfigStore(a)),j.get(a)}function l(){j.clear()}function m(a={}){let b;(0,h.jF)();let c=f.join((0,g.J0)(),"config.json"),d=e.existsSync(c);if(d&&!e.statSync(c).isFile())throw Error(`配置路径不是普通文件,无法清除:${c}`);let i=null;if(d){b=f.join(f.dirname(c),`config.backup-${new Date().toISOString().replace(/[:.]/gu,"-")}.json`),e.copyFileSync(c,b);try{let a=JSON.parse(e.readFileSync(c,"utf-8"));i=a&&"object"==typeof a&&!Array.isArray(a)?a:null}catch{i=null}}let j="models"==("all"===a.scope?"all":"models")&&null!==i;return j?e.writeFileSync(c,`${JSON.stringify({...i,models:{active:null,list:[]}},null,2)}
3
+ `,{mode:384}):d&&e.rmSync(c,{force:!0}),l(),j||k().load(),{mode:j?"models":"all",backupPath:b,sourceParsed:null!==i}}},33873:a=>{a.exports=require("path")},47774:(a,b,c)=>{c.d(b,{Bc:()=>g,b:()=>h,i0:()=>j,jF:()=>i,jp:()=>k,mh:()=>l,wx:()=>m});let d=globalThis,e=d.__customizeStorageMaintenance??={active:!1},f=d.__customizeStorageApiWriters??=new Set;class g extends Error{constructor(){super("系统清空正在执行,暂不接收新的存储访问"),this.name="StorageMaintenanceError"}}function h(){return e.active}function i(){if(e.active)throw new g}async function j(a){i();let b=Promise.resolve(a());f.add(b);try{return await b}finally{f.delete(b)}}function k(){return[...f]}function l(){if(e.active)throw Error("已有系统清空任务正在执行");e.active=!0;let a=!1;return()=>{a||(a=!0,e.active=!1)}}async function m(a,b=1e4){let c;if(!a.length)return!0;try{return await Promise.race([Promise.allSettled(a).then(()=>!0),new Promise(a=>{c=setTimeout(()=>a(!1),b)})])}finally{c&&clearTimeout(c)}}},48161:a=>{a.exports=require("node:os")},51342:(a,b,c)=>{c.d(b,{Bn:()=>k,J0:()=>h});var d=c(73024),e=c(48161),f=c(96770),g=c(76760);function h(){return(0,f.resolveAgentStorageRoot)(process.env.CUSTOMIZE_AGENT_HOME?.trim()||e.homedir())}function i(){return g.join(h(),"state.json")}function j(){try{let a=JSON.parse(d.readFileSync(i(),"utf8")),b=a?.firstStartedAt;return"number"==typeof b&&Number.isFinite(b)&&b>0?{firstStartedAt:b}:null}catch{return null}}function k(a=Date.now()){return Math.max(0,Math.round((a-function(a=Date.now()){let b=j();if(b)return b.firstStartedAt;try{let b=i();d.mkdirSync(g.dirname(b),{recursive:!0});let c=`${b}.${process.pid}.${Date.now()}.tmp`;return d.writeFileSync(c,JSON.stringify({firstStartedAt:a}),"utf8"),d.renameSync(c,b),a}catch{return j()?.firstStartedAt??a}}(a))/1e3))}},55511:a=>{a.exports=require("crypto")},73024:a=>{a.exports=require("node:fs")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:a=>{a.exports=require("node:path")},96770:a=>{a.exports=require("@customize-agent/runtime")}};var b=require("../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705],()=>b(b.s=22922));module.exports=c})();
@@ -1,2 +1,3 @@
1
1
  "use strict";(()=>{var a={};a.id=4900,a.ids=[4900],a.modules={191:(a,b,c)=>{c.d(b,{cW:()=>p,hH:()=>q,mG:()=>t,wF:()=>o});var d=c(51342),e=c(29021),f=c.n(e),g=c(33873),h=c.n(g),i=c(55511),j=c.n(i);let k=h().join((0,d.J0)(),"logs"),l=h().join(k,"errors.jsonl"),m="errors-";function n(){try{return f().readdirSync(k).filter(a=>a.startsWith(m)&&a.endsWith(".jsonl")).sort().reverse()}catch{return[]}}function o(a){let{message:b,stack:c}=function(a){if(a instanceof Error)return{message:a.message,stack:a.stack};if("string"==typeof a)return{message:a};try{return{message:JSON.stringify(a)}}catch{return{message:String(a)}}}(a.error),d={id:`err_${Date.now()}_${j().randomBytes(4).toString("hex")}`,level:a.level||"error",source:a.source,functionName:a.functionName,message:b,stack:c,request:a.req?{method:a.req.method,url:a.req.url,query:a.req.query}:void 0,meta:a.meta,createdAt:Date.now()};try{f().mkdirSync(k,{recursive:!0}),function(){try{if(f().statSync(l).size<=2097152)return;f().renameSync(l,h().join(k,`${m}${Date.now()}.jsonl`)),function(){for(let a of n().slice(20))try{f().rmSync(h().join(k,a),{force:!0})}catch{}}()}catch{}}(),f().appendFileSync(l,`${JSON.stringify(d)}
2
- `)}catch(a){console.error("[errorLogService] failed to write error log",a)}return d}function p(a=200){let b=[l,...n().map(a=>h().join(k,a))],c=[];for(let d of b){if(c.length>=a)break;for(let b of(function(a){try{return f().readFileSync(a,"utf8").split("\n").filter(Boolean).flatMap(a=>{try{return[JSON.parse(a)]}catch{return[]}})}catch{return[]}})(d).reverse())if(c.push(b),c.length>=a)break}return c}function q(){let a=0;if(f().existsSync(l))try{f().rmSync(l,{force:!0}),a++}catch{}for(let b of n())try{f().rmSync(h().join(k,b),{force:!0}),a++}catch{}return a}let r=!1;function s(a,b,c,d=20){let e=0,f=0;return g=>{try{b(g);let h=Date.now();h-e>6e4&&(e=h,f=0),f<d&&(f+=1,c(a,g))}catch{}}}function t(){r||(r=!0,process.on("uncaughtException",s("uncaughtException",a=>o({source:"process",functionName:"uncaughtException",error:a}),(a,b)=>console.error(`[process] ${a}`,b))),process.on("unhandledRejection",s("unhandledRejection",a=>o({source:"process",functionName:"unhandledRejection",error:a}),(a,b)=>console.error(`[process] ${a}`,b))))}},16006:(a,b,c)=>{c.d(b,{j:()=>f});var d=c(191),e=c(47774);function f(a,b){return async function(c,f){let g=async()=>{try{await b(c,f)}catch(h){if(h instanceof e.Bc){f.headersSent||f.status(503).json({error:h.message});return}let g=(0,d.wF)({source:a,functionName:b.name||"anonymous",error:h,req:c});console.error(`[${a}]`,g.id,h),f.headersSent||f.status(500).json({error:h instanceof Error?h.message:"Internal server error",requestId:g.id})}};if("api/system/reset"===a||a.startsWith("api/health"))return void await g();try{await (0,e.i0)(g)}catch(a){if(a instanceof e.Bc&&!f.headersSent)f.status(503).json({error:a.message});else throw a}}}(0,d.mG)()},29021:a=>{a.exports=require("fs")},29281:(a,b,c)=>{c.d(b,{I:()=>i,R:()=>j});var d=c(96770),e=c(51342),f=c(47774);let g=globalThis,h=g.__customizeConfigStores??=new Map;function i(){(0,f.jF)();let a=(0,e.J0)();return h.has(a)||h.set(a,new d.ConfigStore(a)),h.get(a)}function j(){h.clear()}},33873:a=>{a.exports=require("path")},47774:(a,b,c)=>{c.d(b,{Bc:()=>g,b:()=>h,i0:()=>j,jF:()=>i,jp:()=>k,mh:()=>l,wx:()=>m});let d=globalThis,e=d.__customizeStorageMaintenance??={active:!1},f=d.__customizeStorageApiWriters??=new Set;class g extends Error{constructor(){super("系统清空正在执行,暂不接收新的存储访问"),this.name="StorageMaintenanceError"}}function h(){return e.active}function i(){if(e.active)throw new g}async function j(a){i();let b=Promise.resolve(a());f.add(b);try{return await b}finally{f.delete(b)}}function k(){return[...f]}function l(){if(e.active)throw Error("已有系统清空任务正在执行");e.active=!0;let a=!1;return()=>{a||(a=!0,e.active=!1)}}async function m(a,b=1e4){let c;if(!a.length)return!0;try{return await Promise.race([Promise.allSettled(a).then(()=>!0),new Promise(a=>{c=setTimeout(()=>a(!1),b)})])}finally{c&&clearTimeout(c)}}},48161:a=>{a.exports=require("node:os")},51342:(a,b,c)=>{c.d(b,{Bn:()=>k,J0:()=>h});var d=c(73024),e=c(48161),f=c(96770),g=c(76760);function h(){return(0,f.resolveAgentStorageRoot)(process.env.CUSTOMIZE_AGENT_HOME?.trim()||e.homedir())}function i(){return g.join(h(),"state.json")}function j(){try{let a=JSON.parse(d.readFileSync(i(),"utf8")),b=a?.firstStartedAt;return"number"==typeof b&&Number.isFinite(b)&&b>0?{firstStartedAt:b}:null}catch{return null}}function k(a=Date.now()){return Math.max(0,Math.round((a-function(a=Date.now()){let b=j();if(b)return b.firstStartedAt;try{let b=i();d.mkdirSync(g.dirname(b),{recursive:!0});let c=`${b}.${process.pid}.${Date.now()}.tmp`;return d.writeFileSync(c,JSON.stringify({firstStartedAt:a}),"utf8"),d.renameSync(c,b),a}catch{return j()?.firstStartedAt??a}}(a))/1e3))}},55511:a=>{a.exports=require("crypto")},56669:(a,b,c)=>{c.r(b),c.d(b,{config:()=>p,default:()=>o,handler:()=>r});var d={};c.r(d),c.d(d,{default:()=>l});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(16006),j=c(29281),k=c(96770);let l=(0,i.j)("api/config/providers/[provider]",function(a,b){if(!["GET","DELETE"].includes(a.method))return b.status(405).json({error:"Method not allowed"});try{let c=a.query.provider,d=(0,j.I)(),e=d.getProvider(c);if(!e)return b.status(404).json({error:"Not found"});if("DELETE"===a.method){let a=d.load();return delete a.providers[c],a.models.list=a.models.list.filter(a=>a.provider!==c),a.models.active?.provider===c&&(a.models.active=null),d.save(a),b.status(200).json({success:!0})}b.status(200).json({name:c,apiKey:e.apiKey?"••••"+e.apiKey.slice(-4):void 0,baseUrl:e.baseUrl,protocol:e.protocol,directEndpoint:!0===e.directEndpoint,detectedProtocol:(0,k.detectProtocol)(c),hasApiKey:!!e.apiKey,capabilities:e.capabilities??{}})}catch(a){console.error("[api] config/providers/[provider]",a),b.status(500).json({error:"Internal server error"})}});var m=c(68970),n=c(50296);let o=(0,h.M)(d,"default"),p=(0,h.M)(d,"config"),q=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/config/providers/[provider]",pathname:"/api/config/providers/[provider]",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function r(a,b,c){let d=await q.prepare(a,b,{srcPage:"/api/config/providers/[provider]"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,m.getTracer)(),e=d.getActiveScopeSpan(),j=q.instrumentationOnRequestError.bind(q),k=async e=>q.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:q.isDev,page:"/api/config/providers/[provider]",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>j(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await k(e):await d.withPropagatedContext(a.headers,()=>d.trace(n.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:m.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(q.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},73024:a=>{a.exports=require("node:fs")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:a=>{a.exports=require("node:path")},96770:a=>{a.exports=require("@customize-agent/runtime")}};var b=require("../../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705],()=>b(b.s=56669));module.exports=c})();
2
+ `)}catch(a){console.error("[errorLogService] failed to write error log",a)}return d}function p(a=200){let b=[l,...n().map(a=>h().join(k,a))],c=[];for(let d of b){if(c.length>=a)break;for(let b of(function(a){try{return f().readFileSync(a,"utf8").split("\n").filter(Boolean).flatMap(a=>{try{return[JSON.parse(a)]}catch{return[]}})}catch{return[]}})(d).reverse())if(c.push(b),c.length>=a)break}return c}function q(){let a=0;if(f().existsSync(l))try{f().rmSync(l,{force:!0}),a++}catch{}for(let b of n())try{f().rmSync(h().join(k,b),{force:!0}),a++}catch{}return a}let r=!1;function s(a,b,c,d=20){let e=0,f=0;return g=>{try{b(g);let h=Date.now();h-e>6e4&&(e=h,f=0),f<d&&(f+=1,c(a,g))}catch{}}}function t(){r||(r=!0,process.on("uncaughtException",s("uncaughtException",a=>o({source:"process",functionName:"uncaughtException",error:a}),(a,b)=>console.error(`[process] ${a}`,b))),process.on("unhandledRejection",s("unhandledRejection",a=>o({source:"process",functionName:"unhandledRejection",error:a}),(a,b)=>console.error(`[process] ${a}`,b))))}},16006:(a,b,c)=>{c.d(b,{j:()=>f});var d=c(191),e=c(47774);function f(a,b){return async function(c,f){let g=async()=>{try{await b(c,f)}catch(h){if(h instanceof e.Bc){f.headersSent||f.status(503).json({error:h.message});return}let g=(0,d.wF)({source:a,functionName:b.name||"anonymous",error:h,req:c});console.error(`[${a}]`,g.id,h),f.headersSent||f.status(500).json({error:h instanceof Error?h.message:"Internal server error",requestId:g.id})}};if("api/system/reset"===a||a.startsWith("api/health"))return void await g();try{await (0,e.i0)(g)}catch(a){if(a instanceof e.Bc&&!f.headersSent)f.status(503).json({error:a.message});else throw a}}}(0,d.mG)()},29021:a=>{a.exports=require("fs")},29281:(a,b,c)=>{c.d(b,{IS:()=>k,R1:()=>l,jU:()=>m});var d=c(96770),e=c(29021),f=c(33873),g=c(51342),h=c(47774);let i=globalThis,j=i.__customizeConfigStores??=new Map;function k(){(0,h.jF)();let a=(0,g.J0)();return j.has(a)||j.set(a,new d.ConfigStore(a)),j.get(a)}function l(){j.clear()}function m(a={}){let b;(0,h.jF)();let c=f.join((0,g.J0)(),"config.json"),d=e.existsSync(c);if(d&&!e.statSync(c).isFile())throw Error(`配置路径不是普通文件,无法清除:${c}`);let i=null;if(d){b=f.join(f.dirname(c),`config.backup-${new Date().toISOString().replace(/[:.]/gu,"-")}.json`),e.copyFileSync(c,b);try{let a=JSON.parse(e.readFileSync(c,"utf-8"));i=a&&"object"==typeof a&&!Array.isArray(a)?a:null}catch{i=null}}let j="models"==("all"===a.scope?"all":"models")&&null!==i;return j?e.writeFileSync(c,`${JSON.stringify({...i,models:{active:null,list:[]}},null,2)}
3
+ `,{mode:384}):d&&e.rmSync(c,{force:!0}),l(),j||k().load(),{mode:j?"models":"all",backupPath:b,sourceParsed:null!==i}}},33873:a=>{a.exports=require("path")},47774:(a,b,c)=>{c.d(b,{Bc:()=>g,b:()=>h,i0:()=>j,jF:()=>i,jp:()=>k,mh:()=>l,wx:()=>m});let d=globalThis,e=d.__customizeStorageMaintenance??={active:!1},f=d.__customizeStorageApiWriters??=new Set;class g extends Error{constructor(){super("系统清空正在执行,暂不接收新的存储访问"),this.name="StorageMaintenanceError"}}function h(){return e.active}function i(){if(e.active)throw new g}async function j(a){i();let b=Promise.resolve(a());f.add(b);try{return await b}finally{f.delete(b)}}function k(){return[...f]}function l(){if(e.active)throw Error("已有系统清空任务正在执行");e.active=!0;let a=!1;return()=>{a||(a=!0,e.active=!1)}}async function m(a,b=1e4){let c;if(!a.length)return!0;try{return await Promise.race([Promise.allSettled(a).then(()=>!0),new Promise(a=>{c=setTimeout(()=>a(!1),b)})])}finally{c&&clearTimeout(c)}}},48161:a=>{a.exports=require("node:os")},51342:(a,b,c)=>{c.d(b,{Bn:()=>k,J0:()=>h});var d=c(73024),e=c(48161),f=c(96770),g=c(76760);function h(){return(0,f.resolveAgentStorageRoot)(process.env.CUSTOMIZE_AGENT_HOME?.trim()||e.homedir())}function i(){return g.join(h(),"state.json")}function j(){try{let a=JSON.parse(d.readFileSync(i(),"utf8")),b=a?.firstStartedAt;return"number"==typeof b&&Number.isFinite(b)&&b>0?{firstStartedAt:b}:null}catch{return null}}function k(a=Date.now()){return Math.max(0,Math.round((a-function(a=Date.now()){let b=j();if(b)return b.firstStartedAt;try{let b=i();d.mkdirSync(g.dirname(b),{recursive:!0});let c=`${b}.${process.pid}.${Date.now()}.tmp`;return d.writeFileSync(c,JSON.stringify({firstStartedAt:a}),"utf8"),d.renameSync(c,b),a}catch{return j()?.firstStartedAt??a}}(a))/1e3))}},55511:a=>{a.exports=require("crypto")},56669:(a,b,c)=>{c.r(b),c.d(b,{config:()=>p,default:()=>o,handler:()=>r});var d={};c.r(d),c.d(d,{default:()=>l});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(16006),j=c(29281),k=c(96770);let l=(0,i.j)("api/config/providers/[provider]",function(a,b){if(!["GET","DELETE"].includes(a.method))return b.status(405).json({error:"Method not allowed"});try{let c=a.query.provider,d=(0,j.IS)(),e=d.getProvider(c);if(!e)return b.status(404).json({error:"Not found"});if("DELETE"===a.method){let a=d.load();return delete a.providers[c],a.models.list=a.models.list.filter(a=>a.provider!==c),a.models.active?.provider===c&&(a.models.active=null),d.save(a),b.status(200).json({success:!0})}b.status(200).json({name:c,apiKey:e.apiKey?"••••"+e.apiKey.slice(-4):void 0,baseUrl:e.baseUrl,protocol:e.protocol,directEndpoint:!0===e.directEndpoint,detectedProtocol:(0,k.detectProtocol)(c),hasApiKey:!!e.apiKey,capabilities:e.capabilities??{}})}catch(a){console.error("[api] config/providers/[provider]",a),b.status(500).json({error:"Internal server error"})}});var m=c(68970),n=c(50296);let o=(0,h.M)(d,"default"),p=(0,h.M)(d,"config"),q=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/config/providers/[provider]",pathname:"/api/config/providers/[provider]",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function r(a,b,c){let d=await q.prepare(a,b,{srcPage:"/api/config/providers/[provider]"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,m.getTracer)(),e=d.getActiveScopeSpan(),j=q.instrumentationOnRequestError.bind(q),k=async e=>q.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:q.isDev,page:"/api/config/providers/[provider]",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>j(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await k(e):await d.withPropagatedContext(a.headers,()=>d.trace(n.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:m.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(q.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},73024:a=>{a.exports=require("node:fs")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:a=>{a.exports=require("node:path")},96770:a=>{a.exports=require("@customize-agent/runtime")}};var b=require("../../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705],()=>b(b.s=56669));module.exports=c})();
@@ -1,2 +1,3 @@
1
1
  "use strict";(()=>{var a={};a.id=6350,a.ids=[6350],a.modules={191:(a,b,c)=>{c.d(b,{cW:()=>p,hH:()=>q,mG:()=>t,wF:()=>o});var d=c(51342),e=c(29021),f=c.n(e),g=c(33873),h=c.n(g),i=c(55511),j=c.n(i);let k=h().join((0,d.J0)(),"logs"),l=h().join(k,"errors.jsonl"),m="errors-";function n(){try{return f().readdirSync(k).filter(a=>a.startsWith(m)&&a.endsWith(".jsonl")).sort().reverse()}catch{return[]}}function o(a){let{message:b,stack:c}=function(a){if(a instanceof Error)return{message:a.message,stack:a.stack};if("string"==typeof a)return{message:a};try{return{message:JSON.stringify(a)}}catch{return{message:String(a)}}}(a.error),d={id:`err_${Date.now()}_${j().randomBytes(4).toString("hex")}`,level:a.level||"error",source:a.source,functionName:a.functionName,message:b,stack:c,request:a.req?{method:a.req.method,url:a.req.url,query:a.req.query}:void 0,meta:a.meta,createdAt:Date.now()};try{f().mkdirSync(k,{recursive:!0}),function(){try{if(f().statSync(l).size<=2097152)return;f().renameSync(l,h().join(k,`${m}${Date.now()}.jsonl`)),function(){for(let a of n().slice(20))try{f().rmSync(h().join(k,a),{force:!0})}catch{}}()}catch{}}(),f().appendFileSync(l,`${JSON.stringify(d)}
2
- `)}catch(a){console.error("[errorLogService] failed to write error log",a)}return d}function p(a=200){let b=[l,...n().map(a=>h().join(k,a))],c=[];for(let d of b){if(c.length>=a)break;for(let b of(function(a){try{return f().readFileSync(a,"utf8").split("\n").filter(Boolean).flatMap(a=>{try{return[JSON.parse(a)]}catch{return[]}})}catch{return[]}})(d).reverse())if(c.push(b),c.length>=a)break}return c}function q(){let a=0;if(f().existsSync(l))try{f().rmSync(l,{force:!0}),a++}catch{}for(let b of n())try{f().rmSync(h().join(k,b),{force:!0}),a++}catch{}return a}let r=!1;function s(a,b,c,d=20){let e=0,f=0;return g=>{try{b(g);let h=Date.now();h-e>6e4&&(e=h,f=0),f<d&&(f+=1,c(a,g))}catch{}}}function t(){r||(r=!0,process.on("uncaughtException",s("uncaughtException",a=>o({source:"process",functionName:"uncaughtException",error:a}),(a,b)=>console.error(`[process] ${a}`,b))),process.on("unhandledRejection",s("unhandledRejection",a=>o({source:"process",functionName:"unhandledRejection",error:a}),(a,b)=>console.error(`[process] ${a}`,b))))}},16006:(a,b,c)=>{c.d(b,{j:()=>f});var d=c(191),e=c(47774);function f(a,b){return async function(c,f){let g=async()=>{try{await b(c,f)}catch(h){if(h instanceof e.Bc){f.headersSent||f.status(503).json({error:h.message});return}let g=(0,d.wF)({source:a,functionName:b.name||"anonymous",error:h,req:c});console.error(`[${a}]`,g.id,h),f.headersSent||f.status(500).json({error:h instanceof Error?h.message:"Internal server error",requestId:g.id})}};if("api/system/reset"===a||a.startsWith("api/health"))return void await g();try{await (0,e.i0)(g)}catch(a){if(a instanceof e.Bc&&!f.headersSent)f.status(503).json({error:a.message});else throw a}}}(0,d.mG)()},29021:a=>{a.exports=require("fs")},29281:(a,b,c)=>{c.d(b,{I:()=>i,R:()=>j});var d=c(96770),e=c(51342),f=c(47774);let g=globalThis,h=g.__customizeConfigStores??=new Map;function i(){(0,f.jF)();let a=(0,e.J0)();return h.has(a)||h.set(a,new d.ConfigStore(a)),h.get(a)}function j(){h.clear()}},33873:a=>{a.exports=require("path")},47774:(a,b,c)=>{c.d(b,{Bc:()=>g,b:()=>h,i0:()=>j,jF:()=>i,jp:()=>k,mh:()=>l,wx:()=>m});let d=globalThis,e=d.__customizeStorageMaintenance??={active:!1},f=d.__customizeStorageApiWriters??=new Set;class g extends Error{constructor(){super("系统清空正在执行,暂不接收新的存储访问"),this.name="StorageMaintenanceError"}}function h(){return e.active}function i(){if(e.active)throw new g}async function j(a){i();let b=Promise.resolve(a());f.add(b);try{return await b}finally{f.delete(b)}}function k(){return[...f]}function l(){if(e.active)throw Error("已有系统清空任务正在执行");e.active=!0;let a=!1;return()=>{a||(a=!0,e.active=!1)}}async function m(a,b=1e4){let c;if(!a.length)return!0;try{return await Promise.race([Promise.allSettled(a).then(()=>!0),new Promise(a=>{c=setTimeout(()=>a(!1),b)})])}finally{c&&clearTimeout(c)}}},48161:a=>{a.exports=require("node:os")},51342:(a,b,c)=>{c.d(b,{Bn:()=>k,J0:()=>h});var d=c(73024),e=c(48161),f=c(96770),g=c(76760);function h(){return(0,f.resolveAgentStorageRoot)(process.env.CUSTOMIZE_AGENT_HOME?.trim()||e.homedir())}function i(){return g.join(h(),"state.json")}function j(){try{let a=JSON.parse(d.readFileSync(i(),"utf8")),b=a?.firstStartedAt;return"number"==typeof b&&Number.isFinite(b)&&b>0?{firstStartedAt:b}:null}catch{return null}}function k(a=Date.now()){return Math.max(0,Math.round((a-function(a=Date.now()){let b=j();if(b)return b.firstStartedAt;try{let b=i();d.mkdirSync(g.dirname(b),{recursive:!0});let c=`${b}.${process.pid}.${Date.now()}.tmp`;return d.writeFileSync(c,JSON.stringify({firstStartedAt:a}),"utf8"),d.renameSync(c,b),a}catch{return j()?.firstStartedAt??a}}(a))/1e3))}},55511:a=>{a.exports=require("crypto")},73024:a=>{a.exports=require("node:fs")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:a=>{a.exports=require("node:path")},89572:(a,b,c)=>{c.r(b),c.d(b,{config:()=>p,default:()=>o,handler:()=>r});var d={};c.r(d),c.d(d,{default:()=>l});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(29281),j=c(96770);async function k(a,b){if(!["GET","POST"].includes(a.method))return b.status(405).json({error:"Method not allowed"});let c=(0,i.I)();if("POST"===a.method){let{name:d,modelName:e,apiKey:f,baseUrl:g,protocol:h,directEndpoint:i,capabilities:j,oldName:k}=a.body;if("string"!=typeof d||!d.trim())return b.status(400).json({error:"Provider name required"});let l=d.trim(),m="string"==typeof k&&k.trim()?k.trim():l,n=c.load();if(m!==l){if(!Object.hasOwn(n.providers,m))return b.status(400).json({error:"原供应商不存在"});if(Object.hasOwn(n.providers,l))return b.status(400).json({error:"目标供应商名称已存在,请使用不同名称"})}if(void 0!==e&&("string"!=typeof e||!e.trim()))return b.status(400).json({error:"实际模型标识不能为空"});let o=n.models.list.find(a=>a.provider===m),p="string"==typeof e?e.trim():o?.name??l,q={...n.providers[m]};if([f,g,h].some(a=>void 0!==a&&"string"!=typeof a)||void 0!==i&&"boolean"!=typeof i)return b.status(400).json({error:"模型服务连接字段类型无效"});if(void 0!==f&&(q.apiKey=f),void 0!==g&&(q.baseUrl=g),void 0!==h&&(q.protocol=h),void 0!==i&&(q.directEndpoint=i),void 0!==j){let a=["imageGeneration","imageUnderstanding","fileUnderstanding","audio","video","webSearch"];if(!j||"object"!=typeof j||Array.isArray(j)||Object.entries(j).some(([b,c])=>!a.includes(b)||"boolean"!=typeof c))return b.status(400).json({error:"模型服务能力配置无效"});q.capabilities={...j}}return m!==l&&delete n.providers[m],n.providers[l]=q,n.models.list=[...n.models.list.filter(a=>a.provider!==m),{...o,provider:l,name:p}],n.models.active?.provider===m&&(n.models.active={provider:l,name:p}),c.save(n),b.status(200).json({success:!0})}let d=c.load();b.status(200).json(Object.entries(d.providers).map(([a,b])=>({name:a,apiKey:b.apiKey?"••••"+b.apiKey.slice(-4):void 0,baseUrl:b.baseUrl,protocol:b.protocol,directEndpoint:!0===b.directEndpoint,detectedProtocol:(0,j.detectProtocol)(a),hasApiKey:!!b.apiKey,capabilities:b.capabilities??{}})))}let l=(0,c(16006).j)("api/config/providers",k);var m=c(68970),n=c(50296);let o=(0,h.M)(d,"default"),p=(0,h.M)(d,"config"),q=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/config/providers",pathname:"/api/config/providers",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function r(a,b,c){let d=await q.prepare(a,b,{srcPage:"/api/config/providers"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,m.getTracer)(),e=d.getActiveScopeSpan(),j=q.instrumentationOnRequestError.bind(q),k=async e=>q.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:q.isDev,page:"/api/config/providers",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>j(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await k(e):await d.withPropagatedContext(a.headers,()=>d.trace(n.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:m.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(q.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},96770:a=>{a.exports=require("@customize-agent/runtime")}};var b=require("../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705],()=>b(b.s=89572));module.exports=c})();
2
+ `)}catch(a){console.error("[errorLogService] failed to write error log",a)}return d}function p(a=200){let b=[l,...n().map(a=>h().join(k,a))],c=[];for(let d of b){if(c.length>=a)break;for(let b of(function(a){try{return f().readFileSync(a,"utf8").split("\n").filter(Boolean).flatMap(a=>{try{return[JSON.parse(a)]}catch{return[]}})}catch{return[]}})(d).reverse())if(c.push(b),c.length>=a)break}return c}function q(){let a=0;if(f().existsSync(l))try{f().rmSync(l,{force:!0}),a++}catch{}for(let b of n())try{f().rmSync(h().join(k,b),{force:!0}),a++}catch{}return a}let r=!1;function s(a,b,c,d=20){let e=0,f=0;return g=>{try{b(g);let h=Date.now();h-e>6e4&&(e=h,f=0),f<d&&(f+=1,c(a,g))}catch{}}}function t(){r||(r=!0,process.on("uncaughtException",s("uncaughtException",a=>o({source:"process",functionName:"uncaughtException",error:a}),(a,b)=>console.error(`[process] ${a}`,b))),process.on("unhandledRejection",s("unhandledRejection",a=>o({source:"process",functionName:"unhandledRejection",error:a}),(a,b)=>console.error(`[process] ${a}`,b))))}},16006:(a,b,c)=>{c.d(b,{j:()=>f});var d=c(191),e=c(47774);function f(a,b){return async function(c,f){let g=async()=>{try{await b(c,f)}catch(h){if(h instanceof e.Bc){f.headersSent||f.status(503).json({error:h.message});return}let g=(0,d.wF)({source:a,functionName:b.name||"anonymous",error:h,req:c});console.error(`[${a}]`,g.id,h),f.headersSent||f.status(500).json({error:h instanceof Error?h.message:"Internal server error",requestId:g.id})}};if("api/system/reset"===a||a.startsWith("api/health"))return void await g();try{await (0,e.i0)(g)}catch(a){if(a instanceof e.Bc&&!f.headersSent)f.status(503).json({error:a.message});else throw a}}}(0,d.mG)()},29021:a=>{a.exports=require("fs")},29281:(a,b,c)=>{c.d(b,{IS:()=>k,R1:()=>l,jU:()=>m});var d=c(96770),e=c(29021),f=c(33873),g=c(51342),h=c(47774);let i=globalThis,j=i.__customizeConfigStores??=new Map;function k(){(0,h.jF)();let a=(0,g.J0)();return j.has(a)||j.set(a,new d.ConfigStore(a)),j.get(a)}function l(){j.clear()}function m(a={}){let b;(0,h.jF)();let c=f.join((0,g.J0)(),"config.json"),d=e.existsSync(c);if(d&&!e.statSync(c).isFile())throw Error(`配置路径不是普通文件,无法清除:${c}`);let i=null;if(d){b=f.join(f.dirname(c),`config.backup-${new Date().toISOString().replace(/[:.]/gu,"-")}.json`),e.copyFileSync(c,b);try{let a=JSON.parse(e.readFileSync(c,"utf-8"));i=a&&"object"==typeof a&&!Array.isArray(a)?a:null}catch{i=null}}let j="models"==("all"===a.scope?"all":"models")&&null!==i;return j?e.writeFileSync(c,`${JSON.stringify({...i,models:{active:null,list:[]}},null,2)}
3
+ `,{mode:384}):d&&e.rmSync(c,{force:!0}),l(),j||k().load(),{mode:j?"models":"all",backupPath:b,sourceParsed:null!==i}}},33873:a=>{a.exports=require("path")},47774:(a,b,c)=>{c.d(b,{Bc:()=>g,b:()=>h,i0:()=>j,jF:()=>i,jp:()=>k,mh:()=>l,wx:()=>m});let d=globalThis,e=d.__customizeStorageMaintenance??={active:!1},f=d.__customizeStorageApiWriters??=new Set;class g extends Error{constructor(){super("系统清空正在执行,暂不接收新的存储访问"),this.name="StorageMaintenanceError"}}function h(){return e.active}function i(){if(e.active)throw new g}async function j(a){i();let b=Promise.resolve(a());f.add(b);try{return await b}finally{f.delete(b)}}function k(){return[...f]}function l(){if(e.active)throw Error("已有系统清空任务正在执行");e.active=!0;let a=!1;return()=>{a||(a=!0,e.active=!1)}}async function m(a,b=1e4){let c;if(!a.length)return!0;try{return await Promise.race([Promise.allSettled(a).then(()=>!0),new Promise(a=>{c=setTimeout(()=>a(!1),b)})])}finally{c&&clearTimeout(c)}}},48161:a=>{a.exports=require("node:os")},51342:(a,b,c)=>{c.d(b,{Bn:()=>k,J0:()=>h});var d=c(73024),e=c(48161),f=c(96770),g=c(76760);function h(){return(0,f.resolveAgentStorageRoot)(process.env.CUSTOMIZE_AGENT_HOME?.trim()||e.homedir())}function i(){return g.join(h(),"state.json")}function j(){try{let a=JSON.parse(d.readFileSync(i(),"utf8")),b=a?.firstStartedAt;return"number"==typeof b&&Number.isFinite(b)&&b>0?{firstStartedAt:b}:null}catch{return null}}function k(a=Date.now()){return Math.max(0,Math.round((a-function(a=Date.now()){let b=j();if(b)return b.firstStartedAt;try{let b=i();d.mkdirSync(g.dirname(b),{recursive:!0});let c=`${b}.${process.pid}.${Date.now()}.tmp`;return d.writeFileSync(c,JSON.stringify({firstStartedAt:a}),"utf8"),d.renameSync(c,b),a}catch{return j()?.firstStartedAt??a}}(a))/1e3))}},55511:a=>{a.exports=require("crypto")},73024:a=>{a.exports=require("node:fs")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:a=>{a.exports=require("node:path")},89572:(a,b,c)=>{c.r(b),c.d(b,{config:()=>p,default:()=>o,handler:()=>r});var d={};c.r(d),c.d(d,{default:()=>l});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(29281),j=c(96770);async function k(a,b){if(!["GET","POST"].includes(a.method))return b.status(405).json({error:"Method not allowed"});let c=(0,i.IS)();if("POST"===a.method){let{name:d,modelName:e,apiKey:f,baseUrl:g,protocol:h,directEndpoint:i,capabilities:j,oldName:k}=a.body;if("string"!=typeof d||!d.trim())return b.status(400).json({error:"Provider name required"});let l=d.trim(),m="string"==typeof k&&k.trim()?k.trim():l,n=c.load();if(m!==l){if(!Object.hasOwn(n.providers,m))return b.status(400).json({error:"原供应商不存在"});if(Object.hasOwn(n.providers,l))return b.status(400).json({error:"目标供应商名称已存在,请使用不同名称"})}if(void 0!==e&&("string"!=typeof e||!e.trim()))return b.status(400).json({error:"实际模型标识不能为空"});let o=n.models.list.find(a=>a.provider===m),p="string"==typeof e?e.trim():o?.name??l,q={...n.providers[m]};if([f,g,h].some(a=>void 0!==a&&"string"!=typeof a)||void 0!==i&&"boolean"!=typeof i)return b.status(400).json({error:"模型服务连接字段类型无效"});if(void 0!==f&&(q.apiKey=f),void 0!==g&&(q.baseUrl=g),void 0!==h&&(q.protocol=h),void 0!==i&&(q.directEndpoint=i),void 0!==j){let a=["imageGeneration","imageUnderstanding","fileUnderstanding","audio","video","webSearch"];if(!j||"object"!=typeof j||Array.isArray(j)||Object.entries(j).some(([b,c])=>!a.includes(b)||"boolean"!=typeof c))return b.status(400).json({error:"模型服务能力配置无效"});q.capabilities={...j}}return m!==l&&delete n.providers[m],n.providers[l]=q,n.models.list=[...n.models.list.filter(a=>a.provider!==m),{...o,provider:l,name:p}],n.models.active?.provider===m&&(n.models.active={provider:l,name:p}),c.save(n),b.status(200).json({success:!0})}let d=c.load();b.status(200).json(Object.entries(d.providers).map(([a,b])=>({name:a,apiKey:b.apiKey?"••••"+b.apiKey.slice(-4):void 0,baseUrl:b.baseUrl,protocol:b.protocol,directEndpoint:!0===b.directEndpoint,detectedProtocol:(0,j.detectProtocol)(a),hasApiKey:!!b.apiKey,capabilities:b.capabilities??{}})))}let l=(0,c(16006).j)("api/config/providers",k);var m=c(68970),n=c(50296);let o=(0,h.M)(d,"default"),p=(0,h.M)(d,"config"),q=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/config/providers",pathname:"/api/config/providers",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function r(a,b,c){let d=await q.prepare(a,b,{srcPage:"/api/config/providers"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,m.getTracer)(),e=d.getActiveScopeSpan(),j=q.instrumentationOnRequestError.bind(q),k=async e=>q.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:q.isDev,page:"/api/config/providers",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>j(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await k(e):await d.withPropagatedContext(a.headers,()=>d.trace(n.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:m.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(q.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},96770:a=>{a.exports=require("@customize-agent/runtime")}};var b=require("../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705],()=>b(b.s=89572));module.exports=c})();
@@ -0,0 +1,3 @@
1
+ "use strict";(()=>{var a={};a.id=701,a.ids=[701],a.modules={191:(a,b,c)=>{c.d(b,{cW:()=>p,hH:()=>q,mG:()=>t,wF:()=>o});var d=c(51342),e=c(29021),f=c.n(e),g=c(33873),h=c.n(g),i=c(55511),j=c.n(i);let k=h().join((0,d.J0)(),"logs"),l=h().join(k,"errors.jsonl"),m="errors-";function n(){try{return f().readdirSync(k).filter(a=>a.startsWith(m)&&a.endsWith(".jsonl")).sort().reverse()}catch{return[]}}function o(a){let{message:b,stack:c}=function(a){if(a instanceof Error)return{message:a.message,stack:a.stack};if("string"==typeof a)return{message:a};try{return{message:JSON.stringify(a)}}catch{return{message:String(a)}}}(a.error),d={id:`err_${Date.now()}_${j().randomBytes(4).toString("hex")}`,level:a.level||"error",source:a.source,functionName:a.functionName,message:b,stack:c,request:a.req?{method:a.req.method,url:a.req.url,query:a.req.query}:void 0,meta:a.meta,createdAt:Date.now()};try{f().mkdirSync(k,{recursive:!0}),function(){try{if(f().statSync(l).size<=2097152)return;f().renameSync(l,h().join(k,`${m}${Date.now()}.jsonl`)),function(){for(let a of n().slice(20))try{f().rmSync(h().join(k,a),{force:!0})}catch{}}()}catch{}}(),f().appendFileSync(l,`${JSON.stringify(d)}
2
+ `)}catch(a){console.error("[errorLogService] failed to write error log",a)}return d}function p(a=200){let b=[l,...n().map(a=>h().join(k,a))],c=[];for(let d of b){if(c.length>=a)break;for(let b of(function(a){try{return f().readFileSync(a,"utf8").split("\n").filter(Boolean).flatMap(a=>{try{return[JSON.parse(a)]}catch{return[]}})}catch{return[]}})(d).reverse())if(c.push(b),c.length>=a)break}return c}function q(){let a=0;if(f().existsSync(l))try{f().rmSync(l,{force:!0}),a++}catch{}for(let b of n())try{f().rmSync(h().join(k,b),{force:!0}),a++}catch{}return a}let r=!1;function s(a,b,c,d=20){let e=0,f=0;return g=>{try{b(g);let h=Date.now();h-e>6e4&&(e=h,f=0),f<d&&(f+=1,c(a,g))}catch{}}}function t(){r||(r=!0,process.on("uncaughtException",s("uncaughtException",a=>o({source:"process",functionName:"uncaughtException",error:a}),(a,b)=>console.error(`[process] ${a}`,b))),process.on("unhandledRejection",s("unhandledRejection",a=>o({source:"process",functionName:"unhandledRejection",error:a}),(a,b)=>console.error(`[process] ${a}`,b))))}},16006:(a,b,c)=>{c.d(b,{j:()=>f});var d=c(191),e=c(47774);function f(a,b){return async function(c,f){let g=async()=>{try{await b(c,f)}catch(h){if(h instanceof e.Bc){f.headersSent||f.status(503).json({error:h.message});return}let g=(0,d.wF)({source:a,functionName:b.name||"anonymous",error:h,req:c});console.error(`[${a}]`,g.id,h),f.headersSent||f.status(500).json({error:h instanceof Error?h.message:"Internal server error",requestId:g.id})}};if("api/system/reset"===a||a.startsWith("api/health"))return void await g();try{await (0,e.i0)(g)}catch(a){if(a instanceof e.Bc&&!f.headersSent)f.status(503).json({error:a.message});else throw a}}}(0,d.mG)()},29021:a=>{a.exports=require("fs")},29281:(a,b,c)=>{c.d(b,{IS:()=>k,R1:()=>l,jU:()=>m});var d=c(96770),e=c(29021),f=c(33873),g=c(51342),h=c(47774);let i=globalThis,j=i.__customizeConfigStores??=new Map;function k(){(0,h.jF)();let a=(0,g.J0)();return j.has(a)||j.set(a,new d.ConfigStore(a)),j.get(a)}function l(){j.clear()}function m(a={}){let b;(0,h.jF)();let c=f.join((0,g.J0)(),"config.json"),d=e.existsSync(c);if(d&&!e.statSync(c).isFile())throw Error(`配置路径不是普通文件,无法清除:${c}`);let i=null;if(d){b=f.join(f.dirname(c),`config.backup-${new Date().toISOString().replace(/[:.]/gu,"-")}.json`),e.copyFileSync(c,b);try{let a=JSON.parse(e.readFileSync(c,"utf-8"));i=a&&"object"==typeof a&&!Array.isArray(a)?a:null}catch{i=null}}let j="models"==("all"===a.scope?"all":"models")&&null!==i;return j?e.writeFileSync(c,`${JSON.stringify({...i,models:{active:null,list:[]}},null,2)}
3
+ `,{mode:384}):d&&e.rmSync(c,{force:!0}),l(),j||k().load(),{mode:j?"models":"all",backupPath:b,sourceParsed:null!==i}}},33873:a=>{a.exports=require("path")},40532:(a,b,c)=>{c.r(b),c.d(b,{config:()=>o,default:()=>n,handler:()=>q});var d={};c.r(d),c.d(d,{default:()=>k});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(29281);async function j(a,b){if("POST"!==a.method)return b.status(405).json({error:"Method not allowed"});let c=a.body?.scope==="all"?"all":"models";b.status(200).json({success:!0,...(0,i.jU)({scope:c})})}let k=(0,c(16006).j)("api/config/reset",j);var l=c(68970),m=c(50296);let n=(0,h.M)(d,"default"),o=(0,h.M)(d,"config"),p=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/config/reset",pathname:"/api/config/reset",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function q(a,b,c){let d=await p.prepare(a,b,{srcPage:"/api/config/reset"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,l.getTracer)(),e=d.getActiveScopeSpan(),j=p.instrumentationOnRequestError.bind(p),k=async e=>p.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:p.isDev,page:"/api/config/reset",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>j(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==m.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await k(e):await d.withPropagatedContext(a.headers,()=>d.trace(m.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:l.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(p.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},47774:(a,b,c)=>{c.d(b,{Bc:()=>g,b:()=>h,i0:()=>j,jF:()=>i,jp:()=>k,mh:()=>l,wx:()=>m});let d=globalThis,e=d.__customizeStorageMaintenance??={active:!1},f=d.__customizeStorageApiWriters??=new Set;class g extends Error{constructor(){super("系统清空正在执行,暂不接收新的存储访问"),this.name="StorageMaintenanceError"}}function h(){return e.active}function i(){if(e.active)throw new g}async function j(a){i();let b=Promise.resolve(a());f.add(b);try{return await b}finally{f.delete(b)}}function k(){return[...f]}function l(){if(e.active)throw Error("已有系统清空任务正在执行");e.active=!0;let a=!1;return()=>{a||(a=!0,e.active=!1)}}async function m(a,b=1e4){let c;if(!a.length)return!0;try{return await Promise.race([Promise.allSettled(a).then(()=>!0),new Promise(a=>{c=setTimeout(()=>a(!1),b)})])}finally{c&&clearTimeout(c)}}},48161:a=>{a.exports=require("node:os")},51342:(a,b,c)=>{c.d(b,{Bn:()=>k,J0:()=>h});var d=c(73024),e=c(48161),f=c(96770),g=c(76760);function h(){return(0,f.resolveAgentStorageRoot)(process.env.CUSTOMIZE_AGENT_HOME?.trim()||e.homedir())}function i(){return g.join(h(),"state.json")}function j(){try{let a=JSON.parse(d.readFileSync(i(),"utf8")),b=a?.firstStartedAt;return"number"==typeof b&&Number.isFinite(b)&&b>0?{firstStartedAt:b}:null}catch{return null}}function k(a=Date.now()){return Math.max(0,Math.round((a-function(a=Date.now()){let b=j();if(b)return b.firstStartedAt;try{let b=i();d.mkdirSync(g.dirname(b),{recursive:!0});let c=`${b}.${process.pid}.${Date.now()}.tmp`;return d.writeFileSync(c,JSON.stringify({firstStartedAt:a}),"utf8"),d.renameSync(c,b),a}catch{return j()?.firstStartedAt??a}}(a))/1e3))}},55511:a=>{a.exports=require("crypto")},73024:a=>{a.exports=require("node:fs")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:a=>{a.exports=require("node:path")},96770:a=>{a.exports=require("@customize-agent/runtime")}};var b=require("../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705],()=>b(b.s=40532));module.exports=c})();
@@ -0,0 +1 @@
1
+ {"version":1,"files":["../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/client/components/app-router-headers.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/compiled/bytes/index.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/compiled/bytes/package.json","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/compiled/next-server/pages-api.runtime.prod.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/compiled/raw-body/index.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/compiled/raw-body/package.json","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/lib/client-and-server-references.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/lib/constants.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/lib/interop-default.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/lib/is-error.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/lib/semver-noop.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/server/app-render/async-local-storage.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/server/lib/cache-handlers/default.external.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/server/lib/lru-cache.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/server/lib/trace/constants.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/server/lib/trace/tracer.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/server/load-manifest.external.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/server/response-cache/types.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/shared/lib/deep-freeze.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/shared/lib/invariant-error.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/shared/lib/is-plain-object.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/shared/lib/is-thenable.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/dist/shared/lib/server-reference-info.js","../../../../../../../node_modules/.pnpm/next@15.5.19_react-dom@19.2.7_react@19.2.7__react@19.2.7_sass@1.101.0/node_modules/next/package.json","../../../../../../../packages/runtime/dist/config-store.js","../../../../../../../packages/runtime/dist/index.js","../../../../../../../packages/runtime/dist/telemetry/audit-logger.js","../../../../../../../packages/runtime/node_modules/@customize-agent/types","../../../../../../../packages/runtime/package.json","../../../../../../../packages/types/dist/constants.js","../../../../../../../packages/types/dist/errors.js","../../../../../../../packages/types/dist/index.js","../../../../../../../packages/types/dist/node/storage-root.js","../../../../../../../packages/types/dist/session.js","../../../../../../../packages/types/dist/task.js","../../../../../../../packages/types/package.json","../../../../../node_modules/@customize-agent/runtime","../../../../../node_modules/next","../../../../../package.json","../../../../package.json","../../../chunks/9705.js","../../../webpack-api-runtime.js"]}
@@ -1,2 +1,3 @@
1
1
  "use strict";(()=>{var a={};a.id=8125,a.ids=[8125],a.modules={191:(a,b,c)=>{c.d(b,{cW:()=>p,hH:()=>q,mG:()=>t,wF:()=>o});var d=c(51342),e=c(29021),f=c.n(e),g=c(33873),h=c.n(g),i=c(55511),j=c.n(i);let k=h().join((0,d.J0)(),"logs"),l=h().join(k,"errors.jsonl"),m="errors-";function n(){try{return f().readdirSync(k).filter(a=>a.startsWith(m)&&a.endsWith(".jsonl")).sort().reverse()}catch{return[]}}function o(a){let{message:b,stack:c}=function(a){if(a instanceof Error)return{message:a.message,stack:a.stack};if("string"==typeof a)return{message:a};try{return{message:JSON.stringify(a)}}catch{return{message:String(a)}}}(a.error),d={id:`err_${Date.now()}_${j().randomBytes(4).toString("hex")}`,level:a.level||"error",source:a.source,functionName:a.functionName,message:b,stack:c,request:a.req?{method:a.req.method,url:a.req.url,query:a.req.query}:void 0,meta:a.meta,createdAt:Date.now()};try{f().mkdirSync(k,{recursive:!0}),function(){try{if(f().statSync(l).size<=2097152)return;f().renameSync(l,h().join(k,`${m}${Date.now()}.jsonl`)),function(){for(let a of n().slice(20))try{f().rmSync(h().join(k,a),{force:!0})}catch{}}()}catch{}}(),f().appendFileSync(l,`${JSON.stringify(d)}
2
- `)}catch(a){console.error("[errorLogService] failed to write error log",a)}return d}function p(a=200){let b=[l,...n().map(a=>h().join(k,a))],c=[];for(let d of b){if(c.length>=a)break;for(let b of(function(a){try{return f().readFileSync(a,"utf8").split("\n").filter(Boolean).flatMap(a=>{try{return[JSON.parse(a)]}catch{return[]}})}catch{return[]}})(d).reverse())if(c.push(b),c.length>=a)break}return c}function q(){let a=0;if(f().existsSync(l))try{f().rmSync(l,{force:!0}),a++}catch{}for(let b of n())try{f().rmSync(h().join(k,b),{force:!0}),a++}catch{}return a}let r=!1;function s(a,b,c,d=20){let e=0,f=0;return g=>{try{b(g);let h=Date.now();h-e>6e4&&(e=h,f=0),f<d&&(f+=1,c(a,g))}catch{}}}function t(){r||(r=!0,process.on("uncaughtException",s("uncaughtException",a=>o({source:"process",functionName:"uncaughtException",error:a}),(a,b)=>console.error(`[process] ${a}`,b))),process.on("unhandledRejection",s("unhandledRejection",a=>o({source:"process",functionName:"unhandledRejection",error:a}),(a,b)=>console.error(`[process] ${a}`,b))))}},16006:(a,b,c)=>{c.d(b,{j:()=>f});var d=c(191),e=c(47774);function f(a,b){return async function(c,f){let g=async()=>{try{await b(c,f)}catch(h){if(h instanceof e.Bc){f.headersSent||f.status(503).json({error:h.message});return}let g=(0,d.wF)({source:a,functionName:b.name||"anonymous",error:h,req:c});console.error(`[${a}]`,g.id,h),f.headersSent||f.status(500).json({error:h instanceof Error?h.message:"Internal server error",requestId:g.id})}};if("api/system/reset"===a||a.startsWith("api/health"))return void await g();try{await (0,e.i0)(g)}catch(a){if(a instanceof e.Bc&&!f.headersSent)f.status(503).json({error:a.message});else throw a}}}(0,d.mG)()},29021:a=>{a.exports=require("fs")},29281:(a,b,c)=>{c.d(b,{I:()=>i,R:()=>j});var d=c(96770),e=c(51342),f=c(47774);let g=globalThis,h=g.__customizeConfigStores??=new Map;function i(){(0,f.jF)();let a=(0,e.J0)();return h.has(a)||h.set(a,new d.ConfigStore(a)),h.get(a)}function j(){h.clear()}},33873:a=>{a.exports=require("path")},47774:(a,b,c)=>{c.d(b,{Bc:()=>g,b:()=>h,i0:()=>j,jF:()=>i,jp:()=>k,mh:()=>l,wx:()=>m});let d=globalThis,e=d.__customizeStorageMaintenance??={active:!1},f=d.__customizeStorageApiWriters??=new Set;class g extends Error{constructor(){super("系统清空正在执行,暂不接收新的存储访问"),this.name="StorageMaintenanceError"}}function h(){return e.active}function i(){if(e.active)throw new g}async function j(a){i();let b=Promise.resolve(a());f.add(b);try{return await b}finally{f.delete(b)}}function k(){return[...f]}function l(){if(e.active)throw Error("已有系统清空任务正在执行");e.active=!0;let a=!1;return()=>{a||(a=!0,e.active=!1)}}async function m(a,b=1e4){let c;if(!a.length)return!0;try{return await Promise.race([Promise.allSettled(a).then(()=>!0),new Promise(a=>{c=setTimeout(()=>a(!1),b)})])}finally{c&&clearTimeout(c)}}},48161:a=>{a.exports=require("node:os")},51342:(a,b,c)=>{c.d(b,{Bn:()=>k,J0:()=>h});var d=c(73024),e=c(48161),f=c(96770),g=c(76760);function h(){return(0,f.resolveAgentStorageRoot)(process.env.CUSTOMIZE_AGENT_HOME?.trim()||e.homedir())}function i(){return g.join(h(),"state.json")}function j(){try{let a=JSON.parse(d.readFileSync(i(),"utf8")),b=a?.firstStartedAt;return"number"==typeof b&&Number.isFinite(b)&&b>0?{firstStartedAt:b}:null}catch{return null}}function k(a=Date.now()){return Math.max(0,Math.round((a-function(a=Date.now()){let b=j();if(b)return b.firstStartedAt;try{let b=i();d.mkdirSync(g.dirname(b),{recursive:!0});let c=`${b}.${process.pid}.${Date.now()}.tmp`;return d.writeFileSync(c,JSON.stringify({firstStartedAt:a}),"utf8"),d.renameSync(c,b),a}catch{return j()?.firstStartedAt??a}}(a))/1e3))}},55511:a=>{a.exports=require("crypto")},73024:a=>{a.exports=require("node:fs")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:a=>{a.exports=require("node:path")},77285:(a,b,c)=>{c.r(b),c.d(b,{config:()=>p,default:()=>o,handler:()=>r});var d={};c.r(d),c.d(d,{default:()=>l});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(16006),j=c(29281);function k(a){let b=Number(a.maxQueriesPerChapter??2),c=Number(a.maxResultsPerQuery??3);return{enabled:!0===a.enabled,allowProjectFacts:!1,maxQueriesPerChapter:Number.isFinite(b)?Math.min(4,Math.max(1,Math.floor(b))):2,maxResultsPerQuery:Number.isFinite(c)?Math.min(5,Math.max(1,Math.floor(c))):3,trustedDomains:Array.isArray(a.trustedDomains)?a.trustedDomains.filter(a=>"string"==typeof a&&a.trim().length>0).map(a=>a.trim()).slice(0,30):[]}}let l=(0,i.j)("api/config/web-access",function(a,b){if(!["GET","PUT"].includes(a.method))return b.status(405).json({error:"Method not allowed"});try{let c=(0,j.I)(),d=k(c.load().webAccess||{enabled:!1,allowProjectFacts:!1,maxQueriesPerChapter:2,maxResultsPerQuery:3,trustedDomains:[]});if("PUT"===a.method){let e=a.body,f=k({...d,...e,allowProjectFacts:!1}),g=c.save({...c.load(),webAccess:f});return b.status(200).json(k(g.webAccess||f))}return b.status(200).json(d)}catch(a){console.error("[api] config/web-access",a),b.status(500).json({error:"Internal server error"})}});var m=c(68970),n=c(50296);let o=(0,h.M)(d,"default"),p=(0,h.M)(d,"config"),q=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/config/web-access",pathname:"/api/config/web-access",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function r(a,b,c){let d=await q.prepare(a,b,{srcPage:"/api/config/web-access"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,m.getTracer)(),e=d.getActiveScopeSpan(),j=q.instrumentationOnRequestError.bind(q),k=async e=>q.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:q.isDev,page:"/api/config/web-access",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>j(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await k(e):await d.withPropagatedContext(a.headers,()=>d.trace(n.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:m.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(q.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},96770:a=>{a.exports=require("@customize-agent/runtime")}};var b=require("../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705],()=>b(b.s=77285));module.exports=c})();
2
+ `)}catch(a){console.error("[errorLogService] failed to write error log",a)}return d}function p(a=200){let b=[l,...n().map(a=>h().join(k,a))],c=[];for(let d of b){if(c.length>=a)break;for(let b of(function(a){try{return f().readFileSync(a,"utf8").split("\n").filter(Boolean).flatMap(a=>{try{return[JSON.parse(a)]}catch{return[]}})}catch{return[]}})(d).reverse())if(c.push(b),c.length>=a)break}return c}function q(){let a=0;if(f().existsSync(l))try{f().rmSync(l,{force:!0}),a++}catch{}for(let b of n())try{f().rmSync(h().join(k,b),{force:!0}),a++}catch{}return a}let r=!1;function s(a,b,c,d=20){let e=0,f=0;return g=>{try{b(g);let h=Date.now();h-e>6e4&&(e=h,f=0),f<d&&(f+=1,c(a,g))}catch{}}}function t(){r||(r=!0,process.on("uncaughtException",s("uncaughtException",a=>o({source:"process",functionName:"uncaughtException",error:a}),(a,b)=>console.error(`[process] ${a}`,b))),process.on("unhandledRejection",s("unhandledRejection",a=>o({source:"process",functionName:"unhandledRejection",error:a}),(a,b)=>console.error(`[process] ${a}`,b))))}},16006:(a,b,c)=>{c.d(b,{j:()=>f});var d=c(191),e=c(47774);function f(a,b){return async function(c,f){let g=async()=>{try{await b(c,f)}catch(h){if(h instanceof e.Bc){f.headersSent||f.status(503).json({error:h.message});return}let g=(0,d.wF)({source:a,functionName:b.name||"anonymous",error:h,req:c});console.error(`[${a}]`,g.id,h),f.headersSent||f.status(500).json({error:h instanceof Error?h.message:"Internal server error",requestId:g.id})}};if("api/system/reset"===a||a.startsWith("api/health"))return void await g();try{await (0,e.i0)(g)}catch(a){if(a instanceof e.Bc&&!f.headersSent)f.status(503).json({error:a.message});else throw a}}}(0,d.mG)()},29021:a=>{a.exports=require("fs")},29281:(a,b,c)=>{c.d(b,{IS:()=>k,R1:()=>l,jU:()=>m});var d=c(96770),e=c(29021),f=c(33873),g=c(51342),h=c(47774);let i=globalThis,j=i.__customizeConfigStores??=new Map;function k(){(0,h.jF)();let a=(0,g.J0)();return j.has(a)||j.set(a,new d.ConfigStore(a)),j.get(a)}function l(){j.clear()}function m(a={}){let b;(0,h.jF)();let c=f.join((0,g.J0)(),"config.json"),d=e.existsSync(c);if(d&&!e.statSync(c).isFile())throw Error(`配置路径不是普通文件,无法清除:${c}`);let i=null;if(d){b=f.join(f.dirname(c),`config.backup-${new Date().toISOString().replace(/[:.]/gu,"-")}.json`),e.copyFileSync(c,b);try{let a=JSON.parse(e.readFileSync(c,"utf-8"));i=a&&"object"==typeof a&&!Array.isArray(a)?a:null}catch{i=null}}let j="models"==("all"===a.scope?"all":"models")&&null!==i;return j?e.writeFileSync(c,`${JSON.stringify({...i,models:{active:null,list:[]}},null,2)}
3
+ `,{mode:384}):d&&e.rmSync(c,{force:!0}),l(),j||k().load(),{mode:j?"models":"all",backupPath:b,sourceParsed:null!==i}}},33873:a=>{a.exports=require("path")},47774:(a,b,c)=>{c.d(b,{Bc:()=>g,b:()=>h,i0:()=>j,jF:()=>i,jp:()=>k,mh:()=>l,wx:()=>m});let d=globalThis,e=d.__customizeStorageMaintenance??={active:!1},f=d.__customizeStorageApiWriters??=new Set;class g extends Error{constructor(){super("系统清空正在执行,暂不接收新的存储访问"),this.name="StorageMaintenanceError"}}function h(){return e.active}function i(){if(e.active)throw new g}async function j(a){i();let b=Promise.resolve(a());f.add(b);try{return await b}finally{f.delete(b)}}function k(){return[...f]}function l(){if(e.active)throw Error("已有系统清空任务正在执行");e.active=!0;let a=!1;return()=>{a||(a=!0,e.active=!1)}}async function m(a,b=1e4){let c;if(!a.length)return!0;try{return await Promise.race([Promise.allSettled(a).then(()=>!0),new Promise(a=>{c=setTimeout(()=>a(!1),b)})])}finally{c&&clearTimeout(c)}}},48161:a=>{a.exports=require("node:os")},51342:(a,b,c)=>{c.d(b,{Bn:()=>k,J0:()=>h});var d=c(73024),e=c(48161),f=c(96770),g=c(76760);function h(){return(0,f.resolveAgentStorageRoot)(process.env.CUSTOMIZE_AGENT_HOME?.trim()||e.homedir())}function i(){return g.join(h(),"state.json")}function j(){try{let a=JSON.parse(d.readFileSync(i(),"utf8")),b=a?.firstStartedAt;return"number"==typeof b&&Number.isFinite(b)&&b>0?{firstStartedAt:b}:null}catch{return null}}function k(a=Date.now()){return Math.max(0,Math.round((a-function(a=Date.now()){let b=j();if(b)return b.firstStartedAt;try{let b=i();d.mkdirSync(g.dirname(b),{recursive:!0});let c=`${b}.${process.pid}.${Date.now()}.tmp`;return d.writeFileSync(c,JSON.stringify({firstStartedAt:a}),"utf8"),d.renameSync(c,b),a}catch{return j()?.firstStartedAt??a}}(a))/1e3))}},55511:a=>{a.exports=require("crypto")},73024:a=>{a.exports=require("node:fs")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:a=>{a.exports=require("node:path")},77285:(a,b,c)=>{c.r(b),c.d(b,{config:()=>p,default:()=>o,handler:()=>r});var d={};c.r(d),c.d(d,{default:()=>l});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(16006),j=c(29281);function k(a){let b=Number(a.maxQueriesPerChapter??2),c=Number(a.maxResultsPerQuery??3);return{enabled:!0===a.enabled,allowProjectFacts:!1,maxQueriesPerChapter:Number.isFinite(b)?Math.min(4,Math.max(1,Math.floor(b))):2,maxResultsPerQuery:Number.isFinite(c)?Math.min(5,Math.max(1,Math.floor(c))):3,trustedDomains:Array.isArray(a.trustedDomains)?a.trustedDomains.filter(a=>"string"==typeof a&&a.trim().length>0).map(a=>a.trim()).slice(0,30):[]}}let l=(0,i.j)("api/config/web-access",function(a,b){if(!["GET","PUT"].includes(a.method))return b.status(405).json({error:"Method not allowed"});try{let c=(0,j.IS)(),d=k(c.load().webAccess||{enabled:!1,allowProjectFacts:!1,maxQueriesPerChapter:2,maxResultsPerQuery:3,trustedDomains:[]});if("PUT"===a.method){let e=a.body,f=k({...d,...e,allowProjectFacts:!1}),g=c.save({...c.load(),webAccess:f});return b.status(200).json(k(g.webAccess||f))}return b.status(200).json(d)}catch(a){console.error("[api] config/web-access",a),b.status(500).json({error:"Internal server error"})}});var m=c(68970),n=c(50296);let o=(0,h.M)(d,"default"),p=(0,h.M)(d,"config"),q=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/config/web-access",pathname:"/api/config/web-access",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function r(a,b,c){let d=await q.prepare(a,b,{srcPage:"/api/config/web-access"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,m.getTracer)(),e=d.getActiveScopeSpan(),j=q.instrumentationOnRequestError.bind(q),k=async e=>q.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:q.isDev,page:"/api/config/web-access",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>j(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==n.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await k(e):await d.withPropagatedContext(a.headers,()=>d.trace(n.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:m.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(q.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},96770:a=>{a.exports=require("@customize-agent/runtime")}};var b=require("../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705],()=>b(b.s=77285));module.exports=c})();