@customize-agent/server 4.2.5 → 4.2.6

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 (149) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +65 -47
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/routes-manifest.json +6 -0
  5. package/.next/server/chunks/1936.js +4 -4
  6. package/.next/server/chunks/208.js +61 -0
  7. package/.next/server/chunks/2405.js +87 -0
  8. package/.next/server/chunks/2484.js +1 -0
  9. package/.next/server/chunks/4680.js +48 -0
  10. package/.next/server/chunks/5284.js +36 -157
  11. package/.next/server/chunks/8204.js +1 -1
  12. package/.next/server/chunks/8661.js +1 -1
  13. package/.next/server/chunks/9227.js +1 -0
  14. package/.next/server/chunks/9301.js +3 -3
  15. package/.next/server/middleware-build-manifest.js +1 -1
  16. package/.next/server/pages/404.html +1 -1
  17. package/.next/server/pages/500.html +1 -1
  18. package/.next/server/pages/_error.js +1 -1
  19. package/.next/server/pages/api/assets/generated/preview.js +1 -1
  20. package/.next/server/pages/api/assets/generated/preview.js.nft.json +1 -1
  21. package/.next/server/pages/api/assets/generated.js +1 -1
  22. package/.next/server/pages/api/assets/generated.js.nft.json +1 -1
  23. package/.next/server/pages/api/config/embedding/healthCheck.js.nft.json +1 -1
  24. package/.next/server/pages/api/documents/chapter/regenerate.js +1 -1
  25. package/.next/server/pages/api/documents/chapter/regenerate.js.nft.json +1 -1
  26. package/.next/server/pages/api/documents/export.js +3 -3
  27. package/.next/server/pages/api/documents/export.js.nft.json +1 -1
  28. package/.next/server/pages/api/documents/generate.js +2 -2
  29. package/.next/server/pages/api/documents/generate.js.nft.json +1 -1
  30. package/.next/server/pages/api/documents/generated/[id].js +1 -1
  31. package/.next/server/pages/api/documents/generated/[id].js.nft.json +1 -1
  32. package/.next/server/pages/api/documents/generated.js +1 -1
  33. package/.next/server/pages/api/documents/generated.js.nft.json +1 -1
  34. package/.next/server/pages/api/documents/templates.js +1 -1
  35. package/.next/server/pages/api/documents/templates.js.nft.json +1 -1
  36. package/.next/server/pages/api/jobs/[id].js +3 -3
  37. package/.next/server/pages/api/jobs/[id].js.nft.json +1 -1
  38. package/.next/server/pages/api/jobs.js +3 -3
  39. package/.next/server/pages/api/jobs.js.nft.json +1 -1
  40. package/.next/server/pages/api/kb/categories.js +2 -2
  41. package/.next/server/pages/api/kb/categories.js.nft.json +1 -1
  42. package/.next/server/pages/api/kb/duplicates.js +2 -2
  43. package/.next/server/pages/api/kb/duplicates.js.nft.json +1 -1
  44. package/.next/server/pages/api/kb/evaluate.js +2 -2
  45. package/.next/server/pages/api/kb/evaluate.js.nft.json +1 -1
  46. package/.next/server/pages/api/kb/files/detail.js +3 -3
  47. package/.next/server/pages/api/kb/files/detail.js.nft.json +1 -1
  48. package/.next/server/pages/api/kb/files/open.js +2 -2
  49. package/.next/server/pages/api/kb/files/open.js.nft.json +1 -1
  50. package/.next/server/pages/api/kb/files/preview-pdf-page.js +2 -2
  51. package/.next/server/pages/api/kb/files/preview-pdf-page.js.nft.json +1 -1
  52. package/.next/server/pages/api/kb/files/reindex.js +1 -1
  53. package/.next/server/pages/api/kb/files/reindex.js.nft.json +1 -1
  54. package/.next/server/pages/api/kb/files/search.js +2 -2
  55. package/.next/server/pages/api/kb/files/search.js.nft.json +1 -1
  56. package/.next/server/pages/api/kb/files/tree.js +2 -2
  57. package/.next/server/pages/api/kb/files/tree.js.nft.json +1 -1
  58. package/.next/server/pages/api/kb/files.js +3 -3
  59. package/.next/server/pages/api/kb/files.js.nft.json +1 -1
  60. package/.next/server/pages/api/kb/ignore.js +2 -2
  61. package/.next/server/pages/api/kb/ignore.js.nft.json +1 -1
  62. package/.next/server/pages/api/kb/intelligence.js +1 -1
  63. package/.next/server/pages/api/kb/intelligence.js.nft.json +1 -1
  64. package/.next/server/pages/api/kb/operations.js +3 -3
  65. package/.next/server/pages/api/kb/operations.js.nft.json +1 -1
  66. package/.next/server/pages/api/kb/reindex.js +1 -1
  67. package/.next/server/pages/api/kb/reindex.js.nft.json +1 -1
  68. package/.next/server/pages/api/kb/search.js +2 -2
  69. package/.next/server/pages/api/kb/search.js.nft.json +1 -1
  70. package/.next/server/pages/api/kb/stats.js +2 -2
  71. package/.next/server/pages/api/kb/stats.js.nft.json +1 -1
  72. package/.next/server/pages/api/kb/tags.js +2 -2
  73. package/.next/server/pages/api/kb/tags.js.nft.json +1 -1
  74. package/.next/server/pages/api/kb/upload/complete.js +1 -1
  75. package/.next/server/pages/api/kb/upload/complete.js.nft.json +1 -1
  76. package/.next/server/pages/api/kb/upload/progress.js +3 -3
  77. package/.next/server/pages/api/kb/upload/progress.js.nft.json +1 -1
  78. package/.next/server/pages/api/kb/upload.js +1 -1
  79. package/.next/server/pages/api/kb/upload.js.nft.json +1 -1
  80. package/.next/server/pages/api/prompt.js +1 -1
  81. package/.next/server/pages/api/prompt.js.nft.json +1 -1
  82. package/.next/server/pages/api/template-references.js +1 -0
  83. package/.next/server/pages/api/template-references.js.nft.json +1 -0
  84. package/.next/server/pages/asset-library.html +1 -1
  85. package/.next/server/pages/document-roles.html +1 -1
  86. package/.next/server/pages/documents.html +1 -1
  87. package/.next/server/pages/guide.html +1 -1
  88. package/.next/server/pages/index.html +1 -1
  89. package/.next/server/pages/knowledge/file-detail.html +1 -1
  90. package/.next/server/pages/knowledge/files.html +1 -1
  91. package/.next/server/pages/knowledge/manage.html +1 -1
  92. package/.next/server/pages/knowledge.html +1 -1
  93. package/.next/server/pages/models.html +1 -1
  94. package/.next/server/pages/overview.html +1 -1
  95. package/.next/server/pages/prompt.html +1 -1
  96. package/.next/server/pages/settings.html +1 -1
  97. package/.next/server/pages/system/logs.html +1 -1
  98. package/.next/server/pages/template-references.html +1 -0
  99. package/.next/server/pages/template-references.js.nft.json +1 -0
  100. package/.next/server/pages-manifest.json +32 -30
  101. package/.next/static/XgGKtqmwpahXYicc2ieXW/_buildManifest.js +1 -0
  102. package/.next/static/chunks/102-881dcc464f983c89.js +41 -0
  103. package/.next/static/chunks/{7-20bcc985742a9ae1.js → 224-790cf01fcf6820ee.js} +2 -2
  104. package/.next/static/chunks/260-244c94eacd903620.js +1 -0
  105. package/.next/static/chunks/289-42781fb699646699.js +38 -0
  106. package/.next/static/chunks/592-c667dfd191c1ea0c.js +24 -0
  107. package/.next/static/chunks/69-34d57b77fd2eed20.js +1 -0
  108. package/.next/static/chunks/700-5d29b0475311f590.js +1 -0
  109. package/.next/static/chunks/788-e98701da4d6ca319.js +1 -0
  110. package/.next/static/chunks/{795-cd94e8d4e9768eb9.js → 795-61fe67c7203b6001.js} +1 -1
  111. package/.next/static/chunks/930-0436dcaa92fb41f6.js +1 -0
  112. package/.next/static/chunks/986-771dc425e7b25964.js +8 -0
  113. package/.next/static/chunks/pages/{_app-1511aa64f9299003.js → _app-55467a8f660aa065.js} +17 -17
  114. package/.next/static/chunks/pages/{asset-library-a1047694e888e655.js → asset-library-f6319fc04559e43d.js} +1 -1
  115. package/.next/static/chunks/pages/document-roles-4ccb2db16dc4b63c.js +1 -0
  116. package/.next/static/chunks/pages/documents-f9880371363a534c.js +1 -0
  117. package/.next/static/chunks/pages/guide-a73d8eea2cba97e1.js +1 -0
  118. package/.next/static/chunks/pages/knowledge/{file-detail-02cd5d87cd1d1c5d.js → file-detail-3a04722f7720abf5.js} +1 -1
  119. package/.next/static/chunks/pages/knowledge/files-3ba329d8e6335929.js +1 -0
  120. package/.next/static/chunks/pages/knowledge/manage-558987c599dc4cd5.js +1 -0
  121. package/.next/static/chunks/pages/{models-aa250428e72433df.js → models-e6f755b68bff8515.js} +1 -1
  122. package/.next/static/chunks/pages/prompt-839287c514595765.js +1 -0
  123. package/.next/static/chunks/pages/{settings-810eb1a6cf1a6b02.js → settings-17632b1471b4862f.js} +1 -1
  124. package/.next/static/chunks/pages/system/logs-2e849bcdf371d791.js +1 -0
  125. package/.next/static/chunks/pages/template-references-68b9bd99fc910922.js +1 -0
  126. package/.next/static/css/10c378422f47671a.css +1 -0
  127. package/messages/en-US.json +57 -1
  128. package/messages/zh-CN.json +57 -1
  129. package/package.json +10 -11
  130. package/scripts/kb-index-worker.cjs +8 -90
  131. package/.next/package.json +0 -1
  132. package/.next/server/chunks/6071.js +0 -69
  133. package/.next/static/chunks/187-358527d7061417bf.js +0 -1
  134. package/.next/static/chunks/230-8184e70eae35f2bb.js +0 -1
  135. package/.next/static/chunks/289-35ac595388bbd018.js +0 -78
  136. package/.next/static/chunks/563-b12f299d34bb9e44.js +0 -1
  137. package/.next/static/chunks/665-88e20299084b9e73.js +0 -1
  138. package/.next/static/chunks/788-3afeb069ed706ac0.js +0 -1
  139. package/.next/static/chunks/957-7c7f05f1c2ccfb96.js +0 -8
  140. package/.next/static/chunks/pages/document-roles-5620a98d6312f81c.js +0 -1
  141. package/.next/static/chunks/pages/documents-a2ccb31a69a78d98.js +0 -1
  142. package/.next/static/chunks/pages/guide-b847733a9a832c2c.js +0 -1
  143. package/.next/static/chunks/pages/knowledge/files-0d9a0d407b38a0a3.js +0 -1
  144. package/.next/static/chunks/pages/knowledge/manage-a00bb7fc6a76f820.js +0 -1
  145. package/.next/static/chunks/pages/prompt-224af05519ef8304.js +0 -1
  146. package/.next/static/chunks/pages/system/logs-6f45ef8d862759a2.js +0 -1
  147. package/.next/static/css/3f9e41b5c0ba95f7.css +0 -1
  148. package/.next/static/mvAsRk5Gy-Q_z_e6HUGRA/_buildManifest.js +0 -1
  149. /package/.next/static/{mvAsRk5Gy-Q_z_e6HUGRA → XgGKtqmwpahXYicc2ieXW}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- "use strict";(()=>{var a={};a.id=8644,a.ids=[8644],a.modules={15751:a=>{a.exports=require("xlsx")},16006:(a,b,c)=>{c.d(b,{j:()=>e});var d=c(91879);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")},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")},77598:a=>{a.exports=require("node:crypto")},83142:a=>{a.exports=import("marked")},83237:a=>{a.exports=import("playwright")},83258:(a,b,c)=>{c.r(b),c.d(b,{config:()=>ag,default:()=>af,handler:()=>ai});var d={};c.r(d),c.d(d,{__documentExportTest__:()=>ab,config:()=>v,default:()=>ac});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(48661),r=c(44533),s=c(61373),t=c(91879),u=c(16006);let v={api:{bodyParser:{sizeLimit:"50mb"},responseLimit:!1}};function w(a){return a.replace(/&/gu,"&amp;").replace(/</gu,"&lt;").replace(/>/gu,"&gt;").replace(/"/gu,"&quot;")}let x=(0,n.promisify)(i.execFile),y={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".webp":"image/webp",".gif":"image/gif",".svg":"image/svg+xml"};function z(a){return y[l.extname(a).toLowerCase()]||""}function A(a,b){let c=l.relative(b,a);return!!c&&!c.startsWith("..")&&!l.isAbsolute(c)}function B(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(A(b,d)||A(b,e))&&!!z(b)&&j.existsSync(b)&&j.statSync(b).isFile()})||null}function C(a,b=(0,r.aY)()){let c=new Map,d=0;return a.replace(/<img\b([^>]*?)\bsrc=["']([^"']+)["']([^>]*)>/giu,(a,e,f,g)=>{let h=B(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:${z(h)};base64,${j.readFileSync(h).toString("base64")}`,c.set(h,k),d+=i.size),`<img${e}src="${k}"${g}>`})}function D(a){return/^\s*\|?\s*:?-{3,}:?\s*(\|\s*:?-{3,}:?\s*)+\|?\s*$/u.test(a.trim())}function E(a){let b=a.trim();return!(!b||/^#{1,6}\s+/u.test(b)||D(b))&&(b.match(/(?<!\\)\|/gu)||[]).length>=1}function F(a){return a.trim().replace(/^\|/u,"").replace(/\|$/u,"").trim().split(/(?<!\\)\|/u).map(a=>a.replace(/\\\|/gu,"|").trim())}function G(a,b){let c=a.slice(0,b);for(a.length>b&&b>0&&(c[b-1]=[c[b-1],...a.slice(b)].filter(Boolean).join(" | "));c.length<b;)c.push("");return`| ${c.map(a=>a.replace(/\|/gu,"\\|")).join(" | ")} |`}function H(a){if(2===a)return["信息项","内容"];let b=["控制项目","控制内容","执行要求","责任主体","检查与验收","备注"];return Array.from({length:a},(a,c)=>b[c]||`补充说明${c+1}`)}function I(a){return function(a){let b=a.split("\n"),c=[],d=0;for(let a=0;a<b.length;a++){let e=b[a]||"",f=e.trim();if(!f||/^(#{1,6}\s|\||[-*+]\s|\d+[.、]\s|```|<div|\[\[PAGE)/u.test(f)){d>1&&c.push(""),c.push(e),d=0;continue}if((d+=1)>1){let a=(c[c.length-1]||"").trim(),b=/^(?:根据|依据|按照|针对|对于|关于|同时|此外|另外|因此|所以|但是|然而|并且|而且|以及|或者|一是|二是|三是|步骤\d|第[\d一二三四五六七八九十]+[步条])/u,e=/[。;))」』]$/u.test(a),g=/^[((「『\d]/u.test(f)||b.test(f);(e||g)&&(c.push(""),d=1)}c.push(e)}return c.join("\n").replace(/\n{3,}/gu,"\n\n")}(function(a){let b=a.replace(/\r?\n/gu,"\n").split("\n"),c=[];for(let a=0;a<b.length;){let d=b[a]||"",e=d.replace(/([^|\n])\|\s*:?-{3,}:?\s*(\|\s*:?-{3,}:?\s*)+\|?\s*$/u,"$1"),f=b[a+1]?.trim()===""?a+2:a+1,g=b[f];if(E(d)&&void 0!==g&&D(g)){let e=F(d),h=F(g).length,i=[],j=f+1;for(;j<b.length;){let a=b[j]||"";if(!E(a))break;i.push(F(a)),j+=1}let k=Math.max(2,e.length,h,...i.map(a=>a.length));for(c.length>0&&c[c.length-1]?.trim()&&c.push(""),c.push(G(e,k)),c.push(`| ${Array.from({length:k},()=>"---").join(" | ")} |`),a=f+1;a<b.length;){let d=b[a]||"";if(!E(d))break;c.push(G(F(d),k)),a+=1}a<b.length&&b[a]?.trim()&&c.push("");continue}let h=E(d)?function(a,b){let c=[],d=b;for(;d<a.length&&E(a[d]||"");)c.push(a[d]||""),d+=1;let e=Math.max(...c.map(a=>F(a).length),0);return c.length<2||e<2?null:{rows:c,columns:e,next:d}}(b,a):null;if(h){for(let a of(c.length>0&&c[c.length-1]?.trim()&&c.push(""),c.push(G(H(h.columns),h.columns)),c.push(`| ${Array.from({length:h.columns},()=>"---").join(" | ")} |`),h.rows))c.push(G(F(a),h.columns));(a=h.next)<b.length&&b[a]?.trim()&&c.push("");continue}if(D(d)){let e=function(a,b){let c=[],d=b;for(;d<a.length&&E(a[d]||"");)c.push(a[d]||""),d+=1;return{rows:c,next:d}}(b,a+1);if(e.rows.length>0){let f=Math.max(2,F(d).length,...e.rows.map(a=>F(a).length));for(let a of(c.length>0&&c[c.length-1]?.trim()&&c.push(""),c.push(G(H(f),f)),c.push(`| ${Array.from({length:f},()=>"---").join(" | ")} |`),e.rows))c.push(G(F(a),f));(a=e.next)<b.length&&b[a]?.trim()&&c.push("");continue}}c.push(e),a+=1}return c.join("\n").replace(/\n{3,}/gu,"\n\n")}((function(a){let b=a.trim(),c=/^```(?:markdown|md)?\s*\n([\s\S]*?)\n```\s*$/iu.exec(b);return c?c[1].trim():a})(a).replace(/m\s*<sup>\s*2\s*<\/sup>/giu,"m\xb2").replace(/m\s*<sup>\s*3\s*<\/sup>/giu,"m\xb3").replace(/m\s*\^\s*2/giu,"m\xb2").replace(/m\s*\^\s*3/giu,"m\xb3").replace(/㎡/gu,"m\xb2").replace(/㎥/gu,"m\xb3").replace(/(?<=\d)m\s*2(?![\p{L}\p{N}_])/giu,"m\xb2").replace(/(?<=\d)m\s*3(?![\p{L}\p{N}_])/giu,"m\xb3").replace(/(?<![\p{L}\p{N}_])m\s*2(?![\p{L}\p{N}_])/giu,"m\xb2").replace(/(?<![\p{L}\p{N}_])m\s*3(?![\p{L}\p{N}_])/giu,"m\xb3")))}function J(a){return I(a).replace(/!\[[^\]]*\]\([^)]*\)/gu,"").replace(/\[([^\]]+)\]\([^)]*\)/gu,"$1").replace(/[*_`]/gu,"").replace(/<br\s*\/?>/giu,"\n").replace(/<[^>]+>/gu,"").trim()}function K(a,b){let c=/([\d.]+)\s*(pt|px)?/iu.exec(a||"");if(!c)return b;let d=Number(c[1]);return Number.isFinite(d)?c[2]?.toLowerCase()==="px"?.75*d:d:b}function L(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 M(a){let b=R(a),c=a?.typography||{},d=c.bodySize?K(c.bodySize,12):12,e=c.titleSize?K(c.titleSize,22):22,f=c.lineHeight?K(c.lineHeight,18):18,g=c.fontFamily?c.fontFamily:"黑体";return{...b,bodyPt:d,h1Pt:e,h2Pt:15,h3Pt:14,linePt:f,bodyHalfPoints:Math.round(2*d),h1HalfPoints:Math.round(2*e),h2HalfPoints:Math.round(30),h3HalfPoints:Math.round(28),lineTwips:Math.round(20*f),fontHeading:g,fontHeadingAscii:"黑体"===g?"SimHei":g,fontBody:"宋体",fontBodyAscii:"SimSun",bodyCss:`${d}pt`,h1Css:`${e}pt`,h2Css:"15pt",h3Css:"14pt",lineCss:`${f}pt`}}function N(a,b={}){if(b.pageBreak)return'<w:p><w:r><w:br w:type="page"/></w:r></w:p>';let c=[b.indentLeft?`w:left="${b.indentLeft}"`:"",b.firstLine?`w:firstLine="${b.firstLine}"`:"",b.hanging?`w:hanging="${b.hanging}"`:""].filter(Boolean).join(" "),d=[b.styleId?`<w:pStyle w:val="${w(b.styleId)}"/>`:"",b.numbering?`<w:numPr><w:ilvl w:val="${b.numbering.level}"/><w:numId w:val="${b.numbering.numId}"/></w:numPr>`:"",b.keepNext?"<w:keepNext/>":"",`<w:spacing w:line="${b.line??440}" w:lineRule="exact" w:before="${b.spacingBefore??0}" w:after="${b.spacingAfter??120}"/>`,c?`<w:ind ${c}/>`:"",b.align?`<w:jc w:val="${b.align}"/>`:"","number"==typeof b.outlineLevel?`<w:outlineLvl w:val="${b.outlineLevel}"/>`:""].filter(Boolean).join("");return`<w:p><w:pPr>${d}</w:pPr>${function(a,b={}){let c=b.fontEastAsia||"宋体",d=b.fontAscii||"SimSun",e=[`<w:rFonts w:ascii="${w(d)}" w:hAnsi="${w(d)}" w:eastAsia="${w(c)}" w:cs="${w(d)}"/>`,b.bold?"<w:b/>":"",b.size?`<w:sz w:val="${b.size}"/><w:szCs w:val="${b.size}"/>`:""].filter(Boolean).join("");return`<w:r><w:rPr>${e}</w:rPr><w:t xml:space="preserve">${w(a)}</w:t></w:r>`}(a,b)}</w:p>`}async function O(a,b,c,d=[]){a.folder("word")?.file("styles.xml",function(a){let b=M(a),c=`w:ascii="${w(b.fontBodyAscii)}" w:hAnsi="${w(b.fontBodyAscii)}" w:eastAsia="${w(b.fontBody)}" w:cs="${w(b.fontBodyAscii)}"`,d=(a,d,e,f,g,h,i)=>`<w:style w:type="paragraph" w:styleId="${a}"><w:name w:val="${d}"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:uiPriority w:val="${9+f}"/><w:qFormat/><w:rPr><w:b/><w:rFonts ${c}/><w:sz w:val="${e}"/><w:szCs w:val="${e}"/></w:rPr><w:pPr><w:keepNext/><w:keepLines/><w:outlineLvl w:val="${f}"/><w:spacing w:line="${b.lineTwips}" w:lineRule="exact" w:before="${g}" w:after="${h}"/>${i?`<w:jc w:val="${i}"/>`:""}</w:pPr></w:style>`;return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?><w:styles xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:docDefaults><w:rPrDefault><w:rPr><w:rFonts ${c}/><w:sz w:val="${b.bodyHalfPoints}"/><w:szCs w:val="${b.bodyHalfPoints}"/></w:rPr></w:rPrDefault><w:pPrDefault><w:pPr><w:spacing w:line="${b.lineTwips}" w:lineRule="exact" w:after="120"/></w:pPr></w:pPrDefault></w:docDefaults><w:style w:type="paragraph" w:default="1" w:styleId="Normal"><w:name w:val="Normal"/><w:qFormat/><w:rPr><w:rFonts ${c}/><w:sz w:val="${b.bodyHalfPoints}"/><w:szCs w:val="${b.bodyHalfPoints}"/></w:rPr><w:pPr><w:spacing w:line="${b.lineTwips}" w:lineRule="exact" w:after="120"/></w:pPr></w:style>${d("Heading1","heading 1",Math.max(b.h1HalfPoints+4,36),0,260,180,"center")}${d("Heading2","heading 2",Math.max(b.h1HalfPoints,32),1,180,100)}${d("Heading3","heading 3",Math.max(b.bodyHalfPoints,28),2,120,80)}<w:style w:type="paragraph" w:styleId="ListParagraph"><w:name w:val="List Paragraph"/><w:basedOn w:val="Normal"/><w:uiPriority w:val="34"/><w:qFormat/><w:pPr><w:ind w:left="720" w:hanging="360"/></w:pPr></w:style></w:styles>`}(c)),a.folder("word")?.file("numbering.xml",'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><w:numbering xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:abstractNum w:abstractNumId="1"><w:multiLevelType w:val="hybridMultilevel"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:numFmt w:val="decimal"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:numFmt w:val="decimal"/><w:lvlText w:val="%1.%2"/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1080" w:hanging="420"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:numFmt w:val="decimal"/><w:lvlText w:val="%1.%2.%3"/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1440" w:hanging="480"/></w:pPr></w:lvl></w:abstractNum><w:num w:numId="1"><w:abstractNumId w:val="1"/></w:num></w:numbering>'),a.folder("word")?.file("settings.xml",'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><w:settings xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:updateFields w:val="true"/><w:compat><w:compatSetting w:name="compatibilityMode" w:uri="http://schemas.microsoft.com/office/word" w:val="15"/></w:compat></w:settings>'),a.folder("word")?.file("fontTable.xml",function(a){let b=M(a);return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?><w:fonts xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:font w:name="${w(b.fontBody)}"><w:charset w:val="86"/><w:family w:val="roman"/></w:font><w:font w:name="${w(b.fontBodyAscii)}"><w:family w:val="roman"/></w:font></w:fonts>`}(c)),a.folder("docProps")?.file("core.xml",function(a){let b=new Date().toISOString();return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?><cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><dc:title>${w(a)}</dc:title><dc:creator>Customize Agent</dc:creator><cp:lastModifiedBy>Customize Agent</cp:lastModifiedBy><dcterms:created xsi:type="dcterms:W3CDTF">${b}</dcterms:created><dcterms:modified xsi:type="dcterms:W3CDTF">${b}</dcterms:modified></cp:coreProperties>`}(b)),a.folder("docProps")?.file("app.xml",'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"><Application>Customize Agent</Application><DocSecurity>0</DocSecurity><ScaleCrop>false</ScaleCrop><Company></Company><LinksUpToDate>false</LinksUpToDate><SharedDoc>false</SharedDoc><HyperlinksChanged>false</HyperlinksChanged><AppVersion>1.0</AppVersion></Properties>');let e=a.folder("word")?.folder("media");for(let a of d)e?.file(a.fileName,a.buffer);let f=a.file("word/_rels/document.xml.rels"),g=f?await f.async("string"):'<?xml version="1.0" encoding="UTF-8"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"></Relationships>';for(let[a,b,c]of[["rStyle","http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles","styles.xml"],["rNumbering","http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering","numbering.xml"],["rSettings","http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings","settings.xml"],["rFontTable","http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable","fontTable.xml"]])g.includes(b)||(g=g.replace("</Relationships>",`<Relationship Id="${a}" Type="${b}" Target="${c}"/></Relationships>`));for(let a of d)g.includes(`Id="${a.relationshipId}"`)||(g=g.replace("</Relationships>",`<Relationship Id="${a.relationshipId}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="media/${a.fileName}"/></Relationships>`));a.folder("word")?.folder("_rels")?.file("document.xml.rels",g);let h=a.file("_rels/.rels"),i=h?await h.async("string"):'<?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>';i.includes("metadata/core-properties")||(i=i.replace("</Relationships>",'<Relationship Id="rCore" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/></Relationships>')),i.includes("extended-properties")||(i=i.replace("</Relationships>",'<Relationship Id="rApp" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/></Relationships>')),a.folder("_rels")?.file(".rels",i);let j=a.file("[Content_Types].xml"),k=j?await j.async("string"):'<?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>';for(let a of new Set(d.map(a=>l.extname(a.fileName).slice(1).toLowerCase()).filter(Boolean))){let b="jpg"===a||"jpeg"===a?"image/jpeg":"png"===a?"image/png":"gif"===a?"image/gif":"webp"===a?"image/webp":void 0;b&&!k.includes(`Extension="${a}"`)&&(k=k.replace("</Types>",`<Default Extension="${a}" ContentType="${b}"/></Types>`))}for(let[a,b]of[["/word/styles.xml","application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml"],["/word/numbering.xml","application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml"],["/word/settings.xml","application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml"],["/word/fontTable.xml","application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml"],["/docProps/core.xml","application/vnd.openxmlformats-package.core-properties+xml"],["/docProps/app.xml","application/vnd.openxmlformats-officedocument.extended-properties+xml"]])k.includes(`PartName="${a}"`)||(k=k.replace("</Types>",`<Override PartName="${a}" ContentType="${b}"/></Types>`));a.file("[Content_Types].xml",k)}async function P(a,b,c,d,e=process.cwd()){let f={projectRoot:e,images:[]},g=function(a,b,c){let d=M(b),e=d.h1HalfPoints,f=d.bodyHalfPoints,g=I(a).replace(/<div class="page-break"><\/div>/gu,"\n[[PAGE_BREAK]]\n").split("\n"),h=[],i=!1,k=!1,m=!1;for(let a=0;a<g.length;){var n;let b=g[a].trim();if(!b){a+=1;continue}if(/<div\s+class=["']document-cover["']\s*>/iu.test(b)){k=!0,a+=1;continue}if(k&&/^<\/div>$/iu.test(b)){k=!1,a+=1;continue}if("[[PAGE_BREAK]]"===b){i=!1,k=!1,h.push(N("",{pageBreak:!0})),a+=1;continue}if(k){let c=J(b.replace(/^#\s+/u,""));c&&h.push(N(c,{bold:!0,size:Math.max(e+8,44),line:Math.round(1.15*d.lineTwips),fontEastAsia:d.fontHeading,fontAscii:d.fontHeadingAscii,align:"center",spacingBefore:360,spacingAfter:220})),a+=1;continue}let o=c?function(a,b){let c=/!\[([^\]]*)\]\(([^)]+)\)/u.exec(a);if(!c)return null;let d=B(c[2].trim(),b.projectRoot);if(!d)return null;let e=j.readFileSync(d),f=z(d);if(!f||"image/svg+xml"===f||e.length>8388608)return null;let g=b.images.length+1,h=l.extname(d).toLowerCase()||".png",i=function(a,b){if("image/png"===b&&a.length>=24&&"PNG"===a.toString("ascii",1,4))return{width:a.readUInt32BE(16),height:a.readUInt32BE(20)};if("image/jpeg"===b){let b=2;for(;b+9<a.length&&255===a[b];){let c=a[b+1],d=a.readUInt16BE(b+2);if(c>=192&&c<=195)return{height:a.readUInt16BE(b+5),width:a.readUInt16BE(b+7)};b+=2+d}}return{width:640,height:360}}(e,f),k=Math.min(1,620/Math.max(i.width,1)),m={relationshipId:`rImage${g}`,fileName:`image${g}${h}`,buffer:e,contentType:f,widthEmu:Math.round(i.width*k*9525),heightEmu:Math.round(i.height*k*9525),altText:c[1]||`image${g}`};return b.images.push(m),m}(b,c):null;if(o){h.push(`<w:p><w:pPr><w:jc w:val="center"/><w:spacing w:after="120"/></w:pPr><w:r><w:drawing><wp:inline xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing"><wp:extent cx="${o.widthEmu}" cy="${o.heightEmu}"/><wp:docPr id="${o.relationshipId.replace(/\D/gu,"")||"1"}" name="${w(o.altText||o.fileName)}"/><a:graphic xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"><a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/picture"><pic:pic xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture"><pic:nvPicPr><pic:cNvPr id="0" name="${w(o.fileName)}"/><pic:cNvPicPr/></pic:nvPicPr><pic:blipFill><a:blip r:embed="${o.relationshipId}" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"/><a:stretch><a:fillRect/></a:stretch></pic:blipFill><pic:spPr><a:xfrm><a:off x="0" y="0"/><a:ext cx="${o.widthEmu}" cy="${o.heightEmu}"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom></pic:spPr></pic:pic></a:graphicData></a:graphic></wp:inline></w:drawing></w:r></w:p>`),a+=1;continue}let p=function(a,b){let c=a[b+1]?.trim()===""?b+2:b+1;if(c>=a.length||!E(a[b]||"")||!D(a[c]||""))return null;let d=F(a[b]||"").map(a=>J(a)),e=F(a[c]||"").length,f=[],g=c+1;for(;g<a.length&&E(a[g]||"");)f.push(F(a[g]||"").map(a=>J(a))),g+=1;let h=Math.max(2,d.length,e,...f.map(a=>a.length)),i=a=>{let b=a.slice(0,h);for(a.length>h&&h>0&&(b[h-1]=[b[h-1],...a.slice(h)].filter(Boolean).join(" | "));b.length<h;)b.push("");return b};return{rows:[i(d),...f.map(i)],next:g}}(g,a);if(p){h.push(function(a,b){let c=Math.max(1,...a.map(a=>a.length)),d=Math.floor(9638/c),e=Array.from({length:c},(a,b)=>b===c-1?9638-d*(c-1):d),f=`<w:tblGrid>${e.map(a=>`<w:gridCol w:w="${a}"/>`).join("")}</w:tblGrid>`;return`<w:tbl><w:tblPr><w:tblW w:w="9638" w:type="dxa"/><w:tblLook w:firstRow="1" w:noHBand="0"/><w:tblBorders><w:top w:val="single" w:sz="6" w:color="666666"/><w:left w:val="single" w:sz="6" w:color="666666"/><w:bottom w:val="single" w:sz="6" w:color="666666"/><w:right w:val="single" w:sz="6" w:color="666666"/><w:insideH w:val="single" w:sz="4" w:color="666666"/><w:insideV w:val="single" w:sz="4" w:color="666666"/></w:tblBorders></w:tblPr>${f}${a.map((a,c)=>`<w:tr>${e.map((d,e)=>{let f=a[e]||"";return`<w:tc><w:tcPr><w:tcW w:w="${d}" w:type="dxa"/><w:tcMar><w:top w:w="80" w:type="dxa"/><w:left w:w="120" w:type="dxa"/><w:bottom w:w="80" w:type="dxa"/><w:right w:w="120" w:type="dxa"/></w:tcMar>${0===c?'<w:shd w:val="clear" w:fill="F3F4F6"/>':""}</w:tcPr>${N(f,{bold:0===c,size:b.bodyHalfPoints,line:b.lineTwips,fontEastAsia:b.fontBody,fontAscii:b.fontBodyAscii,spacingAfter:0,align:0===c?"center":"left"})}</w:tc>`}).join("")}</w:tr>`).join("")}</w:tbl>`}(p.rows,d),N("",{spacingAfter:80,line:d.lineTwips})),a=p.next;continue}if(D(b)){a+=1;continue}let q=/^(#{1,4})\s+(.+)$/u.exec(b);if(q){let b=J(q[2]);i="目录"===b,h.push((n=q[1].length,2===n?N(b,{styleId:"Heading1",outlineLevel:0,bold:!0,size:d.h1HalfPoints,line:d.lineTwips,fontEastAsia:d.fontHeading,fontAscii:d.fontHeadingAscii,align:"center",spacingBefore:260,spacingAfter:180,keepNext:!0}):3===n?N(b,{styleId:"Heading2",outlineLevel:1,bold:!0,size:d.h2HalfPoints,line:d.lineTwips,fontEastAsia:d.fontHeading,fontAscii:d.fontHeadingAscii,align:"left",spacingBefore:180,spacingAfter:100,keepNext:!0}):N(b,{styleId:"Heading3",outlineLevel:2,bold:!0,size:d.h3HalfPoints,line:d.lineTwips,fontEastAsia:d.fontHeading,fontAscii:d.fontHeadingAscii,align:"left",spacingBefore:120,spacingAfter:80,keepNext:!0}))),i&&!m&&(h.push(`<w:p><w:pPr><w:spacing w:line="${d.lineTwips}" w:lineRule="exact" w:after="120"/></w:pPr><w:r><w:fldChar w:fldCharType="begin"/></w:r><w:r><w:instrText xml:space="preserve">TOC \\o &quot;1-3&quot; \\h \\z \\u</w:instrText></w:r><w:r><w:fldChar w:fldCharType="separate"/></w:r><w:r><w:t>请在 Word 中右键更新目录</w:t></w:r><w:r><w:fldChar w:fldCharType="end"/></w:r></w:p>`),m=!0),a+=1;continue}let r=J(b),s=function(a){let b=/^\s*(\d+(?:\.\d+){0,2})([.、])\s+(.+)$/u.exec(a);return b?{level:Math.min(b[1].split(".").length-1,2),marker:`${b[1]}${b[2]}`,text:J(b[3])}:null}(b),t=function(a){let b=/^\s*[-*+]\s+(.+)$/u.exec(a);return b?J(b[1]):null}(b);if(!i&&s){let b=0===s.level?720:1===s.level?1080:1440,c=0===s.level?360:1===s.level?420:480;h.push(N(`${s.marker} ${s.text}`,{styleId:"ListParagraph",numbering:{numId:1,level:s.level},size:f,line:d.lineTwips,fontEastAsia:d.fontBody,fontAscii:d.fontBodyAscii,indentLeft:b,hanging:c,spacingAfter:60})),a+=1;continue}if(!i&&t){h.push(N(`• ${t}`,{styleId:"ListParagraph",size:f,line:d.lineTwips,fontEastAsia:d.fontBody,fontAscii:d.fontBodyAscii,indentLeft:720,hanging:360,spacingAfter:60})),a+=1;continue}let u=/^\*\*[^*]+\*\*\s*$/u.test(b)&&r.length<=40,v=/^\*\*[^*]+\*\*\s*[::]?\s*$/u.test(b)||/^([一二三四五六七八九十]+)/u.test(r)||/^[一二三四五六七八九十]+、/u.test(r);h.push(i?function(a,b){let c=/^\s*\d+\.\d+\s+\S/u.test(a);return N(J(a),{bold:!c,size:b.bodyHalfPoints,line:b.lineTwips,fontEastAsia:b.fontBody,fontAscii:b.fontBodyAscii,spacingAfter:c?30:80,indentLeft:420*!!c,align:"left"})}(b,d):N(r,{bold:v||u,size:u?Math.max(d.bodyHalfPoints+2,30):f,line:d.lineTwips,fontEastAsia:d.fontBody,fontAscii:d.fontBodyAscii,align:u?"left":"both",firstLine:v||u?0:560,spacingBefore:u?120:80*!!v,spacingAfter:u?60:void 0})),a+=1}return h.join("")}(b,c,f);if(d&&j.existsSync(d)){let b=await p().loadAsync(j.readFileSync(d)),e=b.file("word/document.xml");if(e){let d=await e.async("string");return b.file("word/document.xml",d.replace(/\{\{title\}\}/gu,w(a)).replace(/\{\{content\}\}/gu,g)),await O(b,a,c,f.images),b.generateAsync({type:"nodebuffer"})}}let h=c?.page||{},i=new(p());return i.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>${g}<w:sectPr><w:pgSz w:w="11906" w:h="16838"/><w:pgMar w:top="${L(h.marginTop,2.5)}" w:right="${L(h.marginRight,2)}" w:bottom="${L(h.marginBottom,2)}" w:left="${L(h.marginLeft,2)}"/></w:sectPr></w:body></w:document>`),await O(i,a,c,f.images),i.generateAsync({type:"nodebuffer"})}function Q(a,b){return a&&/^[\w\s\u4e00-\u9fa5,"'().-]+$/u.test(a)?a:b}function R(a){let b=a?.page||{},c=a?.typography||{},d=Q(b.paper,"A4"),e=Q(b.marginTop,"24mm"),f=Q(b.marginRight,"18mm"),g=Q(b.marginBottom,"22mm"),h=Q(b.marginLeft,"18mm"),i=c.fontFamily||"SimSun, 宋体, serif",j=c.lineHeight||"18pt";return{paper:d,marginTop:e,marginRight:f,marginBottom:g,marginLeft:h,fontFamily:i,lineHeight:j,titleSize:c.titleSize||"22pt",bodySize:c.bodySize||"12pt"}}function S(a){return a.replace(/(<h2[^>]*>\s*目录\s*<\/h2>)([\s\S]*?)(<div class="page-break"><\/div>)/u,(a,b,c,d)=>{let e=c.replace(/<ol>\s*([\s\S]*?)\s*<\/ol>/u,(a,b)=>b).replace(/<li>\s*([^<]+?)\s*<\/li>/gu,"<p>$1</p>").replace(/<p>(?:\s|&nbsp;|&#160;)*(\d+\.\d+\s+[^<]+)<\/p>/giu,'<p class="toc-section">$1</p>').replace(/<p>(?!(?:\s|&nbsp;|&#160;)*<\/p>|(?:\s|&nbsp;|&#160;)*\d+\.\d+\s)([\s\S]*?)<\/p>/giu,'<p class="toc-chapter">$1</p>');return`<section class="document-toc">${b}${e}</section>${d}`})}function T(a){let b=a.message.trim();return!/^(事实冲突|必需章节缺失):/u.test(b)&&/出现禁用文本\s*(资料未提供|占位|TODO|TBD)|正文包含.*(资料未提供|占位)|图片、地图或附件引用路径明显无效|无效路径|表格语法错误|临时远程生成 URL|提示词全文|内部错误|生成未完成|低于目标页数|低于目标字数|文档预算未达成|正文篇幅低于目标|缺少规划小节|缺少必要的正式表格|正文缺少章节标题/iu.test(b)}function U(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 V(a,b){let c=U(a),d=b?U(b):void 0,e=[];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("导出内容缺少服务端生成记录中的表格");let f=a.split(/\r?\n/u).map(a=>/^(#{2,4})\s+(.+)$/u.exec(a.trim())).filter(a=>!!a).map(a=>({level:a[1].length,title:J(a[2])})).filter(a=>a.title&&"目录"!==a.title);0===f.length&&e.push("正文缺少章节标题"),f.some((a,b)=>b>0&&a.level-f[b-1].level>1)&&e.push("标题层级存在跳级,可能影响导出目录和导航");let g=f.map(a=>a.title.replace(/^第[一二三四五六七八九十百]+章\s*/u,"").replace(/^\d+(?:\.\d+)*\s*/u,"").replace(/[\s::.。]+$/gu,"").trim()).filter(Boolean).filter((a,b,c)=>c.indexOf(a)!==b);g.length>0&&e.push(`存在重复标题:${[...new Set(g)].slice(0,3).join("、")}`);let h=a.split(/\r?\n/u).map(a=>J(a)).filter(a=>a.length>0&&!/^#+\s/u.test(a));h.some(a=>a.length<=1)&&e.push("正文存在孤立字或残缺段落"),h.some(a=>/[,、;:和与在为对将]$/u.test(a)||/(通过|包括|如下|主要包括)$/u.test(a))&&e.push("正文存在疑似截断句或未完结段落"),h.some(a=>a.length>380)&&e.push("正文存在过长段落,建议拆分以改善导出版式");let i=function(a){let b=new Map,c=[];for(let d of a.split(/\n{2,}/u).map(a=>J(a)).filter(a=>a.length>=45&&!/^#+\s/u.test(a))){let a=d.replace(/\s+/gu,"").slice(0,90),e=(b.get(a)||0)+1;b.set(a,e),2===e&&c.push(d.slice(0,60))}return c}(a);return i.length>0&&e.push(`正文存在重复段落:${i.slice(0,2).join(";")}`),e.push(...function(a){let b=[],c=a.split(/\r?\n/u);for(let a=0;a<c.length;a+=1){let d=c[a]||"";if(!E(d))continue;let e=c[a+1]?.trim()===""?a+2:a+1;if(e<c.length&&D(c[e]||"")){let f=[],g=e+1;for(;g<c.length&&E(c[g]||"");)f.push(c[g]||""),g+=1;0===f.length&&b.push(`第 ${a+1} 行表格只有表头,没有数据行`);let h=[d,...f].map(a=>F(a).length);Math.max(...h)-Math.min(...h)>2&&b.push(`第 ${a+1} 行附近表格列数差异较大,导出版式可能异常`),a=g-1;continue}a+1<c.length&&E(c[a+1]||"")&&b.push(`第 ${a+1} 行附近疑似裸表格,已尝试自动规范化`)}return(a.match(/```/gu)||[]).length%2==1&&b.push("存在未闭合代码块,可能影响后续内容导出"),[...new Set(b)].slice(0,20)}(a)),[...new Set(e)]}function W(a){return a.replace(/(##\s*第[一二三四五六七八九十百千万\d]+章[^\n#]*?)\s+(#{3,4}\s*\d+(?:\.\d+)+\s+)/gu,"$1\n\n$2").replace(/([^\n])\s+(##\s*第[一二三四五六七八九十百千万\d]+章\s+)/gu,"$1\n\n$2").replace(/([^\n])\s+(#{3,4}\s*\d+(?:\.\d+)+\s+)/gu,"$1\n\n$2").replace(/(#{2,4}\s+[^\n]+?)\s+(#{2,4}\s+)/gu,"$1\n\n$2")}function X(a,b){let c=W(I((0,s.kT)(a))),d=W(I((0,s.kT)(b||"")));return{markdown:c,baselineMarkdown:d,issues:V(c,d)}}async function Y(a,b,d,e){let{marked:f}=await Promise.resolve().then(c.bind(c,83142));return C(function(a,b,c){let d=M(c),e=S(b);return`<!doctype html><html lang="zh-CN"><head><meta charset="utf-8"><title>${w(a)}</title><style>
1
+ "use strict";(()=>{var a={};a.id=8644,a.ids=[8644],a.modules={15751:a=>{a.exports=require("xlsx")},16006:(a,b,c)=>{c.d(b,{j:()=>e});var d=c(91879);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")},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")},77598:a=>{a.exports=require("node:crypto")},83142:a=>{a.exports=import("marked")},83237:a=>{a.exports=import("playwright")},83258:(a,b,c)=>{c.r(b),c.d(b,{config:()=>ah,default:()=>ag,handler:()=>aj});var d={};c.r(d),c.d(d,{__documentExportTest__:()=>ac,config:()=>v,default:()=>ad});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(48661),r=c(44533),s=c(61373),t=c(91879),u=c(16006);let v={api:{bodyParser:{sizeLimit:"50mb"},responseLimit:!1}};function w(a){return a.replace(/&/gu,"&amp;").replace(/</gu,"&lt;").replace(/>/gu,"&gt;").replace(/"/gu,"&quot;")}let x=(0,n.promisify)(i.execFile),y={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".webp":"image/webp",".gif":"image/gif",".svg":"image/svg+xml"};function z(a){return y[l.extname(a).toLowerCase()]||""}function A(a,b){let c=l.relative(b,a);return!!c&&!c.startsWith("..")&&!l.isAbsolute(c)}function B(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((0,r.NW)(b)),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(A(b,d)||A(b,e))&&!!z(b)&&j.existsSync(b)&&j.statSync(b).isFile()})||null}function C(a,b=(0,r.aY)()){let c=new Map,d=0;return a.replace(/<img\b([^>]*?)\bsrc=["']([^"']+)["']([^>]*)>/giu,(a,e,f,g)=>{let h=B(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:${z(h)};base64,${j.readFileSync(h).toString("base64")}`,c.set(h,k),d+=i.size),`<img${e}src="${k}"${g}>`})}function D(a){return/^\s*\|?\s*:?-{3,}:?\s*(\|\s*:?-{3,}:?\s*)+\|?\s*$/u.test(a.trim())}function E(a){let b=a.trim();return!(!b||/^#{1,6}\s+/u.test(b)||D(b))&&(b.match(/(?<!\\)\|/gu)||[]).length>=1}function F(a){return a.trim().replace(/^\|/u,"").replace(/\|$/u,"").trim().split(/(?<!\\)\|/u).map(a=>a.replace(/\\\|/gu,"|").trim())}function G(a,b){let c=a.slice(0,b);for(a.length>b&&b>0&&(c[b-1]=[c[b-1],...a.slice(b)].filter(Boolean).join(" | "));c.length<b;)c.push("");return`| ${c.map(a=>a.replace(/\|/gu,"\\|")).join(" | ")} |`}function H(a){if(2===a)return["信息项","内容"];let b=["控制项目","控制内容","执行要求","责任主体","检查与验收","备注"];return Array.from({length:a},(a,c)=>b[c]||`补充说明${c+1}`)}function I(a){return function(a){let b=a.split("\n"),c=[],d=0;for(let a=0;a<b.length;a++){let e=b[a]||"",f=e.trim();if(!f||/^(#{1,6}\s|\||[-*+]\s|\d+[.、]\s|```|<div|\[\[PAGE)/u.test(f)){d>1&&c.push(""),c.push(e),d=0;continue}if((d+=1)>1){let a=(c[c.length-1]||"").trim(),b=/^(?:根据|依据|按照|针对|对于|关于|同时|此外|另外|因此|所以|但是|然而|并且|而且|以及|或者|一是|二是|三是|步骤\d|第[\d一二三四五六七八九十]+[步条])/u,e=/[。;))」』]$/u.test(a),g=/^[((「『\d]/u.test(f)||b.test(f);(e||g)&&(c.push(""),d=1)}c.push(e)}return c.join("\n").replace(/\n{3,}/gu,"\n\n")}(function(a){let b=a.replace(/\r?\n/gu,"\n").split("\n"),c=[];for(let a=0;a<b.length;){let d=b[a]||"",e=d.replace(/([^|\n])\|\s*:?-{3,}:?\s*(\|\s*:?-{3,}:?\s*)+\|?\s*$/u,"$1"),f=b[a+1]?.trim()===""?a+2:a+1,g=b[f];if(E(d)&&void 0!==g&&D(g)){let e=F(d),h=F(g).length,i=[],j=f+1;for(;j<b.length;){let a=b[j]||"";if(!E(a))break;i.push(F(a)),j+=1}let k=Math.max(2,e.length,h,...i.map(a=>a.length));for(c.length>0&&c[c.length-1]?.trim()&&c.push(""),c.push(G(e,k)),c.push(`| ${Array.from({length:k},()=>"---").join(" | ")} |`),a=f+1;a<b.length;){let d=b[a]||"";if(!E(d))break;c.push(G(F(d),k)),a+=1}a<b.length&&b[a]?.trim()&&c.push("");continue}let h=E(d)?function(a,b){let c=[],d=b;for(;d<a.length&&E(a[d]||"");)c.push(a[d]||""),d+=1;let e=Math.max(...c.map(a=>F(a).length),0);return c.length<2||e<2?null:{rows:c,columns:e,next:d}}(b,a):null;if(h){for(let a of(c.length>0&&c[c.length-1]?.trim()&&c.push(""),c.push(G(H(h.columns),h.columns)),c.push(`| ${Array.from({length:h.columns},()=>"---").join(" | ")} |`),h.rows))c.push(G(F(a),h.columns));(a=h.next)<b.length&&b[a]?.trim()&&c.push("");continue}if(D(d)){let e=function(a,b){let c=[],d=b;for(;d<a.length&&E(a[d]||"");)c.push(a[d]||""),d+=1;return{rows:c,next:d}}(b,a+1);if(e.rows.length>0){let f=Math.max(2,F(d).length,...e.rows.map(a=>F(a).length));for(let a of(c.length>0&&c[c.length-1]?.trim()&&c.push(""),c.push(G(H(f),f)),c.push(`| ${Array.from({length:f},()=>"---").join(" | ")} |`),e.rows))c.push(G(F(a),f));(a=e.next)<b.length&&b[a]?.trim()&&c.push("");continue}}c.push(e),a+=1}return c.join("\n").replace(/\n{3,}/gu,"\n\n")}((function(a){let b=a.trim(),c=/^```(?:markdown|md)?\s*\n([\s\S]*?)\n```\s*$/iu.exec(b);return c?c[1].trim():a})(a).replace(/m\s*<sup>\s*2\s*<\/sup>/giu,"m\xb2").replace(/m\s*<sup>\s*3\s*<\/sup>/giu,"m\xb3").replace(/m\s*\^\s*2/giu,"m\xb2").replace(/m\s*\^\s*3/giu,"m\xb3").replace(/㎡/gu,"m\xb2").replace(/㎥/gu,"m\xb3").replace(/(?<=\d)m\s*2(?![\p{L}\p{N}_])/giu,"m\xb2").replace(/(?<=\d)m\s*3(?![\p{L}\p{N}_])/giu,"m\xb3").replace(/(?<![\p{L}\p{N}_])m\s*2(?![\p{L}\p{N}_])/giu,"m\xb2").replace(/(?<![\p{L}\p{N}_])m\s*3(?![\p{L}\p{N}_])/giu,"m\xb3")))}function J(a){return I(a).replace(/!\[[^\]]*\]\([^)]*\)/gu,"").replace(/\[([^\]]+)\]\([^)]*\)/gu,"$1").replace(/[*_`]/gu,"").replace(/<br\s*\/?>/giu,"\n").replace(/<[^>]+>/gu,"").trim()}function K(a,b){let c=/([\d.]+)\s*(pt|px)?/iu.exec(a||"");if(!c)return b;let d=Number(c[1]);return Number.isFinite(d)?c[2]?.toLowerCase()==="px"?.75*d:d:b}function L(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 M(a){let b=R(a),c=a?.typography||{},d=c.bodySize?K(c.bodySize,12):12,e=c.titleSize?K(c.titleSize,22):22,f=c.lineHeight?K(c.lineHeight,18):18,g=c.fontFamily?c.fontFamily:"黑体";return{...b,bodyPt:d,h1Pt:e,h2Pt:15,h3Pt:14,linePt:f,bodyHalfPoints:Math.round(2*d),h1HalfPoints:Math.round(2*e),h2HalfPoints:Math.round(30),h3HalfPoints:Math.round(28),lineTwips:Math.round(20*f),fontHeading:g,fontHeadingAscii:"黑体"===g?"SimHei":g,fontBody:"宋体",fontBodyAscii:"SimSun",bodyCss:`${d}pt`,h1Css:`${e}pt`,h2Css:"15pt",h3Css:"14pt",lineCss:`${f}pt`}}function N(a,b={}){if(b.pageBreak)return'<w:p><w:r><w:br w:type="page"/></w:r></w:p>';let c=[b.indentLeft?`w:left="${b.indentLeft}"`:"",b.firstLine?`w:firstLine="${b.firstLine}"`:"",b.hanging?`w:hanging="${b.hanging}"`:""].filter(Boolean).join(" "),d=[b.styleId?`<w:pStyle w:val="${w(b.styleId)}"/>`:"",b.numbering?`<w:numPr><w:ilvl w:val="${b.numbering.level}"/><w:numId w:val="${b.numbering.numId}"/></w:numPr>`:"",b.keepNext?"<w:keepNext/>":"",`<w:spacing w:line="${b.line??440}" w:lineRule="exact" w:before="${b.spacingBefore??0}" w:after="${b.spacingAfter??120}"/>`,c?`<w:ind ${c}/>`:"",b.align?`<w:jc w:val="${b.align}"/>`:"","number"==typeof b.outlineLevel?`<w:outlineLvl w:val="${b.outlineLevel}"/>`:""].filter(Boolean).join("");return`<w:p><w:pPr>${d}</w:pPr>${function(a,b={}){let c=b.fontEastAsia||"宋体",d=b.fontAscii||"SimSun",e=[`<w:rFonts w:ascii="${w(d)}" w:hAnsi="${w(d)}" w:eastAsia="${w(c)}" w:cs="${w(d)}"/>`,b.bold?"<w:b/>":"",b.size?`<w:sz w:val="${b.size}"/><w:szCs w:val="${b.size}"/>`:""].filter(Boolean).join("");return`<w:r><w:rPr>${e}</w:rPr><w:t xml:space="preserve">${w(a)}</w:t></w:r>`}(a,b)}</w:p>`}async function O(a,b,c,d=[]){a.folder("word")?.file("styles.xml",function(a){let b=M(a),c=`w:ascii="${w(b.fontBodyAscii)}" w:hAnsi="${w(b.fontBodyAscii)}" w:eastAsia="${w(b.fontBody)}" w:cs="${w(b.fontBodyAscii)}"`,d=(a,d,e,f,g,h,i)=>`<w:style w:type="paragraph" w:styleId="${a}"><w:name w:val="${d}"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:uiPriority w:val="${9+f}"/><w:qFormat/><w:rPr><w:b/><w:rFonts ${c}/><w:sz w:val="${e}"/><w:szCs w:val="${e}"/></w:rPr><w:pPr><w:keepNext/><w:keepLines/><w:outlineLvl w:val="${f}"/><w:spacing w:line="${b.lineTwips}" w:lineRule="exact" w:before="${g}" w:after="${h}"/>${i?`<w:jc w:val="${i}"/>`:""}</w:pPr></w:style>`;return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?><w:styles xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:docDefaults><w:rPrDefault><w:rPr><w:rFonts ${c}/><w:sz w:val="${b.bodyHalfPoints}"/><w:szCs w:val="${b.bodyHalfPoints}"/></w:rPr></w:rPrDefault><w:pPrDefault><w:pPr><w:spacing w:line="${b.lineTwips}" w:lineRule="exact" w:after="120"/></w:pPr></w:pPrDefault></w:docDefaults><w:style w:type="paragraph" w:default="1" w:styleId="Normal"><w:name w:val="Normal"/><w:qFormat/><w:rPr><w:rFonts ${c}/><w:sz w:val="${b.bodyHalfPoints}"/><w:szCs w:val="${b.bodyHalfPoints}"/></w:rPr><w:pPr><w:spacing w:line="${b.lineTwips}" w:lineRule="exact" w:after="120"/></w:pPr></w:style>${d("Heading1","heading 1",Math.max(b.h1HalfPoints+4,36),0,260,180,"center")}${d("Heading2","heading 2",Math.max(b.h1HalfPoints,32),1,180,100)}${d("Heading3","heading 3",Math.max(b.bodyHalfPoints,28),2,120,80)}<w:style w:type="paragraph" w:styleId="ListParagraph"><w:name w:val="List Paragraph"/><w:basedOn w:val="Normal"/><w:uiPriority w:val="34"/><w:qFormat/><w:pPr><w:ind w:left="720" w:hanging="360"/></w:pPr></w:style></w:styles>`}(c)),a.folder("word")?.file("numbering.xml",'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><w:numbering xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:abstractNum w:abstractNumId="1"><w:multiLevelType w:val="hybridMultilevel"/><w:lvl w:ilvl="0"><w:start w:val="1"/><w:numFmt w:val="decimal"/><w:lvlText w:val="%1."/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="720" w:hanging="360"/></w:pPr></w:lvl><w:lvl w:ilvl="1"><w:start w:val="1"/><w:numFmt w:val="decimal"/><w:lvlText w:val="%1.%2"/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1080" w:hanging="420"/></w:pPr></w:lvl><w:lvl w:ilvl="2"><w:start w:val="1"/><w:numFmt w:val="decimal"/><w:lvlText w:val="%1.%2.%3"/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="1440" w:hanging="480"/></w:pPr></w:lvl></w:abstractNum><w:num w:numId="1"><w:abstractNumId w:val="1"/></w:num></w:numbering>'),a.folder("word")?.file("settings.xml",'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><w:settings xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:updateFields w:val="true"/><w:compat><w:compatSetting w:name="compatibilityMode" w:uri="http://schemas.microsoft.com/office/word" w:val="15"/></w:compat></w:settings>'),a.folder("word")?.file("fontTable.xml",function(a){let b=M(a);return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?><w:fonts xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:font w:name="${w(b.fontBody)}"><w:charset w:val="86"/><w:family w:val="roman"/></w:font><w:font w:name="${w(b.fontBodyAscii)}"><w:family w:val="roman"/></w:font></w:fonts>`}(c)),a.folder("docProps")?.file("core.xml",function(a){let b=new Date().toISOString();return`<?xml version="1.0" encoding="UTF-8" standalone="yes"?><cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><dc:title>${w(a)}</dc:title><dc:creator>Customize Agent</dc:creator><cp:lastModifiedBy>Customize Agent</cp:lastModifiedBy><dcterms:created xsi:type="dcterms:W3CDTF">${b}</dcterms:created><dcterms:modified xsi:type="dcterms:W3CDTF">${b}</dcterms:modified></cp:coreProperties>`}(b)),a.folder("docProps")?.file("app.xml",'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"><Application>Customize Agent</Application><DocSecurity>0</DocSecurity><ScaleCrop>false</ScaleCrop><Company></Company><LinksUpToDate>false</LinksUpToDate><SharedDoc>false</SharedDoc><HyperlinksChanged>false</HyperlinksChanged><AppVersion>1.0</AppVersion></Properties>');let e=a.folder("word")?.folder("media");for(let a of d)e?.file(a.fileName,a.buffer);let f=a.file("word/_rels/document.xml.rels"),g=f?await f.async("string"):'<?xml version="1.0" encoding="UTF-8"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"></Relationships>';for(let[a,b,c]of[["rStyle","http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles","styles.xml"],["rNumbering","http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering","numbering.xml"],["rSettings","http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings","settings.xml"],["rFontTable","http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable","fontTable.xml"]])g.includes(b)||(g=g.replace("</Relationships>",`<Relationship Id="${a}" Type="${b}" Target="${c}"/></Relationships>`));for(let a of d)g.includes(`Id="${a.relationshipId}"`)||(g=g.replace("</Relationships>",`<Relationship Id="${a.relationshipId}" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="media/${a.fileName}"/></Relationships>`));a.folder("word")?.folder("_rels")?.file("document.xml.rels",g);let h=a.file("_rels/.rels"),i=h?await h.async("string"):'<?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>';i.includes("metadata/core-properties")||(i=i.replace("</Relationships>",'<Relationship Id="rCore" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/></Relationships>')),i.includes("extended-properties")||(i=i.replace("</Relationships>",'<Relationship Id="rApp" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/></Relationships>')),a.folder("_rels")?.file(".rels",i);let j=a.file("[Content_Types].xml"),k=j?await j.async("string"):'<?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>';for(let a of new Set(d.map(a=>l.extname(a.fileName).slice(1).toLowerCase()).filter(Boolean))){let b="jpg"===a||"jpeg"===a?"image/jpeg":"png"===a?"image/png":"gif"===a?"image/gif":"webp"===a?"image/webp":void 0;b&&!k.includes(`Extension="${a}"`)&&(k=k.replace("</Types>",`<Default Extension="${a}" ContentType="${b}"/></Types>`))}for(let[a,b]of[["/word/styles.xml","application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml"],["/word/numbering.xml","application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml"],["/word/settings.xml","application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml"],["/word/fontTable.xml","application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml"],["/docProps/core.xml","application/vnd.openxmlformats-package.core-properties+xml"],["/docProps/app.xml","application/vnd.openxmlformats-officedocument.extended-properties+xml"]])k.includes(`PartName="${a}"`)||(k=k.replace("</Types>",`<Override PartName="${a}" ContentType="${b}"/></Types>`));a.file("[Content_Types].xml",k)}async function P(a,b,c,d,e=process.cwd()){let f={projectRoot:e,images:[]},g=function(a,b,c){let d=M(b),e=d.h1HalfPoints,f=d.bodyHalfPoints,g=I(a).replace(/<div class="page-break"><\/div>/gu,"\n[[PAGE_BREAK]]\n").split("\n"),h=[],i=!1,k=!1,m=!1;for(let a=0;a<g.length;){var n;let b=g[a].trim();if(!b){a+=1;continue}if(/<div\s+class=["']document-cover["']\s*>/iu.test(b)){k=!0,a+=1;continue}if(k&&/^<\/div>$/iu.test(b)){k=!1,a+=1;continue}if("[[PAGE_BREAK]]"===b){i=!1,k=!1,h.push(N("",{pageBreak:!0})),a+=1;continue}if(k){let c=J(b.replace(/^#\s+/u,""));c&&h.push(N(c,{bold:!0,size:Math.max(e+8,44),line:Math.round(1.15*d.lineTwips),fontEastAsia:d.fontHeading,fontAscii:d.fontHeadingAscii,align:"center",spacingBefore:360,spacingAfter:220})),a+=1;continue}let o=c?function(a,b){let c=/!\[([^\]]*)\]\(([^)]+)\)/u.exec(a);if(!c)return null;let d=B(c[2].trim(),b.projectRoot);if(!d)return null;let e=j.readFileSync(d),f=z(d);if(!f||"image/svg+xml"===f||e.length>8388608)return null;let g=b.images.length+1,h=l.extname(d).toLowerCase()||".png",i=function(a,b){if("image/png"===b&&a.length>=24&&"PNG"===a.toString("ascii",1,4))return{width:a.readUInt32BE(16),height:a.readUInt32BE(20)};if("image/jpeg"===b){let b=2;for(;b+9<a.length&&255===a[b];){let c=a[b+1],d=a.readUInt16BE(b+2);if(c>=192&&c<=195)return{height:a.readUInt16BE(b+5),width:a.readUInt16BE(b+7)};b+=2+d}}return{width:640,height:360}}(e,f),k=Math.min(1,620/Math.max(i.width,1)),m={relationshipId:`rImage${g}`,fileName:`image${g}${h}`,buffer:e,contentType:f,widthEmu:Math.round(i.width*k*9525),heightEmu:Math.round(i.height*k*9525),altText:c[1]||`image${g}`};return b.images.push(m),m}(b,c):null;if(o){h.push(`<w:p><w:pPr><w:jc w:val="center"/><w:spacing w:after="120"/></w:pPr><w:r><w:drawing><wp:inline xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing"><wp:extent cx="${o.widthEmu}" cy="${o.heightEmu}"/><wp:docPr id="${o.relationshipId.replace(/\D/gu,"")||"1"}" name="${w(o.altText||o.fileName)}"/><a:graphic xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"><a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/picture"><pic:pic xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture"><pic:nvPicPr><pic:cNvPr id="0" name="${w(o.fileName)}"/><pic:cNvPicPr/></pic:nvPicPr><pic:blipFill><a:blip r:embed="${o.relationshipId}" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"/><a:stretch><a:fillRect/></a:stretch></pic:blipFill><pic:spPr><a:xfrm><a:off x="0" y="0"/><a:ext cx="${o.widthEmu}" cy="${o.heightEmu}"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom></pic:spPr></pic:pic></a:graphicData></a:graphic></wp:inline></w:drawing></w:r></w:p>`),a+=1;continue}let p=function(a,b){let c=a[b+1]?.trim()===""?b+2:b+1;if(c>=a.length||!E(a[b]||"")||!D(a[c]||""))return null;let d=F(a[b]||"").map(a=>J(a)),e=F(a[c]||"").length,f=[],g=c+1;for(;g<a.length&&E(a[g]||"");)f.push(F(a[g]||"").map(a=>J(a))),g+=1;let h=Math.max(2,d.length,e,...f.map(a=>a.length)),i=a=>{let b=a.slice(0,h);for(a.length>h&&h>0&&(b[h-1]=[b[h-1],...a.slice(h)].filter(Boolean).join(" | "));b.length<h;)b.push("");return b};return{rows:[i(d),...f.map(i)],next:g}}(g,a);if(p){h.push(function(a,b){let c=Math.max(1,...a.map(a=>a.length)),d=Math.floor(9638/c),e=Array.from({length:c},(a,b)=>b===c-1?9638-d*(c-1):d),f=`<w:tblGrid>${e.map(a=>`<w:gridCol w:w="${a}"/>`).join("")}</w:tblGrid>`;return`<w:tbl><w:tblPr><w:tblW w:w="9638" w:type="dxa"/><w:tblLook w:firstRow="1" w:noHBand="0"/><w:tblBorders><w:top w:val="single" w:sz="6" w:color="666666"/><w:left w:val="single" w:sz="6" w:color="666666"/><w:bottom w:val="single" w:sz="6" w:color="666666"/><w:right w:val="single" w:sz="6" w:color="666666"/><w:insideH w:val="single" w:sz="4" w:color="666666"/><w:insideV w:val="single" w:sz="4" w:color="666666"/></w:tblBorders></w:tblPr>${f}${a.map((a,c)=>`<w:tr>${e.map((d,e)=>{let f=a[e]||"";return`<w:tc><w:tcPr><w:tcW w:w="${d}" w:type="dxa"/><w:tcMar><w:top w:w="80" w:type="dxa"/><w:left w:w="120" w:type="dxa"/><w:bottom w:w="80" w:type="dxa"/><w:right w:w="120" w:type="dxa"/></w:tcMar>${0===c?'<w:shd w:val="clear" w:fill="F3F4F6"/>':""}</w:tcPr>${N(f,{bold:0===c,size:b.bodyHalfPoints,line:b.lineTwips,fontEastAsia:b.fontBody,fontAscii:b.fontBodyAscii,spacingAfter:0,align:0===c?"center":"left"})}</w:tc>`}).join("")}</w:tr>`).join("")}</w:tbl>`}(p.rows,d),N("",{spacingAfter:80,line:d.lineTwips})),a=p.next;continue}if(D(b)){a+=1;continue}let q=/^(#{1,4})\s+(.+)$/u.exec(b);if(q){let b=J(q[2]);i="目录"===b,h.push((n=q[1].length,2===n?N(b,{styleId:"Heading1",outlineLevel:0,bold:!0,size:d.h1HalfPoints,line:d.lineTwips,fontEastAsia:d.fontHeading,fontAscii:d.fontHeadingAscii,align:"center",spacingBefore:260,spacingAfter:180,keepNext:!0}):3===n?N(b,{styleId:"Heading2",outlineLevel:1,bold:!0,size:d.h2HalfPoints,line:d.lineTwips,fontEastAsia:d.fontHeading,fontAscii:d.fontHeadingAscii,align:"left",spacingBefore:180,spacingAfter:100,keepNext:!0}):N(b,{styleId:"Heading3",outlineLevel:2,bold:!0,size:d.h3HalfPoints,line:d.lineTwips,fontEastAsia:d.fontHeading,fontAscii:d.fontHeadingAscii,align:"left",spacingBefore:120,spacingAfter:80,keepNext:!0}))),i&&!m&&(h.push(`<w:p><w:pPr><w:spacing w:line="${d.lineTwips}" w:lineRule="exact" w:after="120"/></w:pPr><w:r><w:fldChar w:fldCharType="begin"/></w:r><w:r><w:instrText xml:space="preserve">TOC \\o &quot;1-3&quot; \\h \\z \\u</w:instrText></w:r><w:r><w:fldChar w:fldCharType="separate"/></w:r><w:r><w:t>请在 Word 中右键更新目录</w:t></w:r><w:r><w:fldChar w:fldCharType="end"/></w:r></w:p>`),m=!0),a+=1;continue}let r=J(b),s=function(a){let b=/^\s*(\d+(?:\.\d+){0,2})([.、])\s+(.+)$/u.exec(a);return b?{level:Math.min(b[1].split(".").length-1,2),marker:`${b[1]}${b[2]}`,text:J(b[3])}:null}(b),t=function(a){let b=/^\s*[-*+]\s+(.+)$/u.exec(a);return b?J(b[1]):null}(b);if(!i&&s){let b=0===s.level?720:1===s.level?1080:1440,c=0===s.level?360:1===s.level?420:480;h.push(N(`${s.marker} ${s.text}`,{styleId:"ListParagraph",numbering:{numId:1,level:s.level},size:f,line:d.lineTwips,fontEastAsia:d.fontBody,fontAscii:d.fontBodyAscii,indentLeft:b,hanging:c,spacingAfter:60})),a+=1;continue}if(!i&&t){h.push(N(`• ${t}`,{styleId:"ListParagraph",size:f,line:d.lineTwips,fontEastAsia:d.fontBody,fontAscii:d.fontBodyAscii,indentLeft:720,hanging:360,spacingAfter:60})),a+=1;continue}let u=/^\*\*[^*]+\*\*\s*$/u.test(b)&&r.length<=40,v=/^\*\*[^*]+\*\*\s*[::]?\s*$/u.test(b)||/^([一二三四五六七八九十]+)/u.test(r)||/^[一二三四五六七八九十]+、/u.test(r);h.push(i?function(a,b){let c=/^\s*\d+\.\d+\s+\S/u.test(a);return N(J(a),{bold:!c,size:b.bodyHalfPoints,line:b.lineTwips,fontEastAsia:b.fontBody,fontAscii:b.fontBodyAscii,spacingAfter:c?30:80,indentLeft:420*!!c,align:"left"})}(b,d):N(r,{bold:v||u,size:u?Math.max(d.bodyHalfPoints+2,30):f,line:d.lineTwips,fontEastAsia:d.fontBody,fontAscii:d.fontBodyAscii,align:u?"left":"both",firstLine:v||u?0:560,spacingBefore:u?120:80*!!v,spacingAfter:u?60:void 0})),a+=1}return h.join("")}(b,c,f);if(d&&j.existsSync(d)){let b=await p().loadAsync(j.readFileSync(d)),e=b.file("word/document.xml");if(e){let d=await e.async("string");return b.file("word/document.xml",d.replace(/\{\{title\}\}/gu,w(a)).replace(/\{\{content\}\}/gu,g)),await O(b,a,c,f.images),b.generateAsync({type:"nodebuffer"})}}let h=c?.page||{},i=new(p());return i.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>${g}<w:sectPr><w:pgSz w:w="11906" w:h="16838"/><w:pgMar w:top="${L(h.marginTop,2.5)}" w:right="${L(h.marginRight,2)}" w:bottom="${L(h.marginBottom,2)}" w:left="${L(h.marginLeft,2)}"/></w:sectPr></w:body></w:document>`),await O(i,a,c,f.images),i.generateAsync({type:"nodebuffer"})}function Q(a,b){return a&&/^[\w\s\u4e00-\u9fa5,"'().-]+$/u.test(a)?a:b}function R(a){let b=a?.page||{},c=a?.typography||{},d=Q(b.paper,"A4"),e=Q(b.marginTop,"24mm"),f=Q(b.marginRight,"18mm"),g=Q(b.marginBottom,"22mm"),h=Q(b.marginLeft,"18mm"),i=c.fontFamily||"SimSun, 宋体, serif",j=c.lineHeight||"18pt";return{paper:d,marginTop:e,marginRight:f,marginBottom:g,marginLeft:h,fontFamily:i,lineHeight:j,titleSize:c.titleSize||"22pt",bodySize:c.bodySize||"12pt"}}function S(a){return a.replace(/(<h2[^>]*>\s*目录\s*<\/h2>)([\s\S]*?)(<div class="page-break"><\/div>)/u,(a,b,c,d)=>{let e=c.replace(/<ol>\s*([\s\S]*?)\s*<\/ol>/u,(a,b)=>b).replace(/<li>\s*([^<]+?)\s*<\/li>/gu,"<p>$1</p>").replace(/<p>(?:\s|&nbsp;|&#160;)*(\d+\.\d+\s+[^<]+)<\/p>/giu,'<p class="toc-section">$1</p>').replace(/<p>(?!(?:\s|&nbsp;|&#160;)*<\/p>|(?:\s|&nbsp;|&#160;)*\d+\.\d+\s)([\s\S]*?)<\/p>/giu,'<p class="toc-chapter">$1</p>');return`<section class="document-toc">${b}${e}</section>${d}`})}function T(a){let b=a.message.trim();return!/^(事实冲突|必需章节缺失):/u.test(b)&&/出现禁用文本\s*(资料未提供|占位|TODO|TBD)|正文包含.*(资料未提供|占位)|图片、地图或附件引用路径明显无效|无效路径|表格语法错误|临时远程生成 URL|提示词全文|内部错误|生成未完成|低于目标页数|低于目标字数|文档预算未达成|正文篇幅低于目标|缺少规划小节|缺少必要的正式表格|正文缺少章节标题/iu.test(b)}function U(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 V(a,b){let c=U(a),d=b?U(b):void 0,e=[];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("导出内容缺少服务端生成记录中的表格");let f=a.split(/\r?\n/u).map(a=>/^(#{2,4})\s+(.+)$/u.exec(a.trim())).filter(a=>!!a).map(a=>({level:a[1].length,title:J(a[2])})).filter(a=>a.title&&"目录"!==a.title);0===f.length&&e.push("正文缺少章节标题"),f.some((a,b)=>b>0&&a.level-f[b-1].level>1)&&e.push("标题层级存在跳级,可能影响导出目录和导航");let g=f.map(a=>a.title.replace(/^第[一二三四五六七八九十百]+章\s*/u,"").replace(/^\d+(?:\.\d+)*\s*/u,"").replace(/[\s::.。]+$/gu,"").trim()).filter(Boolean).filter((a,b,c)=>c.indexOf(a)!==b);g.length>0&&e.push(`存在重复标题:${[...new Set(g)].slice(0,3).join("、")}`);let h=a.split(/\r?\n/u).map(a=>J(a)).filter(a=>a.length>0&&!/^#+\s/u.test(a));h.some(a=>a.length<=1)&&e.push("正文存在孤立字或残缺段落"),h.some(a=>/[,、;:和与在为对将]$/u.test(a)||/(通过|包括|如下|主要包括)$/u.test(a))&&e.push("正文存在疑似截断句或未完结段落"),h.some(a=>a.length>380)&&e.push("正文存在过长段落,建议拆分以改善导出版式");let i=function(a){let b=new Map,c=[];for(let d of a.split(/\n{2,}/u).map(a=>J(a)).filter(a=>a.length>=45&&!/^#+\s/u.test(a))){let a=d.replace(/\s+/gu,"").slice(0,90),e=(b.get(a)||0)+1;b.set(a,e),2===e&&c.push(d.slice(0,60))}return c}(a);return i.length>0&&e.push(`正文存在重复段落:${i.slice(0,2).join(";")}`),e.push(...function(a){let b=[],c=a.split(/\r?\n/u);for(let a=0;a<c.length;a+=1){let d=c[a]||"";if(!E(d))continue;let e=c[a+1]?.trim()===""?a+2:a+1;if(e<c.length&&D(c[e]||"")){let f=[],g=e+1;for(;g<c.length&&E(c[g]||"");)f.push(c[g]||""),g+=1;0===f.length&&b.push(`第 ${a+1} 行表格只有表头,没有数据行`);let h=[d,...f].map(a=>F(a).length);Math.max(...h)-Math.min(...h)>2&&b.push(`第 ${a+1} 行附近表格列数差异较大,导出版式可能异常`),a=g-1;continue}a+1<c.length&&E(c[a+1]||"")&&b.push(`第 ${a+1} 行附近疑似裸表格,已尝试自动规范化`)}return(a.match(/```/gu)||[]).length%2==1&&b.push("存在未闭合代码块,可能影响后续内容导出"),[...new Set(b)].slice(0,20)}(a)),[...new Set(e)]}function W(a){return a.replace(/(##\s*第[一二三四五六七八九十百千万\d]+章[^\n#]*?)\s+(#{3,4}\s*\d+(?:\.\d+)+\s+)/gu,"$1\n\n$2").replace(/([^\n])\s+(##\s*第[一二三四五六七八九十百千万\d]+章\s+)/gu,"$1\n\n$2").replace(/([^\n])\s+(#{3,4}\s*\d+(?:\.\d+)+\s+)/gu,"$1\n\n$2").replace(/(#{2,4}\s+[^\n]+?)\s+(#{2,4}\s+)/gu,"$1\n\n$2")}function X(a,b){let c=W(I((0,s.kT)(a))),d=W(I((0,s.kT)(b||"")));return{markdown:c,baselineMarkdown:d,issues:V(c,d)}}async function Y(a,b,d,e){let{marked:f}=await Promise.resolve().then(c.bind(c,83142));return C(function(a,b,c){let d=M(c),e=S(b);return`<!doctype html><html lang="zh-CN"><head><meta charset="utf-8"><title>${w(a)}</title><style>
2
2
  @page{size:${d.paper};margin:${d.marginTop} ${d.marginRight} ${d.marginBottom} ${d.marginLeft}}
3
3
  *{box-sizing:border-box}
4
4
  html,body{margin:0;padding:0;background:#fff}
@@ -22,5 +22,5 @@ th,td{font-family:${d.fontFamily};font-size:${Math.max(d.bodyPt-1,9)}pt;line-hei
22
22
  th{background:#f3f4f6;font-weight:700;text-align:center}
23
23
  pre{white-space:pre-wrap;font-family:${d.fontFamily};font-size:${d.bodyCss};line-height:${d.lineCss};page-break-inside:avoid;break-inside:avoid}.page-break{page-break-after:always;break-after:page;height:0}
24
24
  @media print{body{-webkit-print-color-adjust:exact;print-color-adjust:exact}a{text-decoration:none;color:#111827}}
25
- </style></head><body>${e}</body></html>`}(a,f.parse(b,{async:!1}).replace(/<h2([^>]*)>(第[一二三四五六七八九十百千万\d]+章\s*[\s\S]*?)<\/h2>/gu,(a,b,c)=>/\bclass=/iu.test(b)?`<h2${b.replace(/class=(['"])(.*?)\1/iu,(a,b,c)=>`class=${b}${c} document-chapter-heading${b}`)}>${c}</h2>`:`<h2${b} class="document-chapter-heading">${c}</h2>`).replace(/<p>\s*\|\s*:?-{3,}:?\s*(?:\|\s*:?-{3,}:?\s*)*\|?\s*<\/p>/giu,""),d),e)}function Z(){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 $(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=R(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 x(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 _(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"]}},...Z().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=M(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-family:${d.fontFamily};font-size:10.5pt;line-height:12pt;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 Z())try{return await $(a,c,b)}catch(a){f.push(`browser-command ${c}: ${a instanceof Error?a.message:String(a)}`)}throw Error(f.join("\n"))}async function aa(a,b){if("POST"!==a.method)return b.status(405).json({error:"Method not allowed"});let c=a.body,d=c.projectRoot||(0,r.aY)(),e=c.documentId?(0,q.v7)(c.documentId,d):null;if(c.documentId&&!e)return b.status(404).json({error:"Document not found"});let f=c.title||e?.title||"document",g=e?.draft?.exportSettings,h=e?.editedMarkdown||e?.markdown||e?.draft?.markdown||"",i=X(c.useClientMarkdown&&"string"==typeof c.markdown?c.markdown:h||c.markdown||"",e?.draft?.markdown||e?.markdown||""),{markdown:j}=i,k=c.format;if(!k||!["markdown","html","pdf","docx"].includes(k))return b.status(400).json({error:"INVALID_EXPORT_FORMAT",message:"请选择有效的导出格式。"});i.issues.length>0&&b.setHeader("X-Export-Content-Issues",encodeURIComponent(JSON.stringify(i.issues.slice(0,20))));let l=e?.draft?.exportGate||c.exportGate,m=l?.blockingIssues?.filter(T)||[],n=l?.passed===!1&&0===m.length?[{message:"导出门禁未通过:存在未完成的检查项"}]:[],o=[...m,...n];b.setHeader("X-Export-Gate-Passed",0===o.length?"true":"false"),o.length>0&&b.setHeader("X-Export-Gate-Issues",encodeURIComponent(JSON.stringify(o.map(a=>a.message).slice(0,20))));let p=f.replace(/[\\/:*?"<>|]/gu,"-").slice(0,80)||"document";if("markdown"===k)return b.setHeader("Content-Type","text/markdown; charset=utf-8"),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${p}.md`)}`),b.status(200).send(j);if("docx"===k){let a=await P(f,j,g,c.wordTemplatePath,d);return b.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document"),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${p}.docx`)}`),b.status(200).send(a)}let s=await Y(f,j,g,d);if("html"===k)return b.setHeader("Content-Type","text/html; charset=utf-8"),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${p}.html`)}`),b.status(200).send(s);try{let a=await _(s,g),c=function(a){let b=a.toString("latin1").match(/\/Type\s*\/Page\b/gu);return b?.length||void 0}(a);return b.setHeader("Content-Type","application/pdf"),c&&b.setHeader("X-PDF-Page-Count",String(c)),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${p}.pdf`)}`),b.status(200).send(a)}catch(c){return(0,t.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 ab={inlineLocalImages:C,resolveLocalImagePath:B,normalizeExportUnits:I,prepareExportMarkdown:X,stripInlineMarkdown:J,enhanceTocHtml:S,buildExportHtml:Y,buildDocx:P,validateExportMarkdown:V},ac=(0,u.j)("api/documents/export",aa);var ad=c(68970),ae=c(50296);let af=(0,h.M)(d,"default"),ag=(0,h.M)(d,"config"),ah=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 ai(a,b,c){let d=await ah.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,ad.getTracer)(),e=d.getActiveScopeSpan(),j=ah.instrumentationOnRequestError.bind(ah),k=async e=>ah.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:ah.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")!==ae.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(ae.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:ad.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(ah.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")},91879:(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)}
26
- `)}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)}))}},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,5840,5284,6071,8661],()=>b(b.s=83258));module.exports=c})();
25
+ </style></head><body>${e}</body></html>`}(a,f.parse(b,{async:!1}).replace(/<h2([^>]*)>(第[一二三四五六七八九十百千万\d]+章\s*[\s\S]*?)<\/h2>/gu,(a,b,c)=>/\bclass=/iu.test(b)?`<h2${b.replace(/class=(['"])(.*?)\1/iu,(a,b,c)=>`class=${b}${c} document-chapter-heading${b}`)}>${c}</h2>`:`<h2${b} class="document-chapter-heading">${c}</h2>`).replace(/<p>\s*\|\s*:?-{3,}:?\s*(?:\|\s*:?-{3,}:?\s*)*\|?\s*<\/p>/giu,""),d),e)}function Z(){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 $(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=R(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 x(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 _(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"]}},...Z().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=M(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-family:${d.fontFamily};font-size:10.5pt;line-height:12pt;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 Z())try{return await $(a,c,b)}catch(a){f.push(`browser-command ${c}: ${a instanceof Error?a.message:String(a)}`)}throw Error(f.join("\n"))}function aa(a,b,c){if(a)try{let d=a.draft,e=d?.reviewMetadata?.qualityBenchmark,f=d?.reviewMetadata?.diagnostics?.quality,g=a.completedAt?Math.max(0,a.completedAt-a.createdAt):Math.max(0,Date.now()-a.createdAt),h={format:b,exportedAt:Date.now(),durationMs:g,benchmarkScore:e?.overallScore,benchmarkSourceCount:e?.referenceSourceCount,ruleSummary:(d?.promptRules?.executionSummary||[]).slice(0,12),repairedCount:f?.repairedCount,blockingCount:f?.blockingCount,gatePassed:d?.exportGate?.passed},i=[...a.exportReports||[],h].slice(-20);(0,q.a6)(a.id,{exportReports:i},c)}catch{}}async function ab(a,b){if("POST"!==a.method)return b.status(405).json({error:"Method not allowed"});let c=a.body,d=c.projectRoot||(0,r.aY)(),e=c.documentId?(0,q.v7)(c.documentId,d):null;if(c.documentId&&!e)return b.status(404).json({error:"Document not found"});let f=c.title||e?.title||"document",g=e?.draft?.exportSettings,h=e?.editedMarkdown||e?.markdown||e?.draft?.markdown||"",i=X(c.useClientMarkdown&&"string"==typeof c.markdown?c.markdown:h||c.markdown||"",e?.draft?.markdown||e?.markdown||""),{markdown:j}=i,k=c.format;if(!k||!["markdown","html","pdf","docx"].includes(k))return b.status(400).json({error:"INVALID_EXPORT_FORMAT",message:"请选择有效的导出格式。"});i.issues.length>0&&b.setHeader("X-Export-Content-Issues",encodeURIComponent(JSON.stringify(i.issues.slice(0,20))));let l=e?.draft?.exportGate||c.exportGate,m=l?.blockingIssues?.filter(T)||[],n=l?.passed===!1&&0===m.length?[{message:"导出门禁未通过:存在未完成的检查项"}]:[],o=[...m,...n];b.setHeader("X-Export-Gate-Passed",0===o.length?"true":"false"),o.length>0&&b.setHeader("X-Export-Gate-Issues",encodeURIComponent(JSON.stringify(o.map(a=>a.message).slice(0,20))));let p=f.replace(/[\\/:*?"<>|]/gu,"-").slice(0,80)||"document";if("markdown"===k)return aa(e,k,d),b.setHeader("Content-Type","text/markdown; charset=utf-8"),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${p}.md`)}`),b.status(200).send(j);if("docx"===k){let a=await P(f,j,g,c.wordTemplatePath,d);return aa(e,k,d),b.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document"),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${p}.docx`)}`),b.status(200).send(a)}let s=await Y(f,j,g,d);if("html"===k)return aa(e,k,d),b.setHeader("Content-Type","text/html; charset=utf-8"),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${p}.html`)}`),b.status(200).send(s);try{let a=await _(s,g),c=function(a){let b=a.toString("latin1").match(/\/Type\s*\/Page\b/gu);return b?.length||void 0}(a);return aa(e,k,d),b.setHeader("Content-Type","application/pdf"),c&&b.setHeader("X-PDF-Page-Count",String(c)),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${p}.pdf`)}`),b.status(200).send(a)}catch(c){return(0,t.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 ac={inlineLocalImages:C,resolveLocalImagePath:B,normalizeExportUnits:I,prepareExportMarkdown:X,stripInlineMarkdown:J,enhanceTocHtml:S,buildExportHtml:Y,buildDocx:P,validateExportMarkdown:V},ad=(0,u.j)("api/documents/export",ab);var ae=c(68970),af=c(50296);let ag=(0,h.M)(d,"default"),ah=(0,h.M)(d,"config"),ai=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 aj(a,b,c){let d=await ai.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,ae.getTracer)(),e=d.getActiveScopeSpan(),j=ai.instrumentationOnRequestError.bind(ai),k=async e=>ai.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:ai.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")!==af.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(af.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:ae.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(ai.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")},91879:(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)}
26
+ `)}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)}))}},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,2484,5840,208,4680,5284,2405,8661],()=>b(b.s=83258));module.exports=c})();