@customize-agent/server 4.0.28 → 4.0.30

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 (39) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +5 -5
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/server/chunks/3445.js +21 -16
  5. package/.next/server/chunks/8204.js +1 -1
  6. package/.next/server/middleware-build-manifest.js +1 -1
  7. package/.next/server/pages/404.html +1 -1
  8. package/.next/server/pages/500.html +1 -1
  9. package/.next/server/pages/api/assets/generated.js +1 -1
  10. package/.next/server/pages/api/documents/export.js +2 -15
  11. package/.next/server/pages/api/documents/roles.js +1 -1
  12. package/.next/server/pages/api/documents/specs.js +1 -1
  13. package/.next/server/pages/asset-library.html +1 -1
  14. package/.next/server/pages/context/long-term.html +1 -1
  15. package/.next/server/pages/context/short-term.html +1 -1
  16. package/.next/server/pages/document-roles.html +1 -1
  17. package/.next/server/pages/document-specs.html +1 -1
  18. package/.next/server/pages/documents.html +1 -1
  19. package/.next/server/pages/guide.html +1 -1
  20. package/.next/server/pages/index.html +1 -1
  21. package/.next/server/pages/knowledge/file-detail.html +1 -1
  22. package/.next/server/pages/knowledge/files.html +1 -1
  23. package/.next/server/pages/knowledge/manage.html +1 -1
  24. package/.next/server/pages/knowledge/search.html +1 -1
  25. package/.next/server/pages/knowledge.html +1 -1
  26. package/.next/server/pages/models.html +1 -1
  27. package/.next/server/pages/overview.html +1 -1
  28. package/.next/server/pages/prompt.html +1 -1
  29. package/.next/server/pages/settings.html +1 -1
  30. package/.next/server/pages/system/logs.html +1 -1
  31. package/.next/server/pages-manifest.json +23 -23
  32. package/.next/static/chunks/pages/{_app-15f2d98b25c5d3ce.js → _app-8abe93a007ab30a7.js} +1 -1
  33. package/.next/static/chunks/pages/document-specs-0fa19a0e348efc80.js +1 -0
  34. package/.next/static/chunks/pages/documents-3b87f1bf389b2f18.js +1 -0
  35. package/.next/static/{vm4gX3opuCeylimLPKC7_ → dq39asOIM1hVN5SMdBZn3}/_buildManifest.js +1 -1
  36. package/package.json +4 -4
  37. package/.next/static/chunks/pages/document-specs-3a02d469bf6a43fa.js +0 -1
  38. package/.next/static/chunks/pages/documents-8516d74b25d9fa0d.js +0 -1
  39. /package/.next/static/{vm4gX3opuCeylimLPKC7_ → dq39asOIM1hVN5SMdBZn3}/_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=""/><title data-next-head="">500: Internal Server Error</title><link rel="preload" href="/_next/static/css/38dba0a7a42a8df3.css" as="style"/><link rel="stylesheet" href="/_next/static/css/38dba0a7a42a8df3.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-77d10b4726f13aa5.js" defer=""></script><script src="/_next/static/chunks/framework-161be364fd69a7ce.js" defer=""></script><script src="/_next/static/chunks/main-91fb767ebd74c9c1.js" defer=""></script><script src="/_next/static/chunks/pages/_app-15f2d98b25c5d3ce.js" defer=""></script><script src="/_next/static/chunks/pages/_error-282257fbdcc167b4.js" defer=""></script><script src="/_next/static/vm4gX3opuCeylimLPKC7_/_buildManifest.js" defer=""></script><script src="/_next/static/vm4gX3opuCeylimLPKC7_/_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_16_"><aside class="sidebar"><a href="/overview"><div class="sidebarLogo"><div class="sidebarLogoTitle" style="font-size:20px;font-weight:800;letter-spacing:0.5px"><span class="logoGradient">Customize Agent</span></div></div></a><button class="sidebarCollapseBtn" aria-label="收起侧边栏"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-left-close"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path><path d="m16 15-3-3 3-3"></path></svg></button><nav class="sidebarNav"><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>总览</span></div></a><div><div class="sidebarItem sidebarParent"><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>知识库</span><span class="sidebarChevron"><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-chevron-right"><path d="m9 18 6-6-6-6"></path></svg></span></div></div><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>模型配置</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>提示词管理</span></div></a><a href="/document-roles"><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>角色配置</span></div></a><a href="/document-specs"><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-file-text"><path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"></path><path d="M14 2v4a2 2 0 0 0 2 2h4"></path><path d="M10 9H8"></path><path d="M16 13H8"></path><path d="M16 17H8"></path></svg><span>文档规范包</span></div></a><a href="/documents"><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-files"><path d="M20 7h-3a2 2 0 0 1-2-2V2"></path><path d="M9 18a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h7l4 4v10a2 2 0 0 1-2 2Z"></path><path d="M3 7.6v12.8A1.6 1.6 0 0 0 4.6 22h9.8"></path></svg><span>工作流模版库</span></div></a><a href="/asset-library"><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-folder-open"><path d="m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"></path></svg><span>生成资源</span></div></a><div><div class="sidebarItem sidebarParent"><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-brain"><path d="M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z"></path><path d="M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z"></path><path d="M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4"></path><path d="M17.599 6.5a3 3 0 0 0 .399-1.375"></path><path d="M6.003 5.125A3 3 0 0 0 6.401 6.5"></path><path d="M3.477 10.896a4 4 0 0 1 .585-.396"></path><path d="M19.938 10.5a4 4 0 0 1 .585.396"></path><path d="M6 18a4 4 0 0 1-1.967-.516"></path><path d="M19.967 17.484A4 4 0 0 1 18 18"></path></svg><span>上下文工程</span><span class="sidebarChevron"><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-chevron-right"><path d="m9 18 6-6-6-6"></path></svg></span></div></div><a href="/system/logs"><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-bug"><path d="m8 2 1.88 1.88"></path><path d="M14.12 3.88 16 2"></path><path d="M9 7.13v-1a3.003 3.003 0 1 1 6 0v1"></path><path d="M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6"></path><path d="M12 20v-9"></path><path d="M6.53 9C4.6 8.8 3 7.1 3 5"></path><path d="M6 13H2"></path><path d="M3 21c0-2.1 1.7-3.9 3.8-4"></path><path d="M20.97 5c0 2.1-1.6 3.8-3.5 4"></path><path d="M22 13h-4"></path><path d="M17.2 17c2.1.1 3.8 1.9 3.8 4"></path></svg><span>系统日志</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>指引</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>设置</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_16_"><button type="button" class="ant-btn css-1pi45l5 css-var-_R_16_ 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":"vm4gX3opuCeylimLPKC7_","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=""/><title data-next-head="">500: Internal Server Error</title><link rel="preload" href="/_next/static/css/38dba0a7a42a8df3.css" as="style"/><link rel="stylesheet" href="/_next/static/css/38dba0a7a42a8df3.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-77d10b4726f13aa5.js" defer=""></script><script src="/_next/static/chunks/framework-161be364fd69a7ce.js" defer=""></script><script src="/_next/static/chunks/main-91fb767ebd74c9c1.js" defer=""></script><script src="/_next/static/chunks/pages/_app-8abe93a007ab30a7.js" defer=""></script><script src="/_next/static/chunks/pages/_error-282257fbdcc167b4.js" defer=""></script><script src="/_next/static/dq39asOIM1hVN5SMdBZn3/_buildManifest.js" defer=""></script><script src="/_next/static/dq39asOIM1hVN5SMdBZn3/_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_16_"><aside class="sidebar"><a href="/overview"><div class="sidebarLogo"><div class="sidebarLogoTitle" style="font-size:20px;font-weight:800;letter-spacing:0.5px"><span class="logoGradient">Customize Agent</span></div></div></a><button class="sidebarCollapseBtn" aria-label="收起侧边栏"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-left-close"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path><path d="m16 15-3-3 3-3"></path></svg></button><nav class="sidebarNav"><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>总览</span></div></a><div><div class="sidebarItem sidebarParent"><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>知识库</span><span class="sidebarChevron"><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-chevron-right"><path d="m9 18 6-6-6-6"></path></svg></span></div></div><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>模型配置</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>提示词管理</span></div></a><a href="/document-roles"><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>角色配置</span></div></a><a href="/document-specs"><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-file-text"><path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"></path><path d="M14 2v4a2 2 0 0 0 2 2h4"></path><path d="M10 9H8"></path><path d="M16 13H8"></path><path d="M16 17H8"></path></svg><span>文档规范包</span></div></a><a href="/documents"><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-files"><path d="M20 7h-3a2 2 0 0 1-2-2V2"></path><path d="M9 18a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h7l4 4v10a2 2 0 0 1-2 2Z"></path><path d="M3 7.6v12.8A1.6 1.6 0 0 0 4.6 22h9.8"></path></svg><span>工作流模版库</span></div></a><a href="/asset-library"><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-folder-open"><path d="m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"></path></svg><span>生成资源</span></div></a><div><div class="sidebarItem sidebarParent"><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-brain"><path d="M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z"></path><path d="M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z"></path><path d="M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4"></path><path d="M17.599 6.5a3 3 0 0 0 .399-1.375"></path><path d="M6.003 5.125A3 3 0 0 0 6.401 6.5"></path><path d="M3.477 10.896a4 4 0 0 1 .585-.396"></path><path d="M19.938 10.5a4 4 0 0 1 .585.396"></path><path d="M6 18a4 4 0 0 1-1.967-.516"></path><path d="M19.967 17.484A4 4 0 0 1 18 18"></path></svg><span>上下文工程</span><span class="sidebarChevron"><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-chevron-right"><path d="m9 18 6-6-6-6"></path></svg></span></div></div><a href="/system/logs"><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-bug"><path d="m8 2 1.88 1.88"></path><path d="M14.12 3.88 16 2"></path><path d="M9 7.13v-1a3.003 3.003 0 1 1 6 0v1"></path><path d="M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6"></path><path d="M12 20v-9"></path><path d="M6.53 9C4.6 8.8 3 7.1 3 5"></path><path d="M6 13H2"></path><path d="M3 21c0-2.1 1.7-3.9 3.8-4"></path><path d="M20.97 5c0 2.1-1.6 3.8-3.5 4"></path><path d="M22 13h-4"></path><path d="M17.2 17c2.1.1 3.8 1.9 3.8 4"></path></svg><span>系统日志</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>指引</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>设置</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_16_"><button type="button" class="ant-btn css-1pi45l5 css-var-_R_16_ 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":"dq39asOIM1hVN5SMdBZn3","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- "use strict";(()=>{var a={};a.id=6334,a.ids=[6334],a.modules={15751:a=>{a.exports=require("xlsx")},19898:a=>{a.exports=require("@customize-agent/knowledge")},21820:a=>{a.exports=require("os")},29021:a=>{a.exports=require("fs")},33873:a=>{a.exports=require("path")},48161:a=>{a.exports=require("node:os")},67572:(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);let i=require("node:child_process");var j=c(48161),k=c(89358);async function l(a,b){try{if("GET"===a.method)return b.status(200).json({assets:(0,k.BH)()});if("DELETE"===a.method){let c="string"==typeof a.query.id?a.query.id:a.body?.id;if(!c)return b.status(400).json({error:"id required"});return(0,k.JU)(c),b.status(200).json({ok:!0,assets:(0,k.BH)()})}if("POST"===a.method){let{id:c,action:d,target:e="file"}=a.body;if(!c||!d)return b.status(400).json({error:"id and action required"});if("index"===d){let a=await (0,k.uc)(c);if(!a)return b.status(404).json({error:"asset not found"});return b.status(200).json({asset:a,assets:(0,k.BH)()})}if("open"===d){let a=(0,k.Jz)(c,e);if(!a)return b.status(404).json({error:"asset file not found"});return(function(a){let b=(0,j.platform)();return"darwin"===b?(0,i.spawn)("open",[a],{detached:!0,stdio:"ignore"}):"win32"===b?(0,i.spawn)("cmd",["/c","start","",a],{detached:!0,stdio:"ignore",windowsHide:!0}):(0,i.spawn)("xdg-open",[a],{detached:!0,stdio:"ignore"})})(a).unref(),b.status(200).json({ok:!0})}}return b.status(405).json({error:"Method not allowed"})}catch(a){console.error("[api] assets/generated",a),b.status(500).json({error:a instanceof Error?a.message:"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/assets/generated",pathname:"/api/assets/generated",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function r(a,b,c){let d=await q.prepare(a,b,{srcPage:"/api/assets/generated"});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/assets/generated",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")},87550:a=>{a.exports=require("better-sqlite3")},89358:(a,b,c)=>{c.d(b,{r:()=>w,JU:()=>A,QG:()=>x,SE:()=>p,Gl:()=>l,yE:()=>z,v7:()=>t,uc:()=>C,BH:()=>y,M$:()=>s,Jz:()=>D,YL:()=>E,a6:()=>v});let d=require("node:crypto");var e=c(73024),f=c(48161),g=c(76760),h=c(73445),i=c(99842),j=c(23328);let k=new Map;function l(a=(0,j.aY)()){let b=g.join(f.homedir(),".customize-agent","projects",function(a=(0,j.aY)()){return d.createHash("sha1").update(g.resolve(a)).digest("hex").slice(0,12)}(a),"generatedDocuments");return e.mkdirSync(g.join(b,"drafts"),{recursive:!0}),e.mkdirSync(g.join(b,"assets"),{recursive:!0}),b}function m(a=(0,j.aY)()){return g.join(l(a),"index.json")}function n(a=(0,j.aY)()){return g.join(l(a),"assets.json")}function o(a,b=(0,j.aY)()){return g.join(l(b),"drafts",`${a}.json`)}function p(a,b=(0,j.aY)()){return a.path?g.isAbsolute(a.path)?a.path:a.path.startsWith("generatedDocuments/assets/")?g.join(l(b),a.path.replace(/^generatedDocuments\/assets\//u,"assets/")):g.join(b,"knowledgeBase",a.path):null}function q(a,b){try{return JSON.parse(e.readFileSync(a,"utf8"))}catch{return b}}function r(a,b){e.mkdirSync(g.dirname(a),{recursive:!0}),e.writeFileSync(a,JSON.stringify(b,null,2))}function s(a=(0,j.aY)()){return q(m(a),[]).sort((a,b)=>b.updatedAt-a.updatedAt)}function t(a,b=(0,j.aY)()){return q(o(a,b),null)}function u(a,b=(0,j.aY)()){let c=Date.now(),d={...a,updatedAt:c};r(o(d.id,b),d);let e=s(b).filter(a=>a.id!==d.id);return e.unshift(d),r(m(b),e.map(a=>({...a,draft:void 0,executionStages:a.executionStages}))),d}function v(a,b,c=(0,j.aY)()){let d=t(a,c);return d?u({...d,...b,id:a},c):null}function w(a,b=(0,j.aY)()){let c=t(a,b);if(!c||"generating"!==c.status)return null;for(let[b,c]of k)if(c.documentId===a){c.controller.abort(),k.delete(b);break}return u({...c,status:"failed",error:"用户中止",updatedAt:Date.now()},b)}function x(a,b=(0,j.aY)()){try{e.rmSync(o(a,b),{force:!0})}catch{console.warn("[generated-documents] 删除文档记录失败或文件不存在",a)}r(m(b),s(b).filter(b=>b.id!==a))}function y(a=(0,j.aY)()){return q(n(a),[]).sort((a,b)=>b.updatedAt-a.updatedAt)}function z(a,b=(0,j.aY)()){return y(b).find(b=>b.id===a)||null}function A(a,b=(0,j.aY)()){let c=z(a,b);if(!c)return!1;let d=p(c,b);if(d&&d.startsWith(l(b)))try{e.rmSync(d,{force:!0})}catch{console.warn("[generated-documents] 删除生成资源文件失败或文件不存在",d)}return r(n(b),y(b).filter(b=>b.id!==a)),!0}async function B(a,b=(0,j.aY)()){let c=g.join("生成文档",`${a.title.replace(/[\\/:*?"<>|]/gu,"_").slice(0,120)||"generated-document"}-${a.id}.md`).split(g.sep).join("/"),d=g.join(b,"knowledgeBase",c);e.mkdirSync(g.dirname(d),{recursive:!0}),e.writeFileSync(d,a.editedMarkdown||a.markdown,"utf8");let f=await (0,j.Qh)().getProject(b);return await f.reindexFile(c),c}async function C(a,b=(0,j.aY)()){let c=z(a,b);if(!c?.path)return null;let d=p(c,b);if(!d||!e.existsSync(d))throw Error("asset file not found");let f=g.join("生成资源",g.basename(c.path)).split(g.sep).join("/"),h=g.join(b,"knowledgeBase",f);e.mkdirSync(g.dirname(h),{recursive:!0}),d!==h&&e.copyFileSync(d,h);let i=await (0,j.Qh)().getProject(b);await i.reindexFile(f);let k=y(b).map(b=>b.id===a?{...b,path:f,source:"generated",indexed:!0,updatedAt:Date.now()}:b);return r(n(b),k),k.find(b=>b.id===a)||null}function D(a,b,c=(0,j.aY)()){let d=z(a,c);if(!d)return null;let f=p(d,c);return f&&e.existsSync(f)?"directory"===b?g.dirname(f):f:null}function E(a,b=(0,j.aY)()){let c=Date.now(),e=`doc-${c}-${d.randomBytes(4).toString("hex")}`,f=`task-${c}-${d.randomBytes(4).toString("hex")}`,l={id:e,taskId:f,templateId:a.templateId,title:"生成中",requirement:a.requirement||"",markdown:"",status:"generating",assets:[],createdAt:c,updatedAt:c};u(l,b);let m=new AbortController,o=(0,h.OX)({...a,projectRoot:b,signal:m.signal,onProgress:a=>{try{let c=t(e,b);c&&"generating"===c.status&&(u({...c,executionStages:a},b),console.log(`[gen] progress saved: ${a.length} stages, doc=${e}`))}catch(a){console.error("[gen] progress save error:",a)}}}).then(async a=>{let c=t(e,b);if(!c||"generating"!==c.status)return c??l;let d=a.validationIssues.filter(a=>"error"===a.level||"warning"===a.level).map(a=>a.suggestion?`${a.message}:${a.suggestion}`:a.message),f=u({...c,templateName:a.templateName,title:a.title,markdown:a.markdown,status:d.length>0?"warning":"completed",draft:a,executionStages:a.executionStages,assets:a.assets||[],completedAt:Date.now(),warningIssues:d},b);!function(a,b=(0,j.aY)()){let c=a.draft?.sources.slice(0,8).map(a=>a.filePath).join("、")||"无明确来源",d=a.warningIssues?.slice(0,5).join(";")||"无阻断问题";(0,i.i3)("project_fact",`文档《${a.title}》已基于模板“${a.templateName||a.templateId}”生成。用户要求:${a.requirement||"未填写"}。主要资料来源:${c}。校验结果:${d}。`,`Project: ${g.resolve(b)} | Generated document: ${a.id}`)}(f,b);let h=function(a,b,c=(0,j.aY)()){let d=Date.now(),e=[...y(c)];for(let c of a){let a=e.findIndex(a=>a.id===c.id),f=c.path?.startsWith("generatedDocuments/assets/")||"generated"===c.status||"prompt_ready"===c.status?"generated":"knowledge_base",h={...c,name:g.basename(c.path||c.url||c.id),source:f,indexed:a>=0&&e[a].indexed,usedByDocumentIds:a>=0?[...new Set([...e[a].usedByDocumentIds,b])]:[b],createdAt:a>=0?e[a].createdAt:d,updatedAt:d};a>=0?e[a]={...e[a],...h}:e.push(h)}return r(n(c),e),e}(a.assets||[],e,b);for(let a of(await B(f,b).catch(a=>console.warn("[generated-documents] 自动入库生成文档失败",a)),h.filter(a=>a.usedByDocumentIds.includes(e)&&!a.indexed)))await C(a.id,b).catch(b=>console.warn("[generated-documents] 自动入库生成资源失败",a.id,b));return f}).catch(a=>{let c=t(e,b);return c&&"generating"===c.status?u({...c,status:"failed",error:a instanceof Error?a.message:String(a)},b):c??l}).finally(()=>{k.delete(f)});return k.set(f,{id:f,documentId:e,status:"generating",controller:m,promise:o}),{taskId:f,documentId:e,record:l}}},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,3445],()=>b(b.s=67572));module.exports=c})();
1
+ "use strict";(()=>{var a={};a.id=6334,a.ids=[6334],a.modules={15751:a=>{a.exports=require("xlsx")},19898:a=>{a.exports=require("@customize-agent/knowledge")},21820:a=>{a.exports=require("os")},29021:a=>{a.exports=require("fs")},31421:a=>{a.exports=require("node:child_process")},33873:a=>{a.exports=require("path")},48161:a=>{a.exports=require("node:os")},55883:(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(31421),j=c(48161),k=c(89358);async function l(a,b){try{if("GET"===a.method)return b.status(200).json({assets:(0,k.BH)()});if("DELETE"===a.method){let c="string"==typeof a.query.id?a.query.id:a.body?.id;if(!c)return b.status(400).json({error:"id required"});return(0,k.JU)(c),b.status(200).json({ok:!0,assets:(0,k.BH)()})}if("POST"===a.method){let{id:c,action:d,target:e="file"}=a.body;if(!c||!d)return b.status(400).json({error:"id and action required"});if("index"===d){let a=await (0,k.uc)(c);if(!a)return b.status(404).json({error:"asset not found"});return b.status(200).json({asset:a,assets:(0,k.BH)()})}if("open"===d){let a=(0,k.Jz)(c,e);if(!a)return b.status(404).json({error:"asset file not found"});return(function(a){let b=(0,j.platform)();return"darwin"===b?(0,i.spawn)("open",[a],{detached:!0,stdio:"ignore"}):"win32"===b?(0,i.spawn)("cmd",["/c","start","",a],{detached:!0,stdio:"ignore",windowsHide:!0}):(0,i.spawn)("xdg-open",[a],{detached:!0,stdio:"ignore"})})(a).unref(),b.status(200).json({ok:!0})}}return b.status(405).json({error:"Method not allowed"})}catch(a){console.error("[api] assets/generated",a),b.status(500).json({error:a instanceof Error?a.message:"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/assets/generated",pathname:"/api/assets/generated",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function r(a,b,c){let d=await q.prepare(a,b,{srcPage:"/api/assets/generated"});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/assets/generated",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")},87550:a=>{a.exports=require("better-sqlite3")},89358:(a,b,c)=>{c.d(b,{r:()=>w,JU:()=>A,QG:()=>x,SE:()=>p,Gl:()=>l,yE:()=>z,v7:()=>t,uc:()=>C,BH:()=>y,M$:()=>s,Jz:()=>D,YL:()=>E,a6:()=>v});let d=require("node:crypto");var e=c(73024),f=c(48161),g=c(76760),h=c(73445),i=c(99842),j=c(23328);let k=new Map;function l(a=(0,j.aY)()){let b=g.join(f.homedir(),".customize-agent","projects",function(a=(0,j.aY)()){return d.createHash("sha1").update(g.resolve(a)).digest("hex").slice(0,12)}(a),"generatedDocuments");return e.mkdirSync(g.join(b,"drafts"),{recursive:!0}),e.mkdirSync(g.join(b,"assets"),{recursive:!0}),b}function m(a=(0,j.aY)()){return g.join(l(a),"index.json")}function n(a=(0,j.aY)()){return g.join(l(a),"assets.json")}function o(a,b=(0,j.aY)()){return g.join(l(b),"drafts",`${a}.json`)}function p(a,b=(0,j.aY)()){return a.path?g.isAbsolute(a.path)?a.path:a.path.startsWith("generatedDocuments/assets/")?g.join(l(b),a.path.replace(/^generatedDocuments\/assets\//u,"assets/")):g.join(b,"knowledgeBase",a.path):null}function q(a,b){try{return JSON.parse(e.readFileSync(a,"utf8"))}catch{return b}}function r(a,b){e.mkdirSync(g.dirname(a),{recursive:!0}),e.writeFileSync(a,JSON.stringify(b,null,2))}function s(a=(0,j.aY)()){return q(m(a),[]).sort((a,b)=>b.updatedAt-a.updatedAt)}function t(a,b=(0,j.aY)()){return q(o(a,b),null)}function u(a,b=(0,j.aY)()){let c=Date.now(),d={...a,updatedAt:c};r(o(d.id,b),d);let e=s(b).filter(a=>a.id!==d.id);return e.unshift(d),r(m(b),e.map(a=>({...a,draft:void 0,executionStages:a.executionStages}))),d}function v(a,b,c=(0,j.aY)()){let d=t(a,c);return d?u({...d,...b,id:a},c):null}function w(a,b=(0,j.aY)()){let c=t(a,b);if(!c||"generating"!==c.status)return null;for(let[b,c]of k)if(c.documentId===a){c.controller.abort(),k.delete(b);break}return u({...c,status:"failed",error:"用户中止",updatedAt:Date.now()},b)}function x(a,b=(0,j.aY)()){try{e.rmSync(o(a,b),{force:!0})}catch{console.warn("[generated-documents] 删除文档记录失败或文件不存在",a)}r(m(b),s(b).filter(b=>b.id!==a))}function y(a=(0,j.aY)()){return q(n(a),[]).sort((a,b)=>b.updatedAt-a.updatedAt)}function z(a,b=(0,j.aY)()){return y(b).find(b=>b.id===a)||null}function A(a,b=(0,j.aY)()){let c=z(a,b);if(!c)return!1;let d=p(c,b);if(d&&d.startsWith(l(b)))try{e.rmSync(d,{force:!0})}catch{console.warn("[generated-documents] 删除生成资源文件失败或文件不存在",d)}return r(n(b),y(b).filter(b=>b.id!==a)),!0}async function B(a,b=(0,j.aY)()){let c=g.join("生成文档",`${a.title.replace(/[\\/:*?"<>|]/gu,"_").slice(0,120)||"generated-document"}-${a.id}.md`).split(g.sep).join("/"),d=g.join(b,"knowledgeBase",c);e.mkdirSync(g.dirname(d),{recursive:!0}),e.writeFileSync(d,a.editedMarkdown||a.markdown,"utf8");let f=await (0,j.Qh)().getProject(b);return await f.reindexFile(c),c}async function C(a,b=(0,j.aY)()){let c=z(a,b);if(!c?.path)return null;let d=p(c,b);if(!d||!e.existsSync(d))throw Error("asset file not found");let f=g.join("生成资源",g.basename(c.path)).split(g.sep).join("/"),h=g.join(b,"knowledgeBase",f);e.mkdirSync(g.dirname(h),{recursive:!0}),d!==h&&e.copyFileSync(d,h);let i=await (0,j.Qh)().getProject(b);await i.reindexFile(f);let k=y(b).map(b=>b.id===a?{...b,path:f,source:"generated",indexed:!0,updatedAt:Date.now()}:b);return r(n(b),k),k.find(b=>b.id===a)||null}function D(a,b,c=(0,j.aY)()){let d=z(a,c);if(!d)return null;let f=p(d,c);return f&&e.existsSync(f)?"directory"===b?g.dirname(f):f:null}function E(a,b=(0,j.aY)()){let c=Date.now(),e=`doc-${c}-${d.randomBytes(4).toString("hex")}`,f=`task-${c}-${d.randomBytes(4).toString("hex")}`,l={id:e,taskId:f,templateId:a.templateId,title:"生成中",requirement:a.requirement||"",markdown:"",status:"generating",assets:[],createdAt:c,updatedAt:c};u(l,b);let m=new AbortController,o=(0,h.OX)({...a,projectRoot:b,signal:m.signal,onProgress:a=>{try{let c=t(e,b);c&&"generating"===c.status&&(u({...c,executionStages:a},b),console.log(`[gen] progress saved: ${a.length} stages, doc=${e}`))}catch(a){console.error("[gen] progress save error:",a)}}}).then(async a=>{let c=t(e,b);if(!c||"generating"!==c.status)return c??l;let d=a.validationIssues.filter(a=>"error"===a.level||"warning"===a.level).map(a=>a.suggestion?`${a.message}:${a.suggestion}`:a.message),f=u({...c,templateName:a.templateName,title:a.title,markdown:a.markdown,status:d.length>0?"warning":"completed",draft:a,executionStages:a.executionStages,assets:a.assets||[],completedAt:Date.now(),warningIssues:d},b);!function(a,b=(0,j.aY)()){let c=a.draft?.sources.slice(0,8).map(a=>a.filePath).join("、")||"无明确来源",d=a.warningIssues?.slice(0,5).join(";")||"无阻断问题";(0,i.i3)("project_fact",`文档《${a.title}》已基于模板“${a.templateName||a.templateId}”生成。用户要求:${a.requirement||"未填写"}。主要资料来源:${c}。校验结果:${d}。`,`Project: ${g.resolve(b)} | Generated document: ${a.id}`)}(f,b);let h=function(a,b,c=(0,j.aY)()){let d=Date.now(),e=[...y(c)];for(let c of a){let a=e.findIndex(a=>a.id===c.id),f=c.path?.startsWith("generatedDocuments/assets/")||"generated"===c.status||"prompt_ready"===c.status?"generated":"knowledge_base",h={...c,name:g.basename(c.path||c.url||c.id),source:f,indexed:a>=0&&e[a].indexed,usedByDocumentIds:a>=0?[...new Set([...e[a].usedByDocumentIds,b])]:[b],createdAt:a>=0?e[a].createdAt:d,updatedAt:d};a>=0?e[a]={...e[a],...h}:e.push(h)}return r(n(c),e),e}(a.assets||[],e,b);for(let a of(await B(f,b).catch(a=>console.warn("[generated-documents] 自动入库生成文档失败",a)),h.filter(a=>a.usedByDocumentIds.includes(e)&&!a.indexed)))await C(a.id,b).catch(b=>console.warn("[generated-documents] 自动入库生成资源失败",a.id,b));return f}).catch(a=>{let c=t(e,b);return c&&"generating"===c.status?u({...c,status:"failed",error:a instanceof Error?a.message:String(a)},b):c??l}).finally(()=>{k.delete(f)});return k.set(f,{id:f,documentId:e,status:"generating",controller:m,promise:o}),{taskId:f,documentId:e,record:l}}},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,3445],()=>b(b.s=55883));module.exports=c})();
@@ -1,15 +1,2 @@
1
- "use strict";(()=>{var a={};a.id=8644,a.ids=[8644],a.modules={15751:a=>{a.exports=require("xlsx")},17496:(a,b,c)=>{c.d(b,{j:()=>e});var d=c(49750);function e(a,b){return async function(c,e){try{await b(c,e)}catch(g){let f=(0,d.wF)({source:a,functionName:b.name||"anonymous",error:g,req:c});console.error(`[${a}]`,f.id,g),e.headersSent||e.status(500).json({error:g instanceof Error?g.message:"Internal server error",requestId:f.id})}}}(0,d.mG)()},19898:a=>{a.exports=require("@customize-agent/knowledge")},21820:a=>{a.exports=require("os")},29021:a=>{a.exports=require("fs")},33873:a=>{a.exports=require("path")},48161:a=>{a.exports=require("node:os")},49750:(a,b,c)=>{c.d(b,{hH:()=>p,mG:()=>r,cW:()=>o,wF:()=>n});var d=c(29021),e=c.n(d),f=c(21820),g=c.n(f),h=c(33873),i=c.n(h);let j=require("crypto");var k=c.n(j);let l=i().join(g().homedir(),".customize-agent","logs"),m=i().join(l,"errors.jsonl");function n(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()}_${k().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{e().mkdirSync(l,{recursive:!0}),function(){try{if(e().statSync(m).size<=2097152)return;e().renameSync(m,i().join(l,`errors-${Date.now()}.jsonl`))}catch{}}(),e().appendFileSync(m,`${JSON.stringify(d)}
2
- `)}catch(a){console.error("[errorLogService] failed to write error log",a)}return d}function o(a=200){try{return e().readFileSync(m,"utf8").split("\n").filter(Boolean).slice(-a).reverse().map(a=>JSON.parse(a))}catch{return[]}}function p(){try{e().rmSync(m,{force:!0})}catch{}}let q=!1;function r(){q||(q=!0,process.on("uncaughtException",a=>{n({source:"process",functionName:"uncaughtException",error:a}),console.error("[process] uncaughtException",a)}),process.on("unhandledRejection",a=>{n({source:"process",functionName:"unhandledRejection",error:a}),console.error("[process] unhandledRejection",a)}))}},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")},83142:a=>{a.exports=import("marked")},83237:a=>{a.exports=import("playwright")},87550:a=>{a.exports=require("better-sqlite3")},89358:(a,b,c)=>{c.d(b,{r:()=>w,JU:()=>A,QG:()=>x,SE:()=>p,Gl:()=>l,yE:()=>z,v7:()=>t,uc:()=>C,BH:()=>y,M$:()=>s,Jz:()=>D,YL:()=>E,a6:()=>v});let d=require("node:crypto");var e=c(73024),f=c(48161),g=c(76760),h=c(73445),i=c(99842),j=c(23328);let k=new Map;function l(a=(0,j.aY)()){let b=g.join(f.homedir(),".customize-agent","projects",function(a=(0,j.aY)()){return d.createHash("sha1").update(g.resolve(a)).digest("hex").slice(0,12)}(a),"generatedDocuments");return e.mkdirSync(g.join(b,"drafts"),{recursive:!0}),e.mkdirSync(g.join(b,"assets"),{recursive:!0}),b}function m(a=(0,j.aY)()){return g.join(l(a),"index.json")}function n(a=(0,j.aY)()){return g.join(l(a),"assets.json")}function o(a,b=(0,j.aY)()){return g.join(l(b),"drafts",`${a}.json`)}function p(a,b=(0,j.aY)()){return a.path?g.isAbsolute(a.path)?a.path:a.path.startsWith("generatedDocuments/assets/")?g.join(l(b),a.path.replace(/^generatedDocuments\/assets\//u,"assets/")):g.join(b,"knowledgeBase",a.path):null}function q(a,b){try{return JSON.parse(e.readFileSync(a,"utf8"))}catch{return b}}function r(a,b){e.mkdirSync(g.dirname(a),{recursive:!0}),e.writeFileSync(a,JSON.stringify(b,null,2))}function s(a=(0,j.aY)()){return q(m(a),[]).sort((a,b)=>b.updatedAt-a.updatedAt)}function t(a,b=(0,j.aY)()){return q(o(a,b),null)}function u(a,b=(0,j.aY)()){let c=Date.now(),d={...a,updatedAt:c};r(o(d.id,b),d);let e=s(b).filter(a=>a.id!==d.id);return e.unshift(d),r(m(b),e.map(a=>({...a,draft:void 0,executionStages:a.executionStages}))),d}function v(a,b,c=(0,j.aY)()){let d=t(a,c);return d?u({...d,...b,id:a},c):null}function w(a,b=(0,j.aY)()){let c=t(a,b);if(!c||"generating"!==c.status)return null;for(let[b,c]of k)if(c.documentId===a){c.controller.abort(),k.delete(b);break}return u({...c,status:"failed",error:"用户中止",updatedAt:Date.now()},b)}function x(a,b=(0,j.aY)()){try{e.rmSync(o(a,b),{force:!0})}catch{console.warn("[generated-documents] 删除文档记录失败或文件不存在",a)}r(m(b),s(b).filter(b=>b.id!==a))}function y(a=(0,j.aY)()){return q(n(a),[]).sort((a,b)=>b.updatedAt-a.updatedAt)}function z(a,b=(0,j.aY)()){return y(b).find(b=>b.id===a)||null}function A(a,b=(0,j.aY)()){let c=z(a,b);if(!c)return!1;let d=p(c,b);if(d&&d.startsWith(l(b)))try{e.rmSync(d,{force:!0})}catch{console.warn("[generated-documents] 删除生成资源文件失败或文件不存在",d)}return r(n(b),y(b).filter(b=>b.id!==a)),!0}async function B(a,b=(0,j.aY)()){let c=g.join("生成文档",`${a.title.replace(/[\\/:*?"<>|]/gu,"_").slice(0,120)||"generated-document"}-${a.id}.md`).split(g.sep).join("/"),d=g.join(b,"knowledgeBase",c);e.mkdirSync(g.dirname(d),{recursive:!0}),e.writeFileSync(d,a.editedMarkdown||a.markdown,"utf8");let f=await (0,j.Qh)().getProject(b);return await f.reindexFile(c),c}async function C(a,b=(0,j.aY)()){let c=z(a,b);if(!c?.path)return null;let d=p(c,b);if(!d||!e.existsSync(d))throw Error("asset file not found");let f=g.join("生成资源",g.basename(c.path)).split(g.sep).join("/"),h=g.join(b,"knowledgeBase",f);e.mkdirSync(g.dirname(h),{recursive:!0}),d!==h&&e.copyFileSync(d,h);let i=await (0,j.Qh)().getProject(b);await i.reindexFile(f);let k=y(b).map(b=>b.id===a?{...b,path:f,source:"generated",indexed:!0,updatedAt:Date.now()}:b);return r(n(b),k),k.find(b=>b.id===a)||null}function D(a,b,c=(0,j.aY)()){let d=z(a,c);if(!d)return null;let f=p(d,c);return f&&e.existsSync(f)?"directory"===b?g.dirname(f):f:null}function E(a,b=(0,j.aY)()){let c=Date.now(),e=`doc-${c}-${d.randomBytes(4).toString("hex")}`,f=`task-${c}-${d.randomBytes(4).toString("hex")}`,l={id:e,taskId:f,templateId:a.templateId,title:"生成中",requirement:a.requirement||"",markdown:"",status:"generating",assets:[],createdAt:c,updatedAt:c};u(l,b);let m=new AbortController,o=(0,h.OX)({...a,projectRoot:b,signal:m.signal,onProgress:a=>{try{let c=t(e,b);c&&"generating"===c.status&&(u({...c,executionStages:a},b),console.log(`[gen] progress saved: ${a.length} stages, doc=${e}`))}catch(a){console.error("[gen] progress save error:",a)}}}).then(async a=>{let c=t(e,b);if(!c||"generating"!==c.status)return c??l;let d=a.validationIssues.filter(a=>"error"===a.level||"warning"===a.level).map(a=>a.suggestion?`${a.message}:${a.suggestion}`:a.message),f=u({...c,templateName:a.templateName,title:a.title,markdown:a.markdown,status:d.length>0?"warning":"completed",draft:a,executionStages:a.executionStages,assets:a.assets||[],completedAt:Date.now(),warningIssues:d},b);!function(a,b=(0,j.aY)()){let c=a.draft?.sources.slice(0,8).map(a=>a.filePath).join("、")||"无明确来源",d=a.warningIssues?.slice(0,5).join(";")||"无阻断问题";(0,i.i3)("project_fact",`文档《${a.title}》已基于模板“${a.templateName||a.templateId}”生成。用户要求:${a.requirement||"未填写"}。主要资料来源:${c}。校验结果:${d}。`,`Project: ${g.resolve(b)} | Generated document: ${a.id}`)}(f,b);let h=function(a,b,c=(0,j.aY)()){let d=Date.now(),e=[...y(c)];for(let c of a){let a=e.findIndex(a=>a.id===c.id),f=c.path?.startsWith("generatedDocuments/assets/")||"generated"===c.status||"prompt_ready"===c.status?"generated":"knowledge_base",h={...c,name:g.basename(c.path||c.url||c.id),source:f,indexed:a>=0&&e[a].indexed,usedByDocumentIds:a>=0?[...new Set([...e[a].usedByDocumentIds,b])]:[b],createdAt:a>=0?e[a].createdAt:d,updatedAt:d};a>=0?e[a]={...e[a],...h}:e.push(h)}return r(n(c),e),e}(a.assets||[],e,b);for(let a of(await B(f,b).catch(a=>console.warn("[generated-documents] 自动入库生成文档失败",a)),h.filter(a=>a.usedByDocumentIds.includes(e)&&!a.indexed)))await C(a.id,b).catch(b=>console.warn("[generated-documents] 自动入库生成资源失败",a.id,b));return f}).catch(a=>{let c=t(e,b);return c&&"generating"===c.status?u({...c,status:"failed",error:a instanceof Error?a.message:String(a)},b):c??l}).finally(()=>{k.delete(f)});return k.set(f,{id:f,documentId:e,status:"generating",controller:m,promise:o}),{taskId:f,documentId:e,record:l}}},89529:(a,b,c)=>{c.r(b),c.d(b,{config:()=>F,default:()=>E,handler:()=>H});var d={};c.r(d),c.d(d,{__documentExportTest__:()=>A,default:()=>B});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(73024),j=c(76760);let k=require("jszip");var l=c.n(k),m=c(89358),n=c(23328),o=c(49750),p=c(17496);function q(a){return a.replace(/&/gu,"&amp;").replace(/</gu,"&lt;").replace(/>/gu,"&gt;").replace(/"/gu,"&quot;")}let r={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".webp":"image/webp",".gif":"image/gif",".svg":"image/svg+xml"};function s(a){return r[j.extname(a).toLowerCase()]||""}function t(a,b){let c=j.relative(b,a);return!!c&&!c.startsWith("..")&&!j.isAbsolute(c)}function u(a,b=(0,n.aY)()){if(!a||/^(?:https?:|data:|file:|blob:|#)/iu.test(a))return null;let c=function(a){try{return decodeURIComponent(a.split(/[?#]/u)[0]||a)}catch{return""}}(a);if(!c||j.isAbsolute(c))return null;let d=j.resolve(b,"knowledgeBase"),e=j.resolve((0,m.Gl)(b),"assets");return[c.startsWith("generatedDocuments/assets/")?j.resolve(e,c.replace(/^generatedDocuments\/assets\//u,"")):"",j.resolve(d,c)].filter(Boolean).find(a=>{let b=j.resolve(a);return(t(b,d)||t(b,e))&&!!s(b)&&i.existsSync(b)&&i.statSync(b).isFile()})||null}function v(a,b=(0,n.aY)()){let c=new Map,d=0;return a.replace(/<img\b([^>]*?)\bsrc=["']([^"']+)["']([^>]*)>/giu,(a,e,f,g)=>{let h=u(f,b);if(!h)return a;let j=i.statSync(h);if(j.size>8388608||d+j.size>0x2000000)return a;let k=c.get(h);return k||(k=`data:${s(h)};base64,${i.readFileSync(h).toString("base64")}`,c.set(h,k),d+=j.size),`<img${e}src="${k}"${g}>`})}function w(a){return a.replace(/<[^>]+>/gu,"").split("\n").map(a=>`<w:p><w:r><w:t xml:space="preserve">${q(a)}</w:t></w:r></w:p>`).join("")}async function x(a,b,c){if(c&&i.existsSync(c)){let d=await l().loadAsync(i.readFileSync(c)),e=d.file("word/document.xml");if(e){let c=await e.async("string");return d.file("word/document.xml",c.replace(/\{\{title\}\}/gu,q(a)).replace(/\{\{content\}\}/gu,w(b))),d.generateAsync({type:"nodebuffer"})}}let d=new(l());return d.file("[Content_Types].xml",'<?xml version="1.0" encoding="UTF-8"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="xml" ContentType="application/xml"/><Override PartName="/word/document.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"/></Types>'),d.folder("_rels")?.file(".rels",'<?xml version="1.0" encoding="UTF-8"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml"/></Relationships>'),d.folder("word")?.folder("_rels")?.file("document.xml.rels",'<?xml version="1.0" encoding="UTF-8"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"/>'),d.folder("word")?.file("document.xml",`<?xml version="1.0" encoding="UTF-8" standalone="yes"?><w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:body><w:p><w:r><w:t>${q(a)}</w:t></w:r></w:p>${w(b)}<w:sectPr><w:pgSz w:w="11906" w:h="16838"/><w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440"/></w:sectPr></w:body></w:document>`),d.generateAsync({type:"nodebuffer"})}function y(a){let b=a.message.trim();return!/^(事实冲突|必需章节缺失):/u.test(b)&&/出现禁用文本\s*(资料未提供|占位|TODO|TBD)|正文包含.*(资料未提供|占位)|图片、地图或附件引用路径明显无效|无效路径|表格语法错误|临时远程生成 URL|提示词全文|内部错误/iu.test(b)}async function z(a,b){var d;if("POST"!==a.method)return b.status(405).json({error:"Method not allowed"});let e=a.body,f=e.documentId?(0,m.v7)(e.documentId):null;if(e.documentId&&!f)return b.status(404).json({error:"Document not found"});let g=e.title||f?.title||"document",h="string"==typeof e.markdown?e.markdown:f?.editedMarkdown||f?.markdown||"",i=e.format||"markdown",j=f?.draft?.exportGate||e.exportGate,k=j?.blockingIssues?.filter(y)||[];if(e.enforceGate&&k.length)return b.status(422).json({error:"Export gate failed",issues:k});let l=g.replace(/[\\/:*?"<>|]/gu,"-").slice(0,80)||"document";if("markdown"===i)return b.setHeader("Content-Type","text/markdown; charset=utf-8"),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${l}.md`)}`),b.status(200).send(h);if("docx"===i){let a=await x(g,h,e.wordTemplatePath);return b.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document"),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${l}.docx`)}`),b.status(200).send(a)}let{marked:p}=await Promise.resolve().then(c.bind(c,83142)),r=(0,n.aY)(),s=v((d=p.parse(h,{async:!1}),`<!doctype html><html lang="zh-CN"><head><meta charset="utf-8"><title>${q(g)}</title><style>@page{size:A4;margin:24mm 18mm 22mm 18mm}body{font-family:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans CJK SC",Arial,sans-serif;line-height:1.75;color:#111827;font-size:14px}h1{text-align:center;font-size:28px;margin-top:80px}h2{border-bottom:1px solid #d1d5db;padding-bottom:6px;margin-top:28px;page-break-after:avoid}h3{margin-top:20px}img{display:block;max-width:100%;max-height:520px;object-fit:contain;margin:12px auto;page-break-inside:avoid}table{width:100%;border-collapse:collapse;page-break-inside:auto}tr{page-break-inside:avoid;page-break-after:auto}th,td{border:1px solid #6b7280;padding:6px 8px;vertical-align:top}th{background:#f3f4f6}pre{white-space:pre-wrap}.document-cover{min-height:720px;display:flex;flex-direction:column;justify-content:center}.document-cover h1{margin-top:0}.page-break{page-break-after:always;height:0}</style></head><body>${d}</body></html>`),r);if("html"===i)return b.setHeader("Content-Type","text/html; charset=utf-8"),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${l}.html`)}`),b.status(200).send(s);try{let{chromium:a}=await Promise.resolve().then(c.bind(c,83237)),d=await a.launch({headless:!0,args:["--no-sandbox","--disable-setuid-sandbox"]});try{let a=await d.newPage({locale:"zh-CN"});await a.setContent(s,{waitUntil:"load"}),await a.waitForFunction(()=>Array.from(document.images).every(a=>a.complete&&a.naturalWidth>0),void 0,{timeout:1e4}).catch(()=>void 0),await a.emulateMedia({media:"print"});let c=await a.pdf({format:"A4",printBackground:!0,preferCSSPageSize:!0,margin:{top:"24mm",right:"18mm",bottom:"22mm",left:"18mm"},displayHeaderFooter:!0,headerTemplate:"<div></div>",footerTemplate:'<div style="font-size:9px;width:100%;text-align:center;color:#666;">第 <span class="pageNumber"></span> 页 / 共 <span class="totalPages"></span> 页</div>'});return b.setHeader("Content-Type","application/pdf"),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${l}.pdf`)}`),b.status(200).send(Buffer.from(c))}finally{await d.close()}}catch(d){(0,o.wF)({level:"warn",source:"api/documents/export",functionName:"pdfExportChromium",error:d,req:a,meta:{fallback:"minimal-pdf"}});let c=function(a,b){let c=[a,"",...b.replace(/<[^>]+>/gu,"").replace(/!\[[^\]]*\]\([^)]*\)/gu,"").replace(/\[([^\]]+)\]\([^)]*\)/gu,"$1").replace(/[#*_`>|-]/gu,"").replace(/\n{3,}/gu,"\n\n").trim().split("\n")].flatMap(a=>a.length>34?a.match(/.{1,34}/gu)||[]:[a]).slice(0,900),d=[];for(let a=0;a<c.length;a+=34)d.push(c.slice(a,a+34));let e=[],f=a=>(e.push(a),e.length),g=f(""),h=f(""),i=f("<< /Type /Font /Subtype /Type0 /BaseFont /STSong-Light /Encoding /UniGB-UCS2-H /DescendantFonts [<< /Type /Font /Subtype /CIDFontType0 /BaseFont /STSong-Light /CIDSystemInfo << /Registry (Adobe) /Ordering (GB1) /Supplement 2 >> >>] >>"),j=[];for(let a of d){let b=a.map((a,b)=>`BT /F1 ${0===b?18:11} Tf 50 ${790-22*b} Td <${Buffer.from(`\uFEFF${a}`,"utf16le").swap16().toString("hex").toUpperCase()}> Tj ET`).join("\n"),c=f(`<< /Length ${Buffer.byteLength(b)} >>
3
- stream
4
- ${b}
5
- endstream`);j.push(f(`<< /Type /Page /Parent ${h} 0 R /MediaBox [0 0 595 842] /Resources << /Font << /F1 ${i} 0 R >> >> /Contents ${c} 0 R >>`))}e[g-1]=`<< /Type /Catalog /Pages ${h} 0 R >>`,e[h-1]=`<< /Type /Pages /Kids [${j.map(a=>`${a} 0 R`).join(" ")}] /Count ${j.length} >>`;let k="%PDF-1.4\n",l=[0];e.forEach((a,b)=>{l.push(Buffer.byteLength(k)),k+=`${b+1} 0 obj
6
- ${a}
7
- endobj
8
- `});let m=Buffer.byteLength(k);return k+=`xref
9
- 0 ${e.length+1}
10
- 0000000000 65535 f
11
- ${l.slice(1).map(a=>`${String(a).padStart(10,"0")} 00000 n `).join("\n")}
12
- trailer << /Root ${g} 0 R /Size ${e.length+1} >>
13
- startxref
14
- ${m}
15
- %%EOF`,Buffer.from(k,"binary")}(g,h);return b.setHeader("Content-Type","application/pdf"),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${l}.pdf`)}`),b.status(200).send(c)}}let A={inlineLocalImages:v,resolveLocalImagePath:u},B=(0,p.j)("api/documents/export",z);var C=c(68970),D=c(50296);let E=(0,h.M)(d,"default"),F=(0,h.M)(d,"config"),G=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/documents/export",pathname:"/api/documents/export",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function H(a,b,c){let d=await G.prepare(a,b,{srcPage:"/api/documents/export"});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,C.getTracer)(),e=d.getActiveScopeSpan(),j=G.instrumentationOnRequestError.bind(G),k=async e=>G.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:G.isDev,page:"/api/documents/export",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")!==D.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(D.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:C.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(G.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},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,3445],()=>b(b.s=89529));module.exports=c})();
1
+ "use strict";(()=>{var a={};a.id=8644,a.ids=[8644],a.modules={15751:a=>{a.exports=require("xlsx")},17496:(a,b,c)=>{c.d(b,{j:()=>e});var d=c(49750);function e(a,b){return async function(c,e){try{await b(c,e)}catch(g){let f=(0,d.wF)({source:a,functionName:b.name||"anonymous",error:g,req:c});console.error(`[${a}]`,f.id,g),e.headersSent||e.status(500).json({error:g instanceof Error?g.message:"Internal server error",requestId:f.id})}}}(0,d.mG)()},19898:a=>{a.exports=require("@customize-agent/knowledge")},21820:a=>{a.exports=require("os")},29021:a=>{a.exports=require("fs")},31421:a=>{a.exports=require("node:child_process")},33873:a=>{a.exports=require("path")},48161:a=>{a.exports=require("node:os")},49750:(a,b,c)=>{c.d(b,{hH:()=>p,mG:()=>r,cW:()=>o,wF:()=>n});var d=c(29021),e=c.n(d),f=c(21820),g=c.n(f),h=c(33873),i=c.n(h);let j=require("crypto");var k=c.n(j);let l=i().join(g().homedir(),".customize-agent","logs"),m=i().join(l,"errors.jsonl");function n(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()}_${k().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{e().mkdirSync(l,{recursive:!0}),function(){try{if(e().statSync(m).size<=2097152)return;e().renameSync(m,i().join(l,`errors-${Date.now()}.jsonl`))}catch{}}(),e().appendFileSync(m,`${JSON.stringify(d)}
2
+ `)}catch(a){console.error("[errorLogService] failed to write error log",a)}return d}function o(a=200){try{return e().readFileSync(m,"utf8").split("\n").filter(Boolean).slice(-a).reverse().map(a=>JSON.parse(a))}catch{return[]}}function p(){try{e().rmSync(m,{force:!0})}catch{}}let q=!1;function r(){q||(q=!0,process.on("uncaughtException",a=>{n({source:"process",functionName:"uncaughtException",error:a}),console.error("[process] uncaughtException",a)}),process.on("unhandledRejection",a=>{n({source:"process",functionName:"unhandledRejection",error:a}),console.error("[process] unhandledRejection",a)}))}},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")},83142:a=>{a.exports=import("marked")},83237:a=>{a.exports=import("playwright")},83258:(a,b,c)=>{c.r(b),c.d(b,{config:()=>T,default:()=>S,handler:()=>V});var d={};c.r(d),c.d(d,{__documentExportTest__:()=>O,default:()=>P});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(31421),j=c(73024),k=c(48161),l=c(76760);let m=require("node:url"),n=require("node:util"),o=require("jszip");var p=c.n(o),q=c(89358),r=c(23328),s=c(49750),t=c(17496);function u(a){return a.replace(/&/gu,"&amp;").replace(/</gu,"&lt;").replace(/>/gu,"&gt;").replace(/"/gu,"&quot;")}let v=(0,n.promisify)(i.execFile),w={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".webp":"image/webp",".gif":"image/gif",".svg":"image/svg+xml"};function x(a){return w[l.extname(a).toLowerCase()]||""}function y(a,b){let c=l.relative(b,a);return!!c&&!c.startsWith("..")&&!l.isAbsolute(c)}function z(a,b=(0,r.aY)()){if(!a||/^(?:https?:|data:|file:|blob:|#)/iu.test(a))return null;let c=function(a){try{return decodeURIComponent(a.split(/[?#]/u)[0]||a)}catch{return""}}(a);if(!c||l.isAbsolute(c))return null;let d=l.resolve(b,"knowledgeBase"),e=l.resolve((0,q.Gl)(b),"assets");return[c.startsWith("generatedDocuments/assets/")?l.resolve(e,c.replace(/^generatedDocuments\/assets\//u,"")):"",l.resolve(d,c)].filter(Boolean).find(a=>{let b=l.resolve(a);return(y(b,d)||y(b,e))&&!!x(b)&&j.existsSync(b)&&j.statSync(b).isFile()})||null}function A(a,b=(0,r.aY)()){let c=new Map,d=0;return a.replace(/<img\b([^>]*?)\bsrc=["']([^"']+)["']([^>]*)>/giu,(a,e,f,g)=>{let h=z(f,b);if(!h)return a;let i=j.statSync(h);if(i.size>8388608||d+i.size>0x2000000)return a;let k=c.get(h);return k||(k=`data:${x(h)};base64,${j.readFileSync(h).toString("base64")}`,c.set(h,k),d+=i.size),`<img${e}src="${k}"${g}>`})}function B(a){return a.replace(/!\[[^\]]*\]\([^)]*\)/gu,"").replace(/\[([^\]]+)\]\([^)]*\)/gu,"$1").replace(/[*_`]/gu,"").replace(/<br\s*\/?>/giu,"\n").replace(/<[^>]+>/gu,"").trim()}function C(a,b){let c=/([\d.]+)\s*(pt|px)?/iu.exec(a||"");if(!c)return 2*b;let d=Number(c[1]);return Number.isFinite(d)?Math.round((c[2]?.toLowerCase()==="px"?.75*d:d)*2):2*b}function D(a,b){let c=/([\d.]+)\s*(cm|mm|in|pt)?/iu.exec(a||"");if(!c)return Math.round(567*b);let d=Number(c[1]);if(!Number.isFinite(d))return Math.round(567*b);let e=(c[2]||"cm").toLowerCase();return"mm"===e?Math.round(56.7*d):"in"===e?Math.round(1440*d):"pt"===e?Math.round(20*d):Math.round(567*d)}function E(a,b={}){if(b.pageBreak)return'<w:p><w:r><w:br w:type="page"/></w:r></w:p>';let c=[b.align?`<w:jc w:val="${b.align}"/>`:"",`<w:spacing w:line="440" w:lineRule="exact" w:after="${b.spacingAfter??120}"/>`].filter(Boolean).join("");return`<w:p><w:pPr>${c}</w:pPr>${function(a,b={}){let c=[b.bold?"<w:b/>":"",b.size?`<w:sz w:val="${b.size}"/><w:szCs w:val="${b.size}"/>`:""].filter(Boolean).join("");return`<w:r>${c?`<w:rPr>${c}</w:rPr>`:""}<w:t xml:space="preserve">${u(a)}</w:t></w:r>`}(a,b)}</w:p>`}async function F(a,b,c,d){let e=function(a,b){let c=H(b),d=C(c.titleSize,16),e=C(c.bodySize,14),f=a.replace(/<div class="page-break"><\/div>/gu,"\n[[PAGE_BREAK]]\n").split("\n"),g=[];for(let a=0;a<f.length;){let b=f[a].trim();if(!b){a+=1;continue}if("[[PAGE_BREAK]]"===b){g.push(E("",{pageBreak:!0})),a+=1;continue}let c=function(a,b){if(b+1>=a.length||!/^\s*\|?.+\|\s*$/u.test(a[b])||!/^\s*\|?\s*:?-{3,}:?\s*(\|\s*:?-{3,}:?\s*)+\|?\s*$/u.test(a[b+1]))return null;let c=[],d=b;for(;d<a.length&&/^\s*\|?.+\|\s*$/u.test(a[d]);)d!==b+1&&c.push(a[d].trim().replace(/^\|/u,"").replace(/\|$/u,"").split("|").map(a=>B(a))),d+=1;return{rows:c,next:d}}(f,a);if(c){g.push(function(a,b){return`<w:tbl><w:tblPr><w:tblW w:w="0" w:type="auto"/><w:tblBorders><w:top w:val="single" w:sz="4"/><w:left w:val="single" w:sz="4"/><w:bottom w:val="single" w:sz="4"/><w:right w:val="single" w:sz="4"/><w:insideH w:val="single" w:sz="4"/><w:insideV w:val="single" w:sz="4"/></w:tblBorders></w:tblPr>${a.map(a=>`<w:tr>${a.map(a=>`<w:tc><w:tcPr><w:tcW w:w="0" w:type="auto"/></w:tcPr>${E(a,{size:b})}</w:tc>`).join("")}</w:tr>`).join("")}</w:tbl>`}(c.rows,e)),a=c.next;continue}let h=/^(#{1,3})\s+(.+)$/u.exec(b);if(h){g.push(E(B(h[2]),{bold:!0,size:d,align:1===h[1].length?"center":void 0,spacingAfter:160})),a+=1;continue}g.push(E(B(b),{size:e})),a+=1}return g.join("")}(b,c);if(d&&j.existsSync(d)){let b=await p().loadAsync(j.readFileSync(d)),c=b.file("word/document.xml");if(c){let d=await c.async("string");return b.file("word/document.xml",d.replace(/\{\{title\}\}/gu,u(a)).replace(/\{\{content\}\}/gu,e)),b.generateAsync({type:"nodebuffer"})}}let f=c?.page||{},g=new(p());return g.file("[Content_Types].xml",'<?xml version="1.0" encoding="UTF-8"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="xml" ContentType="application/xml"/><Override PartName="/word/document.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"/></Types>'),g.folder("_rels")?.file(".rels",'<?xml version="1.0" encoding="UTF-8"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml"/></Relationships>'),g.folder("word")?.folder("_rels")?.file("document.xml.rels",'<?xml version="1.0" encoding="UTF-8"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"/>'),g.folder("word")?.file("document.xml",`<?xml version="1.0" encoding="UTF-8" standalone="yes"?><w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:body>${E(a,{bold:!0,size:C(c?.typography?.titleSize,16),align:"center",spacingAfter:240})}${e}<w:sectPr><w:pgSz w:w="11906" w:h="16838"/><w:pgMar w:top="${D(f.marginTop,2.5)}" w:right="${D(f.marginRight,2)}" w:bottom="${D(f.marginBottom,2)}" w:left="${D(f.marginLeft,2)}"/></w:sectPr></w:body></w:document>`),g.generateAsync({type:"nodebuffer"})}function G(a,b){return a&&/^[\w\s\u4e00-\u9fa5,"'().-]+$/u.test(a)?a:b}function H(a){let b=a?.page||{},c=a?.typography||{},d=G(b.paper,"A4"),e=G(b.marginTop,"24mm"),f=G(b.marginRight,"18mm"),g=G(b.marginBottom,"22mm"),h=G(b.marginLeft,"18mm"),i=G(c.fontFamily,'"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans CJK SC",Arial,sans-serif'),j=G(c.lineHeight,"1.75");return{paper:d,marginTop:e,marginRight:f,marginBottom:g,marginLeft:h,fontFamily:i,lineHeight:j,titleSize:G(c.titleSize,"28px"),bodySize:G(c.bodySize,"14px")}}function I(a){let b=a.message.trim();return!/^(事实冲突|必需章节缺失):/u.test(b)&&/出现禁用文本\s*(资料未提供|占位|TODO|TBD)|正文包含.*(资料未提供|占位)|图片、地图或附件引用路径明显无效|无效路径|表格语法错误|临时远程生成 URL|提示词全文|内部错误|生成未完成|低于目标页数|缺少配置小节|缺少必要的正式表格|正文缺少章节标题/iu.test(b)}function J(a){return{chars:a.trim().length,h2:(a.match(/^##\s+/gmu)||[]).length,h3:(a.match(/^###\s+/gmu)||[]).length,tables:(a.match(/\n\s*\|\s*:?-{3,}/gu)||[]).length}}function K(){let a=[process.env.PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH,process.env.CHROME_PATH].filter(Boolean),b=k.homedir();return[...new Set([...a,..."darwin"===process.platform?["/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","/Applications/Chromium.app/Contents/MacOS/Chromium","/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge","/Applications/Brave Browser.app/Contents/MacOS/Brave Browser",l.join(b,"Applications/Google Chrome.app/Contents/MacOS/Google Chrome"),l.join(b,"Applications/Chromium.app/Contents/MacOS/Chromium")]:"win32"===process.platform?[l.join(process.env.PROGRAMFILES||"C:\\Program Files","Google/Chrome/Application/chrome.exe"),l.join(process.env["PROGRAMFILES(X86)"]||"C:\\Program Files (x86)","Google/Chrome/Application/chrome.exe"),l.join(process.env.LOCALAPPDATA||"","Google/Chrome/Application/chrome.exe"),l.join(process.env.PROGRAMFILES||"C:\\Program Files","Microsoft/Edge/Application/msedge.exe")]:["/usr/bin/google-chrome","/usr/bin/google-chrome-stable","/usr/bin/chromium","/usr/bin/chromium-browser","/snap/bin/chromium","/usr/bin/microsoft-edge"]].filter(a=>a&&j.existsSync(a)))]}async function L(a,b,c){let d=j.mkdtempSync(l.join(k.tmpdir(),"customize-agent-pdf-")),e=l.join(d,"document.html"),f=l.join(d,"document.pdf"),g=l.join(d,"profile");j.writeFileSync(e,a,"utf-8");try{let a=H(c),d=(0,m.pathToFileURL)(e).href,h=["--disable-gpu","--no-sandbox","--disable-setuid-sandbox",`--user-data-dir=${g}`,`--print-to-pdf=${f}`,`--print-to-pdf-page-size=${a.paper}`,d],i=[];for(let a of["--headless=new","--headless"])try{if(await v(b,[a,...h],{timeout:3e4,maxBuffer:1048576}),j.existsSync(f)&&j.statSync(f).size>=1024)return j.readFileSync(f);i.push(`${a}: browser command did not produce a valid PDF`)}catch(b){i.push(`${a}: ${b instanceof Error?b.message:String(b)}`)}throw Error(i.join("\n"))}finally{j.rmSync(d,{recursive:!0,force:!0})}}async function M(a,b){let{chromium:d}=await Promise.resolve().then(c.bind(c,83237)),e=[{label:"playwright-bundled-chromium",options:{headless:!0,args:["--no-sandbox","--disable-setuid-sandbox"]}},{label:"system-chrome-channel",options:{channel:"chrome",headless:!0,args:["--no-sandbox","--disable-setuid-sandbox"]}},{label:"system-msedge-channel",options:{channel:"msedge",headless:!0,args:["--no-sandbox","--disable-setuid-sandbox"]}},...K().map(a=>({label:a,options:{executablePath:a,headless:!0,args:["--no-sandbox","--disable-setuid-sandbox"]}}))],f=[];for(let c of e)try{let e=await d.launch(c.options);try{let c=await e.newPage({locale:"zh-CN"});await c.setContent(a,{waitUntil:"load"}),await c.waitForFunction(()=>Array.from(document.images).every(a=>a.complete),void 0,{timeout:1e4}).catch(()=>void 0),await c.emulateMedia({media:"print"});let d=H(b),f=await c.pdf({format:d.paper,printBackground:!0,preferCSSPageSize:!0,margin:{top:d.marginTop,right:d.marginRight,bottom:d.marginBottom,left:d.marginLeft},displayHeaderFooter:!0,headerTemplate:"<div></div>",footerTemplate:'<div style="font-size:9px;width:100%;text-align:center;color:#666;">第 <span class="pageNumber"></span> 页 / 共 <span class="totalPages"></span> 页</div>'});return Buffer.from(f)}finally{await e.close()}}catch(a){f.push(`${c.label}: ${a instanceof Error?a.message:String(a)}`)}for(let c of K())try{return await L(a,c,b)}catch(a){f.push(`browser-command ${c}: ${a instanceof Error?a.message:String(a)}`)}throw Error(f.join("\n"))}async function N(a,b){if("POST"!==a.method)return b.status(405).json({error:"Method not allowed"});let d=a.body,e=d.documentId?(0,q.v7)(d.documentId):null;if(d.documentId&&!e)return b.status(404).json({error:"Document not found"});let f=d.title||e?.title||"document",g=e?.editedMarkdown||e?.markdown||e?.draft?.markdown||"",h=d.useClientMarkdown&&"string"==typeof d.markdown?d.markdown:g||d.markdown||"",i=d.format||"markdown",j=function(a,b){let c=J(a),d=b?J(b):void 0,e=[];return c.chars<200&&e.push("导出内容为空或过短"),d&&d.chars>1e3&&c.chars<.8*d.chars&&e.push("导出内容明显少于服务端生成记录"),d&&d.h3>0&&0===c.h3&&e.push("导出内容缺少服务端生成记录中的二级小节"),d&&d.tables>0&&0===c.tables&&e.push("导出内容缺少服务端生成记录中的表格"),e}(h,e?.draft?.markdown||e?.markdown);if(j.length)return b.status(422).json({error:"EXPORT_CONTENT_INVALID",issues:j});let k=e?.draft?.exportGate||d.exportGate,l=k?.blockingIssues?.filter(I)||[];if(d.enforceGate&&l.length)return b.status(422).json({error:"Export gate failed",issues:l});let m=f.replace(/[\\/:*?"<>|]/gu,"-").slice(0,80)||"document";if("markdown"===i)return b.setHeader("Content-Type","text/markdown; charset=utf-8"),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${m}.md`)}`),b.status(200).send(h);if("docx"===i){let a=await F(f,h,e?.draft?.exportSettings,d.wordTemplatePath);return b.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document"),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${m}.docx`)}`),b.status(200).send(a)}let{marked:n}=await Promise.resolve().then(c.bind(c,83142)),o=(0,r.aY)(),p=e?.draft?.exportSettings,t=A(function(a,b,c){let d=H(c);return`<!doctype html><html lang="zh-CN"><head><meta charset="utf-8"><title>${u(a)}</title><style>@page{size:${d.paper};margin:${d.marginTop} ${d.marginRight} ${d.marginBottom} ${d.marginLeft}}body{font-family:${d.fontFamily};line-height:${d.lineHeight};color:#111827;font-size:${d.bodySize}}h1{text-align:center;font-size:${d.titleSize};margin-top:80px}h2{font-size:${d.titleSize};border-bottom:1px solid #d1d5db;padding-bottom:6px;margin-top:28px;page-break-after:avoid}h3{font-size:${d.titleSize};margin-top:20px}img{display:block;max-width:100%;max-height:520px;object-fit:contain;margin:12px auto;page-break-inside:avoid}table{width:100%;border-collapse:collapse;page-break-inside:auto}tr{page-break-inside:avoid;page-break-after:auto}th,td{border:1px solid #6b7280;padding:6px 8px;vertical-align:top}th{background:#f3f4f6}pre{white-space:pre-wrap}.document-cover{min-height:720px;display:flex;flex-direction:column;justify-content:center}.document-cover h1{margin-top:0}.page-break{page-break-after:always;height:0}</style></head><body>${b}</body></html>`}(f,n.parse(h,{async:!1}),p),o);if("html"===i)return b.setHeader("Content-Type","text/html; charset=utf-8"),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${m}.html`)}`),b.status(200).send(t);try{let a=await M(t,p);return b.setHeader("Content-Type","application/pdf"),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${m}.pdf`)}`),b.status(200).send(a)}catch(c){return(0,s.wF)({level:"error",source:"api/documents/export",functionName:"pdfExportChromium",error:c,req:a,meta:{fallback:"system-browser-attempted"}}),b.status(500).json({error:"PDF_RENDER_FAILED",message:"PDF 渲染失败:未找到或无法启动可用的 Chrome/Chromium/Edge。请安装 Chrome,或设置 PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH 后重试。"})}}let O={inlineLocalImages:A,resolveLocalImagePath:z},P=(0,t.j)("api/documents/export",N);var Q=c(68970),R=c(50296);let S=(0,h.M)(d,"default"),T=(0,h.M)(d,"config"),U=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/documents/export",pathname:"/api/documents/export",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function V(a,b,c){let d=await U.prepare(a,b,{srcPage:"/api/documents/export"});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,Q.getTracer)(),e=d.getActiveScopeSpan(),j=U.instrumentationOnRequestError.bind(U),k=async e=>U.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:U.isDev,page:"/api/documents/export",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")!==R.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(R.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:Q.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(U.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},87550:a=>{a.exports=require("better-sqlite3")},89358:(a,b,c)=>{c.d(b,{r:()=>w,JU:()=>A,QG:()=>x,SE:()=>p,Gl:()=>l,yE:()=>z,v7:()=>t,uc:()=>C,BH:()=>y,M$:()=>s,Jz:()=>D,YL:()=>E,a6:()=>v});let d=require("node:crypto");var e=c(73024),f=c(48161),g=c(76760),h=c(73445),i=c(99842),j=c(23328);let k=new Map;function l(a=(0,j.aY)()){let b=g.join(f.homedir(),".customize-agent","projects",function(a=(0,j.aY)()){return d.createHash("sha1").update(g.resolve(a)).digest("hex").slice(0,12)}(a),"generatedDocuments");return e.mkdirSync(g.join(b,"drafts"),{recursive:!0}),e.mkdirSync(g.join(b,"assets"),{recursive:!0}),b}function m(a=(0,j.aY)()){return g.join(l(a),"index.json")}function n(a=(0,j.aY)()){return g.join(l(a),"assets.json")}function o(a,b=(0,j.aY)()){return g.join(l(b),"drafts",`${a}.json`)}function p(a,b=(0,j.aY)()){return a.path?g.isAbsolute(a.path)?a.path:a.path.startsWith("generatedDocuments/assets/")?g.join(l(b),a.path.replace(/^generatedDocuments\/assets\//u,"assets/")):g.join(b,"knowledgeBase",a.path):null}function q(a,b){try{return JSON.parse(e.readFileSync(a,"utf8"))}catch{return b}}function r(a,b){e.mkdirSync(g.dirname(a),{recursive:!0}),e.writeFileSync(a,JSON.stringify(b,null,2))}function s(a=(0,j.aY)()){return q(m(a),[]).sort((a,b)=>b.updatedAt-a.updatedAt)}function t(a,b=(0,j.aY)()){return q(o(a,b),null)}function u(a,b=(0,j.aY)()){let c=Date.now(),d={...a,updatedAt:c};r(o(d.id,b),d);let e=s(b).filter(a=>a.id!==d.id);return e.unshift(d),r(m(b),e.map(a=>({...a,draft:void 0,executionStages:a.executionStages}))),d}function v(a,b,c=(0,j.aY)()){let d=t(a,c);return d?u({...d,...b,id:a},c):null}function w(a,b=(0,j.aY)()){let c=t(a,b);if(!c||"generating"!==c.status)return null;for(let[b,c]of k)if(c.documentId===a){c.controller.abort(),k.delete(b);break}return u({...c,status:"failed",error:"用户中止",updatedAt:Date.now()},b)}function x(a,b=(0,j.aY)()){try{e.rmSync(o(a,b),{force:!0})}catch{console.warn("[generated-documents] 删除文档记录失败或文件不存在",a)}r(m(b),s(b).filter(b=>b.id!==a))}function y(a=(0,j.aY)()){return q(n(a),[]).sort((a,b)=>b.updatedAt-a.updatedAt)}function z(a,b=(0,j.aY)()){return y(b).find(b=>b.id===a)||null}function A(a,b=(0,j.aY)()){let c=z(a,b);if(!c)return!1;let d=p(c,b);if(d&&d.startsWith(l(b)))try{e.rmSync(d,{force:!0})}catch{console.warn("[generated-documents] 删除生成资源文件失败或文件不存在",d)}return r(n(b),y(b).filter(b=>b.id!==a)),!0}async function B(a,b=(0,j.aY)()){let c=g.join("生成文档",`${a.title.replace(/[\\/:*?"<>|]/gu,"_").slice(0,120)||"generated-document"}-${a.id}.md`).split(g.sep).join("/"),d=g.join(b,"knowledgeBase",c);e.mkdirSync(g.dirname(d),{recursive:!0}),e.writeFileSync(d,a.editedMarkdown||a.markdown,"utf8");let f=await (0,j.Qh)().getProject(b);return await f.reindexFile(c),c}async function C(a,b=(0,j.aY)()){let c=z(a,b);if(!c?.path)return null;let d=p(c,b);if(!d||!e.existsSync(d))throw Error("asset file not found");let f=g.join("生成资源",g.basename(c.path)).split(g.sep).join("/"),h=g.join(b,"knowledgeBase",f);e.mkdirSync(g.dirname(h),{recursive:!0}),d!==h&&e.copyFileSync(d,h);let i=await (0,j.Qh)().getProject(b);await i.reindexFile(f);let k=y(b).map(b=>b.id===a?{...b,path:f,source:"generated",indexed:!0,updatedAt:Date.now()}:b);return r(n(b),k),k.find(b=>b.id===a)||null}function D(a,b,c=(0,j.aY)()){let d=z(a,c);if(!d)return null;let f=p(d,c);return f&&e.existsSync(f)?"directory"===b?g.dirname(f):f:null}function E(a,b=(0,j.aY)()){let c=Date.now(),e=`doc-${c}-${d.randomBytes(4).toString("hex")}`,f=`task-${c}-${d.randomBytes(4).toString("hex")}`,l={id:e,taskId:f,templateId:a.templateId,title:"生成中",requirement:a.requirement||"",markdown:"",status:"generating",assets:[],createdAt:c,updatedAt:c};u(l,b);let m=new AbortController,o=(0,h.OX)({...a,projectRoot:b,signal:m.signal,onProgress:a=>{try{let c=t(e,b);c&&"generating"===c.status&&(u({...c,executionStages:a},b),console.log(`[gen] progress saved: ${a.length} stages, doc=${e}`))}catch(a){console.error("[gen] progress save error:",a)}}}).then(async a=>{let c=t(e,b);if(!c||"generating"!==c.status)return c??l;let d=a.validationIssues.filter(a=>"error"===a.level||"warning"===a.level).map(a=>a.suggestion?`${a.message}:${a.suggestion}`:a.message),f=u({...c,templateName:a.templateName,title:a.title,markdown:a.markdown,status:d.length>0?"warning":"completed",draft:a,executionStages:a.executionStages,assets:a.assets||[],completedAt:Date.now(),warningIssues:d},b);!function(a,b=(0,j.aY)()){let c=a.draft?.sources.slice(0,8).map(a=>a.filePath).join("、")||"无明确来源",d=a.warningIssues?.slice(0,5).join(";")||"无阻断问题";(0,i.i3)("project_fact",`文档《${a.title}》已基于模板“${a.templateName||a.templateId}”生成。用户要求:${a.requirement||"未填写"}。主要资料来源:${c}。校验结果:${d}。`,`Project: ${g.resolve(b)} | Generated document: ${a.id}`)}(f,b);let h=function(a,b,c=(0,j.aY)()){let d=Date.now(),e=[...y(c)];for(let c of a){let a=e.findIndex(a=>a.id===c.id),f=c.path?.startsWith("generatedDocuments/assets/")||"generated"===c.status||"prompt_ready"===c.status?"generated":"knowledge_base",h={...c,name:g.basename(c.path||c.url||c.id),source:f,indexed:a>=0&&e[a].indexed,usedByDocumentIds:a>=0?[...new Set([...e[a].usedByDocumentIds,b])]:[b],createdAt:a>=0?e[a].createdAt:d,updatedAt:d};a>=0?e[a]={...e[a],...h}:e.push(h)}return r(n(c),e),e}(a.assets||[],e,b);for(let a of(await B(f,b).catch(a=>console.warn("[generated-documents] 自动入库生成文档失败",a)),h.filter(a=>a.usedByDocumentIds.includes(e)&&!a.indexed)))await C(a.id,b).catch(b=>console.warn("[generated-documents] 自动入库生成资源失败",a.id,b));return f}).catch(a=>{let c=t(e,b);return c&&"generating"===c.status?u({...c,status:"failed",error:a instanceof Error?a.message:String(a)},b):c??l}).finally(()=>{k.delete(f)});return k.set(f,{id:f,documentId:e,status:"generating",controller:m,promise:o}),{taskId:f,documentId:e,record:l}}},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,3445],()=>b(b.s=83258));module.exports=c})();
@@ -1 +1 @@
1
- "use strict";(()=>{var a={};a.id=9029,a.ids=[9029],a.modules={48161:a=>{a.exports=require("node:os")},55258:(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(89952);function j(a){return"file"===a||"prompt"===a?a:void 0}function k(a,b){try{if("GET"===a.method)return b.status(200).json({roles:(0,i.XB)(j(a.query.type)),configs:(0,i.DZ)()});if("POST"===a.method||"PUT"===a.method){let c="config"===a.query.mode?"config":"role";if("config"===c){let c=a.body;if(!c?.id||!c.name)return b.status(400).json({error:"config id and name required"});return b.status(200).json({config:(0,i.NR)(c),roles:(0,i.XB)(),configs:(0,i.DZ)()})}let d=a.body;if(!d?.id||!d.name||!j(d.type))return b.status(400).json({error:"role id, name and type required"});return b.status(200).json({role:(0,i.dg)(d),roles:(0,i.XB)(),configs:(0,i.DZ)()})}if("DELETE"===a.method){let c="config"===a.query.mode?"config":"role",d=String(a.query.id||"");if(!d)return b.status(400).json({error:"id required"});if("config"===c)return(0,i.dw)(d),b.status(200).json({success:!0,roles:(0,i.XB)(),configs:(0,i.DZ)()});let e=j(a.query.type);if(!e)return b.status(400).json({error:"type required"});return(0,i.FV)(e,d),b.status(200).json({success:!0,roles:(0,i.XB)(),configs:(0,i.DZ)()})}return b.status(405).json({error:"Method not allowed"})}catch(a){console.error("[api] documents/roles",a),b.status(500).json({error:a instanceof Error?a.message:"Internal server error"})}}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/documents/roles",pathname:"/api/documents/roles",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function q(a,b,c){let d=await p.prepare(a,b,{srcPage:"/api/documents/roles"});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/documents/roles",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())}}},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")},89952:(a,b,c)=>{c.d(b,{DZ:()=>p,FV:()=>o,Mu:()=>q,NR:()=>r,XB:()=>m,dg:()=>n,dw:()=>s});var d=c(73024),e=c(48161),f=c(76760);function g(){let a=f.join(e.homedir(),".customize-agent");return d.mkdirSync(a,{recursive:!0}),f.join(a,"document-roles.json")}function h(a){return(a||`item-${Date.now()}`).replace(/[^a-zA-Z0-9_-]/gu,"-").slice(0,80)}function i(a){var b,c;let d="prompt"===a.type?"prompt":"file";return{id:h(a.id),name:a.name||"未命名角色",description:a.description||"",type:d,resourceId:a.resourceId||a.resourceIds?.[0]||void 0,resourceIds:Array.isArray(a.resourceIds)&&a.resourceIds.length>0?a.resourceIds.filter(Boolean):a.resourceId?[a.resourceId]:[],executionType:"prompt"===d?"fact_extraction"===(b=a.executionType)||"chapter_generation"===b||"llm_review"===b||"validation"===b||"formatting"===b||"reference"===b?b:"reference":void 0,processingType:"file"===d?"rule"===(c=a.processingType)||"project_fact"===c||"table"===c||"drawing"===c||"specification"===c||"reference"===c?c:"reference":void 0}}function j(a){return{id:h(a.id),name:a.name||"未命名配置",description:a.description||"",builtIn:!!a.builtIn,fileRoles:Array.isArray(a.fileRoles)?a.fileRoles.filter(a=>a.roleId).map((a,b)=>({roleId:a.roleId,order:Number.isFinite(a.order)?a.order:b})):[],promptRoles:Array.isArray(a.promptRoles)?a.promptRoles.filter(a=>a.roleId).map((a,b)=>({roleId:a.roleId,order:Number.isFinite(a.order)?a.order:b})):[]}}function k(){try{let a=g();if(!d.existsSync(a))return{roles:[],configs:[]};let b=JSON.parse(d.readFileSync(a,"utf-8"));if(Array.isArray(b))return{roles:b.map(i),configs:[]};return{roles:Array.isArray(b.roles)?b.roles.map(i):[],configs:Array.isArray(b.configs)?b.configs.map(j):[]}}catch{return{roles:[],configs:[]}}}function l(a){d.writeFileSync(g(),JSON.stringify({roles:a.roles.map(i),configs:a.configs.map(j)},null,2),"utf-8")}function m(a){let b=k().roles;return a?b.filter(b=>b.type===a):b}function n(a){let b=i(a),c=k();return c.roles=c.roles.filter(a=>a.id!==b.id||a.type!==b.type),c.roles.push(b),l(c),b}function o(a,b){let c=k();c.roles=c.roles.filter(c=>c.id!==b||c.type!==a),c.configs=c.configs.map(a=>({...a,fileRoles:a.fileRoles.filter(a=>a.roleId!==b),promptRoles:a.promptRoles.filter(a=>a.roleId!==b)})),l(c)}function p(){return k().configs}function q(a){return k().configs.find(b=>b.id===a)}function r(a){let b={...j(a),builtIn:!1},c=k();return c.configs=c.configs.filter(a=>a.id!==b.id),c.configs.push(b),l(c),b}function s(a){let b=k();b.configs=b.configs.filter(b=>b.id!==a),l(b)}}};var b=require("../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705],()=>b(b.s=55258));module.exports=c})();
1
+ "use strict";(()=>{var a={};a.id=9029,a.ids=[9029],a.modules={48161:a=>{a.exports=require("node:os")},55258:(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(89952);function j(a){return"file"===a||"prompt"===a?a:void 0}function k(a,b){try{if("GET"===a.method)return b.status(200).json({roles:(0,i.XB)(j(a.query.type)),configs:(0,i.DZ)()});if("POST"===a.method||"PUT"===a.method){let c="config"===a.query.mode?"config":"role";if("config"===c){let c=a.body;if(!c?.id||!c.name)return b.status(400).json({error:"config id and name required"});return b.status(200).json({config:(0,i.NR)(c),roles:(0,i.XB)(),configs:(0,i.DZ)()})}let d=a.body;if(!d?.id||!d.name||!j(d.type))return b.status(400).json({error:"role id, name and type required"});return b.status(200).json({role:(0,i.dg)(d),roles:(0,i.XB)(),configs:(0,i.DZ)()})}if("DELETE"===a.method){let c="config"===a.query.mode?"config":"role",d=String(a.query.id||"");if(!d)return b.status(400).json({error:"id required"});if("config"===c)return(0,i.dw)(d),b.status(200).json({success:!0,roles:(0,i.XB)(),configs:(0,i.DZ)()});let e=j(a.query.type);if(!e)return b.status(400).json({error:"type required"});return(0,i.FV)(e,d),b.status(200).json({success:!0,roles:(0,i.XB)(),configs:(0,i.DZ)()})}return b.status(405).json({error:"Method not allowed"})}catch(a){console.error("[api] documents/roles",a),b.status(500).json({error:a instanceof Error?a.message:"Internal server error"})}}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/documents/roles",pathname:"/api/documents/roles",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function q(a,b,c){let d=await p.prepare(a,b,{srcPage:"/api/documents/roles"});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/documents/roles",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())}}},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")},89952:(a,b,c)=>{c.d(b,{DZ:()=>q,FV:()=>p,Mu:()=>r,NR:()=>s,XB:()=>n,dg:()=>o,dw:()=>t});var d=c(73024),e=c(48161),f=c(76760);function g(){let a=f.join(e.homedir(),".customize-agent");return d.mkdirSync(a,{recursive:!0}),f.join(a,"document-roles.json")}function h(a){return(a||`item-${Date.now()}`).replace(/[^a-zA-Z0-9_-]/gu,"-").slice(0,80)}function i(a=[]){let b=new Set;return a.filter(a=>!(!a.roleId||b.has(a.roleId))&&(b.add(a.roleId),!0))}function j(a){var b,c;let d="prompt"===a.type?"prompt":"file";return{id:h(a.id),name:a.name||"未命名角色",description:a.description||"",type:d,resourceId:a.resourceId||a.resourceIds?.[0]||void 0,resourceIds:function(a=[]){return[...new Set(a.filter(Boolean))]}(Array.isArray(a.resourceIds)&&a.resourceIds.length>0?a.resourceIds:a.resourceId?[a.resourceId]:[]),executionType:"prompt"===d?"fact_extraction"===(b=a.executionType)||"chapter_generation"===b||"llm_review"===b||"validation"===b||"formatting"===b||"reference"===b?b:"reference":void 0,processingType:"file"===d?"rule"===(c=a.processingType)||"project_fact"===c||"table"===c||"drawing"===c||"specification"===c||"reference"===c?c:"reference":void 0}}function k(a){return{id:h(a.id),name:a.name||"未命名配置",description:a.description||"",builtIn:!!a.builtIn,fileRoles:i(Array.isArray(a.fileRoles)?a.fileRoles.filter(a=>a.roleId).map((a,b)=>({roleId:a.roleId,order:Number.isFinite(a.order)?a.order:b})):[]),promptRoles:i(Array.isArray(a.promptRoles)?a.promptRoles.filter(a=>a.roleId).map((a,b)=>({roleId:a.roleId,order:Number.isFinite(a.order)?a.order:b})):[])}}function l(){try{let a=g();if(!d.existsSync(a))return{roles:[],configs:[]};let b=JSON.parse(d.readFileSync(a,"utf-8"));if(Array.isArray(b))return{roles:b.map(j),configs:[]};return{roles:Array.isArray(b.roles)?b.roles.map(j):[],configs:Array.isArray(b.configs)?b.configs.map(k):[]}}catch{return{roles:[],configs:[]}}}function m(a){d.writeFileSync(g(),JSON.stringify({roles:a.roles.map(j),configs:a.configs.map(k)},null,2),"utf-8")}function n(a){let b=l().roles;return a?b.filter(b=>b.type===a):b}function o(a){let b=j(a),c=l();return c.roles=c.roles.filter(a=>a.id!==b.id||a.type!==b.type),c.roles.push(b),m(c),b}function p(a,b){let c=l();c.roles=c.roles.filter(c=>c.id!==b||c.type!==a),c.configs=c.configs.map(a=>({...a,fileRoles:a.fileRoles.filter(a=>a.roleId!==b),promptRoles:a.promptRoles.filter(a=>a.roleId!==b)})),m(c)}function q(){return l().configs}function r(a){return l().configs.find(b=>b.id===a)}function s(a){let b={...k(a),builtIn:!1},c=l();return c.configs=c.configs.filter(a=>a.id!==b.id),c.configs.push(b),m(c),b}function t(a){let b=l();b.configs=b.configs.filter(b=>b.id!==a),m(b)}}};var b=require("../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705],()=>b(b.s=55258));module.exports=c})();
@@ -1 +1 @@
1
- "use strict";(()=>{var a={};a.id=1282,a.ids=[1282],a.modules={48161:a=>{a.exports=require("node:os")},57367:(a,b,c)=>{c.d(b,{Co:()=>z,EK:()=>B,ER:()=>C,_q:()=>w,py:()=>A,uD:()=>x,ug:()=>y});var d=c(73024),e=c(48161),f=c(76760);let g=[{id:"required_fact",name:"必需事实",description:"检查指定事实字段是否存在。",builtIn:!0,defaultLevel:"warning",evaluator:{subject:"fact",operator:"exists"}},{id:"required_chapter",name:"必需章节",description:"检查指定章节是否存在。",builtIn:!0,defaultLevel:"error",evaluator:{subject:"chapter",operator:"exists"}},{id:"required_file_role",name:"必需文件角色",description:"检查项目角色配置是否绑定指定文件角色。",builtIn:!0,defaultLevel:"error",evaluator:{subject:"file_role",operator:"exists"}},{id:"required_prompt_role",name:"必需提示词角色",description:"检查项目角色配置是否绑定指定提示词角色。",builtIn:!0,defaultLevel:"warning",evaluator:{subject:"prompt_role",operator:"exists"}},{id:"source_required",name:"事实必须有来源",description:"检查结构化事实是否都有资料来源。",builtIn:!0,defaultLevel:"warning",evaluator:{subject:"source",operator:"all_have_source"}},{id:"forbidden_text",name:"禁止出现文本",description:"检查全文是否出现禁用文本。",builtIn:!0,defaultLevel:"error",evaluator:{subject:"document",operator:"not_contains"}},{id:"min_chapter_length",name:"章节最低字数",description:"检查指定章节是否达到最低字数。",builtIn:!0,defaultLevel:"warning",evaluator:{subject:"chapter",operator:"min_length"}},{id:"table_required",name:"必须有表格",description:"检查文档是否包含结构化表格。",builtIn:!0,defaultLevel:"warning",evaluator:{subject:"table",operator:"min_count",min:1}}],h=new Map(g.map(a=>[a.id,a])),i=["document","chapter","fact","file_role","prompt_role","table","image","source"],j=["exists","contains","not_contains","regex_match","regex_not_match","min_count","min_length","all_have_source","image_caption_required","table_explanation_required"];function k(){let a=f.join(e.homedir(),".customize-agent");return d.mkdirSync(a,{recursive:!0}),a}function l(){return f.join(k(),"document-specs.json")}function m(){return f.join(k(),"document-gate-types.json")}function n(a){return(a||`spec-${Date.now()}`).replace(/[^a-zA-Z0-9_-]/gu,"-").slice(0,80)}function o(a,b=""){return String(a||b).trim().slice(0,500)}function p(a,b){let c=a||b||{subject:"document",operator:"contains"},d=i.includes(c.subject)?c.subject:"document",e=j.includes(c.operator)?c.operator:"contains",f=Number(c.min);return{subject:d,operator:e,target:o(c.target),value:o(c.value),min:Number.isFinite(f)&&f>0?f:void 0}}function q(a){let b=n(a.id||a.name||`gate-type-${Date.now()}`);if(h.has(b))throw Error("不能覆盖系统内置门禁类型");return{id:b,name:o(a.name,"自定义门禁类型"),description:o(a.description),builtIn:!1,defaultLevel:"warning"===a.defaultLevel||"info"===a.defaultLevel?a.defaultLevel:"error",evaluator:p(a.evaluator)}}function r(a){return{id:n(a.id),name:a.name||"未命名规范包",description:a.description||"",factFields:Array.isArray(a.factFields)?a.factFields.filter(a=>a.name).map(a=>({id:n(a.id),name:a.name,type:"auto",required:!!a.required,sourceRoleIds:Array.isArray(a.sourceRoleIds)?a.sourceRoleIds.filter(Boolean):[],extractionHint:a.extractionHint||"",validationHint:a.validationHint||""})):[],chapterMode:"fixed"===a.chapterMode?"fixed":"dynamic",chapterRules:Array.isArray(a.chapterRules)?a.chapterRules.filter(a=>a.title).map((a,b)=>({id:n(a.id),title:a.title,required:!!a.required,order:Number.isFinite(a.order)?a.order:b,minWords:Number.isFinite(a.minWords)?a.minWords:0,requiredFactIds:Array.isArray(a.requiredFactIds)?a.requiredFactIds.filter(Boolean):[],requiredFileRoleIds:Array.isArray(a.requiredFileRoleIds)?a.requiredFileRoleIds.filter(Boolean):[],requiredPromptRoleIds:Array.isArray(a.requiredPromptRoleIds)?a.requiredPromptRoleIds.filter(Boolean):[],generationHint:a.generationHint||""})):[],dynamicChapterRule:{source:["file_outline","file_role","fact_group","table_rows"].includes(a.dynamicChapterRule?.source)?a.dynamicChapterRule.source:"ai_plan",sourceRoleIds:Array.isArray(a.dynamicChapterRule?.sourceRoleIds)?a.dynamicChapterRule.sourceRoleIds.filter(Boolean):[],minChapters:Number.isFinite(a.dynamicChapterRule?.minChapters)?a.dynamicChapterRule.minChapters:void 0,maxChapters:Number.isFinite(a.dynamicChapterRule?.maxChapters)?a.dynamicChapterRule.maxChapters:void 0,titleStrategy:["source_title","field_value","template"].includes(a.dynamicChapterRule?.titleStrategy||"")?a.dynamicChapterRule?.titleStrategy:"ai_summary",titleTemplate:a.dynamicChapterRule?.titleTemplate||"",minWordsPerChapter:Number.isFinite(a.dynamicChapterRule?.minWordsPerChapter)?a.dynamicChapterRule.minWordsPerChapter:void 0,requiredFactIds:Array.isArray(a.dynamicChapterRule?.requiredFactIds)?a.dynamicChapterRule.requiredFactIds.filter(Boolean):[],requiredFileRoleIds:Array.isArray(a.dynamicChapterRule?.requiredFileRoleIds)?a.dynamicChapterRule.requiredFileRoleIds.filter(Boolean):[],requiredPromptRoleIds:Array.isArray(a.dynamicChapterRule?.requiredPromptRoleIds)?a.dynamicChapterRule.requiredPromptRoleIds.filter(Boolean):[],generationHint:a.dynamicChapterRule?.generationHint||""},gateRules:Array.isArray(a.gateRules)?a.gateRules.filter(a=>a.name).map(a=>{var b;let c=n(a.type||a.name||"custom_gate");return{id:n(a.id),name:a.name,type:c,level:"warning"===a.level||"info"===a.level?a.level:"error",target:a.target||"",value:a.value||"",evaluator:p((b={...a,type:c}).evaluator,h.get(b.type)?.evaluator)}}):[],wordTemplatePath:a.wordTemplatePath||"",builtIn:!!a.builtIn}}function s(){try{let a=l();if(!d.existsSync(a))return[];return JSON.parse(d.readFileSync(a,"utf-8")).map(r)}catch{return[]}}function t(a){d.writeFileSync(l(),JSON.stringify(a.map(r),null,2),"utf-8")}function u(){try{let a=m();if(!d.existsSync(a))return[];return JSON.parse(d.readFileSync(a,"utf-8")).map(q)}catch{return[]}}function v(a){d.writeFileSync(m(),JSON.stringify(a.map(q),null,2),"utf-8")}function w(){return[...new Map([...g,...u()].map(a=>[a.id,a])).values()]}function x(a){let b=q(a),c=u().filter(a=>a.id!==b.id);return c.push(b),v(c),b}function y(a){if(h.has(a))throw Error("系统内置门禁类型不可删除");v(u().filter(b=>b.id!==a))}function z(){return[...new Map(s().map(a=>[a.id,a])).values()]}function A(a){if(a)return s().find(b=>b.id===a)}function B(a){let b=r(a),c=s().filter(a=>a.id!==b.id);return c.push(b),t(c),b}function C(a){t(s().filter(b=>b.id!==a))}},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")},81296:(a,b,c)=>{c.r(b),c.d(b,{config:()=>n,default:()=>m,handler:()=>p});var d={};c.r(d),c.d(d,{default:()=>j});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(57367);function j(a,b){try{let c=String(a.query.mode||"spec");if("GET"===a.method)return b.status(200).json({specs:(0,i.Co)(),gateTypes:(0,i._q)()});if("POST"===a.method||"PUT"===a.method){if("gate-type"===c){let c=a.body;if(!c?.id||!c.name)return b.status(400).json({error:"gate type id and name required"});return b.status(200).json({gateType:(0,i.uD)(c),gateTypes:(0,i._q)(),specs:(0,i.Co)()})}let d=a.body;if(!d?.id||!d.name)return b.status(400).json({error:"spec id and name required"});return b.status(200).json({spec:(0,i.EK)(d),specs:(0,i.Co)(),gateTypes:(0,i._q)()})}if("DELETE"===a.method){let d=String(a.query.id||"");if(!d)return b.status(400).json({error:"id required"});if("gate-type"===c)return(0,i.ug)(d),b.status(200).json({success:!0,specs:(0,i.Co)(),gateTypes:(0,i._q)()});return(0,i.ER)(d),b.status(200).json({success:!0,specs:(0,i.Co)(),gateTypes:(0,i._q)()})}return b.status(405).json({error:"Method not allowed"})}catch(a){console.error("[api] documents/specs",a),b.status(500).json({error:a instanceof Error?a.message:"Internal server error"})}}var k=c(68970),l=c(50296);let m=(0,h.M)(d,"default"),n=(0,h.M)(d,"config"),o=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/documents/specs",pathname:"/api/documents/specs",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function p(a,b,c){let d=await o.prepare(a,b,{srcPage:"/api/documents/specs"});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,k.getTracer)(),e=d.getActiveScopeSpan(),j=o.instrumentationOnRequestError.bind(o),m=async e=>o.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:o.isDev,page:"/api/documents/specs",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")!==l.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 m(e):await d.withPropagatedContext(a.headers,()=>d.trace(l.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:k.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},m))}catch(a){if(o.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}}};var b=require("../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705],()=>b(b.s=81296));module.exports=c})();
1
+ "use strict";(()=>{var a={};a.id=1282,a.ids=[1282],a.modules={48161:a=>{a.exports=require("node:os")},57367:(a,b,c)=>{c.d(b,{Co:()=>A,EK:()=>C,ER:()=>D,_q:()=>x,py:()=>B,uD:()=>y,ug:()=>z});var d=c(73024),e=c(48161),f=c(76760);let g=[{id:"required_fact",name:"必需事实",description:"检查指定事实字段是否存在。",builtIn:!0,defaultLevel:"warning",evaluator:{subject:"fact",operator:"exists"}},{id:"required_chapter",name:"必需章节",description:"检查指定章节是否存在。",builtIn:!0,defaultLevel:"error",evaluator:{subject:"chapter",operator:"exists"}},{id:"required_file_role",name:"必需文件角色",description:"检查项目角色配置是否绑定指定文件角色。",builtIn:!0,defaultLevel:"error",evaluator:{subject:"file_role",operator:"exists"}},{id:"required_prompt_role",name:"必需提示词角色",description:"检查项目角色配置是否绑定指定提示词角色。",builtIn:!0,defaultLevel:"warning",evaluator:{subject:"prompt_role",operator:"exists"}},{id:"source_required",name:"事实必须有来源",description:"检查结构化事实是否都有资料来源。",builtIn:!0,defaultLevel:"warning",evaluator:{subject:"source",operator:"all_have_source"}},{id:"forbidden_text",name:"禁止出现文本",description:"检查全文是否出现禁用文本。",builtIn:!0,defaultLevel:"error",evaluator:{subject:"document",operator:"not_contains"}},{id:"min_chapter_length",name:"章节最低字数",description:"检查指定章节是否达到最低字数。",builtIn:!0,defaultLevel:"warning",evaluator:{subject:"chapter",operator:"min_length"}},{id:"table_required",name:"必须有表格",description:"检查文档是否包含结构化表格。",builtIn:!0,defaultLevel:"warning",evaluator:{subject:"table",operator:"min_count",min:1}}],h=new Map(g.map(a=>[a.id,a])),i=["document","chapter","fact","file_role","prompt_role","table","image","source"],j=["exists","contains","not_contains","regex_match","regex_not_match","min_count","min_length","all_have_source","image_caption_required","table_explanation_required"];function k(){let a=f.join(e.homedir(),".customize-agent");return d.mkdirSync(a,{recursive:!0}),a}function l(){return f.join(k(),"document-specs.json")}function m(){return f.join(k(),"document-gate-types.json")}function n(a){return(a||`spec-${Date.now()}`).replace(/[^a-zA-Z0-9_-]/gu,"-").slice(0,80)}function o(a,b=""){return String(a||b).trim().slice(0,500)}function p(a=[]){return[...new Set(a.filter(Boolean))]}function q(a,b){let c=a||b||{subject:"document",operator:"contains"},d=i.includes(c.subject)?c.subject:"document",e=j.includes(c.operator)?c.operator:"contains",f=Number(c.min);return{subject:d,operator:e,target:o(c.target),value:o(c.value),min:Number.isFinite(f)&&f>0?f:void 0}}function r(a){let b=n(a.id||a.name||`gate-type-${Date.now()}`);if(h.has(b))throw Error("不能覆盖系统内置门禁类型");return{id:b,name:o(a.name,"自定义门禁类型"),description:o(a.description),builtIn:!1,defaultLevel:"warning"===a.defaultLevel||"info"===a.defaultLevel?a.defaultLevel:"error",evaluator:q(a.evaluator)}}function s(a){return{id:n(a.id),name:a.name||"未命名规范包",description:a.description||"",factFields:Array.isArray(a.factFields)?a.factFields.filter(a=>a.name).map(a=>({id:n(a.id),name:a.name,type:"auto",required:!!a.required,sourceRoleIds:p(Array.isArray(a.sourceRoleIds)?a.sourceRoleIds:[]),extractionHint:a.extractionHint||"",validationHint:a.validationHint||""})):[],chapterMode:"fixed"===a.chapterMode?"fixed":"dynamic",chapterRules:Array.isArray(a.chapterRules)?a.chapterRules.filter(a=>a.title).map((a,b)=>({id:n(a.id),title:a.title,required:!!a.required,order:Number.isFinite(a.order)?a.order:b,minWords:Number.isFinite(a.minWords)?a.minWords:0,requiredFactIds:p(Array.isArray(a.requiredFactIds)?a.requiredFactIds:[]),requiredFileRoleIds:p(Array.isArray(a.requiredFileRoleIds)?a.requiredFileRoleIds:[]),requiredPromptRoleIds:p(Array.isArray(a.requiredPromptRoleIds)?a.requiredPromptRoleIds:[]),generationHint:a.generationHint||""})):[],dynamicChapterRule:{source:["file_outline","file_role","fact_group","table_rows"].includes(a.dynamicChapterRule?.source)?a.dynamicChapterRule.source:"ai_plan",sourceRoleIds:p(Array.isArray(a.dynamicChapterRule?.sourceRoleIds)?a.dynamicChapterRule.sourceRoleIds:[]),minChapters:Number.isFinite(a.dynamicChapterRule?.minChapters)?a.dynamicChapterRule.minChapters:void 0,maxChapters:Number.isFinite(a.dynamicChapterRule?.maxChapters)?a.dynamicChapterRule.maxChapters:void 0,titleStrategy:["source_title","field_value","template"].includes(a.dynamicChapterRule?.titleStrategy||"")?a.dynamicChapterRule?.titleStrategy:"ai_summary",titleTemplate:a.dynamicChapterRule?.titleTemplate||"",minWordsPerChapter:Number.isFinite(a.dynamicChapterRule?.minWordsPerChapter)?a.dynamicChapterRule.minWordsPerChapter:void 0,requiredFactIds:p(Array.isArray(a.dynamicChapterRule?.requiredFactIds)?a.dynamicChapterRule.requiredFactIds:[]),requiredFileRoleIds:p(Array.isArray(a.dynamicChapterRule?.requiredFileRoleIds)?a.dynamicChapterRule.requiredFileRoleIds:[]),requiredPromptRoleIds:p(Array.isArray(a.dynamicChapterRule?.requiredPromptRoleIds)?a.dynamicChapterRule.requiredPromptRoleIds:[]),generationHint:a.dynamicChapterRule?.generationHint||""},gateRules:Array.isArray(a.gateRules)?a.gateRules.filter(a=>a.name).map(a=>{var b;let c=n(a.type||a.name||"custom_gate");return{id:n(a.id),name:a.name,type:c,level:"warning"===a.level||"info"===a.level?a.level:"error",target:a.target||"",value:a.value||"",evaluator:q((b={...a,type:c}).evaluator,h.get(b.type)?.evaluator)}}):[],wordTemplatePath:a.wordTemplatePath||"",builtIn:!!a.builtIn}}function t(){try{let a=l();if(!d.existsSync(a))return[];return JSON.parse(d.readFileSync(a,"utf-8")).map(s)}catch{return[]}}function u(a){d.writeFileSync(l(),JSON.stringify(a.map(s),null,2),"utf-8")}function v(){try{let a=m();if(!d.existsSync(a))return[];return JSON.parse(d.readFileSync(a,"utf-8")).map(r)}catch{return[]}}function w(a){d.writeFileSync(m(),JSON.stringify(a.map(r),null,2),"utf-8")}function x(){return[...new Map([...g,...v()].map(a=>[a.id,a])).values()]}function y(a){let b=r(a),c=v().filter(a=>a.id!==b.id);return c.push(b),w(c),b}function z(a){if(h.has(a))throw Error("系统内置门禁类型不可删除");w(v().filter(b=>b.id!==a))}function A(){return[...new Map(t().map(a=>[a.id,a])).values()]}function B(a){if(a)return t().find(b=>b.id===a)}function C(a){let b=s(a),c=t().filter(a=>a.id!==b.id);return c.push(b),u(c),b}function D(a){u(t().filter(b=>b.id!==a))}},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")},81296:(a,b,c)=>{c.r(b),c.d(b,{config:()=>n,default:()=>m,handler:()=>p});var d={};c.r(d),c.d(d,{default:()=>j});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(57367);function j(a,b){try{let c=String(a.query.mode||"spec");if("GET"===a.method)return b.status(200).json({specs:(0,i.Co)(),gateTypes:(0,i._q)()});if("POST"===a.method||"PUT"===a.method){if("gate-type"===c){let c=a.body;if(!c?.id||!c.name)return b.status(400).json({error:"gate type id and name required"});return b.status(200).json({gateType:(0,i.uD)(c),gateTypes:(0,i._q)(),specs:(0,i.Co)()})}let d=a.body;if(!d?.id||!d.name)return b.status(400).json({error:"spec id and name required"});return b.status(200).json({spec:(0,i.EK)(d),specs:(0,i.Co)(),gateTypes:(0,i._q)()})}if("DELETE"===a.method){let d=String(a.query.id||"");if(!d)return b.status(400).json({error:"id required"});if("gate-type"===c)return(0,i.ug)(d),b.status(200).json({success:!0,specs:(0,i.Co)(),gateTypes:(0,i._q)()});return(0,i.ER)(d),b.status(200).json({success:!0,specs:(0,i.Co)(),gateTypes:(0,i._q)()})}return b.status(405).json({error:"Method not allowed"})}catch(a){console.error("[api] documents/specs",a),b.status(500).json({error:a instanceof Error?a.message:"Internal server error"})}}var k=c(68970),l=c(50296);let m=(0,h.M)(d,"default"),n=(0,h.M)(d,"config"),o=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/documents/specs",pathname:"/api/documents/specs",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function p(a,b,c){let d=await o.prepare(a,b,{srcPage:"/api/documents/specs"});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,k.getTracer)(),e=d.getActiveScopeSpan(),j=o.instrumentationOnRequestError.bind(o),m=async e=>o.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:o.isDev,page:"/api/documents/specs",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")!==l.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 m(e):await d.withPropagatedContext(a.headers,()=>d.trace(l.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:k.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},m))}catch(a){if(o.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}}};var b=require("../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705],()=>b(b.s=81296));module.exports=c})();
@@ -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="preload" href="/_next/static/css/38dba0a7a42a8df3.css" as="style"/><link rel="stylesheet" href="/_next/static/css/38dba0a7a42a8df3.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-77d10b4726f13aa5.js" defer=""></script><script src="/_next/static/chunks/framework-161be364fd69a7ce.js" defer=""></script><script src="/_next/static/chunks/main-91fb767ebd74c9c1.js" defer=""></script><script src="/_next/static/chunks/pages/_app-15f2d98b25c5d3ce.js" defer=""></script><script src="/_next/static/chunks/433-233659be69169c19.js" defer=""></script><script src="/_next/static/chunks/787-c18af810af3433f6.js" defer=""></script><script src="/_next/static/chunks/150-134099bf526e9292.js" defer=""></script><script src="/_next/static/chunks/749-83476f9bcd014a5a.js" defer=""></script><script src="/_next/static/chunks/pages/asset-library-e9ddfe1cbaac42d9.js" defer=""></script><script src="/_next/static/vm4gX3opuCeylimLPKC7_/_buildManifest.js" defer=""></script><script src="/_next/static/vm4gX3opuCeylimLPKC7_/_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_16_"><aside class="sidebar"><a href="/overview"><div class="sidebarLogo"><div class="sidebarLogoTitle" style="font-size:20px;font-weight:800;letter-spacing:0.5px"><span class="logoGradient">Customize Agent</span></div></div></a><button class="sidebarCollapseBtn" aria-label="收起侧边栏"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-left-close"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path><path d="m16 15-3-3 3-3"></path></svg></button><nav class="sidebarNav"><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>总览</span></div></a><div><div class="sidebarItem sidebarParent"><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>知识库</span><span class="sidebarChevron"><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-chevron-right"><path d="m9 18 6-6-6-6"></path></svg></span></div></div><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>模型配置</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>提示词管理</span></div></a><a href="/document-roles"><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>角色配置</span></div></a><a href="/document-specs"><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-file-text"><path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"></path><path d="M14 2v4a2 2 0 0 0 2 2h4"></path><path d="M10 9H8"></path><path d="M16 13H8"></path><path d="M16 17H8"></path></svg><span>文档规范包</span></div></a><a href="/documents"><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-files"><path d="M20 7h-3a2 2 0 0 1-2-2V2"></path><path d="M9 18a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h7l4 4v10a2 2 0 0 1-2 2Z"></path><path d="M3 7.6v12.8A1.6 1.6 0 0 0 4.6 22h9.8"></path></svg><span>工作流模版库</span></div></a><a href="/asset-library"><div class="sidebarItem sidebarItemActive"><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-folder-open"><path d="m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"></path></svg><span>生成资源</span></div></a><div><div class="sidebarItem sidebarParent"><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-brain"><path d="M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z"></path><path d="M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z"></path><path d="M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4"></path><path d="M17.599 6.5a3 3 0 0 0 .399-1.375"></path><path d="M6.003 5.125A3 3 0 0 0 6.401 6.5"></path><path d="M3.477 10.896a4 4 0 0 1 .585-.396"></path><path d="M19.938 10.5a4 4 0 0 1 .585.396"></path><path d="M6 18a4 4 0 0 1-1.967-.516"></path><path d="M19.967 17.484A4 4 0 0 1 18 18"></path></svg><span>上下文工程</span><span class="sidebarChevron"><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-chevron-right"><path d="m9 18 6-6-6-6"></path></svg></span></div></div><a href="/system/logs"><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-bug"><path d="m8 2 1.88 1.88"></path><path d="M14.12 3.88 16 2"></path><path d="M9 7.13v-1a3.003 3.003 0 1 1 6 0v1"></path><path d="M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6"></path><path d="M12 20v-9"></path><path d="M6.53 9C4.6 8.8 3 7.1 3 5"></path><path d="M6 13H2"></path><path d="M3 21c0-2.1 1.7-3.9 3.8-4"></path><path d="M20.97 5c0 2.1-1.6 3.8-3.5 4"></path><path d="M22 13h-4"></path><path d="M17.2 17c2.1.1 3.8 1.9 3.8 4"></path></svg><span>系统日志</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>指引</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>设置</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_16_"><button type="button" class="ant-btn css-1pi45l5 css-var-_R_16_ 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 class="space-y-5 animateFadeIn"><div class="ant-skeleton ant-skeleton-active css-1pi45l5 css-var-_R_16_"><div class="ant-skeleton-section"><h3 class="ant-skeleton-title" style="width:38%"></h3><ul class="ant-skeleton-paragraph"><li style="width:61%"></li></ul></div></div><div class="ant-row css-1pi45l5 css-var-_R_16_" style="margin-inline:-6px;row-gap:12px"><div style="padding-inline:6px" class="ant-col ant-col-xs-24 ant-col-sm-12 ant-col-md-8 ant-col-xl-6 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-body"><div class="ant-skeleton ant-skeleton-active css-1pi45l5 css-var-_R_16_"><div class="ant-skeleton-section"><h3 class="ant-skeleton-title" style="width:38%"></h3><ul class="ant-skeleton-paragraph"><li></li><li></li><li style="width:61%"></li></ul></div></div></div></div></div><div style="padding-inline:6px" class="ant-col ant-col-xs-24 ant-col-sm-12 ant-col-md-8 ant-col-xl-6 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-body"><div class="ant-skeleton ant-skeleton-active css-1pi45l5 css-var-_R_16_"><div class="ant-skeleton-section"><h3 class="ant-skeleton-title" style="width:38%"></h3><ul class="ant-skeleton-paragraph"><li></li><li></li><li style="width:61%"></li></ul></div></div></div></div></div><div style="padding-inline:6px" class="ant-col ant-col-xs-24 ant-col-sm-12 ant-col-md-8 ant-col-xl-6 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-body"><div class="ant-skeleton ant-skeleton-active css-1pi45l5 css-var-_R_16_"><div class="ant-skeleton-section"><h3 class="ant-skeleton-title" style="width:38%"></h3><ul class="ant-skeleton-paragraph"><li></li><li></li><li style="width:61%"></li></ul></div></div></div></div></div><div style="padding-inline:6px" class="ant-col ant-col-xs-24 ant-col-sm-12 ant-col-md-8 ant-col-xl-6 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-body"><div class="ant-skeleton ant-skeleton-active css-1pi45l5 css-var-_R_16_"><div class="ant-skeleton-section"><h3 class="ant-skeleton-title" style="width:38%"></h3><ul class="ant-skeleton-paragraph"><li></li><li></li><li style="width:61%"></li></ul></div></div></div></div></div><div style="padding-inline:6px" class="ant-col ant-col-xs-24 ant-col-sm-12 ant-col-md-8 ant-col-xl-6 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-body"><div class="ant-skeleton ant-skeleton-active css-1pi45l5 css-var-_R_16_"><div class="ant-skeleton-section"><h3 class="ant-skeleton-title" style="width:38%"></h3><ul class="ant-skeleton-paragraph"><li></li><li></li><li style="width:61%"></li></ul></div></div></div></div></div><div style="padding-inline:6px" class="ant-col ant-col-xs-24 ant-col-sm-12 ant-col-md-8 ant-col-xl-6 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-body"><div class="ant-skeleton ant-skeleton-active css-1pi45l5 css-var-_R_16_"><div class="ant-skeleton-section"><h3 class="ant-skeleton-title" style="width:38%"></h3><ul class="ant-skeleton-paragraph"><li></li><li></li><li style="width:61%"></li></ul></div></div></div></div></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/asset-library","query":{},"buildId":"vm4gX3opuCeylimLPKC7_","nextExport":true,"autoExport":true,"isFallback":false,"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="preload" href="/_next/static/css/38dba0a7a42a8df3.css" as="style"/><link rel="stylesheet" href="/_next/static/css/38dba0a7a42a8df3.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-77d10b4726f13aa5.js" defer=""></script><script src="/_next/static/chunks/framework-161be364fd69a7ce.js" defer=""></script><script src="/_next/static/chunks/main-91fb767ebd74c9c1.js" defer=""></script><script src="/_next/static/chunks/pages/_app-8abe93a007ab30a7.js" defer=""></script><script src="/_next/static/chunks/433-233659be69169c19.js" defer=""></script><script src="/_next/static/chunks/787-c18af810af3433f6.js" defer=""></script><script src="/_next/static/chunks/150-134099bf526e9292.js" defer=""></script><script src="/_next/static/chunks/749-83476f9bcd014a5a.js" defer=""></script><script src="/_next/static/chunks/pages/asset-library-e9ddfe1cbaac42d9.js" defer=""></script><script src="/_next/static/dq39asOIM1hVN5SMdBZn3/_buildManifest.js" defer=""></script><script src="/_next/static/dq39asOIM1hVN5SMdBZn3/_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_16_"><aside class="sidebar"><a href="/overview"><div class="sidebarLogo"><div class="sidebarLogoTitle" style="font-size:20px;font-weight:800;letter-spacing:0.5px"><span class="logoGradient">Customize Agent</span></div></div></a><button class="sidebarCollapseBtn" aria-label="收起侧边栏"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-left-close"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path><path d="m16 15-3-3 3-3"></path></svg></button><nav class="sidebarNav"><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>总览</span></div></a><div><div class="sidebarItem sidebarParent"><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>知识库</span><span class="sidebarChevron"><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-chevron-right"><path d="m9 18 6-6-6-6"></path></svg></span></div></div><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>模型配置</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>提示词管理</span></div></a><a href="/document-roles"><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>角色配置</span></div></a><a href="/document-specs"><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-file-text"><path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"></path><path d="M14 2v4a2 2 0 0 0 2 2h4"></path><path d="M10 9H8"></path><path d="M16 13H8"></path><path d="M16 17H8"></path></svg><span>文档规范包</span></div></a><a href="/documents"><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-files"><path d="M20 7h-3a2 2 0 0 1-2-2V2"></path><path d="M9 18a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h7l4 4v10a2 2 0 0 1-2 2Z"></path><path d="M3 7.6v12.8A1.6 1.6 0 0 0 4.6 22h9.8"></path></svg><span>工作流模版库</span></div></a><a href="/asset-library"><div class="sidebarItem sidebarItemActive"><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-folder-open"><path d="m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"></path></svg><span>生成资源</span></div></a><div><div class="sidebarItem sidebarParent"><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-brain"><path d="M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z"></path><path d="M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z"></path><path d="M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4"></path><path d="M17.599 6.5a3 3 0 0 0 .399-1.375"></path><path d="M6.003 5.125A3 3 0 0 0 6.401 6.5"></path><path d="M3.477 10.896a4 4 0 0 1 .585-.396"></path><path d="M19.938 10.5a4 4 0 0 1 .585.396"></path><path d="M6 18a4 4 0 0 1-1.967-.516"></path><path d="M19.967 17.484A4 4 0 0 1 18 18"></path></svg><span>上下文工程</span><span class="sidebarChevron"><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-chevron-right"><path d="m9 18 6-6-6-6"></path></svg></span></div></div><a href="/system/logs"><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-bug"><path d="m8 2 1.88 1.88"></path><path d="M14.12 3.88 16 2"></path><path d="M9 7.13v-1a3.003 3.003 0 1 1 6 0v1"></path><path d="M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6"></path><path d="M12 20v-9"></path><path d="M6.53 9C4.6 8.8 3 7.1 3 5"></path><path d="M6 13H2"></path><path d="M3 21c0-2.1 1.7-3.9 3.8-4"></path><path d="M20.97 5c0 2.1-1.6 3.8-3.5 4"></path><path d="M22 13h-4"></path><path d="M17.2 17c2.1.1 3.8 1.9 3.8 4"></path></svg><span>系统日志</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>指引</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>设置</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_16_"><button type="button" class="ant-btn css-1pi45l5 css-var-_R_16_ 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 class="space-y-5 animateFadeIn"><div class="ant-skeleton ant-skeleton-active css-1pi45l5 css-var-_R_16_"><div class="ant-skeleton-section"><h3 class="ant-skeleton-title" style="width:38%"></h3><ul class="ant-skeleton-paragraph"><li style="width:61%"></li></ul></div></div><div class="ant-row css-1pi45l5 css-var-_R_16_" style="margin-inline:-6px;row-gap:12px"><div style="padding-inline:6px" class="ant-col ant-col-xs-24 ant-col-sm-12 ant-col-md-8 ant-col-xl-6 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-body"><div class="ant-skeleton ant-skeleton-active css-1pi45l5 css-var-_R_16_"><div class="ant-skeleton-section"><h3 class="ant-skeleton-title" style="width:38%"></h3><ul class="ant-skeleton-paragraph"><li></li><li></li><li style="width:61%"></li></ul></div></div></div></div></div><div style="padding-inline:6px" class="ant-col ant-col-xs-24 ant-col-sm-12 ant-col-md-8 ant-col-xl-6 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-body"><div class="ant-skeleton ant-skeleton-active css-1pi45l5 css-var-_R_16_"><div class="ant-skeleton-section"><h3 class="ant-skeleton-title" style="width:38%"></h3><ul class="ant-skeleton-paragraph"><li></li><li></li><li style="width:61%"></li></ul></div></div></div></div></div><div style="padding-inline:6px" class="ant-col ant-col-xs-24 ant-col-sm-12 ant-col-md-8 ant-col-xl-6 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-body"><div class="ant-skeleton ant-skeleton-active css-1pi45l5 css-var-_R_16_"><div class="ant-skeleton-section"><h3 class="ant-skeleton-title" style="width:38%"></h3><ul class="ant-skeleton-paragraph"><li></li><li></li><li style="width:61%"></li></ul></div></div></div></div></div><div style="padding-inline:6px" class="ant-col ant-col-xs-24 ant-col-sm-12 ant-col-md-8 ant-col-xl-6 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-body"><div class="ant-skeleton ant-skeleton-active css-1pi45l5 css-var-_R_16_"><div class="ant-skeleton-section"><h3 class="ant-skeleton-title" style="width:38%"></h3><ul class="ant-skeleton-paragraph"><li></li><li></li><li style="width:61%"></li></ul></div></div></div></div></div><div style="padding-inline:6px" class="ant-col ant-col-xs-24 ant-col-sm-12 ant-col-md-8 ant-col-xl-6 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-body"><div class="ant-skeleton ant-skeleton-active css-1pi45l5 css-var-_R_16_"><div class="ant-skeleton-section"><h3 class="ant-skeleton-title" style="width:38%"></h3><ul class="ant-skeleton-paragraph"><li></li><li></li><li style="width:61%"></li></ul></div></div></div></div></div><div style="padding-inline:6px" class="ant-col ant-col-xs-24 ant-col-sm-12 ant-col-md-8 ant-col-xl-6 css-1pi45l5 css-var-_R_16_"><div class="ant-card ant-card-bordered ant-card-small css-1pi45l5 css-var-_R_16_"><div class="ant-card-body"><div class="ant-skeleton ant-skeleton-active css-1pi45l5 css-var-_R_16_"><div class="ant-skeleton-section"><h3 class="ant-skeleton-title" style="width:38%"></h3><ul class="ant-skeleton-paragraph"><li></li><li></li><li style="width:61%"></li></ul></div></div></div></div></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/asset-library","query":{},"buildId":"dq39asOIM1hVN5SMdBZn3","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>