@customize-agent/server 4.57.0 → 4.59.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (225) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +132 -143
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/routes-manifest.json +117 -9
  5. package/.next/server/chunks/1001.js +56 -0
  6. package/.next/server/chunks/1928.js +1 -1
  7. package/.next/server/chunks/1936.js +2 -2
  8. package/.next/server/chunks/2434.js +4 -0
  9. package/.next/server/chunks/299.js +50 -0
  10. package/.next/server/chunks/5547.js +350 -0
  11. package/.next/server/chunks/6087.js +3 -0
  12. package/.next/server/chunks/6321.js +3 -0
  13. package/.next/server/chunks/8204.js +1 -1
  14. package/.next/server/middleware-build-manifest.js +1 -1
  15. package/.next/server/pages/404.html +1 -1
  16. package/.next/server/pages/500.html +1 -1
  17. package/.next/server/pages/api/assets/generated/preview.js +1 -1
  18. package/.next/server/pages/api/assets/generated/preview.js.nft.json +1 -1
  19. package/.next/server/pages/api/assets/generated.js +1 -1
  20. package/.next/server/pages/api/assets/generated.js.nft.json +1 -1
  21. package/.next/server/pages/api/config/embedding/healthCheck.js.nft.json +1 -1
  22. package/.next/server/pages/api/config/healthCheck.js +2 -2
  23. package/.next/server/pages/api/config/providers.js +2 -2
  24. package/.next/server/pages/api/documents/canvas/[id].js +2 -0
  25. package/.next/server/pages/api/documents/canvas/[id].js.nft.json +1 -0
  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/preview.js +2 -0
  29. package/.next/server/pages/api/documents/generate/preview.js.nft.json +1 -0
  30. package/.next/server/pages/api/documents/generate.js +2 -2
  31. package/.next/server/pages/api/documents/generate.js.nft.json +1 -1
  32. package/.next/server/pages/api/documents/generated/[id]/events.js +10 -0
  33. package/.next/server/pages/api/documents/generated/[id]/events.js.nft.json +1 -0
  34. package/.next/server/pages/api/documents/generated/[id]/figure/[name].js +1 -0
  35. package/.next/server/pages/api/documents/generated/[id]/figure/[name].js.nft.json +1 -0
  36. package/.next/server/pages/api/documents/generated/[id]/nodes/[nodeId].js +2 -0
  37. package/.next/server/pages/api/documents/generated/[id]/nodes/[nodeId].js.nft.json +1 -0
  38. package/.next/server/pages/api/documents/generated/[id]/nodes.js +2 -0
  39. package/.next/server/pages/api/documents/generated/[id]/nodes.js.nft.json +1 -0
  40. package/.next/server/pages/api/documents/generated/[id]/pause.js +2 -0
  41. package/.next/server/pages/api/documents/generated/[id]/pause.js.nft.json +1 -0
  42. package/.next/server/pages/api/documents/generated/[id]/preview.js +2 -0
  43. package/.next/server/pages/api/documents/generated/[id]/preview.js.nft.json +1 -0
  44. package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/confirm.js +1 -0
  45. package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/confirm.js.nft.json +1 -0
  46. package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/rollback.js +1 -0
  47. package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/rollback.js.nft.json +1 -0
  48. package/.next/server/pages/api/documents/generated/[id]/repair.js +1 -0
  49. package/.next/server/pages/api/documents/generated/[id]/repair.js.nft.json +1 -0
  50. package/.next/server/pages/api/documents/generated/[id]/resume-generate.js +2 -0
  51. package/.next/server/pages/api/documents/generated/[id]/resume-generate.js.nft.json +1 -0
  52. package/.next/server/pages/api/documents/generated/[id].js +2 -2
  53. package/.next/server/pages/api/documents/generated/[id].js.nft.json +1 -1
  54. package/.next/server/pages/api/documents/generated.js +1 -1
  55. package/.next/server/pages/api/documents/generated.js.nft.json +1 -1
  56. package/.next/server/pages/api/jobs/[id].js +1 -1
  57. package/.next/server/pages/api/jobs/[id].js.nft.json +1 -1
  58. package/.next/server/pages/api/jobs.js +1 -1
  59. package/.next/server/pages/api/jobs.js.nft.json +1 -1
  60. package/.next/server/pages/api/kb/categories.js +2 -2
  61. package/.next/server/pages/api/kb/categories.js.nft.json +1 -1
  62. package/.next/server/pages/api/kb/duplicates.js +2 -2
  63. package/.next/server/pages/api/kb/duplicates.js.nft.json +1 -1
  64. package/.next/server/pages/api/kb/evaluate.js +3 -3
  65. package/.next/server/pages/api/kb/evaluate.js.nft.json +1 -1
  66. package/.next/server/pages/api/kb/files/detail.js +4 -4
  67. package/.next/server/pages/api/kb/files/detail.js.nft.json +1 -1
  68. package/.next/server/pages/api/kb/files/export.js +3 -3
  69. package/.next/server/pages/api/kb/files/export.js.nft.json +1 -1
  70. package/.next/server/pages/api/kb/files/open.js +2 -2
  71. package/.next/server/pages/api/kb/files/open.js.nft.json +1 -1
  72. package/.next/server/pages/api/kb/files/preview-pdf-page.js +1 -1
  73. package/.next/server/pages/api/kb/files/preview-pdf-page.js.nft.json +1 -1
  74. package/.next/server/pages/api/kb/files/reindex.js +1 -1
  75. package/.next/server/pages/api/kb/files/reindex.js.nft.json +1 -1
  76. package/.next/server/pages/api/kb/files/search.js +3 -3
  77. package/.next/server/pages/api/kb/files/search.js.nft.json +1 -1
  78. package/.next/server/pages/api/kb/files/tree.js +3 -3
  79. package/.next/server/pages/api/kb/files/tree.js.nft.json +1 -1
  80. package/.next/server/pages/api/kb/files.js +4 -4
  81. package/.next/server/pages/api/kb/files.js.nft.json +1 -1
  82. package/.next/server/pages/api/kb/ignore.js +2 -2
  83. package/.next/server/pages/api/kb/ignore.js.nft.json +1 -1
  84. package/.next/server/pages/api/kb/intelligence.js +1 -1
  85. package/.next/server/pages/api/kb/intelligence.js.nft.json +1 -1
  86. package/.next/server/pages/api/kb/material-groups.js +2 -0
  87. package/.next/server/pages/api/kb/material-groups.js.nft.json +1 -0
  88. package/.next/server/pages/api/kb/operations.js +1 -1
  89. package/.next/server/pages/api/kb/operations.js.nft.json +1 -1
  90. package/.next/server/pages/api/kb/reindex.js +1 -1
  91. package/.next/server/pages/api/kb/reindex.js.nft.json +1 -1
  92. package/.next/server/pages/api/kb/search.js +2 -2
  93. package/.next/server/pages/api/kb/search.js.nft.json +1 -1
  94. package/.next/server/pages/api/kb/stats.js +2 -2
  95. package/.next/server/pages/api/kb/stats.js.nft.json +1 -1
  96. package/.next/server/pages/api/kb/tags.js +1 -1
  97. package/.next/server/pages/api/kb/tags.js.nft.json +1 -1
  98. package/.next/server/pages/api/kb/upload/complete.js +1 -1
  99. package/.next/server/pages/api/kb/upload/complete.js.nft.json +1 -1
  100. package/.next/server/pages/api/kb/upload/progress.js +2 -2
  101. package/.next/server/pages/api/kb/upload/progress.js.nft.json +1 -1
  102. package/.next/server/pages/api/kb/upload.js +1 -1
  103. package/.next/server/pages/api/kb/upload.js.nft.json +1 -1
  104. package/.next/server/pages/api/prompt.js +1 -1
  105. package/.next/server/pages/api/prompt.js.nft.json +1 -1
  106. package/.next/server/pages/api/skills/[id].js +1 -0
  107. package/.next/server/pages/api/skills/[id].js.nft.json +1 -0
  108. package/.next/server/pages/api/skills/validate.js +1 -0
  109. package/.next/server/pages/api/skills/validate.js.nft.json +1 -0
  110. package/.next/server/pages/api/skills.js +1 -0
  111. package/.next/server/pages/api/skills.js.nft.json +1 -0
  112. package/.next/server/pages/api/system/logs.js +2 -2
  113. package/.next/server/pages/api/system/stats.js +1 -1
  114. package/.next/server/pages/canvas/[id].html +1 -0
  115. package/.next/server/pages/canvas/[id].js.nft.json +1 -0
  116. package/.next/server/pages/canvas.html +1 -0
  117. package/.next/server/pages/canvas.js.nft.json +1 -0
  118. package/.next/server/pages/documents.html +1 -1
  119. package/.next/server/pages/documents.js.nft.json +1 -1
  120. package/.next/server/pages/guide.html +1 -1
  121. package/.next/server/pages/index.html +1 -1
  122. package/.next/server/pages/knowledge/file-detail.html +1 -1
  123. package/.next/server/pages/knowledge/files.html +1 -1
  124. package/.next/server/pages/knowledge/files.js.nft.json +1 -1
  125. package/.next/server/pages/knowledge/manage.html +1 -1
  126. package/.next/server/pages/knowledge/manage.js.nft.json +1 -1
  127. package/.next/server/pages/knowledge.html +1 -1
  128. package/.next/server/pages/knowledge.js.nft.json +1 -1
  129. package/.next/server/pages/models.html +1 -1
  130. package/.next/server/pages/overview.html +1 -1
  131. package/.next/server/pages/prompt.html +1 -1
  132. package/.next/server/pages/settings.html +1 -1
  133. package/.next/server/pages/skills.html +1 -0
  134. package/.next/server/pages/system/logs.html +1 -1
  135. package/.next/server/pages-manifest.json +45 -32
  136. package/.next/static/Z8psgNSpy4sSg2lIho8Uw/_buildManifest.js +1 -0
  137. package/.next/static/chunks/127-20f09f6ebe1e6c1f.js +1 -0
  138. package/.next/static/chunks/174-1bc48f295d7dd075.js +10 -0
  139. package/.next/static/chunks/189-3f4f4e237056adaf.js +4 -0
  140. package/.next/static/chunks/243-03eba51d5d737e98.js +1 -0
  141. package/.next/static/chunks/269-7a3502478bf67fff.js +11 -0
  142. package/.next/static/chunks/289-136ebb30e0f6723a.js +78 -0
  143. package/.next/static/chunks/310-6c678cb70e4ba2d6.js +19 -0
  144. package/.next/static/chunks/422-46f07037c58d2309.js +1 -0
  145. package/.next/static/chunks/426-90638907336adcb8.js +21 -0
  146. package/.next/static/chunks/445-d12731f107978b10.js +6 -0
  147. package/.next/static/chunks/530-1b18bb11570dc44a.js +1 -0
  148. package/.next/static/chunks/569-2bfdde9e402af5b2.js +16 -0
  149. package/.next/static/chunks/700-5d29b0475311f590.js +1 -0
  150. package/.next/static/chunks/709-a7c652953ccd3b4b.js +1 -0
  151. package/.next/static/chunks/787-207289f4bb577708.js +10 -0
  152. package/.next/static/chunks/795-9e0cb0bb11e8c89f.js +1 -0
  153. package/.next/static/chunks/914-292edce0ba2a212d.js +1 -0
  154. package/.next/static/chunks/{framework-161be364fd69a7ce.js → framework-4b565b3ddc94cdac.js} +1 -1
  155. package/.next/static/chunks/main-0c91f573696223ca.js +1 -0
  156. package/.next/static/chunks/pages/_app-74fce107cacfaee7.js +185 -0
  157. package/.next/static/chunks/pages/canvas/[id]-9f4e9f49e512418b.js +1 -0
  158. package/.next/static/chunks/pages/canvas-323d44fe56d685a7.js +1 -0
  159. package/.next/static/chunks/pages/documents-e6a80f2de39c6fd2.js +1 -0
  160. package/.next/static/chunks/pages/guide-7367305082617e3c.js +1 -0
  161. package/.next/static/chunks/pages/knowledge/file-detail-aee7c15541d1d130.js +1 -0
  162. package/.next/static/chunks/pages/knowledge/files-b3ef5324e4b74c4a.js +1 -0
  163. package/.next/static/chunks/pages/knowledge/manage-d9eaebf3a8307953.js +1 -0
  164. package/.next/static/chunks/pages/knowledge-ca8ad5501faed486.js +1 -0
  165. package/.next/static/chunks/pages/models-8b96ba85131d5408.js +1 -0
  166. package/.next/static/chunks/pages/prompt-dd9a9f9105216e2b.js +1 -0
  167. package/.next/static/chunks/pages/settings-0a7709bf039a2a4d.js +1 -0
  168. package/.next/static/chunks/pages/skills-3d77213c3e9ef0b5.js +1 -0
  169. package/.next/static/chunks/pages/system/logs-9deb1217739490af.js +1 -0
  170. package/.next/static/chunks/webpack-6224d37324e372cb.js +1 -0
  171. package/.next/static/css/0e46e39b61e4e262.css +1 -0
  172. package/messages/en-US.json +108 -344
  173. package/messages/zh-CN.json +109 -345
  174. package/package.json +6 -5
  175. package/scripts/capture-baseline.mjs +541 -0
  176. package/.next/server/chunks/208.js +0 -136
  177. package/.next/server/chunks/4435.js +0 -249
  178. package/.next/server/chunks/5840.js +0 -1
  179. package/.next/server/pages/api/documents/drafts.js +0 -1
  180. package/.next/server/pages/api/documents/drafts.js.nft.json +0 -1
  181. package/.next/server/pages/api/documents/refine.js +0 -13
  182. package/.next/server/pages/api/documents/refine.js.nft.json +0 -1
  183. package/.next/server/pages/api/documents/roles.js +0 -1
  184. package/.next/server/pages/api/documents/roles.js.nft.json +0 -1
  185. package/.next/server/pages/api/documents/templates.js +0 -1
  186. package/.next/server/pages/api/documents/templates.js.nft.json +0 -1
  187. package/.next/server/pages/asset-library.html +0 -1
  188. package/.next/server/pages/document-roles.html +0 -1
  189. package/.next/server/pages/document-roles.js.nft.json +0 -1
  190. package/.next/static/chunks/195-2c0168eacab722d2.js +0 -1
  191. package/.next/static/chunks/289-12dfcb3abec1c4b4.js +0 -78
  192. package/.next/static/chunks/44-d3545eedd5c75ef1.js +0 -4
  193. package/.next/static/chunks/455-e1b41ac4946d2b6f.js +0 -6
  194. package/.next/static/chunks/563-2b116a2500a97dba.js +0 -1
  195. package/.next/static/chunks/665-88e20299084b9e73.js +0 -1
  196. package/.next/static/chunks/7-20bcc985742a9ae1.js +0 -10
  197. package/.next/static/chunks/717-743b697a417dd5ee.js +0 -4
  198. package/.next/static/chunks/760-f8bb8e969c5e0d57.js +0 -1
  199. package/.next/static/chunks/787-c18af810af3433f6.js +0 -25
  200. package/.next/static/chunks/788-961761f5858f9189.js +0 -1
  201. package/.next/static/chunks/795-cd94e8d4e9768eb9.js +0 -1
  202. package/.next/static/chunks/81-c3a7f04d96ea3f7d.js +0 -1
  203. package/.next/static/chunks/827-a6dc09e42833e6a3.js +0 -1
  204. package/.next/static/chunks/883-506cbca959974997.js +0 -16
  205. package/.next/static/chunks/986-49b865de7906320a.js +0 -8
  206. package/.next/static/chunks/994-241f87efc61005b8.js +0 -4
  207. package/.next/static/chunks/main-91fb767ebd74c9c1.js +0 -1
  208. package/.next/static/chunks/pages/_app-66149ba52ad1dc26.js +0 -185
  209. package/.next/static/chunks/pages/asset-library-a1047694e888e655.js +0 -1
  210. package/.next/static/chunks/pages/document-roles-5620a98d6312f81c.js +0 -1
  211. package/.next/static/chunks/pages/documents-8e1a30170e9311b0.js +0 -1
  212. package/.next/static/chunks/pages/guide-a411c554520b7109.js +0 -1
  213. package/.next/static/chunks/pages/knowledge/file-detail-fe69eb38d70adea0.js +0 -1
  214. package/.next/static/chunks/pages/knowledge/files-7b78e962e432d199.js +0 -1
  215. package/.next/static/chunks/pages/knowledge/manage-7535b873ab505397.js +0 -1
  216. package/.next/static/chunks/pages/knowledge-905248d8dcb15453.js +0 -1
  217. package/.next/static/chunks/pages/models-6ef838f3e00ba21e.js +0 -1
  218. package/.next/static/chunks/pages/prompt-2c242e541f2e77a9.js +0 -1
  219. package/.next/static/chunks/pages/settings-810eb1a6cf1a6b02.js +0 -1
  220. package/.next/static/chunks/pages/system/logs-c5a8920c6506a7e8.js +0 -1
  221. package/.next/static/chunks/webpack-4224e970a97a4a86.js +0 -1
  222. package/.next/static/css/18018ee565a1deba.css +0 -1
  223. package/.next/static/uVLt2UAGpslnZIBzcFv3n/_buildManifest.js +0 -1
  224. /package/.next/server/pages/{asset-library.js.nft.json → skills.js.nft.json} +0 -0
  225. /package/.next/static/{uVLt2UAGpslnZIBzcFv3n → Z8psgNSpy4sSg2lIho8Uw}/_ssgManifest.js +0 -0
@@ -1,5 +1,5 @@
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")},88194:a=>{a.exports=require("jszip")},91879:(a,b,c)=>{c.d(b,{hH:()=>p,mG:()=>s,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(a,b,c,d=20){let e=0,f=0;return g=>{try{b(g);let h=Date.now();h-e>6e4&&(e=h,f=0),f<d&&(f+=1,c(a,g))}catch{}}}function s(){q||(q=!0,process.on("uncaughtException",r("uncaughtException",a=>n({source:"process",functionName:"uncaughtException",error:a}),(a,b)=>console.error(`[process] ${a}`,b))),process.on("unhandledRejection",r("unhandledRejection",a=>n({source:"process",functionName:"unhandledRejection",error:a}),(a,b)=>console.error(`[process] ${a}`,b))))}},95393:a=>{a.exports=require("@customize-agent/llm")},96770:a=>{a.exports=require("@customize-agent/runtime")},97614:(a,b,c)=>{c.r(b),c.d(b,{config:()=>aU,default:()=>aT,handler:()=>aW});var d={};c.r(d),c.d(d,{__documentExportTest__:()=>aP,config:()=>z,default:()=>aQ});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");var o=c(88194),p=c.n(o),q=c(48661),r=c(44533),s=c(30055);let t=`_非交付物_`;var u=c(40299),v=c(31920),w=c(44505),x=c(91879),y=c(16006);let z={api:{bodyParser:{sizeLimit:"50mb"},responseLimit:!1}};function A(){let a=(process.env.DOCUMENT_EXPORT_PURE_RENDER||"observe").trim().toLowerCase();return"0"===a||"off"===a||"false"===a?"off":"enforce"===a?"enforce":"observe"}function B(a=A()){return{mode:a,blockers:[],notices:[],ops:{tableSeparatorAdded:0,tableCellAligned:0,tableBoundarySplit:0,inlineSeparatorStripped:0,paragraphBreakInserted:0,unitRewrite:0,declaredStrip:0,tocRebuilt:0,headerlessTableRendered:0,captionStyled:0}}}function C(a){return{mode:a.mode,blockerCount:a.blockers.length,blockerCodes:[...new Set(a.blockers.map(a=>a.line>0?`${a.code}@L${a.line}`:a.code))].slice(0,20),notices:a.notices.map(a=>a.message).slice(0,10),ops:{...a.ops},opsTotal:Object.values(a.ops).reduce((a,b)=>a+b,0)}}function D(a){return a.replace(/[\\/:*?"<>|]/gu,"-").slice(0,80)||"document"}function E(a){return a.replace(/&/gu,"&amp;").replace(/</gu,"&lt;").replace(/>/gu,"&gt;").replace(/"/gu,"&quot;")}let F=(0,n.promisify)(i.execFile),G={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".webp":"image/webp",".gif":"image/gif",".svg":"image/svg+xml"};function H(a){return G[l.extname(a).toLowerCase()]||""}function I(a,b){let c=l.relative(b,a);return!!c&&!c.startsWith("..")&&!l.isAbsolute(c)}function J(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(I(b,d)||I(b,e))&&!!H(b)&&j.existsSync(b)&&j.statSync(b).isFile()})||null}function K(a,b=(0,r.aY)()){let c=new Map,d=0;return a.replace(/<img\b([^>]*?)\bsrc=["']([^"']+)["']([^>]*)>/giu,(a,e,f,g)=>{let h=J(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:${H(h)};base64,${j.readFileSync(h).toString("base64")}`,c.set(h,k),d+=i.size),`<img${e}src="${k}"${g}>`})}function L(a){let b=a.trim(),c=/^```(?:markdown|md)?\s*\n([\s\S]*?)\n```\s*$/iu.exec(b);return c?c[1].trim():a}function M(a){return/^\s*\|?\s*:?-{3,}:?\s*(\|\s*:?-{3,}:?\s*)+\|?\s*$/u.test(a.trim())}function N(a){let b=a.trim();return!(!b||/^#{1,6}\s+/u.test(b)||M(b))&&(b.match(/(?<!\\)\|/gu)||[]).length>=1}function O(a){return a.trim().replace(/^\|/u,"").replace(/\|$/u,"").trim().split(/(?<!\\)\|/u).map(a=>a.replace(/\\\|/gu,"|").trim())}function P(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 Q(a,b,c){return c&&"off"!==c.mode&&a.length!==b&&(c.ops.tableCellAligned+=1),P(a,b)}function R(a){if(2===a)return["信息项","内容"];let b=["控制项目","控制内容","执行要求","责任主体","检查与验收","备注"];return Array.from({length:a},(a,c)=>b[c]||`补充说明${c+1}`)}let S=":---";function T(a){return`| ${Array.from({length:a},()=>S).join(" | ")} |`}function U(a){let b=O(a);return b.length>0&&b.every(a=>a===S)}function V(a,b,c,d,e){e&&"off"!==e.mode&&e.notices.push({code:"fabricated-header",message:`导出层补造表头(非作者原文,仅 ${d} 模式补造):第 ${a} 行「${b.join(" | ")}」(${c} 列)——原表无表头,回源补齐后该补造行即消失`})}function W(a,b){let c=[],d=b;for(;d<a.length&&N(a[d]||"");)c.push(a[d]||""),d+=1;let e=Math.max(...c.map(a=>O(a).length),0);return c.length<2||e<2?null:{rows:c,columns:e,next:d}}function X(a,b){return M(((a[b+1]?.trim()===""?a[b+2]:a[b+1])||"").trim())}function Y(a,b){let c=a.replace(/\r?\n/gu,"\n").split("\n"),d=[],e=b?.mode==="enforce",f=b&&"off"!==b.mode?b.ops:null,g=b&&"off"!==b.mode?b.blockers:null;for(let a=0;a<c.length;){let h=c[a]||"",i=h.replace(/([^|\n])\|\s*:?-{3,}:?\s*(\|\s*:?-{3,}:?\s*)+\|?\s*$/u,"$1");f&&i!==h&&(f.inlineSeparatorStripped+=1);let j=c[a+1]?.trim()===""?a+2:a+1,k=c[j];if(N(h)&&void 0!==k&&M(k)){let e=O(h),g=O(k).length,i=[],l=j+1;for(;l<c.length;){let a=c[l]||"";if(!N(a)||X(c,l))break;i.push(O(a)),l+=1}let m=Math.max(2,e.length,g,...i.map(a=>a.length));for(d.length>0&&d[d.length-1]?.trim()&&d.push(""),d.push(Q(e,m,b)),d.push(U(k)?T(m):`| ${Array.from({length:m},()=>"---").join(" | ")} |`),a=j+1;a<c.length;){let e=c[a]||"";if(!N(e))break;if(X(c,a)){f&&(f.tableBoundarySplit+=1);break}d.push(Q(O(e),m,b)),a+=1}a<c.length&&c[a]?.trim()&&d.push("");continue}let l=N(h)?W(c,a):null;if(l){let h=R(l.columns);if(g?.push({code:"bare-table",line:a+1,message:e?`第 ${a+1} 行起为无表头裸表格(${l.rows.length} 行 \xd7 ${l.columns} 列):导出层不补造表头,需回源补齐表头后导出`:`第 ${a+1} 行起为无表头裸表格(${l.rows.length} 行 \xd7 ${l.columns} 列):环境为 ${b?.mode??A()},导出层补造表头「${h.join(" | ")}」并以 ${S} 左对齐分隔线标注(非作者原文),需回源补齐表头后导出`}),e){for(let a of l.rows)d.push(a);a=l.next;continue}for(let c of(d.length>0&&d[d.length-1]?.trim()&&d.push(""),d.push(P(h,l.columns)),d.push(T(l.columns)),V(a+1,h,l.columns,b?.mode??A(),b),f&&(f.tableSeparatorAdded+=1),l.rows))d.push(Q(O(c),l.columns,b));(a=l.next)<c.length&&c[a]?.trim()&&d.push("");continue}if(M(h)){let i=function(a,b){let c=[],d=b;for(;d<a.length&&N(a[d]||"");)c.push(a[d]||""),d+=1;return{rows:c,next:d}}(c,a+1);if(i.rows.length>0){let j=Math.max(2,O(h).length,...i.rows.map(a=>O(a).length)),k=R(j);if(g?.push({code:"orphan-separator",line:a+1,message:e?`第 ${a+1} 行为无表头的孤立分隔线(后续 ${i.rows.length} 行表格数据):导出层不补造表头,需回源补齐表头后导出`:`第 ${a+1} 行为无表头的孤立分隔线(后续 ${i.rows.length} 行表格数据):环境为 ${b?.mode??A()},导出层补造表头「${k.join(" | ")}」并以 ${S} 左对齐分隔线标注(非作者原文),需回源补齐表头后导出`}),e){for(let a of(d.push(h),i.rows))d.push(a);a=i.next;continue}for(let c of(d.length>0&&d[d.length-1]?.trim()&&d.push(""),d.push(P(k,j)),d.push(T(j)),V(a+1,k,j,b?.mode??A(),b),f&&(f.tableSeparatorAdded+=1),i.rows))d.push(Q(O(c),j,b));(a=i.next)<c.length&&c[a]?.trim()&&d.push("");continue}}d.push(i),a+=1}return d.join("\n").replace(/\n{3,}/gu,"\n\n")}let Z=/^(?:#{1,6}\s|\||[-*+]\s|\d+[.、]\s|```|<div|\[\[PAGE)/u;function $(a,b){let c=a.split("\n"),d=[],e=b&&"off"!==b.mode?b.ops:null,f=0;for(let a=0;a<c.length;a++){let b=c[a]||"",g=b.trim();if(!g||Z.test(g)){f>1&&(e&&(e.paragraphBreakInserted+=1),d.push("")),d.push(b),f=0;continue}if((f+=1)>1){let a=(d[d.length-1]||"").trim(),b=/^(?:根据|依据|按照|针对|对于|关于|同时|此外|另外|因此|所以|但是|然而|并且|而且|以及|或者|一是|二是|三是|步骤\d|第[\d一二三四五六七八九十]+[步条])/u,c=/[。;))」』]$/u.test(a),h=/^[((「『\d]/u.test(g)||b.test(g);(c||h)&&(d.push(""),e&&(e.paragraphBreakInserted+=1),f=1)}d.push(b)}return d.join("\n").replace(/\n{3,}/gu,"\n\n")}let _=[[/m\s*<sup>\s*2\s*<\/sup>/giu,"m\xb2"],[/m\s*<sup>\s*3\s*<\/sup>/giu,"m\xb3"],[/m\s*\^\s*2/giu,"m\xb2"],[/m\s*\^\s*3/giu,"m\xb3"],[/㎡/gu,"m\xb2"],[/㎥/gu,"m\xb3"],[/(?<=\d)m\s*2(?![\p{L}\p{N}_])(?!\.\d)/giu,"m\xb2"],[/(?<=\d)m\s*3(?![\p{L}\p{N}_])(?!\.\d)/giu,"m\xb3"],[/(?<![\p{L}\p{N}_])m\s*2(?![\p{L}\p{N}_])(?!\.\d)/gu,"m\xb2"],[/(?<![\p{L}\p{N}_])m\s*3(?![\p{L}\p{N}_])(?!\.\d)/gu,"m\xb3"]];function aa(a,b){let c=b?.mode||A(),d=b&&"off"!==b.mode?b.ops:null,e=L(a);if("enforce"===c){var f;let a=(f=e,_.reduce((a,[b])=>a+(f.match(b)?.length||0),0));a>0&&b&&b.notices.push({code:"unit-notation",message:`正文存在 ${a} 处未归一单位书写(m2/㎡/m^2 等):导出纯渲染模式不改写,需在源文档或写时链修正`})}else for(let[a,b]of _){let c=e.match(a);c&&0!==c.length&&(e=e.replace(a,b),d&&(d.unitRewrite+=c.length))}return $(Y(e,b),b)}function ab(a){return a.replace(/!\[[^\]]*\]\([^)]*\)/gu,"").replace(/\[([^\]]+)\]\([^)]*\)/gu,"$1").replace(/[*_`]/gu,"").replace(/<br\s*\/?>/giu,"\n").replace(/<[^>]+>/gu,"").trim()}function ac(a){let b=a.replace(/["'“”]/gu,"").trim();return({宋体:"SimSun",仿宋:"FangSong",仿宋_GB2312:"FangSong_GB2312",黑体:"SimHei",楷体:"KaiTi",楷体_GB2312:"KaiTi_GB2312",微软雅黑:"Microsoft YaHei"})[b]||b}function ad(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 ae(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 af(a){let b=ar(a),c=a?.typography||{},d=c.bodySize?ad(c.bodySize,12):12,e=c.titleSize?ad(c.titleSize,22):22,f=c.lineHeight?ad(c.lineHeight,18):18,g=c.headingFont?c.headingFont:c.fontFamily?c.fontFamily:"黑体",h=c.bodyFont?c.bodyFont:"宋体";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:ac(g),fontBody:h,fontBodyAscii:ac(h),bodyCss:`${d}pt`,h1Css:`${e}pt`,h2Css:"15pt",h3Css:"14pt",lineCss:`${f}pt`}}function ag(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="${E(b.styleId)}"/>`:"",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="${E(d)}" w:hAnsi="${E(d)}" w:eastAsia="${E(c)}" w:cs="${E(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">${E(a)}</w:t></w:r>`}(a,b)}</w:p>`}function ah(a){return 0!==a.length&&a.every(a=>{let b=a.trim();return!(!b||b.length>12||/\d/u.test(b))&&!/[。;;,,、.]$/u.test(b)})}function ai(a,b,c){let d=Math.max(1,...a.map(a=>a.length)),e=Math.floor(9638/d),f=Array.from({length:d},(a,b)=>b===d-1?9638-e*(d-1):e),g=`<w:tblGrid>${f.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="${+!!c}" 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>${g}${a.map((a,d)=>`<w:tr>${f.map((e,f)=>{let g=a[f]||"",h=c&&0===d;return`<w:tc><w:tcPr><w:tcW w:w="${e}" 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>${h?'<w:shd w:val="clear" w:fill="F3F4F6"/>':""}</w:tcPr>${ag(g,{bold:h,size:b.bodyHalfPoints,line:b.lineTwips,fontEastAsia:b.fontBody,fontAscii:b.fontBodyAscii,spacingAfter:0,align:h?"center":"left"})}</w:tc>`}).join("")}</w:tr>`).join("")}</w:tbl>`}let aj=/^表\s*(?:[\d一二三四五六七八九十百]+(?:[..\-—–]\d+)*)\s*[、..::]?\s*\S/u;function ak(a){let b=a.trim();return b.length>1&&b.length<=60&&aj.test(b)&&!b.startsWith("|")&&!/^#/u.test(b)}let al="请在 Word 中右键更新目录";function am(a){return`<w:p><w:pPr><w:spacing w:line="${a.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:p>`}function an(a,b,c,d){let e=af(b),f=e.h1HalfPoints,g=e.bodyHalfPoints;if(d&&"off"!==d.mode){let b=aa(a,B("observe")),c=b===a?null:ax(a,b);c&&!c.conserved&&d.notices.push({code:"docx-stage",message:`docx 阶段入口存在未归一的内容差异(第 ${c.position} 字符附近「${c.sourceContext}」→「${c.productContext}」):本阶段不再二次归一,按入口文本原样渲染;归一入口应为 prepareExportMarkdown 产物`})}let h=a.replace(/<div class="page-break"><\/div>/gu,"\n[[PAGE_BREAK]]\n").split("\n"),i=[],k=!1,m=!1,n=-1,o=()=>{if(n<0)return;let a=i.splice(n);if(n=-1,0===a.length)return void i.push(am(e).replace("</w:p>",`<w:r><w:t>${al}</w:t></w:r><w:r><w:fldChar w:fldCharType="end"/></w:r></w:p>`));i.push(am(e)),a.forEach((b,c)=>i.push(c===a.length-1?b.replace(/<\/w:p>$/u,'<w:r><w:fldChar w:fldCharType="end"/></w:r></w:p>'):b))},p=!1;for(let a=0;a<h.length;){var q;let b=h[a].trim();if(!b){a+=1;continue}if(k&&("[[PAGE_BREAK]]"===b||/^#{1,4}\s+/u.test(b))&&(o(),k=!1),/<div\s+class=["']document-cover["']\s*>/iu.test(b)){m=!0,a+=1;continue}if(m&&/^<\/div>$/iu.test(b)){m=!1,a+=1;continue}if("[[PAGE_BREAK]]"===b){k=!1,m=!1,o(),i.push(ag("",{pageBreak:!0})),a+=1;continue}if(m){let c=ab(b.replace(/^#\s+/u,""));c&&i.push(ag(c,{bold:!0,size:Math.max(f+8,44),line:Math.round(1.15*e.lineTwips),fontEastAsia:e.fontHeading,fontAscii:e.fontHeadingAscii,align:"center",spacingBefore:360,spacingAfter:220})),a+=1;continue}let r=c?function(a,b){let c=/!\[([^\]]*)\]\(([^)]+)\)/u.exec(a);if(!c)return null;let d=J(c[2].trim(),b.projectRoot);if(!d)return null;let e=j.readFileSync(d),f=H(d);if("image/svg+xml"===f){let a=b.rasterizedSvg?.get(d);if(!a)return null;e=a,f="image/png"}if(!f||e.length>8388608)return null;let g=b.images.length+1,h="image/png"===f?".png":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(r){i.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="${r.widthEmu}" cy="${r.heightEmu}"/><wp:docPr id="${r.relationshipId.replace(/\D/gu,"")||"1"}" name="${E(r.altText||r.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="${E(r.fileName)}"/><pic:cNvPicPr/></pic:nvPicPr><pic:blipFill><a:blip r:embed="${r.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="${r.widthEmu}" cy="${r.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 s=function(a,b){let c=a[b+1]?.trim()===""?b+2:b+1;if(c>=a.length||!N(a[b]||"")||!M(a[c]||""))return null;let d=O(a[b]||"").map(a=>ab(a)),e=O(a[c]||"").length,f=[],g=c+1;for(;g<a.length&&N(a[g]||"");)f.push(O(a[g]||"").map(a=>ab(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,headerRow:ah(d)}}(h,a);if(s){i.push(ai(s.rows,e,s.headerRow),ag("",{spacingAfter:80,line:e.lineTwips})),p=!0,a=s.next;continue}let t=!k&&N(b)?W(h,a):null;if(t){i.push(ai(t.rows.map(a=>O(a).map(a=>ab(a))),e,!1),ag("",{spacingAfter:80,line:e.lineTwips})),d&&"off"!==d.mode&&(d.ops.headerlessTableRendered+=1,d.notices.push({code:"headerless-table",message:`docx 阶段按数据行渲染无表头表格 ${t.rows.length} 行 \xd7 ${t.columns} 列(首行不冒充表头):该表在源文档缺表头,需回源补齐`})),p=!0,a=t.next;continue}if(M(b)){a+=1;continue}let u=/^(#{1,4})\s+(.+)$/u.exec(b);if(u){let b=ab(u[2]);i.push((q=u[1].length,2===q?ag(b,{styleId:"Heading1",outlineLevel:0,bold:!0,size:e.h1HalfPoints,line:e.lineTwips,fontEastAsia:e.fontHeading,fontAscii:e.fontHeadingAscii,align:"center",spacingBefore:260,spacingAfter:180,keepNext:!0}):3===q?ag(b,{styleId:"Heading2",outlineLevel:1,bold:!0,size:e.h2HalfPoints,line:e.lineTwips,fontEastAsia:e.fontHeading,fontAscii:e.fontHeadingAscii,align:"left",spacingBefore:180,spacingAfter:100,keepNext:!0}):ag(b,{styleId:"Heading3",outlineLevel:2,bold:!0,size:e.h3HalfPoints,line:e.lineTwips,fontEastAsia:e.fontHeading,fontAscii:e.fontHeadingAscii,align:"left",spacingBefore:120,spacingAfter:80,keepNext:!0}))),"目录"===b&&(k=!0,n=i.length),p=!1,a+=1;continue}let v=ab(b),w=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:ab(b[3])}:null}(b),x=function(a){let b=/^\s*[-*+]\s+(.+)$/u.exec(a);return b?ab(b[1]):null}(b);if(!k&&w){let b=0===w.level?720:1===w.level?1080:1440,c=0===w.level?360:1===w.level?420:480;i.push(ag(`${w.marker} ${w.text}`,{styleId:"ListParagraph",size:g,line:e.lineTwips,fontEastAsia:e.fontBody,fontAscii:e.fontBodyAscii,indentLeft:b,hanging:c,spacingAfter:60})),a+=1;continue}if(!k&&x){i.push(ag(`• ${x}`,{styleId:"ListParagraph",size:g,line:e.lineTwips,fontEastAsia:e.fontBody,fontAscii:e.fontBodyAscii,indentLeft:720,hanging:360,spacingAfter:60})),a+=1;continue}let y=h.slice(a+1).find(a=>""!==a.trim());if(!k&&ak(b)&&(p||y&&N(y.trim()))){i.push(ag(v,{bold:!0,size:e.bodyHalfPoints,line:e.lineTwips,fontEastAsia:e.fontHeading,fontAscii:e.fontHeadingAscii,align:"center",firstLine:0,spacingBefore:120,spacingAfter:60,keepNext:!0})),d&&"off"!==d.mode&&(d.ops.captionStyled+=1),p=!1,a+=1;continue}let z=/^\*\*[^*]+\*\*\s*$/u.test(b)&&v.length<=40,A=/^\*\*[^*]+\*\*\s*[::]?\s*$/u.test(b)||/^([一二三四五六七八九十]+)/u.test(v)||/^[一二三四五六七八九十]+、/u.test(v);i.push(k?function(a,b){let c=/^\s*\d+\.\d+\s+\S/u.test(a);return ag(ab(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,e):ag(v,{bold:A||z,size:z?Math.max(e.bodyHalfPoints+2,30):g,line:e.lineTwips,fontEastAsia:e.fontBody,fontAscii:e.fontBodyAscii,align:z?"left":"both",firstLine:A||z?0:560,spacingBefore:z?120:80*!!A,spacingAfter:z?60:void 0})),p=!1,a+=1}o();let r=i.join("");if(d&&"off"!==d.mode){let b=aA(a,r);b.conserved||d.blockers.push({code:"content-not-conserved",line:0,message:`docx 渲染阶段存在未声明的正文改动(产物文本去标记比对):第 ${b.position} 字符附近分歧(入口「${b.sourceContext}」→ 产物「${b.productContext}」)`})}return r}async function ao(a,b,c,d=[]){a.folder("word")?.file("styles.xml",function(a){let b=af(a),c=`w:ascii="${E(b.fontBodyAscii)}" w:hAnsi="${E(b.fontBodyAscii)}" w:eastAsia="${E(b.fontBody)}" w:cs="${E(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,24),0,260,180,"center")}${d("Heading2","heading 2",Math.max(b.h2HalfPoints,24),1,180,100)}${d("Heading3","heading 3",Math.max(b.h3HalfPoints,22),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("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=af(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="${E(b.fontBody)}"><w:charset w:val="86"/><w:family w:val="roman"/></w:font><w:font w:name="${E(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>${E(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"],["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/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 ap(a,b,c,d,e=process.cwd(),f){let g,h={projectRoot:e,images:[]},i=an(b,c,h,f);if(d&&j.existsSync(d)){let b=await p().loadAsync(j.readFileSync(d)),e=b.file("word/document.xml");if(e){let f=await e.async("string");if(/\{\{content\}\}/u.test(f))return b.file("word/document.xml",f.replace(/\{\{title\}\}/gu,E(a)).replace(/\{\{content\}\}/gu,i)),await ao(b,a,c,h.images),{buffer:await b.generateAsync({type:"nodebuffer"})};console.error(`[export] 模板缺少 {{content}} 占位符,已回退标准生成路径(正文正确、未套模板样式):${d}`),g=`模板缺少 {{content}} 占位符,已回退标准生成路径(未套模板样式)`}}let k=c?.page||{},l=new(p());return l.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>${i}<w:sectPr><w:pgSz w:w="11906" w:h="16838"/><w:pgMar w:top="${ae(k.marginTop,2.5)}" w:right="${ae(k.marginRight,2)}" w:bottom="${ae(k.marginBottom,2)}" w:left="${ae(k.marginLeft,2)}"${k.gutter?` w:gutter="${ae(k.gutter,0)}"`:""}/></w:sectPr></w:body></w:document>`),await ao(l,a,c,h.images),{buffer:await l.generateAsync({type:"nodebuffer"}),templateWarning:g}}function aq(a,b){return a&&/^[\w\s\u4e00-\u9fa5,"'().-]+$/u.test(a)?a:b}function ar(a){let b=a?.page||{},c=a?.typography||{},d=aq(b.paper,"A4"),e=aq(b.marginTop,"24mm"),f=aq(b.marginRight,"18mm"),g=aq(b.marginBottom,"22mm"),h=aq(b.marginLeft,"18mm"),i=c.fontFamily||"SimSun, 宋体, serif",j=c.bodyFont||c.fontFamily||"SimSun, 宋体, serif",k=c.headingFont||c.fontFamily||"SimSun, 宋体, serif",l=c.lineHeight||"18pt";return{paper:d,marginTop:e,marginRight:f,marginBottom:g,marginLeft:h,fontFamily:i,bodyFontFamily:j,headingFontFamily:k,lineHeight:l,titleSize:c.titleSize||"22pt",bodySize:c.bodySize||"12pt"}}function as(a){return a.replace(/(<h2[^>]*>\s*目录\s*<\/h2>)([\s\S]*?)(<div class="page-break"><\/div>|<h2[^>]*>)/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 at(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 au(a,b){let c=at(a),d=b?at(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:ab(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=>ab(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=>ab(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(!N(d))continue;let e=c[a+1]?.trim()===""?a+2:a+1;if(e<c.length&&M(c[e]||"")){let f=[],g=e+1;for(;g<c.length&&N(c[g]||"");)f.push(c[g]||""),g+=1;0===f.length&&b.push(`第 ${a+1} 行表格只有表头,没有数据行`);let h=[d,...f].map(a=>O(a).length);Math.max(...h)-Math.min(...h)>2&&b.push(`第 ${a+1} 行附近表格列数差异较大,导出版式可能异常`),a=g-1;continue}a+1<c.length&&N(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 av(a){return L(a).replace(/\r?\n/gu,"\n").split("\n").filter(a=>!M(a.trim())&&!/^\s*```/u.test(a)).join("\n").replace(/m\s*<sup>\s*2\s*<\/sup>/giu,"m2").replace(/m\s*<sup>\s*3\s*<\/sup>/giu,"m3").replace(/m\s*\^\s*2/giu,"m2").replace(/m\s*\^\s*3/giu,"m3").replace(/㎡/gu,"m2").replace(/㎥/gu,"m3").replace(/m\s*²/giu,"m2").replace(/m\s*³/giu,"m3").replace(/m\s*2(?!\.\d)/giu,"m2").replace(/m\s*3(?!\.\d)/giu,"m3").replace(/(?<=\d)\s*[xX×*xX*]\s*(?=\d)/gu,"\xd7").replace(/[`*_~|#\\-]/gu,"").replace(/<[^>]*>/gu,"").replace(/\s+/gu,"")}function aw(a,b){if(a===b)return{conserved:!0};let c=0,d=Math.min(a.length,b.length);for(;c<d&&a[c]===b[c];)c+=1;return{conserved:!1,position:c,sourceContext:a.slice(Math.max(0,c-20),c+20),productContext:b.slice(Math.max(0,c-20),c+20)}}function ax(a,b){return aw(av(a),av(b))}function ay(a){return[...a.matchAll(/<w:t(?:\s[^>]*)?>([\s\S]*?)<\/w:t>/gu)].map(a=>(a[1]||"").replace(/&lt;/gu,"<").replace(/&gt;/gu,">").replace(/&quot;/gu,'"').replace(/&amp;/gu,"&")).join("\n")}function az(a){return av(a.replace(/!\[[^\]]*\]\([^)]*\)/gu,"").replace(/\[([^\]]*)\]\([^)]*\)/gu,"$1").replace(/\[\[PAGE_BREAK\]\]/gu,"").replace(/[•·]/gu,"").replace(RegExp(al,"gu"),""))}function aA(a,b){return aw(az(a),az(ay(b)))}function aB(a){if(!a)return{text:a,removed:0,samples:[]};let b=[],c=[],d=0,e=[],f=()=>{if(0===e.length)return;let a=e.join("\n"),f=(0,v.vG)(a),g=(0,v.eI)(f.text),h=(0,v.W)(g.text);for(let a of(d+=f.removed+g.removed,g.text.split("\n")))(0,v.Nf)(a)&&(d+=1,c.length<6&&c.push(a.trim().slice(0,40)));let i=new Set(h.split("\n"));for(let b of a.split("\n"))!b.trim()||i.has(b)||c.length>=6||c.push(b.trim().slice(0,40));b.push(...h.split("\n")),e=[]};for(let c of a.replace(/\r?\n/gu,"\n").split("\n")){if(!c.trim()||Z.test(c.trim())){f(),b.push(c);continue}e.push(c)}return f(),{text:b.join("\n"),removed:d,samples:c}}function aC(a){let b=a.replace(/\r?\n/gu,"\n").split("\n").map(a=>a.trim());return{headings:b.filter(a=>/^#{1,6}\s/u.test(a)),tableRows:b.filter(a=>a.startsWith("|"))}}function aD(a,b){let c=aB(a);if(c.text===a)return a;let d=aC(a),e=aC(c.text);if(JSON.stringify(d)!==JSON.stringify(e))return b?.blockers.push({code:"declared-rewrite-overreach",line:0,message:"导出链声明剥离改动越界(标题行/表格行被改写或删除):结构行是信息载体,剥离只允许作用于散文区,已回退原文"}),a;if(b&&"off"!==b.mode){let d=a=>av(a).replace(/[,,、;;::]/gu,"");d(a)!==d(c.text)&&0===c.removed?b.blockers.push({code:"declared-rewrite-unregistered",line:0,message:"导出链声明剥离存在未登记的内容改动(内容有改动但计数为零):剥离器与实际改写不一致,需复核判据"}):c.removed>0&&(b.ops.declaredStrip+=c.removed,b.notices.push({code:"declared-rewrite",message:`导出链声明剥离 ${c.removed} 处(素材残留行/澄清变更叙述/图纸图集指向语;判据与生成链 materialResidue 同名函数同源,结构行逐字保留)${c.samples.length>0?`,样本:${c.samples.join(";")}`:""}`}))}return c.text}let aE=/^##\s+目录\s*$/mu;function aF(a,b){let c=0,d=Math.min(a.length,b.length);for(;c<d&&a[c]===b[c];)c+=1;let e=a.length,f=b.length;for(;e>c&&f>c&&a[e-1]===b[f-1];)e-=1,f-=1;return{before:a.slice(c,e),after:b.slice(c,f)}}function aG(a,b){if(!aE.test(a))return a;let c=(0,w._D)(a);if(c.markdown===a||av(c.markdown)===av(a))return a;let d=aF(a,c.markdown);return/^#{2,4}\s/mu.test(d.after)||/^\s*\|/mu.test(d.after)?(b?.blockers.push({code:"declared-rewrite-overreach",line:0,message:"目录重建改动跨度越界(改动区间含正文章/节标题行或表格行),已回退原文目录:需回源核对目录与正文结构"}),a):(b&&"off"!==b.mode&&(b.ops.tocRebuilt+=1,b.notices.push({code:"toc-reconcile",message:`静态目录与正文结构不一致,已按生成链 fixTocFromBody 同源口径重建(目录条目取正文章标题与小节编号原文)${c.details.length>0?`:${c.details.join(";")}`:""}`}),(0,w._D)(c.markdown).markdown!==c.markdown&&b.notices.push({code:"toc-reconcile",message:"目录重建结果未收敛(二次重建仍有差异):需回源核对目录与正文结构"})),c.markdown)}function aH(a,b){let c=b?.mode??A(),d="off"===c?a:aD(a,b),e=aa((0,u.kT)(d),b).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"),f="off"===c?e:aG(e,b);return{declared:d,normalized:e,product:f}}function aI(a,b){let c=B(),d=aH(a,c),e=aH(b||"").product;if("off"!==c.mode){let a=ax(d.declared,d.normalized);a.conserved||c.blockers.push({code:"content-not-conserved",line:0,message:`导出链存在未声明的内容改写(去标记比对):归一文本第 ${a.position} 字符附近分歧(源「${a.sourceContext}」→ 产物「${a.productContext}」)`})}return{markdown:d.product,baselineMarkdown:e,issues:au(d.product,e),audit:c}}async function aJ(a,b,d,e,f=!1){let{marked:g}=await Promise.resolve().then(c.bind(c,83142));return K(function(a,b,c,d=!1){let e=af(c),f=as(b);return`<!doctype html><html lang="zh-CN"><head><meta charset="utf-8"><title>${E(a)}</title><style>${function(a,b=!1){return`
1
+ "use strict";(()=>{var a={};a.id=8644,a.ids=[8644],a.modules={191:(a,b,c)=>{c.d(b,{cW:()=>q,hH:()=>r,mG:()=>u,wF:()=>p});var d=c(29021),e=c.n(d),f=c(21820),g=c.n(f),h=c(33873),i=c.n(h),j=c(55511),k=c.n(j);let l=i().join(g().homedir(),".customize-agent","logs"),m=i().join(l,"errors.jsonl"),n="errors-";function o(){try{return e().readdirSync(l).filter(a=>a.startsWith(n)&&a.endsWith(".jsonl")).sort().reverse()}catch{return[]}}function p(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,`${n}${Date.now()}.jsonl`)),function(){for(let a of o().slice(20))try{e().rmSync(i().join(l,a),{force:!0})}catch{}}()}catch{}}(),e().appendFileSync(m,`${JSON.stringify(d)}
2
+ `)}catch(a){console.error("[errorLogService] failed to write error log",a)}return d}function q(a=200){let b=[m,...o().map(a=>i().join(l,a))],c=[];for(let d of b){if(c.length>=a)break;for(let b of(function(a){try{return e().readFileSync(a,"utf8").split("\n").filter(Boolean).flatMap(a=>{try{return[JSON.parse(a)]}catch{return[]}})}catch{return[]}})(d).reverse())if(c.push(b),c.length>=a)break}return c}function r(){let a=0;if(e().existsSync(m))try{e().rmSync(m,{force:!0}),a++}catch{}for(let b of o())try{e().rmSync(i().join(l,b),{force:!0}),a++}catch{}return a}let s=!1;function t(a,b,c,d=20){let e=0,f=0;return g=>{try{b(g);let h=Date.now();h-e>6e4&&(e=h,f=0),f<d&&(f+=1,c(a,g))}catch{}}}function u(){s||(s=!0,process.on("uncaughtException",t("uncaughtException",a=>p({source:"process",functionName:"uncaughtException",error:a}),(a,b)=>console.error(`[process] ${a}`,b))),process.on("unhandledRejection",t("unhandledRejection",a=>p({source:"process",functionName:"unhandledRejection",error:a}),(a,b)=>console.error(`[process] ${a}`,b))))}},15751:a=>{a.exports=require("xlsx")},16006:(a,b,c)=>{c.d(b,{j:()=>e});var d=c(191);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)()},16698:a=>{a.exports=require("node:async_hooks")},19898:a=>{a.exports=require("@customize-agent/knowledge")},21820:a=>{a.exports=require("os")},28183:a=>{a.exports=require("@napi-rs/canvas")},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")},55511:a=>{a.exports=require("crypto")},73024:a=>{a.exports=require("node:fs")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:a=>{a.exports=require("node:path")},77598:a=>{a.exports=require("node:crypto")},83142:a=>{a.exports=import("marked")},83237:a=>{a.exports=import("playwright")},88194:a=>{a.exports=require("jszip")},95393:a=>{a.exports=require("@customize-agent/llm")},96770:a=>{a.exports=require("@customize-agent/runtime")},97614:(a,b,c)=>{c.r(b),c.d(b,{config:()=>aZ,default:()=>aY,handler:()=>a_});var d={};c.r(d),c.d(d,{__documentExportTest__:()=>aU,config:()=>B,default:()=>aV,docxTemplateRoots:()=>at});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");var o=c(88194),p=c.n(o),q=c(48661),r=c(44533),s=c(52639),t=c(30055);let u=`_非交付物_`;var v=c(40299),w=c(31920),x=c(44505),y=c(191),z=c(16006),A=c(89900);let B={api:{bodyParser:{sizeLimit:"50mb"},responseLimit:!1}};function C(){let a=(process.env.DOCUMENT_EXPORT_PURE_RENDER||"observe").trim().toLowerCase();return"0"===a||"off"===a||"false"===a?"off":"enforce"===a?"enforce":"observe"}function D(a=C()){return{mode:a,blockers:[],notices:[],ops:{tableSeparatorAdded:0,tableCellAligned:0,tableBoundarySplit:0,inlineSeparatorStripped:0,paragraphBreakInserted:0,unitRewrite:0,declaredStrip:0,tocRebuilt:0,headerlessTableRendered:0,captionStyled:0}}}function E(a){return{mode:a.mode,blockerCount:a.blockers.length,blockerCodes:[...new Set(a.blockers.map(a=>a.line>0?`${a.code}@L${a.line}`:a.code))].slice(0,20),notices:a.notices.map(a=>a.message).slice(0,10),ops:{...a.ops},opsTotal:Object.values(a.ops).reduce((a,b)=>a+b,0)}}function F(a){return a.replace(/[\\/:*?"<>|]/gu,"-").slice(0,80)||"document"}function G(a){return a.replace(/&/gu,"&amp;").replace(/</gu,"&lt;").replace(/>/gu,"&gt;").replace(/"/gu,"&quot;")}let H=(0,n.promisify)(i.execFile),I={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".webp":"image/webp",".gif":"image/gif",".svg":"image/svg+xml"};function J(a){return I[l.extname(a).toLowerCase()]||""}function K(a,b){let c=l.relative(b,a);return!!c&&!c.startsWith("..")&&!l.isAbsolute(c)}function L(a,b=(0,r.aY)()){if(!a||/^(?:https?:|data:|file:|blob:|#)/iu.test(a))return null;let c=/^\/api\/documents\/generated\/[^/]+\/figure\/([A-Za-z0-9._-]+\.svg)(?:\?.*)?$/u.exec(a)?.[1];if(c){let a=l.resolve((0,q.Gl)(b),"assets","figures"),d=l.resolve(a,c);return K(d,a)&&j.existsSync(d)&&j.statSync(d).isFile()?d:null}let d=function(a){try{return decodeURIComponent(a.split(/[?#]/u)[0]||a)}catch{return""}}(a);if(!d||l.isAbsolute(d))return null;let e=l.resolve((0,r.NW)(b)),f=l.resolve((0,q.Gl)(b),"assets");return[d.startsWith("generatedDocuments/assets/")?l.resolve(f,d.replace(/^generatedDocuments\/assets\//u,"")):"",l.resolve(e,d)].filter(Boolean).find(a=>{let b=l.resolve(a);return(K(b,e)||K(b,f))&&!!J(b)&&j.existsSync(b)&&j.statSync(b).isFile()})||null}function M(a,b=(0,r.aY)()){let c=new Map,d=0;return a.replace(/<img\b([^>]*?)\bsrc=["']([^"']+)["']([^>]*)>/giu,(a,e,f,g)=>{let h=L(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:${J(h)};base64,${j.readFileSync(h).toString("base64")}`,c.set(h,k),d+=i.size),`<img${e}src="${k}"${g}>`})}function N(a){let b=a.trim(),c=/^```(?:markdown|md)?\s*\n([\s\S]*?)\n```\s*$/iu.exec(b);return c?c[1].trim():a}function O(a){return/^\s*\|?\s*:?-{3,}:?\s*(\|\s*:?-{3,}:?\s*)+\|?\s*$/u.test(a.trim())}function P(a){let b=a.trim();return!(!b||/^#{1,6}\s+/u.test(b)||O(b))&&(b.match(/(?<!\\)\|/gu)||[]).length>=1}function Q(a){return a.trim().replace(/^\|/u,"").replace(/\|$/u,"").trim().split(/(?<!\\)\|/u).map(a=>a.replace(/\\\|/gu,"|").trim())}function R(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 S(a,b,c){return c&&"off"!==c.mode&&a.length!==b&&(c.ops.tableCellAligned+=1),R(a,b)}function T(a){if(2===a)return["信息项","内容"];let b=["控制项目","控制内容","执行要求","责任主体","检查与验收","备注"];return Array.from({length:a},(a,c)=>b[c]||`补充说明${c+1}`)}let U=":---";function V(a){return`| ${Array.from({length:a},()=>U).join(" | ")} |`}function W(a){let b=Q(a);return b.length>0&&b.every(a=>a===U)}function X(a,b,c,d,e){e&&"off"!==e.mode&&e.notices.push({code:"fabricated-header",message:`导出层补造表头(非作者原文,仅 ${d} 模式补造):第 ${a} 行「${b.join(" | ")}」(${c} 列)——原表无表头,回源补齐后该补造行即消失`})}function Y(a,b){let c=[],d=b;for(;d<a.length&&P(a[d]||"");)c.push(a[d]||""),d+=1;let e=Math.max(...c.map(a=>Q(a).length),0);return c.length<2||e<2?null:{rows:c,columns:e,next:d}}function Z(a,b){return O(((a[b+1]?.trim()===""?a[b+2]:a[b+1])||"").trim())}function $(a,b){let c=a.replace(/\r?\n/gu,"\n").split("\n"),d=[],e=b?.mode==="enforce",f=b&&"off"!==b.mode?b.ops:null,g=b&&"off"!==b.mode?b.blockers:null;for(let a=0;a<c.length;){let h=c[a]||"",i=h.replace(/([^|\n])\|\s*:?-{3,}:?\s*(\|\s*:?-{3,}:?\s*)+\|?\s*$/u,"$1");f&&i!==h&&(f.inlineSeparatorStripped+=1);let j=c[a+1]?.trim()===""?a+2:a+1,k=c[j];if(P(h)&&void 0!==k&&O(k)){let e=Q(h),g=Q(k).length,i=[],l=j+1;for(;l<c.length;){let a=c[l]||"";if(!P(a)||Z(c,l))break;i.push(Q(a)),l+=1}let m=Math.max(2,e.length,g,...i.map(a=>a.length));for(d.length>0&&d[d.length-1]?.trim()&&d.push(""),d.push(S(e,m,b)),d.push(W(k)?V(m):`| ${Array.from({length:m},()=>"---").join(" | ")} |`),a=j+1;a<c.length;){let e=c[a]||"";if(!P(e))break;if(Z(c,a)){f&&(f.tableBoundarySplit+=1);break}d.push(S(Q(e),m,b)),a+=1}a<c.length&&c[a]?.trim()&&d.push("");continue}let l=P(h)?Y(c,a):null;if(l){let h=T(l.columns);if(g?.push({code:"bare-table",line:a+1,message:e?`第 ${a+1} 行起为无表头裸表格(${l.rows.length} 行 \xd7 ${l.columns} 列):导出层不补造表头,需回源补齐表头后导出`:`第 ${a+1} 行起为无表头裸表格(${l.rows.length} 行 \xd7 ${l.columns} 列):环境为 ${b?.mode??C()},导出层补造表头「${h.join(" | ")}」并以 ${U} 左对齐分隔线标注(非作者原文),需回源补齐表头后导出`}),e){for(let a of l.rows)d.push(a);a=l.next;continue}for(let c of(d.length>0&&d[d.length-1]?.trim()&&d.push(""),d.push(R(h,l.columns)),d.push(V(l.columns)),X(a+1,h,l.columns,b?.mode??C(),b),f&&(f.tableSeparatorAdded+=1),l.rows))d.push(S(Q(c),l.columns,b));(a=l.next)<c.length&&c[a]?.trim()&&d.push("");continue}if(O(h)){let i=function(a,b){let c=[],d=b;for(;d<a.length&&P(a[d]||"");)c.push(a[d]||""),d+=1;return{rows:c,next:d}}(c,a+1);if(i.rows.length>0){let j=Math.max(2,Q(h).length,...i.rows.map(a=>Q(a).length)),k=T(j);if(g?.push({code:"orphan-separator",line:a+1,message:e?`第 ${a+1} 行为无表头的孤立分隔线(后续 ${i.rows.length} 行表格数据):导出层不补造表头,需回源补齐表头后导出`:`第 ${a+1} 行为无表头的孤立分隔线(后续 ${i.rows.length} 行表格数据):环境为 ${b?.mode??C()},导出层补造表头「${k.join(" | ")}」并以 ${U} 左对齐分隔线标注(非作者原文),需回源补齐表头后导出`}),e){for(let a of(d.push(h),i.rows))d.push(a);a=i.next;continue}for(let c of(d.length>0&&d[d.length-1]?.trim()&&d.push(""),d.push(R(k,j)),d.push(V(j)),X(a+1,k,j,b?.mode??C(),b),f&&(f.tableSeparatorAdded+=1),i.rows))d.push(S(Q(c),j,b));(a=i.next)<c.length&&c[a]?.trim()&&d.push("");continue}}d.push(i),a+=1}return d.join("\n").replace(/\n{3,}/gu,"\n\n")}let _=/^(?:#{1,6}\s|\||[-*+]\s|\d+[.、]\s|```|<div|\[\[PAGE)/u;function aa(a,b){let c=a.split("\n"),d=[],e=b&&"off"!==b.mode?b.ops:null,f=0;for(let a=0;a<c.length;a++){let b=c[a]||"",g=b.trim();if(!g||_.test(g)){f>1&&(e&&(e.paragraphBreakInserted+=1),d.push("")),d.push(b),f=0;continue}if((f+=1)>1){let a=(d[d.length-1]||"").trim(),b=/^(?:根据|依据|按照|针对|对于|关于|同时|此外|另外|因此|所以|但是|然而|并且|而且|以及|或者|一是|二是|三是|步骤\d|第[\d一二三四五六七八九十]+[步条])/u,c=/[。;))」』]$/u.test(a),h=/^[((「『\d]/u.test(g)||b.test(g);(c||h)&&(d.push(""),e&&(e.paragraphBreakInserted+=1),f=1)}d.push(b)}return d.join("\n").replace(/\n{3,}/gu,"\n\n")}let ab=[[/m\s*<sup>\s*2\s*<\/sup>/giu,"m\xb2"],[/m\s*<sup>\s*3\s*<\/sup>/giu,"m\xb3"],[/m\s*\^\s*2/giu,"m\xb2"],[/m\s*\^\s*3/giu,"m\xb3"],[/㎡/gu,"m\xb2"],[/㎥/gu,"m\xb3"],[/(?<=\d)m\s*2(?![\p{L}\p{N}_])(?!\.\d)/giu,"m\xb2"],[/(?<=\d)m\s*3(?![\p{L}\p{N}_])(?!\.\d)/giu,"m\xb3"],[/(?<![\p{L}\p{N}_])m\s*2(?![\p{L}\p{N}_])(?!\.\d)/gu,"m\xb2"],[/(?<![\p{L}\p{N}_])m\s*3(?![\p{L}\p{N}_])(?!\.\d)/gu,"m\xb3"]];function ac(a,b){let c=b?.mode||C(),d=b&&"off"!==b.mode?b.ops:null,e=N(a);if("enforce"===c){var f;let a=(f=e,ab.reduce((a,[b])=>a+(f.match(b)?.length||0),0));a>0&&b&&b.notices.push({code:"unit-notation",message:`正文存在 ${a} 处未归一单位书写(m2/㎡/m^2 等):导出纯渲染模式不改写,需在源文档或写时链修正`})}else for(let[a,b]of ab){let c=e.match(a);c&&0!==c.length&&(e=e.replace(a,b),d&&(d.unitRewrite+=c.length))}return aa($(e,b),b)}function ad(a){return a.replace(/!\[[^\]]*\]\([^)]*\)/gu,"").replace(/\[([^\]]+)\]\([^)]*\)/gu,"$1").replace(/[*_`]/gu,"").replace(/<br\s*\/?>/giu,"\n").replace(/<[^>]+>/gu,"").trim()}function ae(a){let b=a.replace(/["'“”]/gu,"").trim();return({宋体:"SimSun",仿宋:"FangSong",仿宋_GB2312:"FangSong_GB2312",黑体:"SimHei",楷体:"KaiTi",楷体_GB2312:"KaiTi_GB2312",微软雅黑:"Microsoft YaHei"})[b]||b}function af(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 ag(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 ah(a){let b=aw(a),c=a?.typography||{},d=c.bodySize?af(c.bodySize,12):12,e=c.titleSize?af(c.titleSize,22):22,f=c.lineHeight?af(c.lineHeight,18):18,g=c.headingFont?c.headingFont:c.fontFamily?c.fontFamily:"黑体",h=c.bodyFont?c.bodyFont:"宋体";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:ae(g),fontBody:h,fontBodyAscii:ae(h),bodyCss:`${d}pt`,h1Css:`${e}pt`,h2Css:"15pt",h3Css:"14pt",lineCss:`${f}pt`}}function ai(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="${G(b.styleId)}"/>`:"",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="${G(d)}" w:hAnsi="${G(d)}" w:eastAsia="${G(c)}" w:cs="${G(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">${G(a)}</w:t></w:r>`}(a,b)}</w:p>`}async function aj(a,b,d){let e,f,g=new Map,h=new Set;for(let c of a.matchAll(/!\[[^\]]*\]\(([^)\s]+)[^)]*\)/gu)){let a=L(c[1].trim(),b);a&&".svg"===l.extname(a).toLowerCase()&&h.add(a)}if(0===h.size)return g;try{let a=await Promise.resolve().then(c.t.bind(c,28183,23));e=a.loadImage,f=a.createCanvas}catch(a){return d?.notices.push({code:"docx-stage",message:`SVG 图件光栅化不可用(${a instanceof Error?a.message:String(a)}):${h.size} 张图件在 DOCX 中将缺失`}),g}for(let a of h)try{let b=await e(j.readFileSync(a)),c=Math.max(1,Math.round(b.width)),d=Math.max(1,Math.round(b.height)),h=f(2*c,2*d),i=h.getContext("2d");i.scale(2,2),i.drawImage(b,0,0),g.set(a,h.toBuffer("image/png"))}catch(b){d?.notices.push({code:"docx-stage",message:`图件光栅化失败已跳过:${l.basename(a)}(${b instanceof Error?b.message:String(b)})`})}return g.size>0&&d?.notices.push({code:"docx-stage",message:`图件光栅化:${g.size}/${h.size} 张 SVG 已转 2\xd7 PNG 内联进 DOCX(DOCX 不支持内联 SVG)`}),g}function ak(a){return 0!==a.length&&a.every(a=>{let b=a.trim();return!(!b||b.length>12||/\d/u.test(b))&&!/[。;;,,、.]$/u.test(b)})}function al(a,b,c){let d=Math.max(1,...a.map(a=>a.length)),e=Math.floor(9638/d),f=Array.from({length:d},(a,b)=>b===d-1?9638-e*(d-1):e),g=`<w:tblGrid>${f.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="${+!!c}" 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>${g}${a.map((a,d)=>`<w:tr>${f.map((e,f)=>{let g=a[f]||"",h=c&&0===d;return`<w:tc><w:tcPr><w:tcW w:w="${e}" 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>${h?'<w:shd w:val="clear" w:fill="F3F4F6"/>':""}</w:tcPr>${ai(g,{bold:h,size:b.bodyHalfPoints,line:b.lineTwips,fontEastAsia:b.fontBody,fontAscii:b.fontBodyAscii,spacingAfter:0,align:h?"center":"left"})}</w:tc>`}).join("")}</w:tr>`).join("")}</w:tbl>`}let am=/^表\s*(?:[\d一二三四五六七八九十百]+(?:[..\-—–]\d+)*)\s*[、..::]?\s*\S/u;function an(a){let b=a.trim();return b.length>1&&b.length<=60&&am.test(b)&&!b.startsWith("|")&&!/^#/u.test(b)}let ao="请在 Word 中右键更新目录";function ap(a){return`<w:p><w:pPr><w:spacing w:line="${a.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:p>`}function aq(a,b,c,d){let e=ah(b),f=e.h1HalfPoints,g=e.bodyHalfPoints;if(d&&"off"!==d.mode){let b=ac(a,D("observe")),c=b===a?null:aC(a,b);c&&!c.conserved&&d.notices.push({code:"docx-stage",message:`docx 阶段入口存在未归一的内容差异(第 ${c.position} 字符附近「${c.sourceContext}」→「${c.productContext}」):本阶段不再二次归一,按入口文本原样渲染;归一入口应为 prepareExportMarkdown 产物`})}let h=a.replace(/<div class="page-break"><\/div>/gu,"\n[[PAGE_BREAK]]\n").split("\n"),i=[],k=!1,m=!1,n=-1,o=()=>{if(n<0)return;let a=i.splice(n);if(n=-1,0===a.length)return void i.push(ap(e).replace("</w:p>",`<w:r><w:t>${ao}</w:t></w:r><w:r><w:fldChar w:fldCharType="end"/></w:r></w:p>`));i.push(ap(e)),a.forEach((b,c)=>i.push(c===a.length-1?b.replace(/<\/w:p>$/u,'<w:r><w:fldChar w:fldCharType="end"/></w:r></w:p>'):b))},p=!1;for(let a=0;a<h.length;){var q;let b=h[a].trim();if(!b){a+=1;continue}if(k&&("[[PAGE_BREAK]]"===b||/^#{1,4}\s+/u.test(b))&&(o(),k=!1),/<div\s+class=["']document-cover["']\s*>/iu.test(b)){m=!0,a+=1;continue}if(m&&/^<\/div>$/iu.test(b)){m=!1,a+=1;continue}if("[[PAGE_BREAK]]"===b){k=!1,m=!1,o(),i.push(ai("",{pageBreak:!0})),a+=1;continue}if(m){let c=ad(b.replace(/^#\s+/u,""));c&&i.push(ai(c,{bold:!0,size:Math.max(f+8,44),line:Math.round(1.15*e.lineTwips),fontEastAsia:e.fontHeading,fontAscii:e.fontHeadingAscii,align:"center",spacingBefore:360,spacingAfter:220})),a+=1;continue}let r=c?function(a,b){let c=/!\[([^\]]*)\]\(([^)]+)\)/u.exec(a);if(!c)return null;let d=L(c[2].trim(),b.projectRoot);if(!d)return null;let e=j.readFileSync(d),f=J(d);if("image/svg+xml"===f){let a=b.rasterizedSvg?.get(d);if(!a)return null;e=a,f="image/png"}if(!f||e.length>8388608)return null;let g=b.images.length+1,h="image/png"===f?".png":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(r){i.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="${r.widthEmu}" cy="${r.heightEmu}"/><wp:docPr id="${r.relationshipId.replace(/\D/gu,"")||"1"}" name="${G(r.altText||r.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="${G(r.fileName)}"/><pic:cNvPicPr/></pic:nvPicPr><pic:blipFill><a:blip r:embed="${r.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="${r.widthEmu}" cy="${r.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 s=function(a,b){let c=a[b+1]?.trim()===""?b+2:b+1;if(c>=a.length||!P(a[b]||"")||!O(a[c]||""))return null;let d=Q(a[b]||"").map(a=>ad(a)),e=Q(a[c]||"").length,f=[],g=c+1;for(;g<a.length&&P(a[g]||"");)f.push(Q(a[g]||"").map(a=>ad(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,headerRow:ak(d)}}(h,a);if(s){i.push(al(s.rows,e,s.headerRow),ai("",{spacingAfter:80,line:e.lineTwips})),p=!0,a=s.next;continue}let t=!k&&P(b)?Y(h,a):null;if(t){i.push(al(t.rows.map(a=>Q(a).map(a=>ad(a))),e,!1),ai("",{spacingAfter:80,line:e.lineTwips})),d&&"off"!==d.mode&&(d.ops.headerlessTableRendered+=1,d.notices.push({code:"headerless-table",message:`docx 阶段按数据行渲染无表头表格 ${t.rows.length} 行 \xd7 ${t.columns} 列(首行不冒充表头):该表在源文档缺表头,需回源补齐`})),p=!0,a=t.next;continue}if(O(b)){a+=1;continue}let u=/^(#{1,4})\s+(.+)$/u.exec(b);if(u){let b=ad(u[2]);i.push((q=u[1].length,2===q?ai(b,{styleId:"Heading1",outlineLevel:0,bold:!0,size:e.h1HalfPoints,line:e.lineTwips,fontEastAsia:e.fontHeading,fontAscii:e.fontHeadingAscii,align:"center",spacingBefore:260,spacingAfter:180,keepNext:!0}):3===q?ai(b,{styleId:"Heading2",outlineLevel:1,bold:!0,size:e.h2HalfPoints,line:e.lineTwips,fontEastAsia:e.fontHeading,fontAscii:e.fontHeadingAscii,align:"left",spacingBefore:180,spacingAfter:100,keepNext:!0}):ai(b,{styleId:"Heading3",outlineLevel:2,bold:!0,size:e.h3HalfPoints,line:e.lineTwips,fontEastAsia:e.fontHeading,fontAscii:e.fontHeadingAscii,align:"left",spacingBefore:120,spacingAfter:80,keepNext:!0}))),"目录"===b&&(k=!0,n=i.length),p=!1,a+=1;continue}let v=ad(b),w=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:ad(b[3])}:null}(b),x=function(a){let b=/^\s*[-*+]\s+(.+)$/u.exec(a);return b?ad(b[1]):null}(b);if(!k&&w){let b=0===w.level?720:1===w.level?1080:1440,c=0===w.level?360:1===w.level?420:480;i.push(ai(`${w.marker} ${w.text}`,{styleId:"ListParagraph",size:g,line:e.lineTwips,fontEastAsia:e.fontBody,fontAscii:e.fontBodyAscii,indentLeft:b,hanging:c,spacingAfter:60})),a+=1;continue}if(!k&&x){i.push(ai(`• ${x}`,{styleId:"ListParagraph",size:g,line:e.lineTwips,fontEastAsia:e.fontBody,fontAscii:e.fontBodyAscii,indentLeft:720,hanging:360,spacingAfter:60})),a+=1;continue}let y=h.slice(a+1).find(a=>""!==a.trim());if(!k&&an(b)&&(p||y&&P(y.trim()))){i.push(ai(v,{bold:!0,size:e.bodyHalfPoints,line:e.lineTwips,fontEastAsia:e.fontHeading,fontAscii:e.fontHeadingAscii,align:"center",firstLine:0,spacingBefore:120,spacingAfter:60,keepNext:!0})),d&&"off"!==d.mode&&(d.ops.captionStyled+=1),p=!1,a+=1;continue}let z=/^\*\*[^*]+\*\*\s*$/u.test(b)&&v.length<=40,A=/^\*\*[^*]+\*\*\s*[::]?\s*$/u.test(b)||/^([一二三四五六七八九十]+)/u.test(v)||/^[一二三四五六七八九十]+、/u.test(v);i.push(k?function(a,b){let c=/^\s*\d+\.\d+\s+\S/u.test(a);return ai(ad(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,e):ai(v,{bold:A||z,size:z?Math.max(e.bodyHalfPoints+2,30):g,line:e.lineTwips,fontEastAsia:e.fontBody,fontAscii:e.fontBodyAscii,align:z?"left":"both",firstLine:A||z?0:560,spacingBefore:z?120:80*!!A,spacingAfter:z?60:void 0})),p=!1,a+=1}o();let r=i.join("");if(d&&"off"!==d.mode){let b=aF(a,r);b.conserved||d.blockers.push({code:"content-not-conserved",line:0,message:`docx 渲染阶段存在未声明的正文改动(产物文本去标记比对):第 ${b.position} 字符附近分歧(入口「${b.sourceContext}」→ 产物「${b.productContext}」)`})}return r}async function ar(a,b,c,d=[]){a.folder("word")?.file("styles.xml",function(a){let b=ah(a),c=`w:ascii="${G(b.fontBodyAscii)}" w:hAnsi="${G(b.fontBodyAscii)}" w:eastAsia="${G(b.fontBody)}" w:cs="${G(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,24),0,260,180,"center")}${d("Heading2","heading 2",Math.max(b.h2HalfPoints,24),1,180,100)}${d("Heading3","heading 3",Math.max(b.h3HalfPoints,22),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("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=ah(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="${G(b.fontBody)}"><w:charset w:val="86"/><w:family w:val="roman"/></w:font><w:font w:name="${G(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>${G(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"],["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/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 as(a,b,c,d,e=process.cwd(),f){let g=function(a,b){let c=String(a||"").trim();if(!c)return{};let d=(0,A.n7)(c,at(b),{mustExist:!0,requireFile:!0});return d.ok?".docx"!==l.extname(d.absolute).toLowerCase()?{rejected:{path:c,reason:"模板必须是 .docx 文件"}}:{resolved:d.absolute}:{rejected:{path:c,reason:(0,A.vZ)(d.reason)}}}(d,e);if(g.rejected){let d=`DOCX 模板路径被拒绝(${g.rejected.reason}):${g.rejected.path}。已回退标准生成路径(正文正确、未套模板样式)。允许的来源:本项目目录 / 生成资产目录 / 导出模板目录。`;return console.error(`[export] ${d}`),au(a,b,c,void 0,e,f,d)}return au(a,b,c,g.resolved,e,f)}function at(a){return[l.resolve(a),l.resolve((0,q.Gl)(a),"assets"),l.resolve(k.tmpdir()),l.join(k.homedir(),".customize-agent","export-templates")]}async function au(a,b,c,d,e,f,g){let h,i={projectRoot:e,images:[]},k=await aj(b,e,f);k.size>0&&(i.rasterizedSvg=k);let l=aq(b,c,i,f);if(d&&j.existsSync(d)){let b=await p().loadAsync(j.readFileSync(d)),e=b.file("word/document.xml");if(e){let f=await e.async("string");if(/\{\{content\}\}/u.test(f))return b.file("word/document.xml",f.replace(/\{\{title\}\}/gu,G(a)).replace(/\{\{content\}\}/gu,l)),await ar(b,a,c,i.images),{buffer:await b.generateAsync({type:"nodebuffer"})};console.error(`[export] 模板缺少 {{content}} 占位符,已回退标准生成路径(正文正确、未套模板样式):${d}`),h=`模板缺少 {{content}} 占位符,已回退标准生成路径(未套模板样式)`}}let m=c?.page||{},n=new(p());return n.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>${l}<w:sectPr><w:pgSz w:w="11906" w:h="16838"/><w:pgMar w:top="${ag(m.marginTop,2.5)}" w:right="${ag(m.marginRight,2)}" w:bottom="${ag(m.marginBottom,2)}" w:left="${ag(m.marginLeft,2)}"${m.gutter?` w:gutter="${ag(m.gutter,0)}"`:""}/></w:sectPr></w:body></w:document>`),await ar(n,a,c,i.images),{buffer:await n.generateAsync({type:"nodebuffer"}),templateWarning:h}}function av(a,b){return a&&/^[\w\s\u4e00-\u9fa5,"'().-]+$/u.test(a)?a:b}function aw(a){let b=a?.page||{},c=a?.typography||{},d=av(b.paper,"A4"),e=av(b.marginTop,"24mm"),f=av(b.marginRight,"18mm"),g=av(b.marginBottom,"22mm"),h=av(b.marginLeft,"18mm"),i=c.fontFamily||"SimSun, 宋体, serif",j=c.bodyFont||c.fontFamily||"SimSun, 宋体, serif",k=c.headingFont||c.fontFamily||"SimSun, 宋体, serif",l=c.lineHeight||"18pt";return{paper:d,marginTop:e,marginRight:f,marginBottom:g,marginLeft:h,fontFamily:i,bodyFontFamily:j,headingFontFamily:k,lineHeight:l,titleSize:c.titleSize||"22pt",bodySize:c.bodySize||"12pt"}}function ax(a){return a.replace(/(<h2[^>]*>\s*目录\s*<\/h2>)([\s\S]*?)(<div class="page-break"><\/div>|<h2[^>]*>)/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 ay(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 az(a,b){let c=ay(a),d=b?ay(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:ad(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=>ad(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=>ad(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(!P(d))continue;let e=c[a+1]?.trim()===""?a+2:a+1;if(e<c.length&&O(c[e]||"")){let f=[],g=e+1;for(;g<c.length&&P(c[g]||"");)f.push(c[g]||""),g+=1;0===f.length&&b.push(`第 ${a+1} 行表格只有表头,没有数据行`);let h=[d,...f].map(a=>Q(a).length);Math.max(...h)-Math.min(...h)>2&&b.push(`第 ${a+1} 行附近表格列数差异较大,导出版式可能异常`),a=g-1;continue}a+1<c.length&&P(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 aA(a){return N(a).replace(/\r?\n/gu,"\n").split("\n").filter(a=>!O(a.trim())&&!/^\s*```/u.test(a)).join("\n").replace(/m\s*<sup>\s*2\s*<\/sup>/giu,"m2").replace(/m\s*<sup>\s*3\s*<\/sup>/giu,"m3").replace(/m\s*\^\s*2/giu,"m2").replace(/m\s*\^\s*3/giu,"m3").replace(/㎡/gu,"m2").replace(/㎥/gu,"m3").replace(/m\s*²/giu,"m2").replace(/m\s*³/giu,"m3").replace(/m\s*2(?!\.\d)/giu,"m2").replace(/m\s*3(?!\.\d)/giu,"m3").replace(/(?<=\d)\s*[xX×*xX*]\s*(?=\d)/gu,"\xd7").replace(/[`*_~|#\\-]/gu,"").replace(/<[^>]*>/gu,"").replace(/\s+/gu,"")}function aB(a,b){if(a===b)return{conserved:!0};let c=0,d=Math.min(a.length,b.length);for(;c<d&&a[c]===b[c];)c+=1;return{conserved:!1,position:c,sourceContext:a.slice(Math.max(0,c-20),c+20),productContext:b.slice(Math.max(0,c-20),c+20)}}function aC(a,b){return aB(aA(a),aA(b))}function aD(a){return[...a.matchAll(/<w:t(?:\s[^>]*)?>([\s\S]*?)<\/w:t>/gu)].map(a=>(a[1]||"").replace(/&lt;/gu,"<").replace(/&gt;/gu,">").replace(/&quot;/gu,'"').replace(/&amp;/gu,"&")).join("\n")}function aE(a){return aA(a.replace(/!\[[^\]]*\]\([^)]*\)/gu,"").replace(/\[([^\]]*)\]\([^)]*\)/gu,"$1").replace(/\[\[PAGE_BREAK\]\]/gu,"").replace(/[•·]/gu,"").replace(RegExp(ao,"gu"),""))}function aF(a,b){return aB(aE(a),aE(aD(b)))}function aG(a){if(!a)return{text:a,removed:0,samples:[]};let b=[],c=[],d=0,e=[],f=()=>{if(0===e.length)return;let a=e.join("\n"),f=(0,w.vG)(a),g=(0,w.eI)(f.text),h=(0,w.W)(g.text);for(let a of(d+=f.removed+g.removed,g.text.split("\n")))(0,w.Nf)(a)&&(d+=1,c.length<6&&c.push(a.trim().slice(0,40)));let i=new Set(h.split("\n"));for(let b of a.split("\n"))!b.trim()||i.has(b)||c.length>=6||c.push(b.trim().slice(0,40));b.push(...h.split("\n")),e=[]};for(let c of a.replace(/\r?\n/gu,"\n").split("\n")){if(!c.trim()||_.test(c.trim())){f(),b.push(c);continue}e.push(c)}return f(),{text:b.join("\n"),removed:d,samples:c}}function aH(a){let b=a.replace(/\r?\n/gu,"\n").split("\n").map(a=>a.trim());return{headings:b.filter(a=>/^#{1,6}\s/u.test(a)),tableRows:b.filter(a=>a.startsWith("|"))}}function aI(a,b){let c=aG(a);if(c.text===a)return a;let d=aH(a),e=aH(c.text);if(JSON.stringify(d)!==JSON.stringify(e))return b?.blockers.push({code:"declared-rewrite-overreach",line:0,message:"导出链声明剥离改动越界(标题行/表格行被改写或删除):结构行是信息载体,剥离只允许作用于散文区,已回退原文"}),a;if(b&&"off"!==b.mode){let d=a=>aA(a).replace(/[,,、;;::]/gu,"");d(a)!==d(c.text)&&0===c.removed?b.blockers.push({code:"declared-rewrite-unregistered",line:0,message:"导出链声明剥离存在未登记的内容改动(内容有改动但计数为零):剥离器与实际改写不一致,需复核判据"}):c.removed>0&&(b.ops.declaredStrip+=c.removed,b.notices.push({code:"declared-rewrite",message:`导出链声明剥离 ${c.removed} 处(素材残留行/澄清变更叙述/图纸图集指向语;判据与生成链 materialResidue 同名函数同源,结构行逐字保留)${c.samples.length>0?`,样本:${c.samples.join(";")}`:""}`}))}return c.text}let aJ=/^##\s+目录\s*$/mu;function aK(a,b){let c=0,d=Math.min(a.length,b.length);for(;c<d&&a[c]===b[c];)c+=1;let e=a.length,f=b.length;for(;e>c&&f>c&&a[e-1]===b[f-1];)e-=1,f-=1;return{before:a.slice(c,e),after:b.slice(c,f)}}function aL(a,b){if(!aJ.test(a))return a;let c=(0,x._D)(a);if(c.markdown===a||aA(c.markdown)===aA(a))return a;let d=aK(a,c.markdown);return/^#{2,4}\s/mu.test(d.after)||/^\s*\|/mu.test(d.after)?(b?.blockers.push({code:"declared-rewrite-overreach",line:0,message:"目录重建改动跨度越界(改动区间含正文章/节标题行或表格行),已回退原文目录:需回源核对目录与正文结构"}),a):(b&&"off"!==b.mode&&(b.ops.tocRebuilt+=1,b.notices.push({code:"toc-reconcile",message:`静态目录与正文结构不一致,已按生成链 fixTocFromBody 同源口径重建(目录条目取正文章标题与小节编号原文)${c.details.length>0?`:${c.details.join(";")}`:""}`}),(0,x._D)(c.markdown).markdown!==c.markdown&&b.notices.push({code:"toc-reconcile",message:"目录重建结果未收敛(二次重建仍有差异):需回源核对目录与正文结构"})),c.markdown)}function aM(a,b){let c=b?.mode??C(),d="off"===c?a:aI(a,b),e=ac((0,v.kT)(d),b).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"),f="off"===c?e:aL(e,b);return{declared:d,normalized:e,product:f}}function aN(a,b){let c=D(),d=aM(a,c),e=aM(b||"").product;if("off"!==c.mode){let a=aC(d.declared,d.normalized);a.conserved||c.blockers.push({code:"content-not-conserved",line:0,message:`导出链存在未声明的内容改写(去标记比对):归一文本第 ${a.position} 字符附近分歧(源「${a.sourceContext}」→ 产物「${a.productContext}」)`})}return{markdown:d.product,baselineMarkdown:e,issues:az(d.product,e),audit:c}}async function aO(a,b,d,e,f=!1){let{marked:g}=await Promise.resolve().then(c.bind(c,83142));return M(function(a,b,c,d=!1){let e=ah(c),f=ax(b);return`<!doctype html><html lang="zh-CN"><head><meta charset="utf-8"><title>${G(a)}</title><style>${function(a,b=!1){return`
3
3
  @page{size:${a.paper};margin:${a.marginTop} ${a.marginRight} ${a.marginBottom} ${a.marginLeft}}
4
4
  *{box-sizing:border-box}
5
5
  html,body{margin:0;padding:0;background:#fff}
@@ -23,4 +23,4 @@ th,td{font-family:${a.bodyFontFamily};font-size:${Math.max(a.bodyPt-1,9)}pt;line
23
23
  th{background:${b?"#fff":"#f3f4f6"};font-weight:700;text-align:center}
24
24
  pre{white-space:pre-wrap;font-family:${a.bodyFontFamily};font-size:${a.bodyCss};line-height:${a.lineCss};page-break-inside:avoid;break-inside:avoid}.page-break{page-break-after:always;break-after:page;height:0}
25
25
  @media print{body{-webkit-print-color-adjust:exact;print-color-adjust:exact}a{text-decoration:none;color:#111827}}
26
- `}(e,d)}</style></head><body>${f}</body></html>`}(a,g.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,f),e)}function aK(){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 aL(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=ar(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 F(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 aM(a,b,d){let{chromium:e}=await Promise.resolve().then(c.bind(c,83237)),f=[{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"]}},...aK().map(a=>({label:a,options:{executablePath:a,headless:!0,args:["--no-sandbox","--disable-setuid-sandbox"]}}))],g=[];for(let c of f)try{let f=await e.launch(c.options);try{let c=await f.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 e=af(b),g=d?.headersFooters==="forbidden"?{displayHeaderFooter:!1}:{displayHeaderFooter:!0,headerTemplate:"<div></div>",footerTemplate:`<div style="font-family:${e.fontFamily};font-size:10.5pt;line-height:12pt;width:100%;text-align:center;color:#666;">第 <span class="pageNumber"></span> 页 / 共 <span class="totalPages"></span> 页</div>`},h=await c.pdf({format:e.paper,printBackground:!0,preferCSSPageSize:!0,margin:{top:e.marginTop,right:e.marginRight,bottom:e.marginBottom,left:e.marginLeft},...g});return Buffer.from(h)}finally{await f.close()}}catch(a){g.push(`${c.label}: ${a instanceof Error?a.message:String(a)}`)}for(let c of aK())try{return await aL(a,c,b)}catch(a){g.push(`browser-command ${c}: ${a instanceof Error?a.message:String(a)}`)}throw Error(g.join("\n"))}function aN(a,b,c,d,e=[]){if(a)try{let f=a.draft,g=f?.reviewMetadata?.diagnostics?.quality,h=a.completedAt?Math.max(0,a.completedAt-a.createdAt):Math.max(0,Date.now()-a.createdAt),i=e.length>0?(0,s.aF)(e,f?.chapters):void 0,j={format:b,exportedAt:Date.now(),durationMs:h,ruleSummary:(f?.promptRules?.executionSummary||[]).slice(0,12),repairedCount:g?.repairedCount,blockingCount:g?.blockingCount,gatePassed:f?.exportGate?.passed,healthAlerts:f?.reviewMetadata?.telemetry?.healthAlerts,repairHeat:f?.reviewMetadata?.telemetry?.repairHeat,...d?{renderAudit:d}:{},...i?{gateIssueCount:e.length,gateChecklist:i}:{}},k=[...a.exportReports||[],j].slice(-20);(0,q.a6)(a.id,{exportReports:k},c)}catch{}}async function aO(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.getGeneratedDocument)(c.documentId,d):null;if(c.documentId&&!e)return b.status(404).json({error:"Document not found"});let f=e?.draft?.bidComposition,g=c.title||e?.title||"document",h=e?.draft?.exportSettings,i=e?.editedMarkdown||e?.markdown||e?.draft?.markdown||"",j=aI(c.useClientMarkdown&&"string"==typeof c.markdown?c.markdown:i||c.markdown||"",e?.draft?.markdown||e?.markdown||""),{markdown:k,audit:l}=j,m=c.format;if(!m||!["markdown","html","pdf","docx"].includes(m))return b.status(400).json({error:"INVALID_EXPORT_FORMAT",message:"请选择有效的导出格式。"});j.issues.length>0&&b.setHeader("X-Export-Content-Issues",encodeURIComponent(JSON.stringify(j.issues.slice(0,20))));let n="off"===l.mode?void 0:C(l);if(n&&b.setHeader("X-Export-Render-Audit",encodeURIComponent(JSON.stringify(n))),"enforce"===l.mode&&l.blockers.length>0)return b.status(422).json({error:"EXPORT_SOURCE_STRUCTURAL_DEFECT",message:`导出源存在结构性缺陷,已按纯渲染模式阻断(不再补造表头):${l.blockers.slice(0,3).map(a=>a.message).join(";")}`,issues:l.blockers.slice(0,20)});let o=e?.draft?.exportGate||c.exportGate,p=(o?.blockingIssues||[]).map(a=>({level:"error",...a})),s=o?.passed===!1&&0===p.length?[{level:"error",message:"导出门禁未通过:存在未完成的检查项"}]:[],u=[...p,...s],v=u.length>0;if(v&&!c.allowNonDeliverable)return b.status(422).json({error:"EXPORT_GATE_BLOCKED",message:`导出门禁未通过(${u.length} 项阻断),文档未达交付标准,已阻止导出。请补齐后重新生成;如确需留档,可选择「仍要导出(非交付物)」——该产物文件名将强制标注「非交付物」,不得作为正式成果提交。`,issues:u.slice(0,20)});b.setHeader("X-Export-Gate-Passed",v?"false":"true"),b.setHeader("X-Export-Not-Deliverable",v?"true":"false"),v&&b.setHeader("X-Export-Gate-Issues",encodeURIComponent(JSON.stringify(u.map(a=>a.message).slice(0,20))));let w=v?function(a){let b=a.lastIndexOf("."),c=b>0?a.slice(0,b):a;return c.includes(t)?a:b>0?`${c}${t}${a.slice(b)}`:`${c}${t}`}(D(g)):D(g);if("markdown"===m)return aN(e,m,d,n,u),b.setHeader("Content-Type","text/markdown; charset=utf-8"),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${w}.md`)}`),b.status(200).send(k);if("docx"===m){let a=l.blockers.length,f=await ap(g,k,h,c.wordTemplatePath,d,l),i=f.buffer;f.templateWarning&&(b.setHeader("X-Export-Template-Warning",encodeURIComponent(f.templateWarning)),console.error(`[export] ${f.templateWarning}`));let j="off"===l.mode?void 0:C(l);if(j&&b.setHeader("X-Export-Render-Audit",encodeURIComponent(JSON.stringify(j))),"enforce"===l.mode&&l.blockers.length>a){let c=l.blockers.slice(a);return b.status(422).json({error:"EXPORT_RENDER_NOT_PURE",message:`docx 渲染阶段存在未声明的正文改动,已按纯渲染模式阻断:${c.slice(0,3).map(a=>a.message).join(";")}`,issues:c.slice(0,20)})}return aN(e,m,d,j||n,u),b.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document"),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${w}.docx`)}`),b.status(200).send(i)}let y=await aJ(g,k,h,d,f?.formatRules.monoColor===!0);if("html"===m)return aN(e,m,d,n,u),b.setHeader("Content-Type","text/html; charset=utf-8"),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${w}.html`)}`),b.status(200).send(y);try{let a=await aM(y,h,f?.formatRules),c=function(a){let b=a.toString("latin1").match(/\/Type\s*\/Page\b/gu);return b?.length||void 0}(a),g=f?.formatRules.pageLimit;return g&&c&&c>g&&b.setHeader("X-Export-Page-Limit",encodeURIComponent(`超出招标规定总页数上限:当前 ${c} 页 / 上限 ${g} 页`)),aN(e,m,d,n,u),b.setHeader("Content-Type","application/pdf"),c&&b.setHeader("X-PDF-Page-Count",String(c)),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${w}.pdf`)}`),b.status(200).send(a)}catch(c){return(0,x.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 aP={inlineLocalImages:K,resolveLocalImagePath:J,normalizeExportUnits:aa,normalizeLooseMarkdownTables:Y,normalizeParagraphs:$,createExportRenderAudit:B,exportPureRenderMode:A,exportRenderAuditReport:C,canonicalExportText:av,exportConservationDiff:ax,diffCanonicalText:aw,docxVisibleText:ay,canonicalDocxText:az,docxStageConservationDiff:aA,prepareExportMarkdown:aI,stripInlineMarkdown:ab,enhanceTocHtml:as,buildExportHtml:aJ,buildDocx:ap,markdownToDocxXml:an,validateExportMarkdown:au,stripDeclaredNonDeliverable:aB,applyDeclaredStrips:aD,exportStructureFingerprint:aC,reconcileTocFromBody:aG,exportPipelineStages:aH,changedSpan:aF,isFabricatedTableSeparator:U,fabricatedTableSeparatorRow:T,looksLikeHeaderRow:ah,isTableCaptionLine:ak,DOCX_TOC_FIELD_PLACEHOLDER:al},aQ=(0,y.j)("api/documents/export",aO);var aR=c(68970),aS=c(50296);let aT=(0,h.M)(d,"default"),aU=(0,h.M)(d,"config"),aV=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 aW(a,b,c){let d=await aV.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,aR.getTracer)(),e=d.getActiveScopeSpan(),j=aV.instrumentationOnRequestError.bind(aV),k=async e=>aV.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:aV.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")!==aS.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(aS.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:aR.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(aV.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,5840,4435,208],()=>b(b.s=97614));module.exports=c})();
26
+ `}(e,d)}</style></head><body>${f}</body></html>`}(a,g.parse(b,{async:!1,gfm:!0,breaks:!0}).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,f),e)}function aP(){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 aQ(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=aw(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 H(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 aR(a,b,d){let{chromium:e}=await Promise.resolve().then(c.bind(c,83237)),f=[{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"]}},...aP().map(a=>({label:a,options:{executablePath:a,headless:!0,args:["--no-sandbox","--disable-setuid-sandbox"]}}))],g=[];for(let c of f)try{let f=await e.launch(c.options);try{let c=await f.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 e=ah(b),g=d?.headersFooters==="forbidden"?{displayHeaderFooter:!1}:{displayHeaderFooter:!0,headerTemplate:"<div></div>",footerTemplate:`<div style="font-family:${e.fontFamily};font-size:10.5pt;line-height:12pt;width:100%;text-align:center;color:#666;">第 <span class="pageNumber"></span> 页 / 共 <span class="totalPages"></span> 页</div>`},h=await c.pdf({format:e.paper,printBackground:!0,preferCSSPageSize:!0,margin:{top:e.marginTop,right:e.marginRight,bottom:e.marginBottom,left:e.marginLeft},...g});return Buffer.from(h)}finally{await f.close()}}catch(a){g.push(`${c.label}: ${a instanceof Error?a.message:String(a)}`)}for(let c of aP())try{return await aQ(a,c,b)}catch(a){g.push(`browser-command ${c}: ${a instanceof Error?a.message:String(a)}`)}throw Error(g.join("\n"))}function aS(a,b,c,d,e=[]){if(a)try{let f=a.draft,g=f?.reviewMetadata?.diagnostics?.quality,h=a.completedAt?Math.max(0,a.completedAt-a.createdAt):Math.max(0,Date.now()-a.createdAt),i=e.length>0?(0,t.aF)(e,f?.chapters):void 0,j={format:b,exportedAt:Date.now(),durationMs:h,ruleSummary:(f?.promptRules?.executionSummary||[]).slice(0,12),repairedCount:g?.repairedCount,blockingCount:g?.blockingCount,gatePassed:f?.exportGate?.passed,healthAlerts:f?.reviewMetadata?.telemetry?.healthAlerts,repairHeat:f?.reviewMetadata?.telemetry?.repairHeat,...d?{renderAudit:d}:{},...i?{gateIssueCount:e.length,gateChecklist:i}:{}},k=[...a.exportReports||[],j].slice(-20);(0,q.a6)(a.id,{exportReports:k},c)}catch{}}async function aT(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.getGeneratedDocument)(c.documentId,d):null;if(c.documentId&&!e)return b.status(404).json({error:"Document not found"});let f=e?.draft?.bidComposition,g=c.title||e?.title||"document",h=(0,s.b2)(f?.formatRules),i=e?.editedMarkdown||e?.markdown||e?.draft?.markdown||"",j=aN(c.useClientMarkdown&&"string"==typeof c.markdown?c.markdown:i||c.markdown||"",e?.draft?.markdown||e?.markdown||""),{markdown:k,audit:l}=j,m=c.format;if(!m||!["markdown","html","pdf","docx"].includes(m))return b.status(400).json({error:"INVALID_EXPORT_FORMAT",message:"请选择有效的导出格式。"});j.issues.length>0&&b.setHeader("X-Export-Content-Issues",encodeURIComponent(JSON.stringify(j.issues.slice(0,20))));let n="off"===l.mode?void 0:E(l);if(n&&b.setHeader("X-Export-Render-Audit",encodeURIComponent(JSON.stringify(n))),"enforce"===l.mode&&l.blockers.length>0)return b.status(422).json({error:"EXPORT_SOURCE_STRUCTURAL_DEFECT",message:`导出源存在结构性缺陷,已按纯渲染模式阻断(不再补造表头):${l.blockers.slice(0,3).map(a=>a.message).join(";")}`,issues:l.blockers.slice(0,20)});let o=e?.draft?.exportGate||c.exportGate,p=(o?.blockingIssues||[]).map(a=>({level:"error",...a})),t=o?.passed===!1&&0===p.length?[{level:"error",message:"导出门禁未通过:存在未完成的检查项"}]:[],v=[...p,...t],w=v.length>0;if(w&&!c.allowNonDeliverable)return b.status(422).json({error:"EXPORT_GATE_BLOCKED",message:`导出门禁未通过(${v.length} 项阻断),文档未达交付标准,已阻止导出。请补齐后重新生成;如确需留档,可选择「仍要导出(非交付物)」——该产物文件名将强制标注「非交付物」,不得作为正式成果提交。`,issues:v.slice(0,20)});b.setHeader("X-Export-Gate-Passed",w?"false":"true"),b.setHeader("X-Export-Not-Deliverable",w?"true":"false"),w&&b.setHeader("X-Export-Gate-Issues",encodeURIComponent(JSON.stringify(v.map(a=>a.message).slice(0,20))));let x=w?function(a){let b=a.lastIndexOf("."),c=b>0?a.slice(0,b):a;return c.includes(u)?a:b>0?`${c}${u}${a.slice(b)}`:`${c}${u}`}(F(g)):F(g);if("markdown"===m)return aS(e,m,d,n,v),b.setHeader("Content-Type","text/markdown; charset=utf-8"),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${x}.md`)}`),b.status(200).send(k);if("docx"===m){let a=l.blockers.length,f=await as(g,k,h,c.wordTemplatePath,d,l),i=f.buffer;f.templateWarning&&(b.setHeader("X-Export-Template-Warning",encodeURIComponent(f.templateWarning)),console.error(`[export] ${f.templateWarning}`));let j="off"===l.mode?void 0:E(l);if(j&&b.setHeader("X-Export-Render-Audit",encodeURIComponent(JSON.stringify(j))),"enforce"===l.mode&&l.blockers.length>a){let c=l.blockers.slice(a);return b.status(422).json({error:"EXPORT_RENDER_NOT_PURE",message:`docx 渲染阶段存在未声明的正文改动,已按纯渲染模式阻断:${c.slice(0,3).map(a=>a.message).join(";")}`,issues:c.slice(0,20)})}return aS(e,m,d,j||n,v),b.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document"),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${x}.docx`)}`),b.status(200).send(i)}let z=await aO(g,k,h,d,f?.formatRules.monoColor===!0);if("html"===m)return aS(e,m,d,n,v),b.setHeader("Content-Type","text/html; charset=utf-8"),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${x}.html`)}`),b.status(200).send(z);try{let a=await aR(z,h,f?.formatRules),c=function(a){let b=a.toString("latin1").match(/\/Type\s*\/Page\b/gu);return b?.length||void 0}(a),g=f?.formatRules.pageLimit;return g&&c&&c>g&&b.setHeader("X-Export-Page-Limit",encodeURIComponent(`超出招标规定总页数上限:当前 ${c} 页 / 上限 ${g} 页`)),aS(e,m,d,n,v),b.setHeader("Content-Type","application/pdf"),c&&b.setHeader("X-PDF-Page-Count",String(c)),b.setHeader("Content-Disposition",`attachment; filename*=UTF-8''${encodeURIComponent(`${x}.pdf`)}`),b.status(200).send(a)}catch(c){return(0,y.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 aU={inlineLocalImages:M,resolveLocalImagePath:L,rasterizeMarkdownSvgFigures:aj,buildDocxInternal:au,normalizeExportUnits:ac,normalizeLooseMarkdownTables:$,normalizeParagraphs:aa,createExportRenderAudit:D,exportPureRenderMode:C,exportRenderAuditReport:E,canonicalExportText:aA,exportConservationDiff:aC,diffCanonicalText:aB,docxVisibleText:aD,canonicalDocxText:aE,docxStageConservationDiff:aF,prepareExportMarkdown:aN,stripInlineMarkdown:ad,enhanceTocHtml:ax,buildExportHtml:aO,resolveExportStyle:ah,buildDocx:as,markdownToDocxXml:aq,validateExportMarkdown:az,stripDeclaredNonDeliverable:aG,applyDeclaredStrips:aI,exportStructureFingerprint:aH,reconcileTocFromBody:aL,exportPipelineStages:aM,changedSpan:aK,isFabricatedTableSeparator:W,fabricatedTableSeparatorRow:V,looksLikeHeaderRow:ak,isTableCaptionLine:an,DOCX_TOC_FIELD_PLACEHOLDER:ao},aV=(0,z.j)("api/documents/export",aT);var aW=c(68970),aX=c(50296);let aY=(0,h.M)(d,"default"),aZ=(0,h.M)(d,"config"),a$=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 a_(a,b,c){let d=await a$.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,aW.getTracer)(),e=d.getActiveScopeSpan(),j=a$.instrumentationOnRequestError.bind(a$),k=async e=>a$.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:a$.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")!==aX.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(aX.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:aW.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(a$.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,299,1001,2434,5547],()=>b(b.s=97614));module.exports=c})();