@customize-agent/server 4.23.6 → 4.23.8

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 (41) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +8 -8
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/server/chunks/208.js +2 -1
  5. package/.next/server/chunks/2581.js +48 -48
  6. package/.next/server/chunks/8204.js +1 -1
  7. package/.next/server/middleware-build-manifest.js +1 -1
  8. package/.next/server/pages/404.html +1 -1
  9. package/.next/server/pages/500.html +1 -1
  10. package/.next/server/pages/asset-library.html +1 -1
  11. package/.next/server/pages/document-roles.html +1 -1
  12. package/.next/server/pages/documents.html +1 -1
  13. package/.next/server/pages/guide.html +1 -1
  14. package/.next/server/pages/index.html +1 -1
  15. package/.next/server/pages/knowledge/file-detail.html +1 -1
  16. package/.next/server/pages/knowledge/files.html +1 -1
  17. package/.next/server/pages/knowledge/manage.html +1 -1
  18. package/.next/server/pages/knowledge.html +1 -1
  19. package/.next/server/pages/models.html +1 -1
  20. package/.next/server/pages/overview.html +1 -1
  21. package/.next/server/pages/prompt.html +1 -1
  22. package/.next/server/pages/settings.html +1 -1
  23. package/.next/server/pages/system/logs.html +1 -1
  24. package/.next/server/pages/template-references.html +1 -1
  25. package/.next/server/pages-manifest.json +24 -24
  26. package/.next/static/{RTtapsmJfcSrITAPBtZln → KKJxA1ZBZnLJYHD67gO-v}/_buildManifest.js +1 -1
  27. package/.next/static/chunks/pages/{_app-24bef62eef01afe6.js → _app-e452fe4f864ec1de.js} +1 -1
  28. package/.next/static/chunks/pages/documents-489eb42fe7fa85b1.js +1 -0
  29. package/.next/static/chunks/pages/knowledge/file-detail-67235dd65f708569.js +1 -0
  30. package/.next/static/chunks/pages/knowledge/files-540ef329ffa92174.js +1 -0
  31. package/.next/static/chunks/pages/knowledge/manage-70718ded7ea5840a.js +1 -0
  32. package/.next/static/chunks/pages/prompt-8bd884495c67ce6f.js +1 -0
  33. package/messages/en-US.json +26 -1
  34. package/messages/zh-CN.json +26 -1
  35. package/package.json +1 -1
  36. package/.next/static/chunks/pages/documents-96aba8e9ca0fa12c.js +0 -1
  37. package/.next/static/chunks/pages/knowledge/file-detail-3a04722f7720abf5.js +0 -1
  38. package/.next/static/chunks/pages/knowledge/files-33782c4b41f33750.js +0 -1
  39. package/.next/static/chunks/pages/knowledge/manage-5b1b4d3804752f8b.js +0 -1
  40. package/.next/static/chunks/pages/prompt-edc2dfea09aaedc1.js +0 -1
  41. /package/.next/static/{RTtapsmJfcSrITAPBtZln → KKJxA1ZBZnLJYHD67gO-v}/_ssgManifest.js +0 -0
package/.next/BUILD_ID CHANGED
@@ -1 +1 @@
1
- RTtapsmJfcSrITAPBtZln
1
+ KKJxA1ZBZnLJYHD67gO-v
@@ -5,8 +5,8 @@
5
5
  "devFiles": [],
6
6
  "ampDevFiles": [],
7
7
  "lowPriorityFiles": [
8
- "static/RTtapsmJfcSrITAPBtZln/_buildManifest.js",
9
- "static/RTtapsmJfcSrITAPBtZln/_ssgManifest.js"
8
+ "static/KKJxA1ZBZnLJYHD67gO-v/_buildManifest.js",
9
+ "static/KKJxA1ZBZnLJYHD67gO-v/_ssgManifest.js"
10
10
  ],
11
11
  "rootMainFiles": [],
12
12
  "rootMainFilesTree": {},
@@ -24,7 +24,7 @@
24
24
  "static/chunks/framework-161be364fd69a7ce.js",
25
25
  "static/chunks/main-91fb767ebd74c9c1.js",
26
26
  "static/css/5652f24cec9ea7a3.css",
27
- "static/chunks/pages/_app-24bef62eef01afe6.js"
27
+ "static/chunks/pages/_app-e452fe4f864ec1de.js"
28
28
  ],
29
29
  "/_error": [
30
30
  "static/chunks/webpack-4224e970a97a4a86.js",
@@ -78,7 +78,7 @@
78
78
  "static/chunks/455-e1b41ac4946d2b6f.js",
79
79
  "static/chunks/506-93f730bc149d0dce.js",
80
80
  "static/chunks/930-0436dcaa92fb41f6.js",
81
- "static/chunks/pages/documents-96aba8e9ca0fa12c.js"
81
+ "static/chunks/pages/documents-489eb42fe7fa85b1.js"
82
82
  ],
83
83
  "/guide": [
84
84
  "static/chunks/webpack-4224e970a97a4a86.js",
@@ -112,7 +112,7 @@
112
112
  "static/chunks/506-93f730bc149d0dce.js",
113
113
  "static/chunks/850-0f48354694fc6b3e.js",
114
114
  "static/css/ad5a592c79d1448b.css",
115
- "static/chunks/pages/knowledge/file-detail-3a04722f7720abf5.js"
115
+ "static/chunks/pages/knowledge/file-detail-67235dd65f708569.js"
116
116
  ],
117
117
  "/knowledge/files": [
118
118
  "static/chunks/webpack-4224e970a97a4a86.js",
@@ -127,7 +127,7 @@
127
127
  "static/chunks/102-881dcc464f983c89.js",
128
128
  "static/chunks/289-fc1b25371e004552.js",
129
129
  "static/css/ad5a592c79d1448b.css",
130
- "static/chunks/pages/knowledge/files-33782c4b41f33750.js"
130
+ "static/chunks/pages/knowledge/files-540ef329ffa92174.js"
131
131
  ],
132
132
  "/knowledge/manage": [
133
133
  "static/chunks/webpack-4224e970a97a4a86.js",
@@ -139,7 +139,7 @@
139
139
  "static/chunks/787-c18af810af3433f6.js",
140
140
  "static/chunks/506-93f730bc149d0dce.js",
141
141
  "static/chunks/788-dca0d550ad6bd8b2.js",
142
- "static/chunks/pages/knowledge/manage-5b1b4d3804752f8b.js"
142
+ "static/chunks/pages/knowledge/manage-70718ded7ea5840a.js"
143
143
  ],
144
144
  "/models": [
145
145
  "static/chunks/webpack-4224e970a97a4a86.js",
@@ -171,7 +171,7 @@
171
171
  "static/chunks/44-d3545eedd5c75ef1.js",
172
172
  "static/chunks/195-2c0168eacab722d2.js",
173
173
  "static/chunks/260-580088826d643423.js",
174
- "static/chunks/pages/prompt-edc2dfea09aaedc1.js"
174
+ "static/chunks/pages/prompt-8bd884495c67ce6f.js"
175
175
  ],
176
176
  "/settings": [
177
177
  "static/chunks/webpack-4224e970a97a4a86.js",
@@ -3,9 +3,9 @@
3
3
  "routes": {},
4
4
  "dynamicRoutes": {},
5
5
  "preview": {
6
- "previewModeId": "ea7a8bf84e448f872b8e55d933debcb6",
7
- "previewModeSigningKey": "5d9c47fb0e741f6c2b763f8b8abe81bbfab53c5e69f3e7874ef810e2f7e25f61",
8
- "previewModeEncryptionKey": "952b0ece8e234b9ad0a49401fcba9f10d06bb40dc7ae6a2f3e4665441a13dbbc"
6
+ "previewModeId": "9d34f0e9c45d09befcf6d112f3c09149",
7
+ "previewModeSigningKey": "7fecf07bc381b02d3a46b727974c85007d0f52a89dd97fec195c40f5c3e6524f",
8
+ "previewModeEncryptionKey": "ecbc3620495063b741cd681e70aa8a13828084593ae5a69273bd5d697af907e4"
9
9
  },
10
10
  "notFoundRoutes": []
11
11
  }
@@ -20,7 +20,8 @@ ${c}`,{maxTokens:1200,temperature:0,disableThinkingBoost:!0});if(!d)return;retur
20
20
  ${i}`.trim()}let s=new Set(["施工准备","施工要点","质量控制","质量要求","质量保证措施","质量控制措施","质量通病防治","安全措施","安全要求","安全管理措施","安全技术交底","技术交底","注意事项","验收要求","验收标准","成品保护","环境保护","文明施工","进度控制","工期保障","材料管理","机械管理","人员管理","组织管理","应急预案","应急措施","劳动力配置","机械设备配置","施工概况","施工流程","施工方法"]),t=/^(?:\d+(?:\.\d+)*|[一二三四五六七八九十]+)[、..\s::-]/u,u=/主要分部分项工程施工方案|项目主要施工内容/u;function v(a){let b=a.split(/\r?\n/u),c=[];for(let a=0;a<b.length;a+=1)/^##\s+/u.test(b[a].trim())&&c.push(a);if(0===c.length)return a;let d=new Set;for(let a=0;a<c.length;a+=1){let e=c[a],f=c[a+1]??b.length,g=new Set,h=[],i="";for(let a=e;a<f;a+=1){let c=/^(#{3,4})\s+(.+)$/u.exec(b[a].trim());if(!c)continue;let d=c[2].trim(),e=l(d);e&&(3===c[1].length?(g.add(e),i=e):h.push({line:a,name:e,rawTitle:d,parentH3:i}))}let j=new Map;for(let a of h){let c=j.get(a.name);j.set(a.name,a.line);let e=t.test(a.rawTitle),h=u.test(a.parentH3),i=g.has(a.name)&&!e&&!h,k=s.has(a.name);if(!(i||!k&&void 0!==c))continue;let l=f;for(let c=a.line+1;c<f;c+=1)if(/^#{2,4}\s+/u.test(b[c].trim())){l=c;break}for(let b=a.line;b<l;b+=1)d.add(b)}}return 0===d.size?a:b.filter((a,b)=>!d.has(b)).join("\n")}function w(a,b,c={}){if(!c.fuzzy){let c=x(a,b,/^###\s+(?:\d+(?:\.\d+)*\s+)?/u);return c||x(a,b,/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?/u)}return function(a,b){let c=a.split("\n"),d=y(b).replace(/\s+/gu,"").toLowerCase(),g=[],h=-1,i=0,j=!1,k=a=>{if(h<0)return;let b=c.slice(h,a).join("\n").trim();b&&g.push(b),h=-1,i=0,j=!1};for(let a=0;a<c.length;a+=1){if(!/^\s*#{2,4}\s+/u.test(c[a]))continue;let e=/^\s*(#{2,4})\s+/u.exec(c[a])?.[1].length||3;if(h>=0&&(j||3===i)&&4===e)continue;k(a);let g=y(c[a]).replace(/\s+/gu,"").toLowerCase();(g===d||g.includes(d)||A(c[a],b))&&(h=a+1,i=e,j=e<=4&&f.test(c[a]))}return k(c.length),g.sort((a,b)=>(0,e.V7)(b)-(0,e.V7)(a))[0]||""}(a,b)}function x(a,b,c){let d=a.split("\n"),e=d.findIndex(a=>c.test(a.trim())&&a.includes(b));if(e<0)return"";let g=/^(#{2,6})\s+/u.exec(d[e].trim())?.[1].length||3,h=4===g&&f.test(b),i=d.length;for(let a=e+1;a<d.length;a+=1){let b=/^(#{2,6})\s+/u.exec(d[a].trim());if(b&&b[1].length<=g&&!(h&&b[1].length===g)){i=a;break}}return d.slice(e,i).join("\n")}function y(a){return a.replace(/^\s*#{2,4}\s*/u,"").replace(/^\s*(?:\d+(?:\.\d+)*|[一二三四五六七八九十]+)(?:[、..]|\s+)\s*/u,"").trim()}function z(a){return y(a).replace(/\s+/gu,"").toLowerCase().replace(/施工(?=方案|流程|方法)/gu,"").replace(/专项(?=方案)/gu,"").replace(/项目|工程|主要|重点|技术/gu,"").replace(/[、,,;;·..//]+/gu,"").replace(/与|及|和|暨/gu,"")}function A(a,b){let c=z(a),d=z(b);return!!c&&!!d&&!(c.length<4)&&!(d.length<4)&&(c===d||c.includes(d)||d.includes(c))}function B(a,b,c){let d=[...new Set(b.filter(Boolean))];if(0===d.length)return a;let e=3===c?/^\s*###\s+/u:4===c?/^\s*####\s+/u:/^\s*#{3,4}\s+/u,f=new Set;return a.split("\n").map(a=>{if(!e.test(a))return a;let b=y(a);if(!b)return a;let c=d.find(a=>!f.has(a)&&A(b,a));if(!c||c===b)return a;let g=/^(\s*#{3,4}\s+)/u.exec(a)?.[1];return g?(f.add(c),`${g}${c}`):a}).join("\n")}function C(a){return(0,d.createHash)("sha1").update(JSON.stringify(a)).digest("hex")}function D(a){if(null==a)return"";if("string"==typeof a)return a;if("number"==typeof a||"boolean"==typeof a)return String(a);try{return JSON.stringify(a)}catch{return String(a)}}function E(a){if(a?.aborted)throw Error("用户中止")}function F(a){return`【系统约束——仅指导写作,禁止写入正文,禁止复述本句】${a}`}let G=["评标纪律","投标纪律","行贿","打招呼","递条子","廉洁承诺","廉洁自律","串标","围标","弄虚作假","干扰评标","异常低价","评标基准价"];function H(a){return!!(G.some(b=>a.includes(b))||a.includes("廉洁从业"))||/纪律|廉洁/u.test(a)&&/投标|评标|行贿|串标|围标|弄虚作假/u.test(a)}function I(a){return a.filter(a=>!H(`${a.key||""} ${String(a.value)}`))}async function J(a,b,c){if(0===a.length)return[];let d=Math.max(1,Math.min(a.length,c.concurrency||Math.max(1,{total:a.length,kind:c.kind,targetWords:c.targetWords,highRisk:c.highRisk}.total))),e=Array(a.length),f=0;return await Promise.all(Array.from({length:d},async()=>{for(;f<a.length;){let c=f;f+=1,e[c]=await b(a[c],c)}})),e}class K{constructor(a){this.queue=[],this.available=Math.max(1,Math.floor(a))}async acquire(){if(this.available>0){this.available-=1;return}await new Promise(a=>{this.queue.push(a)})}release(){let a=this.queue.shift();a?a():this.available+=1}async run(a){await this.acquire();try{return await a()}finally{this.release()}}}},23500:(a,b,c)=>{c.d(b,{bj:()=>C,N6:()=>O,h0:()=>K,bV:()=>L,QJ:()=>E,jG:()=>D,dU:()=>B,Bh:()=>F,zY:()=>R,xm:()=>G,J5:()=>J,C1:()=>N});var d=c(73024),e=c(76760),f=c(48161),g=c(77598),h=c(44533),i=c(25840),j=c(8753),k=c(6444),l=c(85441),m=c(92808),n=c(56942),o=c(2773),p=c(78217),q=c(80572),r=c(5726);function s(){let a=e.join(f.homedir(),".customize-agent");return d.mkdirSync(a,{recursive:!0}),a}function t(){return e.join(s(),"document-templates.json")}function u(a){let{version:b,updatedAt:c,changeLog:d,...e}=a;return(0,g.createHash)("sha256").update(function a(b){return Array.isArray(b)?`[${b.map(a).join(",")}]`:b&&"object"==typeof b?`{${Object.keys(b).sort().map(c=>`${JSON.stringify(c)}:${a(b[c])}`).join(",")}}`:JSON.stringify(b)}(e)).digest("hex")}function v(a){return{...a,id:a.id.replace(/[^a-zA-Z0-9_-]/gu,"-").slice(0,80)||`template-${Date.now()}`,name:a.name||"未命名模板",description:a.description||"",category:a.category||"自定义",outputTitle:a.outputTitle||a.name||"文档",version:Number.isFinite(a.version)&&a.version>0?Math.floor(a.version):1,updatedAt:Number.isFinite(a.updatedAt)?a.updatedAt:Date.now(),changeLog:Array.isArray(a.changeLog)?a.changeLog.filter(a=>a&&"object"==typeof a&&Number.isFinite(a.version)&&"string"==typeof a.summary).slice(0,50):[],projectRoleConfigId:a.projectRoleConfigId||void 0,chapters:Array.isArray(a.chapters)&&a.chapters.length>0?a.chapters.map((a,b)=>({id:(a.id||`chapter-${b+1}`).replace(/[^a-zA-Z0-9_-]/gu,"-").slice(0,80),title:a.title||`第 ${b+1} 章`,purpose:a.purpose||"",queries:Array.isArray(a.queries)?a.queries.filter(Boolean):[],requiredFacts:Array.isArray(a.requiredFacts)?a.requiredFacts.filter(Boolean):[],sections:Array.isArray(a.sections)?a.sections.filter(Boolean):[],tableSections:Array.isArray(a.tableSections)?a.tableSections.filter(Boolean):[],tableRequirements:Array.isArray(a.tableRequirements)?a.tableRequirements.filter(Boolean):[],tablePlans:Array.isArray(a.tablePlans)?a.tablePlans:[],pinnedEvidenceFilePaths:Array.isArray(a.pinnedEvidenceFilePaths)?a.pinnedEvidenceFilePaths.filter(Boolean):[]})):[{id:"document",title:a.outputTitle||a.name||"文档",purpose:a.description||"",queries:[],requiredFacts:[]}],exportSettings:a.exportSettings,generationSettings:a.generationSettings,promptIds:Array.isArray(a.promptIds)?a.promptIds.filter(Boolean):[],projectBindings:Array.isArray(a.projectBindings)?a.projectBindings.filter(a=>a.materialRootPath).map(a=>({materialRootPath:a.materialRootPath.replace(/^\/+|\/+$/gu,"")})):(0,o.qp)(a),promptBindings:Array.isArray(a.promptBindings)?a.promptBindings.filter(a=>a.promptId&&a.roleId):Array.isArray(a.promptIds)?a.promptIds.filter(Boolean).map(a=>({promptId:a,roleId:"chapter_generation"})):[],builtIn:!1}}function w(){try{let a=t();if(!d.existsSync(a))return[];let b=JSON.parse(d.readFileSync(a,"utf-8"));if(!Array.isArray(b))return d.renameSync(a,`${a}.corrupt-${Date.now()}`),[];return b.map(v)}catch{try{let a=t();d.existsSync(a)&&d.renameSync(a,`${a}.corrupt-${Date.now()}`)}catch{}return[]}}function x(a){d.writeFileSync(t(),JSON.stringify(a.map(v),null,2),"utf-8")}function y(a){return(0,g.createHash)("sha256").update(a).digest("hex").slice(0,12)}function z(a){return a.replace(/\s+/gu," ").trim().slice(0,160)}function A(a){let b=function(){try{let a=JSON.parse(d.readFileSync(e.join(s(),"prompts.json"),"utf-8"));return Array.isArray(a.customPrompts)?a.customPrompts:[]}catch{return[]}}();if(a.startsWith("custom:")){let c=b.find(b=>b.id===a);return c?{id:a,name:c.name,content:c.content,source:"custom"}:void 0}if(a.startsWith("file:")){let b=a.slice(5);if(d.existsSync(b))return{id:a,name:e.basename(e.dirname(b))||b,content:d.readFileSync(b,"utf-8"),source:"file"}}}function B(a=[]){if(0===a.length)return[];let b=[];for(let c of a){let a=A(c.promptId);a&&b.push({...a,roleId:c.roleId,contentHash:y(a.content),contentPreview:z(a.content)})}return b}function C(a){let b=P(a),c=(0,i.XB)("prompt"),d=R(a),e=[],f=[];if(b)for(let a of b.promptRoles){let b=c.find(b=>b.id===a.roleId);if(!b){e.push(a.roleId);continue}0===(b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]).length&&f.push(a.roleId)}let g=Q(d),h=[];for(let a of g){let d=A(a.promptId);if(!d)continue;let e=c.find(b=>b.id===a.roleId),f=b?.promptRoles.find(b=>b.roleId===a.roleId),g=e?.executionType||function(a){var b;return b=a,/extract|extraction|抽取|清单|图纸|品牌/u.test(b)?"fact_extraction":/validation|校验|审查|审核/u.test(b)?"validation":/format|排版/u.test(b)?"formatting":/writer|method|schedule|quality|resource|safety|dangerous|施工|进度|质量|资源|安全|危大/u.test(b)?"chapter_generation":"reference"}(a.roleId),i=function(a,b,c=""){let d=`${a} ${b} ${c}`;return/extract|extraction|抽取|清单|图纸|品牌|识别/u.test(d)?"extraction":/format|排版/u.test(d)?"formatting":/总控|writer|施工组织设计总控|写作主控/u.test(d)?"writer":/chapter_generation|method|schedule|quality|resource|safety|dangerous|施工|进度|质量|资源|安全|危大/u.test(d)?"chapter":"reference"}(a.roleId,g,d.name),j=`projectRole:${b?.id||"unknown"}:${a.roleId}:order=${f?.order??0}`;h.push({...d,roleId:a.roleId,contentHash:y(d.content),contentPreview:z(d.content),executionType:g,category:i,bindingSource:j,roleConfigId:b?.id,roleName:e?.name,order:f?.order})}return{bindings:g,prompts:h,writerPrompts:h.filter(a=>"writer"===a.category),chapterPrompts:h.filter(a=>"chapter"===a.category),extractionPrompts:h.filter(a=>"extraction"===a.category),formattingPrompts:h.filter(a=>"formatting"===a.category),referencePrompts:h.filter(a=>"reference"===a.category),unresolvedRoles:[...new Set(e)],missingResourceRoles:[...new Set(f)]}}function D(){let a=(0,j.V)().templates,b=w().filter(b=>!a.some(a=>a.id===b.id));return[...a,...b]}function E(a){return D().find(b=>b.id===a)}function F(a){let b,c,d=v(a),e=w().find(a=>a.id===d.id),f=Date.now();if(e&&u(e)!==u(d)){b=(e.version||0)+1;let a=d.chapters.map(a=>a.title).join("、");c=[{version:b,timestamp:f,summary:a?`章节结构调整:${a.slice(0,80)}${a.length>80?"…":""}`:"模版内容已更新"},...e.changeLog||[]].slice(0,50)}else e?(b=e.version||1,c=e.changeLog||[]):(b=1,c=[{version:1,timestamp:f,summary:"创建模版"}]);let g={...d,version:b,updatedAt:f,changeLog:c},h=w().filter(a=>a.id!==d.id);return h.push(g),x(h),g}async function G(a,b=(0,h.aY)(),d={}){let f,g,j,s,t=E(a),u=[];if(!t)return{issues:[{level:"error",message:"文档模板不存在或已删除"}],fileDiagnostics:[],promptDiagnostics:[],roleDiagnostics:[],readiness:void 0,strategyPreview:void 0,config:void 0};let v=(0,i.XB)("prompt"),w=O(t),x=P(t);w||u.push({level:"error",message:"模板未绑定项目角色配置,且未匹配到自动专业角色配置"}),w&&!x&&u.push({level:"error",message:`项目角色配置不存在或已删除:${w}`}),t.promptIds?.length&&u.push({level:"warning",message:"模板存在旧 promptIds 字段残留,该字段已不参与生成,请清理模板历史数据。"}),t.promptBindings?.length&&u.push({level:"warning",message:"模板存在旧 promptBindings 字段残留,该字段已不参与生成,请清理模板历史数据。"});let y=R(t),z=(0,o.qp)(t);x&&0===x.promptRoles.length&&u.push({level:"error",message:"项目角色配置未配置提示词角色。"}),x&&x.promptRoles.length>0&&0===y.length&&u.push({level:"error",message:"项目角色配置中的提示词角色未绑定任何有效提示词资源。"});let A=e.resolve(b),C=(0,h.Yy)(A),D=function(a,b){if(0===a.length)return[];let c=new Set(b.map(a=>a.relativePath)),d=[],e=new Set;for(let f of a){let a=f.materialRootPath.replace(/^\/+|\/+$/gu,"");for(let f of c.has(a)?[a]:b.filter(b=>{var c;return b.relativePath.startsWith(`${a}/`)&&"disk"!==(c=b).status&&"error"!==c.status&&Number(c.indexedAt||0)>0&&Number(c.chunkCount||0)>0}).map(a=>a.relativePath))e.has(f)||(e.add(f),d.push(f))}return d}(z,C);if(0===z.length?u.push({level:"error",message:"模板未绑定项目资料包,请先选择需要参与生成的项目文件夹。"}):0===D.length&&u.push({level:"error",message:"模板绑定的项目资料包不存在或没有可用索引文件,请重新选择项目资料包。"}),t&&(f=(0,l.P)(A,{requirement:d.requirement,boundFilePaths:D}),0===z.length&&!f.source.ambiguous&&f.source.selectedFiles>0)){let a=u.findIndex(a=>"error"===a.level&&"模板未绑定项目资料包,请先选择需要参与生成的项目文件夹。"===a.message);a>=0&&u.splice(a,1)}let F=new Map(C.map(a=>[a.relativePath,a])),H=[],I=D.map(a=>{let b=F.get(a);return b||u.push({level:"error",message:`知识库文件不存在:${a}`}),b&&("disk"===b.status||0===b.indexedAt)&&H.push({level:"warning",message:`知识库文件存在但尚未完成索引:${a}`}),b?.status==="error"&&u.push({level:"warning",message:`知识库文件索引失败:${a}${b.errorMessage?`,${b.errorMessage}`:""}`}),b&&0===b.chunkCount&&u.push({level:"warning",message:`知识库文件暂无可检索内容切片:${a}`}),{filePath:a,roleId:"project_material",roleName:"项目资料包",exists:!!b,indexed:!!(b&&b.indexedAt>0&&"disk"!==b.status),chunkCount:b?.chunkCount??0,vectorReady:!!(b&&b.chunkCount>0)}}),J=I.filter(a=>a.exists).length,K=I.filter(a=>a.exists&&!a.indexed).length;J>0&&K===J?u.push({level:"error",message:`模板绑定的项目资料包(${J} 份文件)均尚未完成解析入库,请等待后台索引完成后再运行模板`}):u.push(...H);let L=B(y),M=new Set(x?.promptRoles.map(a=>a.roleId)||[]);for(let a of x?.promptRoles||[]){let b=v.find(b=>b.id===a.roleId);if(!b){u.push({level:"error",message:`提示词角色不存在:${a.roleId}`});continue}0===(b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]).length&&u.push({level:"error",message:`提示词角色未绑定资源:${b.name}`})}let N=y.map(a=>{let b=v.find(b=>b.id===a.roleId),c=L.find(b=>b.id===a.promptId);return b||u.push({level:"error",message:`提示词角色不存在:${a.roleId}`}),M.has(a.roleId)||u.push({level:"error",message:`提示词绑定不属于当前项目角色配置:${a.roleId}`}),c||u.push({level:"error",message:`提示词不存在:${a.promptId}`}),c&&!c.content.trim()&&u.push({level:"warning",message:`提示词为空:${c.name}`}),{...a,roleName:b?.name,promptTitle:c?.name,promptSource:c?.source,contentLength:c?.content.length??0,contentHash:c?.contentHash,contentPreview:c?.contentPreview,exists:!!c}}),Q=(x?.promptRoles||[]).map(a=>{let b=v.find(b=>b.id===a.roleId),c=b?b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]:[],d=y.filter(b=>b.roleId===a.roleId).map(a=>a.promptId),e=b?0===c.length?"missing_resource":0===d.length?"missing_prompt":"ok":"role_missing";return{roleId:a.roleId,roleName:b?.name,order:a.order,resourceIds:c,boundPromptIds:d,status:e}});if(L.length>1)try{let{detectPromptRuleConflicts:a}=await c.e(1001).then(c.bind(c,71001));for(let b of a(L.map(a=>({promptId:a.id,name:a.name,roleId:a.roleId,content:a.content}))))u.push({level:b.level,message:`提示词规则冲突:${b.message}`})}catch{}if(t){let a=f||(0,l.P)(A,{requirement:d.requirement,boundFilePaths:D}),b=function(a,b){let c=function(a,b){let c=[a.name,a.category,a.description,a.outputTitle,...a.chapters.flatMap(a=>[a.title,a.purpose])].join("\n"),d=new Set(["project_overview","scope_description"]);return/需求|规则|响应|方案|实施|专项|安全|质量|进度|合规|施工组织|技术标/iu.test(c)&&["requirement_document","structured_data"].forEach(a=>d.add(a)),(/安全|质量|进度|工期|文明|环保|验收/iu.test(c)||b.materialInventory.schedule_quality_safety.length>0)&&d.add("schedule_quality_safety"),(/设计|图纸|平面|立面|剖面|做法/iu.test(c)||b.materialInventory.design_specification.length>0)&&d.add("design_specification"),(/风险|重点|难点|约束|现场|危大/iu.test(c)||b.materialInventory.risk_constraints.length>0)&&d.add("risk_constraints"),d}(a,b);return[...new Set([...function(a){let b=[a.name,a.description,a.outputTitle,...a.chapters.flatMap(a=>[a.title,a.purpose,...a.requiredFacts||[],...a.queries||[]])].join("\n"),c=new Set((0,m.t0)(b,m.hW));return c.add("project_overview"),c.add("scope_description"),[...c]}(a),...c])].map(a=>{let d=b.materialInventory[a]||[],e=c.has(a),f=d.length>0,g=f&&d.length<(e?2:1);return{role:a,required:e,satisfied:f,weak:g,evidenceCount:d.length,filePaths:d.map(a=>a.filePath),reason:f?`已匹配 ${d.length} 个资料文件`:e?"必需资料角色缺失":"可选资料角色缺失"}})}(t,a);for(let c of(g=(0,n.$)({template:t,spec:(0,k.x)(t).spec,summary:a,resolvedRoles:b})).blockingIssues)u.push({level:"error",message:`生成准备度不足:${c}`});for(let a of g.warnings)u.push({level:"warning",message:a})}try{let a=(0,k.x)(t).spec,{effectiveTemplateChapters:b}=await Promise.resolve().then(c.bind(c,70208)),e=b(t,a),f=t.generationSettings||t.exportSettings,g=(0,p.q6)(t.exportSettings||t.generationSettings),h=(0,p.py)(d.requirement||""),i=f?.targetPages?.target||f?.targetPages?.min,l=h.targetChars||(h.targetPages?h.targetPages*g:void 0)||(i?i*g:void 0),m=e.reduce((b,c)=>b+Math.max(a.chapterRules.find(a=>a.id===c.id||a.title===c.title)?.minWords||0,a.dynamicChapterRule.minWordsPerChapter||0),0),n=Math.round(l||m||1200*e.length),o=D.reduce((a,b)=>a+(F.get(b)?.chunkCount??0),0),{previewGenerationBudgetForTemplate:r}=await Promise.all([c.e(1001),c.e(8163),c.e(9227)]).then(c.bind(c,79227));j=r({template:t,chapters:e,requirement:d.requirement,materialFileCount:D.length,evidenceCount:o,targetWords:n,hasVeryLargeExplicitChapter:e.some(a=>(a.sections||[]).filter(Boolean).length>=30),configuredChapterConcurrency:(0,q.z)().chapterConcurrency||0})}catch{}try{s=(0,r.ze)({templateName:t.name,chapterTitles:t.chapters.map(a=>a.title)})}catch{}return{templateId:a,projectRoleConfigId:w,configName:x?.name,fileDiagnostics:I,promptDiagnostics:N,roleDiagnostics:Q,readiness:g,issues:u,strategyPreview:j,referenceStructureSuggestion:s}}let H=new Map,I=Math.max(5e3,Number(process.env.DOCUMENT_TEMPLATE_VALIDATION_CACHE_TTL_MS??3e4));async function J(a,b=(0,h.aY)(),c={}){let d=e.resolve(b),f=E(a),g=(0,h.Yy)(d),i=JSON.stringify({templateId:a,templateVersion:f?.version??0,templateUpdatedAt:f?.updatedAt??0,projectRoot:d,requirement:c.requirement??"",fileCount:g.length,lastFileMtime:g.reduce((a,b)=>Math.max(a,b.mtime),0)}),j=H.get(i);if(j&&Date.now()-j.at<I)return j.result;let k=await G(a,d,c);return H.set(i,{at:Date.now(),result:k}),k}function K(a){if(new Set((0,j.V)().templates.map(a=>a.id)).has(a))throw Error("Configured template cannot be deleted");x(w().filter(b=>b.id!==a))}function L(a){let b=E(a);if(!b)throw Error("Document template not found");let c=Date.now(),d=v({...b,id:`${b.id}-copy-${c}`,name:`${b.name} Copy`,builtIn:!1,version:1,updatedAt:c,changeLog:[{version:1,timestamp:c,summary:`从 ${b.id} v${b.version||1} 复制`}]}),e=w();return e.push(d),x(e),d}function M(a,b){try{return RegExp(b,"iu").test(a)}catch{return a.includes(b)}}function N(a,b){return(function(a){let b=`${a.name} ${a.category} ${a.outputTitle} ${a.description}`;return(0,j.V)().chapterTitleFilters.filter(a=>a.templateMatchers.some(a=>M(b,a)))})(b).some(b=>!!b.minLength&&a.length<b.minLength||!!b.maxLength&&a.length>b.maxLength||b.forbiddenPatterns.some(b=>M(a,b)))}function O(a){return a.projectRoleConfigId||void 0}function P(a){let b=O(a);return b?(0,i.Mu)(b):void 0}function Q(a){let b=new Set,c=[];for(let d of a){let a=`${d.roleId}:${d.promptId}`;!d.promptId||!d.roleId||b.has(a)||(b.add(a),c.push(d))}return c}function R(a){let b=P(a);if(!b)return[];let c=(0,i.XB)("prompt"),d=[];for(let a of[...b.promptRoles].sort((a,b)=>a.order-b.order)){let b=c.find(b=>b.id===a.roleId),e=b?b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]:[];b&&0!==e.length&&d.push(...e.map(a=>({promptId:a,roleId:b.id})))}return Q(d)}},28103:(a,b,c)=>{c.d(b,{WT:()=>x,aF:()=>w,cG:()=>e});var d=c(52922);let e=["房建","市政","公路","桥梁与隧道","水利水电","电力","机电安装","装饰装修","园林绿化","铁路","港口与航道","矿山冶金","其他"],f=/(?:\d+(?:\.\d+)?\s*(?:mm|cm|m|㎡|m²|m2|m3|m³|kg|t|MPa|kPa|kN|V|KV|kV|A|天|%)(?![a-zA-Z\u4e00-\u9fa5])|\d+(?:\.\d+)?\s*(?:米|厘米|毫米|吨|千克|公斤|平方米|立方米)(?!\d)|(?:养护|搭接长度|试验压力|间距|偏差|坡度|含水率|压实度|强度等级|标号|厚度|宽度|高度|深度|直径|桩长|桩径))/gu,g=/→|->|=>|按.{0,12}顺序|依次|先后|先.{0,10}后|顺序施工|流水顺序|[\u4e00-\u9fa5]+(?:-|—|~|~)[\u4e00-\u9fa5]+(?:-|—|~|~)[\u4e00-\u9fa5]+/u,h=/^(?:[一二三四五六七八九十\d]+[、..]?\s*)?[\u4e00-\u9fa5()()、,A-Za-z0-9+\-·\s]{2,28}(?:表|清单)(?:[::]|\s*$)/mu,i=/^第([一二三四五六七八九十百千\d]+)[章篇][、..]?\s*(.{2,60})$/mu,j=/^\d+[、..](?!\d)\s*(.{2,20})$/mu,k=/^[一二三四五六七八九十]+[、..]\s*(.{2,20})$/mu,l=/^第[一二三四五六七八九十\d]+[节条][、..]?\s*(.{2,30})$/mu,m=/^(?:[一二三四五六七八九十]+、\s*(.{2,20})|[((][一二三四五六七八九十\d]+[))]\s*(.{2,20})|\d+\.\d+(?:\.\d+)*[、..\s]\s*(.{2,20}))$/mu,n=/\.{4,}|\.{2,}\s*\d{1,3}\s*$|—\d+—|第\s*\d+\s*页|^\d{1,3}$/u,o=/[,、;:]/u,p=/[,。;:?!]/u;function q(a){return a.trim().replace(/^(?:#+\s*)+/u,"").trim()}function r(a){return a.replace(/[\s..·]+\d{1,3}$/u,"").replace(/\s+/gu,"").trim()}function s(a){return a.length>=2&&!o.test(a)&&!/[。,;]$/u.test(a)}function t(a){if(/^\d+$/u.test(a))return Number.parseInt(a,10);let b={零:0,一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9},c=0,d=0,e=!1;for(let f of a){if("十"===f){c+=10*(d||1),d=0,e=!0;continue}if("百"===f){c+=100*(d||1),d=0,e=!0;continue}if("千"===f){c+=1e3*(d||1),d=0,e=!0;continue}let a=b[f];if(void 0===a)return Number.MAX_SAFE_INTEGER;d=a,e=!0}return e?c+d:Number.MAX_SAFE_INTEGER}let u=/(?:养护|搭接长度|试验压力|间距|偏差|坡度|含水率|压实度|强度等级|标号|厚度|宽度|高度|深度|直径|桩长|桩径)/gu,v=/(?:\d+(?:\.\d+)?\s*(?:mm|cm|m|㎡|m²|m2|m3|m³|kg|t|MPa|kPa|kN|V|KV|kV|A|天|%)(?![a-zA-Z\u4e00-\u9fa5])|\d+(?:\.\d+)?\s*(?:米|厘米|毫米|吨|千克|公斤|平方米|立方米)(?!\d))/gu;function w(a){let b,c=[["市政",/市政|管网|排水|给水|雨污|污水|燃气/gu],["公路",/公路|路基|路面|沥青/gu],["桥梁与隧道",/桥梁|隧道/gu],["水利水电",/水利|河道|灌溉|防洪/gu],["电力",/电力|供配电|电压|电缆/gu],["机电安装",/机电|暖通|通风|空调|消防|给排水|智能化|电梯/gu],["装饰装修",/装饰|装修|幕墙/gu],["园林绿化",/园林|绿化|景观|苗木/gu],["铁路",/铁路|轨道/gu],["港口与航道",/港口|航道/gu],["矿山冶金",/矿山|冶金/gu],["房建",/房建|建筑|住宅|楼|结构|砌体|基坑|地下室|主体|层高|户型|公共建筑|产业园|厂房/gu]].map(([b,c])=>(c.lastIndex=0,{type:b,count:(a.match(c)||[]).length})).sort((a,b)=>b.count-a.count),d=c[0],e=0,f=0;for(let[c,d]of[["房建",/产业园|标准厂房|安置房|住宅小区|保障房|卫生院|门诊楼|办公楼/gu],["市政",/老旧小区|海绵城市|雨污分流|管网改造|管廊/gu],["桥梁与隧道",/桥梁|隧道|盾构|箱梁|斜拉|悬索|涵洞/gu],["公路",/公路|路基|路面|沥青|桩号|互通|匝道/gu],["水利水电",/堤防|水库|泵站|水闸|疏浚|节制闸|水电站|大坝|围堰/gu],["电力",/变电站|输电线路|配电|GIS设备|电缆|架空线路|铁塔|箱变/gu],["铁路",/铁路|轨道|道床|站台|信号机|接触网/gu],["港口与航道",/港口|码头|航道|护岸|堆场|泊位/gu],["矿山冶金",/矿山|矿井|选矿|冶炼|尾矿|轧钢/gu]]){d.lastIndex=0;let g=(a.match(d)||[]).length;g>=3&&g>e?(f=e,b=c,e=g):g>f&&(f=g)}if(b){if(f>0&&e<2*f&&d&&d.count>e)return d.type;let a=c.find(a=>a.type===b)?.count||0;return d&&d.type!==b&&d.count>2*a&&d.count>=2*e?d.type:b}return d&&d.count>0?d.type:"其他"}async function x(a){let b=a.replace(/\s/gu,"").length,c=a.split(/\n+/u).map(a=>a.replace(/\s+/gu," ").trim()).filter(a=>a.length>=16&&/[\u4e00-\u9fa5]/u.test(a)),e=c.reduce((a,b)=>a+b.replace(/\s/gu,"").length,0),o=(a.match(f)||[]).length,w=c.filter(a=>g.test(a)).length,x=function(a){let b=0,c=a.split(/\n+/u);for(let a=0;a<c.length;a+=1){let d=q(c[a]||"");if(d){if(h.test(d)||/^┌─/u.test(d)){b+=1;continue}if(/^\|.*\|.*\|$/u.test(d)){let d="";for(let b=a-1;b>=0&&b>=a-3;b-=1){let a=q(c[b]||"");if(a){d=a;break}}/^\|.*\|.*\|$/u.test(d)||h.test(d)||(b+=1)}}}return b}(a),{headings:y,useCnAsChapter:z}=function(a){let b,c=new Map,d=[],e=[],f=a.split(/\n+/u);for(let a=0;a<f.length;a+=1){let b=q(f[a]);if(!b||n.test(b))continue;let d=i.exec(b);if(d){let b=r(d[2]||"");b.length>=2&&!p.test(b)&&c.set(d[1],function(a,b,c){if(a.length<20)return a;let d=q(b[c+1]||"");if(d.length<2||d.length>15||!/[\u4e00-\u9fa5]/u.test(d)||n.test(d)||i.test(d)||l.test(d)||m.test(d)||j.test(d)||k.test(d))return a;let e=a+d;return e.length<=60?e:a}(b,f,a));continue}let g=k.exec(b);if(g){let a=r(g[1]||"");s(a)&&e.push(a)}}if(0===c.size)for(let a of f){let b=q(a);if(!b||n.test(b))continue;let c=j.exec(b);if(c){let a=r(c[1]||"");s(a)&&d.push(a)}}let g=!1;return c.size>0?b=[...c.entries()].sort((a,b)=>t(a[0])-t(b[0])).map(([,a])=>a):d.length>=2?b=d:(b=e,g=!0),{headings:[...new Set(b)],useCnAsChapter:g}}(a),A=y.length,{subsectionCount:B,subitemCount:C}=function(a,b){let c=0,d=0;for(let e of a.split(/\n+/u)){let a=q(e);if(!a||n.test(a))continue;let f=l.exec(a);if(f){s(r(f[1]||""))&&(c+=1);continue}let g=m.exec(a);if(g){if(!s(r(g[1]||g[2]||g[3]||""))||b&&void 0!==g[1])continue;d+=1}}return{subsectionCount:c,subitemCount:d}}(a,z),D=new Map;for(let a of c){let b=a.replace(/[\d\s,。、;:""''()()%…—\-·]/gu,"");b.length<8||D.set(b,(D.get(b)||0)+1)}let E=0;for(let a of D.values())a>1&&(E+=a);let F=await (0,d.Pm)(a);return{wordCount:b,effectiveWordCount:e,paramDensity:e>0?1e3*o/e:0,paramCount:o,arrowChainCoverage:c.length>0?w/c.length:0,duplicationRate:c.length>0?E/c.length:0,tableCount:x,sectionCount:A,subsectionCount:B,subitemCount:C,avgSectionWords:A>0?Math.round(e/A):0,headingStructure:y,tableTitles:function(a){let b=[];for(let c of a.split(/\n+/u)){let a=q(c);a&&!(a.length>40)&&!(a.length<3)&&h.test(a)&&b.push(a)}return[...new Set(b)]}(a),paramTokens:function(a){let b=new Map;for(let c of a.match(u)||[])b.set(c,(b.get(c)||0)+1);let c=(a.match(v)||[]).length;return c>0&&b.set("数值参数(数字+单位)",(b.get("数值参数(数字+单位)")||0)+c),[...b.entries()].map(([a,b])=>({token:a,count:b})).sort((a,b)=>b.count-a.count)}(a),segmentCount:c.length,arrowChainSegmentCount:w,duplicatedSegmentCount:E,fiveElementCompleteBlocks:F.completeBlocks}}},29281:(a,b,c)=>{c.d(b,{I:()=>f});var d=c(96770);let e=null;function f(){return e||(e=new d.ConfigStore),e}},37047:(a,b,c)=>{c.d(b,{Bd:()=>k,Eh:()=>g,Mv:()=>n,VN:()=>f});var d=c(19898);let e=null;function f(){return e||(e=new d.LocalTransformersEmbeddingProvider({})),e}let g=.6,h=new Map,i=0,j=0;function k(){return{embedCacheHits:i,embedCacheMisses:j}}async function l(a,b){let c=b?await b(a):await f().embedDocuments(a);if(c.length!==a.length)throw Error(`本地语义模型嵌入数量不一致:期望 ${a.length} 条,实际 ${c.length} 条`);return c}async function m(a,b){if("0"===process.env.DOCUMENT_EMBED_CACHE)return l(a,b);let c=Array(a.length),d=[],e=new Map;for(let b=0;b<a.length;b+=1){let f=a[b];if(f.length<=2e3){let a=h.get(f);if(a){c[b]=a,i+=1,h.delete(f),h.set(f,a);continue}}let g=e.get(f);g?g.push(b):(e.set(f,[b]),d.push(f))}if(0===d.length)return c;let f=await l(d,b),g=function(){let a=Number(process.env.DOCUMENT_EMBED_CACHE_SIZE||4e4);return Number.isFinite(a)&&a>0?a:4e4}();for(let a=0;a<d.length;a+=1){let b=d[a],i=f[a],k=e.get(b);for(let a of k)c[a]=i;if(b.length<=2e3&&(j+=k.length,h.set(b,i),h.size>g)){let a=h.keys().next().value;void 0!==a&&h.delete(a)}}return c}async function n(a,b,c){if(0===a.length||0===b.length)return()=>0;let d=[...a,...b],e=await m(d,c),f=new Map;for(let a=0;a<d.length;a++)f.has(d[a])||f.set(d[a],e[a]);return(a,b)=>{let c=f.get(a),d=f.get(b);if(!c||!d)return 0;let e=Math.min(c.length,d.length),g=0;for(let a=0;a<e;a++)g+=c[a]*d[a];return g}}},41991:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(37047);function e(a,b){let c=Math.min(a.length,b.length),d=0;for(let e=0;e<c;e++)d+=a[e]*b[e];return d}async function f(a){if(0===a.prototypes.length)return async a=>a.map(()=>!1);let b=a.threshold??d.Eh,c=a.negativePrototypes??[],f=[...a.prototypes,...c],g=a.prototypes.length,h=a.embedDocuments?null:(0,d.VN)(),i=a.embedDocuments?await a.embedDocuments(f):await h.embedDocuments(f);if(i.length!==f.length)throw Error(`本地语义模型嵌入数量不一致:期望 ${f.length} 条,实际 ${i.length} 条`);return async d=>{if(0===d.length)return[];let f=d.map(()=>!1),j=d.map((b,c)=>a.lexicalHints&&!a.lexicalHints.test(b)?-1:c).filter(a=>a>=0);if(0===j.length)return f;let k=j.map(a=>d[a]),l=a.embedDocuments?await a.embedDocuments(k):await h.embedDocuments(k);return j.forEach((a,d)=>{let h=l[d];if(!h)return;let j=Math.max(...i.slice(0,g).map(a=>e(h,a))),k=c.length?Math.max(...i.slice(g).map(a=>e(h,a))):0;j>=b&&(0===c.length||j>k)&&(f[a]=!0)}),f}}},44533:(a,b,c)=>{c.d(b,{NW:()=>j,Qh:()=>k,VS:()=>o,Yy:()=>n,a2:()=>i,aY:()=>m});var d=c(19898),e=c(33873),f=c(21820),g=c(29021);let h=null;function i(){return e.join(f.homedir(),".customize-agent")}function j(a){return(0,d.getProjectKbPath)(e.resolve(a))}function k(){return h||(h=new d.MultiProjectManager(i())),h}function l(a){let b=e.resolve(a),c=e.resolve(e.join(f.homedir(),".customize-agent"));return!(g.existsSync(e.join(b,"pnpm-workspace.yaml"))&&g.existsSync(e.join(b,"apps","server")))&&(b===c||b.includes(`${e.sep}.customize-agent${e.sep}`)||b.endsWith(`${e.sep}apps${e.sep}server`)||b.endsWith(`${e.sep}apps${e.sep}cli`))}function m(){let a=process.env.CUSTOMIZE_PROJECT_ROOT??process.env.INIT_CWD;if(a&&g.existsSync(a)&&!l(a))return e.resolve(a);let b=function(){let a=e.join(i(),"projects","registry.db");if(!g.existsSync(a))return[];let b=new((0,d.loadBetterSqlite3)())(a,{readonly:!0});try{return b.prepare("SELECT project_root FROM project_registry ORDER BY last_opened_at DESC").all().map(a=>e.resolve(a.project_root)).filter(a=>!l(a))}finally{b.close()}}();return b.length>0?b[0]:process.env.INIT_CWD&&!l(process.env.INIT_CWD)?process.env.INIT_CWD:e.resolve(process.cwd(),"../..")}function n(a,b={}){let c=new Map;for(let b of function(a){let b=e.join(f.homedir(),".customize-agent","projects",(0,d.computeProjectId)(e.resolve(a)),"kb.db");if(!g.existsSync(b))return[];let c=new d.IndexStateStore(b);try{return c.listRecords().map(a=>({...a,matchedBy:"metadata"}))}finally{c.close()}}(a))c.set(b.relativePath,b);for(let b of function(a){let b=j(a);if(!g.existsSync(b))return[];let c=[],d=a=>{for(let f of g.readdirSync(a,{withFileTypes:!0})){let h=e.join(a,f.name);if(f.isDirectory()){d(h);continue}if(f.name.endsWith(".source.txt"))continue;let i=g.statSync(h),j=e.relative(b,h).split(e.sep).join("/");c.push({relativePath:j,category:j.includes("表格数据/")?"spreadsheet":j.includes("图片素材/")?"image":j.includes("图纸文件/")?"cad":j.includes("文档资料/")?"document":"other",format:e.extname(j).slice(1).toLowerCase()||"text",contentHash:"",fileSize:i.size,mtime:i.mtimeMs,chunkCount:0,collectionName:"",indexedAt:0,lastVerifiedAt:0,status:"disk",matchedBy:"disk"})}};return d(b),c}(a)){let a=c.get(b.relativePath);c.set(b.relativePath,a?{...a,fileSize:b.fileSize,mtime:b.mtime,matchedBy:"metadata"}:b)}return Array.from(c.values()).filter(a=>!b.category||a.category===b.category).sort((a,b)=>b.mtime-a.mtime||a.relativePath.localeCompare(b.relativePath,"zh-CN"))}async function o(a,b={}){let c=(b.query||"").trim(),d=Math.max(1,Math.min(500,b.limit??50)),e=new Map,f=n(a,{category:b.category});for(let a of f)(!c||`${a.relativePath}
21
21
  ${a.category}
22
22
  ${a.format}
23
- ${a.status}`.toLowerCase().includes(c.toLowerCase()))&&e.set(a.relativePath,{...a,matchedBy:c?"path":a.matchedBy});if(c&&!1!==b.includeContent)try{for(let b of(await k().search(a,c,{limit:Math.max(20,d)})).results){let a=b.filePath,c=e.get(a)||f.find(b=>b.relativePath===a);e.set(a,{...c||{relativePath:a,category:"content",format:"knowledge",fileSize:0,mtime:0,chunkCount:0,indexedAt:0,lastVerifiedAt:0,status:"active"},matchedBy:"content",score:b.score})}}catch{}let g=Array.from(e.values()).sort((a,b)=>{let c=a=>"content"===a.matchedBy?3:"path"===a.matchedBy?2:+("metadata"===a.matchedBy);return c(b)-c(a)||(b.score??0)-(a.score??0)||b.mtime-a.mtime||a.relativePath.localeCompare(b.relativePath,"zh-CN")});return{files:g.slice(0,d),total:g.length}}},51144:(a,b,c)=>{function d(a,b,c,e="items"){let f=c.maxItems??Number.MAX_SAFE_INTEGER,g=c.maxChars??Number.MAX_SAFE_INTEGER,h=c.charFn??(a=>JSON.stringify(a).length),i=a.map(a=>({item:a,score:b(a)}));i.sort((a,b)=>b.score-a.score);let j=[],k=[],l=0;for(let{item:a}of i){let b=h(a);j.length<f&&l+b<=g?(j.push(a),l+=b):k.push(a)}let m=[];if(k.length>0){for(let a of(m.push(`[selection] ${e}: 预算 ${f}项/${g}字符 → 选中 ${j.length}项(${l}字符),丢弃 ${k.length}项`),k.slice(0,10))){let b="string"==typeof a?a.slice(0,80):JSON.stringify(a).slice(0,80);m.push(` - 丢弃: ${b}`)}k.length>10&&m.push(` ... 及其他 ${k.length-10} 项`)}return{selected:j,dropped:k,droppedLog:m}}function e(a){let b=0,c=a.length;return 0===c?0:(b+=3*(a.match(/\d+(?:\.\d+)?/gu)||[]).length,/m[23²³]?|mm|cm|km|t|kg|台|套|个|项|批|次|份|人|日历天|天|月|万元|元|%|MPa|kPa|kN|℃/iu.test(a)&&(b+=2),/GB|JGJ|ISO|CJJ|CECS|DL|YB|SH|HG|SY|NB/iu.test(a)&&(b+=3),/验收|质量|安全|工期|进度|成本|风险|危大|重点|难点|关键|控制|标准|规范|设计|施工|材料|设备/u.test(a)&&(b+=1),c<20&&(b-=1),/项目名称|工程名称|招标人|建设地点|计划工期|质量标准|合同估算/u.test(a)&&(b+=2),b)}c.d(b,{Cr:()=>d,Ox:()=>e})},52922:(a,b,c)=>{c.d(b,{Bt:()=>m,JD:()=>A,J_:()=>j,Pm:()=>o,T4:()=>w,Ye:()=>k,bH:()=>D,gE:()=>r,nY:()=>F,vm:()=>l});var d=c(37047),e=c(41991);let f=["基本满足","大致符合","力争","原则上","大概","左右","尽可能","尽量满足"],g=/基本|大致|力争|原则上|大概|左右|尽可能|尽量/u,h=["基本满足招标文件要求","大致符合相关规范标准","力争达到优良质量标准","原则上按照规范执行","尽可能保证工程质量","尽量满足工期要求"],i=["结构构件左右对称布置","平面布置左右对称合理","力争上游的企业精神"];async function j(a){return(0,e.A)({prototypes:[...h],negativePrototypes:[...i],lexicalHints:g,embedDocuments:a})}function k(a){return f.filter(b=>a.includes(b)).map(b=>({phrase:b,count:a.split(b).length-1}))}let l=["精心组织、科学管理,确保工程质量","严格执行相关规范和设计要求","根据实际情况适当调整施工安排","建立健全管理体系,加强过程管理","全力保障项目顺利推进"];async function m(a,b){let c=a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.trim()).filter(a=>a.length>=12),e=await (0,d.Mv)(c,[...l],b),f=await j(b),h=await f(c),i=c.filter(a=>g.test(a)).length,k=h.filter(Boolean).length,m=c.map((a,b)=>l.some(b=>e(a,b)>=d.Eh)||h[b]),n=m.filter(Boolean).length,o=[...new Set(c.filter((a,b)=>m[b]))].slice(0,40),p=c.length?n/c.length:0;return{totalSentences:c.length,fillerSentences:n,ratio:p,level:p>=.4?"heavy":p>=.2?"medium":"light",vagueCandidateSentences:i,vagueSemanticSentences:k,fillerSentenceDetails:o}}let n={plan:"制定专项施工方案与管理制度,明确技术措施",process:"施工工序流程与工艺步骤顺序",role:"由项目经理、技术负责人等岗位人员分工负责",frequency:"每日、每周等检查频次与时间节点安排",acceptance:"经检查验收合格后整改销项闭环"};async function o(a,b){let c=a.split(/\n{2,}/u).filter(a=>a.trim().length>=30),e=Object.values(n),f=await (0,d.Mv)(c,e,b),g=/项目经理|技术负责人|施工员|质检员|安全员|材料员|资料员|测量员|劳资员|班组长|监理工程师|试验员/u,h=/每日|每天|每周|每月|每季度|每批|不少于\s*\d+\s*次|至少\s*\d+\s*次|每周\s*\d+\s*次|每日\s*\d+\s*次|每\s*\d+\s*日/u,i=/整改|复查|销项|复验|闭环|返工/u,j=/专项施工方案|专项方案|施工方案|施工组织设计|技术措施|管理制度|技术交底|作业指导书|操作规程/u,k=/施工工序|工艺流程|施工流程|作业流程|施工顺序|施工步骤|工艺步骤|流水段|流水作业|依次施工|工序/u,l=(a,b)=>{let c=(b!==n.plan||!!j.test(a))&&(!!(b===n.plan&&j.test(a))||(b!==n.process||!!k.test(a))&&(!!(b===n.process&&k.test(a))||(b!==n.role||!!g.test(a))&&(!!(b===n.role&&g.test(a))||(b!==n.frequency||!!h.test(a))&&(!!(b===n.frequency&&h.test(a))||(b!==n.acceptance||!!i.test(a))&&(!!(b===n.acceptance&&i.test(a))||void 0)))));return void 0!==c?c:f(a,b)>=d.Eh},m=0,o=0,p=0;for(let a of c)e.filter(b=>l(a,b)).length>=4?m+=1:l(a,n.role)&&l(a,n.frequency)||(o+=1),l(a,n.role)&&l(a,n.frequency)&&l(a,n.acceptance)&&(p+=1);return{blocks:c.length,completeBlocks:m,incompleteBlocks:o,closedLoopBlocks:p}}let p="分析该工程难点的成因与风险来源",q=/\d+(?:\.\d+)?\s*(?:mm|cm|m|米|℃|%|kN|MPa|次|天|日历天|小时|h|Hz|m³|㎡|m²|t|吨|座|套|个)/u;async function r(a,b){let c=function(a){let b=a.match(/#{2,3}\s*[^\n]*(?:重难点|重点难点|工程难点|难点分析)[^\n]*\n/u);if(b&&void 0!==b.index){let c=b.index+b[0].length,d=a.slice(c),e=d.search(/^#{2,3}\s+/mu);return e>=0?d.slice(0,e):d}let c=a.match(/^\|?\s*[^\n]*重难点[^\n]*\|\s*$/mu);if(!c||void 0===c.index)return"";let d=a.slice(c.index).split(/\n/u),e=[];for(let a of d){let b=a.trim();if(!b||!b.startsWith("|")){if(e.length>0)break;continue}e.push(a)}return e.join("\n")}(a),e=c.trim().startsWith("|")?c.split(/\n/u).filter(a=>{let b=a.trim();return b.startsWith("|")&&!/^\|\s*-+\s*\|/u.test(b)&&!/重难点/u.test(b.split("|")[1]||"")}).filter(a=>a.trim().length>=20):c.split(/\n{2,}/u).filter(a=>a.trim().length>=20),f=await (0,d.Mv)(e,[p],b),g=0,h=0,i=0,j=[];for(let a of e){let b=f(a,p)>=d.Eh,c=q.test(a);b&&(g+=1),c&&(h+=1),b&&c&&(i+=1),j.push({text:a,attributed:b,quantified:c})}let k=e.length?i/e.length:0;return{countermeasures:e.length,attributed:g,quantified:h,bothCount:i,ratio:k,heavyTemplated:e.length>0&&k<.5,entries:j.slice(0,24)}}let s=/建筑业10项新技术|10项新技术|安徽省住房城乡建设领域新技术推广目录|新技术推广目录|建设领域推广/u,t=/替代|取代|淘汰.{0,10}(?:工艺|技术|做法)|(?:较|比).{0,10}(?:传统|常规|普通)/u,u=/(?:提升|提高|节省|节约|降低|缩短|减少).{0,10}(?:效率|工期|成本|损耗|能耗|人工|周期)|升级价值|效益显著/u,v=["BIM","铝模","附着式升降脚手架","跳仓法","直螺纹","装配式","灌浆套筒","自动化监测","智慧工地","再生利用","非开挖","CCTV","碳纤维","薄贴法","干法施工","液压提升","预制","光伏一体化","BIPV","模块化"];function w(a){let b=v.filter(b=>a.includes(b)),c=s.test(a),d=t.test(a),e=u.test(a),f=[c,d,e].filter(Boolean).length;return{found:[...b],catalogCited:c,replaceClaimed:d,upgradeClaimed:e,effective:b.length>0&&f>=2}}let x=[/基坑|沟槽/u,/模板支撑|高支模/u,/脚手架|悬挑|附着式/u,/起重吊装|吊装/u,/幕墙/u,/人工挖孔桩/u,/装配式|钢结构安装/u,/拆除工程/u,/顶管|盾构|暗挖/u,/有限空间|水下作业/u,/吊篮/u,/塔吊|施工电梯|升降机/u,/沉井/u],y=/超危大|超规模|专家论证|一般危大/u,z=/(?:深度|高度|跨度|开挖).{0,8}\d+(?:\.\d+)?\s*(?:m|米)|(?:重量|吊装).{0,8}\d+(?:\.\d+)?\s*(?:kN|千牛)/u;function A(a){let b=x.filter(b=>b.test(a)).map(a=>a.source.replace(/\\u\w*|\\|\(|\||\)/gu,"")),c=y.test(a),d=z.test(a);return{categories:b,graded:c,paramMatched:d,twoStepComplete:b.length>0&&c&&d}}let B=[{name:"总则",pattern:/总则/u},{name:"组织机构及职责",pattern:/应急(?:组织|领导)|组织机构|应急指挥部|应急小组/u},{name:"风险分析与危险源辨识",pattern:/风险分析|危险源辨识|风险辨识/u},{name:"应急物资设备通讯保障",pattern:/应急物资|物资.{0,8}(?:保障|储备)|通讯保障|通信保障/u},{name:"专项应急预案",pattern:/专项应急预案|专项预案/u},{name:"应急响应流程",pattern:/应急响应|响应流程|响应程序/u},{name:"后期处置",pattern:/后期处置|善后|事故调查/u},{name:"培训演练",pattern:/(?:应急)?演练|培训.{0,6}演练/u}],C=["高处坠落","物体打击","坍塌","触电","火灾","起重","防汛","防台风","中暑","中毒窒息","管线破坏"];function D(a){let b=B.filter(b=>b.pattern.test(a)).map(a=>a.name),c=B.filter(b=>!b.pattern.test(a)).map(a=>a.name),d=C.filter(b=>a.includes(b));return{coveredParts:[...b],missingParts:[...c],coverage:b.length/B.length,planHits:[...d]}}let E=[/其他项目/u,/其他标段/u,/其他城市/u,/本公司(?:其他|承建)/u,/某(?:市|县|区|项目)(?:的)?/u,/他项目/u,/兄弟项目/u];function F(a){let b=a.replace(/及其他项目/gu,"及〔清单列举项〕");return E.filter(a=>a.test(b)).map(a=>a.source.replace(/\\u/gu,""))}},54185:(a,b,c)=>{c.d(b,{C4:()=>u,D9:()=>j,P_:()=>z,Q9:()=>t,V0:()=>m,ch:()=>i,cq:()=>g,gn:()=>p,o0:()=>y,p_:()=>k,sO:()=>A,uj:()=>E,uw:()=>D,v_:()=>q,yF:()=>w});var d=c(22157);let e=/^(?:主要施工|施工)?(?:工艺流程|概况|概述|流程|工序|工艺|方法|方案|步骤|顺序|做法|安排|要点|内容)(?:要点|概述|简介|说明)?$/u,f=new Set(["主要施工方法","主要施工内容","项目主要施工内容"]);function g(a){let b=(0,d.Sw)(a);return!(!b||f.has(b))&&e.test(b)}let h=/^(\s*(?:[-*•]\s+)?)\*{0,2}(?:施工概况|施工概述|施工流程|工艺流程|施工工艺|施工工序|施工方法|施工步骤|施工顺序|施工做法|施工安排|施工要点)\*{0,2}[::]\s*/u,i="正文禁止以“施工概况/施工流程/施工方法/工艺流程/施工步骤”等结构标签充当小节标题或段落开头引导(不得出现“施工概况:本项目……”式标签行),要素内容直接融入连贯段落叙述。";function j(a){let b=[],c=[],d=0,e=[],f=0;for(let b of a.split(/\r?\n/u)){let a=b.trim();if(!a)continue;let i=/^(#{3,6})\s+(.+?)\s*$/u.exec(a);if(i){g(i[2])&&(d+=1,c.length<5&&c.push(`${i[1]} ${i[2]}`));continue}h.test(b)&&(f+=1,e.length<5&&e.push(a.slice(0,24)))}return d>0&&b.push({level:"error",severity:"blocker",category:"structure",owner:"system",repairability:"local_deterministic",message:`正文存在结构标签充当小节标题 ${d} 处:“${c.join("”、“")}”`,suggestion:"结构标签(施工概况/施工流程/施工方法/工艺流程等)不得独立成题;确定性修复器已接入删除标签标题行(正文保留),要素内容融入上级小节连贯叙述。"}),f>0&&b.push({level:"error",severity:"blocker",category:"structure",owner:"system",repairability:"local_deterministic",message:`正文段首结构标签前缀 ${f} 处:“${e.join("”、“")}…”`,suggestion:"禁止“施工概况:……”“施工流程:……”式段首标签引导;确定性修复器已接入剥离标签前缀(正文保留),要素直接以连贯段落表述。"}),b}function k(a){let b=a.split(/\r?\n/u),c=[],d=0,e=0;for(let a=0;a<b.length;a+=1){let f=b[a],i=f.trim();if(!i){c.push(f);continue}let j=/^(#{4,6})\s+(.+?)\s*$/u.exec(i);if(j){if(g(j[2])){d+=1,a+1<b.length&&""===b[a+1].trim()&&(a+=1);continue}c.push(f);continue}if(/^#{1,6}\s/u.test(i)){c.push(f);continue}let k=h.exec(f);if(k){let a=f.slice(k[0].length);e+=1,a.trim()&&c.push(a);continue}c.push(f)}let f=d+e;if(0===f)return{markdown:a,fixedCount:0,details:[]};let i=[];return d>0&&i.push(`结构标签标题删除 ${d} 行(正文保留)`),e>0&&i.push(`段首标签前缀剥离 ${e} 处`),{markdown:c.join("\n"),fixedCount:f,details:i}}let l=["顺序词叙述","编号步骤","有序列表","箭头链"];function m(a){let b=l.length;return l[(a%b+b)%b]}function n(a){let b=l.indexOf(a);return l[(b+1)%l.length]}let o={顺序词叙述:"用顺序词连贯叙述工序先后(“先……,再……,随后……,然后……,最后……”)",编号步骤:"用编号步骤分行列出工序(“1. 测量放线;2. 基槽开挖;3. 基础施工;……”)",有序列表:"用无序要点列表分行列出工序(“- 基层清理;- 放线定位;- 分层摊铺;……”)",箭头链:"用箭头链表达工序先后(“基层清理→放线定位→分层摊铺→碾压→验收”)"};function p(a){let b=m(a);return`【工序顺序表达形式指定】本块的工序顺序表达使用「${b}」形式:${o[b]};本章相邻小节已分别指定其他形式,禁止通篇使用同一形式,不得用“施工流程:”等结构标签引导。`}function q(a){let b;if(!(0,d.Z1)(a))return;let c=function(a){let b=(a.match(/→|->|=>/gu)||[]).length,c=(a.match(/(?:^|\n)\s*(?:\d+[.、))]|[((]\d+[))]|[一二三四五六七八九十]{1,3}[、.]|第[一二三四五六七八九十]{1,3}步)/gu)||[]).length,d=(a.match(/(?:^|\n)\s*[-*•]\s+\S/gu)||[]).length;return{箭头链:b,编号步骤:c>=2?c:0,有序列表:d>=2?d:0,顺序词叙述:(a.match(/先[^。;!?\n]{0,24}(?:再|然后|随后|接着|最后|后)|依次|先后|按[^。;!?\n]{0,12}顺序|顺序施工|流水施工/gu)||[]).length}}(a),e=0;for(let a of l)c[a]>e&&(b=a,e=c[a]);return b}function r(a){return a.split(/^##\s+/gmu).slice(1).map(a=>{let b=a.indexOf("\n");return b<0?{title:a.trim(),body:""}:{title:a.slice(0,b).trim(),body:a.slice(b+1)}})}function s(a){let b,c=[];for(let d of a.split(/\r?\n/u)){let a=/^###\s+(.+?)\s*$/u.exec(d.trim());a?(b&&c.push({title:b.title,text:b.lines.join("\n")}),b={title:a[1],lines:[]}):b&&b.lines.push(d)}return b&&c.push({title:b.title,text:b.lines.join("\n")}),c}function t(a){let b=[];for(let c of r(a)){if(!d.V.test(c.title))continue;let a=s(c.body);if(a.length<2)continue;let e=a.map(a=>q(a.text));for(let d=1;d<a.length;d+=1){let f=e[d-1],g=e[d];if(f&&g&&f===g&&(b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`工序顺序表达形式模板化:「${c.title}」章相邻小节「${a[d-1].title}」与「${a[d].title}」同为【${g}】形式`,suggestion:`将「${a[d].title}」的工序顺序表达改写为其他形式(建议【${n(g)}】),内容与数值保持不变;分项块之间必须轮换形式,禁止通篇同一形式。`}),b.length>=6))return b}}return b}function u(a){let b=new Map;for(let c of r(a)){if(!d.V.test(c.title))continue;let a=s(c.body);if(a.length<2)continue;let e=a.map(a=>q(a.text));for(let d=1;d<a.length;d+=1){let f=e[d];if(!f||f!==e[d-1])continue;let g=`${c.title}\u0000${a[d].title}`;b.has(g)||b.set(g,{chapterTitle:c.title,blockTitle:a[d].title,currentForm:f,targetForm:n(f)})}}return[...b.values()].slice(0,12)}let v=[{id:"by-tech-lead-org",text:"由技术负责人组织",pattern:/由\s*技术负责人\s*组织/gu,variants:["技术负责人牵头组织","项目部安排技术负责人主持","技术负责人负责组织实施","由项目技术负责人统筹安排"]},{id:"post-qualified",text:"合格后方可",pattern:/合格\s*后方可/gu,variants:["合格后再行","合格后方能","合格后才可","检验合格方可","合格以后方可"]},{id:"after-acceptance",text:"验收合格后",pattern:/验收\s*合格\s*后/gu,variants:["验收通过后","验收签认后","验收确认后","检验合格后"]}],w="句式禁止复读:全篇「由技术负责人组织」「合格后方可」「验收合格后」三类骨架表述各自不得超过 2 次,同义表达轮换使用(如“技术负责人牵头组织”“检验合格后再行”“验收通过后”),保持句式多样、事实不变。";function x(a,b){return[...a.matchAll(b.pattern)].length}function y(a){let b=[];for(let c of v){let d=x(a,c);d<=2||b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`句式骨架复读:「${c.text}」全篇出现 ${d} 处(上限 2 处)——模板化复用句式`,suggestion:`保留全文前 2 处「${c.text}」,其余处按句子语境轮换同义表达(如:${c.variants.slice(0,3).join("、")});改写保留原句全部事实信息(岗位、数值、频次不得丢失),不得用结构标签或固定套语替代。`})}return b}function z(a){let b=[],c=r(a);for(let d of v){let e=x(a,d);if(e<=2)continue;let f=new Map;for(let a of c)if(a.body)for(let b of a.body.matchAll(d.pattern)){let c=b.index??0,d=function(a,b,c){let d=b;for(;d>0&&!/[。!?\n]/u.test(a[d-1]);)d-=1;let e=c;for(;e<a.length&&!/[。!?\n]/u.test(a[e]);)e+=1;return e<a.length&&/[。!?]/u.test(a[e])&&(e+=1),a.slice(d,e).trim()}(a.body,c,c+b[0].length);if(d.length<6)continue;let e=f.get(a.title)??[];e.includes(d)||e.push(d),f.set(a.title,e)}let g=2;for(let[a,c]of f){let f=c.slice(g).slice(0,4);g=Math.max(0,g-c.length),f.length>0&&b.push({chapterTitle:a,fingerprintLabel:d.text,totalCount:e,sentences:f})}}return b.slice(0,12)}function A(a){let b=a,c=0,d=[];for(let a of v){let e=0;for(;;){let c=[...b.matchAll(a.pattern)];if(c.length<=2)break;let d=c[2],f=d.index??0,g=a.variants[e%a.variants.length],h=b.slice(0,f)+g+b.slice(f+d[0].length);if(x(h,a)>=c.length)break;b=h,e+=1}e>0&&(d.push({id:a.id,replaced:e}),c+=e)}return{markdown:b,fixedCount:c,details:d}}let B=new Set(["目录","前言","摘要","附录","索引","封面","总则"]);function C(a){let b=[],c=new Set,d="",e="";for(let f of a.split(/\r?\n/u)){let a=/^(#{2,4})\s+(.+?)\s*$/u.exec(f.trim());if(!a)continue;let g=a[1].length,h=a[2];if(2===g){d=h,e="";continue}let i=h.replace(/^第[一二三四五六七八九十百零〇\d]+[章节篇部分][\s、..::]*/u,"").replace(/^\d+(?:\.\d+)*[..、::]?\s*/u,"").trim();if(i&&!c.has(i)){let a=function(a){if(!a||B.has(a))return;let b=(a.match(/[\u4e00-\u9fa5]/gu)||[]).length;if(0!==b){if(b<4&&!/[A-Za-z]/u.test(a)&&a.length<=4)return"标题核心名不足 4 字(残缺标题)";if(/[,,]/u.test(a))return"标题含逗号(句式化标题)";if(/[等及和与]$/u.test(a))return"标题以悬挂连接词结尾(残缺标题)"}}(i);a&&(c.add(i),b.push({chapterTitle:d,parentTitle:e,rawTitle:h,reason:a}))}3===g&&(e=h)}return b}function D(a){let b=[];for(let c of C(a)){let a=c.parentTitle?`「${c.parentTitle}」内`:c.chapterTitle?`「${c.chapterTitle}」章内`:"";if(b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`小节标题残缺或句式化:${a}“${c.rawTitle}”(${c.reason})`,suggestion:"将标题重命名为完整表达小节内容的正式名称(如“危大”应为“危大工程辨识与管控”、残缺名补全语义),正文内容不变;禁止使用“施工概况/施工流程/施工方法”等结构标签词充当标题。"}),b.length>=6)break}return b}function E(a){return C(a).slice(0,6).map(a=>({chapterTitle:a.chapterTitle,title:a.rawTitle,reason:a.reason}))}},56942:(a,b,c)=>{c.d(b,{$:()=>g,R:()=>h});var d=c(92808);function e(a){return[...new Set(a.filter(Boolean))]}function f(a){let b=(0,d.t0)(a,d.hW);return b.length>0?b:["project_overview"]}function g(a){var b,c,d;let g=a.resolvedRoles.filter(a=>a.required&&!a.satisfied).map(a=>a.role),h=a.resolvedRoles.filter(a=>a.weak).map(a=>a.role),i=(b=a.template,c=a.spec,d=a.summary,b.chapters.map(a=>{let b=function(a,b){let c=b.chapterRules.find(b=>b.id===a.id||b.title===a.title),d=(c?.requiredFactIds||[]).map(a=>b.factFields.find(b=>b.id===a)?.name).filter(Boolean);return e([...a.requiredFacts||[],...d])}(a,c),g=e([...f([a.title,a.purpose,...a.queries||[],...a.sections||[]].join("\n")),...b.flatMap(a=>f(a))]),h=g.filter(a=>(d.materialInventory[a]||[]).length>0),i=h.reduce((a,b)=>a+(d.materialInventory[b]||[]).length,0),j=b.filter(a=>f(a).some(a=>h.includes(a))),k=b.filter(a=>!j.includes(a));return{chapterId:a.id,title:a.title,requiredFacts:b,coveredFacts:j,missingFacts:k,requiredRoles:g,satisfiedRoles:h,evidenceCount:i}})),j=[],k=[];0===a.template.chapters.length&&k.push("模板未配置章节,建议通过模板章节或显式 OUTLINE 提供文档结构"),a.template.chapters.some(a=>!a.purpose&&(!a.queries||0===a.queries.length)&&(!a.requiredFacts||0===a.requiredFacts.length))&&k.push("部分模板章节缺少 purpose、queries 或 requiredFacts,生成质量可能不稳定"),a.summary.source.ambiguous&&j.push(a.summary.source.selectionReason),a.summary.fingerprint.confidence<.34&&k.push("材料指纹置信度较低,建议绑定明确的材料文件"),0===a.summary.source.selectedFiles&&j.push("未绑定可用项目资料文件,无法支撑文档生成"),g.length>0&&0===a.summary.source.selectedFiles&&k.push("模板未绑定可用项目资料文件,请先绑定参与生成的资料"),h.length>0&&0===a.summary.source.selectedFiles&&k.push("绑定资料证据较弱,请确认资料已完成索引");let l=i.filter(a=>0===a.evidenceCount);l.length>0&&k.push(`章节级证据覆盖较弱:${l.slice(0,5).map(a=>a.title).join("、")}`);let m=a.summary.coverage.satisfiedRoles,n=a.resolvedRoles.filter(a=>!a.required&&!a.satisfied).map(a=>a.role),o=[`资料范围:${a.summary.source.selectionReason},可用文件 ${a.summary.source.selectedFiles}/${a.summary.source.totalFiles} 份`,`已识别资料类型:${m.join("、")||"无"}`,a.summary.coverage.missingRoles.length?`待补充必需资料类型:${a.summary.coverage.missingRoles.join("、")}`:"必需资料类型已满足",g.length?`模板强相关资料角色缺失:${g.join("、")}`:"模板强相关资料角色已满足",n.length?`可选资料角色未识别:${n.join("、")}`:"",h.length?`证据较弱资料角色:${h.join("、")}`:""].filter(Boolean);return{ready:0===j.length,missingRoles:g,weakRoles:h,diagnostics:o,chapterDiagnostics:i,blockingIssues:j,warnings:k}}function h(a,b={}){let c=a.chapterDiagnostics.filter(a=>0===a.evidenceCount||a.missingFacts.length>0).slice(0,8).map(a=>`${a.title}:证据 ${a.evidenceCount} 条${a.missingFacts.length?`,缺失 ${a.missingFacts.slice(0,6).join("、")}`:""}`);return b.publicSafe?["## 生成事实使用边界",c.length?`章节证据风险:
23
+ ${a.status}`.toLowerCase().includes(c.toLowerCase()))&&e.set(a.relativePath,{...a,matchedBy:c?"path":a.matchedBy});if(c&&!1!==b.includeContent)try{for(let b of(await k().search(a,c,{limit:Math.max(20,d)})).results){let a=b.filePath,c=e.get(a)||f.find(b=>b.relativePath===a);e.set(a,{...c||{relativePath:a,category:"content",format:"knowledge",fileSize:0,mtime:0,chunkCount:0,indexedAt:0,lastVerifiedAt:0,status:"active"},matchedBy:"content",score:b.score})}}catch{}let g=Array.from(e.values()).sort((a,b)=>{let c=a=>"content"===a.matchedBy?3:"path"===a.matchedBy?2:+("metadata"===a.matchedBy);return c(b)-c(a)||(b.score??0)-(a.score??0)||b.mtime-a.mtime||a.relativePath.localeCompare(b.relativePath,"zh-CN")});return{files:g.slice(0,d),total:g.length}}},51144:(a,b,c)=>{function d(a,b,c,e="items"){let f=c.maxItems??Number.MAX_SAFE_INTEGER,g=c.maxChars??Number.MAX_SAFE_INTEGER,h=c.charFn??(a=>JSON.stringify(a).length),i=a.map(a=>({item:a,score:b(a)}));i.sort((a,b)=>b.score-a.score);let j=[],k=[],l=0;for(let{item:a}of i){let b=h(a);j.length<f&&l+b<=g?(j.push(a),l+=b):k.push(a)}let m=[];if(k.length>0){for(let a of(m.push(`[selection] ${e}: 预算 ${f}项/${g}字符 → 选中 ${j.length}项(${l}字符),丢弃 ${k.length}项`),k.slice(0,10))){let b="string"==typeof a?a.slice(0,80):JSON.stringify(a).slice(0,80);m.push(` - 丢弃: ${b}`)}k.length>10&&m.push(` ... 及其他 ${k.length-10} 项`)}return{selected:j,dropped:k,droppedLog:m}}function e(a){let b=0,c=a.length;return 0===c?0:(b+=3*(a.match(/\d+(?:\.\d+)?/gu)||[]).length,/m[23²³]?|mm|cm|km|t|kg|台|套|个|项|批|次|份|人|日历天|天|月|万元|元|%|MPa|kPa|kN|℃/iu.test(a)&&(b+=2),/GB|JGJ|ISO|CJJ|CECS|DL|YB|SH|HG|SY|NB/iu.test(a)&&(b+=3),/验收|质量|安全|工期|进度|成本|风险|危大|重点|难点|关键|控制|标准|规范|设计|施工|材料|设备/u.test(a)&&(b+=1),c<20&&(b-=1),/项目名称|工程名称|招标人|建设地点|计划工期|质量标准|合同估算/u.test(a)&&(b+=2),b)}c.d(b,{Cr:()=>d,Ox:()=>e})},52922:(a,b,c)=>{c.d(b,{Bt:()=>m,JD:()=>A,J_:()=>j,Pm:()=>o,T4:()=>w,Ye:()=>k,bH:()=>D,gE:()=>r,nY:()=>F,vm:()=>l});var d=c(37047),e=c(41991);let f=["基本满足","大致符合","力争","原则上","大概","左右","尽可能","尽量满足"],g=/基本|大致|力争|原则上|大概|左右|尽可能|尽量/u,h=["基本满足招标文件要求","大致符合相关规范标准","力争达到优良质量标准","原则上按照规范执行","尽可能保证工程质量","尽量满足工期要求"],i=["结构构件左右对称布置","平面布置左右对称合理","力争上游的企业精神"];async function j(a){return(0,e.A)({prototypes:[...h],negativePrototypes:[...i],lexicalHints:g,embedDocuments:a})}function k(a){return f.filter(b=>a.includes(b)).map(b=>({phrase:b,count:a.split(b).length-1}))}let l=["精心组织、科学管理,确保工程质量","严格执行相关规范和设计要求","根据实际情况适当调整施工安排","建立健全管理体系,加强过程管理","全力保障项目顺利推进"];async function m(a,b){let c=a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.trim()).filter(a=>a.length>=12),e=await (0,d.Mv)(c,[...l],b),f=await j(b),h=await f(c),i=c.filter(a=>g.test(a)).length,k=h.filter(Boolean).length,m=c.map((a,b)=>l.some(b=>e(a,b)>=d.Eh)||h[b]),n=m.filter(Boolean).length,o=[...new Set(c.filter((a,b)=>m[b]))].slice(0,40),p=c.length?n/c.length:0;return{totalSentences:c.length,fillerSentences:n,ratio:p,level:p>=.4?"heavy":p>=.2?"medium":"light",vagueCandidateSentences:i,vagueSemanticSentences:k,fillerSentenceDetails:o}}let n={plan:"制定专项施工方案与管理制度,明确技术措施",process:"施工工序流程与工艺步骤顺序",role:"由项目经理、技术负责人等岗位人员分工负责",frequency:"每日、每周等检查频次与时间节点安排",acceptance:"经检查验收合格后整改销项闭环"};async function o(a,b){let c=a.split(/\n{2,}/u).filter(a=>a.trim().length>=30),e=Object.values(n),f=await (0,d.Mv)(c,e,b),g=/项目经理|技术负责人|施工员|质检员|安全员|材料员|资料员|测量员|劳资员|班组长|监理工程师|试验员/u,h=/每日|每天|每周|每月|每季度|每批|不少于\s*\d+\s*次|至少\s*\d+\s*次|每周\s*\d+\s*次|每日\s*\d+\s*次|每\s*\d+\s*日/u,i=/整改|复查|销项|复验|闭环|返工/u,j=/专项施工方案|专项方案|施工方案|施工组织设计|技术措施|管理制度|技术交底|作业指导书|操作规程/u,k=/施工工序|工艺流程|施工流程|作业流程|施工顺序|施工步骤|工艺步骤|流水段|流水作业|依次施工|工序/u,l=(a,b)=>{let c=(b!==n.plan||!!j.test(a))&&(!!(b===n.plan&&j.test(a))||(b!==n.process||!!k.test(a))&&(!!(b===n.process&&k.test(a))||(b!==n.role||!!g.test(a))&&(!!(b===n.role&&g.test(a))||(b!==n.frequency||!!h.test(a))&&(!!(b===n.frequency&&h.test(a))||(b!==n.acceptance||!!i.test(a))&&(!!(b===n.acceptance&&i.test(a))||void 0)))));return void 0!==c?c:f(a,b)>=d.Eh},m=0,o=0,p=0;for(let a of c)e.filter(b=>l(a,b)).length>=4?m+=1:l(a,n.role)&&l(a,n.frequency)||(o+=1),l(a,n.role)&&l(a,n.frequency)&&l(a,n.acceptance)&&(p+=1);return{blocks:c.length,completeBlocks:m,incompleteBlocks:o,closedLoopBlocks:p}}let p="分析该工程难点的成因与风险来源",q=/\d+(?:\.\d+)?\s*(?:mm|cm|m|米|℃|%|kN|MPa|次|天|日历天|小时|h|Hz|m³|㎡|m²|t|吨|座|套|个)/u;async function r(a,b){let c=function(a){let b=a.match(/#{2,3}\s*[^\n]*(?:重难点|重点难点|工程难点|难点分析)[^\n]*\n/u);if(b&&void 0!==b.index){let c=b.index+b[0].length,d=a.slice(c),e=d.search(/^#{2,3}\s+/mu);return e>=0?d.slice(0,e):d}let c=a.match(/^\|?\s*[^\n]*重难点[^\n]*\|\s*$/mu);if(!c||void 0===c.index)return"";let d=a.slice(c.index).split(/\n/u),e=[];for(let a of d){let b=a.trim();if(!b||!b.startsWith("|")){if(e.length>0)break;continue}e.push(a)}return e.join("\n")}(a),e=c.trim().startsWith("|")?c.split(/\n/u).filter(a=>{let b=a.trim();return b.startsWith("|")&&!/^\|\s*-+\s*\|/u.test(b)&&!/重难点/u.test(b.split("|")[1]||"")}).filter(a=>a.trim().length>=20):c.split(/\n{2,}/u).filter(a=>a.trim().length>=20),f=await (0,d.Mv)(e,[p],b),g=0,h=0,i=0,j=[];for(let a of e){let b=f(a,p)>=d.Eh,c=q.test(a);b&&(g+=1),c&&(h+=1),b&&c&&(i+=1),j.push({text:a,attributed:b,quantified:c})}let k=e.length?i/e.length:0;return{countermeasures:e.length,attributed:g,quantified:h,bothCount:i,ratio:k,heavyTemplated:e.length>0&&k<.5,entries:j.slice(0,24)}}let s=/建筑业10项新技术|10项新技术|安徽省住房城乡建设领域新技术推广目录|新技术推广目录|建设领域推广/u,t=/替代|取代|淘汰.{0,10}(?:工艺|技术|做法)|(?:较|比).{0,10}(?:传统|常规|普通)/u,u=/(?:提升|提高|节省|节约|降低|缩短|减少).{0,10}(?:效率|工期|成本|损耗|能耗|人工|周期)|升级价值|效益显著/u,v=["BIM","铝模","附着式升降脚手架","跳仓法","直螺纹","装配式","灌浆套筒","自动化监测","智慧工地","再生利用","非开挖","CCTV","碳纤维","薄贴法","干法施工","液压提升","预制","光伏一体化","BIPV","模块化"];function w(a){let b=v.filter(b=>a.includes(b)),c=s.test(a),d=t.test(a),e=u.test(a),f=[c,d,e].filter(Boolean).length;return{found:[...b],catalogCited:c,replaceClaimed:d,upgradeClaimed:e,effective:b.length>0&&f>=2}}let x=[/基坑|沟槽/u,/模板支撑|高支模/u,/脚手架|悬挑|附着式/u,/起重吊装|吊装/u,/幕墙/u,/人工挖孔桩/u,/装配式|钢结构安装/u,/拆除工程/u,/顶管|盾构|暗挖/u,/有限空间|水下作业/u,/吊篮/u,/塔吊|施工电梯|升降机/u,/沉井/u],y=/超危大|超规模|专家论证|一般危大/u,z=/(?:深度|高度|跨度|开挖).{0,8}\d+(?:\.\d+)?\s*(?:m|米)|(?:重量|吊装).{0,8}\d+(?:\.\d+)?\s*(?:kN|千牛)/u;function A(a){let b=x.filter(b=>b.test(a)).map(a=>a.source.replace(/\\u\w*|\\|\(|\||\)/gu,"")),c=y.test(a),d=z.test(a);return{categories:b,graded:c,paramMatched:d,twoStepComplete:b.length>0&&c&&d}}let B=[{name:"总则",pattern:/总则/u},{name:"组织机构及职责",pattern:/应急(?:组织|领导)|组织机构|应急指挥部|应急小组/u},{name:"风险分析与危险源辨识",pattern:/风险分析|危险源辨识|风险辨识/u},{name:"应急物资设备通讯保障",pattern:/应急物资|物资.{0,8}(?:保障|储备)|通讯保障|通信保障/u},{name:"专项应急预案",pattern:/专项应急预案|专项预案/u},{name:"应急响应流程",pattern:/应急响应|响应流程|响应程序/u},{name:"后期处置",pattern:/后期处置|善后|事故调查/u},{name:"培训演练",pattern:/(?:应急)?演练|培训.{0,6}演练/u}],C=["高处坠落","物体打击","坍塌","触电","火灾","起重","防汛","防台风","中暑","中毒窒息","管线破坏"];function D(a){let b=B.filter(b=>b.pattern.test(a)).map(a=>a.name),c=B.filter(b=>!b.pattern.test(a)).map(a=>a.name),d=C.filter(b=>a.includes(b));return{coveredParts:[...b],missingParts:[...c],coverage:b.length/B.length,planHits:[...d]}}let E=[/其他项目/u,/其他标段/u,/其他城市/u,/本公司(?:其他|承建)/u,/某(?:市|县|区|项目)(?:的)?/u,/他项目/u,/兄弟项目/u];function F(a){let b=a.replace(/及其他项目/gu,"及〔清单列举项〕");return E.filter(a=>a.test(b)).map(a=>a.source.replace(/\\u/gu,""))}},54185:(a,b,c)=>{c.d(b,{C4:()=>u,D9:()=>j,G9:()=>O,P_:()=>F,Q9:()=>t,V0:()=>m,ch:()=>i,cq:()=>g,gn:()=>p,o0:()=>E,p_:()=>k,sO:()=>G,uj:()=>M,uw:()=>L,v_:()=>q,yF:()=>C,z9:()=>A});var d=c(22157);let e=/^(?:主要施工|施工)?(?:工艺流程|概况|概述|流程|工序|工艺|方法|方案|步骤|顺序|做法|安排|要点|内容)(?:要点|概述|简介|说明)?$/u,f=new Set(["主要施工方法","主要施工内容","项目主要施工内容"]);function g(a){let b=(0,d.Sw)(a);return!(!b||f.has(b))&&e.test(b)}let h=/^(\s*(?:[-*•]\s+)?)\*{0,2}(?:施工概况|施工概述|施工流程|工艺流程|施工工艺|施工工序|施工方法|施工步骤|施工顺序|施工做法|施工安排|施工要点)\*{0,2}[::]\s*/u,i="正文禁止以“施工概况/施工流程/施工方法/工艺流程/施工步骤”等结构标签充当小节标题或段落开头引导(不得出现“施工概况:本项目……”式标签行),要素内容直接融入连贯段落叙述。";function j(a){let b=[],c=[],d=0,e=[],f=0;for(let b of a.split(/\r?\n/u)){let a=b.trim();if(!a)continue;let i=/^(#{3,6})\s+(.+?)\s*$/u.exec(a);if(i){g(i[2])&&(d+=1,c.length<5&&c.push(`${i[1]} ${i[2]}`));continue}h.test(b)&&(f+=1,e.length<5&&e.push(a.slice(0,24)))}return d>0&&b.push({level:"error",severity:"blocker",category:"structure",owner:"system",repairability:"local_deterministic",message:`正文存在结构标签充当小节标题 ${d} 处:“${c.join("”、“")}”`,suggestion:"结构标签(施工概况/施工流程/施工方法/工艺流程等)不得独立成题;确定性修复器已接入删除标签标题行(正文保留),要素内容融入上级小节连贯叙述。"}),f>0&&b.push({level:"error",severity:"blocker",category:"structure",owner:"system",repairability:"local_deterministic",message:`正文段首结构标签前缀 ${f} 处:“${e.join("”、“")}…”`,suggestion:"禁止“施工概况:……”“施工流程:……”式段首标签引导;确定性修复器已接入剥离标签前缀(正文保留),要素直接以连贯段落表述。"}),b}function k(a){let b=a.split(/\r?\n/u),c=[],d=0,e=0;for(let a=0;a<b.length;a+=1){let f=b[a],i=f.trim();if(!i){c.push(f);continue}let j=/^(#{4,6})\s+(.+?)\s*$/u.exec(i);if(j){if(g(j[2])){d+=1,a+1<b.length&&""===b[a+1].trim()&&(a+=1);continue}c.push(f);continue}if(/^#{1,6}\s/u.test(i)){c.push(f);continue}let k=h.exec(f);if(k){let a=f.slice(k[0].length);e+=1,a.trim()&&c.push(a);continue}c.push(f)}let f=d+e;if(0===f)return{markdown:a,fixedCount:0,details:[]};let i=[];return d>0&&i.push(`结构标签标题删除 ${d} 行(正文保留)`),e>0&&i.push(`段首标签前缀剥离 ${e} 处`),{markdown:c.join("\n"),fixedCount:f,details:i}}let l=["顺序词叙述","编号步骤","有序列表","箭头链"];function m(a){let b=l.length;return l[(a%b+b)%b]}function n(a){let b=l.indexOf(a);return l[(b+1)%l.length]}let o={顺序词叙述:"用顺序词连贯叙述工序先后(“先……,再……,随后……,然后……,最后……”)",编号步骤:"用编号步骤分行列出工序(“1. 测量放线;2. 基槽开挖;3. 基础施工;……”)",有序列表:"用无序要点列表分行列出工序(“- 基层清理;- 放线定位;- 分层摊铺;……”)",箭头链:"用箭头链表达工序先后(“基层清理→放线定位→分层摊铺→碾压→验收”)"};function p(a){let b=m(a);return`【工序顺序表达形式指定】本块的工序顺序表达使用「${b}」形式:${o[b]};本章相邻小节已分别指定其他形式,禁止通篇使用同一形式,不得用“施工流程:”等结构标签引导。`}function q(a){let b;if(!(0,d.Z1)(a))return;let c=function(a){let b=(a.match(/→|->|=>/gu)||[]).length,c=(a.match(/(?:^|\n)\s*(?:\d+[.、))]|[((]\d+[))]|[一二三四五六七八九十]{1,3}[、.]|第[一二三四五六七八九十]{1,3}步)/gu)||[]).length,d=(a.match(/(?:^|\n)\s*[-*•]\s+\S/gu)||[]).length;return{箭头链:b,编号步骤:c>=2?c:0,有序列表:d>=2?d:0,顺序词叙述:(a.match(/先[^。;!?\n]{0,24}(?:再|然后|随后|接着|最后|后)|依次|先后|按[^。;!?\n]{0,12}顺序|顺序施工|流水施工/gu)||[]).length}}(a),e=0;for(let a of l)c[a]>e&&(b=a,e=c[a]);return b}function r(a){return a.split(/^##\s+/gmu).slice(1).map(a=>{let b=a.indexOf("\n");return b<0?{title:a.trim(),body:""}:{title:a.slice(0,b).trim(),body:a.slice(b+1)}})}function s(a){let b,c=[];for(let d of a.split(/\r?\n/u)){let a=/^###\s+(.+?)\s*$/u.exec(d.trim());a?(b&&c.push({title:b.title,text:b.lines.join("\n")}),b={title:a[1],lines:[]}):b&&b.lines.push(d)}return b&&c.push({title:b.title,text:b.lines.join("\n")}),c}function t(a){let b=[];for(let c of r(a)){if(!d.V.test(c.title))continue;let a=s(c.body);if(a.length<2)continue;let e=a.map(a=>q(a.text));for(let d=1;d<a.length;d+=1){let f=e[d-1],g=e[d];if(f&&g&&f===g&&(b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`工序顺序表达形式模板化:「${c.title}」章相邻小节「${a[d-1].title}」与「${a[d].title}」同为【${g}】形式`,suggestion:`将「${a[d].title}」的工序顺序表达改写为其他形式(建议【${n(g)}】),内容与数值保持不变;分项块之间必须轮换形式,禁止通篇同一形式。`}),b.length>=6))return b}}return b}function u(a){let b=new Map;for(let c of r(a)){if(!d.V.test(c.title))continue;let a=s(c.body);if(a.length<2)continue;let e=a.map(a=>q(a.text));for(let d=1;d<a.length;d+=1){let f=e[d];if(!f||f!==e[d-1])continue;let g=`${c.title}\u0000${a[d].title}`;b.has(g)||b.set(g,{chapterTitle:c.title,blockTitle:a[d].title,currentForm:f,targetForm:n(f)})}}return[...b.values()].slice(0,12)}let v=/先([^。;\n]{2,200}?)[,,、]\s*最后([^。;\n,,]{2,60}?)([。;])/gu,w=/[,,、]\s*(?:再|接着|随后|然后|继而)\s*/u,x=/[^\s→,。;:、!?“”‘’《》〈〉()\n]+(?:(?:→|->|=>)[^\s→,。;:、!?“”‘’《》〈〉()\n]+){1,7}/gu,y=["再","随后","然后","接着"];function z(a,b,c){let d;if("顺序词叙述"===b&&"编号步骤"===c?d=function(a){let b=!1,c=a.replace(v,(a,c,d,e)=>{let f=c.split(w).concat(d.split(w)).map(a=>a.trim()).filter(Boolean);if(f.length<3)return a;b=!0;let g=f.map((a,b)=>`${b+1}. ${a}${b===f.length-1?e:";"}`);return`
24
+ ${g.join("\n")}`});return b?c:void 0}(a):"箭头链"===b&&"顺序词叙述"===c?d=function(a){let b=!1,c=a.replace(x,a=>{let c=a.split(/→|->|=>/u).map(a=>a.trim()).filter(Boolean);if(c.length<2)return a;if(b=!0,2===c.length)return`先${c[0]},再${c[1]}`;let d=c.slice(1,-1).map((a,b)=>`${y[b%y.length]}${a}`);return`先${c[0]},${d.join(",")},最后${c[c.length-1]}`});return b?c:void 0}(a):"编号步骤"===b&&"有序列表"===c?d=function(a){let b=0,c=a.replace(/^(\s*)\d+[.、))]\s+/gmu,(a,c)=>(b+=1,`${c}- `));return b>=2?c:void 0}(a):"有序列表"===b&&"箭头链"===c&&(d=function(a){let b=a.split(/\r?\n/u),c=[],d=[],e=!1,f=()=>{if(d.length>=2){let a=d.map(a=>a.replace(/^[ \t]*[-*•]\s+/u,"").replace(/[;;,,。]$/u,"").trim()).filter(Boolean);if(a.length>=2){e=!0,c.push(a.join("→")),d=[];return}}c.push(...d),d=[]};for(let a of b)/^[ \t]*[-*•]\s+\S/u.test(a)?d.push(a):(f(),c.push(a));return f(),e?c.join("\n"):void 0}(a)),d&&d!==a)return q(d)===c?d:void 0}function A(a){let b=function(a){let b,c=a.split(/\r?\n/u),e=[],f="",g=!1,h=a=>{b&&g&&(e.push({chapterTitle:f,title:b.title,text:c.slice(b.startLine+1,a).join("\n"),startLine:b.startLine,endLine:a}),b=void 0)};for(let a=0;a<c.length;a+=1){let e=/^##\s+(.+?)\s*$/u.exec(c[a]);if(e){h(a),f=e[1],g=d.V.test(f);continue}let i=/^###\s+(.+?)\s*$/u.exec(c[a]);i&&(h(a),g&&(b={title:i[1],startLine:a}))}return h(c.length),e}(a);if(b.length<2)return{markdown:a,fixedCount:0,details:[]};let c=[];for(let a of b){let b=c[c.length-1];b&&b[0].chapterTitle===a.chapterTitle?b.push(a):c.push([a])}let e=new Map;for(let a of c){let b=a.map(a=>q(a.text));for(let c=1;c<a.length;c+=1){let d=b[c],f=b[c-1];if(!d||d!==f)continue;let g=n(d),h=z(a[c].text,d,g);h&&(e.set(a[c],{text:h,fromForm:d,toForm:g}),b[c]=g)}for(let c=1;c<a.length;c+=1){let d=b[c],f=b[c-1];if(!d||!f||d!==f)continue;let g=a[c-1];if(e.has(g))continue;let h=n(f);if(c>=2&&b[c-2]===h)continue;let i=z(g.text,f,h);i&&(e.set(g,{text:i,fromForm:f,toForm:h}),b[c-1]=h)}}if(0===e.size)return{markdown:a,fixedCount:0,details:[]};let f=a.split(/\r?\n/u),g=[];for(let[a,b]of[...e.entries()].sort((a,b)=>b[0].startLine-a[0].startLine))f.splice(a.startLine+1,a.endLine-a.startLine-1,...b.text.split("\n")),g.push({chapterTitle:a.chapterTitle,blockTitle:a.title,fromForm:b.fromForm,toForm:b.toForm});return{markdown:f.join("\n"),fixedCount:g.length,details:g}}let B=[{id:"by-tech-lead-org",text:"由技术负责人组织",pattern:/由\s*技术负责人\s*组织/gu,variants:["技术负责人牵头组织","项目部安排技术负责人主持","技术负责人负责组织实施","由项目技术负责人统筹安排"]},{id:"post-qualified",text:"合格后方可",pattern:/合格\s*后方可/gu,variants:["合格后再行","合格后方能","合格后才可","检验合格方可","合格以后方可"]},{id:"after-acceptance",text:"验收合格后",pattern:/验收\s*合格\s*后/gu,variants:["验收通过后","验收签认后","验收确认后","检验合格后"]}],C="句式禁止复读:全篇「由技术负责人组织」「合格后方可」「验收合格后」三类骨架表述各自不得超过 2 次,同义表达轮换使用(如“技术负责人牵头组织”“检验合格后再行”“验收通过后”),保持句式多样、事实不变。";function D(a,b){return[...a.matchAll(b.pattern)].length}function E(a){let b=[];for(let c of B){let d=D(a,c);d<=2||b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`句式骨架复读:「${c.text}」全篇出现 ${d} 处(上限 2 处)——模板化复用句式`,suggestion:`保留全文前 2 处「${c.text}」,其余处按句子语境轮换同义表达(如:${c.variants.slice(0,3).join("、")});改写保留原句全部事实信息(岗位、数值、频次不得丢失),不得用结构标签或固定套语替代。`})}return b}function F(a){let b=[],c=r(a);for(let d of B){let e=D(a,d);if(e<=2)continue;let f=new Map;for(let a of c)if(a.body)for(let b of a.body.matchAll(d.pattern)){let c=b.index??0,d=function(a,b,c){let d=b;for(;d>0&&!/[。!?\n]/u.test(a[d-1]);)d-=1;let e=c;for(;e<a.length&&!/[。!?\n]/u.test(a[e]);)e+=1;return e<a.length&&/[。!?]/u.test(a[e])&&(e+=1),a.slice(d,e).trim()}(a.body,c,c+b[0].length);if(d.length<6)continue;let e=f.get(a.title)??[];e.includes(d)||e.push(d),f.set(a.title,e)}let g=2;for(let[a,c]of f){let f=c.slice(g).slice(0,4);g=Math.max(0,g-c.length),f.length>0&&b.push({chapterTitle:a,fingerprintLabel:d.text,totalCount:e,sentences:f})}}return b.slice(0,12)}function G(a){let b=a,c=0,d=[];for(let a of B){let e=0;for(;;){let c=[...b.matchAll(a.pattern)];if(c.length<=2)break;let d=c[2],f=d.index??0,g=a.variants[e%a.variants.length],h=b.slice(0,f)+g+b.slice(f+d[0].length);if(D(h,a)>=c.length)break;b=h,e+=1}e>0&&(d.push({id:a.id,replaced:e}),c+=e)}return{markdown:b,fixedCount:c,details:d}}function H(a){return a.replace(/^第[一二三四五六七八九十百零〇\d]+[章节篇部分][\s、..::]*/u,"").replace(/^\d+(?:\.\d+)*[..、::]?\s*/u,"").trim()}let I=new Set(["目录","前言","摘要","附录","索引","封面","总则"]);function J(a){if(!a||I.has(a))return!1;let b=(a.match(/[\u4e00-\u9fa5]/gu)||[]).length;return 0!==b&&!(b>=4)&&!/[A-Za-z]/u.test(a)&&a.length<=4}function K(a){let b=[],c=new Set,d="",e="";for(let f of a.split(/\r?\n/u)){let a=/^(#{2,4})\s+(.+?)\s*$/u.exec(f.trim());if(!a)continue;let g=a[1].length,h=a[2];if(2===g){d=h,e="";continue}let i=H(h);if(i&&!c.has(i)){let a=function(a){if(!(!a||I.has(a))&&0!==(a.match(/[\u4e00-\u9fa5]/gu)||[]).length){if(J(a))return"标题核心名不足 4 字(残缺标题)";if(/[,,]/u.test(a))return"标题含逗号(句式化标题)";if(/[等及和与]$/u.test(a))return"标题以悬挂连接词结尾(残缺标题)"}}(i);a&&(c.add(i),b.push({chapterTitle:d,parentTitle:e,rawTitle:h,reason:a}))}3===g&&(e=h)}return b}function L(a){let b=[];for(let c of K(a)){let a=c.parentTitle?`「${c.parentTitle}」内`:c.chapterTitle?`「${c.chapterTitle}」章内`:"";if(b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`小节标题残缺或句式化:${a}“${c.rawTitle}”(${c.reason})`,suggestion:"将标题重命名为完整表达小节内容的正式名称(如“危大”应为“危大工程辨识与管控”、残缺名补全语义),正文内容不变;禁止使用“施工概况/施工流程/施工方法”等结构标签词充当标题。"}),b.length>=6)break}return b}function M(a){return K(a).slice(0,6).map(a=>({chapterTitle:a.chapterTitle,title:a.rawTitle,reason:a.reason}))}let N=["系统","工程","设施","设备","装置","结构","管道","安装","施工","项目","要点"];function O(a){let b=a.split(/\r?\n/u),c=[];for(let a=0;a<b.length;a+=1){let d=b[a],e=/^(#{2,4})\s+(.+?)\s*$/u.exec(d.trim());if(!e)continue;let f=e[2],g=H(f);if(!J(g))continue;let h=[],i=a+1,j=0;for(;i<b.length&&j<400&&!/^\s*#{1,6}\s/u.test(b[i]);)h.push(b[i]),j+=b[i].length,i+=1;let k=h.join("\n"),l=N.find(a=>k.includes(g+a));if(!l||((g+l).match(/[\u4e00-\u9fa5]/gu)||[]).length<4)continue;let m=f.indexOf(g);if(m<0)continue;let n=`${f.slice(0,m)}${g}${l}${f.slice(m+g.length)}`;b[a]=d.replace(f,n),c.push({from:f,to:n})}return 0===c.length?{markdown:a,fixedCount:0,details:[]}:{markdown:b.join("\n"),fixedCount:c.length,details:c}}},56942:(a,b,c)=>{c.d(b,{$:()=>g,R:()=>h});var d=c(92808);function e(a){return[...new Set(a.filter(Boolean))]}function f(a){let b=(0,d.t0)(a,d.hW);return b.length>0?b:["project_overview"]}function g(a){var b,c,d;let g=a.resolvedRoles.filter(a=>a.required&&!a.satisfied).map(a=>a.role),h=a.resolvedRoles.filter(a=>a.weak).map(a=>a.role),i=(b=a.template,c=a.spec,d=a.summary,b.chapters.map(a=>{let b=function(a,b){let c=b.chapterRules.find(b=>b.id===a.id||b.title===a.title),d=(c?.requiredFactIds||[]).map(a=>b.factFields.find(b=>b.id===a)?.name).filter(Boolean);return e([...a.requiredFacts||[],...d])}(a,c),g=e([...f([a.title,a.purpose,...a.queries||[],...a.sections||[]].join("\n")),...b.flatMap(a=>f(a))]),h=g.filter(a=>(d.materialInventory[a]||[]).length>0),i=h.reduce((a,b)=>a+(d.materialInventory[b]||[]).length,0),j=b.filter(a=>f(a).some(a=>h.includes(a))),k=b.filter(a=>!j.includes(a));return{chapterId:a.id,title:a.title,requiredFacts:b,coveredFacts:j,missingFacts:k,requiredRoles:g,satisfiedRoles:h,evidenceCount:i}})),j=[],k=[];0===a.template.chapters.length&&k.push("模板未配置章节,建议通过模板章节或显式 OUTLINE 提供文档结构"),a.template.chapters.some(a=>!a.purpose&&(!a.queries||0===a.queries.length)&&(!a.requiredFacts||0===a.requiredFacts.length))&&k.push("部分模板章节缺少 purpose、queries 或 requiredFacts,生成质量可能不稳定"),a.summary.source.ambiguous&&j.push(a.summary.source.selectionReason),a.summary.fingerprint.confidence<.34&&k.push("材料指纹置信度较低,建议绑定明确的材料文件"),0===a.summary.source.selectedFiles&&j.push("未绑定可用项目资料文件,无法支撑文档生成"),g.length>0&&0===a.summary.source.selectedFiles&&k.push("模板未绑定可用项目资料文件,请先绑定参与生成的资料"),h.length>0&&0===a.summary.source.selectedFiles&&k.push("绑定资料证据较弱,请确认资料已完成索引");let l=i.filter(a=>0===a.evidenceCount);l.length>0&&k.push(`章节级证据覆盖较弱:${l.slice(0,5).map(a=>a.title).join("、")}`);let m=a.summary.coverage.satisfiedRoles,n=a.resolvedRoles.filter(a=>!a.required&&!a.satisfied).map(a=>a.role),o=[`资料范围:${a.summary.source.selectionReason},可用文件 ${a.summary.source.selectedFiles}/${a.summary.source.totalFiles} 份`,`已识别资料类型:${m.join("、")||"无"}`,a.summary.coverage.missingRoles.length?`待补充必需资料类型:${a.summary.coverage.missingRoles.join("、")}`:"必需资料类型已满足",g.length?`模板强相关资料角色缺失:${g.join("、")}`:"模板强相关资料角色已满足",n.length?`可选资料角色未识别:${n.join("、")}`:"",h.length?`证据较弱资料角色:${h.join("、")}`:""].filter(Boolean);return{ready:0===j.length,missingRoles:g,weakRoles:h,diagnostics:o,chapterDiagnostics:i,blockingIssues:j,warnings:k}}function h(a,b={}){let c=a.chapterDiagnostics.filter(a=>0===a.evidenceCount||a.missingFacts.length>0).slice(0,8).map(a=>`${a.title}:证据 ${a.evidenceCount} 条${a.missingFacts.length?`,缺失 ${a.missingFacts.slice(0,6).join("、")}`:""}`);return b.publicSafe?["## 生成事实使用边界",c.length?`章节证据风险:
24
25
  ${c.join("\n")}`:"","资料不足的事实不得编造;仅施工组织、计划安排、资源配置类数据可在文档要求允许时进行计划推导并标注。"].filter(Boolean).join("\n"):["## 后台生成准备度",`可生成:${a.ready?"是":"否"}`,a.missingRoles.length?`资料诊断:部分模板期望资料类型未从绑定文件中明确识别,生成时仅使用已绑定资料中的事实`:"",a.weakRoles.length?`资料诊断:部分资料类型证据较弱,生成时不得补写资料未明确的事实`:"",c.length?`章节级证据风险:
25
26
  ${c.join("\n")}`:""].filter(Boolean).join("\n")}},58965:(a,b,c)=>{c.d(b,{$m:()=>f,VX:()=>d,tK:()=>e});let d=/\b(?:TDbPipe|TDbPipeValve|TDbPipeFitting|TDbWellh|AcDb\w+|Dwg\w+|Polyline|Hatch|Layer|BlockReference)\b/giu,e=/[\w\u4e00-\u9fa5\-—_+]+\.(?:pdf|dwg|docx?|xlsx?|xls|csv|png|jpe?g|webp)\b/giu,f="[零〇一二三四五六七八九十百千万两]+"},61373:(a,b,c)=>{c.d(b,{rd:()=>O,KX:()=>P,kt:()=>D,K7:()=>F,V3:()=>as,cf:()=>Y,p8:()=>Z,pV:()=>K,y4:()=>T,r4:()=>$,rs:()=>ar,BJ:()=>M,Re:()=>y,z1:()=>C,wi:()=>t,bR:()=>_,UG:()=>ap,CK:()=>an,Ed:()=>ao,Bl:()=>W,FD:()=>i,kT:()=>N,nP:()=>L,uv:()=>J,bx:()=>G,dh:()=>aa,b_:()=>S});var d=c(58965),e=c(22157),f=c(54185),g=c(70208),h=c(41991);function i(a,b){return b?a.replace(/^!\[[^\]]*(?:图纸|drawing|cad|地图|平面|剖面|立面)[^\]]*\]\([^)]*\)\s*$/gimu,"").replace(/\n{3,}/gu,"\n\n"):a}let j=/^.*(?:知识库证据|知识库已确认事实|资料类型|提示词角色|后台自动规范|规范包|事实字段|资料未提供|未检索到|待确认事项|证据来源|来源清单|校验结果|修复任务包|修复类型|修复对象|输出要求|当前项目绑定资料|已召回证据|证据边界|可审查草稿|Reviewer|Repairer).*$(?:\s)?|^.*本节围绕.+确保各项措施与本工程实施条件相匹配。?\s*$(?:\s)?|^.*建立施工准备、过程控制、检查验收和资料归档要求.*$(?:\s)?|^.*形成责任明确、过程可控、资料完整的管理闭环。?\s*$(?:\s)?|^.*确保现场管理要求与施工进度、资源组织和验收节点同步推进。?\s*$(?:\s)?|^\s*(?:管理闭环|责任明确、过程可控、资料完整|与本工程实施条件相匹配)[。;;]?\s*$(?:\s)?/gmu,k=/^\s*(?:#{1,6}\s*)?(?:PDF\s*第\s*\d+\s*页|rule\b|文件[::]|片段[::]|来源[::]).*$/gimu,l=/^\s*(?:[│┃┆┊┌┐└┘├┤┬┴┼─━╭╮╰╯]|[↓↑→←⇒⇨➡])+\s*$/gmu,m=/^#{2,6}\s+(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用)|^#{2,6}\s+(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:如|若|如果)(?:涉及|不涉及|适用|不适用)|^#{2,6}\s+.*(?:根据|结合).{0,12}(?:实际情况|项目情况|资料情况).{0,8}(?:判断|确定|编写|生成)|^#{2,6}\s+.*(?:按需(?:生成|编写)|视情况|判断后|生成要求|编写要求|说明要求|注意事项)\s*$/gmu,n=/^(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用).*|(?:如|若|如果)(?:涉及|不涉及|适用|不适用).*|.*(?:根据|结合).{0,12}(?:实际情况|项目情况|资料情况).{0,8}(?:判断|确定|编写|生成).*|.*(?:按需(?:生成|编写)|视情况|判断后|生成要求|编写要求|说明要求|注意事项))\s*$/u,o=/注意事项|如何|怎么写|按需|视情况|是否/u,p=["如何编写施工方案的写作说明标题","根据项目情况判断的注意事项标题","按需生成的编写要求与说明标题"],q=["危大工程专项施工方案与安全措施","质量验收标准与检测要求","成品保护与移交管理措施"];async function r(a){return(0,h.A)({prototypes:[...p],negativePrototypes:[...q],embedDocuments:a})}function s(a){let b=a.replace(/^#{1,6}\s+/u,"").replace(/^\s*\d+(?:\.\d+)*(?:[..、]|\s)+/u,"").replace(/^第[一二三四五六七八九十百千万\d]+[章节篇部分]\s*/u,"").trim(),c=(0,g.GQ)(b);return n.test(b)||n.test(c)||(0,g.mq)(b)||(0,g.mq)(c)}function t(a){return a.replace(/PDF\s*第\s*\d+(?:\s*[-—至到~~]\s*\d+)?\s*页/giu,"相关资料").replace(/PDF\s*第(?![ \t]*[0-90-9])/giu,"").replace(/第\s*\d+\s*页\s*(?:\/|共)\s*\d+\s*页/gu,"").replace(/第\s*\d+\s*(?:[-—至到~~]\s*\d+)?\s*页/gu,"相关资料").replace(/(装饰工程|土建工程|加固工程|给排水工程|电气工程|智能化工程|消防工程|弱电智能化工程|室外道排工程|建筑结构加固工程)\s*(?:(?:施工)?图纸|资料|文件)?\s*[((]?\s*(?:(?:共|多达|约|合计)\s*)?\d+\s*页\s*[))]?/gu,"$1施工图纸").replace(/\d+\s*页\s*(装饰|土建|加固|给排水|电气|智能化|消防|弱电智能化|室外道排|建筑结构加固)\s*(?:专业)?\s*(?:(?:施工)?图纸)?/gu,"$1专业图纸").replace(/(装饰|土建|加固|给排水|电气|智能化|消防|弱电智能化|室外道排|建筑结构加固)\s*(?:专业)?\s*(?:[((]\s*)?\d+\s*页\s*(?:(?:施工)?图纸)?\s*[))]?/gu,"$1专业图纸").replace(/([\u4e00-\u9fa5A-Za-z0-9、及与和]{2,24})\s*(?:共|多达|约|合计)\s*\d+\s*页/gu,"$1相关专业图纸").replace(/([\u4e00-\u9fa5A-Za-z0-9()()、·-]{2,24}工程)\s*(?:图纸|资料|文件)?\s*[((]?\s*(?:(?:共|多达|约|合计)\s*)?\d+\s*页\s*[))]?/gu,"$1施工图纸").replace(/([\u4e00-\u9fa5A-Za-z0-9()()、·-]{2,24})(?<!施工)\s*(?:施工)?图纸\s*[((]?\s*(?:(?:共|多达|约|合计)\s*)?\d+\s*页\s*[))]?/gu,"$1施工图纸").replace(/(给排水|电气|智能化|消防|暖通|人防)\s*[((]\s*\d+\s*页\s*[))]/gu,"$1专业图纸").replace(/(?:依据|按照|结合)?\s*图纸\s*[((]\s*\d+\s*页\s*[))]/gu,"依据相关专业图纸").replace(/(?:依据|按照|结合)?\s*清单\s*[((]?\s*\d+\s*页\s*[))]?/gu,"依据工程量清单").replace(/资料\s*[((]?\s*\d+\s*页\s*[))]?/gu,"项目资料").replace(/[((]?[\u4e00-\u9fa5A-Za-z0-9、及与和]*(?:图纸|清单|资料|文件|工程)?[\u4e00-\u9fa5A-Za-z0-9、及与和]*(?:(?:共|多达|约|合计)\s*)?\d+\s*页[\u4e00-\u9fa5A-Za-z0-9、及与和]*(?:图纸|清单|资料|文件)?[))]?/gu,a=>/图纸|工程|装饰|土建|加固|给排水|电气|智能化|消防/u.test(a)?"相关专业图纸":/清单/u.test(a)?"工程量清单":"相关资料").replace(/(?:位于|详见|见|参见|依据|按照|结合)?\s*相关资料(?:\s*相关资料)+/gu,"相关资料")}let u=String.raw`(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)`;function v(a){return/^\s*\|/u.test(a)||/^\s*\|?\s*:?-{3,}:?/u.test(a)?a:a.replace(/([。;;])\s*(?=(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)\S)/gu,"$1\n").replace(/([^\n])\s+(?=(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)\*\*)/gu,"$1\n")}RegExp(String.raw`\S.+(?:\s|[。;;])${u}\S.+(?:\s|[。;;])${u}\S`,"u");let w=RegExp(`\r?
26
27
  `,"u"),x=RegExp(`